Fix unit test failure when using Skia in debug builds
[LibreOffice.git] / configure.ac
blob80ec8eca5be30bfd26e53dc3367160e4fbffdf70
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[24.8.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     if test "$COM" = "MSC"; then
50         for f in $1; do
51             if test "x$f" != "x${f#-L}"; then
52                 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53             elif test "x$f" != "x${f#-l}"; then
54                 filteredlibs="$filteredlibs ${f:2}.lib"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
62                 # let's start with Fedora's paths for now
63                 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64                     # ignore it: on UNIXoids it is searched by default anyway
65                     # but if it's given explicitly then it may override other paths
66                     # (on macOS it would be an error to use it instead of SDK)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
78     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79     # function is called also on Unix.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
83     # $formatted_path is the argument in Windows format, but using forward slashes instead of
84     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85     # or shell metacharacters).
86     #
87     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
101     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$1"
114     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115         if test "$build_os" = "wsl"; then
116             formatted_path=$(echo "$formatted_path" | tr -d '\r')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
134                 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136                 formatted_path=`cygpath -sm "$formatted_path"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
144         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146         if test "$fp_count_slash$fp_count_colon" != "00"; then
147             if test "$fp_count_colon" = "0"; then
148                 new_formatted_path=`realpath "$formatted_path"`
149                 if test $? -ne 0;  then
150                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
182         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183         if test "$fp_count_space" != "0"; then
184             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
185         fi
186     fi
187     if test "$build_os" = "wsl"; then
188         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189         formatted_path_unix=$(wslpath "$formatted_path")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
198     # There appears to be no simple and portable method to get an absolute and
199     # canonical path, so we try creating the directory if does not exist and
200     # utilizing the shell and pwd.
202     # Args: $1: A possibly relative pathname
203     # Return value: $absolute_path
205     # Convert to unix path, mkdir would treat c:/path as a relative path.
206     PathFormat "$1"
207     local rel="$formatted_path_unix"
208     absolute_path=""
209     test ! -e "$rel" && mkdir -p "$rel"
210     if test -d "$rel" ; then
211         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212         absolute_path="$(pwd)"
213         cd - > /dev/null
214     else
215         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
216     fi
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
222 have_WARNINGS="no"
223 add_warning()
225     if test "$have_WARNINGS" = "no"; then
226         echo "*************************************" > "$WARNINGS_FILE"
227         have_WARNINGS="yes"
228         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
231         else
232             COLORWARN="* WARNING :"
233         fi
234     fi
235     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
242 dnl from themselves
244 mac_sanitize_path()
246     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249     mac_git_path=`which git 2>/dev/null`
250     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251         mac_path="$mac_path:`dirname $mac_git_path`"
252     fi
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255     mac_gpg_path=`which gpg 2>/dev/null`
256     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257         mac_path="$mac_path:`dirname $mac_gpg_path`"
258     fi
259     PATH="$mac_path"
260     unset mac_path
261     unset mac_git_path
262     unset mac_gpg_path
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
271     test "$4" -gt "$1" \
272         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
274     return $?
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284     eval local MIN_MINOR="\$${1}_${2}_MINOR"
285     eval local MIN_TINY="\$${1}_${2}_TINY"
286     eval local CUR_MAJOR="\$${1}_MAJOR"
287     eval local CUR_MINOR="\$${1}_MINOR"
288     eval local CUR_TINY="\$${1}_TINY"
289     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
290     return $?
293 echo "********************************************************************"
294 echo "*"
295 echo "*   Running ${PACKAGE_NAME} build configuration."
296 echo "*"
297 echo "********************************************************************"
298 echo ""
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308     ac_cv_host="x86_64-pc-wsl"
309     ac_cv_host_cpu="x86_64"
310     ac_cv_host_os="wsl"
311     ac_cv_build="$ac_cv_host"
312     ac_cv_build_cpu="$ac_cv_host_cpu"
313     ac_cv_build_os="$ac_cv_host_os"
315     # Emulation of Cygwin's cygpath command for WSL.
316     cygpath()
317     {
318         if test -n "$UNITTEST_WSL_CYGPATH"; then
319             echo -n cygpath "$@" "==> "
320         fi
322         # Cygwin's real cygpath has a plethora of options but we use only a few here.
323         local args="$@"
324         local opt
325         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
326         OPTIND=1
328         while getopts dmuwlsp opt; do
329             case "$opt" in
330                 \?)
331                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
332                     ;;
333                 ?)
334                     eval opt_$opt=yes
335                     ;;
336             esac
337         done
339         shift $((OPTIND-1))
341         if test $# -ne 1; then
342             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
343         fi
345         local input="$1"
347         local result
349         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352             if test -n "$opt_u"; then
353                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
354             fi
356             case "$input" in
357                 /mnt/*)
358                     # A Windows file in WSL format
359                     input=$(wslpath -w "$input")
360                     ;;
361                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362                     # Already in Windows format
363                     ;;
364                 /*)
365                     input=$(wslpath -w "$input")
366                     ;;
367                 *)
368                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
369                     ;;
370             esac
371             if test -n "$opt_d" -o -n "$opt_s"; then
372                 input=$($WSL_LO_HELPER --8.3 "$input")
373             fi
374             if test -n "$opt_m"; then
375                 input="${input//\\//}"
376             fi
377             echo "$input"
378         else
379             # Print Unix path
381             case "$input" in
382                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
383                     wslpath -u "$input"
384                     ;;
385                 /)
386                     echo "$input"
387                     ;;
388                 *)
389                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
390                     ;;
391             esac
392         fi
393     }
395     if test -n "$UNITTEST_WSL_CYGPATH"; then
396         BUILDDIR=.
398         # Nothing special with these file names, just arbitrary ones picked to test with
399         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403         # At least on my machine for instance this file does have an 8.3 name
404         cygpath -d /mnt/c/windows/WindowsUpdate.log
405         # But for instance this one doesn't
406         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407         cygpath -ws /mnt/c/windows/WindowsUpdate.log
408         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409         cygpath -ms /mnt/c/windows/WindowsUpdate.log
411         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
414         exit 0
415     fi
417     if test -z "$WSL_LO_HELPER"; then
418         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419             WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420         elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421             WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
422         fi
423     fi
424     if test -z "$WSL_LO_HELPER"; then
425         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
426     fi
429 AC_CANONICAL_HOST
430 AC_CANONICAL_BUILD
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
433     BUILDDIR=.
434     GREP=grep
436     # Use of PathFormat must be after AC_CANONICAL_BUILD above
437     PathFormat /
438     printf "$formatted_path , $formatted_path_unix\n"
440     PathFormat $PWD
441     printf "$formatted_path , $formatted_path_unix\n"
443     PathFormat "$PROGRAMFILESX86"
444     printf "$formatted_path , $formatted_path_unix\n"
446     exit 0
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452     PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455     PRODUCTNAME="${PRODUCTNAME}Dev"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468     PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
503 else
504     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>&/dev/null`
523 LIBO_THIS_YEAR=${git_date:-2023}
524 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
526 dnl ===================================================================
527 dnl Product version
528 dnl ===================================================================
529 AC_MSG_CHECKING([for product version])
530 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
531 AC_MSG_RESULT([$PRODUCTVERSION])
532 AC_SUBST(PRODUCTVERSION)
534 AC_PROG_EGREP
535 # AC_PROG_EGREP doesn't set GREP on all systems as well
536 AC_PATH_PROG(GREP, grep)
538 BUILDDIR=`pwd`
539 cd $srcdir
540 SRC_ROOT=`pwd`
541 cd $BUILDDIR
542 x_Cygwin=[\#]
544 dnl ======================================
545 dnl Required GObject introspection version
546 dnl ======================================
547 INTROSPECTION_REQUIRED_VERSION=1.32.0
549 dnl ===================================================================
550 dnl Search all the common names for GNU Make
551 dnl ===================================================================
552 AC_MSG_CHECKING([for GNU Make])
554 # try to use our own make if it is available and GNUMAKE was not already defined
555 if test -z "$GNUMAKE"; then
556     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
557         GNUMAKE="$LODE_HOME/opt/bin/make"
558     elif test -x "/opt/lo/bin/make"; then
559         GNUMAKE="/opt/lo/bin/make"
560     fi
563 GNUMAKE_WIN_NATIVE=
564 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
565     if test -n "$a"; then
566         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
567         if test $? -eq 0;  then
568             if test "$build_os" = "cygwin"; then
569                 if test -n "$($a -v | grep 'Built for Windows')" ; then
570                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
571                     GNUMAKE_WIN_NATIVE="TRUE"
572                 else
573                     GNUMAKE=`which $a`
574                 fi
575             else
576                 GNUMAKE=`which $a`
577             fi
578             break
579         fi
580     fi
581 done
582 AC_MSG_RESULT($GNUMAKE)
583 if test -z "$GNUMAKE"; then
584     AC_MSG_ERROR([not found. install GNU Make.])
585 else
586     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
587         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
588     fi
591 win_short_path_for_make()
593     local short_path="$1"
594     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
595         cygpath -sm "$short_path"
596     else
597         cygpath -u "$(cygpath -d "$short_path")"
598     fi
602 if test "$build_os" = "cygwin"; then
603     PathFormat "$SRC_ROOT"
604     SRC_ROOT="$formatted_path"
605     PathFormat "$BUILDDIR"
606     BUILDDIR="$formatted_path"
607     x_Cygwin=
608     AC_MSG_CHECKING(for explicit COMSPEC)
609     if test -z "$COMSPEC"; then
610         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
611     else
612         AC_MSG_RESULT([found: $COMSPEC])
613     fi
616 AC_SUBST(SRC_ROOT)
617 AC_SUBST(BUILDDIR)
618 AC_SUBST(x_Cygwin)
619 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
620 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
621 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
623 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
624     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
627 # need sed in os checks...
628 AC_PATH_PROGS(SED, sed)
629 if test -z "$SED"; then
630     AC_MSG_ERROR([install sed to run this script])
633 # Set the ENABLE_LTO variable
634 # ===================================================================
635 AC_MSG_CHECKING([whether to use link-time optimization])
636 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
637     ENABLE_LTO="TRUE"
638     AC_MSG_RESULT([yes])
639 else
640     ENABLE_LTO=""
641     AC_MSG_RESULT([no])
643 AC_SUBST(ENABLE_LTO)
645 AC_ARG_ENABLE(fuzz-options,
646     AS_HELP_STRING([--enable-fuzz-options],
647         [Randomly enable or disable each of those configurable options
648          that are supposed to be freely selectable without interdependencies,
649          or where bad interaction from interdependencies is automatically avoided.])
652 dnl ===================================================================
653 dnl When building for Android, --with-android-ndk,
654 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
655 dnl mandatory
656 dnl ===================================================================
658 AC_ARG_WITH(android-ndk,
659     AS_HELP_STRING([--with-android-ndk],
660         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
663 AC_ARG_WITH(android-ndk-toolchain-version,
664     AS_HELP_STRING([--with-android-ndk-toolchain-version],
665         [Specify which toolchain version to use, of those present in the
666         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
667         with_android_ndk_toolchain_version=clang5.0)
669 AC_ARG_WITH(android-sdk,
670     AS_HELP_STRING([--with-android-sdk],
671         [Specify location of the Android SDK. Mandatory when building for Android.]),
674 AC_ARG_WITH(android-api-level,
675     AS_HELP_STRING([--with-android-api-level],
676         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
679 ANDROID_NDK_DIR=
680 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
681     with_android_ndk="$SRC_ROOT/external/android-ndk"
683 if test -n "$with_android_ndk"; then
684     eval ANDROID_NDK_DIR=$with_android_ndk
686     ANDROID_API_LEVEL=21
687     if test -n "$with_android_api_level" ; then
688         ANDROID_API_LEVEL="$with_android_api_level"
689     fi
691     if test $host_cpu = arm; then
692         LLVM_TRIPLE=armv7a-linux-androideabi
693         ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
694         ANDROID_APP_ABI=armeabi-v7a
695         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
696     elif test $host_cpu = aarch64; then
697         LLVM_TRIPLE=aarch64-linux-android
698         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
699         ANDROID_APP_ABI=arm64-v8a
700     elif test $host_cpu = x86_64; then
701         LLVM_TRIPLE=x86_64-linux-android
702         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
703         ANDROID_APP_ABI=x86_64
704     else
705         # host_cpu is something like "i386" or "i686" I guess, NDK uses
706         # "x86" in some contexts
707         LLVM_TRIPLE=i686-linux-android
708         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
709         ANDROID_APP_ABI=x86
710     fi
712     # Set up a lot of pre-canned defaults
714     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
715         if test ! -f $ANDROID_NDK_DIR/source.properties; then
716             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
717         fi
718         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
719     else
720         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
721     fi
722     if test -z "$ANDROID_NDK_VERSION";  then
723         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
724     fi
725     case $ANDROID_NDK_VERSION in
726     r9*|r10*)
727         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
728         ;;
729     11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
730         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
731         ;;
732     23.*|24.*|25.*)
733         ;;
734     *)
735         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
736         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
737         ;;
738     esac
740     case "$with_android_ndk_toolchain_version" in
741     clang5.0)
742         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
743         ;;
744     *)
745         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
746     esac
748     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
750     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
751     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
752     # manage to link the (app-specific) single huge .so that is built for the app in
753     # android/source/ if there is debug information in a significant part of the object files.
754     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
755     # all objects have been built with debug information.)
756     case $build_os in
757     linux-gnu*)
758         android_HOST_TAG=linux-x86_64
759         ;;
760     darwin*)
761         android_HOST_TAG=darwin-x86_64
762         ;;
763     *)
764         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
765         # ndk would also support windows and windows-x86_64
766         ;;
767     esac
768     ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
769     ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
771     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
772     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
773     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
774     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
775     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
777     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
778     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
779     if test "$ENABLE_LTO" = TRUE; then
780         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
781         # $CC and $CXX when building external libraries
782         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
783     fi
785     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
787     if test -z "$CC"; then
788         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
789         CC_BASE="clang"
790     fi
791     if test -z "$CXX"; then
792         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
793         CXX_BASE="clang++"
794     fi
796 AC_SUBST(ANDROID_NDK_DIR)
797 AC_SUBST(ANDROID_API_LEVEL)
798 AC_SUBST(ANDROID_APP_ABI)
799 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
800 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
801 AC_SUBST(ANDROID_TOOLCHAIN)
803 dnl ===================================================================
804 dnl --with-android-sdk
805 dnl ===================================================================
806 ANDROID_SDK_DIR=
807 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
808     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
810 if test -n "$with_android_sdk"; then
811     eval ANDROID_SDK_DIR=$with_android_sdk
812     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
814 AC_SUBST(ANDROID_SDK_DIR)
816 AC_ARG_ENABLE([android-lok],
817     AS_HELP_STRING([--enable-android-lok],
818         [The Android app from the android/ subdir needs several tweaks all
819          over the place that break the LOK when used in the Online-based
820          Android app.  This switch indicates that the intent of this build is
821          actually the Online-based, non-modified LOK.])
823 ENABLE_ANDROID_LOK=
824 if test -n "$ANDROID_NDK_DIR" ; then
825     if test "$enable_android_lok" = yes; then
826         ENABLE_ANDROID_LOK=TRUE
827         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
828         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
829     else
830         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
831     fi
833 AC_SUBST([ENABLE_ANDROID_LOK])
835 libo_FUZZ_ARG_ENABLE([android-editing],
836     AS_HELP_STRING([--enable-android-editing],
837         [Enable the experimental editing feature on Android.])
839 ENABLE_ANDROID_EDITING=
840 if test "$enable_android_editing" = yes; then
841     ENABLE_ANDROID_EDITING=TRUE
843 AC_SUBST([ENABLE_ANDROID_EDITING])
845 disable_database_connectivity_dependencies()
847     enable_evolution2=no
848     enable_firebird_sdbc=no
849     enable_mariadb_sdbc=no
850     enable_postgresql_sdbc=no
851     enable_report_builder=no
854 # ===================================================================
856 # Start initial platform setup
858 # The using_* variables reflect platform support and should not be
859 # changed after the "End initial platform setup" block.
860 # This is also true for most test_* variables.
861 # ===================================================================
862 build_crypto=yes
863 test_clucene=no
864 test_gdb_index=no
865 test_openldap=yes
866 test_split_debug=no
867 test_webdav=yes
868 usable_dlapi=yes
870 # There is currently just iOS not using salplug, so this explicitly enables it.
871 # must: using_freetype_fontconfig
872 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
873 # must: using_x11
875 # Default values, as such probably valid just for Linux, set
876 # differently below just for Mac OSX, but at least better than
877 # hardcoding these as we used to do. Much of this is duplicated also
878 # in solenv for old build system and for gbuild, ideally we should
879 # perhaps define stuff like this only here in configure.ac?
881 LINKFLAGSSHL="-shared"
882 PICSWITCH="-fpic"
883 DLLPOST=".so"
885 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
887 INSTROOTBASESUFFIX=
888 INSTROOTCONTENTSUFFIX=
889 SDKDIRNAME=sdk
891 HOST_PLATFORM="$host"
893 host_cpu_for_clang="$host_cpu"
895 case "$host_os" in
897 solaris*)
898     using_freetype_fontconfig=yes
899     using_x11=yes
900     build_skia=yes
901     _os=SunOS
903     dnl ===========================================================
904     dnl Check whether we're using Solaris 10 - SPARC or Intel.
905     dnl ===========================================================
906     AC_MSG_CHECKING([the Solaris operating system release])
907     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
908     if test "$_os_release" -lt "10"; then
909         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
910     else
911         AC_MSG_RESULT([ok ($_os_release)])
912     fi
914     dnl Check whether we're using a SPARC or i386 processor
915     AC_MSG_CHECKING([the processor type])
916     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
917         AC_MSG_RESULT([ok ($host_cpu)])
918     else
919         AC_MSG_ERROR([only SPARC and i386 processors are supported])
920     fi
921     ;;
923 linux-gnu*|k*bsd*-gnu*|linux-musl*)
924     using_freetype_fontconfig=yes
925     using_x11=yes
926     build_skia=yes
927     test_gdb_index=yes
928     test_split_debug=yes
929     if test "$enable_fuzzers" = yes; then
930         test_system_freetype=no
931     fi
932     _os=Linux
933     ;;
935 gnu)
936     using_freetype_fontconfig=yes
937     using_x11=no
938     _os=GNU
939      ;;
941 cygwin*|wsl*)
942     # When building on Windows normally with MSVC under Cygwin,
943     # configure thinks that the host platform (the platform the
944     # built code will run on) is Cygwin, even if it obviously is
945     # Windows, which in Autoconf terminology is called
946     # "mingw32". (Which is misleading as MinGW is the name of the
947     # tool-chain, not an operating system.)
949     # Somewhat confusing, yes. But this configure script doesn't
950     # look at $host etc that much, it mostly uses its own $_os
951     # variable, set here in this case statement.
953     using_freetype_fontconfig=no
954     using_x11=no
955     test_unix_dlapi=no
956     test_openldap=no
957     enable_pagein=no
958     build_skia=yes
959     _os=WINNT
961     DLLPOST=".dll"
962     LINKFLAGSNOUNDEFS=
964     if test "$host_cpu" = "aarch64"; then
965         build_skia=no
966         enable_gpgmepp=no
967         enable_coinmp=no
968         enable_firebird_sdbc=no
969     fi
970     ;;
972 darwin*) # macOS
973     using_freetype_fontconfig=no
974     using_x11=no
975     build_skia=yes
976     enable_pagein=no
977     if test -n "$LODE_HOME" ; then
978         mac_sanitize_path
979         AC_MSG_NOTICE([sanitized the PATH to $PATH])
980     fi
981     _os=Darwin
982     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
983     INSTROOTCONTENTSUFFIX=/Contents
984     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
985     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
986     LINKFLAGSSHL="-dynamiclib"
988     # -fPIC is default
989     PICSWITCH=""
991     DLLPOST=".dylib"
993     # -undefined error is the default
994     LINKFLAGSNOUNDEFS=""
995     case "$host_cpu" in
996     aarch64|arm64)
997         # Apple's Clang uses "arm64"
998         host_cpu_for_clang=arm64
999     esac
1002 ios*) # iOS
1003     using_freetype_fontconfig=no
1004     using_x11=no
1005     build_crypto=no
1006     test_libcmis=no
1007     test_openldap=no
1008     test_webdav=no
1009     if test -n "$LODE_HOME" ; then
1010         mac_sanitize_path
1011         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1012     fi
1013     enable_gpgmepp=no
1014     _os=iOS
1015     enable_mpl_subset=yes
1016     enable_lotuswordpro=no
1017     disable_database_connectivity_dependencies
1018     enable_coinmp=no
1019     enable_lpsolve=no
1020     enable_extension_integration=no
1021     enable_xmlhelp=no
1022     with_ppds=no
1023     if test "$enable_ios_simulator" = "yes"; then
1024         host=x86_64-apple-darwin
1025     fi
1026     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1027     LINKFLAGSSHL="-dynamiclib"
1029     # -fPIC is default
1030     PICSWITCH=""
1032     DLLPOST=".dylib"
1034     # -undefined error is the default
1035     LINKFLAGSNOUNDEFS=""
1037     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1038     # part, so use aarch64-apple-darwin for now.
1039     HOST_PLATFORM=aarch64-apple-darwin
1041     # Apple's Clang uses "arm64"
1042     host_cpu_for_clang=arm64
1045 freebsd*)
1046     using_freetype_fontconfig=yes
1047     using_x11=yes
1048     build_skia=yes
1049     AC_MSG_CHECKING([the FreeBSD operating system release])
1050     if test -n "$with_os_version"; then
1051         OSVERSION="$with_os_version"
1052     else
1053         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1054     fi
1055     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1056     AC_MSG_CHECKING([which thread library to use])
1057     if test "$OSVERSION" -lt "500016"; then
1058         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1059         PTHREAD_LIBS="-pthread"
1060     elif test "$OSVERSION" -lt "502102"; then
1061         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1062         PTHREAD_LIBS="-lc_r"
1063     else
1064         PTHREAD_CFLAGS=""
1065         PTHREAD_LIBS="-pthread"
1066     fi
1067     AC_MSG_RESULT([$PTHREAD_LIBS])
1068     _os=FreeBSD
1069     ;;
1071 *netbsd*)
1072     using_freetype_fontconfig=yes
1073     using_x11=yes
1074     test_gtk3_kde5=no
1075     build_skia=yes
1076     PTHREAD_LIBS="-pthread -lpthread"
1077     _os=NetBSD
1078     ;;
1080 openbsd*)
1081     using_freetype_fontconfig=yes
1082     using_x11=yes
1083     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1084     PTHREAD_LIBS="-pthread"
1085     _os=OpenBSD
1086     ;;
1088 dragonfly*)
1089     using_freetype_fontconfig=yes
1090     using_x11=yes
1091     build_skia=yes
1092     PTHREAD_LIBS="-pthread"
1093     _os=DragonFly
1094     ;;
1096 linux-android*)
1097     # API exists, but seems not really usable since Android 7 AFAIK
1098     usable_dlapi=no
1099     using_freetype_fontconfig=yes
1100     using_headless_plugin=no
1101     using_x11=no
1102     build_crypto=no
1103     test_openldap=no
1104     test_system_freetype=no
1105     test_webdav=no
1106     disable_database_connectivity_dependencies
1107     enable_lotuswordpro=no
1108     enable_mpl_subset=yes
1109     enable_cairo_canvas=no
1110     enable_coinmp=yes
1111     enable_lpsolve=no
1112     enable_odk=no
1113     enable_python=no
1114     enable_xmlhelp=no
1115     _os=Android
1116     ;;
1118 haiku*)
1119     using_freetype_fontconfig=yes
1120     using_x11=no
1121     test_gtk3=no
1122     test_gtk3_kde5=no
1123     test_kf5=yes
1124     test_kf6=yes
1125     enable_odk=no
1126     enable_coinmp=no
1127     enable_pdfium=no
1128     enable_sdremote=no
1129     enable_postgresql_sdbc=no
1130     enable_firebird_sdbc=no
1131     _os=Haiku
1132     ;;
1134 emscripten)
1135     # API currently just exists in headers, not code
1136     usable_dlapi=no
1137     using_freetype_fontconfig=yes
1138     using_x11=yes
1139     test_openldap=no
1140     test_qt5=yes
1141     test_split_debug=yes
1142     test_system_freetype=no
1143     enable_compiler_plugins=no
1144     enable_customtarget_components=yes
1145     enable_split_debug=yes
1146     enable_wasm_strip=yes
1147     with_system_zlib=no
1148     with_theme="colibre"
1149     _os=Emscripten
1150     ;;
1153     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1154     ;;
1155 esac
1157 AC_SUBST(HOST_PLATFORM)
1159 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1160     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1163 # Set defaults, if not set by platform
1164 test "${test_cups+set}" = set || test_cups="$using_x11"
1165 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1166 test "${test_gen+set}" = set || test_gen="$using_x11"
1167 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1168 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1169 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1170 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1171 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1172 # don't handle test_qt5, so it can disable test_kf5 later
1173 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1174 test "${test_randr+set}" = set || test_randr="$using_x11"
1175 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1176 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1178 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1179 # Make sure fontconfig and freetype test both either system or not
1180 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1181 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1183 # convenience / platform overriding "fixes"
1184 # Don't sort!
1185 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1186 test "$test_kf5" = yes && test_qt5=yes
1187 test "$test_gtk3" != yes && enable_gtk3=no
1188 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1189 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1190 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1192 # Keep in sync with the above $using_x11 depending test default list
1193 disable_x11_tests()
1195     test_cups=no
1196     test_dbus=no
1197     test_gen=no
1198     test_gstreamer_1_0=no
1199     test_gtk3_kde5=no
1200     test_gtk3=no
1201     test_gtk4=no
1202     test_kf5=no
1203     test_kf6=no
1204     test_qt5=no
1205     test_qt6=no
1206     test_randr=no
1207     test_xrender=no
1210 test "$using_x11" = yes && USING_X11=TRUE
1212 if test "$using_freetype_fontconfig" = yes; then
1213     AC_DEFINE(USE_HEADLESS_CODE)
1214     USE_HEADLESS_CODE=TRUE
1215     if test "$using_headless_plugin" = yes; then
1216         AC_DEFINE(ENABLE_HEADLESS)
1217         ENABLE_HEADLESS=TRUE
1218     fi
1219 else
1220     test_fontconfig=no
1221     test_freetype=no
1224 AC_SUBST(ENABLE_HEADLESS)
1225 AC_SUBST(USE_HEADLESS_CODE)
1227 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1228 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1229 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1230 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1232 # ===================================================================
1234 # End initial platform setup
1236 # ===================================================================
1238 if test "$_os" = "Android" ; then
1239     # Verify that the NDK and SDK options are proper
1240     if test -z "$with_android_ndk"; then
1241         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1242     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1243         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1244     fi
1246     if test -z "$ANDROID_SDK_DIR"; then
1247         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1248     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1249         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1250     fi
1253 AC_SUBST(SDKDIRNAME)
1255 AC_SUBST(PTHREAD_CFLAGS)
1256 AC_SUBST(PTHREAD_LIBS)
1258 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1259 # By default use the ones specified by our build system,
1260 # but explicit override is possible.
1261 AC_MSG_CHECKING(for explicit AFLAGS)
1262 if test -n "$AFLAGS"; then
1263     AC_MSG_RESULT([$AFLAGS])
1264     x_AFLAGS=
1265 else
1266     AC_MSG_RESULT(no)
1267     x_AFLAGS=[\#]
1269 AC_MSG_CHECKING(for explicit CFLAGS)
1270 if test -n "$CFLAGS"; then
1271     AC_MSG_RESULT([$CFLAGS])
1272     x_CFLAGS=
1273 else
1274     AC_MSG_RESULT(no)
1275     x_CFLAGS=[\#]
1277 AC_MSG_CHECKING(for explicit CXXFLAGS)
1278 if test -n "$CXXFLAGS"; then
1279     AC_MSG_RESULT([$CXXFLAGS])
1280     x_CXXFLAGS=
1281 else
1282     AC_MSG_RESULT(no)
1283     x_CXXFLAGS=[\#]
1285 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1286 if test -n "$OBJCFLAGS"; then
1287     AC_MSG_RESULT([$OBJCFLAGS])
1288     x_OBJCFLAGS=
1289 else
1290     AC_MSG_RESULT(no)
1291     x_OBJCFLAGS=[\#]
1293 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1294 if test -n "$OBJCXXFLAGS"; then
1295     AC_MSG_RESULT([$OBJCXXFLAGS])
1296     x_OBJCXXFLAGS=
1297 else
1298     AC_MSG_RESULT(no)
1299     x_OBJCXXFLAGS=[\#]
1301 AC_MSG_CHECKING(for explicit LDFLAGS)
1302 if test -n "$LDFLAGS"; then
1303     AC_MSG_RESULT([$LDFLAGS])
1304     x_LDFLAGS=
1305 else
1306     AC_MSG_RESULT(no)
1307     x_LDFLAGS=[\#]
1309 AC_SUBST(AFLAGS)
1310 AC_SUBST(CFLAGS)
1311 AC_SUBST(CXXFLAGS)
1312 AC_SUBST(OBJCFLAGS)
1313 AC_SUBST(OBJCXXFLAGS)
1314 AC_SUBST(LDFLAGS)
1315 AC_SUBST(x_AFLAGS)
1316 AC_SUBST(x_CFLAGS)
1317 AC_SUBST(x_CXXFLAGS)
1318 AC_SUBST(x_OBJCFLAGS)
1319 AC_SUBST(x_OBJCXXFLAGS)
1320 AC_SUBST(x_LDFLAGS)
1322 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1323 my_original_CFLAGS=$CFLAGS
1324 my_original_CXXFLAGS=$CXXFLAGS
1325 my_original_CPPFLAGS=$CPPFLAGS
1327 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1328 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1329 dnl AC_PROG_CC internally.
1330 if test "$_os" != "WINNT"; then
1331     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1332     save_CFLAGS=$CFLAGS
1333     AC_PROG_CC
1334     CFLAGS=$save_CFLAGS
1335     if test -z "$CC_BASE"; then
1336         CC_BASE=`first_arg_basename "$CC"`
1337     fi
1340 if test "$_os" != "WINNT"; then
1341     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1342 else
1343     ENDIANNESS=little
1345 AC_SUBST(ENDIANNESS)
1347 if test "$usable_dlapi" != no; then
1348     AC_DEFINE([HAVE_DLAPI])
1349     if test "$test_unix_dlapi" != no; then
1350         save_LIBS="$LIBS"
1351         AC_SEARCH_LIBS([dlsym], [dl],
1352             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1353             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1354         LIBS="$save_LIBS"
1355         AC_DEFINE([HAVE_UNIX_DLAPI])
1356     fi
1358 AC_SUBST(UNIX_DLAPI_LIBS)
1360 # Check for a (GNU) backtrace implementation
1361 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1362 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1363 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1364     save_LIBS="$LIBS"
1365     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1366         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1367         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1368     LIBS="$save_LIBS"
1370 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1371     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1374 dnl ===================================================================
1375 dnl Sanity checks for Emscripten SDK setup
1376 dnl ===================================================================
1378 EMSCRIPTEN_MIN_MAJOR=2
1379 EMSCRIPTEN_MIN_MINOR=0
1380 EMSCRIPTEN_MIN_TINY=31
1381 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1383 if test "$_os" = "Emscripten"; then
1384     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1385     AS_IF([test -z "$EMSDK"],
1386           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1387     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1388     if test -f "$EMSCRIPTEN_VERSION_H"; then
1389         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1390         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1391         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1392     else
1393         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1394         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1395         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1396         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1397     fi
1399     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1401     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1402     if test $? -eq 0; then
1403         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1404     else
1405         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1406     fi
1408     EMSCRIPTEN_ERROR=0
1409     if ! which emconfigure >/dev/null 2>&1; then
1410         AC_MSG_WARN([emconfigure must be in your \$PATH])
1411         EMSCRIPTEN_ERROR=1
1412     fi
1413     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1414         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1415         EMSCRIPTEN_ERROR=1
1416     fi
1417     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1418     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1419         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1420         EMSCRIPTEN_ERROR=1
1421     fi
1422     if test $EMSCRIPTEN_ERROR -ne 0; then
1423         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1424     fi
1426 AC_SUBST(EMSDK_FILE_PACKAGER)
1428 ###############################################################################
1429 # Extensions switches --enable/--disable
1430 ###############################################################################
1431 # By default these should be enabled unless having extra dependencies.
1432 # If there is extra dependency over configure options then the enable should
1433 # be automagic based on whether the requiring feature is enabled or not.
1434 # All this options change anything only with --enable-extension-integration.
1436 # The name of this option and its help string makes it sound as if
1437 # extensions are built anyway, just not integrated in the installer,
1438 # if you use --disable-extension-integration. Is that really the
1439 # case?
1441 AC_ARG_ENABLE(ios-simulator,
1442     AS_HELP_STRING([--enable-ios-simulator],
1443         [build for iOS simulator])
1446 libo_FUZZ_ARG_ENABLE(extension-integration,
1447     AS_HELP_STRING([--disable-extension-integration],
1448         [Disable integration of the built extensions in the installer of the
1449          product. Use this switch to disable the integration.])
1452 AC_ARG_ENABLE(avmedia,
1453     AS_HELP_STRING([--disable-avmedia],
1454         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1455 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1457 AC_ARG_ENABLE(database-connectivity,
1458     AS_HELP_STRING([--disable-database-connectivity],
1459         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1462 # This doesn't mean not building (or "integrating") extensions
1463 # (although it probably should; i.e. it should imply
1464 # --disable-extension-integration I guess), it means not supporting
1465 # any extension mechanism at all
1466 libo_FUZZ_ARG_ENABLE(extensions,
1467     AS_HELP_STRING([--disable-extensions],
1468         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1471 AC_ARG_ENABLE(scripting,
1472     AS_HELP_STRING([--disable-scripting],
1473         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1474 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1476 # This is mainly for Android and iOS, but could potentially be used in some
1477 # special case otherwise, too, so factored out as a separate setting
1479 AC_ARG_ENABLE(dynamic-loading,
1480     AS_HELP_STRING([--disable-dynamic-loading],
1481         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1484 libo_FUZZ_ARG_ENABLE(report-builder,
1485     AS_HELP_STRING([--disable-report-builder],
1486         [Disable the Report Builder.])
1489 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1490     AS_HELP_STRING([--enable-ext-wiki-publisher],
1491         [Enable the Wiki Publisher extension.])
1494 libo_FUZZ_ARG_ENABLE(lpsolve,
1495     AS_HELP_STRING([--disable-lpsolve],
1496         [Disable compilation of the lp solve solver ])
1498 libo_FUZZ_ARG_ENABLE(coinmp,
1499     AS_HELP_STRING([--disable-coinmp],
1500         [Disable compilation of the CoinMP solver ])
1503 libo_FUZZ_ARG_ENABLE(pdfimport,
1504     AS_HELP_STRING([--disable-pdfimport],
1505         [Disable building the PDF import feature.])
1508 libo_FUZZ_ARG_ENABLE(pdfium,
1509     AS_HELP_STRING([--disable-pdfium],
1510         [Disable building PDFium. Results in unsecure PDF signature verification.])
1513 libo_FUZZ_ARG_ENABLE(skia,
1514     AS_HELP_STRING([--disable-skia],
1515         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1518 ###############################################################################
1520 dnl ---------- *** ----------
1522 libo_FUZZ_ARG_ENABLE(mergelibs,
1523     AS_HELP_STRING([--enable-mergelibs],
1524         [Merge several of the smaller libraries into one big, "merged", one.])
1527 libo_FUZZ_ARG_ENABLE(breakpad,
1528     AS_HELP_STRING([--enable-breakpad],
1529         [Enables breakpad for crash reporting.])
1532 libo_FUZZ_ARG_ENABLE(crashdump,
1533     AS_HELP_STRING([--disable-crashdump],
1534         [Disable dump.ini and dump-file, when --enable-breakpad])
1537 AC_ARG_ENABLE(fetch-external,
1538     AS_HELP_STRING([--disable-fetch-external],
1539         [Disables fetching external tarballs from web sources.])
1542 AC_ARG_ENABLE(fuzzers,
1543     AS_HELP_STRING([--enable-fuzzers],
1544         [Enables building libfuzzer targets for fuzz testing.])
1547 libo_FUZZ_ARG_ENABLE(pch,
1548     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1549         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1550          Using 'system' will include only external headers, 'base' will add also headers
1551          from base modules, 'normal' will also add all headers except from the module built,
1552          'full' will use all suitable headers even from a module itself.])
1555 libo_FUZZ_ARG_ENABLE(epm,
1556     AS_HELP_STRING([--enable-epm],
1557         [LibreOffice includes self-packaging code, that requires epm, however epm is
1558          useless for large scale package building.])
1561 libo_FUZZ_ARG_ENABLE(odk,
1562     AS_HELP_STRING([--enable-odk],
1563         [Enable building the Office Development Kit, the part that extensions need to build against])
1566 AC_ARG_ENABLE(mpl-subset,
1567     AS_HELP_STRING([--enable-mpl-subset],
1568         [Don't compile any pieces which are not MPL or more liberally licensed])
1571 libo_FUZZ_ARG_ENABLE(evolution2,
1572     AS_HELP_STRING([--enable-evolution2],
1573         [Allows the built-in evolution 2 addressbook connectivity build to be
1574          enabled.])
1577 AC_ARG_ENABLE(avahi,
1578     AS_HELP_STRING([--enable-avahi],
1579         [Determines whether to use Avahi to advertise Impress to remote controls.])
1582 libo_FUZZ_ARG_ENABLE(werror,
1583     AS_HELP_STRING([--enable-werror],
1584         [Turn warnings to errors. (Has no effect in modules where the treating
1585          of warnings as errors is disabled explicitly.)]),
1588 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1589     AS_HELP_STRING([--enable-assert-always-abort],
1590         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1593 libo_FUZZ_ARG_ENABLE(dbgutil,
1594     AS_HELP_STRING([--enable-dbgutil],
1595         [Provide debugging support from --enable-debug and include additional debugging
1596          utilities such as object counting or more expensive checks.
1597          This is the recommended option for developers.
1598          Note that this makes the build ABI incompatible, it is not possible to mix object
1599          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1601 libo_FUZZ_ARG_ENABLE(debug,
1602     AS_HELP_STRING([--enable-debug],
1603         [Include debugging information, disable compiler optimization and inlining plus
1604          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1606 libo_FUZZ_ARG_ENABLE(split-debug,
1607     AS_HELP_STRING([--disable-split-debug],
1608         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1609          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1611 libo_FUZZ_ARG_ENABLE(gdb-index,
1612     AS_HELP_STRING([--disable-gdb-index],
1613         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1614          The feature requires a linker that supports the --gdb-index option.]))
1616 libo_FUZZ_ARG_ENABLE(sal-log,
1617     AS_HELP_STRING([--enable-sal-log],
1618         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1620 libo_FUZZ_ARG_ENABLE(symbols,
1621     AS_HELP_STRING([--enable-symbols],
1622         [Generate debug information.
1623          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1624          otherwise. It is possible to explicitly specify gbuild build targets
1625          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1626          everything in the directory; there is no ordering, more specific overrides
1627          more general, and disabling takes precedence).
1628          Example: --enable-symbols="all -sw/ -Library_sc".]))
1630 libo_FUZZ_ARG_ENABLE(optimized,
1631     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1632         [Whether to compile with optimization flags.
1633          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1634          otherwise. Using 'debug' will try to use only optimizations that should
1635          not interfere with debugging. For Emscripten we default to optimized (-O1)
1636          debug build, as otherwise binaries become too large.]))
1638 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1639     AS_HELP_STRING([--disable-runtime-optimizations],
1640         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1641          JVM JIT) that are known to interact badly with certain dynamic analysis
1642          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1643          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1644          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1646 AC_ARG_WITH(valgrind,
1647     AS_HELP_STRING([--with-valgrind],
1648         [Make availability of Valgrind headers a hard requirement.]))
1650 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1651     AS_HELP_STRING([--enable-compiler-plugins],
1652         [Enable compiler plugins that will perform additional checks during
1653          building. Enabled automatically by --enable-dbgutil.
1654          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1655 COMPILER_PLUGINS_DEBUG=
1656 if test "$enable_compiler_plugins" = debug; then
1657     enable_compiler_plugins=yes
1658     COMPILER_PLUGINS_DEBUG=TRUE
1661 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1662     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1663         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1664          relevant in the --disable-compiler-plugins case.]))
1666 libo_FUZZ_ARG_ENABLE(ooenv,
1667     AS_HELP_STRING([--enable-ooenv],
1668         [Enable ooenv for the instdir installation.]))
1670 AC_ARG_ENABLE(lto,
1671     AS_HELP_STRING([--enable-lto],
1672         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1673          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1674          linker.)]))
1676 AC_ARG_ENABLE(python,
1677     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1678         [Enables or disables Python support at run-time.
1679          Also specifies what Python to use at build-time.
1680          'fully-internal' even forces the internal version for uses of Python
1681          during the build.
1682          On macOS the only choices are
1683          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1684          ]))
1686 libo_FUZZ_ARG_ENABLE(gtk3,
1687     AS_HELP_STRING([--disable-gtk3],
1688         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1689 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1691 AC_ARG_ENABLE(gtk4,
1692     AS_HELP_STRING([--enable-gtk4],
1693         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1695 AC_ARG_ENABLE(atspi-tests,
1696     AS_HELP_STRING([--disable-atspi-tests],
1697         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1699 AC_ARG_ENABLE(introspection,
1700     AS_HELP_STRING([--enable-introspection],
1701         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1702          Linux distributions.)]))
1704 AC_ARG_ENABLE(split-app-modules,
1705     AS_HELP_STRING([--enable-split-app-modules],
1706         [Split file lists for app modules, e.g. base, calc.
1707          Has effect only with make distro-pack-install]),
1710 AC_ARG_ENABLE(split-opt-features,
1711     AS_HELP_STRING([--enable-split-opt-features],
1712         [Split file lists for some optional features, e.g. pyuno, testtool.
1713          Has effect only with make distro-pack-install]),
1716 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1717     AS_HELP_STRING([--disable-cairo-canvas],
1718         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1721 libo_FUZZ_ARG_ENABLE(dbus,
1722     AS_HELP_STRING([--disable-dbus],
1723         [Determines whether to enable features that depend on dbus.
1724          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1725 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1727 libo_FUZZ_ARG_ENABLE(sdremote,
1728     AS_HELP_STRING([--disable-sdremote],
1729         [Determines whether to enable Impress remote control (i.e. the server component).]),
1730 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1732 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1733     AS_HELP_STRING([--disable-sdremote-bluetooth],
1734         [Determines whether to build sdremote with bluetooth support.
1735          Requires dbus on Linux.]))
1737 libo_FUZZ_ARG_ENABLE(gio,
1738     AS_HELP_STRING([--disable-gio],
1739         [Determines whether to use the GIO support.]),
1740 ,test "${enable_gio+set}" = set || enable_gio=yes)
1742 AC_ARG_ENABLE(qt5,
1743     AS_HELP_STRING([--enable-qt5],
1744         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1745          available.]),
1748 AC_ARG_ENABLE(qt6,
1749     AS_HELP_STRING([--enable-qt6],
1750         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1751          available.]),
1754 AC_ARG_ENABLE(kf5,
1755     AS_HELP_STRING([--enable-kf5],
1756         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1757          KF5 are available.]),
1760 AC_ARG_ENABLE(kf6,
1761     AS_HELP_STRING([--enable-kf6],
1762         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1763          KF6 are available.]),
1767 AC_ARG_ENABLE(gtk3_kde5,
1768     AS_HELP_STRING([--enable-gtk3-kde5],
1769         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1770          platforms where Gtk3, Qt5 and Plasma is available.]),
1773 AC_ARG_ENABLE(gen,
1774     AS_HELP_STRING([--enable-gen],
1775         [To select the gen backend in case of --disable-dynamic-loading.
1776          Per default auto-enabled when X11 is used.]),
1777 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1779 AC_ARG_ENABLE(gui,
1780     AS_HELP_STRING([--disable-gui],
1781         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1782 ,enable_gui=yes)
1784 libo_FUZZ_ARG_ENABLE(randr,
1785     AS_HELP_STRING([--disable-randr],
1786         [Disable RandR support in the vcl project.]),
1787 ,test "${enable_randr+set}" = set || enable_randr=yes)
1789 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1790     AS_HELP_STRING([--disable-gstreamer-1-0],
1791         [Disable building with the gstreamer 1.0 avmedia backend.]),
1792 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1794 libo_FUZZ_ARG_ENABLE([eot],
1795     [AS_HELP_STRING([--enable-eot],
1796         [Enable support for Embedded OpenType fonts.])],
1797 ,test "${enable_eot+set}" = set || enable_eot=no)
1799 libo_FUZZ_ARG_ENABLE(cve-tests,
1800     AS_HELP_STRING([--disable-cve-tests],
1801         [Prevent CVE tests to be executed]),
1804 AC_ARG_ENABLE(build-opensymbol,
1805     AS_HELP_STRING([--enable-build-opensymbol],
1806         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1807          fontforge installed.]),
1810 AC_ARG_ENABLE(dependency-tracking,
1811     AS_HELP_STRING([--enable-dependency-tracking],
1812         [Do not reject slow dependency extractors.])[
1813   --disable-dependency-tracking
1814                           Disables generation of dependency information.
1815                           Speed up one-time builds.],
1818 AC_ARG_ENABLE(icecream,
1819     AS_HELP_STRING([--enable-icecream],
1820         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1821          It defaults to /opt/icecream for the location of the icecream gcc/g++
1822          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1825 AC_ARG_ENABLE(ld,
1826     AS_HELP_STRING([--enable-ld=<linker>],
1827         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1828          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1829          If <linker> contains any ':', the part before the first ':' is used as the value of
1830          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1831          needed for Clang 12).]),
1834 libo_FUZZ_ARG_ENABLE(cups,
1835     AS_HELP_STRING([--disable-cups],
1836         [Do not build cups support.])
1839 AC_ARG_ENABLE(ccache,
1840     AS_HELP_STRING([--disable-ccache],
1841         [Do not try to use ccache automatically.
1842          By default we will try to detect if ccache is available; in that case if
1843          CC/CXX are not yet set, and --enable-icecream is not given, we
1844          attempt to use ccache. --disable-ccache disables ccache completely.
1845          Additionally ccache's depend mode is enabled if possible,
1846          use --enable-ccache=nodepend to enable ccache without depend mode.
1850 AC_ARG_ENABLE(z7-debug,
1851     AS_HELP_STRING([--enable-z7-debug],
1852         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1853          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1854          Enabled by default if ccache is detected.]))
1856 libo_FUZZ_ARG_ENABLE(online-update,
1857     AS_HELP_STRING([--enable-online-update],
1858         [Enable the online update service that will check for new versions of
1859          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1862 libo_FUZZ_ARG_ENABLE(online-update-mar,
1863     AS_HELP_STRING([--enable-online-update-mar],
1864         [Enable the experimental Mozilla-like online update service that will
1865          check for new versions of LibreOffice. Disabled by default.]),
1868 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1869     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1870         [Set the base URL value for --enable-online-update-mar.
1871          (Can be left off for debug purposes, even if that may render the feature
1872          non-functional.)]),
1875 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1876     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1877         [Set the certificate DER value for --enable-online-update-mar.
1878          (Can be left off for debug purposes, even if that may render the feature
1879          non-functional.)]),
1882 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1883     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1884         [Set the certificate name value for --enable-online-update-mar.
1885          (Can be left off for debug purposes, even if that may render the feature
1886          non-functional.)]),
1889 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1890     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1891         [Set the certificate path value for --enable-online-update-mar.
1892          (Can be left off for debug purposes, even if that may render the feature
1893          non-functional.)]),
1896 libo_FUZZ_ARG_WITH(online-update-mar-channel,
1897     AS_HELP_STRING([--with-online-update-mar-channel=...],
1898         [Set the channel value for --enable-online-update-mar.
1899          (Can be left off for debug purposes, even if that may render the feature
1900          non-functional.)]),
1903 libo_FUZZ_ARG_WITH(online-update-mar-serverurl,
1904     AS_HELP_STRING([--with-online-update-mar-serverurl=...],
1905         [Set the server URL value for --enable-online-update-mar.
1906          (Can be left off for debug purposes, even if that may render the feature
1907          non-functional.)]),
1910 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1911     AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1912         [Set the upload URL value for --enable-online-update-mar.
1913          (Can be left off for debug purposes, even if that may render the feature
1914          non-functional.)]),
1917 libo_FUZZ_ARG_ENABLE(extension-update,
1918     AS_HELP_STRING([--disable-extension-update],
1919         [Disable possibility to update installed extensions.]),
1922 libo_FUZZ_ARG_ENABLE(release-build,
1923     AS_HELP_STRING([--enable-release-build],
1924         [Enable release build. Note that the "release build" choice is orthogonal to
1925          whether symbols are present, debug info is generated, or optimization
1926          is done.
1927          See https://wiki.documentfoundation.org/Development/DevBuild]),
1930 AC_ARG_ENABLE(windows-build-signing,
1931     AS_HELP_STRING([--enable-windows-build-signing],
1932         [Enable signing of windows binaries (*.exe, *.dll)]),
1935 AC_ARG_ENABLE(silent-msi,
1936     AS_HELP_STRING([--enable-silent-msi],
1937         [Enable MSI with LIMITUI=1 (silent install).]),
1940 AC_ARG_ENABLE(wix,
1941     AS_HELP_STRING([--enable-wix],
1942         [Build Windows installer using WiX.]),
1945 AC_ARG_ENABLE(macosx-code-signing,
1946     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1947         [Sign executables, dylibs, frameworks and the app bundle. If you
1948          don't provide an identity the first suitable certificate
1949          in your keychain is used.]),
1952 AC_ARG_ENABLE(macosx-package-signing,
1953     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1954         [Create a .pkg suitable for uploading to the Mac App Store and sign
1955          it. If you don't provide an identity the first suitable certificate
1956          in your keychain is used.]),
1959 AC_ARG_ENABLE(macosx-sandbox,
1960     AS_HELP_STRING([--enable-macosx-sandbox],
1961         [Make the app bundle run in a sandbox. Requires code signing.
1962          Is required by apps distributed in the Mac App Store, and implies
1963          adherence to App Store rules.]),
1966 AC_ARG_WITH(macosx-bundle-identifier,
1967     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1968         [Define the macOS bundle identifier. Default is the somewhat weird
1969          org.libreoffice.script ("script", huh?).]),
1970 ,with_macosx_bundle_identifier=org.libreoffice.script)
1972 AC_ARG_WITH(macosx-provisioning-profile,
1973     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1974         [Specify the path to a provisioning profile to use]),
1977 AC_ARG_WITH(product-name,
1978     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1979         [Define the product name. Default is AC_PACKAGE_NAME.]),
1980 ,with_product_name=$PRODUCTNAME)
1982 libo_FUZZ_ARG_ENABLE(community-flavor,
1983     AS_HELP_STRING([--disable-community-flavor],
1984         [Disable the Community branding.]),
1987 AC_ARG_WITH(package-version,
1988     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1989         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1992 libo_FUZZ_ARG_ENABLE(readonly-installset,
1993     AS_HELP_STRING([--enable-readonly-installset],
1994         [Prevents any attempts by LibreOffice to write into its installation. That means
1995          at least that no "system-wide" extensions can be added. Partly experimental work in
1996          progress, probably not fully implemented. Always enabled for macOS.]),
1999 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
2000     AS_HELP_STRING([--disable-mariadb-sdbc],
2001         [Disable the build of the MariaDB/MySQL-SDBC driver.])
2004 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
2005     AS_HELP_STRING([--disable-postgresql-sdbc],
2006         [Disable the build of the PostgreSQL-SDBC driver.])
2009 libo_FUZZ_ARG_ENABLE(lotuswordpro,
2010     AS_HELP_STRING([--disable-lotuswordpro],
2011         [Disable the build of the Lotus Word Pro filter.]),
2012 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2014 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2015     AS_HELP_STRING([--disable-firebird-sdbc],
2016         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2017 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2019 AC_ARG_ENABLE(bogus-pkg-config,
2020     AS_HELP_STRING([--enable-bogus-pkg-config],
2021         [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.]),
2024 AC_ARG_ENABLE(openssl,
2025     AS_HELP_STRING([--disable-openssl],
2026         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2027          components will use NSS. Work in progress,
2028          use only if you are hacking on it.]),
2029 ,enable_openssl=yes)
2031 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2032     AS_HELP_STRING([--enable-cipher-openssl-backend],
2033         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2034          Requires --enable-openssl.]))
2036 AC_ARG_ENABLE(nss,
2037     AS_HELP_STRING([--disable-nss],
2038         [Disable using NSS. If disabled,
2039          components will use openssl. Work in progress,
2040          use only if you are hacking on it.]),
2041 ,enable_nss=yes)
2043 AC_ARG_ENABLE(library-bin-tar,
2044     AS_HELP_STRING([--enable-library-bin-tar],
2045         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2046         Some libraries can save their build result in a tarball
2047         stored in TARFILE_LOCATION. That binary tarball is
2048         uniquely identified by the source tarball,
2049         the content of the config_host.mk file and the content
2050         of the top-level directory in core for that library
2051         If this option is enabled, then if such a tarfile exist, it will be untarred
2052         instead of the source tarfile, and the build step will be skipped for that
2053         library.
2054         If a proper tarfile does not exist, then the normal source-based
2055         build is done for that library and a proper binary tarfile is created
2056         for the next time.]),
2059 AC_ARG_ENABLE(dconf,
2060     AS_HELP_STRING([--disable-dconf],
2061         [Disable the dconf configuration backend (enabled by default where
2062          available).]))
2064 libo_FUZZ_ARG_ENABLE(formula-logger,
2065     AS_HELP_STRING(
2066         [--enable-formula-logger],
2067         [Enable formula logger for logging formula calculation flow in Calc.]
2068     )
2071 AC_ARG_ENABLE(ldap,
2072     AS_HELP_STRING([--disable-ldap],
2073         [Disable LDAP support.]),
2074 ,enable_ldap=yes)
2076 AC_ARG_ENABLE(opencl,
2077     AS_HELP_STRING([--disable-opencl],
2078         [Disable OpenCL support.]),
2079 ,enable_opencl=yes)
2081 libo_FUZZ_ARG_ENABLE(librelogo,
2082     AS_HELP_STRING([--disable-librelogo],
2083         [Do not build LibreLogo.]),
2084 ,enable_librelogo=yes)
2086 AC_ARG_ENABLE(wasm-strip,
2087     AS_HELP_STRING([--enable-wasm-strip],
2088         [Strip the static build like for WASM/emscripten platform.]),
2091 AC_ARG_WITH(main-module,
2092     AS_HELP_STRING([--with-main-module=<writer/calc>],
2093         [Specify which main module to build for wasm.
2094         Default value is 'writer'.]),
2097 AC_ARG_ENABLE(wasm-exceptions,
2098     AS_HELP_STRING([--enable-wasm-exceptions],
2099         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2100         matter of fact, this is currently not finished by any implementation)
2101         (see https://webassembly.org/roadmap/ for the current state]),
2104 AC_ARG_ENABLE(xmlhelp,
2105     AS_HELP_STRING([--disable-xmlhelp],
2106         [Disable XML help support]),
2107 ,enable_xmlhelp=yes)
2109 AC_ARG_ENABLE(customtarget-components,
2110     AS_HELP_STRING([--enable-customtarget-components],
2111         [Generates the static UNO object constructor mapping from the build.]))
2113 dnl ===================================================================
2114 dnl Optional Packages (--with/without-)
2115 dnl ===================================================================
2117 AC_ARG_WITH(gcc-home,
2118     AS_HELP_STRING([--with-gcc-home],
2119         [Specify the location of gcc/g++ manually. This can be used in conjunction
2120          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2121          non-default path.]),
2124 AC_ARG_WITH(gnu-patch,
2125     AS_HELP_STRING([--with-gnu-patch],
2126         [Specify location of GNU patch on Solaris or FreeBSD.]),
2129 AC_ARG_WITH(build-platform-configure-options,
2130     AS_HELP_STRING([--with-build-platform-configure-options],
2131         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2134 AC_ARG_WITH(gnu-cp,
2135     AS_HELP_STRING([--with-gnu-cp],
2136         [Specify location of GNU cp on Solaris or FreeBSD.]),
2139 AC_ARG_WITH(external-tar,
2140     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2141         [Specify an absolute path of where to find (and store) tarfiles.]),
2142     TARFILE_LOCATION=$withval ,
2145 AC_ARG_WITH(referenced-git,
2146     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2147         [Specify another checkout directory to reference. This makes use of
2148                  git submodule update --reference, and saves a lot of diskspace
2149                  when having multiple trees side-by-side.]),
2150     GIT_REFERENCE_SRC=$withval ,
2153 AC_ARG_WITH(linked-git,
2154     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2155         [Specify a directory where the repositories of submodules are located.
2156          This uses a method similar to git-new-workdir to get submodules.]),
2157     GIT_LINK_SRC=$withval ,
2160 AC_ARG_WITH(galleries,
2161     AS_HELP_STRING([--with-galleries],
2162         [Specify how galleries should be built. It is possible either to
2163          build these internally from source ("build"),
2164          or to disable them ("no")]),
2167 AC_ARG_WITH(templates,
2168     AS_HELP_STRING([--with-templates],
2169         [Specify we build with or without template files. It is possible either to
2170          build with templates ("yes"),
2171          or to disable them ("no")]),
2174 AC_ARG_WITH(theme,
2175     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2176         [Choose which themes to include. By default those themes with an '*' are included.
2177          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2178          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2179          *elementary, *elementary_svg,
2180          *karasa_jaga, *karasa_jaga_svg,
2181          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2182          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2185 libo_FUZZ_ARG_WITH(helppack-integration,
2186     AS_HELP_STRING([--without-helppack-integration],
2187         [It will not integrate the helppacks to the installer
2188          of the product. Please use this switch to use the online help
2189          or separate help packages.]),
2192 libo_FUZZ_ARG_WITH(fonts,
2193     AS_HELP_STRING([--without-fonts],
2194         [LibreOffice includes some third-party fonts to provide a reliable basis for
2195          help content, templates, samples, etc. When these fonts are already
2196          known to be available on the system then you should use this option.]),
2199 AC_ARG_WITH(epm,
2200     AS_HELP_STRING([--with-epm],
2201         [Decides which epm to use. Default is to use the one from the system if
2202          one is built. When either this is not there or you say =internal epm
2203          will be built.]),
2206 AC_ARG_WITH(package-format,
2207     AS_HELP_STRING([--with-package-format],
2208         [Specify package format(s) for LibreOffice installation sets. The
2209          implicit --without-package-format leads to no installation sets being
2210          generated. Possible values: archive, bsd, deb, dmg,
2211          installed, msi, pkg, and rpm.
2212          Example: --with-package-format='deb rpm']),
2215 AC_ARG_WITH(tls,
2216     AS_HELP_STRING([--with-tls],
2217         [Decides which TLS/SSL and cryptographic implementations to use for
2218          LibreOffice's code. Default is to use NSS although OpenSSL is also
2219          possible. Notice that selecting NSS restricts the usage of OpenSSL
2220          in LO's code but selecting OpenSSL doesn't restrict by now the
2221          usage of NSS in LO's code. Possible values: openssl, nss.
2222          Example: --with-tls="nss"]),
2225 AC_ARG_WITH(system-libs,
2226     AS_HELP_STRING([--with-system-libs],
2227         [Use libraries already on system -- enables all --with-system-* flags.]),
2230 AC_ARG_WITH(system-bzip2,
2231     AS_HELP_STRING([--with-system-bzip2],
2232         [Use bzip2 already on system. Used when --enable-online-update-mar
2233         or --enable-python=internal]),,
2234     [with_system_bzip2="$with_system_libs"])
2236 AC_ARG_WITH(system-headers,
2237     AS_HELP_STRING([--with-system-headers],
2238         [Use headers already on system -- enables all --with-system-* flags for
2239          external packages whose headers are the only entities used i.e.
2240          boost/odbc/sane-header(s).]),,
2241     [with_system_headers="$with_system_libs"])
2243 AC_ARG_WITH(system-jars,
2244     AS_HELP_STRING([--without-system-jars],
2245         [When building with --with-system-libs, also the needed jars are expected
2246          on the system. Use this to disable that]),,
2247     [with_system_jars="$with_system_libs"])
2249 AC_ARG_WITH(system-cairo,
2250     AS_HELP_STRING([--with-system-cairo],
2251         [Use cairo libraries already on system.  Happens automatically for
2252          (implicit) --enable-gtk3.]))
2254 AC_ARG_WITH(system-epoxy,
2255     AS_HELP_STRING([--with-system-epoxy],
2256         [Use epoxy libraries already on system.  Happens automatically for
2257          (implicit) --enable-gtk3.]),,
2258        [with_system_epoxy="$with_system_libs"])
2260 AC_ARG_WITH(myspell-dicts,
2261     AS_HELP_STRING([--with-myspell-dicts],
2262         [Adds myspell dictionaries to the LibreOffice installation set]),
2265 AC_ARG_WITH(system-dicts,
2266     AS_HELP_STRING([--without-system-dicts],
2267         [Do not use dictionaries from system paths.]),
2270 AC_ARG_WITH(external-dict-dir,
2271     AS_HELP_STRING([--with-external-dict-dir],
2272         [Specify external dictionary dir.]),
2275 AC_ARG_WITH(external-hyph-dir,
2276     AS_HELP_STRING([--with-external-hyph-dir],
2277         [Specify external hyphenation pattern dir.]),
2280 AC_ARG_WITH(external-thes-dir,
2281     AS_HELP_STRING([--with-external-thes-dir],
2282         [Specify external thesaurus dir.]),
2285 AC_ARG_WITH(system-zlib,
2286     AS_HELP_STRING([--with-system-zlib],
2287         [Use zlib already on system.]),,
2288     [with_system_zlib=auto])
2290 AC_ARG_WITH(system-jpeg,
2291     AS_HELP_STRING([--with-system-jpeg],
2292         [Use jpeg already on system.]),,
2293     [with_system_jpeg="$with_system_libs"])
2295 AC_ARG_WITH(system-expat,
2296     AS_HELP_STRING([--with-system-expat],
2297         [Use expat already on system.]),,
2298     [with_system_expat="$with_system_libs"])
2300 AC_ARG_WITH(system-libxml,
2301     AS_HELP_STRING([--with-system-libxml],
2302         [Use libxml/libxslt already on system.]),,
2303     [with_system_libxml=auto])
2305 AC_ARG_WITH(system-openldap,
2306     AS_HELP_STRING([--with-system-openldap],
2307         [Use the OpenLDAP LDAP SDK already on system.]),,
2308     [with_system_openldap="$with_system_libs"])
2310 libo_FUZZ_ARG_ENABLE(poppler,
2311     AS_HELP_STRING([--disable-poppler],
2312         [Disable building Poppler.])
2315 AC_ARG_WITH(system-poppler,
2316     AS_HELP_STRING([--with-system-poppler],
2317         [Use system poppler (only needed for PDF import).]),,
2318     [with_system_poppler="$with_system_libs"])
2320 AC_ARG_WITH(system-abseil,
2321     AS_HELP_STRING([--with-system-abseil],
2322         [Use the abseil libraries already on system.]),,
2323     [with_system_abseil="$with_system_libs"])
2325 AC_ARG_WITH(system-openjpeg,
2326     AS_HELP_STRING([--with-system-openjpeg],
2327         [Use the OpenJPEG library already on system.]),,
2328     [with_system_openjpeg="$with_system_libs"])
2330 libo_FUZZ_ARG_ENABLE(gpgmepp,
2331     AS_HELP_STRING([--disable-gpgmepp],
2332         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2335 AC_ARG_WITH(system-gpgmepp,
2336     AS_HELP_STRING([--with-system-gpgmepp],
2337         [Use gpgmepp already on system]),,
2338     [with_system_gpgmepp="$with_system_libs"])
2340 AC_ARG_WITH(system-mariadb,
2341     AS_HELP_STRING([--with-system-mariadb],
2342         [Use MariaDB/MySQL libraries already on system.]),,
2343     [with_system_mariadb="$with_system_libs"])
2345 AC_ARG_ENABLE(bundle-mariadb,
2346     AS_HELP_STRING([--enable-bundle-mariadb],
2347         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2350 AC_ARG_WITH(system-postgresql,
2351     AS_HELP_STRING([--with-system-postgresql],
2352         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2353          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2354     [with_system_postgresql="$with_system_libs"])
2356 AC_ARG_WITH(libpq-path,
2357     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2358         [Use this PostgreSQL C interface (libpq) installation for building
2359          the PostgreSQL-SDBC extension.]),
2362 AC_ARG_WITH(system-firebird,
2363     AS_HELP_STRING([--with-system-firebird],
2364         [Use Firebird libraries already on system, for building the Firebird-SDBC
2365          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2366     [with_system_firebird="$with_system_libs"])
2368 AC_ARG_WITH(system-libtommath,
2369             AS_HELP_STRING([--with-system-libtommath],
2370                            [Use libtommath already on system]),,
2371             [with_system_libtommath="$with_system_libs"])
2373 AC_ARG_WITH(system-hsqldb,
2374     AS_HELP_STRING([--with-system-hsqldb],
2375         [Use hsqldb already on system.]))
2377 AC_ARG_WITH(hsqldb-jar,
2378     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2379         [Specify path to jarfile manually.]),
2380     HSQLDB_JAR=$withval)
2382 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2383     AS_HELP_STRING([--disable-scripting-beanshell],
2384         [Disable support for scripts in BeanShell.]),
2388 AC_ARG_WITH(system-beanshell,
2389     AS_HELP_STRING([--with-system-beanshell],
2390         [Use beanshell already on system.]),,
2391     [with_system_beanshell="$with_system_jars"])
2393 AC_ARG_WITH(beanshell-jar,
2394     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2395         [Specify path to jarfile manually.]),
2396     BSH_JAR=$withval)
2398 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2399     AS_HELP_STRING([--disable-scripting-javascript],
2400         [Disable support for scripts in JavaScript.]),
2404 AC_ARG_WITH(system-rhino,
2405     AS_HELP_STRING([--with-system-rhino],
2406         [Use rhino already on system.]),,)
2407 #    [with_system_rhino="$with_system_jars"])
2408 # Above is not used as we have different debug interface
2409 # patched into internal rhino. This code needs to be fixed
2410 # before we can enable it by default.
2412 AC_ARG_WITH(rhino-jar,
2413     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2414         [Specify path to jarfile manually.]),
2415     RHINO_JAR=$withval)
2417 AC_ARG_WITH(system-jfreereport,
2418     AS_HELP_STRING([--with-system-jfreereport],
2419         [Use JFreeReport already on system.]),,
2420     [with_system_jfreereport="$with_system_jars"])
2422 AC_ARG_WITH(sac-jar,
2423     AS_HELP_STRING([--with-sac-jar=JARFILE],
2424         [Specify path to jarfile manually.]),
2425     SAC_JAR=$withval)
2427 AC_ARG_WITH(libxml-jar,
2428     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2429         [Specify path to jarfile manually.]),
2430     LIBXML_JAR=$withval)
2432 AC_ARG_WITH(flute-jar,
2433     AS_HELP_STRING([--with-flute-jar=JARFILE],
2434         [Specify path to jarfile manually.]),
2435     FLUTE_JAR=$withval)
2437 AC_ARG_WITH(jfreereport-jar,
2438     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2439         [Specify path to jarfile manually.]),
2440     JFREEREPORT_JAR=$withval)
2442 AC_ARG_WITH(liblayout-jar,
2443     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2444         [Specify path to jarfile manually.]),
2445     LIBLAYOUT_JAR=$withval)
2447 AC_ARG_WITH(libloader-jar,
2448     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2449         [Specify path to jarfile manually.]),
2450     LIBLOADER_JAR=$withval)
2452 AC_ARG_WITH(libformula-jar,
2453     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2454         [Specify path to jarfile manually.]),
2455     LIBFORMULA_JAR=$withval)
2457 AC_ARG_WITH(librepository-jar,
2458     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2459         [Specify path to jarfile manually.]),
2460     LIBREPOSITORY_JAR=$withval)
2462 AC_ARG_WITH(libfonts-jar,
2463     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2464         [Specify path to jarfile manually.]),
2465     LIBFONTS_JAR=$withval)
2467 AC_ARG_WITH(libserializer-jar,
2468     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2469         [Specify path to jarfile manually.]),
2470     LIBSERIALIZER_JAR=$withval)
2472 AC_ARG_WITH(libbase-jar,
2473     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2474         [Specify path to jarfile manually.]),
2475     LIBBASE_JAR=$withval)
2477 AC_ARG_WITH(system-odbc,
2478     AS_HELP_STRING([--with-system-odbc],
2479         [Use the odbc headers already on system.]),,
2480     [with_system_odbc="auto"])
2482 AC_ARG_WITH(system-sane,
2483     AS_HELP_STRING([--with-system-sane],
2484         [Use sane.h already on system.]),,
2485     [with_system_sane="$with_system_headers"])
2487 AC_ARG_WITH(system-bluez,
2488     AS_HELP_STRING([--with-system-bluez],
2489         [Use bluetooth.h already on system.]),,
2490     [with_system_bluez="$with_system_headers"])
2492 AC_ARG_WITH(system-boost,
2493     AS_HELP_STRING([--with-system-boost],
2494         [Use boost already on system.]),,
2495     [with_system_boost="$with_system_headers"])
2497 AC_ARG_WITH(system-dragonbox,
2498     AS_HELP_STRING([--with-system-dragonbox],
2499         [Use dragonbox already on system.]),,
2500     [with_system_dragonbox="$with_system_headers"])
2502 AC_ARG_WITH(system-frozen,
2503     AS_HELP_STRING([--with-system-frozen],
2504         [Use frozen already on system.]),,
2505     [with_system_frozen="$with_system_headers"])
2507 AC_ARG_WITH(system-libfixmath,
2508     AS_HELP_STRING([--with-system-libfixmath],
2509         [Use libfixmath already on system.]),,
2510     [with_system_libfixmath="$with_system_libs"])
2512 AC_ARG_WITH(system-glm,
2513     AS_HELP_STRING([--with-system-glm],
2514         [Use glm already on system.]),,
2515     [with_system_glm="$with_system_headers"])
2517 AC_ARG_WITH(system-hunspell,
2518     AS_HELP_STRING([--with-system-hunspell],
2519         [Use libhunspell already on system.]),,
2520     [with_system_hunspell="$with_system_libs"])
2522 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2523     AS_HELP_STRING([--enable-cairo-rgba],
2524         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2526 libo_FUZZ_ARG_ENABLE(zxing,
2527     AS_HELP_STRING([--disable-zxing],
2528        [Disable use of zxing external library.]))
2530 AC_ARG_WITH(system-zxing,
2531     AS_HELP_STRING([--with-system-zxing],
2532         [Use libzxing already on system.]),,
2533     [with_system_zxing="$with_system_libs"])
2535 AC_ARG_WITH(system-zxcvbn,
2536     AS_HELP_STRING([--with-system-zxcvbn],
2537         [Use libzxcvbn already on system.]),,
2538     [with_system_zxcvbn="$with_system_libs"])
2540 AC_ARG_WITH(system-box2d,
2541     AS_HELP_STRING([--with-system-box2d],
2542         [Use box2d already on system.]),,
2543     [with_system_box2d="$with_system_libs"])
2545 AC_ARG_WITH(system-mythes,
2546     AS_HELP_STRING([--with-system-mythes],
2547         [Use mythes already on system.]),,
2548     [with_system_mythes="$with_system_libs"])
2550 AC_ARG_WITH(system-altlinuxhyph,
2551     AS_HELP_STRING([--with-system-altlinuxhyph],
2552         [Use ALTLinuxhyph already on system.]),,
2553     [with_system_altlinuxhyph="$with_system_libs"])
2555 AC_ARG_WITH(system-lpsolve,
2556     AS_HELP_STRING([--with-system-lpsolve],
2557         [Use lpsolve already on system.]),,
2558     [with_system_lpsolve="$with_system_libs"])
2560 AC_ARG_WITH(system-coinmp,
2561     AS_HELP_STRING([--with-system-coinmp],
2562         [Use CoinMP already on system.]),,
2563     [with_system_coinmp="$with_system_libs"])
2565 AC_ARG_WITH(system-liblangtag,
2566     AS_HELP_STRING([--with-system-liblangtag],
2567         [Use liblangtag library already on system.]),,
2568     [with_system_liblangtag="$with_system_libs"])
2570 AC_ARG_WITH(system-lockfile,
2571     AS_HELP_STRING([--with-system-lockfile[=file]],
2572         [Detect a system lockfile program or use the \$file argument.]))
2574 AC_ARG_WITH(webdav,
2575     AS_HELP_STRING([--without-webdav],
2576         [Disable WebDAV support in the UCB.]))
2578 AC_ARG_WITH(linker-hash-style,
2579     AS_HELP_STRING([--with-linker-hash-style],
2580         [Use linker with --hash-style=<style> when linking shared objects.
2581          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2582          if supported on the build system, and "sysv" otherwise.]))
2584 AC_ARG_WITH(jdk-home,
2585     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2586         [If you have installed JDK 17 or later on your system please supply the
2587          path here. Note that this is not the location of the java command but the
2588          location of the entire distribution. In case of cross-compiling, this
2589          is the JDK of the host os. Use --with-build-platform-configure-options
2590          to point to a different build platform JDK.]),
2593 AC_ARG_WITH(help,
2594     AS_HELP_STRING([--with-help],
2595         [Enable the build of help. There is a special parameter "common" that
2596          can be used to bundle only the common part, .e.g help-specific icons.
2597          This is useful when you build the helpcontent separately.])
2598     [
2599                           Usage:     --with-help    build the old local help
2600                                  --without-help     no local help (default)
2601                                  --with-help=html   build the new HTML local help
2602                                  --with-help=online build the new HTML online help
2603     ],
2606 AC_ARG_WITH(omindex,
2607    AS_HELP_STRING([--with-omindex],
2608         [Enable the support of xapian-omega index for online help.])
2609    [
2610                          Usage: --with-omindex=server prepare the pages for omindex
2611                                 but let xapian-omega be built in server.
2612                                 --with-omindex=noxap do not prepare online pages
2613                                 for xapian-omega
2614   ],
2617 libo_FUZZ_ARG_WITH(java,
2618     AS_HELP_STRING([--with-java=<java command>],
2619         [Specify the name of the Java interpreter command. Typically "java"
2620          which is the default.
2622          To build without support for Java components, applets, accessibility
2623          or the XML filters written in Java, use --without-java or --with-java=no.]),
2624     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2625     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2628 AC_ARG_WITH(jvm-path,
2629     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2630         [Use a specific JVM search path at runtime.
2631          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2634 AC_ARG_WITH(ant-home,
2635     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2636         [If you have installed Apache Ant on your system, please supply the path here.
2637          Note that this is not the location of the Ant binary but the location
2638          of the entire distribution.]),
2641 AC_ARG_WITH(symbol-config,
2642     AS_HELP_STRING([--with-symbol-config],
2643         [Configuration for the crashreport symbol upload]),
2644         [],
2645         [with_symbol_config=no])
2647 AC_ARG_WITH(export-validation,
2648     AS_HELP_STRING([--without-export-validation],
2649         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2650 ,with_export_validation=auto)
2652 AC_ARG_WITH(bffvalidator,
2653     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2654         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2655          Requires installed Microsoft Office Binary File Format Validator.
2656          Note: export-validation (--with-export-validation) is required to be turned on.
2657          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2658 ,with_bffvalidator=no)
2660 libo_FUZZ_ARG_WITH(junit,
2661     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2662         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2663          --without-junit disables those tests. Not relevant in the --without-java case.]),
2664 ,with_junit=yes)
2666 AC_ARG_WITH(hamcrest,
2667     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2668         [Specifies the hamcrest jar file to use for JUnit-based tests.
2669          --without-junit disables those tests. Not relevant in the --without-java case.]),
2670 ,with_hamcrest=yes)
2672 AC_ARG_WITH(perl-home,
2673     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2674         [If you have installed Perl 5 Distribution, on your system, please
2675          supply the path here. Note that this is not the location of the Perl
2676          binary but the location of the entire distribution.]),
2679 libo_FUZZ_ARG_WITH(doxygen,
2680     AS_HELP_STRING(
2681         [--with-doxygen=<absolute path to doxygen executable>],
2682         [Specifies the doxygen executable to use when generating ODK C/C++
2683          documentation. --without-doxygen disables generation of ODK C/C++
2684          documentation. Not relevant in the --disable-odk case.]),
2685 ,with_doxygen=yes)
2687 AC_ARG_WITH(visual-studio,
2688     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2689         [Specify which Visual Studio version to use in case several are
2690          installed. Currently 2019 (default) and 2022 are supported.]),
2693 AC_ARG_WITH(windows-sdk,
2694     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2695         [Specify which Windows SDK, or "Windows Kit", version to use
2696          in case the one that came with the selected Visual Studio
2697          is not what you want for some reason. Note that not all compiler/SDK
2698          combinations are supported. The intent is that this option should not
2699          be needed.]),
2702 AC_ARG_WITH(lang,
2703     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2704         [Use this option to build LibreOffice with additional UI language support.
2705          English (US) is always included by default.
2706          Separate multiple languages with space.
2707          For all languages, use --with-lang=ALL.]),
2710 AC_ARG_WITH(locales,
2711     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2712         [Use this option to limit the locale information built in.
2713          Separate multiple locales with space.
2714          Very experimental and might well break stuff.
2715          Just a desperate measure to shrink code and data size.
2716          By default all the locales available is included.
2717          Just works with --disable-dynloading. Defaults to "ALL".
2718          This option is completely unrelated to --with-lang.])
2719     [
2720                           Affects also our character encoding conversion
2721                           tables for encodings mainly targeted for a
2722                           particular locale, like EUC-CN and EUC-TW for
2723                           zh, ISO-2022-JP for ja.
2725                           Affects also our add-on break iterator data for
2726                           some languages.
2728                           For the default, all locales, don't use this switch at all.
2729                           Specifying just the language part of a locale means all matching
2730                           locales will be included.
2731     ],
2734 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2735 libo_FUZZ_ARG_WITH(krb5,
2736     AS_HELP_STRING([--with-krb5],
2737         [Enable MIT Kerberos 5 support in modules that support it.
2738          By default automatically enabled on platforms
2739          where a good system Kerberos 5 is available.]),
2742 libo_FUZZ_ARG_WITH(gssapi,
2743     AS_HELP_STRING([--with-gssapi],
2744         [Enable GSSAPI support in modules that support it.
2745          By default automatically enabled on platforms
2746          where a good system GSSAPI is available.]),
2749 libo_FUZZ_ARG_WITH(lxml,
2750     AS_HELP_STRING([--without-lxml],
2751         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2752          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2753          report widget classes and ids.]),
2756 libo_FUZZ_ARG_WITH(latest-c++,
2757     AS_HELP_STRING([--with-latest-c++],
2758         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2759          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2760         [with_latest_c__=no])
2762 AC_ARG_WITH(gtk3-build,
2763     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2764         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2765          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2767 dnl ===================================================================
2768 dnl Branding
2769 dnl ===================================================================
2771 AC_ARG_WITH(branding,
2772     AS_HELP_STRING([--with-branding=/path/to/images],
2773         [Use given path to retrieve branding images set.])
2774     [
2775                           Search for intro.png about.svg and logo.svg.
2776                           If any is missing, default ones will be used instead.
2778                           Search also progress.conf for progress
2779                           settings on intro screen :
2781                           PROGRESSBARCOLOR="255,255,255" Set color of
2782                           progress bar. Comma separated RGB decimal values.
2783                           PROGRESSSIZE="407,6" Set size of progress bar.
2784                           Comma separated decimal values (width, height).
2785                           PROGRESSPOSITION="61,317" Set position of progress
2786                           bar from left,top. Comma separated decimal values.
2787                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2788                           bar frame. Comma separated RGB decimal values.
2789                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2790                           bar text. Comma separated RGB decimal values.
2791                           PROGRESSTEXTBASELINE="287" Set vertical position of
2792                           progress bar text from top. Decimal value.
2794                           Default values will be used if not found.
2795     ],
2799 AC_ARG_WITH(extra-buildid,
2800     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2801         [Show addition build identification in about dialog.]),
2805 AC_ARG_WITH(vendor,
2806     AS_HELP_STRING([--with-vendor="John the Builder"],
2807         [Set vendor of the build.]),
2810 AC_ARG_WITH(privacy-policy-url,
2811     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2812         [The URL to your privacy policy (needed when
2813          enabling online-update or crashreporting via breakpad)]),
2814         [if test "x$with_privacy_policy_url" = "xyes"; then
2815             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2816          elif test "x$with_privacy_policy_url" = "xno"; then
2817             with_privacy_policy_url="undefined"
2818          fi]
2819 ,[with_privacy_policy_url="undefined"])
2821 AC_ARG_WITH(android-package-name,
2822     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2823         [Set Android package name of the build.]),
2826 AC_ARG_WITH(compat-oowrappers,
2827     AS_HELP_STRING([--with-compat-oowrappers],
2828         [Install oo* wrappers in parallel with
2829          lo* ones to keep backward compatibility.
2830          Has effect only with make distro-pack-install]),
2833 AC_ARG_WITH(os-version,
2834     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2835         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2838 AC_ARG_WITH(parallelism,
2839     AS_HELP_STRING([--with-parallelism],
2840         [Number of jobs to run simultaneously during build. Parallel builds can
2841         save a lot of time on multi-cpu machines. Defaults to the number of
2842         CPUs on the machine, unless you configure --enable-icecream - then to
2843         40.]),
2846 AC_ARG_WITH(all-tarballs,
2847     AS_HELP_STRING([--with-all-tarballs],
2848         [Download all external tarballs unconditionally]))
2850 AC_ARG_WITH(gdrive-client-id,
2851     AS_HELP_STRING([--with-gdrive-client-id],
2852         [Provides the client id of the application for OAuth2 authentication
2853         on Google Drive. If either this or --with-gdrive-client-secret is
2854         empty, the feature will be disabled]),
2857 AC_ARG_WITH(gdrive-client-secret,
2858     AS_HELP_STRING([--with-gdrive-client-secret],
2859         [Provides the client secret of the application for OAuth2
2860         authentication on Google Drive. If either this or
2861         --with-gdrive-client-id is empty, the feature will be disabled]),
2864 AC_ARG_WITH(alfresco-cloud-client-id,
2865     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2866         [Provides the client id of the application for OAuth2 authentication
2867         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2868         empty, the feature will be disabled]),
2871 AC_ARG_WITH(alfresco-cloud-client-secret,
2872     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2873         [Provides the client secret of the application for OAuth2
2874         authentication on Alfresco Cloud. If either this or
2875         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2878 AC_ARG_WITH(onedrive-client-id,
2879     AS_HELP_STRING([--with-onedrive-client-id],
2880         [Provides the client id of the application for OAuth2 authentication
2881         on OneDrive. If either this or --with-onedrive-client-secret is
2882         empty, the feature will be disabled]),
2885 AC_ARG_WITH(onedrive-client-secret,
2886     AS_HELP_STRING([--with-onedrive-client-secret],
2887         [Provides the client secret of the application for OAuth2
2888         authentication on OneDrive. If either this or
2889         --with-onedrive-client-id is empty, the feature will be disabled]),
2892 dnl Check for coredumpctl support to present information about crashing test processes:
2893 AC_ARG_WITH(coredumpctl,
2894     AS_HELP_STRING([--with-coredumpctl],
2895         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2896         processes.]))
2898 AC_ARG_WITH(buildconfig-recorded,
2899     AS_HELP_STRING([--with-buildconfig-recorded],
2900         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2903 AC_MSG_CHECKING([whether to record build config])
2904 if test -z "$with_buildconfig_recorded"; then
2905     with_buildconfig_recorded=no
2907 if test "$with_buildconfig_recorded" = no; then
2908     AC_MSG_RESULT([no])
2909 else
2910     AC_MSG_RESULT([yes])
2911     # replace backslashes, to get a valid c++ string
2912     config_args=$(echo $ac_configure_args | tr '\\' '/')
2913     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2914     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2917 dnl ===================================================================
2918 dnl Do we want to use pre-build binary tarball for recompile
2919 dnl ===================================================================
2921 if test "$enable_library_bin_tar" = "yes" ; then
2922     USE_LIBRARY_BIN_TAR=TRUE
2923 else
2924     USE_LIBRARY_BIN_TAR=
2926 AC_SUBST(USE_LIBRARY_BIN_TAR)
2928 dnl ===================================================================
2929 dnl Test whether build target is Release Build
2930 dnl ===================================================================
2931 AC_MSG_CHECKING([whether build target is Release Build])
2932 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2933     AC_MSG_RESULT([no])
2934     ENABLE_RELEASE_BUILD=
2935     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2936     dnl the newlines and then complains about spaces.
2937     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/>'
2938 else
2939     AC_MSG_RESULT([yes])
2940     ENABLE_RELEASE_BUILD=TRUE
2941     GET_TASK_ALLOW_ENTITLEMENT=
2943 AC_SUBST(ENABLE_RELEASE_BUILD)
2944 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2946 AC_MSG_CHECKING([whether to build a Community flavor])
2947 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2948     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2949     AC_MSG_RESULT([yes])
2950 else
2951     AC_MSG_RESULT([no])
2954 dnl ===================================================================
2955 dnl Test whether to sign Windows Build
2956 dnl ===================================================================
2957 AC_MSG_CHECKING([whether to sign windows build])
2958 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2959     AC_MSG_RESULT([yes])
2960     WINDOWS_BUILD_SIGNING="TRUE"
2961 else
2962     AC_MSG_RESULT([no])
2963     WINDOWS_BUILD_SIGNING="FALSE"
2965 AC_SUBST(WINDOWS_BUILD_SIGNING)
2967 dnl ===================================================================
2968 dnl MacOSX build and runtime environment options
2969 dnl ===================================================================
2971 AC_ARG_WITH(macosx-version-min-required,
2972     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2973         [set the minimum OS version needed to run the built LibreOffice])
2974     [
2975                           e. g.: --with-macosx-version-min-required=10.15
2976     ],
2979 dnl ===================================================================
2980 dnl Check for incompatible options set by fuzzing, and reset those
2981 dnl automatically to working combinations
2982 dnl ===================================================================
2984 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2985         "$enable_dbus" != "$enable_avahi"; then
2986     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2987     enable_avahi=$enable_dbus
2990 add_lopath_after ()
2992     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2993         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2994     fi
2997 add_lopath_before ()
2999     local IFS=${P_SEP}
3000     local path_cleanup
3001     local dir
3002     for dir in $LO_PATH ; do
3003         if test "$dir" != "$1" ; then
3004             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
3005         fi
3006     done
3007     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
3010 dnl ===================================================================
3011 dnl check for required programs (grep, awk, sed, bash)
3012 dnl ===================================================================
3014 pathmunge ()
3016     local new_path
3017     if test -n "$1"; then
3018         if test "$build_os" = "cygwin"; then
3019             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3020                 PathFormat "$1"
3021                 new_path=`cygpath -sm "$formatted_path"`
3022             else
3023                 PathFormat "$1"
3024                 new_path=`cygpath -u "$formatted_path"`
3025             fi
3026         else
3027             new_path="$1"
3028         fi
3029         if test "$2" = "after"; then
3030             add_lopath_after "$new_path"
3031         else
3032             add_lopath_before "$new_path"
3033         fi
3034     fi
3037 AC_PROG_AWK
3038 AC_PATH_PROG( AWK, $AWK)
3039 if test -z "$AWK"; then
3040     AC_MSG_ERROR([install awk to run this script])
3043 AC_PATH_PROG(BASH, bash)
3044 if test -z "$BASH"; then
3045     AC_MSG_ERROR([bash not found in \$PATH])
3047 AC_SUBST(BASH)
3049 # prefer parallel compression tools, if available
3050 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3051 if test -z "$COMPRESSIONTOOL"; then
3052     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3053     if test -z "$COMPRESSIONTOOL"; then
3054         AC_MSG_ERROR([gzip not found in \$PATH])
3055     fi
3057 AC_SUBST(COMPRESSIONTOOL)
3059 AC_MSG_CHECKING([for GNU or BSD tar])
3060 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3061     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3062     if test $? -eq 0;  then
3063         GNUTAR=$a
3064         break
3065     fi
3066 done
3067 AC_MSG_RESULT($GNUTAR)
3068 if test -z "$GNUTAR"; then
3069     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3071 AC_SUBST(GNUTAR)
3073 AC_MSG_CHECKING([for tar's option to strip components])
3074 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3075 if test $? -eq 0; then
3076     STRIP_COMPONENTS="--strip-components"
3077 else
3078     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3079     if test $? -eq 0; then
3080         STRIP_COMPONENTS="--strip-path"
3081     else
3082         STRIP_COMPONENTS="unsupported"
3083     fi
3085 AC_MSG_RESULT($STRIP_COMPONENTS)
3086 if test x$STRIP_COMPONENTS = xunsupported; then
3087     AC_MSG_ERROR([you need a tar that is able to strip components.])
3089 AC_SUBST(STRIP_COMPONENTS)
3091 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3092 dnl desktop OSes from "mobile" ones.
3094 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3095 dnl In other words, that when building for an OS that is not a
3096 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3098 dnl Note the direction of the implication; there is no assumption that
3099 dnl cross-compiling would imply a non-desktop OS.
3101 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3102     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3103     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3104     if test "$_os" != Emscripten; then
3105         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3106     fi
3109 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3110 # also work with the default gtk3 plugin.
3111 if test "$enable_wasm_strip" = "yes"; then
3112     enable_avmedia=no
3113     enable_libcmis=no
3114     enable_coinmp=no
3115     enable_cups=no
3116     test "$_os" = Emscripten && enable_curl=no
3117     enable_database_connectivity=no
3118     enable_dbus=no
3119     enable_dconf=no
3120     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3121     enable_extension_integration=no
3122     enable_extensions=no
3123     enable_extension_update=no
3124     enable_gio=no
3125     enable_gpgmepp=no
3126     enable_ldap=no
3127     enable_lotuswordpro=no
3128     enable_lpsolve=no
3129     enable_nss=no
3130     enable_odk=no
3131     enable_online_update=no
3132     enable_opencl=no
3133     enable_pdfimport=no
3134     enable_randr=no
3135     enable_report_builder=no
3136     enable_scripting=no
3137     enable_sdremote_bluetooth=no
3138     enable_skia=no
3139     enable_xmlhelp=no
3140     enable_zxing=no
3141     test_libepubgen=no
3142     test_libcdr=no
3143     test_libcmis=no
3144     test_libetonyek=no
3145     test_libfreehand=no
3146     test_libmspub=no
3147     test_libpagemaker=no
3148     test_libqxp=no
3149     test_libvisio=no
3150     test_libzmf=no
3151     test_webdav=no
3152     with_galleries=no
3153     with_templates=no
3154     with_webdav=no
3155     with_x=no
3157     test "${with_fonts+set}" = set || with_fonts=yes
3158     test "${with_locales+set}" = set || with_locales=en
3160     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3161     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3162     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3163     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3164 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3165     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3166     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3167     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3168     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3169 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3170     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3171     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3172     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3173     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3174     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3175     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3176     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3177     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3180 EMSCRIPTEN_NEH_MAJOR=3
3181 EMSCRIPTEN_NEH_MINOR=1
3182 EMSCRIPTEN_NEH_TINY=3
3183 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3185 if test "$enable_wasm_exceptions" = yes; then
3186     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3187     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3188     if test $? -ne 0; then
3189         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3190     else
3191         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3192     fi
3193     ENABLE_WASM_EXCEPTIONS=TRUE
3195 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3197 # Whether to build "avmedia" functionality or not.
3199 if test "$enable_avmedia" = yes; then
3200     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3201     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3202 else
3203     test_gstreamer_1_0=no
3206 # Decide whether to build database connectivity stuff (including Base) or not.
3207 if test "$enable_database_connectivity" != no; then
3208     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3209     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3210 else
3211     if test "$_os" = iOS; then
3212         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3213     fi
3214     disable_database_connectivity_dependencies
3217 if test -z "$enable_extensions"; then
3218     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3219     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3220         enable_extensions=yes
3221     fi
3224 DISABLE_SCRIPTING=''
3225 if test "$enable_scripting" = yes; then
3226     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3227     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3228 else
3229     DISABLE_SCRIPTING='TRUE'
3230     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3233 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3234     # Disable dynamic_loading always for iOS and Android
3235     enable_dynamic_loading=no
3236 elif test -z "$enable_dynamic_loading"; then
3237     # Otherwise enable it unless specifically disabled
3238     enable_dynamic_loading=yes
3241 DISABLE_DYNLOADING=''
3242 if test "$enable_dynamic_loading" = yes; then
3243     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3244 else
3245     DISABLE_DYNLOADING='TRUE'
3246     if test $_os != iOS -a $_os != Android; then
3247         enable_database_connectivity=no
3248         enable_nss=no
3249         enable_odk=no
3250         enable_python=no
3251         enable_skia=no
3252         with_java=no
3253     fi
3255 AC_SUBST(DISABLE_DYNLOADING)
3257 ENABLE_CUSTOMTARGET_COMPONENTS=
3258 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3259     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3260     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3261         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3262     fi
3264 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3266 if test "$enable_extensions" = yes; then
3267     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3268     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3269 else
3270     enable_extension_integration=no
3271     enable_extension_update=no
3274 # remember SYSBASE value
3275 AC_SUBST(SYSBASE)
3277 dnl ===================================================================
3278 dnl  Sort out various gallery compilation options
3279 dnl ===================================================================
3280 WITH_GALLERY_BUILD=TRUE
3281 AC_MSG_CHECKING([how to build and package galleries])
3282 if test -n "${with_galleries}"; then
3283     if test "$with_galleries" = "build"; then
3284         if test "$enable_database_connectivity" = no; then
3285             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3286         fi
3287         AC_MSG_RESULT([build from source images internally])
3288     elif test "$with_galleries" = "no"; then
3289         WITH_GALLERY_BUILD=
3290         AC_MSG_RESULT([disable non-internal gallery build])
3291     else
3292         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3293     fi
3294 else
3295     if test $_os != iOS -a $_os != Android; then
3296         AC_MSG_RESULT([internal src images for desktop])
3297     else
3298         WITH_GALLERY_BUILD=
3299         AC_MSG_RESULT([disable src image build])
3300     fi
3302 AC_SUBST(WITH_GALLERY_BUILD)
3304 dnl ===================================================================
3305 dnl  Sort out various templates compilation options
3306 dnl ===================================================================
3307 WITH_TEMPLATES=TRUE
3308 AC_MSG_CHECKING([build with or without template files])
3309 if test -n "${with_templates}"; then
3310     if test "$with_templates" = "yes"; then
3311         AC_MSG_RESULT([enable all templates])
3312     elif test "$with_templates" = "no"; then
3313         WITH_TEMPLATES=
3314         AC_MSG_RESULT([disable non-internal templates])
3315     else
3316         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3317     fi
3318 else
3319     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3320         AC_MSG_RESULT([enable all templates])
3321     else
3322         WITH_TEMPLATES=
3323         AC_MSG_RESULT([disable non-internal templates])
3324     fi
3326 AC_SUBST(WITH_TEMPLATES)
3328 dnl ===================================================================
3329 dnl  Checks if ccache is available
3330 dnl ===================================================================
3331 CCACHE_DEPEND_MODE=
3332 if test "$enable_ccache" = "no"; then
3333     CCACHE=""
3334 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3335     case "%$CC%$CXX%" in
3336     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3337     # assume that's good then
3338     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3339         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3340         CCACHE_DEPEND_MODE=1
3341         ;;
3342     *)
3343         # try to use our own ccache if it is available and CCACHE was not already defined
3344         if test -z "$CCACHE"; then
3345             if test "$_os" = "WINNT"; then
3346                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3347             fi
3348             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3349                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3350             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3351                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3352             fi
3353         fi
3354         AC_PATH_PROG([CCACHE],[ccache],[not found])
3355         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3356             CCACHE=`win_short_path_for_make "$CCACHE"`
3357             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3358             rm -f conftest.txt
3359             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3360             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3361             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3362                 AC_MSG_RESULT(yes)
3363             else
3364                 AC_MSG_RESULT(no)
3365                 CCACHE="not found"
3366             fi
3367             rm -f conftest.txt
3368         fi
3369         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3370             # on windows/VC perhaps sccache is around?
3371             case "%$CC%$CXX%" in
3372             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3373             # assume that's good then
3374             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3375                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3376                 CCACHE_DEPEND_MODE=1
3377                 SCCACHE=1
3378                 ;;
3379             *)
3380                 # for sharing code below, reuse CCACHE env var
3381                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3382                 if test "$CCACHE" != "not found"; then
3383                     CCACHE=`win_short_path_for_make "$CCACHE"`
3384                     SCCACHE=1
3385                     CCACHE_DEPEND_MODE=1
3386                 fi
3387                 ;;
3388             esac
3389         fi
3390         if test "$CCACHE" = "not found"; then
3391             CCACHE=""
3392         fi
3393         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3394             CCACHE_DEPEND_MODE=1
3395             # Need to check for ccache version: otherwise prevents
3396             # caching of the results (like "-x objective-c++" for Mac)
3397             if test $_os = Darwin -o $_os = iOS; then
3398                 # Check ccache version
3399                 AC_MSG_CHECKING([whether version of ccache is suitable])
3400                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3401                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3402                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3403                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3404                 else
3405                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3406                     CCACHE=""
3407                     CCACHE_DEPEND_MODE=
3408                 fi
3409             fi
3410         fi
3411         if test "$enable_ccache" = yes && test -z "$CCACHE"; then
3412             AC_MSG_ERROR([No suitable ccache found])
3413         fi
3414         ;;
3415     esac
3416 else
3417     CCACHE=""
3419 if test "$enable_ccache" = "nodepend"; then
3420     CCACHE_DEPEND_MODE=""
3422 AC_SUBST(CCACHE_DEPEND_MODE)
3424 # sccache defaults are good enough
3425 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3426     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3427     # or (...) max_size = 20.0 G
3428     # -p works with both 4.2 and 4.4
3429     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3430     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3431     if test "$ccache_size" = ""; then
3432         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3433         if test "$ccache_size" = ""; then
3434             ccache_size=0
3435         fi
3436         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3437         if test $ccache_size -lt 1024; then
3438             CCACHE=""
3439             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3440             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3441         else
3442             # warn that ccache may be too small for debug build
3443             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3444             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3445         fi
3446     else
3447         if test $ccache_size -lt 5; then
3448             #warn that ccache may be too small for debug build
3449             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3450             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3451         fi
3452     fi
3455 ENABLE_Z7_DEBUG=
3456 if test "$enable_z7_debug" != no; then
3457     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3458         ENABLE_Z7_DEBUG=TRUE
3459     fi
3460 else
3461     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3462     add_warning "ccache will not work with --disable-z7-debug"
3464 AC_SUBST(ENABLE_Z7_DEBUG)
3466 dnl ===================================================================
3467 dnl  Checks for C compiler,
3468 dnl  The check for the C++ compiler is later on.
3469 dnl ===================================================================
3470 if test "$_os" != "WINNT"; then
3471     GCC_HOME_SET="true"
3472     AC_MSG_CHECKING([gcc home])
3473     if test -z "$with_gcc_home"; then
3474         if test "$enable_icecream" = "yes"; then
3475             if test -d "/usr/lib/icecc/bin"; then
3476                 GCC_HOME="/usr/lib/icecc/"
3477             elif test -d "/usr/libexec/icecc/bin"; then
3478                 GCC_HOME="/usr/libexec/icecc/"
3479             elif test -d "/opt/icecream/bin"; then
3480                 GCC_HOME="/opt/icecream/"
3481             else
3482                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3484             fi
3485         else
3486             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3487             GCC_HOME_SET="false"
3488         fi
3489     else
3490         GCC_HOME="$with_gcc_home"
3491     fi
3492     AC_MSG_RESULT($GCC_HOME)
3493     AC_SUBST(GCC_HOME)
3495     if test "$GCC_HOME_SET" = "true"; then
3496         if test -z "$CC"; then
3497             CC="$GCC_HOME/bin/gcc"
3498             CC_BASE="gcc"
3499         fi
3500         if test -z "$CXX"; then
3501             CXX="$GCC_HOME/bin/g++"
3502             CXX_BASE="g++"
3503         fi
3504     fi
3507 COMPATH=`dirname "$CC"`
3508 if test "$COMPATH" = "."; then
3509     AC_PATH_PROGS(COMPATH, $CC)
3510     dnl double square bracket to get single because of M4 quote...
3511     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3513 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3515 dnl ===================================================================
3516 dnl Java support
3517 dnl ===================================================================
3518 AC_MSG_CHECKING([whether to build with Java support])
3519 if test "$with_java" != "no"; then
3520     if test "$DISABLE_SCRIPTING" = TRUE; then
3521         AC_MSG_RESULT([no, overridden by --disable-scripting])
3522         ENABLE_JAVA=""
3523         with_java=no
3524     else
3525         AC_MSG_RESULT([yes])
3526         ENABLE_JAVA="TRUE"
3527         AC_DEFINE(HAVE_FEATURE_JAVA)
3528     fi
3529 else
3530     AC_MSG_RESULT([no])
3531     ENABLE_JAVA=""
3534 AC_SUBST(ENABLE_JAVA)
3536 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3538 dnl ENABLE_JAVA="" indicate no Java support at all
3540 dnl ===================================================================
3541 dnl Check macOS SDK and compiler
3542 dnl ===================================================================
3544 if test $_os = Darwin; then
3546     # The SDK in the currently selected Xcode should be found.
3548     AC_MSG_CHECKING([what macOS SDK to use])
3549     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3550     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3551     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3552     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3553     # problems that existed in the PPC days with target versions not being respected or random
3554     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3555     # SDK version is enough, no need to do both...
3556     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3557     if test ! -d "$MACOSX_SDK_PATH"; then
3558         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3559     fi
3560     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3561     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3562     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3563     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3564     # 10.10.2 is 101002
3565     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3566     # correct version in case such an old SDK is specified, it will be rejected later anyway
3567     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3568     if test $MACOSX_SDK_VERSION -lt 101500; then
3569         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3570     fi
3571     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3572         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3573     fi
3574     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3576     AC_MSG_CHECKING([what minimum version of macOS to require])
3577     if test "$with_macosx_version_min_required" = "" ; then
3578         if test "$host_cpu" = x86_64; then
3579             with_macosx_version_min_required="10.15";
3580         else
3581             with_macosx_version_min_required="11.0";
3582         fi
3583     fi
3584     # see same notes about MACOSX_SDK_VERSION above
3585     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3586     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3587         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3588     fi
3589     AC_MSG_RESULT([$with_macosx_version_min_required])
3591     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3592     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3593         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3594     else
3595         AC_MSG_RESULT([yes])
3596     fi
3598     # export this so that "xcrun" invocations later return matching values
3599     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3600     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3601     export DEVELOPER_DIR
3602     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3603     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3605     AC_MSG_CHECKING([whether Xcode is new enough])
3606     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3607     my_xcode_ver2=${my_xcode_ver1#Xcode }
3608     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3609     if test "$my_xcode_ver3" -ge 1205; then
3610         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3611         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3612             if test "$my_xcode_ver3" -ge 1600; then
3613                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3614                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3615                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3616             fi
3617             if test "$my_xcode_ver3" -ge 1500; then
3618                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3619                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3620                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3621                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3622                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3623                 x_LDFLAGS=
3624             fi
3625         fi
3626     else
3627         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3628     fi
3630     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3631     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3633     LIBTOOL=/usr/bin/libtool
3634     INSTALL_NAME_TOOL=install_name_tool
3635     if test -z "$save_CC"; then
3636         stdlib=-stdlib=libc++
3638         AC_MSG_CHECKING([what C compiler to use])
3639         CC="`xcrun -find clang`"
3640         CC_BASE=`first_arg_basename "$CC"`
3641         if test "$host_cpu" = x86_64; then
3642             CC+=" -target x86_64-apple-macos"
3643         else
3644             CC+=" -target arm64-apple-macos"
3645         fi
3646         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3647         AC_MSG_RESULT([$CC])
3649         AC_MSG_CHECKING([what C++ compiler to use])
3650         CXX="`xcrun -find clang++`"
3651         CXX_BASE=`first_arg_basename "$CXX"`
3652         if test "$host_cpu" = x86_64; then
3653             CXX+=" -target x86_64-apple-macos"
3654         else
3655             CXX+=" -target arm64-apple-macos"
3656         fi
3657         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3658         AC_MSG_RESULT([$CXX])
3660         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3661         AR=`xcrun -find ar`
3662         NM=`xcrun -find nm`
3663         STRIP=`xcrun -find strip`
3664         LIBTOOL=`xcrun -find libtool`
3665         RANLIB=`xcrun -find ranlib`
3666     fi
3668     AC_MSG_CHECKING([whether to do code signing])
3670     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3671         AC_MSG_RESULT([no])
3672     else
3673         if test "$enable_macosx_code_signing" = yes; then
3674             # By default use the first suitable certificate (?).
3676             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3677             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3678             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3679             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3680             # "Developer ID Application" one.
3681             identity="Developer ID Application:"
3682         else
3683             identity=$enable_macosx_code_signing
3684         fi
3685         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3686         if test -n "$identity"; then
3687             MACOSX_CODESIGNING_IDENTITY=$identity
3688             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3689             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3690         else
3691             AC_MSG_ERROR([cannot determine identity to use])
3692         fi
3693     fi
3695     AC_MSG_CHECKING([whether to create a Mac App Store package])
3697     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3698         AC_MSG_RESULT([no])
3699     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3700         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3701     else
3702         if test "$enable_macosx_package_signing" = yes; then
3703             # By default use the first suitable certificate.
3704             # It should be a "3rd Party Mac Developer Installer" one
3705             identity="3rd Party Mac Developer Installer:"
3706         else
3707             identity=$enable_macosx_package_signing
3708         fi
3709         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3710         if test -n "$identity"; then
3711             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3712             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3713             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3714         else
3715             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3716         fi
3717     fi
3719     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3720         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3721     fi
3723     AC_MSG_CHECKING([whether to sandbox the application])
3725     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3726         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3727     elif test "$enable_macosx_sandbox" = yes; then
3728         ENABLE_MACOSX_SANDBOX=TRUE
3729         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3730         AC_MSG_RESULT([yes])
3731     else
3732         AC_MSG_RESULT([no])
3733     fi
3735     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3736     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3737     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3739     if test -n "$with_macosx_provisioning_profile" ; then
3740         if test ! -f "$with_macosx_provisioning_profile"; then
3741             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3742         else
3743             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3744             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3745                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3746                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3747                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3748         fi
3749     fi
3751 AC_SUBST(MACOSX_SDK_PATH)
3752 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3753 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3754 AC_SUBST(INSTALL_NAME_TOOL)
3755 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3756 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3757 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3758 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3759 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3760 AC_SUBST(MACOSX_PROVISIONING_INFO)
3761 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3762 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3763 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3765 dnl ===================================================================
3766 dnl Check iOS SDK and compiler
3767 dnl ===================================================================
3769 if test $_os = iOS; then
3770     AC_MSG_CHECKING([what iOS SDK to use])
3772     if test "$enable_ios_simulator" = "yes"; then
3773         platformlc=iphonesimulator
3774         versionmin=-mios-simulator-version-min=14.5
3775     else
3776         platformlc=iphoneos
3777         versionmin=-miphoneos-version-min=14.5
3778     fi
3780     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3782     if ! test -d "$sysroot"; then
3783         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3784     fi
3786     AC_MSG_RESULT($sysroot)
3788     stdlib="-stdlib=libc++"
3790     AC_MSG_CHECKING([what C compiler to use])
3791     CC="`xcrun -find clang`"
3792     CC_BASE=`first_arg_basename "$CC"`
3793     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3794     AC_MSG_RESULT([$CC])
3796     AC_MSG_CHECKING([what C++ compiler to use])
3797     CXX="`xcrun -find clang++`"
3798     CXX_BASE=`first_arg_basename "$CXX"`
3799     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3800     AC_MSG_RESULT([$CXX])
3802     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3803     AR=`xcrun -find ar`
3804     NM=`xcrun -find nm`
3805     STRIP=`xcrun -find strip`
3806     LIBTOOL=`xcrun -find libtool`
3807     RANLIB=`xcrun -find ranlib`
3810 AC_MSG_CHECKING([whether to treat the installation as read-only])
3812 if test $_os = Darwin; then
3813     enable_readonly_installset=yes
3814 elif test "$enable_extensions" != yes; then
3815     enable_readonly_installset=yes
3817 if test "$enable_readonly_installset" = yes; then
3818     AC_MSG_RESULT([yes])
3819     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3820 else
3821     AC_MSG_RESULT([no])
3824 dnl ===================================================================
3825 dnl Structure of install set
3826 dnl ===================================================================
3828 if test $_os = Darwin; then
3829     LIBO_BIN_FOLDER=MacOS
3830     LIBO_ETC_FOLDER=Resources
3831     LIBO_LIBEXEC_FOLDER=MacOS
3832     LIBO_LIB_FOLDER=Frameworks
3833     LIBO_LIB_PYUNO_FOLDER=Resources
3834     LIBO_SHARE_FOLDER=Resources
3835     LIBO_SHARE_HELP_FOLDER=Resources/help
3836     LIBO_SHARE_JAVA_FOLDER=Resources/java
3837     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3838     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3839     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3840     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3841     LIBO_URE_BIN_FOLDER=MacOS
3842     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3843     LIBO_URE_LIB_FOLDER=Frameworks
3844     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3845     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3846 elif test $_os = WINNT; then
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     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3858     LIBO_SHARE_SHELL_FOLDER=program/shell
3859     LIBO_URE_BIN_FOLDER=program
3860     LIBO_URE_ETC_FOLDER=program
3861     LIBO_URE_LIB_FOLDER=program
3862     LIBO_URE_MISC_FOLDER=program
3863     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3864 else
3865     LIBO_BIN_FOLDER=program
3866     LIBO_ETC_FOLDER=program
3867     LIBO_LIBEXEC_FOLDER=program
3868     LIBO_LIB_FOLDER=program
3869     LIBO_LIB_PYUNO_FOLDER=program
3870     LIBO_SHARE_FOLDER=share
3871     LIBO_SHARE_HELP_FOLDER=help
3872     LIBO_SHARE_JAVA_FOLDER=program/classes
3873     LIBO_SHARE_PRESETS_FOLDER=presets
3874     LIBO_SHARE_READMES_FOLDER=readmes
3875     if test "$enable_fuzzers" != yes; then
3876         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3877     else
3878         LIBO_SHARE_RESOURCE_FOLDER=resource
3879     fi
3880     LIBO_SHARE_SHELL_FOLDER=program/shell
3881     LIBO_URE_BIN_FOLDER=program
3882     LIBO_URE_ETC_FOLDER=program
3883     LIBO_URE_LIB_FOLDER=program
3884     LIBO_URE_MISC_FOLDER=program
3885     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3887 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3888 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3889 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3890 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3891 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3892 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3893 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3894 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3895 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3896 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3897 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3898 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3899 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3900 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3901 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3902 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3904 # Not all of them needed in config_host.mk, add more if need arises
3905 AC_SUBST(LIBO_BIN_FOLDER)
3906 AC_SUBST(LIBO_ETC_FOLDER)
3907 AC_SUBST(LIBO_LIB_FOLDER)
3908 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3909 AC_SUBST(LIBO_SHARE_FOLDER)
3910 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3911 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3912 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3913 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3914 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3915 AC_SUBST(LIBO_URE_BIN_FOLDER)
3916 AC_SUBST(LIBO_URE_ETC_FOLDER)
3917 AC_SUBST(LIBO_URE_LIB_FOLDER)
3918 AC_SUBST(LIBO_URE_MISC_FOLDER)
3919 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3921 dnl ===================================================================
3922 dnl Windows specific tests and stuff
3923 dnl ===================================================================
3925 reg_get_value()
3927     # Return value: $regvalue
3928     unset regvalue
3930     if test "$build_os" = "wsl"; then
3931         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3932         return
3933     fi
3935     local _regentry="/proc/registry${1}/${2}"
3936     if test -f "$_regentry"; then
3937         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3938         # Registry keys read via /proc/registry* are always \0 terminated!
3939         local _regvalue=$(tr -d '\0' < "$_regentry")
3940         if test $? -eq 0; then
3941             regvalue=$_regvalue
3942         fi
3943     fi
3946 # Get a value from the 32-bit side of the Registry
3947 reg_get_value_32()
3949     reg_get_value "32" "$1"
3952 # Get a value from the 64-bit side of the Registry
3953 reg_get_value_64()
3955     reg_get_value "64" "$1"
3958 reg_list_values()
3960     # Return value: $reglist
3961     unset reglist
3963     if test "$build_os" = "wsl"; then
3964         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3965         return
3966     fi
3968     reglist=$(ls "/proc/registry${1}/${2}")
3971 # List values from the 32-bit side of the Registry
3972 reg_list_values_32()
3974     reg_list_values "32" "$1"
3977 # List values from the 64-bit side of the Registry
3978 reg_list_values_64()
3980     reg_list_values "64" "$1"
3983 case "$host_os" in
3984 cygwin*|wsl*)
3985     COM=MSC
3986     OS=WNT
3987     RTL_OS=Windows
3988     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3989         P_SEP=";"
3990     else
3991         P_SEP=:
3992     fi
3993     case "$host_cpu" in
3994     x86_64)
3995         CPUNAME=X86_64
3996         RTL_ARCH=X86_64
3997         PLATFORMID=windows_x86_64
3998         WINDOWS_X64=1
3999         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4000         WIN_HOST_ARCH="x64"
4001         WIN_MULTI_ARCH="x86"
4002         WIN_HOST_BITS=64
4003         ;;
4004     i*86)
4005         CPUNAME=INTEL
4006         RTL_ARCH=x86
4007         PLATFORMID=windows_x86
4008         WIN_HOST_ARCH="x86"
4009         WIN_HOST_BITS=32
4010         WIN_OTHER_ARCH="x64"
4011         ;;
4012     aarch64)
4013         CPUNAME=AARCH64
4014         RTL_ARCH=AARCH64
4015         PLATFORMID=windows_aarch64
4016         WINDOWS_X64=1
4017         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4018         WIN_HOST_ARCH="arm64"
4019         WIN_HOST_BITS=64
4020         with_ucrt_dir=no
4021         ;;
4022     *)
4023         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4024         ;;
4025     esac
4027     case "$build_cpu" in
4028     x86_64) WIN_BUILD_ARCH="x64" ;;
4029     i*86) WIN_BUILD_ARCH="x86" ;;
4030     aarch64) WIN_BUILD_ARCH="arm64" ;;
4031     *)
4032         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4033         ;;
4034     esac
4036     SCPDEFS="$SCPDEFS -D_MSC_VER"
4037     ;;
4038 esac
4040 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4041 # other-arch won't, but wouldn't break the build (x64 on x86).
4042 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4043     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4047 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4048     # To allow building Windows multi-arch releases without cross-tooling
4049     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4050         cross_compiling="yes"
4051     fi
4054 if test "$cross_compiling" = "yes"; then
4055     export CROSS_COMPILING=TRUE
4056     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4057         ENABLE_WASM_STRIP=TRUE
4058     fi
4059     if test "$_os" = "Emscripten"; then
4060         if test "$with_main_module" = "calc"; then
4061             ENABLE_WASM_STRIP_WRITER=TRUE
4062         elif test "$with_main_module" = "writer"; then
4063             ENABLE_WASM_STRIP_CALC=TRUE
4064         fi
4065     fi
4066 else
4067     CROSS_COMPILING=
4068     BUILD_TYPE="$BUILD_TYPE NATIVE"
4070 AC_SUBST(CROSS_COMPILING)
4071 AC_SUBST(ENABLE_WASM_STRIP)
4072 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4073 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4075 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4076 # NOTE: must _not_ be used for bundled external libraries!
4077 ISYSTEM=
4078 if test "$GCC" = "yes"; then
4079     AC_MSG_CHECKING( for -isystem )
4080     save_CFLAGS=$CFLAGS
4081     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4082     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4083     CFLAGS=$save_CFLAGS
4084     if test -n "$ISYSTEM"; then
4085         AC_MSG_RESULT(yes)
4086     else
4087         AC_MSG_RESULT(no)
4088     fi
4090 if test -z "$ISYSTEM"; then
4091     # fall back to using -I
4092     ISYSTEM=-I
4094 AC_SUBST(ISYSTEM)
4096 dnl ===================================================================
4097 dnl  Check which Visual Studio compiler is used
4098 dnl ===================================================================
4100 map_vs_year_to_version()
4102     # Return value: $vsversion
4104     unset vsversion
4106     case $1 in
4107     2019)
4108         vsversion=16;;
4109     2022)
4110         vsversion=17;;
4111     2022preview)
4112         vsversion=17.9;;
4113     *)
4114         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4115     esac
4118 vs_versions_to_check()
4120     # Args: $1 (optional) : versions to check, in the order of preference
4121     # Return value: $vsversions
4123     unset vsversions
4125     if test -n "$1"; then
4126         map_vs_year_to_version "$1"
4127         vsversions=$vsversion
4128     else
4129         # Default version is 2019
4130         vsversions="16"
4131     fi
4134 win_get_env_from_vsdevcmdbat()
4136     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4137     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4138     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4139     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4140     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4141     local result
4142     if test "$build_os" = "wsl"; then
4143         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4144     else
4145         chmod +x $WRAPPERBATCHFILEPATH
4146         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4147     fi
4148     rm -f $WRAPPERBATCHFILEPATH
4149     printf '%s' "$result"
4152 find_ucrt()
4154     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4155     if test -n "$regvalue"; then
4156         PathFormat "$regvalue"
4157         UCRTSDKDIR=$formatted_path_unix
4158         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4159         UCRTVERSION=$regvalue
4160         # Rest if not exist
4161         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4162           UCRTSDKDIR=
4163         fi
4164     fi
4165     if test -z "$UCRTSDKDIR"; then
4166         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4167         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4168         if test -f "$ide_env_file"; then
4169             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4170             UCRTSDKDIR=$formatted_path
4171             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4172             dnl Hack needed at least by tml:
4173             if test "$UCRTVERSION" = 10.0.15063.0 \
4174                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4175                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4176             then
4177                 UCRTVERSION=10.0.14393.0
4178             fi
4179         else
4180           AC_MSG_ERROR([No UCRT found])
4181         fi
4182     fi
4185 find_msvc()
4187     # Find Visual C++
4188     # Args: $1 (optional) : The VS version year
4189     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4191     unset vctest vctoolset vcnumwithdot vcbuildnumber
4193     vs_versions_to_check "$1"
4194     if test "$build_os" = wsl; then
4195         vswhere="$PROGRAMFILESX86"
4196         if test -z "$vswhere"; then
4197             vswhere="c:\\Program Files (x86)"
4198         fi
4199     else
4200         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4201     fi
4202     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4203     PathFormat "$vswhere"
4204     vswhere=$formatted_path_unix
4205     for ver in $vsversions; do
4206         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4207         if test -z "$vswhereoutput"; then
4208             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4209         fi
4210         # Fall back to all MS products (this includes VC++ Build Tools)
4211         if ! test -n "$vswhereoutput"; then
4212             AC_MSG_CHECKING([VC++ Build Tools and similar])
4213             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4214         fi
4215         if test -n "$vswhereoutput"; then
4216             PathFormat "$vswhereoutput"
4217             vctest=$formatted_path_unix
4218             break
4219         fi
4220     done
4222     if test -n "$vctest"; then
4223         vcnumwithdot="$ver"
4224         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4225             vcnumwithdot=$vcnumwithdot.0
4226         fi
4227         case "$vcnumwithdot" in
4228         16.0)
4229             vcyear=2019
4230             vctoolset=v142
4231             ;;
4232         17.0 | 17.9)
4233             vcyear=2022
4234             vctoolset=v143
4235             ;;
4236         esac
4237         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4239     fi
4242 test_cl_exe()
4244     AC_MSG_CHECKING([$1 compiler])
4246     CL_EXE_PATH="$2/cl.exe"
4248     if test ! -f "$CL_EXE_PATH"; then
4249         if test "$1" = "multi-arch"; then
4250             AC_MSG_WARN([no compiler (cl.exe) in $2])
4251             return 1
4252         else
4253             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4254         fi
4255     fi
4257     dnl ===========================================================
4258     dnl  Check for the corresponding mspdb*.dll
4259     dnl ===========================================================
4261     # MSVC 15.0 has libraries from 14.0?
4262     mspdbnum="140"
4264     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4265         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4266     fi
4268     # The compiles has to find its shared libraries
4269     OLD_PATH="$PATH"
4270     TEMP_PATH=`cygpath -d "$2"`
4271     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4273     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4274         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4275     fi
4277     PATH="$OLD_PATH"
4279     AC_MSG_RESULT([$CL_EXE_PATH])
4282 SOLARINC=
4283 MSBUILD_PATH=
4284 DEVENV=
4285 if test "$_os" = "WINNT"; then
4286     AC_MSG_CHECKING([Visual C++])
4287     find_msvc "$with_visual_studio"
4288     if test -z "$vctest"; then
4289         if test -n "$with_visual_studio"; then
4290             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4291         else
4292             AC_MSG_ERROR([no Visual Studio installation found])
4293         fi
4294     fi
4295     AC_MSG_RESULT([])
4297     VC_PRODUCT_DIR="$vctest/VC"
4298     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4300     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4301     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4302         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4303         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4304         if test $? -ne 0; then
4305             WIN_MULTI_ARCH=""
4306             WIN_OTHER_ARCH=""
4307         fi
4308     fi
4310     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4311         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4312         test_cl_exe "build" "$MSVC_BUILD_PATH"
4313     fi
4315     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4316         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4317         test_cl_exe "host" "$MSVC_HOST_PATH"
4318     else
4319         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4320     fi
4322     AC_MSG_CHECKING([for short pathname of VC product directory])
4323     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4324     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4326     UCRTSDKDIR=
4327     UCRTVERSION=
4329     AC_MSG_CHECKING([for UCRT location])
4330     find_ucrt
4331     # find_ucrt errors out if it doesn't find it
4332     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4333     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4334     ucrtincpath_formatted=$formatted_path
4335     # SOLARINC is used for external modules and must be set too.
4336     # And no, it's not sufficient to set SOLARINC only, as configure
4337     # itself doesn't honour it.
4338     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4339     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4340     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4341     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4343     AC_SUBST(UCRTSDKDIR)
4344     AC_SUBST(UCRTVERSION)
4346     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4347     # Find the proper version of MSBuild.exe to use based on the VS version
4348     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4349     if test -z "$regvalue" ; then
4350         if test "$WIN_BUILD_ARCH" != "x64"; then
4351             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4352         else
4353             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4354         fi
4355     fi
4356     if test -d "$regvalue" ; then
4357         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4358         AC_MSG_RESULT([$regvalue])
4359     else
4360         AC_MSG_ERROR([MSBuild.exe location not found])
4361     fi
4363     # Find the version of devenv.exe
4364     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4365     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4366     DEVENV_unix=$(cygpath -u "$DEVENV")
4367     if test ! -e "$DEVENV_unix"; then
4368         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4369     fi
4371     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4372     dnl needed when building CLR code:
4373     if test -z "$MSVC_CXX"; then
4374         # This gives us a posix path with 8.3 filename restrictions
4375         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4376     fi
4378     if test -z "$CC"; then
4379         CC=$MSVC_CXX
4380         CC_BASE=`first_arg_basename "$CC"`
4381     fi
4382     if test -z "$CXX"; then
4383         CXX=$MSVC_CXX
4384         CXX_BASE=`first_arg_basename "$CXX"`
4385     fi
4387     if test -n "$CC"; then
4388         # Remove /cl.exe from CC case insensitive
4389         AC_MSG_NOTICE([found Visual C++ $vcyear])
4391         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4392         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4394         PathFormat "$COMPATH"
4395         COMPATH=`win_short_path_for_make "$formatted_path"`
4397         VCVER=$vcnumwithdot
4398         VCTOOLSET=$vctoolset
4400         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4401         # are always "better", we list them in reverse chronological order.
4403         case "$vcnumwithdot" in
4404         16.0 | 17.0 | 17.9)
4405             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4406             ;;
4407         esac
4409         # The expectation is that --with-windows-sdk should not need to be used
4410         if test -n "$with_windows_sdk"; then
4411             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4412             *" "$with_windows_sdk" "*)
4413                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4414                 ;;
4415             *)
4416                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4417                 ;;
4418             esac
4419         fi
4421         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4422         ac_objext=obj
4423         ac_exeext=exe
4425     else
4426         AC_MSG_ERROR([Visual C++ not found after all, huh])
4427     fi
4429     # ERROR if VS version < 16.5
4430     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4431     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4432         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4433         // between Visual Studio versions and _MSC_VER:
4434         #if _MSC_VER < 1925
4435         #error
4436         #endif
4437     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4439     # WARN if VS version < 16.10
4440     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4441     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4442         #if _MSC_VER < 1929
4443         #error
4444         #endif
4445     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4447     if test $vs2019_recommended_version = yes; then
4448         AC_MSG_RESULT([yes])
4449     else
4450         AC_MSG_WARN([no])
4451         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."
4452     fi
4454     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4455     # version of the Explorer extension (and maybe other small
4456     # bits, too) needed when installing a 32-bit LibreOffice on a
4457     # 64-bit OS. The 64-bit Explorer extension is a feature that
4458     # has been present since long in OOo. Don't confuse it with
4459     # building LibreOffice itself as 64-bit code.
4461     BUILD_X64=
4462     CXX_X64_BINARY=
4464     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4465         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4466         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4467              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4468         then
4469             BUILD_X64=TRUE
4470             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4471             AC_MSG_RESULT([found])
4472         else
4473             AC_MSG_RESULT([not found])
4474             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4475         fi
4476     elif test "$WIN_HOST_ARCH" = "x64"; then
4477         CXX_X64_BINARY=$CXX
4478     fi
4479     AC_SUBST(BUILD_X64)
4481     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4482     AC_SUBST(CXX_X64_BINARY)
4484     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4485     # needed to support TWAIN scan on both 32- and 64-bit systems
4487     case "$WIN_HOST_ARCH" in
4488     x64)
4489         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4490         if test -n "$CXX_X86_BINARY"; then
4491             BUILD_X86=TRUE
4492             AC_MSG_RESULT([preset])
4493         elif test -n "$WIN_MULTI_ARCH"; then
4494             BUILD_X86=TRUE
4495             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4496             AC_MSG_RESULT([found])
4497         else
4498             AC_MSG_RESULT([not found])
4499             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4500         fi
4501         ;;
4502     x86)
4503         BUILD_X86=TRUE
4504         CXX_X86_BINARY=$MSVC_CXX
4505         ;;
4506     esac
4507     AC_SUBST(BUILD_X86)
4508     AC_SUBST(CXX_X86_BINARY)
4510 AC_SUBST(VCVER)
4511 AC_SUBST(VCTOOLSET)
4512 AC_SUBST(DEVENV)
4513 AC_SUBST(MSVC_CXX)
4515 COM_IS_CLANG=
4516 AC_MSG_CHECKING([whether the compiler is actually Clang])
4517 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4518     #ifndef __clang__
4519     you lose
4520     #endif
4521     int foo=42;
4522     ]])],
4523     [AC_MSG_RESULT([yes])
4524      COM_IS_CLANG=TRUE],
4525     [AC_MSG_RESULT([no])])
4526 AC_SUBST(COM_IS_CLANG)
4528 CLANGVER=
4529 if test "$COM_IS_CLANG" = TRUE; then
4530     AC_MSG_CHECKING([whether Clang is new enough])
4531     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4532         #if !defined __apple_build_version__
4533         #error
4534         #endif
4535         ]])],
4536         [my_apple_clang=yes],[my_apple_clang=])
4537     if test "$my_apple_clang" = yes; then
4538         AC_MSG_RESULT([assumed yes (Apple Clang)])
4539     elif test "$_os" = Emscripten; then
4540         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4541     else
4542         if test "$_os" = WINNT; then
4543             dnl In which case, assume clang-cl:
4544             my_args="/EP /TC"
4545         else
4546             my_args="-E -P"
4547         fi
4548         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4549         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4550         CLANGVER=`echo $clang_version \
4551             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4552         if test "$CLANGVER" -ge 120000; then
4553             AC_MSG_RESULT([yes ($clang_version)])
4554         else
4555             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4556         fi
4557         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4558         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4559     fi
4562 SHOWINCLUDES_PREFIX=
4563 if test "$_os" = WINNT; then
4564     dnl We need to guess the prefix of the -showIncludes output, it can be
4565     dnl localized
4566     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4567     echo "#include <stdlib.h>" > conftest.c
4568     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4569         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4570     rm -f conftest.c conftest.obj
4571     if test -z "$SHOWINCLUDES_PREFIX"; then
4572         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4573     else
4574         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4575     fi
4577 AC_SUBST(SHOWINCLUDES_PREFIX)
4580 # prefix C with ccache if needed
4582 if test "$CCACHE" != ""; then
4583     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4585     AC_LANG_PUSH([C])
4586     save_CFLAGS=$CFLAGS
4587     CFLAGS="$CFLAGS --ccache-skip -O2"
4588     # msvc does not fail on unknown options, check stdout
4589     if test "$COM" = MSC; then
4590         CFLAGS="$CFLAGS -nologo"
4591     fi
4592     save_ac_c_werror_flag=$ac_c_werror_flag
4593     ac_c_werror_flag=yes
4594     dnl an empty program will do, we're checking the compiler flags
4595     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4596                       [use_ccache=yes], [use_ccache=no])
4597     CFLAGS=$save_CFLAGS
4598     ac_c_werror_flag=$save_ac_c_werror_flag
4599     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4600         AC_MSG_RESULT([yes])
4601     else
4602         CC="$CCACHE $CC"
4603         CC_BASE="ccache $CC_BASE"
4604         AC_MSG_RESULT([no])
4605     fi
4606     AC_LANG_POP([C])
4609 # ===================================================================
4610 # check various GCC options that Clang does not support now but maybe
4611 # will somewhen in the future, check them even for GCC, so that the
4612 # flags are set
4613 # ===================================================================
4615 HAVE_GCC_GGDB2=
4616 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4617     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4618     save_CFLAGS=$CFLAGS
4619     CFLAGS="$CFLAGS -Werror -ggdb2"
4620     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4621     CFLAGS=$save_CFLAGS
4622     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4623         AC_MSG_RESULT([yes])
4624     else
4625         AC_MSG_RESULT([no])
4626     fi
4628     if test "$host_cpu" = "m68k"; then
4629         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4630         save_CFLAGS=$CFLAGS
4631         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4632         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4633         CFLAGS=$save_CFLAGS
4634         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4635             AC_MSG_RESULT([yes])
4636         else
4637             AC_MSG_ERROR([no])
4638         fi
4639     fi
4641 AC_SUBST(HAVE_GCC_GGDB2)
4643 dnl ===================================================================
4644 dnl  Test the gcc version
4645 dnl ===================================================================
4646 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4647     AC_MSG_CHECKING([the GCC version])
4648     _gcc_version=`$CC -dumpfullversion`
4649     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4650         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4651     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4653     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4655     if test "$gcc_full_version" -lt 120000; then
4656         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4657     fi
4658 else
4659     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4660     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4661     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4662     # (which reports itself as GCC 4.2.1).
4663     GCC_VERSION=
4665 AC_SUBST(GCC_VERSION)
4667 dnl Set the ENABLE_DBGUTIL variable
4668 dnl ===================================================================
4669 AC_MSG_CHECKING([whether to build with additional debug utilities])
4670 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4671     ENABLE_DBGUTIL="TRUE"
4672     # this is an extra var so it can have different default on different MSVC
4673     # versions (in case there are version specific problems with it)
4674     MSVC_USE_DEBUG_RUNTIME="TRUE"
4676     AC_MSG_RESULT([yes])
4677     # cppunit and graphite expose STL in public headers
4678     if test "$with_system_cppunit" = "yes"; then
4679         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4680     else
4681         with_system_cppunit=no
4682     fi
4683     if test "$with_system_graphite" = "yes"; then
4684         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4685     else
4686         with_system_graphite=no
4687     fi
4688     if test "$with_system_orcus" = "yes"; then
4689         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4690     else
4691         with_system_orcus=no
4692     fi
4693     if test "$with_system_libcmis" = "yes"; then
4694         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4695     else
4696         with_system_libcmis=no
4697     fi
4698     if test "$with_system_hunspell" = "yes"; then
4699         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4700     else
4701         with_system_hunspell=no
4702     fi
4703     if test "$with_system_gpgmepp" = "yes"; then
4704         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4705     else
4706         with_system_gpgmepp=no
4707     fi
4708     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4709     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4710     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4711     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4712     # of those two is using the system variant:
4713     if test "$with_system_libnumbertext" = "yes"; then
4714         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4715     else
4716         with_system_libnumbertext=no
4717     fi
4718     if test "$with_system_libwps" = "yes"; then
4719         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4720     else
4721         with_system_libwps=no
4722     fi
4723 else
4724     ENABLE_DBGUTIL=""
4725     MSVC_USE_DEBUG_RUNTIME=""
4726     AC_MSG_RESULT([no])
4728 AC_SUBST(ENABLE_DBGUTIL)
4729 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4731 dnl Set the ENABLE_DEBUG variable.
4732 dnl ===================================================================
4733 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4734     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4736 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4737     if test -z "$libo_fuzzed_enable_debug"; then
4738         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4739     else
4740         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4741         enable_debug=yes
4742     fi
4745 AC_MSG_CHECKING([whether to do a debug build])
4746 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4747     ENABLE_DEBUG="TRUE"
4748     if test -n "$ENABLE_DBGUTIL" ; then
4749         AC_MSG_RESULT([yes (dbgutil)])
4750     else
4751         AC_MSG_RESULT([yes])
4752     fi
4753 else
4754     ENABLE_DEBUG=""
4755     AC_MSG_RESULT([no])
4757 AC_SUBST(ENABLE_DEBUG)
4759 dnl ===================================================================
4760 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4761 dnl This is done only after compiler checks (need to know if Clang is
4762 dnl used, for different defaults) and after checking if a debug build
4763 dnl is wanted (non-debug builds get the default linker if not explicitly
4764 dnl specified otherwise).
4765 dnl All checks for linker features/options should come after this.
4766 dnl ===================================================================
4767 check_use_ld()
4769     use_ld=-fuse-ld=${1%%:*}
4770     use_ld_path=${1#*:}
4771     if test "$use_ld_path" != "$1"; then
4772         if test "$COM_IS_CLANG" = TRUE; then
4773             if test "$CLANGVER" -ge 120000; then
4774                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4775             else
4776                 use_ld="-fuse-ld=${use_ld_path}"
4777             fi
4778         else
4779             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4780             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4781             # pickup the alternative linker, when called by libtool for linking.
4782             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4783             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4784         fi
4785     fi
4786     use_ld_fail_if_error=$2
4787     use_ld_ok=
4788     AC_MSG_CHECKING([for $use_ld linker support])
4789     use_ld_ldflags_save="$LDFLAGS"
4790     LDFLAGS="$LDFLAGS $use_ld"
4791     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4792 #include <stdio.h>
4793         ],[
4794 printf ("hello world\n");
4795         ])], USE_LD=$use_ld, [])
4796     if test -n "$USE_LD"; then
4797         AC_MSG_RESULT( yes )
4798         use_ld_ok=yes
4799     else
4800         if test -n "$use_ld_fail_if_error"; then
4801             AC_MSG_ERROR( no )
4802         else
4803             AC_MSG_RESULT( no )
4804         fi
4805     fi
4806     if test -n "$use_ld_ok"; then
4807         dnl keep the value of LDFLAGS
4808         return 0
4809     fi
4810     LDFLAGS="$use_ld_ldflags_save"
4811     return 1
4813 USE_LD=
4814 if test "$enable_ld" != "no"; then
4815     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4816         if test -n "$enable_ld"; then
4817             check_use_ld "$enable_ld" fail_if_error
4818         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4819             dnl non-debug builds default to the default linker
4820             true
4821         elif test -n "$COM_IS_CLANG"; then
4822             check_use_ld lld
4823             if test $? -ne 0; then
4824                 check_use_ld gold
4825                 if test $? -ne 0; then
4826                     check_use_ld mold
4827                 fi
4828             fi
4829         else
4830             # For gcc first try gold, new versions also support lld/mold.
4831             check_use_ld gold
4832             if test $? -ne 0; then
4833                 check_use_ld lld
4834                 if test $? -ne 0; then
4835                     check_use_ld mold
4836                 fi
4837             fi
4838         fi
4839         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4840         rm conftest.out
4841         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4842         if test -z "$ld_used"; then
4843             ld_used="unknown"
4844         fi
4845         AC_MSG_CHECKING([for linker that is used])
4846         AC_MSG_RESULT([$ld_used])
4847         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4848             if echo "$ld_used" | grep -q "^GNU ld"; then
4849                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4850                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4851             fi
4852         fi
4853     else
4854         if test "$enable_ld" = "yes"; then
4855             AC_MSG_ERROR([--enable-ld not supported])
4856         fi
4857     fi
4859 AC_SUBST(USE_LD)
4860 AC_SUBST(LD)
4862 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4863 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4864     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4865     bsymbolic_functions_ldflags_save=$LDFLAGS
4866     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4867     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4868 #include <stdio.h>
4869         ],[
4870 printf ("hello world\n");
4871         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4872     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4873         AC_MSG_RESULT( found )
4874     else
4875         AC_MSG_RESULT( not found )
4876     fi
4877     LDFLAGS=$bsymbolic_functions_ldflags_save
4879 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4881 LD_GC_SECTIONS=
4882 if test "$GCC" = "yes"; then
4883     for flag in "--gc-sections" "-dead_strip"; do
4884         AC_MSG_CHECKING([for $flag linker support])
4885         ldflags_save=$LDFLAGS
4886         LDFLAGS="$LDFLAGS -Wl,$flag"
4887         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4888 #include <stdio.h>
4889             ],[
4890 printf ("hello world\n");
4891             ])],[
4892             LD_GC_SECTIONS="-Wl,$flag"
4893             AC_MSG_RESULT( found )
4894             ], [
4895             AC_MSG_RESULT( not found )
4896             ])
4897         LDFLAGS=$ldflags_save
4898         if test -n "$LD_GC_SECTIONS"; then
4899             break
4900         fi
4901     done
4903 AC_SUBST(LD_GC_SECTIONS)
4905 HAVE_EXTERNAL_DWARF=
4906 if test "$enable_split_debug" != no; then
4907     use_split_debug=
4908     if test -n "$ENABLE_LTO"; then
4909         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4910     elif test "$enable_split_debug" = yes; then
4911         use_split_debug=1
4912     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4913     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4914         use_split_debug=1
4915     fi
4916     if test -n "$use_split_debug"; then
4917         if test "$_os" = "Emscripten"; then
4918             TEST_CC_FLAG=-gseparate-dwarf
4919         else
4920             TEST_CC_FLAG=-gsplit-dwarf
4921         fi
4922         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4923         save_CFLAGS=$CFLAGS
4924         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4925         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4926         CFLAGS=$save_CFLAGS
4927         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4928             AC_MSG_RESULT([yes])
4929         else
4930             if test "$enable_split_debug" = yes; then
4931                 AC_MSG_ERROR([no])
4932             else
4933                 AC_MSG_RESULT([no])
4934             fi
4935         fi
4936     fi
4937     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4938         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4939         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4940     fi
4942 AC_SUBST(HAVE_EXTERNAL_DWARF)
4944 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4945 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4946 save_CFLAGS=$CFLAGS
4947 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4948 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4949 CFLAGS=$save_CFLAGS
4950 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4951     AC_MSG_RESULT([yes])
4952 else
4953     AC_MSG_RESULT([no])
4955 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4957 ENABLE_GDB_INDEX=
4958 if test "$enable_gdb_index" != "no"; then
4959     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4960     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4961         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4962         save_CFLAGS=$CFLAGS
4963         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4964         have_ggnu_pubnames=
4965         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4966         if test "$have_ggnu_pubnames" != "TRUE"; then
4967             if test "$enable_gdb_index" = "yes"; then
4968                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4969             else
4970                 AC_MSG_RESULT( no )
4971             fi
4972         else
4973             AC_MSG_RESULT( yes )
4974             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4975             ldflags_save=$LDFLAGS
4976             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4977             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4978 #include <stdio.h>
4979                 ],[
4980 printf ("hello world\n");
4981                 ])], ENABLE_GDB_INDEX=TRUE, [])
4982             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4983                 AC_MSG_RESULT( yes )
4984             else
4985                 if test "$enable_gdb_index" = "yes"; then
4986                     AC_MSG_ERROR( no )
4987                 else
4988                     AC_MSG_RESULT( no )
4989                 fi
4990             fi
4991             LDFLAGS=$ldflags_save
4992         fi
4993         CFLAGS=$save_CFLAGS
4994         fi
4995     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4996         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4997         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4998     fi
5000 AC_SUBST(ENABLE_GDB_INDEX)
5002 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
5003     enable_sal_log=yes
5005 if test "$enable_sal_log" = yes; then
5006     ENABLE_SAL_LOG=TRUE
5008 AC_SUBST(ENABLE_SAL_LOG)
5010 dnl Check for enable symbols option
5011 dnl ===================================================================
5012 AC_MSG_CHECKING([whether to generate debug information])
5013 if test -z "$enable_symbols"; then
5014     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5015         enable_symbols=yes
5016     else
5017         enable_symbols=no
5018     fi
5020 if test "$enable_symbols" = yes; then
5021     ENABLE_SYMBOLS_FOR=all
5022     AC_MSG_RESULT([yes])
5023 elif test "$enable_symbols" = no; then
5024     ENABLE_SYMBOLS_FOR=
5025     AC_MSG_RESULT([no])
5026 else
5027     # Selective debuginfo.
5028     ENABLE_SYMBOLS_FOR="$enable_symbols"
5029     AC_MSG_RESULT([for "$enable_symbols"])
5031 AC_SUBST(ENABLE_SYMBOLS_FOR)
5033 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5034     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5035     AC_MSG_CHECKING([whether enough memory is available for linking])
5036     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5037     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5038     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5039         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5040     else
5041         AC_MSG_RESULT([yes])
5042     fi
5045 ENABLE_OPTIMIZED=
5046 ENABLE_OPTIMIZED_DEBUG=
5047 AC_MSG_CHECKING([whether to compile with optimization flags])
5048 if test -z "$enable_optimized"; then
5049     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5050         enable_optimized=no
5051     else
5052         enable_optimized=yes
5053     fi
5055 if test "$enable_optimized" = yes; then
5056     ENABLE_OPTIMIZED=TRUE
5057     AC_MSG_RESULT([yes])
5058 elif test "$enable_optimized" = debug; then
5059     ENABLE_OPTIMIZED_DEBUG=TRUE
5060     AC_MSG_RESULT([yes (debug)])
5061     HAVE_GCC_OG=
5062     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5063         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5064         save_CFLAGS=$CFLAGS
5065         CFLAGS="$CFLAGS -Werror -Og"
5066         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5067         CFLAGS=$save_CFLAGS
5068         if test "$HAVE_GCC_OG" = "TRUE"; then
5069             AC_MSG_RESULT([yes])
5070         else
5071             AC_MSG_RESULT([no])
5072         fi
5073     fi
5074     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5075         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5076     fi
5077 else
5078     AC_MSG_RESULT([no])
5080 AC_SUBST(ENABLE_OPTIMIZED)
5081 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5084 # determine CPUNAME, OS, ...
5086 case "$host_os" in
5088 cygwin*|wsl*)
5089     # Already handled
5090     ;;
5092 darwin*)
5093     COM=GCC
5094     OS=MACOSX
5095     RTL_OS=MacOSX
5096     P_SEP=:
5098     case "$host_cpu" in
5099     aarch64|arm64)
5100         if test "$enable_ios_simulator" = "yes"; then
5101             OS=iOS
5102         else
5103             CPUNAME=AARCH64
5104             RTL_ARCH=AARCH64
5105             PLATFORMID=macosx_aarch64
5106         fi
5107         ;;
5108     x86_64)
5109         if test "$enable_ios_simulator" = "yes"; then
5110             OS=iOS
5111         fi
5112         CPUNAME=X86_64
5113         RTL_ARCH=X86_64
5114         PLATFORMID=macosx_x86_64
5115         ;;
5116     *)
5117         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5118         ;;
5119     esac
5120     ;;
5122 ios*)
5123     COM=GCC
5124     OS=iOS
5125     RTL_OS=iOS
5126     P_SEP=:
5128     case "$host_cpu" in
5129     aarch64|arm64)
5130         if test "$enable_ios_simulator" = "yes"; then
5131             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5132         fi
5133         ;;
5134     *)
5135         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5136         ;;
5137     esac
5138     CPUNAME=AARCH64
5139     RTL_ARCH=AARCH64
5140     PLATFORMID=ios_arm64
5141     ;;
5143 dragonfly*)
5144     COM=GCC
5145     OS=DRAGONFLY
5146     RTL_OS=DragonFly
5147     P_SEP=:
5149     case "$host_cpu" in
5150     i*86)
5151         CPUNAME=INTEL
5152         RTL_ARCH=x86
5153         PLATFORMID=dragonfly_x86
5154         ;;
5155     x86_64)
5156         CPUNAME=X86_64
5157         RTL_ARCH=X86_64
5158         PLATFORMID=dragonfly_x86_64
5159         ;;
5160     *)
5161         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5162         ;;
5163     esac
5164     ;;
5166 freebsd*)
5167     COM=GCC
5168     RTL_OS=FreeBSD
5169     OS=FREEBSD
5170     P_SEP=:
5172     case "$host_cpu" in
5173     aarch64)
5174         CPUNAME=AARCH64
5175         PLATFORMID=freebsd_aarch64
5176         RTL_ARCH=AARCH64
5177         ;;
5178     i*86)
5179         CPUNAME=INTEL
5180         RTL_ARCH=x86
5181         PLATFORMID=freebsd_x86
5182         ;;
5183     x86_64|amd64)
5184         CPUNAME=X86_64
5185         RTL_ARCH=X86_64
5186         PLATFORMID=freebsd_x86_64
5187         ;;
5188     powerpc64)
5189         CPUNAME=POWERPC64
5190         RTL_ARCH=PowerPC_64
5191         PLATFORMID=freebsd_powerpc64
5192         ;;
5193     powerpc|powerpcspe)
5194         CPUNAME=POWERPC
5195         RTL_ARCH=PowerPC
5196         PLATFORMID=freebsd_powerpc
5197         ;;
5198     *)
5199         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5200         ;;
5201     esac
5202     ;;
5204 haiku*)
5205     COM=GCC
5206     GUIBASE=haiku
5207     RTL_OS=Haiku
5208     OS=HAIKU
5209     P_SEP=:
5211     case "$host_cpu" in
5212     i*86)
5213         CPUNAME=INTEL
5214         RTL_ARCH=x86
5215         PLATFORMID=haiku_x86
5216         ;;
5217     x86_64|amd64)
5218         CPUNAME=X86_64
5219         RTL_ARCH=X86_64
5220         PLATFORMID=haiku_x86_64
5221         ;;
5222     *)
5223         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5224         ;;
5225     esac
5226     ;;
5228 kfreebsd*)
5229     COM=GCC
5230     OS=LINUX
5231     RTL_OS=kFreeBSD
5232     P_SEP=:
5234     case "$host_cpu" in
5236     i*86)
5237         CPUNAME=INTEL
5238         RTL_ARCH=x86
5239         PLATFORMID=kfreebsd_x86
5240         ;;
5241     x86_64)
5242         CPUNAME=X86_64
5243         RTL_ARCH=X86_64
5244         PLATFORMID=kfreebsd_x86_64
5245         ;;
5246     *)
5247         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5248         ;;
5249     esac
5250     ;;
5252 linux-gnu*|linux-musl*)
5253     COM=GCC
5254     OS=LINUX
5255     RTL_OS=Linux
5256     P_SEP=:
5258     case "$host_cpu" in
5260     aarch64)
5261         CPUNAME=AARCH64
5262         PLATFORMID=linux_aarch64
5263         RTL_ARCH=AARCH64
5264         EPM_FLAGS="-a arm64"
5265         ;;
5266     alpha)
5267         CPUNAME=AXP
5268         RTL_ARCH=ALPHA
5269         PLATFORMID=linux_alpha
5270         ;;
5271     arm*)
5272         CPUNAME=ARM
5273         EPM_FLAGS="-a arm"
5274         RTL_ARCH=ARM_EABI
5275         PLATFORMID=linux_arm_eabi
5276         case "$host_cpu" in
5277         arm*-linux)
5278             RTL_ARCH=ARM_OABI
5279             PLATFORMID=linux_arm_oabi
5280             ;;
5281         esac
5282         ;;
5283     hppa)
5284         CPUNAME=HPPA
5285         RTL_ARCH=HPPA
5286         EPM_FLAGS="-a hppa"
5287         PLATFORMID=linux_hppa
5288         ;;
5289     i*86)
5290         CPUNAME=INTEL
5291         RTL_ARCH=x86
5292         PLATFORMID=linux_x86
5293         ;;
5294     ia64)
5295         CPUNAME=IA64
5296         RTL_ARCH=IA64
5297         PLATFORMID=linux_ia64
5298         ;;
5299     mips)
5300         CPUNAME=MIPS
5301         RTL_ARCH=MIPS_EB
5302         EPM_FLAGS="-a mips"
5303         PLATFORMID=linux_mips_eb
5304         ;;
5305     mips64)
5306         CPUNAME=MIPS64
5307         RTL_ARCH=MIPS64_EB
5308         EPM_FLAGS="-a mips64"
5309         PLATFORMID=linux_mips64_eb
5310         ;;
5311     mips64el)
5312         CPUNAME=MIPS64
5313         RTL_ARCH=MIPS64_EL
5314         EPM_FLAGS="-a mips64el"
5315         PLATFORMID=linux_mips64_el
5316         ;;
5317     mipsel)
5318         CPUNAME=MIPS
5319         RTL_ARCH=MIPS_EL
5320         EPM_FLAGS="-a mipsel"
5321         PLATFORMID=linux_mips_el
5322         ;;
5323     riscv64)
5324         CPUNAME=RISCV64
5325         RTL_ARCH=RISCV64
5326         EPM_FLAGS="-a riscv64"
5327         PLATFORMID=linux_riscv64
5328         ;;
5329     m68k)
5330         CPUNAME=M68K
5331         RTL_ARCH=M68K
5332         PLATFORMID=linux_m68k
5333         ;;
5334     powerpc)
5335         CPUNAME=POWERPC
5336         RTL_ARCH=PowerPC
5337         PLATFORMID=linux_powerpc
5338         ;;
5339     powerpc64)
5340         CPUNAME=POWERPC64
5341         RTL_ARCH=PowerPC_64
5342         PLATFORMID=linux_powerpc64
5343         ;;
5344     powerpc64le)
5345         CPUNAME=POWERPC64
5346         RTL_ARCH=PowerPC_64_LE
5347         PLATFORMID=linux_powerpc64_le
5348         ;;
5349     sparc)
5350         CPUNAME=SPARC
5351         RTL_ARCH=SPARC
5352         PLATFORMID=linux_sparc
5353         ;;
5354     sparc64)
5355         CPUNAME=SPARC64
5356         RTL_ARCH=SPARC64
5357         PLATFORMID=linux_sparc64
5358         ;;
5359     s390x)
5360         CPUNAME=S390X
5361         RTL_ARCH=S390x
5362         PLATFORMID=linux_s390x
5363         ;;
5364     x86_64)
5365         CPUNAME=X86_64
5366         RTL_ARCH=X86_64
5367         PLATFORMID=linux_x86_64
5368         ;;
5369     loongarch64)
5370         CPUNAME=LOONGARCH64
5371         RTL_ARCH=LOONGARCH64
5372         PLATFORMID=linux_loongarch64
5373         ;;
5374     *)
5375         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5376         ;;
5377     esac
5378     ;;
5380 linux-android*)
5381     COM=GCC
5382     OS=ANDROID
5383     RTL_OS=Android
5384     P_SEP=:
5386     case "$host_cpu" in
5388     arm|armel)
5389         CPUNAME=ARM
5390         RTL_ARCH=ARM_EABI
5391         PLATFORMID=android_arm_eabi
5392         ;;
5393     aarch64)
5394         CPUNAME=AARCH64
5395         RTL_ARCH=AARCH64
5396         PLATFORMID=android_aarch64
5397         ;;
5398     i*86)
5399         CPUNAME=INTEL
5400         RTL_ARCH=x86
5401         PLATFORMID=android_x86
5402         ;;
5403     x86_64)
5404         CPUNAME=X86_64
5405         RTL_ARCH=X86_64
5406         PLATFORMID=android_x86_64
5407         ;;
5408     *)
5409         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5410         ;;
5411     esac
5412     ;;
5414 *netbsd*)
5415     COM=GCC
5416     OS=NETBSD
5417     RTL_OS=NetBSD
5418     P_SEP=:
5420     case "$host_cpu" in
5421     i*86)
5422         CPUNAME=INTEL
5423         RTL_ARCH=x86
5424         PLATFORMID=netbsd_x86
5425         ;;
5426     powerpc)
5427         CPUNAME=POWERPC
5428         RTL_ARCH=PowerPC
5429         PLATFORMID=netbsd_powerpc
5430         ;;
5431     sparc)
5432         CPUNAME=SPARC
5433         RTL_ARCH=SPARC
5434         PLATFORMID=netbsd_sparc
5435         ;;
5436     x86_64)
5437         CPUNAME=X86_64
5438         RTL_ARCH=X86_64
5439         PLATFORMID=netbsd_x86_64
5440         ;;
5441     *)
5442         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5443         ;;
5444     esac
5445     ;;
5447 openbsd*)
5448     COM=GCC
5449     OS=OPENBSD
5450     RTL_OS=OpenBSD
5451     P_SEP=:
5453     case "$host_cpu" in
5454     i*86)
5455         CPUNAME=INTEL
5456         RTL_ARCH=x86
5457         PLATFORMID=openbsd_x86
5458         ;;
5459     x86_64)
5460         CPUNAME=X86_64
5461         RTL_ARCH=X86_64
5462         PLATFORMID=openbsd_x86_64
5463         ;;
5464     *)
5465         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5466         ;;
5467     esac
5468     SOLARINC="$SOLARINC -I/usr/local/include"
5469     ;;
5471 solaris*)
5472     COM=GCC
5473     OS=SOLARIS
5474     RTL_OS=Solaris
5475     P_SEP=:
5477     case "$host_cpu" in
5478     i*86)
5479         CPUNAME=INTEL
5480         RTL_ARCH=x86
5481         PLATFORMID=solaris_x86
5482         ;;
5483     sparc)
5484         CPUNAME=SPARC
5485         RTL_ARCH=SPARC
5486         PLATFORMID=solaris_sparc
5487         ;;
5488     sparc64)
5489         CPUNAME=SPARC64
5490         RTL_ARCH=SPARC64
5491         PLATFORMID=solaris_sparc64
5492         ;;
5493     *)
5494         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5495         ;;
5496     esac
5497     SOLARINC="$SOLARINC -I/usr/local/include"
5498     ;;
5500 emscripten*)
5501     COM=GCC
5502     OS=EMSCRIPTEN
5503     RTL_OS=Emscripten
5504     P_SEP=:
5506     case "$host_cpu" in
5507     wasm32|wasm64)
5508         ;;
5509     *)
5510         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5511         ;;
5512     esac
5513     CPUNAME=INTEL
5514     RTL_ARCH=x86
5515     PLATFORMID=linux_x86
5516     ;;
5519     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5520     ;;
5521 esac
5523 DISABLE_GUI=""
5524 if test "$enable_gui" = "no"; then
5525     if test "$using_x11" != yes; then
5526         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5527     fi
5528     USING_X11=
5529     DISABLE_GUI=TRUE
5530     test_epoxy=no
5531 else
5532     AC_DEFINE(HAVE_FEATURE_UI)
5534 AC_SUBST(DISABLE_GUI)
5536 if test "$with_x" = "no"; then
5537     USING_X11=
5540 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5541     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5544 if test "$using_x11" = yes; then
5545     if test "$USING_X11" = TRUE; then
5546         AC_DEFINE(USING_X11)
5547     else
5548         disable_x11_tests
5549         if test "$DISABLE_DYNLOADING" = TRUE; then
5550             test_qt5=yes
5551         fi
5552     fi
5553 else
5554     if test "$USING_X11" = TRUE; then
5555         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5556     fi
5559 WORKDIR="${BUILDDIR}/workdir"
5560 INSTDIR="${BUILDDIR}/instdir"
5561 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5562 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5563 AC_SUBST(COM)
5564 AC_SUBST(CPUNAME)
5565 AC_SUBST(RTL_OS)
5566 AC_SUBST(RTL_ARCH)
5567 AC_SUBST(EPM_FLAGS)
5568 AC_SUBST(USING_X11)
5569 AC_SUBST([INSTDIR])
5570 AC_SUBST([INSTROOT])
5571 AC_SUBST([INSTROOTBASE])
5572 AC_SUBST(OS)
5573 AC_SUBST(P_SEP)
5574 AC_SUBST(WORKDIR)
5575 AC_SUBST(PLATFORMID)
5576 AC_SUBST(WINDOWS_X64)
5577 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5578 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5580 if test "$OS" = WNT -a "$COM" = MSC; then
5581     case "$CPUNAME" in
5582     INTEL) CPPU_ENV=msci ;;
5583     X86_64) CPPU_ENV=mscx ;;
5584     AARCH64) CPPU_ENV=msca ;;
5585     *)
5586         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5587         ;;
5588     esac
5589 else
5590     CPPU_ENV=gcc3
5592 AC_SUBST(CPPU_ENV)
5594 dnl ===================================================================
5595 dnl Test which package format to use
5596 dnl ===================================================================
5597 AC_MSG_CHECKING([which package format to use])
5598 if test -n "$with_package_format" -a "$with_package_format" != no; then
5599     for i in $with_package_format; do
5600         case "$i" in
5601         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5602             ;;
5603         *)
5604             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5605 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5606 deb - Debian software distribution
5607 pkg - Solaris software distribution
5608 rpm - RedHat software distribution
5610 LibreOffice additionally supports:
5611 archive - .tar.gz or .zip
5612 dmg - macOS .dmg
5613 installed - installation tree
5614 msi - Windows .msi
5615         ])
5616             ;;
5617         esac
5618     done
5619     # fakeroot is needed to ensure correct file ownerships/permissions
5620     # inside deb packages and tar archives created on Linux and Solaris.
5621     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5622         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5623         if test "$FAKEROOT" = "no"; then
5624             AC_MSG_ERROR(
5625                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5626         fi
5627     fi
5628     PKGFORMAT="$with_package_format"
5629     AC_MSG_RESULT([$PKGFORMAT])
5630 else
5631     PKGFORMAT=
5632     AC_MSG_RESULT([none])
5634 AC_SUBST(PKGFORMAT)
5636 dnl ===================================================================
5637 dnl handle help related options
5639 dnl If you change help related options, please update README.help
5640 dnl ===================================================================
5642 ENABLE_HTMLHELP=
5643 HELP_OMINDEX_PAGE=
5644 HELP_ONLINE=
5645 WITH_HELPPACKS=
5647 AC_MSG_CHECKING([which help to build])
5648 if test -n "$with_help" -a "$with_help" != "no"; then
5649     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5650     BUILD_TYPE="$BUILD_TYPE HELP"
5651     case "$with_help" in
5652     "html")
5653         ENABLE_HTMLHELP=TRUE
5654         WITH_HELPPACKS=TRUE
5655         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5656         AC_MSG_RESULT([HTML (local)])
5657         ;;
5658     "online")
5659         ENABLE_HTMLHELP=TRUE
5660         HELP_ONLINE=TRUE
5661         AC_MSG_RESULT([HTML (online)])
5662         ;;
5663     yes)
5664         WITH_HELPPACKS=TRUE
5665         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5666         AC_MSG_RESULT([XML (local)])
5667         ;;
5668     *)
5669         AC_MSG_ERROR([Unknown --with-help=$with_help])
5670         ;;
5671     esac
5672 else
5673     AC_MSG_RESULT([no])
5676 AC_MSG_CHECKING([if we need to build the help index tooling])
5677 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5678     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5679     test_clucene=yes
5680     AC_MSG_RESULT([yes])
5681 else
5682     AC_MSG_RESULT([no])
5685 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5686 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5687     if test "$HELP_ONLINE" != TRUE; then
5688         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5689     fi
5690     case "$with_omindex" in
5691     "server")
5692         HELP_OMINDEX_PAGE=TRUE
5693         AC_MSG_RESULT([SERVER])
5694         ;;
5695     "noxap")
5696         AC_MSG_RESULT([NOXAP])
5697         ;;
5698     *)
5699         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5700         ;;
5701     esac
5702 else
5703     AC_MSG_RESULT([no])
5706 AC_MSG_CHECKING([whether to include the XML-help support])
5707 if test "$enable_xmlhelp" = yes; then
5708     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5709     test_clucene=yes
5710     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5711     AC_MSG_RESULT([yes])
5712 else
5713     if test "$with_help" = yes; then
5714         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5715     fi
5716     AC_MSG_RESULT([no])
5719 dnl Test whether to integrate helppacks into the product's installer
5720 AC_MSG_CHECKING([for helppack integration])
5721 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5722     AC_MSG_RESULT([no integration])
5723 else
5724     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5725     AC_MSG_RESULT([integration])
5728 AC_SUBST([ENABLE_HTMLHELP])
5729 AC_SUBST([HELP_OMINDEX_PAGE])
5730 AC_SUBST([HELP_ONLINE])
5731 # WITH_HELPPACKS is used only in configure
5733 dnl ===================================================================
5734 dnl Set up a different compiler to produce tools to run on the build
5735 dnl machine when doing cross-compilation
5736 dnl ===================================================================
5738 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5739 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5740 if test "$cross_compiling" = "yes"; then
5741     AC_MSG_CHECKING([for BUILD platform configuration])
5742     echo
5743     rm -rf CONF-FOR-BUILD config_build.mk
5744     mkdir CONF-FOR-BUILD
5745     # Here must be listed all files needed when running the configure script. In particular, also
5746     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5747     # keep them in the same order as there.
5748     (cd $SRC_ROOT && tar cf - \
5749         config.guess \
5750         bin/get_config_variables \
5751         solenv/bin/getcompver.awk \
5752         solenv/inc/langlist.mk \
5753         download.lst \
5754         config_host.mk.in \
5755         config_host_lang.mk.in \
5756         Makefile.in \
5757         bin/bffvalidator.sh.in \
5758         bin/odfvalidator.sh.in \
5759         bin/officeotron.sh.in \
5760         instsetoo_native/util/openoffice.lst.in \
5761         config_host/*.in \
5762         sysui/desktop/macosx/Info.plist.in \
5763         sysui/desktop/macosx/hardened_runtime.xcent.in \
5764         sysui/desktop/macosx/lo.xcent.in \
5765         .vscode/vs-code-template.code-workspace.in \
5766         solenv/lockfile/autoconf.h.in \
5767         ) \
5768     | (cd CONF-FOR-BUILD && tar xf -)
5769     cp configure CONF-FOR-BUILD
5770     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5771     (
5772     unset COM USING_X11 OS CPUNAME
5773     unset CC CXX SYSBASE CFLAGS
5774     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5775     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5776     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5777     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5778     if test -n "$CC_FOR_BUILD"; then
5779         export CC="$CC_FOR_BUILD"
5780         CC_BASE=`first_arg_basename "$CC"`
5781     fi
5782     if test -n "$CXX_FOR_BUILD"; then
5783         export CXX="$CXX_FOR_BUILD"
5784         CXX_BASE=`first_arg_basename "$CXX"`
5785     fi
5786     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5787     cd CONF-FOR-BUILD
5789     # Handle host configuration, which affects the cross-toolset too
5790     sub_conf_opts=""
5791     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5792     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5793     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5794     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5795     if test -n "$ENABLE_JAVA"; then
5796         case "$_os" in
5797         Android)
5798             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5799             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5800             ;;
5801         *)
5802             if test -z "$with_jdk_home"; then
5803                 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.])
5804             fi
5805             ;;
5806         esac
5807     else
5808         sub_conf_opts="$sub_conf_opts --without-java"
5809     fi
5810     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5811     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5812     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5813     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5814     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5815     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5816     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5817     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5818     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5819     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5820     if test "$_os" = "Emscripten"; then
5821         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5822         if test "${with_main_module+set}" = set; then
5823             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5824         else
5825             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5826         fi
5827     fi
5828     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5829     # when cross-compiling for aarch64, overriding the defaults below
5830     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5832     # Don't bother having configure look for stuff not needed for the build platform anyway
5833     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5834     sub_conf_defaults=" \
5835         --build="$build_alias" \
5836         --disable-cairo-canvas \
5837         --disable-cups \
5838         --disable-customtarget-components \
5839         --disable-firebird-sdbc \
5840         --disable-gpgmepp \
5841         --disable-gstreamer-1-0 \
5842         --disable-gtk3 \
5843         --disable-gtk4 \
5844         --disable-libcmis \
5845         --disable-mariadb-sdbc \
5846         --disable-nss \
5847         --disable-online-update \
5848         --disable-opencl \
5849         --disable-openssl \
5850         --disable-pdfimport \
5851         --disable-postgresql-sdbc \
5852         --disable-skia \
5853         --disable-xmlhelp \
5854         --enable-dynamic-loading \
5855         --enable-icecream="$enable_icecream" \
5856         --without-doxygen \
5857         --without-tls \
5858         --without-webdav \
5859         --without-x \
5861     # single quotes added for better readability in case of spaces
5862     echo "    Running CONF-FOR-BUILD/configure" \
5863         $sub_conf_defaults \
5864         --with-parallelism="'$with_parallelism'" \
5865         --with-theme="'$with_theme'" \
5866         --with-vendor="'$with_vendor'" \
5867         $sub_conf_opts \
5868         $with_build_platform_configure_options \
5869         --srcdir=$srcdir
5871     ./configure \
5872         $sub_conf_defaults \
5873         --with-parallelism="$with_parallelism" \
5874         --with-theme="$with_theme" \
5875         "--with-vendor=$with_vendor" \
5876         $sub_conf_opts \
5877         $with_build_platform_configure_options \
5878         --srcdir=$srcdir \
5879         2>&1 | sed -e 's/^/    /'
5880     if test [${PIPESTATUS[0]}] -ne 0; then
5881         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5882     fi
5884     # filter permitted build targets
5885     PERMITTED_BUILD_TARGETS="
5886         AVMEDIA
5887         BOOST
5888         BZIP2
5889         CAIRO
5890         CLUCENE
5891         CURL
5892         DBCONNECTIVITY
5893         DESKTOP
5894         DRAGONBOX
5895         DYNLOADING
5896         EPOXY
5897         EXPAT
5898         FROZEN
5899         GLM
5900         GRAPHITE
5901         HARFBUZZ
5902         HELPTOOLS
5903         ICU
5904         LCMS2
5905         LIBJPEG_TURBO
5906         LIBLANGTAG
5907         LibO
5908         LIBFFI
5909         LIBPN
5910         LIBTIFF
5911         LIBWEBP
5912         LIBXML2
5913         LIBXSLT
5914         MDDS
5915         NATIVE
5916         OPENSSL
5917         ORCUS
5918         PYTHON
5919         SCRIPTING
5920         ZLIB
5921         ZXCVBN
5923     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5924     # newlined lists, to use grep as a filter
5925     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5926     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5927     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5928     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5930     cp config_host.mk ../config_build.mk
5931     cp config_host_lang.mk ../config_build_lang.mk
5932     mv config.log ../config.Build.log
5933     mkdir -p ../config_build
5934     mv config_host/*.h ../config_build
5935     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5937     # all these will get a _FOR_BUILD postfix
5938     DIRECT_FOR_BUILD_SETTINGS="
5939         CC
5940         CPPU_ENV
5941         CXX
5942         ILIB
5943         JAVA_HOME
5944         JAVAIFLAGS
5945         JDK
5946         JDK_SECURITYMANAGER_DISALLOWED
5947         LIBO_BIN_FOLDER
5948         LIBO_LIB_FOLDER
5949         LIBO_URE_LIB_FOLDER
5950         LIBO_URE_MISC_FOLDER
5951         OS
5952         SDKDIRNAME
5953         SYSTEM_LIBXML
5954         SYSTEM_LIBXSLT
5956     # these overwrite host config with build config
5957     OVERWRITING_SETTINGS="
5958         ANT
5959         ANT_HOME
5960         ANT_LIB
5961         JAVA_SOURCE_VER
5962         JAVA_TARGET_VER
5963         JAVACFLAGS
5964         JAVACOMPILER
5965         JAVADOC
5966         JAVADOCISGJDOC
5967         LOCKFILE
5968         SYSTEM_GENBRK
5969         SYSTEM_GENCCODE
5970         SYSTEM_GENCMN
5972     # these need some special handling
5973     EXTRA_HANDLED_SETTINGS="
5974         INSTDIR
5975         INSTROOT
5976         PATH
5977         WORKDIR
5979     OLD_PATH=$PATH
5980     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5981     BUILD_PATH=$PATH
5982     PATH=$OLD_PATH
5984     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5985     echo "$line" >>build-config
5987     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5988         VV='$'$V
5989         VV=`eval "echo $VV"`
5990         if test -n "$VV"; then
5991             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5992             echo "$line" >>build-config
5993         fi
5994     done
5996     for V in $OVERWRITING_SETTINGS; do
5997         VV='$'$V
5998         VV=`eval "echo $VV"`
5999         if test -n "$VV"; then
6000             line=${V}='${'${V}:-$VV'}'
6001             echo "$line" >>build-config
6002         fi
6003     done
6005     for V in INSTDIR INSTROOT WORKDIR; do
6006         VV='$'$V
6007         VV=`eval "echo $VV"`
6008         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6009         if test -n "$VV"; then
6010             line="${V}_FOR_BUILD='$VV'"
6011             echo "$line" >>build-config
6012         fi
6013     done
6015     )
6016     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6017     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])
6018     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6019              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6021     eval `cat CONF-FOR-BUILD/build-config`
6023     AC_MSG_RESULT([checking for BUILD platform configuration... done])
6025     rm -rf CONF-FOR-BUILD
6026 else
6027     OS_FOR_BUILD="$OS"
6028     CC_FOR_BUILD="$CC"
6029     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6030     CXX_FOR_BUILD="$CXX"
6031     INSTDIR_FOR_BUILD="$INSTDIR"
6032     INSTROOT_FOR_BUILD="$INSTROOT"
6033     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6034     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6035     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6036     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6037     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6038     WORKDIR_FOR_BUILD="$WORKDIR"
6040 AC_SUBST(OS_FOR_BUILD)
6041 AC_SUBST(INSTDIR_FOR_BUILD)
6042 AC_SUBST(INSTROOT_FOR_BUILD)
6043 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6044 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6045 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6046 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6047 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6048 AC_SUBST(WORKDIR_FOR_BUILD)
6049 AC_SUBST(CC_FOR_BUILD)
6050 AC_SUBST(CXX_FOR_BUILD)
6051 AC_SUBST(CPPU_ENV_FOR_BUILD)
6053 dnl ===================================================================
6054 dnl Check for lockfile deps
6055 dnl ===================================================================
6056 if test -z "$CROSS_COMPILING"; then
6057     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6058     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6059     AC_MSG_CHECKING([which lockfile binary to use])
6060     case "$with_system_lockfile" in
6061     yes)
6062         AC_MSG_RESULT([external])
6063         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6064         ;;
6065     no)
6066         AC_MSG_RESULT([internal])
6067         ;;
6068     *)
6069         if test -x "$with_system_lockfile"; then
6070             LOCKFILE="$with_system_lockfile"
6071         else
6072             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6073         fi
6074         AC_MSG_RESULT([$with_system_lockfile])
6075         ;;
6076     esac
6079 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6080     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6083 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6084 AC_CHECK_FUNCS([utime utimes])
6085 AC_SUBST(LOCKFILE)
6087 dnl ===================================================================
6088 dnl Check for syslog header
6089 dnl ===================================================================
6090 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6092 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6093 dnl ===================================================================
6094 AC_MSG_CHECKING([whether to turn warnings to errors])
6095 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6096     ENABLE_WERROR="TRUE"
6097     PYTHONWARNINGS="error"
6098     AC_MSG_RESULT([yes])
6099 else
6100     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6101         ENABLE_WERROR="TRUE"
6102         PYTHONWARNINGS="error"
6103         AC_MSG_RESULT([yes])
6104     else
6105         AC_MSG_RESULT([no])
6106     fi
6108 AC_SUBST(ENABLE_WERROR)
6109 AC_SUBST(PYTHONWARNINGS)
6111 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6112 dnl ===================================================================
6113 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6114 if test -z "$enable_assert_always_abort"; then
6115    if test "$ENABLE_DEBUG" = TRUE; then
6116        enable_assert_always_abort=yes
6117    else
6118        enable_assert_always_abort=no
6119    fi
6121 if test "$enable_assert_always_abort" = "yes"; then
6122     ASSERT_ALWAYS_ABORT="TRUE"
6123     AC_MSG_RESULT([yes])
6124 else
6125     ASSERT_ALWAYS_ABORT="FALSE"
6126     AC_MSG_RESULT([no])
6128 AC_SUBST(ASSERT_ALWAYS_ABORT)
6130 # Determine whether to use ooenv for the instdir installation
6131 # ===================================================================
6132 if test $_os != "WINNT" -a $_os != "Darwin"; then
6133     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6134     if test -z "$enable_ooenv"; then
6135         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6136             enable_ooenv=yes
6137         else
6138             enable_ooenv=no
6139         fi
6140     fi
6141     if test "$enable_ooenv" = "no"; then
6142         AC_MSG_RESULT([no])
6143     else
6144         ENABLE_OOENV="TRUE"
6145         AC_MSG_RESULT([yes])
6146     fi
6148 AC_SUBST(ENABLE_OOENV)
6150 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6151     if test "$enable_qt5" = "no"; then
6152         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6153     else
6154         enable_qt5=yes
6155     fi
6158 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6159     if test "$enable_qt6" = "no"; then
6160         AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6161     else
6162         enable_qt6=yes
6163     fi
6167 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6168 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6169     AC_MSG_RESULT([yes])
6170     ENABLE_PAGEIN=TRUE
6171     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6172 else
6173     AC_MSG_RESULT([no])
6175 AC_SUBST(ENABLE_PAGEIN)
6177 dnl ===================================================================
6178 dnl check for cups support
6179 dnl ===================================================================
6181 AC_MSG_CHECKING([whether to enable CUPS support])
6182 if test "$test_cups" = yes -a "$enable_cups" != no; then
6183     ENABLE_CUPS=TRUE
6184     AC_MSG_RESULT([yes])
6186     AC_MSG_CHECKING([whether cups support is present])
6187     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6188     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6189     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6190         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6191     fi
6192 else
6193     AC_MSG_RESULT([no])
6196 AC_SUBST(ENABLE_CUPS)
6198 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6200 dnl whether to find & fetch external tarballs?
6201 dnl ===================================================================
6202 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6203    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6204        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6205    else
6206        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6207    fi
6209 if test -z "$TARFILE_LOCATION"; then
6210     if test -d "$SRC_ROOT/src" ; then
6211         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6212         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6213     fi
6214     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6215 else
6216     AbsolutePath "$TARFILE_LOCATION"
6217     PathFormat "${absolute_path}"
6218     TARFILE_LOCATION="${formatted_path_unix}"
6220 AC_SUBST(TARFILE_LOCATION)
6222 AC_MSG_CHECKING([whether we want to fetch tarballs])
6223 if test "$enable_fetch_external" != "no"; then
6224     if test "$with_all_tarballs" = "yes"; then
6225         AC_MSG_RESULT([yes, all of them])
6226         DO_FETCH_TARBALLS="ALL"
6227     else
6228         AC_MSG_RESULT([yes, if we use them])
6229         DO_FETCH_TARBALLS="TRUE"
6230     fi
6231 else
6232     AC_MSG_RESULT([no])
6233     DO_FETCH_TARBALLS=
6235 AC_SUBST(DO_FETCH_TARBALLS)
6237 dnl Test whether to include MySpell dictionaries
6238 dnl ===================================================================
6239 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6240 if test "$with_myspell_dicts" = "yes"; then
6241     AC_MSG_RESULT([yes])
6242     WITH_MYSPELL_DICTS=TRUE
6243     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6244     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6245 else
6246     AC_MSG_RESULT([no])
6247     WITH_MYSPELL_DICTS=
6249 AC_SUBST(WITH_MYSPELL_DICTS)
6251 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6252 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6253     if test "$with_system_dicts" = yes; then
6254         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6255     fi
6256     with_system_dicts=no
6259 AC_MSG_CHECKING([whether to use dicts from external paths])
6260 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6261     AC_MSG_RESULT([yes])
6262     SYSTEM_DICTS=TRUE
6263     AC_MSG_CHECKING([for spelling dictionary directory])
6264     if test -n "$with_external_dict_dir"; then
6265         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6266     else
6267         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6268         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6269             DICT_SYSTEM_DIR=file:///usr/share/myspell
6270         fi
6271     fi
6272     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6273     AC_MSG_CHECKING([for hyphenation patterns directory])
6274     if test -n "$with_external_hyph_dir"; then
6275         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6276     else
6277         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6278     fi
6279     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6280     AC_MSG_CHECKING([for thesaurus directory])
6281     if test -n "$with_external_thes_dir"; then
6282         THES_SYSTEM_DIR=file://$with_external_thes_dir
6283     else
6284         THES_SYSTEM_DIR=file:///usr/share/mythes
6285     fi
6286     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6287 else
6288     AC_MSG_RESULT([no])
6289     SYSTEM_DICTS=
6291 AC_SUBST(SYSTEM_DICTS)
6292 AC_SUBST(DICT_SYSTEM_DIR)
6293 AC_SUBST(HYPH_SYSTEM_DIR)
6294 AC_SUBST(THES_SYSTEM_DIR)
6296 dnl ===================================================================
6297 dnl Precompiled headers.
6298 ENABLE_PCH=""
6299 AC_MSG_CHECKING([whether to enable pch feature])
6300 if test -z "$enable_pch"; then
6301     if test "$_os" = "WINNT"; then
6302         # Enabled by default on Windows.
6303         enable_pch=yes
6304         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6305         if test -z "$enable_ccache" -a "$SCCACHE"; then
6306             CCACHE=""
6307         fi
6308     else
6309         enable_pch=no
6310     fi
6312 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6313     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6315 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6316     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6318 if test "$enable_pch" = "system"; then
6319     ENABLE_PCH="1"
6320     AC_MSG_RESULT([yes (system headers)])
6321 elif test "$enable_pch" = "base"; then
6322     ENABLE_PCH="2"
6323     AC_MSG_RESULT([yes (system and base headers)])
6324 elif test "$enable_pch" = "normal"; then
6325     ENABLE_PCH="3"
6326     AC_MSG_RESULT([yes (normal)])
6327 elif test "$enable_pch" = "full"; then
6328     ENABLE_PCH="4"
6329     AC_MSG_RESULT([yes (full)])
6330 elif test "$enable_pch" = "yes"; then
6331     # Pick a suitable default.
6332     if test "$GCC" = "yes"; then
6333         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6334         # while making the PCHs larger and rebuilds more likely.
6335         ENABLE_PCH="2"
6336         AC_MSG_RESULT([yes (system and base headers)])
6337     else
6338         # With MSVC the highest level makes a significant difference,
6339         # and it was the default when there used to be no PCH levels.
6340         ENABLE_PCH="4"
6341         AC_MSG_RESULT([yes (full)])
6342     fi
6343 elif test "$enable_pch" = "no"; then
6344     AC_MSG_RESULT([no])
6345 else
6346     AC_MSG_ERROR([Unknown value for --enable-pch])
6348 AC_SUBST(ENABLE_PCH)
6349 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6350 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6351     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6352     if test "$CCACHE_BIN" != "not found"; then
6353         AC_MSG_CHECKING([ccache version])
6354         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6355         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6356         AC_MSG_RESULT([$CCACHE_VERSION])
6357         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6358         if test "$CCACHE_NUMVER" -gt "030701"; then
6359             AC_MSG_RESULT([yes])
6360         else
6361             AC_MSG_RESULT([no (not newer than 3.7.1)])
6362             CCACHE_DEPEND_MODE=
6363         fi
6364     fi
6367 PCH_INSTANTIATE_TEMPLATES=
6368 if test -n "$ENABLE_PCH"; then
6369     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6370     save_CFLAGS=$CFLAGS
6371     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6372     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6373     CFLAGS=$save_CFLAGS
6374     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6375         AC_MSG_RESULT(yes)
6376     else
6377         AC_MSG_RESULT(no)
6378     fi
6380 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6382 BUILDING_PCH_WITH_OBJ=
6383 if test -n "$ENABLE_PCH"; then
6384     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6385     save_CFLAGS=$CFLAGS
6386     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6387     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6388     CFLAGS=$save_CFLAGS
6389     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6390         AC_MSG_RESULT(yes)
6391     else
6392         AC_MSG_RESULT(no)
6393     fi
6395 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6397 PCH_CODEGEN=
6398 PCH_NO_CODEGEN=
6399 fpch_prefix=
6400 if test "$COM" = MSC; then
6401     fpch_prefix="-Xclang "
6403 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6404     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6405     save_CFLAGS=$CFLAGS
6406     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6407     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6408         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6409     CFLAGS=$save_CFLAGS
6410     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6411     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6412         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6413     CFLAGS=$save_CFLAGS
6414     if test -n "$PCH_CODEGEN"; then
6415         AC_MSG_RESULT(yes)
6416     else
6417         AC_MSG_RESULT(no)
6418     fi
6420 AC_SUBST(PCH_CODEGEN)
6421 AC_SUBST(PCH_NO_CODEGEN)
6422 PCH_DEBUGINFO=
6423 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6424     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6425     save_CFLAGS=$CFLAGS
6426     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6427     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6428     CFLAGS=$save_CFLAGS
6429     if test -n "$PCH_DEBUGINFO"; then
6430         AC_MSG_RESULT(yes)
6431     else
6432         AC_MSG_RESULT(no)
6433     fi
6435 AC_SUBST(PCH_DEBUGINFO)
6437 TAB=`printf '\t'`
6439 AC_MSG_CHECKING([the GNU Make version])
6440 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6441 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6442 if test "$_make_longver" -ge "040000"; then
6443     AC_MSG_RESULT([$GNUMAKE $_make_version])
6444 else
6445     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6448 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6449 STALE_MAKE=
6450 if test "$_make_ver_check" = ""; then
6451    STALE_MAKE=TRUE
6454 HAVE_LD_HASH_STYLE=FALSE
6455 WITH_LINKER_HASH_STYLE=
6456 AC_MSG_CHECKING([for --hash-style gcc linker support])
6457 if test "$GCC" = "yes"; then
6458     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6459         hash_styles="gnu sysv"
6460     elif test "$with_linker_hash_style" = "no"; then
6461         hash_styles=
6462     else
6463         hash_styles="$with_linker_hash_style"
6464     fi
6466     for hash_style in $hash_styles; do
6467         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6468         hash_style_ldflags_save=$LDFLAGS
6469         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6471         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6472             [
6473 #include <stdio.h>
6474             ],[
6475 printf ("");
6476             ])],
6477             [
6478                   HAVE_LD_HASH_STYLE=TRUE
6479                   WITH_LINKER_HASH_STYLE=$hash_style
6480             ],
6481             [HAVE_LD_HASH_STYLE=FALSE],
6482             [HAVE_LD_HASH_STYLE=FALSE])
6483         LDFLAGS=$hash_style_ldflags_save
6484     done
6486     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6487         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6488     else
6489         AC_MSG_RESULT( no )
6490     fi
6491     LDFLAGS=$hash_style_ldflags_save
6492 else
6493     AC_MSG_RESULT( no )
6495 AC_SUBST(HAVE_LD_HASH_STYLE)
6496 AC_SUBST(WITH_LINKER_HASH_STYLE)
6498 dnl ===================================================================
6499 dnl Check whether there's a Perl version available.
6500 dnl ===================================================================
6501 if test -z "$with_perl_home"; then
6502     AC_PATH_PROG(PERL, perl)
6503 else
6504     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6505     _perl_path="$with_perl_home/bin/perl"
6506     if test -x "$_perl_path"; then
6507         PERL=$_perl_path
6508     else
6509         AC_MSG_ERROR([$_perl_path not found])
6510     fi
6513 dnl ===================================================================
6514 dnl Testing for Perl version 5 or greater.
6515 dnl $] is the Perl version variable, it is returned as an integer
6516 dnl ===================================================================
6517 if test "$PERL"; then
6518     AC_MSG_CHECKING([the Perl version])
6519     ${PERL} -e "exit($]);"
6520     _perl_version=$?
6521     if test "$_perl_version" -lt 5; then
6522         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6523     fi
6524     AC_MSG_RESULT([Perl $_perl_version])
6525 else
6526     AC_MSG_ERROR([Perl not found, install Perl 5])
6529 dnl ===================================================================
6530 dnl Testing for required Perl modules
6531 dnl ===================================================================
6533 AC_MSG_CHECKING([for required Perl modules])
6534 perl_use_string="use Cwd ; use Digest::MD5"
6535 if test "$_os" = "WINNT"; then
6536     if test -n "$PKGFORMAT"; then
6537         for i in $PKGFORMAT; do
6538             case "$i" in
6539             msi)
6540                 # for getting fonts versions to use in MSI
6541                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6542                 ;;
6543             esac
6544         done
6545     fi
6547 if test "$with_system_hsqldb" = "yes"; then
6548     perl_use_string="$perl_use_string ; use Archive::Zip"
6550 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6551     # OpenSSL needs that to build
6552     perl_use_string="$perl_use_string ; use FindBin"
6554 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6555     AC_MSG_RESULT([all modules found])
6556 else
6557     AC_MSG_RESULT([failed to find some modules])
6558     # Find out which modules are missing.
6559     for i in $perl_use_string; do
6560         if test "$i" != "use" -a "$i" != ";"; then
6561             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6562                 missing_perl_modules="$missing_perl_modules $i"
6563             fi
6564         fi
6565     done
6566     AC_MSG_ERROR([
6567     The missing Perl modules are: $missing_perl_modules
6568     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6571 dnl ===================================================================
6572 dnl Check for pkg-config
6573 dnl ===================================================================
6574 if test "$_os" != "WINNT"; then
6575     PKG_PROG_PKG_CONFIG
6577 AC_SUBST(PKG_CONFIG)
6578 AC_SUBST(PKG_CONFIG_PATH)
6579 AC_SUBST(PKG_CONFIG_LIBDIR)
6581 if test "$_os" != "WINNT"; then
6583     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6584     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6585     # explicitly. Or put /path/to/compiler in PATH yourself.
6587     toolprefix=gcc
6588     if test "$COM_IS_CLANG" = "TRUE"; then
6589         toolprefix=llvm
6590     fi
6591     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6592     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6593     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6594     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6595     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6596     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6598 AC_SUBST(AR)
6599 AC_SUBST(NM)
6600 AC_SUBST(OBJDUMP)
6601 AC_SUBST(RANLIB)
6602 AC_SUBST(READELF)
6603 AC_SUBST(STRIP)
6605 dnl ===================================================================
6606 dnl pkg-config checks on macOS
6607 dnl ===================================================================
6609 if test $_os = Darwin; then
6610     AC_MSG_CHECKING([for bogus pkg-config])
6611     if test -n "$PKG_CONFIG"; then
6612         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6613             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6614         else
6615             if test "$enable_bogus_pkg_config" = "yes"; then
6616                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6617             else
6618                 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.])
6619             fi
6620         fi
6621     else
6622         AC_MSG_RESULT([no, good])
6623     fi
6626 find_csc()
6628     # Return value: $csctest
6630     unset csctest
6632     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6633     if test -n "$regvalue"; then
6634         csctest=$regvalue
6635         return
6636     fi
6639 find_al()
6641     # Return value: $altest
6643     unset altest
6645     # We need this check to detect 4.6.1 or above.
6646     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6647         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6648         PathFormat "$regvalue"
6649         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6650             altest=$regvalue
6651             return
6652         fi
6653     done
6655     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6656     for x in $reglist; do
6657         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6658         PathFormat "$regvalue"
6659         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6660             altest=$regvalue
6661             return
6662         fi
6663     done
6666 find_dotnetsdk()
6668     unset frametest
6670     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
6671         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6672         if test -n "$regvalue"; then
6673             frametest=$regvalue
6674             return
6675         fi
6676     done
6677     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6680 find_winsdk_version()
6682     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6683     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6685     unset winsdktest winsdkbinsubdir winsdklibsubdir
6687     case "$1" in
6688     8.0|8.0A)
6689         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6690         if test -n "$regvalue"; then
6691             winsdktest=$regvalue
6692             winsdklibsubdir=win8
6693             return
6694         fi
6695         ;;
6696     8.1|8.1A)
6697         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6698         if test -n "$regvalue"; then
6699             winsdktest=$regvalue
6700             winsdklibsubdir=winv6.3
6701             return
6702         fi
6703         ;;
6704     10.0)
6705         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6706         if test -n "$regvalue"; then
6707             winsdktest=$regvalue
6708             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6709             if test -n "$regvalue"; then
6710                 winsdkbinsubdir="$regvalue".0
6711                 winsdklibsubdir=$winsdkbinsubdir
6712                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6713                 local tmppath_unix=$(cygpath -u "$tmppath")
6714                 # test exist the SDK path
6715                 if test -d "$tmppath_unix"; then
6716                    # when path is convertible to a short path then path is okay
6717                    cygpath -d "$tmppath" >/dev/null 2>&1
6718                    if test $? -ne 0; then
6719                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6720                    fi
6721                 else
6722                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6723                 fi
6724             fi
6725             return
6726         fi
6727         ;;
6728     esac
6731 find_winsdk()
6733     # Return value: From find_winsdk_version
6735     unset winsdktest
6737     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6738         find_winsdk_version $ver
6739         if test -n "$winsdktest"; then
6740             return
6741         fi
6742     done
6745 find_msms()
6747     # Return value: $msmdir
6748     local version="$1"
6750     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6751     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6752     local my_msm_dir
6754     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6756     msmdir=
6757     case "$VCVER" in
6758     16.0 | 17.0 | 17.9)
6759         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6760             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6761             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6762             if test -e "$my_msm_dir${my_msm_file}"; then
6763                 msmdir=$my_msm_dir
6764             fi
6765         done
6766         ;;
6767     esac
6769     if test -n "$msmdir"; then
6770         msmdir=`cygpath -m "$msmdir"`
6771         AC_MSG_RESULT([$msmdir])
6772     else
6773         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6774             AC_MSG_FAILURE([not found])
6775         else
6776             AC_MSG_WARN([not found (check config.log)])
6777             add_warning "MSM ${my_msm_file} not found"
6778         fi
6779     fi
6782 find_msvc_x64_dlls()
6784     # Return value: $msvcdllpath, $msvcdlls
6786     AC_MSG_CHECKING([for MSVC x64 DLL path])
6788     dnl Order crtver in increasing order. Then check the directories returned by
6789     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6790     dnl the result will be the highest CRT version found in the highest directory.
6792     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6793     case "$VCVER" in
6794     16.0 | 17.0 | 17.9)
6795         for crtver in 141 142 143; do
6796             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6797                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6798                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6799                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6800                 fi
6801             done
6802         done
6803         ;;
6804     esac
6805     AC_MSG_RESULT([$msvcdllpath])
6806     AC_MSG_CHECKING([for MSVC x64 DLLs])
6807     msvcdlls="msvcp140.dll vcruntime140.dll"
6808     for dll in $msvcdlls; do
6809         if ! test -f "$msvcdllpath/$dll"; then
6810             AC_MSG_FAILURE([missing $dll])
6811         fi
6812     done
6813     AC_MSG_RESULT([found all ($msvcdlls)])
6816 dnl =========================================
6817 dnl Check for the Windows  SDK.
6818 dnl =========================================
6819 if test "$_os" = "WINNT"; then
6820     AC_MSG_CHECKING([for Windows SDK])
6821     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6822         find_winsdk
6823         WINDOWS_SDK_HOME=$winsdktest
6825         # normalize if found
6826         if test -n "$WINDOWS_SDK_HOME"; then
6827             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6828             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6829         fi
6831         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6832     fi
6834     if test -n "$WINDOWS_SDK_HOME"; then
6835         # Remove a possible trailing backslash
6836         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6838         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6839              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6840              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6841             have_windows_sdk_headers=yes
6842         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6843              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6844              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6845             have_windows_sdk_headers=yes
6846         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6847              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6848              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6849             have_windows_sdk_headers=yes
6850         else
6851             have_windows_sdk_headers=no
6852         fi
6854         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6855             have_windows_sdk_libs=yes
6856         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6857             have_windows_sdk_libs=yes
6858         else
6859             have_windows_sdk_libs=no
6860         fi
6862         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6863             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6864 the  Windows SDK are installed.])
6865         fi
6866     fi
6868     if test -z "$WINDOWS_SDK_HOME"; then
6869         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6870     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6871         WINDOWS_SDK_VERSION=80
6872         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6873     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6874         WINDOWS_SDK_VERSION=81
6875         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6876     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6877         WINDOWS_SDK_VERSION=10
6878         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6879     else
6880         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6881     fi
6882     PathFormat "$WINDOWS_SDK_HOME"
6883     WINDOWS_SDK_HOME="$formatted_path"
6884     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6885     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6886         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6887         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6888             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6889         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6890             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6891         fi
6892     fi
6894     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6895     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6896     dnl but not in v8.0), so allow this to be overridden with a
6897     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6898     dnl and configuration error if no WiLangId.vbs is found would arguably be
6899     dnl better, but I do not know under which conditions exactly it is needed by
6900     dnl msiglobal.pm:
6901     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6902         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6903         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6904         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6905             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6906             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6907         fi
6908         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6909             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6910             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6911         fi
6912         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6913             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6914             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6915         fi
6916     fi
6917     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6918         if test -n "$with_package_format" -a "$with_package_format" != no; then
6919             for i in "$with_package_format"; do
6920                 if test "$i" = "msi"; then
6921                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6922                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6923                     fi
6924                 fi
6925             done
6926         fi
6927     fi
6929 AC_SUBST(WINDOWS_SDK_HOME)
6930 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6931 AC_SUBST(WINDOWS_SDK_VERSION)
6932 AC_SUBST(WINDOWS_SDK_WILANGID)
6934 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6935     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6936     dnl dir, it also determines that dir's path w/o an arch segment if any,
6937     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6938     AC_MSG_CHECKING([for midl.exe])
6940     find_winsdk
6941     PathFormat "$winsdktest"
6942     winsdktest_unix="$formatted_path_unix"
6944     if test -n "$winsdkbinsubdir" \
6945         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6946     then
6947         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6948         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6949     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6950         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6951         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6952     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6953         MIDL_PATH=$winsdktest/Bin
6954         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6955     fi
6956     PathFormat "$MIDL_PATH"
6957     if test ! -f "$formatted_path_unix/midl.exe"; then
6958         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6959     else
6960         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6961     fi
6963     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6964     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6966     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6967          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6968          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6969          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6970     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6971          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6972          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6973          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6974     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6975          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6976          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6977          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6978     else
6979         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6980     fi
6982     dnl Check csc.exe
6983     AC_MSG_CHECKING([for csc.exe])
6984     find_csc
6985     PathFormat "$csctest"
6986     csctest_unix="$formatted_path_unix"
6987     if test -f "$csctest_unix/csc.exe"; then
6988         CSC_PATH="$csctest"
6989     fi
6990     if test ! -f "$csctest_unix/csc.exe"; then
6991         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6992     else
6993         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6994     fi
6996     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6998     dnl Check al.exe
6999     AC_MSG_CHECKING([for al.exe])
7000     if test -n "$winsdkbinsubdir" \
7001         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
7002     then
7003         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
7004     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
7005         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7006     elif test -f "$winsdktest_unix/Bin/al.exe"; then
7007         AL_PATH="$winsdktest/Bin"
7008     fi
7010     if test -z "$AL_PATH"; then
7011         find_al
7012         PathFormat "$altest"
7013         altest_unix="$formatted_path_unix"
7014         if test -f "$altest_unix/bin/al.exe"; then
7015             AL_PATH="$altest/bin"
7016         elif test -f "$altest_unix/al.exe"; then
7017             AL_PATH="$altest"
7018         fi
7019     fi
7020     PathFormat "$AL_PATH"
7021     if test ! -f "$formatted_path_unix/al.exe"; then
7022         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7023     else
7024         AC_MSG_RESULT([$AL_PATH/al.exe])
7025     fi
7027     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7029     dnl Check mscoree.lib / .NET Framework dir
7030     AC_MSG_CHECKING(.NET Framework)
7031     find_dotnetsdk
7032     PathFormat "$frametest"
7033     frametest="$formatted_path_unix"
7034     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7035         DOTNET_FRAMEWORK_HOME="$frametest"
7036     else
7037         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7038             DOTNET_FRAMEWORK_HOME="$winsdktest"
7039         fi
7040     fi
7041     PathFormat "$DOTNET_FRAMEWORK_HOME"
7042     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
7043         AC_MSG_ERROR([mscoree.lib not found])
7044     fi
7045     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7047     PathFormat "$MIDL_PATH"
7048     MIDL_PATH="$formatted_path"
7050     PathFormat "$AL_PATH"
7051     AL_PATH="$formatted_path"
7053     PathFormat "$DOTNET_FRAMEWORK_HOME"
7054     DOTNET_FRAMEWORK_HOME="$formatted_path"
7056     PathFormat "$CSC_PATH"
7057     CSC_PATH="$formatted_path"
7060 dnl ===================================================================
7061 dnl Testing for C++ compiler and version...
7062 dnl ===================================================================
7064 if test "$_os" != "WINNT"; then
7065     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7066     save_CXXFLAGS=$CXXFLAGS
7067     AC_PROG_CXX
7068     CXXFLAGS=$save_CXXFLAGS
7069     if test -z "$CXX_BASE"; then
7070         CXX_BASE=`first_arg_basename "$CXX"`
7071     fi
7074 dnl check for GNU C++ compiler version
7075 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7076     AC_MSG_CHECKING([the GNU C++ compiler version])
7078     _gpp_version=`$CXX -dumpversion`
7079     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7081     if test "$_gpp_majmin" -lt "700"; then
7082         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7083     else
7084         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7085     fi
7087     dnl see https://issuetracker.google.com/issues/36962819
7088         glibcxx_threads=no
7089         AC_LANG_PUSH([C++])
7090         AC_REQUIRE_CPP
7091         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7092         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7093             #include <bits/c++config.h>]],[[
7094             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7095             && !defined(_GLIBCXX__PTHREADS) \
7096             && !defined(_GLIBCXX_HAS_GTHREADS)
7097             choke me
7098             #endif
7099         ]])],[AC_MSG_RESULT([yes])
7100         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7101         AC_LANG_POP([C++])
7102         if test $glibcxx_threads = yes; then
7103             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7104         fi
7106 AC_SUBST(BOOST_CXXFLAGS)
7109 # prefx CXX with ccache if needed
7111 if test "$CCACHE" != ""; then
7112     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7113     AC_LANG_PUSH([C++])
7114     save_CXXFLAGS=$CXXFLAGS
7115     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7116     # msvc does not fail on unknown options, check stdout
7117     if test "$COM" = MSC; then
7118         CXXFLAGS="$CXXFLAGS -nologo"
7119     fi
7120     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7121     ac_cxx_werror_flag=yes
7122     dnl an empty program will do, we're checking the compiler flags
7123     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7124                       [use_ccache=yes], [use_ccache=no])
7125     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7126         AC_MSG_RESULT([yes])
7127     else
7128         CXX="$CCACHE $CXX"
7129         CXX_BASE="ccache $CXX_BASE"
7130         AC_MSG_RESULT([no])
7131     fi
7132     CXXFLAGS=$save_CXXFLAGS
7133     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7134     AC_LANG_POP([C++])
7137 dnl ===================================================================
7138 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7139 dnl ===================================================================
7141 if test "$_os" != "WINNT"; then
7142     AC_PROG_CXXCPP
7144     dnl Check whether there's a C pre-processor.
7145     AC_PROG_CPP
7149 dnl ===================================================================
7150 dnl Find integral type sizes and alignments
7151 dnl ===================================================================
7153 if test "$_os" != "WINNT"; then
7155     AC_CHECK_SIZEOF(long)
7156     AC_CHECK_SIZEOF(short)
7157     AC_CHECK_SIZEOF(int)
7158     AC_CHECK_SIZEOF(long long)
7159     AC_CHECK_SIZEOF(double)
7160     AC_CHECK_SIZEOF(void*)
7161     AC_CHECK_SIZEOF(size_t)
7163     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7164     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7165     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7166     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7167     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7168     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7170     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7171     m4_pattern_allow([AC_CHECK_ALIGNOF])
7172     m4_ifdef([AC_CHECK_ALIGNOF],
7173         [
7174             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7175             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7176             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7177             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7178         ],
7179         [
7180             case "$_os-$host_cpu" in
7181             Linux-i686)
7182                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7183                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7184                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7185                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7186                 ;;
7187             Linux-x86_64)
7188                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7189                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7190                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7191                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7192                 ;;
7193             *)
7194                 if test -z "$ac_cv_alignof_short" -o \
7195                         -z "$ac_cv_alignof_int" -o \
7196                         -z "$ac_cv_alignof_long" -o \
7197                         -z "$ac_cv_alignof_double"; then
7198                    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.])
7199                 fi
7200                 ;;
7201             esac
7202         ])
7204     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7205     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7206     if test $ac_cv_sizeof_long -eq 8; then
7207         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7208     elif test $ac_cv_sizeof_double -eq 8; then
7209         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7210     else
7211         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7212     fi
7214     dnl Check for large file support
7215     AC_SYS_LARGEFILE
7216     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7217         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7218     fi
7219     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7220         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7221     fi
7222 else
7223     # Hardcode for MSVC
7224     SAL_TYPES_SIZEOFSHORT=2
7225     SAL_TYPES_SIZEOFINT=4
7226     SAL_TYPES_SIZEOFLONG=4
7227     SAL_TYPES_SIZEOFLONGLONG=8
7228     if test $WIN_HOST_BITS -eq 32; then
7229         SAL_TYPES_SIZEOFPOINTER=4
7230         SIZEOF_SIZE_T=4
7231     else
7232         SAL_TYPES_SIZEOFPOINTER=8
7233         SIZEOF_SIZE_T=8
7234     fi
7235     SAL_TYPES_ALIGNMENT2=2
7236     SAL_TYPES_ALIGNMENT4=4
7237     SAL_TYPES_ALIGNMENT8=8
7238     LFS_CFLAGS=''
7240 AC_SUBST(LFS_CFLAGS)
7241 AC_SUBST(SIZEOF_SIZE_T)
7243 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7244 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7245 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7246 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7247 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7248 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7249 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7250 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7252 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7253 AC_MSG_CHECKING([whether jumbo sheets are supported])
7254 if test "$_os" != "WINNT"; then
7255     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7256         AC_MSG_RESULT([yes])
7257         ENABLE_JUMBO_SHEETS=TRUE
7258         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7259     else
7260         AC_MSG_RESULT([no])
7261     fi
7262 else
7263     if test $WIN_HOST_BITS -gt 32; then
7264         # 64bit windows is special-cased for tools::Long because long is 32bit
7265         AC_MSG_RESULT([yes])
7266         ENABLE_JUMBO_SHEETS=TRUE
7267         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7268     else
7269         AC_MSG_RESULT([no])
7270     fi
7272 AC_SUBST(ENABLE_JUMBO_SHEETS)
7274 dnl ===================================================================
7275 dnl Check whether to enable runtime optimizations
7276 dnl ===================================================================
7277 ENABLE_RUNTIME_OPTIMIZATIONS=
7278 AC_MSG_CHECKING([whether to enable runtime optimizations])
7279 if test -z "$enable_runtime_optimizations"; then
7280     for i in $CC; do
7281         case $i in
7282         -fsanitize=*)
7283             enable_runtime_optimizations=no
7284             break
7285             ;;
7286         esac
7287     done
7289 if test "$enable_runtime_optimizations" != no; then
7290     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7291     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7292     AC_MSG_RESULT([yes])
7293 else
7294     AC_MSG_RESULT([no])
7296 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7298 dnl ===================================================================
7299 dnl Check if valgrind headers are available
7300 dnl ===================================================================
7301 ENABLE_VALGRIND=
7302 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7303     prev_cppflags=$CPPFLAGS
7304     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7305     # or where does it come from?
7306     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7307     AC_CHECK_HEADER([valgrind/valgrind.h],
7308         [ENABLE_VALGRIND=TRUE])
7309     CPPFLAGS=$prev_cppflags
7311 AC_SUBST([ENABLE_VALGRIND])
7312 if test -z "$ENABLE_VALGRIND"; then
7313     if test "$with_valgrind" = yes; then
7314         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7315     fi
7316     VALGRIND_CFLAGS=
7318 AC_SUBST([VALGRIND_CFLAGS])
7321 dnl ===================================================================
7322 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7323 dnl ===================================================================
7325 # We need at least the sys/sdt.h include header.
7326 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7327 if test "$SDT_H_FOUND" = "TRUE"; then
7328     # Found sys/sdt.h header, now make sure the c++ compiler works.
7329     # Old g++ versions had problems with probes in constructors/destructors.
7330     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7331     AC_LANG_PUSH([C++])
7332     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7333     #include <sys/sdt.h>
7334     class ProbeClass
7335     {
7336     private:
7337       int& ref;
7338       const char *name;
7340     public:
7341       ProbeClass(int& v, const char *n) : ref(v), name(n)
7342       {
7343         DTRACE_PROBE2(_test_, cons, name, ref);
7344       }
7346       void method(int min)
7347       {
7348         DTRACE_PROBE3(_test_, meth, name, ref, min);
7349         ref -= min;
7350       }
7352       ~ProbeClass()
7353       {
7354         DTRACE_PROBE2(_test_, dest, name, ref);
7355       }
7356     };
7357     ]],[[
7358     int i = 64;
7359     DTRACE_PROBE1(_test_, call, i);
7360     ProbeClass inst = ProbeClass(i, "call");
7361     inst.method(24);
7362     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7363           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7364     AC_LANG_POP([C++])
7366 AC_CONFIG_HEADERS([config_host/config_probes.h])
7368 dnl ===================================================================
7369 dnl GCC features
7370 dnl ===================================================================
7371 HAVE_GCC_STACK_CLASH_PROTECTION=
7372 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7373     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7374     save_CFLAGS=$CFLAGS
7375     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7376     AC_LINK_IFELSE(
7377         [AC_LANG_PROGRAM(, [[return 0;]])],
7378         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7379         [AC_MSG_RESULT([no])])
7380     CFLAGS=$save_CFLAGS
7382     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7383     save_CFLAGS=$CFLAGS
7384     CFLAGS="$CFLAGS -Werror -mno-avx"
7385     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7386     CFLAGS=$save_CFLAGS
7387     if test "$HAVE_GCC_AVX" = "TRUE"; then
7388         AC_MSG_RESULT([yes])
7389     else
7390         AC_MSG_RESULT([no])
7391     fi
7393     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7394     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7395     int v = 0;
7396     if (__sync_add_and_fetch(&v, 1) != 1 ||
7397         __sync_sub_and_fetch(&v, 1) != 0)
7398         return 1;
7399     __sync_synchronize();
7400     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7401         v != 1)
7402         return 1;
7403     return 0;
7404 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7405     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7406         AC_MSG_RESULT([yes])
7407         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7408     else
7409         AC_MSG_RESULT([no])
7410     fi
7412     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7413     AC_LANG_PUSH([C++])
7414     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7415             #include <cstddef>
7416             #include <cxxabi.h>
7417             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7418         ])], [
7419             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7420             AC_MSG_RESULT([yes])
7421         ], [AC_MSG_RESULT([no])])
7422     AC_LANG_POP([C++])
7424     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7425     AC_LANG_PUSH([C++])
7426     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7427             #include <cstddef>
7428             #include <cxxabi.h>
7429             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7430         ])], [
7431             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7432             AC_MSG_RESULT([yes])
7433         ], [AC_MSG_RESULT([no])])
7434     AC_LANG_POP([C++])
7436     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7437     AC_LANG_PUSH([C++])
7438     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7439             #include <cxxabi.h>
7440             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7441         ])], [
7442             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7443             AC_MSG_RESULT([yes])
7444         ], [AC_MSG_RESULT([no])])
7445     AC_LANG_POP([C++])
7447     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7448     AC_LANG_PUSH([C++])
7449     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7450             #include <cstddef>
7451             #include <cxxabi.h>
7452             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7453         ])], [
7454             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7455             AC_MSG_RESULT([yes])
7456         ], [AC_MSG_RESULT([no])])
7457     AC_LANG_POP([C++])
7459     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7460     AC_LANG_PUSH([C++])
7461     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7462             #include <cstddef>
7463             #include <cxxabi.h>
7464             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7465         ])], [
7466             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7467             AC_MSG_RESULT([yes])
7468         ], [AC_MSG_RESULT([no])])
7469     AC_LANG_POP([C++])
7471     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7472     AC_LANG_PUSH([C++])
7473     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7474             #include <cxxabi.h>
7475             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7476         ])], [
7477             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7478             AC_MSG_RESULT([yes])
7479         ], [AC_MSG_RESULT([no])])
7480     AC_LANG_POP([C++])
7482     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7483     AC_LANG_PUSH([C++])
7484     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7485             #include <cxxabi.h>
7486             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7487         ])], [
7488             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7489             AC_MSG_RESULT([yes])
7490         ], [AC_MSG_RESULT([no])])
7491     AC_LANG_POP([C++])
7493     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7494     AC_LANG_PUSH([C++])
7495     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7496             #include <cxxabi.h>
7497             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7498         ])], [
7499             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7500             AC_MSG_RESULT([yes])
7501         ], [AC_MSG_RESULT([no])])
7502     AC_LANG_POP([C++])
7504     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7505     AC_LANG_PUSH([C++])
7506     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7507             #include <cstddef>
7508             #include <cxxabi.h>
7509             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7510         ])], [
7511             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7512             AC_MSG_RESULT([yes])
7513         ], [AC_MSG_RESULT([no])])
7514     AC_LANG_POP([C++])
7516     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7517     AC_LANG_PUSH([C++])
7518     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7519             #include <cstddef>
7520             #include <cxxabi.h>
7521             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7522         ])], [
7523             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7524             AC_MSG_RESULT([yes])
7525         ], [AC_MSG_RESULT([no])])
7526     AC_LANG_POP([C++])
7529 AC_SUBST(HAVE_GCC_AVX)
7530 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7531 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7533 dnl ===================================================================
7534 dnl Identify the C++ library
7535 dnl ===================================================================
7537 AC_MSG_CHECKING([what the C++ library is])
7538 HAVE_LIBSTDCPP=
7539 HAVE_LIBCPP=
7540 AC_LANG_PUSH([C++])
7541 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7542 #include <utility>
7543 #ifndef __GLIBCXX__
7544 foo bar
7545 #endif
7546 ]])],
7547     [CPP_LIBRARY=GLIBCXX
7548      cpp_library_name="GNU libstdc++"
7549      HAVE_LIBSTDCPP=TRUE
7550     ],
7551     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7552 #include <utility>
7553 #ifndef _LIBCPP_VERSION
7554 foo bar
7555 #endif
7556 ]])],
7557     [CPP_LIBRARY=LIBCPP
7558      cpp_library_name="LLVM libc++"
7559      AC_DEFINE([HAVE_LIBCPP])
7560      HAVE_LIBCPP=TRUE
7561     ],
7562     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7563 #include <utility>
7564 #ifndef _MSC_VER
7565 foo bar
7566 #endif
7567 ]])],
7568     [CPP_LIBRARY=MSVCRT
7569      cpp_library_name="Microsoft"
7570     ],
7571     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7572 AC_MSG_RESULT([$cpp_library_name])
7573 AC_LANG_POP([C++])
7574 AC_SUBST([HAVE_LIBSTDCPP])
7575 AC_SUBST([HAVE_LIBCPP])
7577 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7578 then
7579     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7580     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7581     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7582     # although there will be backwards compatibility).
7583     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7584     # and there would be undefined references to debug functions.
7585     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7586     # So check if debug mode can be used and disable or downgrade it to assertions
7587     # if needed.
7588     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7589     AC_LANG_PUSH([C++])
7590     libcpp_debug_links=
7591     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7592 #define _LIBCPP_DEBUG 0 // only assertions
7593 #include <vector>
7594 int main()
7596     std::vector<int> v;
7597     v.push_back( 1 );
7598     return v[ 3 ];
7600 ]])], [libcpp_debug_links=1])
7601     if test -n "$libcpp_debug_links"; then
7602         # we can use at least assertions, check if debug mode works
7603         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7604 #define _LIBCPP_DEBUG 1 // debug mode
7605 #include <string>
7606 #include <vector>
7607 int foo(const std::vector<int>& v) { return *v.begin(); }
7608 int main()
7610     std::vector<int> v;
7611     v.push_back( 1 );
7612     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7613     return (foo(v) + s.size()) != 0 ? 0 : 1;
7615 ]])],
7616         [AC_MSG_RESULT(yes)
7617          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7618         ],
7619         [AC_MSG_RESULT(no, using only assertions)
7620          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7621         ]
7622         )
7623     else
7624         AC_MSG_RESULT(no)
7625     fi
7626     AC_LANG_POP([C++])
7628 AC_SUBST([LIBCPP_DEBUG])
7630 dnl ===================================================================
7631 dnl Check for gperf
7632 dnl ===================================================================
7633 AC_PATH_PROG(GPERF, gperf)
7634 if test -z "$GPERF"; then
7635     AC_MSG_ERROR([gperf not found but needed. Install it.])
7637 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7638     GPERF=`cygpath -m $GPERF`
7640 AC_MSG_CHECKING([whether gperf is new enough])
7641 my_gperf_ver1=$($GPERF --version | head -n 1)
7642 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7643 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7644 if test "$my_gperf_ver3" -ge 301; then
7645     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7646 else
7647     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7649 AC_SUBST(GPERF)
7651 dnl ===================================================================
7652 dnl Check for system libcmis
7653 dnl ===================================================================
7654 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7656 dnl ===================================================================
7657 dnl C++11
7658 dnl ===================================================================
7660 if test -z "${CXXFLAGS_CXX11+x}"; then
7661     AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7662     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7663         if test "$with_latest_c__" = yes; then
7664             CXXFLAGS_CXX11=-std:c++latest
7665         else
7666             CXXFLAGS_CXX11=-std:c++20
7667         fi
7668         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7669     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7670         my_flags='-std=c++20 -std=c++2a'
7671         if test "$with_latest_c__" = yes; then
7672             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7673         fi
7674         for flag in $my_flags; do
7675             if test "$COM" = MSC; then
7676                 flag="-Xclang $flag"
7677             fi
7678             save_CXXFLAGS=$CXXFLAGS
7679             CXXFLAGS="$CXXFLAGS $flag -Werror"
7680             AC_LANG_PUSH([C++])
7681             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7682                 #include <algorithm>
7683                 #include <functional>
7684                 #include <vector>
7686                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7687                     std::sort(v.begin(), v.end(), fn);
7688                 }
7689                 ]])],[CXXFLAGS_CXX11=$flag])
7690             AC_LANG_POP([C++])
7691             CXXFLAGS=$save_CXXFLAGS
7692             if test -n "$CXXFLAGS_CXX11"; then
7693                 break
7694             fi
7695         done
7696     fi
7697     if test -n "$CXXFLAGS_CXX11"; then
7698         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7699     else
7700         AC_MSG_ERROR(no)
7701     fi
7703 AC_SUBST(CXXFLAGS_CXX11)
7705 if test "$GCC" = "yes"; then
7706     save_CXXFLAGS=$CXXFLAGS
7707     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7708     CHECK_L_ATOMIC
7709     CXXFLAGS=$save_CXXFLAGS
7710     AC_SUBST(ATOMIC_LIB)
7713 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7714 save_CXXFLAGS=$CXXFLAGS
7715 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7716 AC_LANG_PUSH([C++])
7718 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7719 #include <stddef.h>
7721 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7723 namespace
7725         struct b
7726         {
7727                 int i;
7728                 int j;
7729         };
7731 ]], [[
7732 struct a
7734         int i;
7735         int j;
7737 a thinga[]={{0,0}, {1,1}};
7738 b thingb[]={{0,0}, {1,1}};
7739 size_t i = sizeof(sal_n_array_size(thinga));
7740 size_t j = sizeof(sal_n_array_size(thingb));
7741 return !(i != 0 && j != 0);
7743     ], [ AC_MSG_RESULT(yes) ],
7744     [ AC_MSG_ERROR(no)])
7745 AC_LANG_POP([C++])
7746 CXXFLAGS=$save_CXXFLAGS
7748 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7749 if test "$GCC" = yes; then
7750     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7751     AC_LANG_PUSH([C++])
7752     save_CXXFLAGS=$CXXFLAGS
7753     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7754     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7755     CXXFLAGS=$save_CXXFLAGS
7756     AC_LANG_POP([C++])
7757     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7758         AC_MSG_RESULT([yes])
7759     else
7760         AC_MSG_RESULT([no])
7761     fi
7763 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7765 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7766 AC_LANG_PUSH([C++])
7767 save_CXXFLAGS=$CXXFLAGS
7768 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7769 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7770         #include <algorithm>
7771         #include <initializer_list>
7772         #include <vector>
7773         template<typename T> class S {
7774         private:
7775             std::vector<T> v_;
7776         public:
7777             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7778         };
7779         constinit S<int> s{3, 2, 1};
7780     ])], [
7781         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7782         AC_MSG_RESULT([yes])
7783     ], [AC_MSG_RESULT([no])])
7784 CXXFLAGS=$save_CXXFLAGS
7785 AC_LANG_POP([C++])
7787 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7788 AC_LANG_PUSH([C++])
7789 save_CXXFLAGS=$CXXFLAGS
7790 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7791 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7792         struct S1 { S1(S1 &&); };
7793         struct S2: S1 {};
7794         S1 f(S2 s) { return s; }
7795     ])], [
7796         AC_DEFINE([HAVE_P1155R3],[1])
7797         AC_MSG_RESULT([yes])
7798     ], [AC_MSG_RESULT([no])])
7799 CXXFLAGS=$save_CXXFLAGS
7800 AC_LANG_POP([C++])
7802 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7803 HAVE_CXX20_ATOMIC_REF=
7804 AC_LANG_PUSH([C++])
7805 save_CXXFLAGS=$CXXFLAGS
7806 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7807 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7808         #include <atomic>
7809         int x;
7810         std::atomic_ref<int> y(x);
7811     ])], [
7812         HAVE_CXX20_ATOMIC_REF=TRUE
7813         AC_MSG_RESULT([yes])
7814     ], [AC_MSG_RESULT([no])])
7815 CXXFLAGS=$save_CXXFLAGS
7816 AC_LANG_POP([C++])
7817 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7819 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7820 dnl which is included in -Wextra anyway):
7821 HAVE_WDEPRECATED_COPY_DTOR=
7822 if test "$GCC" = yes; then
7823     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7824     AC_LANG_PUSH([C++])
7825     save_CXXFLAGS=$CXXFLAGS
7826     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7827     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7828             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7829             AC_MSG_RESULT([yes])
7830         ], [AC_MSG_RESULT([no])])
7831     CXXFLAGS=$save_CXXFLAGS
7832     AC_LANG_POP([C++])
7834 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7836 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7837 dnl uninitialized warning for code like
7839 dnl   OString f();
7840 dnl   boost::optional<OString> * g(bool b) {
7841 dnl       boost::optional<OString> o;
7842 dnl       if (b) o = f();
7843 dnl       return new boost::optional<OString>(o);
7844 dnl   }
7846 dnl (as is e.g. present, in a slightly more elaborate form, in
7847 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7848 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7849 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7850 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7851     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7852     AC_LANG_PUSH([C++])
7853     save_CXXFLAGS=$CXXFLAGS
7854     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7855     if test "$ENABLE_OPTIMIZED" = TRUE; then
7856         CXXFLAGS="$CXXFLAGS -O2"
7857     else
7858         CXXFLAGS="$CXXFLAGS -O0"
7859     fi
7860     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7861             #include <new>
7862             void f1(int);
7863             struct S1 {
7864                 ~S1() { f1(n); }
7865                 int n = 0;
7866             };
7867             struct S2 {
7868                 S2() {}
7869                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7870                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7871                 void set(S1 s) {
7872                     new (stg) S1(s);
7873                     init = true;
7874                 }
7875                 bool init = false;
7876                 char stg[sizeof (S1)];
7877             } ;
7878             S1 f2();
7879             S2 * f3(bool b) {
7880                 S2 o;
7881                 if (b) o.set(f2());
7882                 return new S2(o);
7883             }
7884         ]])], [AC_MSG_RESULT([no])], [
7885             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7886             AC_MSG_RESULT([yes])
7887         ])
7888     CXXFLAGS=$save_CXXFLAGS
7889     AC_LANG_POP([C++])
7891 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7893 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7894 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7895 dnl hits us e.g. with GCC 10 and --enable-optimized at
7897 dnl   In file included from include/rtl/string.hxx:49,
7898 dnl                    from include/rtl/ustring.hxx:43,
7899 dnl                    from include/osl/file.hxx:35,
7900 dnl                    from include/codemaker/global.hxx:28,
7901 dnl                    from include/codemaker/options.hxx:23,
7902 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7903 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7904 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,
7905 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,
7906 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,
7907 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7908 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7909 dnl      78 |         memcpy( buffer, data, length );
7910 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7911 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7912 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7913     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7914     AC_LANG_PUSH([C++])
7915     save_CXXFLAGS=$CXXFLAGS
7916     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7917     if test "$ENABLE_OPTIMIZED" = TRUE; then
7918         CXXFLAGS="$CXXFLAGS -O2"
7919     else
7920         CXXFLAGS="$CXXFLAGS -O0"
7921     fi
7922     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7923     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7924             void fill(char const * begin, char const * end, char c);
7925             struct q {
7926                 char ids[4];
7927                 char username[6];
7928             };
7929             void test(q & c) {
7930                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7931                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7932             }
7933         ]])], [AC_MSG_RESULT([no])], [
7934             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7935             AC_MSG_RESULT([yes])
7936         ])
7937     CXXFLAGS=$save_CXXFLAGS
7938     AC_LANG_POP([C++])
7940 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7942 HAVE_DLLEXPORTINLINES=
7943 if test "$_os" = "WINNT"; then
7944     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7945     AC_LANG_PUSH([C++])
7946     save_CXXFLAGS=$CXXFLAGS
7947     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7948     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7949             HAVE_DLLEXPORTINLINES=TRUE
7950             AC_MSG_RESULT([yes])
7951         ], [AC_MSG_RESULT([no])])
7952     CXXFLAGS=$save_CXXFLAGS
7953     AC_LANG_POP([C++])
7955 AC_SUBST([HAVE_DLLEXPORTINLINES])
7957 dnl ===================================================================
7958 dnl CPU Intrinsics support - SSE, AVX
7959 dnl ===================================================================
7961 CXXFLAGS_INTRINSICS_SSE2=
7962 CXXFLAGS_INTRINSICS_SSSE3=
7963 CXXFLAGS_INTRINSICS_SSE41=
7964 CXXFLAGS_INTRINSICS_SSE42=
7965 CXXFLAGS_INTRINSICS_AVX=
7966 CXXFLAGS_INTRINSICS_AVX2=
7967 CXXFLAGS_INTRINSICS_AVX512=
7968 CXXFLAGS_INTRINSICS_AVX512F=
7969 CXXFLAGS_INTRINSICS_F16C=
7970 CXXFLAGS_INTRINSICS_FMA=
7972 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7973     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7974     flag_sse2=-msse2
7975     flag_ssse3=-mssse3
7976     flag_sse41=-msse4.1
7977     flag_sse42=-msse4.2
7978     flag_avx=-mavx
7979     flag_avx2=-mavx2
7980     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7981     flag_avx512f=-mavx512f
7982     flag_f16c=-mf16c
7983     flag_fma=-mfma
7984 else
7985     # With MSVC using -arch is in fact not necessary for being able
7986     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7987     # even if compiled with -arch:AVX, the -arch option really only affects
7988     # instructions generated for C/C++ code.
7989     # So use the matching same (or lower) -arch options, but only in order
7990     # to generate the best matching instructions for the C++ code surrounding
7991     # the intrinsics.
7992     # SSE2 is the default for x86/x64, so no need to specify the option.
7993     flag_sse2=
7994     # No specific options for these, use the next lower.
7995     flag_ssse3="$flag_sse2"
7996     flag_sse41="$flag_sse2"
7997     flag_sse42="$flag_sse2"
7998     flag_avx=-arch:AVX
7999     flag_avx2=-arch:AVX2
8000     flag_avx512=-arch:AVX512
8001     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
8002     flag_avx512f=-arch:AVX2
8003     # No MSVC options for these.
8004     flag_f16c="$flag_sse2"
8005     flag_fma="$flag_sse2"
8008 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8009 AC_LANG_PUSH([C++])
8010 save_CXXFLAGS=$CXXFLAGS
8011 CXXFLAGS="$CXXFLAGS $flag_sse2"
8012 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8013     #include <emmintrin.h>
8014     int main () {
8015         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8016         c = _mm_xor_si128 (a, b);
8017         return 0;
8018     }
8019     ])],
8020     [can_compile_sse2=yes],
8021     [can_compile_sse2=no])
8022 AC_LANG_POP([C++])
8023 CXXFLAGS=$save_CXXFLAGS
8024 AC_MSG_RESULT([${can_compile_sse2}])
8025 if test "${can_compile_sse2}" = "yes" ; then
8026     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8029 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8030 AC_LANG_PUSH([C++])
8031 save_CXXFLAGS=$CXXFLAGS
8032 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8033 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8034     #include <tmmintrin.h>
8035     int main () {
8036         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8037         c = _mm_maddubs_epi16 (a, b);
8038         return 0;
8039     }
8040     ])],
8041     [can_compile_ssse3=yes],
8042     [can_compile_ssse3=no])
8043 AC_LANG_POP([C++])
8044 CXXFLAGS=$save_CXXFLAGS
8045 AC_MSG_RESULT([${can_compile_ssse3}])
8046 if test "${can_compile_ssse3}" = "yes" ; then
8047     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8050 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8051 AC_LANG_PUSH([C++])
8052 save_CXXFLAGS=$CXXFLAGS
8053 CXXFLAGS="$CXXFLAGS $flag_sse41"
8054 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8055     #include <smmintrin.h>
8056     int main () {
8057         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8058         c = _mm_cmpeq_epi64 (a, b);
8059         return 0;
8060     }
8061     ])],
8062     [can_compile_sse41=yes],
8063     [can_compile_sse41=no])
8064 AC_LANG_POP([C++])
8065 CXXFLAGS=$save_CXXFLAGS
8066 AC_MSG_RESULT([${can_compile_sse41}])
8067 if test "${can_compile_sse41}" = "yes" ; then
8068     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8071 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8072 AC_LANG_PUSH([C++])
8073 save_CXXFLAGS=$CXXFLAGS
8074 CXXFLAGS="$CXXFLAGS $flag_sse42"
8075 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8076     #include <nmmintrin.h>
8077     int main () {
8078         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8079         c = _mm_cmpgt_epi64 (a, b);
8080         return 0;
8081     }
8082     ])],
8083     [can_compile_sse42=yes],
8084     [can_compile_sse42=no])
8085 AC_LANG_POP([C++])
8086 CXXFLAGS=$save_CXXFLAGS
8087 AC_MSG_RESULT([${can_compile_sse42}])
8088 if test "${can_compile_sse42}" = "yes" ; then
8089     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8092 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8093 AC_LANG_PUSH([C++])
8094 save_CXXFLAGS=$CXXFLAGS
8095 CXXFLAGS="$CXXFLAGS $flag_avx"
8096 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8097     #include <immintrin.h>
8098     int main () {
8099         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8100         c = _mm256_xor_ps(a, b);
8101         return 0;
8102     }
8103     ])],
8104     [can_compile_avx=yes],
8105     [can_compile_avx=no])
8106 AC_LANG_POP([C++])
8107 CXXFLAGS=$save_CXXFLAGS
8108 AC_MSG_RESULT([${can_compile_avx}])
8109 if test "${can_compile_avx}" = "yes" ; then
8110     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8113 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8114 AC_LANG_PUSH([C++])
8115 save_CXXFLAGS=$CXXFLAGS
8116 CXXFLAGS="$CXXFLAGS $flag_avx2"
8117 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8118     #include <immintrin.h>
8119     int main () {
8120         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8121         c = _mm256_maddubs_epi16(a, b);
8122         return 0;
8123     }
8124     ])],
8125     [can_compile_avx2=yes],
8126     [can_compile_avx2=no])
8127 AC_LANG_POP([C++])
8128 CXXFLAGS=$save_CXXFLAGS
8129 AC_MSG_RESULT([${can_compile_avx2}])
8130 if test "${can_compile_avx2}" = "yes" ; then
8131     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8134 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8135 AC_LANG_PUSH([C++])
8136 save_CXXFLAGS=$CXXFLAGS
8137 CXXFLAGS="$CXXFLAGS $flag_avx512"
8138 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8139     #include <immintrin.h>
8140     int main () {
8141         __m512i a = _mm512_loadu_si512(0);
8142         __m512d v1 = _mm512_load_pd(0);
8143         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8144         __m512d v2 = _mm512_abs_pd(v1);
8145         return 0;
8146     }
8147     ])],
8148     [can_compile_avx512=yes],
8149     [can_compile_avx512=no])
8150 AC_LANG_POP([C++])
8151 CXXFLAGS=$save_CXXFLAGS
8152 AC_MSG_RESULT([${can_compile_avx512}])
8153 if test "${can_compile_avx512}" = "yes" ; then
8154     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8155     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8158 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8159 AC_LANG_PUSH([C++])
8160 save_CXXFLAGS=$CXXFLAGS
8161 CXXFLAGS="$CXXFLAGS $flag_f16c"
8162 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8163     #include <immintrin.h>
8164     int main () {
8165         __m128i a = _mm_set1_epi32 (0);
8166         __m128 c;
8167         c = _mm_cvtph_ps(a);
8168         return 0;
8169     }
8170     ])],
8171     [can_compile_f16c=yes],
8172     [can_compile_f16c=no])
8173 AC_LANG_POP([C++])
8174 CXXFLAGS=$save_CXXFLAGS
8175 AC_MSG_RESULT([${can_compile_f16c}])
8176 if test "${can_compile_f16c}" = "yes" ; then
8177     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8180 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8181 AC_LANG_PUSH([C++])
8182 save_CXXFLAGS=$CXXFLAGS
8183 CXXFLAGS="$CXXFLAGS $flag_fma"
8184 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8185     #include <immintrin.h>
8186     int main () {
8187         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8188         d = _mm256_fmadd_ps(a, b, c);
8189         return 0;
8190     }
8191     ])],
8192     [can_compile_fma=yes],
8193     [can_compile_fma=no])
8194 AC_LANG_POP([C++])
8195 CXXFLAGS=$save_CXXFLAGS
8196 AC_MSG_RESULT([${can_compile_fma}])
8197 if test "${can_compile_fma}" = "yes" ; then
8198     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8201 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8202 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8203 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8204 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8205 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8206 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8207 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8208 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8209 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8210 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8212 dnl ===================================================================
8213 dnl system stl sanity tests
8214 dnl ===================================================================
8215 if test "$_os" != "WINNT"; then
8217     AC_LANG_PUSH([C++])
8219     save_CPPFLAGS="$CPPFLAGS"
8220     if test -n "$MACOSX_SDK_PATH"; then
8221         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8222     fi
8224     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8225     # only.
8226     if test "$CPP_LIBRARY" = GLIBCXX; then
8227         dnl gcc#19664, gcc#22482, rhbz#162935
8228         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8229         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8230         AC_MSG_RESULT([$stlvisok])
8231         if test "$stlvisok" = "no"; then
8232             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8233         fi
8234     fi
8236     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8237     # when we don't make any dynamic libraries?
8238     if test "$DISABLE_DYNLOADING" = ""; then
8239         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8240         cat > conftestlib1.cc <<_ACEOF
8241 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8242 struct S2: S1<int> { virtual ~S2(); };
8243 S2::~S2() {}
8244 _ACEOF
8245         cat > conftestlib2.cc <<_ACEOF
8246 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8247 struct S2: S1<int> { virtual ~S2(); };
8248 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8249 _ACEOF
8250         gccvisinlineshiddenok=yes
8251         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8252             gccvisinlineshiddenok=no
8253         else
8254             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8255             dnl known to not work with -z defs (unsetting which makes the test
8256             dnl moot, though):
8257             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8258             if test "$COM_IS_CLANG" = TRUE; then
8259                 for i in $CXX $CXXFLAGS; do
8260                     case $i in
8261                     -fsanitize=*)
8262                         my_linkflagsnoundefs=
8263                         break
8264                         ;;
8265                     esac
8266                 done
8267             fi
8268             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8269                 gccvisinlineshiddenok=no
8270             fi
8271         fi
8273         rm -fr libconftest*
8274         AC_MSG_RESULT([$gccvisinlineshiddenok])
8275         if test "$gccvisinlineshiddenok" = "no"; then
8276             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8277         fi
8278     fi
8280    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8281     cat >visibility.cxx <<_ACEOF
8282 #pragma GCC visibility push(hidden)
8283 struct __attribute__ ((visibility ("default"))) TestStruct {
8284   static void Init();
8286 __attribute__ ((visibility ("default"))) void TestFunc() {
8287   TestStruct::Init();
8289 _ACEOF
8290     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8291         gccvisbroken=yes
8292     else
8293         case "$host_cpu" in
8294         i?86|x86_64)
8295             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8296                 gccvisbroken=no
8297             else
8298                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8299                     gccvisbroken=no
8300                 else
8301                     gccvisbroken=yes
8302                 fi
8303             fi
8304             ;;
8305         *)
8306             gccvisbroken=no
8307             ;;
8308         esac
8309     fi
8310     rm -f visibility.s visibility.cxx
8312     AC_MSG_RESULT([$gccvisbroken])
8313     if test "$gccvisbroken" = "yes"; then
8314         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8315     fi
8317     CPPFLAGS="$save_CPPFLAGS"
8319     AC_MSG_CHECKING([if CET endbranch is recognized])
8320 cat > endbr.s <<_ACEOF
8321 endbr32
8322 _ACEOF
8323     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8324     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8325         AC_MSG_RESULT([yes])
8326         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8327     else
8328         AC_MSG_RESULT([no])
8329     fi
8330     rm -f endbr.s endbr.o
8331     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8333     AC_LANG_POP([C++])
8336 dnl ===================================================================
8337 dnl  Clang++ tests
8338 dnl ===================================================================
8340 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8341 if test "$GCC" = "yes"; then
8342     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8343     AC_LANG_PUSH([C++])
8344     save_CXXFLAGS=$CXXFLAGS
8345     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8346     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8347     CXXFLAGS=$save_CXXFLAGS
8348     AC_LANG_POP([C++])
8349     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8350         AC_MSG_RESULT([yes])
8351     else
8352         AC_MSG_RESULT([no])
8353     fi
8355 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8357 dnl ===================================================================
8358 dnl Compiler plugins
8359 dnl ===================================================================
8361 COMPILER_PLUGINS=
8362 # currently only Clang
8364 if test "$COM_IS_CLANG" != "TRUE"; then
8365     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8366         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8367         enable_compiler_plugins=no
8368     fi
8371 COMPILER_PLUGINS_COM_IS_CLANG=
8372 if test "$COM_IS_CLANG" = "TRUE"; then
8373     if test -n "$enable_compiler_plugins"; then
8374         compiler_plugins="$enable_compiler_plugins"
8375     elif test -n "$ENABLE_DBGUTIL"; then
8376         compiler_plugins=test
8377     else
8378         compiler_plugins=no
8379     fi
8380     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8381         if test "$CLANGVER" -lt 120001; then
8382             if test "$compiler_plugins" = yes; then
8383                 AC_MSG_ERROR(
8384                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8385             else
8386                 compiler_plugins=no
8387             fi
8388         fi
8389     fi
8390     if test "$compiler_plugins" != "no"; then
8391         dnl The prefix where Clang resides, override to where Clang resides if
8392         dnl using a source build:
8393         if test -z "$CLANGDIR"; then
8394             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8395         fi
8396         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8397         if test -z "$COMPILER_PLUGINS_CXX"; then
8398             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8399         fi
8400         clangbindir=$CLANGDIR/bin
8401         if test "$build_os" = "cygwin"; then
8402             clangbindir=$(cygpath -u "$clangbindir")
8403         fi
8404         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8405         if test -n "$LLVM_CONFIG"; then
8406             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8407             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8408             if test -z "$CLANGLIBDIR"; then
8409                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8410             fi
8411             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8412             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8413             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8414                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8415                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8416                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8417                 fi
8418             fi
8419             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8420             clangobjdir=$($LLVM_CONFIG --obj-root)
8421             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8422                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8423             fi
8424         fi
8425         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8426         AC_LANG_PUSH([C++])
8427         save_CXX=$CXX
8428         save_CXXCPP=$CXXCPP
8429         save_CPPFLAGS=$CPPFLAGS
8430         save_CXXFLAGS=$CXXFLAGS
8431         save_LDFLAGS=$LDFLAGS
8432         save_LIBS=$LIBS
8433         CXX=$COMPILER_PLUGINS_CXX
8434         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8435         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8436         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8437         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8438             [COMPILER_PLUGINS=TRUE],
8439             [
8440             if test "$compiler_plugins" = "yes"; then
8441                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8442             else
8443                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8444                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8445             fi
8446             ])
8447         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8448         dnl comment in compilerplugins/Makefile-clang.mk:
8449         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8450             LDFLAGS=""
8451             AC_MSG_CHECKING([for clang libraries to use])
8452             if test -z "$CLANGTOOLLIBS"; then
8453                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8454                 AC_LINK_IFELSE([
8455                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8456                         [[ clang::FullSourceLoc().dump(); ]])
8457                 ],[CLANGTOOLLIBS="$LIBS"],[])
8458             fi
8459             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8460             dnl list of individual -lclang* (but note that that list can become outdated over time,
8461             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8462             dnl needs to include -lclangSupport now"):
8463             if test -z "$CLANGTOOLLIBS"; then
8464                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8465  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8466                 AC_LINK_IFELSE([
8467                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8468                         [[ clang::FullSourceLoc().dump(); ]])
8469                 ],[CLANGTOOLLIBS="$LIBS"],[])
8470             fi
8471             AC_MSG_RESULT([$CLANGTOOLLIBS])
8472             if test -z "$CLANGTOOLLIBS"; then
8473                 if test "$compiler_plugins" = "yes"; then
8474                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8475                 else
8476                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8477                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8478                 fi
8479                 COMPILER_PLUGINS=
8480             fi
8481             if test -n "$COMPILER_PLUGINS"; then
8482                 if test -z "$CLANGSYSINCLUDE"; then
8483                     if test -n "$LLVM_CONFIG"; then
8484                         # Path to the clang system headers (no idea if there's a better way to get it).
8485                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8486                     fi
8487                 fi
8488             fi
8489         fi
8490         CXX=$save_CXX
8491         CXXCPP=$save_CXXCPP
8492         CPPFLAGS=$save_CPPFLAGS
8493         CXXFLAGS=$save_CXXFLAGS
8494         LDFLAGS=$save_LDFLAGS
8495         LIBS="$save_LIBS"
8496         AC_LANG_POP([C++])
8498         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8499         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8500             #ifndef __clang__
8501             you lose
8502             #endif
8503             int foo=42;
8504             ]])],
8505             [AC_MSG_RESULT([yes])
8506              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8507             [AC_MSG_RESULT([no])])
8508         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8509     fi
8510 else
8511     if test "$enable_compiler_plugins" = "yes"; then
8512         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8513     fi
8515 COMPILER_PLUGINS_ANALYZER_PCH=
8516 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8517     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8519 AC_SUBST(COMPILER_PLUGINS)
8520 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8521 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8522 AC_SUBST(COMPILER_PLUGINS_CXX)
8523 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8524 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8525 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8526 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8527 AC_SUBST(CLANGDIR)
8528 AC_SUBST(CLANGLIBDIR)
8529 AC_SUBST(CLANGTOOLLIBS)
8530 AC_SUBST(CLANGSYSINCLUDE)
8532 # Plugin to help linker.
8533 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8534 # This makes --enable-lto build with clang work.
8535 AC_SUBST(LD_PLUGIN)
8537 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8538 AC_SUBST(HAVE_POSIX_FALLOCATE)
8540 JITC_PROCESSOR_TYPE=""
8541 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8542     # IBMs JDK needs this...
8543     JITC_PROCESSOR_TYPE=6
8544     export JITC_PROCESSOR_TYPE
8546 AC_SUBST([JITC_PROCESSOR_TYPE])
8548 # Misc Windows Stuff
8549 AC_ARG_WITH(ucrt-dir,
8550     AS_HELP_STRING([--with-ucrt-dir],
8551         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8552         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8553         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8554             Windows6.1-KB2999226-x64.msu
8555             Windows6.1-KB2999226-x86.msu
8556             Windows8.1-KB2999226-x64.msu
8557             Windows8.1-KB2999226-x86.msu
8558             Windows8-RT-KB2999226-x64.msu
8559             Windows8-RT-KB2999226-x86.msu
8560         A zip archive including those files is available from Microsoft site:
8561         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8564 UCRT_REDISTDIR="$with_ucrt_dir"
8565 if test $_os = "WINNT"; then
8566     find_msvc_x64_dlls
8567     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8568     MSVC_DLLS="$msvcdlls"
8569     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8570         with_redist=143
8571     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8572         with_redist=142
8573     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8574         with_redist=141
8575     fi
8576     for i in $PKGFORMAT; do
8577         if test "$i" = msi; then
8578             find_msms "$with_redist"
8579             if test -n "$msmdir"; then
8580                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8581                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8582             fi
8583             break
8584         fi
8585     done
8587     if test "$UCRT_REDISTDIR" = "no"; then
8588         dnl explicitly disabled
8589         UCRT_REDISTDIR=""
8590     else
8591         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8592                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8593                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8594                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8595                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8596                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8597             UCRT_REDISTDIR=""
8598             if test -n "$PKGFORMAT"; then
8599                for i in $PKGFORMAT; do
8600                    case "$i" in
8601                    msi)
8602                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8603                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8604                        ;;
8605                    esac
8606                done
8607             fi
8608         fi
8609     fi
8612 AC_SUBST(UCRT_REDISTDIR)
8613 AC_SUBST(MSVC_DLL_PATH)
8614 AC_SUBST(MSVC_DLLS)
8615 AC_SUBST(MSM_PATH)
8618 dnl ===================================================================
8619 dnl Checks for Java
8620 dnl ===================================================================
8621 if test "$ENABLE_JAVA" != ""; then
8623     # Windows-specific tests
8624     if test "$build_os" = "cygwin"; then
8625         if test -z "$with_jdk_home"; then
8626             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8627             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8628             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8629             if test -n "$regvalue"; then
8630                 ver=$regvalue
8631                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8632                 with_jdk_home=$regvalue
8633             fi
8634             howfound="found automatically"
8635         else
8636             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8637             howfound="you passed"
8638         fi
8640         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8641             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])
8642         fi
8643     fi
8645     # 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.
8646     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8647     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8648         with_jdk_home=`/usr/libexec/java_home`
8649     fi
8651     JAVA_HOME=; export JAVA_HOME
8652     if test -z "$with_jdk_home"; then
8653         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8654     else
8655         _java_path="$with_jdk_home/bin/$with_java"
8656         dnl Check if there is a Java interpreter at all.
8657         if test -x "$_java_path"; then
8658             JAVAINTERPRETER=$_java_path
8659         else
8660             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8661         fi
8662     fi
8664     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8665     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8666     dnl loaded by java to run JunitTests:
8667     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8668         shortjdkhome=`cygpath -d "$with_jdk_home"`
8669         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
8670             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8671             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8672         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
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
8677         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8678             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8679         fi
8680         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8681     elif test "$cross_compiling" != "yes"; then
8682         case $CPUNAME in
8683             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8684                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8685                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8686                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8687                 fi
8688                 ;;
8689             *) # assumption: everything else 32-bit
8690                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8691                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8692                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8693                 fi
8694                 ;;
8695         esac
8696     fi
8699 dnl ===================================================================
8700 dnl Checks for JDK.
8701 dnl ===================================================================
8703 # Whether all the complexity here actually is needed any more or not, no idea.
8705 JDK_SECURITYMANAGER_DISALLOWED=
8706 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8707     _gij_longver=0
8708     AC_MSG_CHECKING([the installed JDK])
8709     if test -n "$JAVAINTERPRETER"; then
8710         dnl java -version sends output to stderr!
8711         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8712             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8713         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8714             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8715         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8716             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8717         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8718             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8719         else
8720             JDK=sun
8722             dnl Sun JDK specific tests
8723             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8724             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8726             if test "$_jdk_ver" -lt 170000; then
8727                 AC_MSG_ERROR([JDK is too old, you need at least 17 ($_jdk_ver < 170000)])
8728             fi
8729             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8730             dnl completely removed in some Java version > 18 (see
8731             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8732             if test "$_jdk_ver" -ge 180000; then
8733                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8734             fi
8736             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8737             if test "$_os" = "WINNT"; then
8738                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8739             fi
8740             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8742             # set to limit VM usage for JunitTests
8743             JAVAIFLAGS=-Xmx64M
8744             # set to limit VM usage for javac
8745             JAVACFLAGS=-J-Xmx128M
8746         fi
8747     else
8748         AC_MSG_ERROR([Java not found. You need at least JDK 17])
8749     fi
8750 else
8751     if test -z "$ENABLE_JAVA"; then
8752         dnl Java disabled
8753         JAVA_HOME=
8754         export JAVA_HOME
8755     elif test "$cross_compiling" = "yes"; then
8756         # Just assume compatibility of build and host JDK
8757         JDK=$JDK_FOR_BUILD
8758         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8759     fi
8762 dnl ===================================================================
8763 dnl Checks for javac
8764 dnl ===================================================================
8765 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8766     javacompiler="javac"
8767     : ${JAVA_SOURCE_VER=8}
8768     : ${JAVA_TARGET_VER=8}
8769     if test -z "$with_jdk_home"; then
8770         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8771     else
8772         _javac_path="$with_jdk_home/bin/$javacompiler"
8773         dnl Check if there is a Java compiler at all.
8774         if test -x "$_javac_path"; then
8775             JAVACOMPILER=$_javac_path
8776         fi
8777     fi
8778     if test -z "$JAVACOMPILER"; then
8779         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8780     fi
8781     if test "$build_os" = "cygwin"; then
8782         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8783             JAVACOMPILER="${JAVACOMPILER}.exe"
8784         fi
8785         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8786     fi
8789 dnl ===================================================================
8790 dnl Checks for javadoc
8791 dnl ===================================================================
8792 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8793     if test -z "$with_jdk_home"; then
8794         AC_PATH_PROG(JAVADOC, javadoc)
8795     else
8796         _javadoc_path="$with_jdk_home/bin/javadoc"
8797         dnl Check if there is a javadoc at all.
8798         if test -x "$_javadoc_path"; then
8799             JAVADOC=$_javadoc_path
8800         else
8801             AC_PATH_PROG(JAVADOC, javadoc)
8802         fi
8803     fi
8804     if test -z "$JAVADOC"; then
8805         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8806     fi
8807     if test "$build_os" = "cygwin"; then
8808         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8809             JAVADOC="${JAVADOC}.exe"
8810         fi
8811         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8812     fi
8814     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8815     JAVADOCISGJDOC="yes"
8816     fi
8818 AC_SUBST(JAVADOC)
8819 AC_SUBST(JAVADOCISGJDOC)
8821 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8822     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8823     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8824         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8825            # try to recover first by looking whether we have an alternative
8826            # system as in Debian or newer SuSEs where following /usr/bin/javac
8827            # over /etc/alternatives/javac leads to the right bindir where we
8828            # just need to strip a bit away to get a valid JAVA_HOME
8829            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8830         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8831             # maybe only one level of symlink (e.g. on Mac)
8832             JAVA_HOME=$(readlink $JAVACOMPILER)
8833             if test "$(dirname $JAVA_HOME)" = "."; then
8834                 # we've got no path to trim back
8835                 JAVA_HOME=""
8836             fi
8837         else
8838             # else warn
8839             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8840             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8841             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8842             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8843         fi
8844         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8845         if test "$JAVA_HOME" != "/usr"; then
8846             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8847                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8848                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8849                 dnl Tiger already returns a JDK path...
8850                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8851             else
8852                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8853                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8854                 dnl that checks which version to run
8855                 if test -f "$JAVA_HOME"; then
8856                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8857                 fi
8858             fi
8859         fi
8860     fi
8861     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8863     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8864     if test -z "$JAVA_HOME"; then
8865         if test "x$with_jdk_home" = "x"; then
8866             cat > findhome.java <<_ACEOF
8867 [import java.io.File;
8869 class findhome
8871     public static void main(String args[])
8872     {
8873         String jrelocation = System.getProperty("java.home");
8874         File jre = new File(jrelocation);
8875         System.out.println(jre.getParent());
8876     }
8878 _ACEOF
8879             AC_MSG_CHECKING([if javac works])
8880             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8881             AC_TRY_EVAL(javac_cmd)
8882             if test $? = 0 -a -f ./findhome.class; then
8883                 AC_MSG_RESULT([javac works])
8884             else
8885                 echo "configure: javac test failed" >&5
8886                 cat findhome.java >&5
8887                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8888             fi
8889             AC_MSG_CHECKING([if gij knows its java.home])
8890             JAVA_HOME=`$JAVAINTERPRETER findhome`
8891             if test $? = 0 -a "$JAVA_HOME" != ""; then
8892                 AC_MSG_RESULT([$JAVA_HOME])
8893             else
8894                 echo "configure: java test failed" >&5
8895                 cat findhome.java >&5
8896                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8897             fi
8898             # clean-up after ourselves
8899             rm -f ./findhome.java ./findhome.class
8900         else
8901             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8902         fi
8903     fi
8905     # now check if $JAVA_HOME is really valid
8906     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8907         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8908             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8909             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8910             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8911             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8912             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8913             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8914         fi
8915     fi
8916     PathFormat "$JAVA_HOME"
8917     JAVA_HOME="$formatted_path"
8920 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8921     "$_os" != Darwin
8922 then
8923     AC_MSG_CHECKING([for JAWT lib])
8924     if test "$_os" = WINNT; then
8925         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8926         JAWTLIB=jawt.lib
8927     else
8928         case "$host_cpu" in
8929         arm*)
8930             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8931             JAVA_ARCH=$my_java_arch
8932             ;;
8933         i*86)
8934             my_java_arch=i386
8935             ;;
8936         m68k)
8937             my_java_arch=m68k
8938             ;;
8939         powerpc)
8940             my_java_arch=ppc
8941             ;;
8942         powerpc64)
8943             my_java_arch=ppc64
8944             ;;
8945         powerpc64le)
8946             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8947             JAVA_ARCH=$my_java_arch
8948             ;;
8949         sparc64)
8950             my_java_arch=sparcv9
8951             ;;
8952         x86_64)
8953             my_java_arch=amd64
8954             ;;
8955         *)
8956             my_java_arch=$host_cpu
8957             ;;
8958         esac
8959         # This is where JDK9 puts the library
8960         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8961             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8962         else
8963             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8964         fi
8965         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8966     fi
8967     AC_MSG_RESULT([$JAWTLIB])
8969 AC_SUBST(JAWTLIB)
8971 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8972     case "$host_os" in
8974     cygwin*|wsl*)
8975         JAVAINC="-I$JAVA_HOME/include/win32"
8976         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8977         ;;
8979     darwin*)
8980         if test -d "$JAVA_HOME/include/darwin"; then
8981             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8982         else
8983             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8984         fi
8985         ;;
8987     dragonfly*)
8988         JAVAINC="-I$JAVA_HOME/include"
8989         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8990         ;;
8992     freebsd*)
8993         JAVAINC="-I$JAVA_HOME/include"
8994         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8995         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8996         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8997         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8998         ;;
9000     k*bsd*-gnu*)
9001         JAVAINC="-I$JAVA_HOME/include"
9002         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9003         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9004         ;;
9006     linux-gnu*)
9007         JAVAINC="-I$JAVA_HOME/include"
9008         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9009         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9010         ;;
9012     *netbsd*)
9013         JAVAINC="-I$JAVA_HOME/include"
9014         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9015         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9016        ;;
9018     openbsd*)
9019         JAVAINC="-I$JAVA_HOME/include"
9020         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9021         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9022         ;;
9024     solaris*)
9025         JAVAINC="-I$JAVA_HOME/include"
9026         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9027         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9028         ;;
9029     esac
9031 SOLARINC="$SOLARINC $JAVAINC"
9033 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9034     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9035     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9036     JDK_FOR_BUILD=$JDK
9037     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9040 AC_SUBST(JAVACFLAGS)
9041 AC_SUBST(JAVACOMPILER)
9042 AC_SUBST(JAVAINTERPRETER)
9043 AC_SUBST(JAVAIFLAGS)
9044 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9045 AC_SUBST(JAVA_HOME)
9046 AC_SUBST(JAVA_HOME_FOR_BUILD)
9047 AC_SUBST(JDK)
9048 AC_SUBST(JDK_FOR_BUILD)
9049 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9050 AC_SUBST(JAVA_SOURCE_VER)
9051 AC_SUBST(JAVA_TARGET_VER)
9054 dnl ===================================================================
9055 dnl Export file validation
9056 dnl ===================================================================
9057 AC_MSG_CHECKING([whether to enable export file validation])
9058 if test "$with_export_validation" != "no"; then
9059     if test -z "$ENABLE_JAVA"; then
9060         if test "$with_export_validation" = "yes"; then
9061             AC_MSG_ERROR([requested, but Java is disabled])
9062         else
9063             AC_MSG_RESULT([no, as Java is disabled])
9064         fi
9065     elif ! test -d "${SRC_ROOT}/schema"; then
9066         if test "$with_export_validation" = "yes"; then
9067             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9068         else
9069             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9070         fi
9071     else
9072         AC_MSG_RESULT([yes])
9073         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9075         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9076         if test -z "$ODFVALIDATOR"; then
9077             # remember to download the ODF toolkit with validator later
9078             AC_MSG_NOTICE([no odfvalidator found, will download it])
9079             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9080             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9082             # and fetch name of odfvalidator jar name from download.lst
9083             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9084             AC_SUBST(ODFVALIDATOR_JAR)
9086             if test -z "$ODFVALIDATOR_JAR"; then
9087                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9088             fi
9089         fi
9090         if test "$build_os" = "cygwin"; then
9091             # In case of Cygwin it will be executed from Windows,
9092             # so we need to run bash and absolute path to validator
9093             # so instead of "odfvalidator" it will be
9094             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9095             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9096         else
9097             ODFVALIDATOR="sh $ODFVALIDATOR"
9098         fi
9099         AC_SUBST(ODFVALIDATOR)
9102         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9103         if test -z "$OFFICEOTRON"; then
9104             # remember to download the officeotron with validator later
9105             AC_MSG_NOTICE([no officeotron found, will download it])
9106             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9107             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9109             # and fetch name of officeotron jar name from download.lst
9110             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9111             AC_SUBST(OFFICEOTRON_JAR)
9113             if test -z "$OFFICEOTRON_JAR"; then
9114                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9115             fi
9116         else
9117             # check version of existing officeotron
9118             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9119             if test 0"$OFFICEOTRON_VER" -lt 704; then
9120                 AC_MSG_ERROR([officeotron too old])
9121             fi
9122         fi
9123         if test "$build_os" = "cygwin"; then
9124             # In case of Cygwin it will be executed from Windows,
9125             # so we need to run bash and absolute path to validator
9126             # so instead of "odfvalidator" it will be
9127             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9128             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9129         else
9130             OFFICEOTRON="sh $OFFICEOTRON"
9131         fi
9132     fi
9133     AC_SUBST(OFFICEOTRON)
9134 else
9135     AC_MSG_RESULT([no])
9138 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9139 if test "$with_bffvalidator" != "no"; then
9140     AC_DEFINE(HAVE_BFFVALIDATOR)
9142     if test "$with_export_validation" = "no"; then
9143         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9144     fi
9146     if test "$with_bffvalidator" = "yes"; then
9147         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9148     else
9149         BFFVALIDATOR="$with_bffvalidator"
9150     fi
9152     if test "$build_os" = "cygwin"; then
9153         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9154             AC_MSG_RESULT($BFFVALIDATOR)
9155         else
9156             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9157         fi
9158     elif test -n "$BFFVALIDATOR"; then
9159         # We are not in Cygwin but need to run Windows binary with wine
9160         AC_PATH_PROGS(WINE, wine)
9162         # so swap in a shell wrapper that converts paths transparently
9163         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9164         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9165         AC_SUBST(BFFVALIDATOR_EXE)
9166         AC_MSG_RESULT($BFFVALIDATOR)
9167     else
9168         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9169     fi
9170     AC_SUBST(BFFVALIDATOR)
9171 else
9172     AC_MSG_RESULT([no])
9175 dnl ===================================================================
9176 dnl Check for epm (not needed for Windows)
9177 dnl ===================================================================
9178 AC_MSG_CHECKING([whether to enable EPM for packing])
9179 if test "$enable_epm" = "yes"; then
9180     AC_MSG_RESULT([yes])
9181     if test "$_os" != "WINNT"; then
9182         if test $_os = Darwin; then
9183             EPM=internal
9184         elif test -n "$with_epm"; then
9185             EPM=$with_epm
9186         else
9187             AC_PATH_PROG(EPM, epm, no)
9188         fi
9189         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9190             AC_MSG_NOTICE([EPM will be built.])
9191             BUILD_TYPE="$BUILD_TYPE EPM"
9192             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9193         else
9194             # Gentoo has some epm which is something different...
9195             AC_MSG_CHECKING([whether the found epm is the right epm])
9196             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9197                 AC_MSG_RESULT([yes])
9198             else
9199                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9200             fi
9201             AC_MSG_CHECKING([epm version])
9202             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9203             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9204                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9205                 AC_MSG_RESULT([OK, >= 3.7])
9206             else
9207                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9208                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9209             fi
9210         fi
9211     fi
9213     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9214         AC_MSG_CHECKING([for rpm])
9215         for a in "$RPM" rpmbuild rpm; do
9216             $a --usage >/dev/null 2> /dev/null
9217             if test $? -eq 0; then
9218                 RPM=$a
9219                 break
9220             else
9221                 $a --version >/dev/null 2> /dev/null
9222                 if test $? -eq 0; then
9223                     RPM=$a
9224                     break
9225                 fi
9226             fi
9227         done
9228         if test -z "$RPM"; then
9229             AC_MSG_ERROR([not found])
9230         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9231             RPM_PATH=`which $RPM`
9232             AC_MSG_RESULT([$RPM_PATH])
9233             SCPDEFS="$SCPDEFS -DWITH_RPM"
9234         else
9235             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9236         fi
9237     fi
9238     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9239         AC_PATH_PROG(DPKG, dpkg, no)
9240         if test "$DPKG" = "no"; then
9241             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9242         fi
9243     fi
9244     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9245        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9246         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9247             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9248                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9249                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9250                     AC_MSG_RESULT([yes])
9251                 else
9252                     AC_MSG_RESULT([no])
9253                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9254                         _pt="rpm"
9255                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9256                         add_warning "the rpms will need to be installed with --nodeps"
9257                     else
9258                         _pt="pkg"
9259                     fi
9260                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9261                     add_warning "the ${_pt}s will not be relocatable"
9262                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9263                                  relocation will work, you need to patch your epm with the
9264                                  patch in epm/epm-3.7.patch or build with
9265                                  --with-epm=internal which will build a suitable epm])
9266                 fi
9267             fi
9268         fi
9269     fi
9270     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9271         AC_PATH_PROG(PKGMK, pkgmk, no)
9272         if test "$PKGMK" = "no"; then
9273             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9274         fi
9275     fi
9276     AC_SUBST(RPM)
9277     AC_SUBST(DPKG)
9278     AC_SUBST(PKGMK)
9279 else
9280     for i in $PKGFORMAT; do
9281         case "$i" in
9282         bsd | deb | pkg | rpm | native | portable)
9283             AC_MSG_ERROR(
9284                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9285             ;;
9286         esac
9287     done
9288     AC_MSG_RESULT([no])
9289     EPM=NO
9291 AC_SUBST(EPM)
9293 ENABLE_LWP=
9294 if test "$enable_lotuswordpro" = "yes"; then
9295     ENABLE_LWP="TRUE"
9297 AC_SUBST(ENABLE_LWP)
9299 dnl ===================================================================
9300 dnl Check for building ODK
9301 dnl ===================================================================
9302 AC_MSG_CHECKING([whether to build the ODK])
9303 if test "$enable_odk" = yes; then
9304     if test "$DISABLE_DYNLOADING" = TRUE; then
9305         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9306     fi
9307     AC_MSG_RESULT([yes])
9308     BUILD_TYPE="$BUILD_TYPE ODK"
9309 else
9310     AC_MSG_RESULT([no])
9313 if test "$enable_odk" != yes; then
9314     unset DOXYGEN
9315 else
9316     if test "$with_doxygen" = no; then
9317         AC_MSG_CHECKING([for doxygen])
9318         unset DOXYGEN
9319         AC_MSG_RESULT([no])
9320     else
9321         if test "$with_doxygen" = yes; then
9322             AC_PATH_PROG([DOXYGEN], [doxygen])
9323             if test -z "$DOXYGEN"; then
9324                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9325             fi
9326             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9327                 if ! dot -V 2>/dev/null; then
9328                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9329                 fi
9330             fi
9331         else
9332             AC_MSG_CHECKING([for doxygen])
9333             DOXYGEN=$with_doxygen
9334             AC_MSG_RESULT([$DOXYGEN])
9335         fi
9336         if test -n "$DOXYGEN"; then
9337             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9338             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9339             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9340                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9341             fi
9342         fi
9343     fi
9345 AC_SUBST([DOXYGEN])
9347 dnl ==================================================================
9348 dnl libfuzzer
9349 dnl ==================================================================
9350 AC_MSG_CHECKING([whether to enable fuzzers])
9351 if test "$enable_fuzzers" != yes; then
9352     AC_MSG_RESULT([no])
9353 else
9354     if test -z $LIB_FUZZING_ENGINE; then
9355       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9356     fi
9357     AC_MSG_RESULT([yes])
9358     ENABLE_FUZZERS="TRUE"
9359     AC_DEFINE([ENABLE_FUZZERS],1)
9360     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9362 AC_SUBST(LIB_FUZZING_ENGINE)
9364 dnl ===================================================================
9365 dnl Check for system zlib
9366 dnl ===================================================================
9367 if test "$with_system_zlib" = "auto"; then
9368     case "$_os" in
9369     WINNT)
9370         with_system_zlib="$with_system_libs"
9371         ;;
9372     *)
9373         if test "$enable_fuzzers" != "yes"; then
9374             with_system_zlib=yes
9375         else
9376             with_system_zlib=no
9377         fi
9378         ;;
9379     esac
9382 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9383 dnl and has no pkg-config for it at least on some tinderboxes,
9384 dnl so leaving that out for now
9385 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9386 AC_MSG_CHECKING([which zlib to use])
9387 if test "$with_system_zlib" = "yes"; then
9388     AC_MSG_RESULT([external])
9389     SYSTEM_ZLIB=TRUE
9390     AC_CHECK_HEADER(zlib.h, [],
9391         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9392     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9393         [AC_MSG_ERROR(zlib not found or functional)], [])
9394 else
9395     AC_MSG_RESULT([internal])
9396     SYSTEM_ZLIB=
9397     BUILD_TYPE="$BUILD_TYPE ZLIB"
9398     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9399     if test "$COM" = "MSC"; then
9400         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9401     else
9402         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9403     fi
9405 AC_SUBST(ZLIB_CFLAGS)
9406 AC_SUBST(ZLIB_LIBS)
9407 AC_SUBST(SYSTEM_ZLIB)
9409 dnl ===================================================================
9410 dnl Check for system jpeg
9411 dnl ===================================================================
9412 AC_MSG_CHECKING([which libjpeg to use])
9413 if test "$with_system_jpeg" = "yes"; then
9414     AC_MSG_RESULT([external])
9415     SYSTEM_LIBJPEG=TRUE
9416     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9417         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9418     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9419         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9420 else
9421     SYSTEM_LIBJPEG=
9422     AC_MSG_RESULT([internal, libjpeg-turbo])
9423     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9425     case "$host_cpu" in
9426     x86_64 | amd64 | i*86 | x86 | ia32)
9427         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9428         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9429             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9430                 NASM="$LODE_HOME/opt/bin/nasm"
9431             elif test -x "/opt/lo/bin/nasm"; then
9432                 NASM="/opt/lo/bin/nasm"
9433             fi
9434         fi
9436         if test -n "$NASM"; then
9437             AC_MSG_CHECKING([for object file format of host system])
9438             case "$host_os" in
9439               cygwin* | mingw* | pw32* | wsl*)
9440                 case "$host_cpu" in
9441                   x86_64)
9442                     objfmt='Win64-COFF'
9443                     ;;
9444                   *)
9445                     objfmt='Win32-COFF'
9446                     ;;
9447                 esac
9448               ;;
9449               msdosdjgpp* | go32*)
9450                 objfmt='COFF'
9451               ;;
9452               os2-emx*) # not tested
9453                 objfmt='MSOMF' # obj
9454               ;;
9455               linux*coff* | linux*oldld*)
9456                 objfmt='COFF' # ???
9457               ;;
9458               linux*aout*)
9459                 objfmt='a.out'
9460               ;;
9461               linux*)
9462                 case "$host_cpu" in
9463                   x86_64)
9464                     objfmt='ELF64'
9465                     ;;
9466                   *)
9467                     objfmt='ELF'
9468                     ;;
9469                 esac
9470               ;;
9471               kfreebsd* | freebsd* | netbsd* | openbsd*)
9472                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9473                   objfmt='BSD-a.out'
9474                 else
9475                   case "$host_cpu" in
9476                     x86_64 | amd64)
9477                       objfmt='ELF64'
9478                       ;;
9479                     *)
9480                       objfmt='ELF'
9481                       ;;
9482                   esac
9483                 fi
9484               ;;
9485               solaris* | sunos* | sysv* | sco*)
9486                 case "$host_cpu" in
9487                   x86_64)
9488                     objfmt='ELF64'
9489                     ;;
9490                   *)
9491                     objfmt='ELF'
9492                     ;;
9493                 esac
9494               ;;
9495               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9496                 case "$host_cpu" in
9497                   x86_64)
9498                     objfmt='Mach-O64'
9499                     ;;
9500                   *)
9501                     objfmt='Mach-O'
9502                     ;;
9503                 esac
9504               ;;
9505               *)
9506                 objfmt='ELF ?'
9507               ;;
9508             esac
9510             AC_MSG_RESULT([$objfmt])
9511             if test "$objfmt" = 'ELF ?'; then
9512               objfmt='ELF'
9513               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9514             fi
9516             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9517             case "$objfmt" in
9518               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9519               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9520               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9521               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9522               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9523               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9524               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9525               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9526               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9527               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9528               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9529             esac
9530             AC_MSG_RESULT([$NAFLAGS])
9532             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9533             cat > conftest.asm << EOF
9534             [%line __oline__ "configure"
9535                     section .text
9536                     global  _main,main
9537             _main:
9538             main:   xor     eax,eax
9539                     ret
9540             ]
9542             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9543             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9544               AC_MSG_RESULT(yes)
9545             else
9546               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9547               cat conftest.asm >&AS_MESSAGE_LOG_FD
9548               rm -rf conftest*
9549               AC_MSG_RESULT(no)
9550               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9551               NASM=""
9552             fi
9554         fi
9556         if test -z "$NASM"; then
9557 cat << _EOS
9558 ****************************************************************************
9559 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9560 To get one please:
9562 _EOS
9563             if test "$build_os" = "cygwin"; then
9564 cat << _EOS
9565 install a pre-compiled binary for Win32
9567 mkdir -p /opt/lo/bin
9568 cd /opt/lo/bin
9569 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9570 chmod +x nasm
9572 or get and install one from https://www.nasm.us/
9574 Then re-run autogen.sh
9576 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9577 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9579 _EOS
9580             else
9581 cat << _EOS
9582 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9584 _EOS
9585             fi
9586             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9587             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9588         fi
9589       ;;
9590     esac
9593 AC_SUBST(NASM)
9594 AC_SUBST(NAFLAGS)
9595 AC_SUBST(LIBJPEG_CFLAGS)
9596 AC_SUBST(LIBJPEG_LIBS)
9597 AC_SUBST(SYSTEM_LIBJPEG)
9599 dnl ===================================================================
9600 dnl Check for system clucene
9601 dnl ===================================================================
9602 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9603 if test "$SYSTEM_CLUCENE" = TRUE; then
9604     AC_LANG_PUSH([C++])
9605     save_CXXFLAGS=$CXXFLAGS
9606     save_CPPFLAGS=$CPPFLAGS
9607     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9608     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9609     dnl https://sourceforge.net/p/clucene/bugs/200/
9610     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9611     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9612                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9613     CXXFLAGS=$save_CXXFLAGS
9614     CPPFLAGS=$save_CPPFLAGS
9615     AC_LANG_POP([C++])
9616     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9619 dnl ===================================================================
9620 dnl Check for system expat
9621 dnl ===================================================================
9622 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9624 dnl ===================================================================
9625 dnl Check for system xmlsec
9626 dnl ===================================================================
9627 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9629 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9630 if test "$enable_eot" = "yes"; then
9631     ENABLE_EOT="TRUE"
9632     AC_DEFINE([ENABLE_EOT])
9633     AC_MSG_RESULT([yes])
9635     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9636 else
9637     ENABLE_EOT=
9638     AC_MSG_RESULT([no])
9640 AC_SUBST([ENABLE_EOT])
9642 dnl ===================================================================
9643 dnl Check for DLP libs
9644 dnl ===================================================================
9645 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9646 AS_IF([test "$COM" = "MSC"],
9647       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9648       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9650 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9651 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9653 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9655 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9657 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9658 AS_IF([test "$COM" = "MSC"],
9659       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9660       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9662 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9663 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9665 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9667 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9668 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9670 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9672 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9674 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9676 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9677 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9679 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9680 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9682 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9684 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9685 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9687 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9689 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9691 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9693 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9695 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9696 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9698 dnl ===================================================================
9699 dnl Check for system lcms2
9700 dnl ===================================================================
9701 if test "$with_system_lcms2" != "yes"; then
9702     SYSTEM_LCMS2=
9704 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9705 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9706 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9707 if test "$GCC" = "yes"; then
9708     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9710 if test "$COM" = "MSC"; then # override the above
9711     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9714 dnl ===================================================================
9715 dnl Check for system cppunit
9716 dnl ===================================================================
9717 if test "$_os" != "Android" ; then
9718     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9721 dnl ===================================================================
9722 dnl Check whether freetype is available
9724 dnl FreeType has 3 different kinds of versions
9725 dnl * release, like 2.4.10
9726 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9727 dnl * soname
9728 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9730 dnl 9.9.3 is 2.2.0
9731 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9732 dnl ===================================================================
9733 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9734 if test "x$ac_config_site_64bit_host" = xYES; then
9735     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9736 else
9737     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9739 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9741 # ===================================================================
9742 # Check for system libxslt
9743 # to prevent incompatibilities between internal libxml2 and external libxslt,
9744 # or vice versa, use with_system_libxml here
9745 # ===================================================================
9746 if test "$with_system_libxml" = "auto"; then
9747     case "$_os" in
9748     WINNT|iOS|Android)
9749         with_system_libxml="$with_system_libs"
9750         ;;
9751     Emscripten)
9752         with_system_libxml=no
9753         ;;
9754     *)
9755         if test "$enable_fuzzers" != "yes"; then
9756             with_system_libxml=yes
9757         else
9758             with_system_libxml=no
9759         fi
9760         ;;
9761     esac
9764 AC_MSG_CHECKING([which libxslt to use])
9765 if test "$with_system_libxml" = "yes"; then
9766     AC_MSG_RESULT([external])
9767     SYSTEM_LIBXSLT=TRUE
9768     if test "$_os" = "Darwin"; then
9769         dnl make sure to use SDK path
9770         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9771         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9772         dnl omit -L/usr/lib
9773         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9774         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9775     else
9776         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9777         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9778         FilterLibs "${LIBXSLT_LIBS}"
9779         LIBXSLT_LIBS="${filteredlibs}"
9780         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9781         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9782         FilterLibs "${LIBEXSLT_LIBS}"
9783         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9784     fi
9786     dnl Check for xsltproc
9787     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9788     if test "$XSLTPROC" = "no"; then
9789         AC_MSG_ERROR([xsltproc is required])
9790     fi
9791 else
9792     AC_MSG_RESULT([internal])
9793     SYSTEM_LIBXSLT=
9794     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9796 AC_SUBST(SYSTEM_LIBXSLT)
9797 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9798     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9800 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9802 AC_SUBST(LIBEXSLT_CFLAGS)
9803 AC_SUBST(LIBEXSLT_LIBS)
9804 AC_SUBST(LIBXSLT_CFLAGS)
9805 AC_SUBST(LIBXSLT_LIBS)
9806 AC_SUBST(XSLTPROC)
9808 # ===================================================================
9809 # Check for system libxml
9810 # ===================================================================
9811 AC_MSG_CHECKING([which libxml to use])
9812 if test "$with_system_libxml" = "yes"; then
9813     AC_MSG_RESULT([external])
9814     SYSTEM_LIBXML=TRUE
9815     if test "$_os" = "Darwin"; then
9816         dnl make sure to use SDK path
9817         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9818         dnl omit -L/usr/lib
9819         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9820     elif test $_os = iOS; then
9821         dnl make sure to use SDK path
9822         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9823         LIBXML_CFLAGS="-I$usr/include/libxml2"
9824         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9825     else
9826         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9827         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9828         FilterLibs "${LIBXML_LIBS}"
9829         LIBXML_LIBS="${filteredlibs}"
9830     fi
9832     dnl Check for xmllint
9833     AC_PATH_PROG(XMLLINT, xmllint, no)
9834     if test "$XMLLINT" = "no"; then
9835         AC_MSG_ERROR([xmllint is required])
9836     fi
9837 else
9838     AC_MSG_RESULT([internal])
9839     SYSTEM_LIBXML=
9840     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9841     if test "$COM" = "MSC"; then
9842         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9843     fi
9844     if test "$COM" = "MSC"; then
9845         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9846     else
9847         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9848         if test "$DISABLE_DYNLOADING" = TRUE; then
9849             LIBXML_LIBS="$LIBXML_LIBS -lm"
9850         fi
9851     fi
9852     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9854 AC_SUBST(SYSTEM_LIBXML)
9855 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9856     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9858 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9859 AC_SUBST(LIBXML_CFLAGS)
9860 AC_SUBST(LIBXML_LIBS)
9861 AC_SUBST(XMLLINT)
9863 # =====================================================================
9864 # Checking for a Python interpreter with version >= 3.3.
9865 # Optionally user can pass an option to configure, i. e.
9866 # ./configure PYTHON=/usr/bin/python
9867 # =====================================================================
9868 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9869     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9870     # unless PYTHON is defined as above which allows 'system'
9871     enable_python=internal
9873 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9874     if test -n "$PYTHON"; then
9875         PYTHON_FOR_BUILD=$PYTHON
9876     else
9877         # This allows a lack of system python with no error, we use internal one in that case.
9878         AM_PATH_PYTHON([3.3],, [:])
9879         # Clean PYTHON_VERSION checked below if cross-compiling
9880         PYTHON_VERSION=""
9881         if test "$PYTHON" != ":"; then
9882             PYTHON_FOR_BUILD=$PYTHON
9883         fi
9884     fi
9887 # Checks for Python to use for Pyuno
9888 AC_MSG_CHECKING([which Python to use for Pyuno])
9889 case "$enable_python" in
9890 no|disable)
9891     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9892         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9893         # requirement from the choice whether to include Python stuff in the installer, but why
9894         # bother?
9895         AC_MSG_ERROR([Python is required at build time.])
9896     fi
9897     enable_python=no
9898     AC_MSG_RESULT([none])
9899     ;;
9900 ""|yes|auto)
9901     if test "$DISABLE_SCRIPTING" = TRUE; then
9902         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9903             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9904         fi
9905         AC_MSG_RESULT([none, overridden by --disable-scripting])
9906         enable_python=no
9907     elif test $build_os = cygwin -o $build_os = wsl; then
9908         dnl When building on Windows we don't attempt to use any installed
9909         dnl "system"  Python.
9910         AC_MSG_RESULT([fully internal])
9911         enable_python=internal
9912     elif test "$cross_compiling" = yes; then
9913         AC_MSG_RESULT([system])
9914         enable_python=system
9915     else
9916         # Unset variables set by the above AM_PATH_PYTHON so that
9917         # we actually do check anew.
9918         AC_MSG_RESULT([])
9919         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
9920         AM_PATH_PYTHON([3.3],, [:])
9921         AC_MSG_CHECKING([which Python to use for Pyuno])
9922         if test "$PYTHON" = ":"; then
9923             if test -z "$PYTHON_FOR_BUILD"; then
9924                 AC_MSG_RESULT([fully internal])
9925             else
9926                 AC_MSG_RESULT([internal])
9927             fi
9928             enable_python=internal
9929         else
9930             AC_MSG_RESULT([system])
9931             enable_python=system
9932         fi
9933     fi
9934     ;;
9935 internal)
9936     AC_MSG_RESULT([internal])
9937     ;;
9938 fully-internal)
9939     AC_MSG_RESULT([fully internal])
9940     enable_python=internal
9941     ;;
9942 system)
9943     AC_MSG_RESULT([system])
9944     if test "$_os" = Darwin -a -z "$PYTHON"; then
9945         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9946     fi
9947     ;;
9949     AC_MSG_ERROR([Incorrect --enable-python option])
9950     ;;
9951 esac
9953 if test $enable_python != no; then
9954     BUILD_TYPE="$BUILD_TYPE PYUNO"
9957 if test $enable_python = system; then
9958     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9959         # Fallback: Accept these in the environment, or as set above
9960         # for MacOSX.
9961         :
9962     elif test "$cross_compiling" != yes; then
9963         # Unset variables set by the above AM_PATH_PYTHON so that
9964         # we actually do check anew.
9965         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
9966         # This causes an error if no python command is found
9967         AM_PATH_PYTHON([3.3])
9968         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9969         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9970         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9971         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9972         if test -z "$PKG_CONFIG"; then
9973             PYTHON_CFLAGS="-I$python_include"
9974             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9975         elif $PKG_CONFIG --exists python-$python_version-embed; then
9976             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9977             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9978         elif $PKG_CONFIG --exists python-$python_version; then
9979             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9980             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9981         else
9982             PYTHON_CFLAGS="-I$python_include"
9983             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9984         fi
9985         FilterLibs "${PYTHON_LIBS}"
9986         PYTHON_LIBS="${filteredlibs}"
9987     else
9988         dnl How to find out the cross-compilation Python installation path?
9989         AC_MSG_CHECKING([for python version])
9990         AS_IF([test -n "$PYTHON_VERSION"],
9991               [AC_MSG_RESULT([$PYTHON_VERSION])],
9992               [AC_MSG_RESULT([not found])
9993                AC_MSG_ERROR([no usable python found])])
9994         test -n "$PYTHON_CFLAGS" && break
9995     fi
9997     dnl Check if the headers really work
9998     save_CPPFLAGS="$CPPFLAGS"
9999     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10000     AC_CHECK_HEADER(Python.h)
10001     CPPFLAGS="$save_CPPFLAGS"
10003     # let the PYTHON_FOR_BUILD match the same python installation that
10004     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10005     # better for PythonTests.
10006     PYTHON_FOR_BUILD=$PYTHON
10009 if test "$with_lxml" != no; then
10010     if test -z "$PYTHON_FOR_BUILD"; then
10011         case $build_os in
10012             cygwin)
10013                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10014                 ;;
10015             *)
10016                 if test "$cross_compiling" != yes ; then
10017                     BUILD_TYPE="$BUILD_TYPE LXML"
10018                 fi
10019                 ;;
10020         esac
10021     else
10022         AC_MSG_CHECKING([for python lxml])
10023         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10024             AC_MSG_RESULT([yes])
10025         else
10026             case $build_os in
10027                 cygwin)
10028                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10029                     ;;
10030                 *)
10031                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10032                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10033                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10034                         else
10035                             BUILD_TYPE="$BUILD_TYPE LXML"
10036                             AC_MSG_RESULT([no, using internal lxml])
10037                         fi
10038                     else
10039                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10040                     fi
10041                     ;;
10042             esac
10043         fi
10044     fi
10047 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10048     SYSTEM_PYTHON=
10049     PYTHON_VERSION_MAJOR=3
10050     PYTHON_VERSION_MINOR=8
10051     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10052     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10053         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10054     fi
10055     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10057     # Embedded Python dies without Home set
10058     if test "$HOME" = ""; then
10059         export HOME=""
10060     fi
10063 dnl By now enable_python should be "system", "internal" or "no"
10064 case $enable_python in
10065 system)
10066     SYSTEM_PYTHON=TRUE
10068     if test "x$ac_cv_header_Python_h" != "xyes"; then
10069        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10070     fi
10072     AC_LANG_PUSH(C)
10073     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10074     AC_MSG_CHECKING([for correct python library version])
10075        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10076 #include <Python.h>
10078 int main(int argc, char **argv) {
10079    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10080    else return 1;
10082        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10083     AC_LANG_POP(C)
10085     dnl FIXME Check if the Python library can be linked with, too?
10086     ;;
10088 internal)
10089     BUILD_TYPE="$BUILD_TYPE PYTHON"
10090     if test "$OS" = LINUX -o "$OS" = WNT ; then
10091         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10092     fi
10093     ;;
10095     DISABLE_PYTHON=TRUE
10096     SYSTEM_PYTHON=
10097     ;;
10099     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10100     ;;
10101 esac
10103 AC_SUBST(DISABLE_PYTHON)
10104 AC_SUBST(SYSTEM_PYTHON)
10105 AC_SUBST(PYTHON_CFLAGS)
10106 AC_SUBST(PYTHON_FOR_BUILD)
10107 AC_SUBST(PYTHON_LIBS)
10108 AC_SUBST(PYTHON_VERSION)
10109 AC_SUBST(PYTHON_VERSION_MAJOR)
10110 AC_SUBST(PYTHON_VERSION_MINOR)
10112 AC_MSG_CHECKING([whether to build LibreLogo])
10113 case "$enable_python" in
10114 no|disable)
10115     AC_MSG_RESULT([no; Python disabled])
10116     ;;
10118     if test "${enable_librelogo}" = "no"; then
10119         AC_MSG_RESULT([no])
10120     else
10121         AC_MSG_RESULT([yes])
10122         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10123         AC_DEFINE([ENABLE_LIBRELOGO],1)
10124     fi
10125     ;;
10126 esac
10127 AC_SUBST(ENABLE_LIBRELOGO)
10129 ENABLE_MARIADBC=
10130 MARIADBC_MAJOR=1
10131 MARIADBC_MINOR=0
10132 MARIADBC_MICRO=2
10133 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10134 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10135     ENABLE_MARIADBC=TRUE
10136     AC_MSG_RESULT([yes])
10137     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10138 else
10139     AC_MSG_RESULT([no])
10141 AC_SUBST(ENABLE_MARIADBC)
10142 AC_SUBST(MARIADBC_MAJOR)
10143 AC_SUBST(MARIADBC_MINOR)
10144 AC_SUBST(MARIADBC_MICRO)
10146 if test "$ENABLE_MARIADBC" = "TRUE"; then
10147     dnl ===================================================================
10148     dnl Check for system MariaDB
10149     dnl ===================================================================
10150     AC_MSG_CHECKING([which MariaDB to use])
10151     if test "$with_system_mariadb" = "yes"; then
10152         AC_MSG_RESULT([external])
10153         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10154         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10155         if test -z "$MARIADBCONFIG"; then
10156             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10157             if test -z "$MARIADBCONFIG"; then
10158                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10159                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10160             fi
10161         fi
10162         AC_MSG_CHECKING([MariaDB version])
10163         MARIADB_VERSION=`$MARIADBCONFIG --version`
10164         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10165         if test "$MARIADB_MAJOR" -ge "5"; then
10166             AC_MSG_RESULT([OK])
10167         else
10168             AC_MSG_ERROR([too old, use 5.0.x or later])
10169         fi
10170         AC_MSG_CHECKING([for MariaDB Client library])
10171         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10172         if test "$COM_IS_CLANG" = TRUE; then
10173             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10174         fi
10175         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10176         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10177         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10178         dnl linux32:
10179         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10180             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10181             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10182                 | sed -e 's|/lib64/|/lib/|')
10183         fi
10184         FilterLibs "${MARIADB_LIBS}"
10185         MARIADB_LIBS="${filteredlibs}"
10186         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10187         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10188         if test "$enable_bundle_mariadb" = "yes"; then
10189             AC_MSG_RESULT([yes])
10190             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10191             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10193 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10195 /g' | grep -E '(mysqlclient|mariadb)')
10196             if test "$_os" = "Darwin"; then
10197                 LIBMARIADB=${LIBMARIADB}.dylib
10198             elif test "$_os" = "WINNT"; then
10199                 LIBMARIADB=${LIBMARIADB}.dll
10200             else
10201                 LIBMARIADB=${LIBMARIADB}.so
10202             fi
10203             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10204             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10205             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10206                 AC_MSG_RESULT([found.])
10207                 PathFormat "$LIBMARIADB_PATH"
10208                 LIBMARIADB_PATH="$formatted_path"
10209             else
10210                 AC_MSG_ERROR([not found.])
10211             fi
10212         else
10213             AC_MSG_RESULT([no])
10214             BUNDLE_MARIADB_CONNECTOR_C=
10215         fi
10216     else
10217         AC_MSG_RESULT([internal])
10218         SYSTEM_MARIADB_CONNECTOR_C=
10219         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10220         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10221         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10222     fi
10224     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10225     AC_SUBST(MARIADB_CFLAGS)
10226     AC_SUBST(MARIADB_LIBS)
10227     AC_SUBST(LIBMARIADB)
10228     AC_SUBST(LIBMARIADB_PATH)
10229     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10232 dnl ===================================================================
10233 dnl Check for system hsqldb
10234 dnl ===================================================================
10235 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10236     AC_MSG_CHECKING([which hsqldb to use])
10237     if test "$with_system_hsqldb" = "yes"; then
10238         AC_MSG_RESULT([external])
10239         SYSTEM_HSQLDB=TRUE
10240         if test -z $HSQLDB_JAR; then
10241             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10242         fi
10243         if ! test -f $HSQLDB_JAR; then
10244                AC_MSG_ERROR(hsqldb.jar not found.)
10245         fi
10246         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10247         export HSQLDB_JAR
10248         if $PERL -e \
10249            'use Archive::Zip;
10250             my $file = "$ENV{'HSQLDB_JAR'}";
10251             my $zip = Archive::Zip->new( $file );
10252             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10253             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10254             {
10255                 push @l, split(/\n/, $mf);
10256                 foreach my $line (@l)
10257                 {
10258                     if ($line =~ m/Specification-Version:/)
10259                     {
10260                         ($t, $version) = split (/:/,$line);
10261                         $version =~ s/^\s//;
10262                         ($a, $b, $c, $d) = split (/\./,$version);
10263                         if ($c == "0" && $d > "8")
10264                         {
10265                             exit 0;
10266                         }
10267                         else
10268                         {
10269                             exit 1;
10270                         }
10271                     }
10272                 }
10273             }
10274             else
10275             {
10276                 exit 1;
10277             }'; then
10278             AC_MSG_RESULT([yes])
10279         else
10280             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10281         fi
10282     else
10283         AC_MSG_RESULT([internal])
10284         SYSTEM_HSQLDB=
10285         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10286         NEED_ANT=TRUE
10287     fi
10288 else
10289     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10290         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10291     fi
10293 AC_SUBST(SYSTEM_HSQLDB)
10294 AC_SUBST(HSQLDB_JAR)
10296 dnl ===================================================================
10297 dnl Check for PostgreSQL stuff
10298 dnl ===================================================================
10299 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10300 if test "x$enable_postgresql_sdbc" != "xno"; then
10301     AC_MSG_RESULT([yes])
10302     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10304     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10305         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10306     fi
10307     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10308         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10309     fi
10311     postgres_interface=""
10312     if test "$with_system_postgresql" = "yes"; then
10313         postgres_interface="external PostgreSQL"
10314         SYSTEM_POSTGRESQL=TRUE
10315         if test "$_os" = Darwin; then
10316             supp_path=''
10317             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10318                 pg_supp_path="$P_SEP$d$pg_supp_path"
10319             done
10320         fi
10321         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10322         if test -n "$PGCONFIG"; then
10323             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10324             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10325         else
10326             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10327               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10328               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10329             ],[
10330               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10331             ])
10332         fi
10333         FilterLibs "${POSTGRESQL_LIB}"
10334         POSTGRESQL_LIB="${filteredlibs}"
10335     else
10336         # if/when anything else than PostgreSQL uses Kerberos,
10337         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10338         WITH_KRB5=
10339         WITH_GSSAPI=
10340         case "$_os" in
10341         Darwin)
10342             # macOS has system MIT Kerberos 5 since 10.4
10343             if test "$with_krb5" != "no"; then
10344                 WITH_KRB5=TRUE
10345                 save_LIBS=$LIBS
10346                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10347                 # that the libraries where these functions are located on macOS will change, is it?
10348                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10349                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10350                 KRB5_LIBS=$LIBS
10351                 LIBS=$save_LIBS
10352                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10353                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10354                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10355                 LIBS=$save_LIBS
10356             fi
10357             if test "$with_gssapi" != "no"; then
10358                 WITH_GSSAPI=TRUE
10359                 save_LIBS=$LIBS
10360                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10361                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10362                 GSSAPI_LIBS=$LIBS
10363                 LIBS=$save_LIBS
10364             fi
10365             ;;
10366         WINNT)
10367             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10368                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10369             fi
10370             ;;
10371         Linux|GNU|*BSD|DragonFly)
10372             if test "$with_krb5" != "no"; then
10373                 WITH_KRB5=TRUE
10374                 save_LIBS=$LIBS
10375                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10376                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10377                 KRB5_LIBS=$LIBS
10378                 LIBS=$save_LIBS
10379                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10380                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10381                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10382                 LIBS=$save_LIBS
10383             fi
10384             if test "$with_gssapi" != "no"; then
10385                 WITH_GSSAPI=TRUE
10386                 save_LIBS=$LIBS
10387                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10388                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10389                 GSSAPI_LIBS=$LIBS
10390                 LIBS=$save_LIBS
10391             fi
10392             ;;
10393         *)
10394             if test "$with_krb5" = "yes"; then
10395                 WITH_KRB5=TRUE
10396                 save_LIBS=$LIBS
10397                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10398                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10399                 KRB5_LIBS=$LIBS
10400                 LIBS=$save_LIBS
10401                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10402                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10403                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10404                 LIBS=$save_LIBS
10405             fi
10406             if test "$with_gssapi" = "yes"; then
10407                 WITH_GSSAPI=TRUE
10408                 save_LIBS=$LIBS
10409                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10410                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10411                 LIBS=$save_LIBS
10412                 GSSAPI_LIBS=$LIBS
10413             fi
10414         esac
10416         if test -n "$with_libpq_path"; then
10417             SYSTEM_POSTGRESQL=TRUE
10418             postgres_interface="external libpq"
10419             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10420             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10421         else
10422             SYSTEM_POSTGRESQL=
10423             postgres_interface="internal"
10424             POSTGRESQL_LIB=""
10425             POSTGRESQL_INC="%OVERRIDE_ME%"
10426             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10427         fi
10428     fi
10430     AC_MSG_CHECKING([PostgreSQL C interface])
10431     AC_MSG_RESULT([$postgres_interface])
10433     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10434         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10435         save_CFLAGS=$CFLAGS
10436         save_CPPFLAGS=$CPPFLAGS
10437         save_LIBS=$LIBS
10438         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10439         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10440         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10441         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10442             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10443         CFLAGS=$save_CFLAGS
10444         CPPFLAGS=$save_CPPFLAGS
10445         LIBS=$save_LIBS
10446     fi
10447     BUILD_POSTGRESQL_SDBC=TRUE
10448 else
10449     AC_MSG_RESULT([no])
10451 AC_SUBST(WITH_KRB5)
10452 AC_SUBST(WITH_GSSAPI)
10453 AC_SUBST(GSSAPI_LIBS)
10454 AC_SUBST(KRB5_LIBS)
10455 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10456 AC_SUBST(SYSTEM_POSTGRESQL)
10457 AC_SUBST(POSTGRESQL_INC)
10458 AC_SUBST(POSTGRESQL_LIB)
10460 dnl ===================================================================
10461 dnl Check for Firebird stuff
10462 dnl ===================================================================
10463 ENABLE_FIREBIRD_SDBC=
10464 if test "$enable_firebird_sdbc" = "yes" ; then
10465     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10467     dnl ===================================================================
10468     dnl Check for system Firebird
10469     dnl ===================================================================
10470     AC_MSG_CHECKING([which Firebird to use])
10471     if test "$with_system_firebird" = "yes"; then
10472         AC_MSG_RESULT([external])
10473         SYSTEM_FIREBIRD=TRUE
10474         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10475         if test -z "$FIREBIRDCONFIG"; then
10476             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10477             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10478                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10479             ])
10480             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10481         else
10482             AC_MSG_NOTICE([fb_config found])
10483             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10484             AC_MSG_CHECKING([for Firebird Client library])
10485             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10486             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10487             FilterLibs "${FIREBIRD_LIBS}"
10488             FIREBIRD_LIBS="${filteredlibs}"
10489         fi
10490         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10491         AC_MSG_CHECKING([Firebird version])
10492         if test -n "${FIREBIRD_VERSION}"; then
10493             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10494             if test "$FIREBIRD_MAJOR" -ge "3"; then
10495                 AC_MSG_RESULT([OK])
10496             else
10497                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10498             fi
10499         else
10500             save_CFLAGS="${CFLAGS}"
10501             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10502             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10503 #if defined(FB_API_VER) && FB_API_VER == 30
10504 int fb_api_is_30(void) { return 0; }
10505 #else
10506 #error "Wrong Firebird API version"
10507 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10508             CFLAGS="$save_CFLAGS"
10509         fi
10510         ENABLE_FIREBIRD_SDBC=TRUE
10511         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10512     elif test "$enable_database_connectivity" = no; then
10513         AC_MSG_RESULT([none])
10514     elif test "$cross_compiling" = "yes"; then
10515         AC_MSG_RESULT([none])
10516     else
10517         dnl Embedded Firebird has version 3.0
10518         dnl We need libatomic_ops for any non X86/X64 system
10519         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10520             dnl ===================================================================
10521             dnl Check for system libatomic_ops
10522             dnl ===================================================================
10523             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10524             if test "$with_system_libatomic_ops" = "yes"; then
10525                 SYSTEM_LIBATOMIC_OPS=TRUE
10526                 AC_CHECK_HEADERS(atomic_ops.h, [],
10527                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10528             else
10529                 SYSTEM_LIBATOMIC_OPS=
10530                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10531                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10532                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10533             fi
10534         fi
10536         AC_MSG_RESULT([internal])
10537         SYSTEM_FIREBIRD=
10538         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10539         FIREBIRD_LIBS="-lfbclient"
10541         if test "$with_system_libtommath" = "yes"; then
10542             SYSTEM_LIBTOMMATH=TRUE
10543             dnl check for tommath presence
10544             save_LIBS=$LIBS
10545             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10546             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10547             LIBS=$save_LIBS
10548         else
10549             SYSTEM_LIBTOMMATH=
10550             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10551             LIBTOMMATH_LIBS="-ltommath"
10552             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10553         fi
10555         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10556         ENABLE_FIREBIRD_SDBC=TRUE
10557         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10558     fi
10560 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10561 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10562 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10563 AC_SUBST(LIBATOMIC_OPS_LIBS)
10564 AC_SUBST(SYSTEM_FIREBIRD)
10565 AC_SUBST(FIREBIRD_CFLAGS)
10566 AC_SUBST(FIREBIRD_LIBS)
10567 AC_SUBST(SYSTEM_LIBTOMMATH)
10568 AC_SUBST(LIBTOMMATH_CFLAGS)
10569 AC_SUBST(LIBTOMMATH_LIBS)
10571 dnl ===================================================================
10572 dnl Check for system curl
10573 dnl ===================================================================
10574 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10576 dnl ===================================================================
10577 dnl Check for system boost
10578 dnl ===================================================================
10579 AC_MSG_CHECKING([which boost to use])
10580 if test "$with_system_boost" = "yes"; then
10581     AC_MSG_RESULT([external])
10582     SYSTEM_BOOST=TRUE
10583     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10584     AX_BOOST_DATE_TIME
10585     AX_BOOST_FILESYSTEM
10586     AX_BOOST_IOSTREAMS
10587     AX_BOOST_LOCALE
10588     AC_LANG_PUSH([C++])
10589     save_CXXFLAGS=$CXXFLAGS
10590     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10591     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10592        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10593     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10594        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10595     CXXFLAGS=$save_CXXFLAGS
10596     AC_LANG_POP([C++])
10597     # this is in m4/ax_boost_base.m4
10598     FilterLibs "${BOOST_LDFLAGS}"
10599     BOOST_LDFLAGS="${filteredlibs}"
10600 else
10601     AC_MSG_RESULT([internal])
10602     BUILD_TYPE="$BUILD_TYPE BOOST"
10603     SYSTEM_BOOST=
10604     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10605         # use warning-suppressing wrapper headers
10606         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10607     else
10608         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10609     fi
10611 AC_SUBST(SYSTEM_BOOST)
10613 dnl ===================================================================
10614 dnl Check for system mdds
10615 dnl ===================================================================
10616 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10617 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10619 dnl ===================================================================
10620 dnl Check for system dragonbox
10621 dnl ===================================================================
10622 AC_MSG_CHECKING([which dragonbox to use])
10623 if test "$with_system_dragonbox" = "yes"; then
10624     AC_MSG_RESULT([external])
10625     SYSTEM_DRAGONBOX=TRUE
10626     AC_LANG_PUSH([C++])
10627     save_CPPFLAGS=$CPPFLAGS
10628     # This is where upstream installs to, unfortunately no .pc or so...
10629     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10630     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10631     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10632        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10633     AC_LANG_POP([C++])
10634     CPPFLAGS=$save_CPPFLAGS
10635 else
10636     AC_MSG_RESULT([internal])
10637     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10638     SYSTEM_DRAGONBOX=
10640 AC_SUBST([SYSTEM_DRAGONBOX])
10641 AC_SUBST([DRAGONBOX_CFLAGS])
10643 dnl ===================================================================
10644 dnl Check for system frozen
10645 dnl ===================================================================
10646 AC_MSG_CHECKING([which frozen to use])
10647 if test "$with_system_frozen" = "yes"; then
10648     AC_MSG_RESULT([external])
10649     SYSTEM_FROZEN=TRUE
10650     AC_LANG_PUSH([C++])
10651     save_CPPFLAGS=$CPPFLAGS
10652     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10653        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10654     AC_LANG_POP([C++])
10655     CPPFLAGS=$save_CPPFLAGS
10656 else
10657     AC_MSG_RESULT([internal])
10658     BUILD_TYPE="$BUILD_TYPE FROZEN"
10659     SYSTEM_FROZEN=
10661 AC_SUBST([SYSTEM_FROZEN])
10662 AC_SUBST([FROZEN_CFLAGS])
10664 dnl ===================================================================
10665 dnl Check for system libfixmath
10666 dnl ===================================================================
10667 AC_MSG_CHECKING([which libfixmath to use])
10668 if test "$with_system_libfixmath" = "yes"; then
10669     AC_MSG_RESULT([external])
10670     SYSTEM_LIBFIXMATH=TRUE
10671     AC_LANG_PUSH([C++])
10672     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10673        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10674     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10675     AC_LANG_POP([C++])
10676 else
10677     AC_MSG_RESULT([internal])
10678     SYSTEM_LIBFIXMATH=
10680 AC_SUBST([SYSTEM_LIBFIXMATH])
10682 dnl ===================================================================
10683 dnl Check for system glm
10684 dnl ===================================================================
10685 AC_MSG_CHECKING([which glm to use])
10686 if test "$with_system_glm" = "yes"; then
10687     AC_MSG_RESULT([external])
10688     SYSTEM_GLM=TRUE
10689     AC_LANG_PUSH([C++])
10690     AC_CHECK_HEADER([glm/glm.hpp], [],
10691        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10692     AC_LANG_POP([C++])
10693 else
10694     AC_MSG_RESULT([internal])
10695     BUILD_TYPE="$BUILD_TYPE GLM"
10696     SYSTEM_GLM=
10697     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10699 AC_SUBST([GLM_CFLAGS])
10700 AC_SUBST([SYSTEM_GLM])
10702 dnl ===================================================================
10703 dnl Check for system odbc
10704 dnl ===================================================================
10705 AC_MSG_CHECKING([which odbc headers to use])
10706 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
10707     AC_MSG_RESULT([external])
10708     SYSTEM_ODBC_HEADERS=TRUE
10710     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10711         save_CPPFLAGS=$CPPFLAGS
10712         find_winsdk
10713         PathFormat "$winsdktest"
10714         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"
10715         AC_CHECK_HEADER(sqlext.h, [],
10716             [AC_MSG_ERROR(odbc not found. install odbc)],
10717             [#include <windows.h>])
10718         CPPFLAGS=$save_CPPFLAGS
10719     else
10720         AC_CHECK_HEADER(sqlext.h, [],
10721             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10722     fi
10723 elif test "$enable_database_connectivity" = no; then
10724     AC_MSG_RESULT([none])
10725 else
10726     AC_MSG_RESULT([internal])
10727     SYSTEM_ODBC_HEADERS=
10729 AC_SUBST(SYSTEM_ODBC_HEADERS)
10731 dnl ===================================================================
10732 dnl Check for system NSS
10733 dnl ===================================================================
10734 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10735     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10736     AC_DEFINE(HAVE_FEATURE_NSS)
10737     ENABLE_NSS=TRUE
10738 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10739     with_tls=openssl
10741 AC_SUBST(ENABLE_NSS)
10743 dnl ===================================================================
10744 dnl Enable LDAP support
10745 dnl ===================================================================
10747 if test "$test_openldap" = yes; then
10748     AC_MSG_CHECKING([whether to enable LDAP support])
10749     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10750         AC_MSG_RESULT([yes])
10751         ENABLE_LDAP=TRUE
10752     else
10753         if test "$enable_ldap" != "yes"; then
10754             AC_MSG_RESULT([no])
10755         else
10756             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10757         fi
10758     fi
10760 dnl ===================================================================
10761 dnl Check for system openldap
10762 dnl ===================================================================
10764     if test "$ENABLE_LDAP" = TRUE; then
10765         AC_MSG_CHECKING([which openldap library to use])
10766         if test "$with_system_openldap" = yes; then
10767             AC_MSG_RESULT([external])
10768             SYSTEM_OPENLDAP=TRUE
10769             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10770             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10771             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10772         else
10773             AC_MSG_RESULT([internal])
10774             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10775         fi
10776     fi
10779 AC_SUBST(ENABLE_LDAP)
10780 AC_SUBST(SYSTEM_OPENLDAP)
10782 dnl ===================================================================
10783 dnl Check for TLS/SSL and cryptographic implementation to use
10784 dnl ===================================================================
10785 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10786 if test -n "$with_tls"; then
10787     case $with_tls in
10788     openssl)
10789         AC_DEFINE(USE_TLS_OPENSSL)
10790         TLS=OPENSSL
10791         AC_MSG_RESULT([$TLS])
10793         if test "$enable_openssl" != "yes"; then
10794             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10795         fi
10797         # warn that OpenSSL has been selected but not all TLS code has this option
10798         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10799         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10800         ;;
10801     nss)
10802         AC_DEFINE(USE_TLS_NSS)
10803         TLS=NSS
10804         AC_MSG_RESULT([$TLS])
10805         ;;
10806     no)
10807         AC_MSG_RESULT([none])
10808         AC_MSG_WARN([Skipping TLS/SSL])
10809         ;;
10810     *)
10811         AC_MSG_RESULT([])
10812         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10813 openssl - OpenSSL
10814 nss - Mozilla's Network Security Services (NSS)
10815     ])
10816         ;;
10817     esac
10818 else
10819     # default to using NSS, it results in smaller oox lib
10820     AC_DEFINE(USE_TLS_NSS)
10821     TLS=NSS
10822     AC_MSG_RESULT([$TLS])
10824 AC_SUBST(TLS)
10826 dnl ===================================================================
10827 dnl Check for system sane
10828 dnl ===================================================================
10829 AC_MSG_CHECKING([which sane header to use])
10830 if test "$with_system_sane" = "yes"; then
10831     AC_MSG_RESULT([external])
10832     AC_CHECK_HEADER(sane/sane.h, [],
10833       [AC_MSG_ERROR(sane not found. install sane)], [])
10834 else
10835     AC_MSG_RESULT([internal])
10836     BUILD_TYPE="$BUILD_TYPE SANE"
10839 dnl ===================================================================
10840 dnl Check for system icu
10841 dnl ===================================================================
10842 ICU_MAJOR=73
10843 ICU_MINOR=2
10844 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10845 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10846 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10847 if test "$SYSTEM_ICU" = TRUE; then
10848     AC_LANG_PUSH([C++])
10849     AC_MSG_CHECKING([for unicode/rbbi.h])
10850     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10851     AC_LANG_POP([C++])
10853     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10854     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10855     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10857     if test "$CROSS_COMPILING" != TRUE; then
10858         # using the system icu tools can lead to version confusion, use the
10859         # ones from the build environment when cross-compiling
10860         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10861         if test -z "$SYSTEM_GENBRK"; then
10862             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10863         fi
10864         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10865         if test -z "$SYSTEM_GENCCODE"; then
10866             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10867         fi
10868         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10869         if test -z "$SYSTEM_GENCMN"; then
10870             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10871         fi
10872     fi
10875 AC_SUBST(SYSTEM_GENBRK)
10876 AC_SUBST(SYSTEM_GENCCODE)
10877 AC_SUBST(SYSTEM_GENCMN)
10878 AC_SUBST(ICU_MAJOR)
10879 AC_SUBST(ICU_MINOR)
10881 dnl ==================================================================
10882 dnl CURL
10883 dnl ==================================================================
10884 if test "$enable_curl" == "yes"; then
10885     AC_DEFINE([HAVE_FEATURE_CURL])
10888 dnl ==================================================================
10889 dnl Breakpad
10890 dnl ==================================================================
10891 DEFAULT_CRASHDUMP_VALUE="true"
10892 AC_MSG_CHECKING([whether to enable breakpad])
10893 if test "$enable_breakpad" != yes; then
10894     AC_MSG_RESULT([no])
10895 else
10896     if test "$enable_curl" != "yes"; then
10897         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10898     fi
10899     AC_MSG_RESULT([yes])
10900     ENABLE_BREAKPAD="TRUE"
10901     AC_DEFINE(ENABLE_BREAKPAD)
10902     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10903     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10905     AC_MSG_CHECKING([for disable crash dump])
10906     if test "$enable_crashdump" = no; then
10907         DEFAULT_CRASHDUMP_VALUE="false"
10908         AC_MSG_RESULT([yes])
10909     else
10910        AC_MSG_RESULT([no])
10911     fi
10913     AC_MSG_CHECKING([for crashreport config])
10914     if test "$with_symbol_config" = "no"; then
10915         BREAKPAD_SYMBOL_CONFIG="invalid"
10916         AC_MSG_RESULT([no])
10917     else
10918         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10919         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10920         AC_MSG_RESULT([yes])
10921     fi
10922     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10924 AC_SUBST(ENABLE_BREAKPAD)
10925 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10927 dnl ==================================================================
10928 dnl libcmis
10929 dnl ==================================================================
10930 if test "$enable_libcmis" == "yes"; then
10931     if test "$enable_curl" != "yes"; then
10932         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10933     fi
10936 dnl ===================================================================
10937 dnl Orcus
10938 dnl ===================================================================
10939 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10940 if test "$with_system_orcus" != "yes"; then
10941     if test "$SYSTEM_BOOST" = "TRUE"; then
10942         dnl Link with Boost.System
10943         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10944         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10945         dnl in documentation has no effect.
10946         AX_BOOST_SYSTEM
10947     fi
10949 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10950 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10951 AC_SUBST([BOOST_SYSTEM_LIB])
10952 AC_SUBST(SYSTEM_LIBORCUS)
10954 dnl ===================================================================
10955 dnl HarfBuzz
10956 dnl ===================================================================
10957 harfbuzz_required_version=5.1.0
10959 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10960 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10961 case "$_os" in
10962     Linux)
10963         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10964         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10965         ;;
10966     *)
10967         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10968         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10969         ;;
10970 esac
10971 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10972 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10974 if test "$COM" = "MSC"; then # override the above
10975     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10976     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10979 if test "$with_system_harfbuzz" = "yes"; then
10980     if test "$with_system_graphite" = "no"; then
10981         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10982     fi
10983     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10984     save_LIBS="$LIBS"
10985     save_CFLAGS="$CFLAGS"
10986     LIBS="$LIBS $HARFBUZZ_LIBS"
10987     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10988     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10989     LIBS="$save_LIBS"
10990     CFLAGS="$save_CFLAGS"
10991 else
10992     if test "$with_system_graphite" = "yes"; then
10993         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10994     fi
10997 if test "$USING_X11" = TRUE; then
10998     AC_PATH_X
10999     AC_PATH_XTRA
11000     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11002     if test -z "$x_includes"; then
11003         x_includes="default_x_includes"
11004     fi
11005     if test -z "$x_libraries"; then
11006         x_libraries="default_x_libraries"
11007     fi
11008     CFLAGS="$CFLAGS $X_CFLAGS"
11009     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11010     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11011 else
11012     x_includes="no_x_includes"
11013     x_libraries="no_x_libraries"
11016 if test "$USING_X11" = TRUE; then
11017     dnl ===================================================================
11018     dnl Check for extension headers
11019     dnl ===================================================================
11020     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11021      [#include <X11/extensions/shape.h>])
11023     # vcl needs ICE and SM
11024     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11025     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11026         [AC_MSG_ERROR(ICE library not found)])
11027     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11028     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11029         [AC_MSG_ERROR(SM library not found)])
11032 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11033     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11034     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11037 dnl ===================================================================
11038 dnl Check for system Xrender
11039 dnl ===================================================================
11040 AC_MSG_CHECKING([whether to use Xrender])
11041 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11042     AC_MSG_RESULT([yes])
11043     PKG_CHECK_MODULES(XRENDER, xrender)
11044     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11045     FilterLibs "${XRENDER_LIBS}"
11046     XRENDER_LIBS="${filteredlibs}"
11047     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11048       [AC_MSG_ERROR(libXrender not found or functional)], [])
11049     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11050       [AC_MSG_ERROR(Xrender not found. install X)], [])
11051 else
11052     AC_MSG_RESULT([no])
11054 AC_SUBST(XRENDER_CFLAGS)
11055 AC_SUBST(XRENDER_LIBS)
11057 dnl ===================================================================
11058 dnl Check for XRandr
11059 dnl ===================================================================
11060 AC_MSG_CHECKING([whether to enable RandR support])
11061 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11062     AC_MSG_RESULT([yes])
11063     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11064     if test "$ENABLE_RANDR" != "TRUE"; then
11065         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11066                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11067         XRANDR_CFLAGS=" "
11068         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11069           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11070         XRANDR_LIBS="-lXrandr "
11071         ENABLE_RANDR="TRUE"
11072     fi
11073     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11074     FilterLibs "${XRANDR_LIBS}"
11075     XRANDR_LIBS="${filteredlibs}"
11076 else
11077     ENABLE_RANDR=""
11078     AC_MSG_RESULT([no])
11080 AC_SUBST(XRANDR_CFLAGS)
11081 AC_SUBST(XRANDR_LIBS)
11082 AC_SUBST(ENABLE_RANDR)
11084 if test -z "$with_webdav"; then
11085     with_webdav=$test_webdav
11088 AC_MSG_CHECKING([for WebDAV support])
11089 case "$with_webdav" in
11091     AC_MSG_RESULT([no])
11092     WITH_WEBDAV=""
11093     ;;
11095     AC_MSG_RESULT([yes])
11096     # curl is already mandatory (almost) and checked elsewhere
11097     if test "$enable_curl" = "no"; then
11098         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11099     fi
11100     WITH_WEBDAV=TRUE
11101     ;;
11102 esac
11103 AC_SUBST(WITH_WEBDAV)
11105 dnl ===================================================================
11106 dnl Check for disabling cve_tests
11107 dnl ===================================================================
11108 AC_MSG_CHECKING([whether to execute CVE tests])
11109 # If not explicitly enabled or disabled, default
11110 if test -z "$enable_cve_tests"; then
11111     case "$OS" in
11112     WNT)
11113         # Default cves off for Windows with its wild and wonderful
11114         # variety of AV software kicking in and panicking
11115         enable_cve_tests=no
11116         ;;
11117     *)
11118         # otherwise yes
11119         enable_cve_tests=yes
11120         ;;
11121     esac
11123 if test "$enable_cve_tests" = "no"; then
11124     AC_MSG_RESULT([no])
11125     DISABLE_CVE_TESTS=TRUE
11126     AC_SUBST(DISABLE_CVE_TESTS)
11127 else
11128     AC_MSG_RESULT([yes])
11131 dnl ===================================================================
11132 dnl Check for system openssl
11133 dnl ===================================================================
11134 ENABLE_OPENSSL=
11135 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11136 if test "$enable_openssl" = "yes"; then
11137     AC_MSG_RESULT([no])
11138     ENABLE_OPENSSL=TRUE
11139     if test "$_os" = Darwin ; then
11140         # OpenSSL is deprecated when building for 10.7 or later.
11141         #
11142         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11143         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11145         with_system_openssl=no
11146         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11147     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11148             && test "$with_system_openssl" != "no"; then
11149         with_system_openssl=yes
11150         SYSTEM_OPENSSL=TRUE
11151         OPENSSL_CFLAGS=
11152         OPENSSL_LIBS="-lssl -lcrypto"
11153     else
11154         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11155         if test -n "${SYSTEM_OPENSSL}"; then
11156             AC_DEFINE([SYSTEM_OPENSSL])
11157         fi
11158     fi
11159     if test "$with_system_openssl" = "yes"; then
11160         AC_MSG_CHECKING([whether openssl supports SHA512])
11161         AC_LANG_PUSH([C])
11162         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11163             SHA512_CTX context;
11164 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11165         AC_LANG_POP(C)
11166     fi
11167 else
11168     AC_MSG_RESULT([yes])
11170     # warn that although OpenSSL is disabled, system libraries may depend on it
11171     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11172     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11175 AC_SUBST([ENABLE_OPENSSL])
11177 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11178     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11179         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11180         enable_cipher_openssl_backend=no
11181     else
11182         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11183     fi
11185 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11186 ENABLE_CIPHER_OPENSSL_BACKEND=
11187 if test "$enable_cipher_openssl_backend" = yes; then
11188     AC_MSG_RESULT([yes])
11189     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11190 else
11191     AC_MSG_RESULT([no])
11193 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11195 dnl ===================================================================
11196 dnl Select the crypto backends used by LO
11197 dnl ===================================================================
11199 if test "$build_crypto" = yes; then
11200     if test "$OS" = WNT; then
11201         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11202         AC_DEFINE([USE_CRYPTO_MSCAPI])
11203     elif test "$ENABLE_NSS" = TRUE; then
11204         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11205         AC_DEFINE([USE_CRYPTO_NSS])
11206     fi
11209 dnl ===================================================================
11210 dnl Check for system redland
11211 dnl ===================================================================
11212 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11213 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11214 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11215 if test "$with_system_redland" = "yes"; then
11216     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11217             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11218 else
11219     RAPTOR_MAJOR="0"
11220     RASQAL_MAJOR="3"
11221     REDLAND_MAJOR="0"
11223 AC_SUBST(RAPTOR_MAJOR)
11224 AC_SUBST(RASQAL_MAJOR)
11225 AC_SUBST(REDLAND_MAJOR)
11227 dnl ===================================================================
11228 dnl Check for system hunspell
11229 dnl ===================================================================
11230 AC_MSG_CHECKING([which libhunspell to use])
11231 if test "$with_system_hunspell" = "yes"; then
11232     AC_MSG_RESULT([external])
11233     SYSTEM_HUNSPELL=TRUE
11234     AC_LANG_PUSH([C++])
11235     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11236     if test "$HUNSPELL_PC" != "TRUE"; then
11237         AC_CHECK_HEADER(hunspell.hxx, [],
11238             [
11239             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11240             [AC_MSG_ERROR(hunspell headers not found.)], [])
11241             ], [])
11242         AC_CHECK_LIB([hunspell], [main], [:],
11243            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11244         HUNSPELL_LIBS=-lhunspell
11245     fi
11246     AC_LANG_POP([C++])
11247     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11248     FilterLibs "${HUNSPELL_LIBS}"
11249     HUNSPELL_LIBS="${filteredlibs}"
11250 else
11251     AC_MSG_RESULT([internal])
11252     SYSTEM_HUNSPELL=
11253     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11254     if test "$COM" = "MSC"; then
11255         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11256     else
11257         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11258     fi
11259     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11261 AC_SUBST(SYSTEM_HUNSPELL)
11262 AC_SUBST(HUNSPELL_CFLAGS)
11263 AC_SUBST(HUNSPELL_LIBS)
11265 dnl ===================================================================
11266 dnl Check for system zxcvbn
11267 dnl ===================================================================
11268 AC_MSG_CHECKING([which zxcvbn to use])
11269 if test "$with_system_zxcvbn" = "yes"; then
11270     AC_MSG_RESULT([external])
11271     SYSTEM_ZXCVBN=TRUE
11272     AC_CHECK_HEADER(zxcvbn.h, [],
11273        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11274     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11275         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11276 else
11277    AC_MSG_RESULT([internal])
11278    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11279    SYSTEM_ZXCVBN=
11281 AC_SUBST(SYSTEM_ZXCVBN)
11283 dnl ===================================================================
11284 dnl Check for system zxing
11285 dnl ===================================================================
11286 AC_MSG_CHECKING([whether to use zxing])
11287 if test "$enable_zxing" = "no"; then
11288     AC_MSG_RESULT([no])
11289     ENABLE_ZXING=
11290     SYSTEM_ZXING=
11291 else
11292     AC_MSG_RESULT([yes])
11293     ENABLE_ZXING=TRUE
11294     AC_MSG_CHECKING([which libzxing to use])
11295     if test "$with_system_zxing" = "yes"; then
11296         AC_MSG_RESULT([external])
11297         SYSTEM_ZXING=TRUE
11298         ZXING_CFLAGS=
11299         AC_LANG_PUSH([C++])
11300         save_CXXFLAGS=$CXXFLAGS
11301         save_IFS=$IFS
11302         IFS=$P_SEP
11303         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11304             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11305             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11306             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11307             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11308             dnl unsetting IFS."):
11309             IFS=$save_IFS
11310             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11311             dnl ignore them here:
11312             if test -z "$i"; then
11313                 continue
11314             fi
11315             dnl TODO: White space in $i would cause problems:
11316             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11317             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11318                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11319         done
11320         CXXFLAGS=$save_CXXFLAGS
11321         if test -z "$ZXING_CFLAGS"; then
11322             AC_MSG_ERROR(zxing headers not found.)
11323         fi
11324         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11325             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11326             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11327         AC_LANG_POP([C++])
11328         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11329         FilterLibs "${ZXING_LIBS}"
11330         ZXING_LIBS="${filteredlibs}"
11331     else
11332         AC_MSG_RESULT([internal])
11333         SYSTEM_ZXING=
11334         BUILD_TYPE="$BUILD_TYPE ZXING"
11335         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11336     fi
11337     if test "$ENABLE_ZXING" = TRUE; then
11338         AC_DEFINE(ENABLE_ZXING)
11339     fi
11340     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11341     AC_LANG_PUSH([C++])
11342     save_CXXFLAGS=$CXXFLAGS
11343     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11344     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11345             #include <BitMatrix.h>
11346             #include <BitMatrixIO.h>
11347             int main(){
11348                 ZXing::BitMatrix matrix(1, 1);
11349                 matrix.set(0, 0, true);
11350                 ZXing::ToSVG(matrix);
11351                 return 0;
11352             }
11353         ])], [
11354             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11355             AC_MSG_RESULT([yes])
11356         ], [AC_MSG_RESULT([no])])
11357     CXXFLAGS=$save_CXXFLAGS
11358     AC_LANG_POP([C++])
11359     AC_SUBST(HAVE_ZXING_TOSVG)
11361 AC_SUBST(SYSTEM_ZXING)
11362 AC_SUBST(ENABLE_ZXING)
11363 AC_SUBST(ZXING_CFLAGS)
11364 AC_SUBST(ZXING_LIBS)
11366 dnl ===================================================================
11367 dnl Check for system box2d
11368 dnl ===================================================================
11369 AC_MSG_CHECKING([which box2d to use])
11370 if test "$with_system_box2d" = "yes"; then
11371     AC_MSG_RESULT([external])
11372     SYSTEM_BOX2D=TRUE
11373     AC_LANG_PUSH([C++])
11374     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11375         [BOX2D_H_FOUND='FALSE'])
11376     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11377         _BOX2D_LIB=box2d
11378         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11379     else
11380         # fail this. there's no other alternative to check when we are here.
11381         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11382             [AC_MSG_ERROR(box2d headers not found.)])
11383         _BOX2D_LIB=Box2D
11384         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11385     fi
11386     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11387         [ AC_MSG_ERROR(box2d library not found.) ], [])
11388     BOX2D_LIBS=-l$_BOX2D_LIB
11389     AC_LANG_POP([C++])
11390     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11391     FilterLibs "${BOX2D_LIBS}"
11392     BOX2D_LIBS="${filteredlibs}"
11393 else
11394     AC_MSG_RESULT([internal])
11395     SYSTEM_BOX2D=
11396     BUILD_TYPE="$BUILD_TYPE BOX2D"
11398 AC_SUBST(SYSTEM_BOX2D)
11399 AC_SUBST(BOX2D_CFLAGS)
11400 AC_SUBST(BOX2D_LIBS)
11402 dnl ===================================================================
11403 dnl Checking for altlinuxhyph
11404 dnl ===================================================================
11405 AC_MSG_CHECKING([which altlinuxhyph to use])
11406 if test "$with_system_altlinuxhyph" = "yes"; then
11407     AC_MSG_RESULT([external])
11408     SYSTEM_HYPH=TRUE
11409     AC_CHECK_HEADER(hyphen.h, [],
11410        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11411     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11412        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11413        [#include <hyphen.h>])
11414     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11415         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11416     if test -z "$HYPHEN_LIB"; then
11417         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11418            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11419     fi
11420     if test -z "$HYPHEN_LIB"; then
11421         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11422            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11423     fi
11424 else
11425     AC_MSG_RESULT([internal])
11426     SYSTEM_HYPH=
11427     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11428     if test "$COM" = "MSC"; then
11429         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11430     else
11431         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11432     fi
11434 AC_SUBST(SYSTEM_HYPH)
11435 AC_SUBST(HYPHEN_LIB)
11437 dnl ===================================================================
11438 dnl Checking for mythes
11439 dnl ===================================================================
11440 AC_MSG_CHECKING([which mythes to use])
11441 if test "$with_system_mythes" = "yes"; then
11442     AC_MSG_RESULT([external])
11443     SYSTEM_MYTHES=TRUE
11444     AC_LANG_PUSH([C++])
11445     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11446     if test "$MYTHES_PKGCONFIG" = "no"; then
11447         AC_CHECK_HEADER(mythes.hxx, [],
11448             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11449         AC_CHECK_LIB([mythes-1.2], [main], [:],
11450             [ MYTHES_FOUND=no], [])
11451     if test "$MYTHES_FOUND" = "no"; then
11452         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11453                 [ MYTHES_FOUND=no], [])
11454     fi
11455     if test "$MYTHES_FOUND" = "no"; then
11456         AC_MSG_ERROR([mythes library not found!.])
11457     fi
11458     fi
11459     AC_LANG_POP([C++])
11460     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11461     FilterLibs "${MYTHES_LIBS}"
11462     MYTHES_LIBS="${filteredlibs}"
11463 else
11464     AC_MSG_RESULT([internal])
11465     SYSTEM_MYTHES=
11466     BUILD_TYPE="$BUILD_TYPE MYTHES"
11467     if test "$COM" = "MSC"; then
11468         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11469     else
11470         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11471     fi
11473 AC_SUBST(SYSTEM_MYTHES)
11474 AC_SUBST(MYTHES_CFLAGS)
11475 AC_SUBST(MYTHES_LIBS)
11477 dnl ===================================================================
11478 dnl How should we build the linear programming solver ?
11479 dnl ===================================================================
11481 ENABLE_COINMP=
11482 AC_MSG_CHECKING([whether to build with CoinMP])
11483 if test "$enable_coinmp" != "no"; then
11484     ENABLE_COINMP=TRUE
11485     AC_MSG_RESULT([yes])
11486     if test "$with_system_coinmp" = "yes"; then
11487         SYSTEM_COINMP=TRUE
11488         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11489         FilterLibs "${COINMP_LIBS}"
11490         COINMP_LIBS="${filteredlibs}"
11491     else
11492         BUILD_TYPE="$BUILD_TYPE COINMP"
11493     fi
11494 else
11495     AC_MSG_RESULT([no])
11497 AC_SUBST(ENABLE_COINMP)
11498 AC_SUBST(SYSTEM_COINMP)
11499 AC_SUBST(COINMP_CFLAGS)
11500 AC_SUBST(COINMP_LIBS)
11502 ENABLE_LPSOLVE=
11503 AC_MSG_CHECKING([whether to build with lpsolve])
11504 if test "$enable_lpsolve" != "no"; then
11505     ENABLE_LPSOLVE=TRUE
11506     AC_MSG_RESULT([yes])
11507 else
11508     AC_MSG_RESULT([no])
11510 AC_SUBST(ENABLE_LPSOLVE)
11512 if test "$ENABLE_LPSOLVE" = TRUE; then
11513     AC_MSG_CHECKING([which lpsolve to use])
11514     if test "$with_system_lpsolve" = "yes"; then
11515         AC_MSG_RESULT([external])
11516         SYSTEM_LPSOLVE=TRUE
11517         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11518            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11519         save_LIBS=$LIBS
11520         # some systems need this. Like Ubuntu...
11521         AC_CHECK_LIB(m, floor)
11522         AC_CHECK_LIB(dl, dlopen)
11523         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11524             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11525         LIBS=$save_LIBS
11526     else
11527         AC_MSG_RESULT([internal])
11528         SYSTEM_LPSOLVE=
11529         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11530     fi
11532 AC_SUBST(SYSTEM_LPSOLVE)
11534 dnl ===================================================================
11535 dnl Checking for libexttextcat
11536 dnl ===================================================================
11537 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11538 if test "$with_system_libexttextcat" = "yes"; then
11539     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11541 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11543 dnl ===================================================================
11544 dnl Checking for libnumbertext
11545 dnl ===================================================================
11546 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11547 if test "$with_system_libnumbertext" = "yes"; then
11548     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11549     SYSTEM_LIBNUMBERTEXT=YES
11550 else
11551     SYSTEM_LIBNUMBERTEXT=
11553 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11554 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11556 dnl ***************************************
11557 dnl testing libc version for Linux...
11558 dnl ***************************************
11559 if test "$_os" = "Linux"; then
11560     AC_MSG_CHECKING([whether the libc is recent enough])
11561     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11562     #include <features.h>
11563     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11564     #error glibc >= 2.1 is required
11565     #endif
11566     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11569 dnl =========================================
11570 dnl Check for uuidgen
11571 dnl =========================================
11572 if test "$_os" = "WINNT"; then
11573     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11574     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11575     UUIDGEN=uuidgen.exe
11576     AC_SUBST(UUIDGEN)
11577 else
11578     AC_PATH_PROG([UUIDGEN], [uuidgen])
11579     if test -z "$UUIDGEN"; then
11580         AC_MSG_WARN([uuid is needed for building installation sets])
11581     fi
11584 dnl ***************************************
11585 dnl Checking for bison and flex
11586 dnl ***************************************
11587 AC_PATH_PROG(BISON, bison)
11588 if test -z "$BISON"; then
11589     AC_MSG_ERROR([no bison found in \$PATH, install it])
11590 else
11591     AC_MSG_CHECKING([the bison version])
11592     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11593     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11594     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11595     dnl cause
11596     dnl
11597     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]
11598     dnl   typedef union YYSTYPE
11599     dnl           ~~~~~~^~~~~~~
11600     dnl
11601     dnl while at least 3.4.1 is know to be good:
11602     if test "$COMPILER_PLUGINS" = TRUE; then
11603         if test "$_bison_longver" -lt 2004; then
11604             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11605         fi
11606     else
11607         if test "$_bison_longver" -lt 2000; then
11608             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11609         fi
11610     fi
11612 AC_SUBST([BISON])
11614 AC_PATH_PROG(FLEX, flex)
11615 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11616     FLEX=`cygpath -m $FLEX`
11618 if test -z "$FLEX"; then
11619     AC_MSG_ERROR([no flex found in \$PATH, install it])
11620 else
11621     AC_MSG_CHECKING([the flex version])
11622     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11623     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11624         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11625     fi
11627 AC_SUBST([FLEX])
11629 AC_PATH_PROG(DIFF, diff)
11630 if test -z "$DIFF"; then
11631     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11633 AC_SUBST([DIFF])
11635 AC_PATH_PROG(UNIQ, uniq)
11636 if test -z "$UNIQ"; then
11637     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11639 AC_SUBST([UNIQ])
11641 dnl ***************************************
11642 dnl Checking for patch
11643 dnl ***************************************
11644 AC_PATH_PROG(PATCH, patch)
11645 if test -z "$PATCH"; then
11646     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11649 dnl On Solaris or macOS, check if --with-gnu-patch was used
11650 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11651     if test -z "$with_gnu_patch"; then
11652         GNUPATCH=$PATCH
11653     else
11654         if test -x "$with_gnu_patch"; then
11655             GNUPATCH=$with_gnu_patch
11656         else
11657             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11658         fi
11659     fi
11661     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11662     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11663         AC_MSG_RESULT([yes])
11664     else
11665         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11666             AC_MSG_RESULT([no, but accepted (Apple patch)])
11667             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11668         else
11669             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11670         fi
11671     fi
11672 else
11673     GNUPATCH=$PATCH
11676 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11677     GNUPATCH=`cygpath -m $GNUPATCH`
11680 dnl We also need to check for --with-gnu-cp
11682 if test -z "$with_gnu_cp"; then
11683     # check the place where the good stuff is hidden on Solaris...
11684     if test -x /usr/gnu/bin/cp; then
11685         GNUCP=/usr/gnu/bin/cp
11686     else
11687         AC_PATH_PROGS(GNUCP, gnucp cp)
11688     fi
11689     if test -z $GNUCP; then
11690         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11691     fi
11692 else
11693     if test -x "$with_gnu_cp"; then
11694         GNUCP=$with_gnu_cp
11695     else
11696         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11697     fi
11700 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11701     GNUCP=`cygpath -m $GNUCP`
11704 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11705 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11706     AC_MSG_RESULT([yes])
11707 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11708     AC_MSG_RESULT([yes])
11709 else
11710     case "$build_os" in
11711     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11712         x_GNUCP=[\#]
11713         GNUCP=''
11714         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11715         ;;
11716     *)
11717         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11718         ;;
11719     esac
11722 AC_SUBST(GNUPATCH)
11723 AC_SUBST(GNUCP)
11724 AC_SUBST(x_GNUCP)
11726 dnl ***************************************
11727 dnl testing assembler path
11728 dnl ***************************************
11729 ML_EXE=""
11730 if test "$_os" = "WINNT"; then
11731     case "$WIN_HOST_ARCH" in
11732     x86) assembler=ml.exe ;;
11733     x64) assembler=ml64.exe ;;
11734     arm64) assembler=armasm64.exe ;;
11735     esac
11737     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11738     if test -f "$MSVC_HOST_PATH/$assembler"; then
11739         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11740         AC_MSG_RESULT([$ML_EXE])
11741     else
11742         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11743     fi
11746 AC_SUBST(ML_EXE)
11748 dnl ===================================================================
11749 dnl We need zip and unzip
11750 dnl ===================================================================
11751 AC_PATH_PROG(ZIP, zip)
11752 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11753 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11754     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],,)
11757 AC_PATH_PROG(UNZIP, unzip)
11758 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11760 dnl ===================================================================
11761 dnl Zip must be a specific type for different build types.
11762 dnl ===================================================================
11763 if test $build_os = cygwin; then
11764     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11765         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11766     fi
11769 dnl ===================================================================
11770 dnl We need touch with -h option support.
11771 dnl ===================================================================
11772 AC_PATH_PROG(TOUCH, touch)
11773 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11774 touch "$WARNINGS_FILE"
11775 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11776     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],,)
11779 dnl ===================================================================
11780 dnl Check for system epoxy
11781 dnl ===================================================================
11782 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11783 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11785 dnl ===================================================================
11786 dnl Show which vclplugs will be built.
11787 dnl ===================================================================
11788 R=""
11790 libo_ENABLE_VCLPLUG([gen])
11791 libo_ENABLE_VCLPLUG([gtk3])
11792 libo_ENABLE_VCLPLUG([gtk3_kde5])
11793 libo_ENABLE_VCLPLUG([gtk4])
11794 libo_ENABLE_VCLPLUG([kf5])
11795 libo_ENABLE_VCLPLUG([kf6])
11796 libo_ENABLE_VCLPLUG([qt5])
11797 libo_ENABLE_VCLPLUG([qt6])
11799 if test "$_os" = "WINNT"; then
11800     R="$R win"
11801 elif test "$_os" = "Darwin"; then
11802     R="$R osx"
11803 elif test "$_os" = "iOS"; then
11804     R="ios"
11805 elif test "$_os" = Android; then
11806     R="android"
11809 build_vcl_plugins="$R"
11810 if test -z "$build_vcl_plugins"; then
11811     build_vcl_plugins=" none"
11813 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11814 VCL_PLUGIN_INFO=$R
11815 AC_SUBST([VCL_PLUGIN_INFO])
11817 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11818     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11821 dnl ===================================================================
11822 dnl Check for GTK libraries
11823 dnl ===================================================================
11825 GTK3_CFLAGS=""
11826 GTK3_LIBS=""
11827 ENABLE_GTKTILEDVIEWER=""
11828 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11829     if test "$with_system_cairo" = no; then
11830         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.'
11831     fi
11832     : ${with_system_cairo:=yes}
11833     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)
11834     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11835     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11836     FilterLibs "${GTK3_LIBS}"
11837     GTK3_LIBS="${filteredlibs}"
11839     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11840     if test "$with_system_epoxy" != "yes"; then
11841         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11842         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11843                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11844     fi
11845 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11846     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11847     if test "$build_os" = "cygwin"; then
11848         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11849         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11850     fi
11852     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11853     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11854     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11855     FilterLibs "${GTK3_LIBS}"
11856     GTK3_LIBS="${filteredlibs}"
11857     ENABLE_GTKTILEDVIEWER="yes"
11859 AC_SUBST(GTK3_LIBS)
11860 AC_SUBST(GTK3_CFLAGS)
11861 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11863 GTK4_CFLAGS=""
11864 GTK4_LIBS=""
11865 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11866     if test "$with_system_cairo" = no; then
11867         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11868     fi
11869     : ${with_system_cairo:=yes}
11870     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11871     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11872     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11873     FilterLibs "${GTK4_LIBS}"
11874     GTK4_LIBS="${filteredlibs}"
11876     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11877     if test "$with_system_epoxy" != "yes"; then
11878         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11879         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11880                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11881     fi
11883 AC_SUBST(GTK4_LIBS)
11884 AC_SUBST(GTK4_CFLAGS)
11886 if test "$enable_introspection" = yes; then
11887     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11888         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11889     else
11890         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11891     fi
11894 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11895 if ! test "$ENABLE_GTK3" = TRUE; then
11896     if test "$enable_atspi_tests" = yes; then
11897         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11898     fi
11899     enable_atspi_tests=no
11901 if ! test "$enable_atspi_tests" = no; then
11902     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11903     if ! test "$XVFB_RUN" = no; then
11904         dnl make sure the found xvfb-run actually works
11905         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11906         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11907             AC_MSG_RESULT([yes])
11908         else
11909             AC_MSG_RESULT([no])
11910             XVFB_RUN=no
11911         fi
11912     fi
11913     if test "$XVFB_RUN" = no; then
11914         if test "$enable_atspi_tests" = yes; then
11915             AC_MSG_ERROR([xvfb-run 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     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11922     if test "$DBUS_LAUNCH" = no; then
11923         if test "$enable_atspi_tests" = yes; then
11924             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11925         fi
11926         enable_atspi_tests=no
11927     fi
11929 if ! test "$enable_atspi_tests" = no; then
11930     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11931                       [if test "$enable_atspi_tests" = yes; then
11932                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11933                        else
11934                            enable_atspi_tests=no
11935                        fi])
11937 if ! test "x$enable_atspi_tests" = xno; then
11938     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11939                       [have_atspi_scroll_to=1],
11940                       [have_atspi_scroll_to=0])
11941     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11942                        [Whether AT-SPI2 has the scrollTo API])
11944 ENABLE_ATSPI_TESTS=
11945 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11946 AC_SUBST([ENABLE_ATSPI_TESTS])
11948 dnl ===================================================================
11949 dnl check for dbus support
11950 dnl ===================================================================
11951 ENABLE_DBUS=""
11952 DBUS_CFLAGS=""
11953 DBUS_LIBS=""
11954 DBUS_GLIB_CFLAGS=""
11955 DBUS_GLIB_LIBS=""
11956 DBUS_HAVE_GLIB=""
11958 if test "$enable_dbus" = "no"; then
11959     test_dbus=no
11962 AC_MSG_CHECKING([whether to enable DBUS support])
11963 if test "$test_dbus" = "yes"; then
11964     ENABLE_DBUS="TRUE"
11965     AC_MSG_RESULT([yes])
11966     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11967     AC_DEFINE(ENABLE_DBUS)
11968     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11969     FilterLibs "${DBUS_LIBS}"
11970     DBUS_LIBS="${filteredlibs}"
11972     # Glib is needed for BluetoothServer
11973     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11974     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11975         [
11976             DBUS_HAVE_GLIB="TRUE"
11977             AC_DEFINE(DBUS_HAVE_GLIB,1)
11978         ],
11979         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11980     )
11981 else
11982     AC_MSG_RESULT([no])
11985 AC_SUBST(ENABLE_DBUS)
11986 AC_SUBST(DBUS_CFLAGS)
11987 AC_SUBST(DBUS_LIBS)
11988 AC_SUBST(DBUS_GLIB_CFLAGS)
11989 AC_SUBST(DBUS_GLIB_LIBS)
11990 AC_SUBST(DBUS_HAVE_GLIB)
11992 AC_MSG_CHECKING([whether to enable Impress remote control])
11993 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11994     AC_MSG_RESULT([yes])
11995     ENABLE_SDREMOTE=TRUE
11996     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11997         <true/>"
11998     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12000     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12001         # The Bluetooth code doesn't compile with macOS SDK 10.15
12002         if test "$enable_sdremote_bluetooth" = yes; then
12003             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12004         fi
12005         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12006         enable_sdremote_bluetooth=no
12007     fi
12008     # If not explicitly enabled or disabled, default
12009     if test -z "$enable_sdremote_bluetooth"; then
12010         case "$OS" in
12011         LINUX|MACOSX|WNT)
12012             # Default to yes for these
12013             enable_sdremote_bluetooth=yes
12014             ;;
12015         *)
12016             # otherwise no
12017             enable_sdremote_bluetooth=no
12018             ;;
12019         esac
12020     fi
12021     # $enable_sdremote_bluetooth is guaranteed non-empty now
12023     if test "$enable_sdremote_bluetooth" != "no"; then
12024         if test "$OS" = "LINUX"; then
12025             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12026                 AC_MSG_RESULT([yes])
12027                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12028                 dnl ===================================================================
12029                 dnl Check for system bluez
12030                 dnl ===================================================================
12031                 AC_MSG_CHECKING([which Bluetooth header to use])
12032                 if test "$with_system_bluez" = "yes"; then
12033                     AC_MSG_RESULT([external])
12034                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12035                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12036                     SYSTEM_BLUEZ=TRUE
12037                 else
12038                     AC_MSG_RESULT([internal])
12039                     SYSTEM_BLUEZ=
12040                 fi
12041             else
12042                 AC_MSG_RESULT([no, dbus disabled])
12043                 ENABLE_SDREMOTE_BLUETOOTH=
12044                 SYSTEM_BLUEZ=
12045             fi
12046         else
12047             AC_MSG_RESULT([yes])
12048             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12049             SYSTEM_BLUEZ=
12050             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12051         <key>com.apple.security.device.bluetooth</key>
12052         <true/>"
12053         fi
12054     else
12055         AC_MSG_RESULT([no])
12056         ENABLE_SDREMOTE_BLUETOOTH=
12057         SYSTEM_BLUEZ=
12058     fi
12059 else
12060     ENABLE_SDREMOTE=
12061     SYSTEM_BLUEZ=
12062     AC_MSG_RESULT([no])
12064 AC_SUBST(ENABLE_SDREMOTE)
12065 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12066 AC_SUBST(SDREMOTE_ENTITLEMENT)
12067 AC_SUBST(SYSTEM_BLUEZ)
12069 dnl ===================================================================
12070 dnl Check whether to enable GIO support
12071 dnl ===================================================================
12072 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12073     AC_MSG_CHECKING([whether to enable GIO support])
12074     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12075         dnl Need at least 2.26 for the dbus support.
12076         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12077                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12078         if test "$ENABLE_GIO" = "TRUE"; then
12079             AC_DEFINE(ENABLE_GIO)
12080             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12081             FilterLibs "${GIO_LIBS}"
12082             GIO_LIBS="${filteredlibs}"
12083         fi
12084     else
12085         AC_MSG_RESULT([no])
12086     fi
12088 AC_SUBST(ENABLE_GIO)
12089 AC_SUBST(GIO_CFLAGS)
12090 AC_SUBST(GIO_LIBS)
12093 dnl ===================================================================
12095 SPLIT_APP_MODULES=""
12096 if test "$enable_split_app_modules" = "yes"; then
12097     SPLIT_APP_MODULES="TRUE"
12099 AC_SUBST(SPLIT_APP_MODULES)
12101 SPLIT_OPT_FEATURES=""
12102 if test "$enable_split_opt_features" = "yes"; then
12103     SPLIT_OPT_FEATURES="TRUE"
12105 AC_SUBST(SPLIT_OPT_FEATURES)
12107 dnl ===================================================================
12108 dnl Check whether the GStreamer libraries are available.
12109 dnl ===================================================================
12111 ENABLE_GSTREAMER_1_0=""
12113 if test "$test_gstreamer_1_0" = yes; then
12115     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12116     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12117         ENABLE_GSTREAMER_1_0="TRUE"
12118         AC_MSG_RESULT([yes])
12119         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12120         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12121         FilterLibs "${GSTREAMER_1_0_LIBS}"
12122         GSTREAMER_1_0_LIBS="${filteredlibs}"
12123         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12124     else
12125         AC_MSG_RESULT([no])
12126     fi
12128 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12129 AC_SUBST(GSTREAMER_1_0_LIBS)
12130 AC_SUBST(ENABLE_GSTREAMER_1_0)
12132 ENABLE_OPENGL_TRANSITIONS=
12133 ENABLE_OPENGL_CANVAS=
12134 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12135    : # disable
12136 elif test "$_os" = "Darwin"; then
12137     # We use frameworks on macOS, no need for detail checks
12138     ENABLE_OPENGL_TRANSITIONS=TRUE
12139     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12140     ENABLE_OPENGL_CANVAS=TRUE
12141 elif test $_os = WINNT; then
12142     ENABLE_OPENGL_TRANSITIONS=TRUE
12143     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12144     ENABLE_OPENGL_CANVAS=TRUE
12145 else
12146     if test "$USING_X11" = TRUE; then
12147         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12148         ENABLE_OPENGL_TRANSITIONS=TRUE
12149         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12150         ENABLE_OPENGL_CANVAS=TRUE
12151     fi
12154 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12155 AC_SUBST(ENABLE_OPENGL_CANVAS)
12157 dnl =================================================
12158 dnl Check whether to build with OpenCL support.
12159 dnl =================================================
12161 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12162     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12163     # platform (optional at run-time, used through clew).
12164     BUILD_TYPE="$BUILD_TYPE OPENCL"
12165     AC_DEFINE(HAVE_FEATURE_OPENCL)
12168 dnl =================================================
12169 dnl Check whether to build with dconf support.
12170 dnl =================================================
12172 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12173     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12174         if test "$enable_dconf" = yes; then
12175             AC_MSG_ERROR([dconf not found])
12176         else
12177             enable_dconf=no
12178         fi])
12180 AC_MSG_CHECKING([whether to enable dconf])
12181 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12182     DCONF_CFLAGS=
12183     DCONF_LIBS=
12184     ENABLE_DCONF=
12185     AC_MSG_RESULT([no])
12186 else
12187     ENABLE_DCONF=TRUE
12188     AC_DEFINE(ENABLE_DCONF)
12189     AC_MSG_RESULT([yes])
12191 AC_SUBST([DCONF_CFLAGS])
12192 AC_SUBST([DCONF_LIBS])
12193 AC_SUBST([ENABLE_DCONF])
12195 # pdf import?
12196 AC_MSG_CHECKING([whether to build the PDF import feature])
12197 ENABLE_PDFIMPORT=
12198 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12199     AC_MSG_RESULT([yes])
12200     ENABLE_PDFIMPORT=TRUE
12201     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12202 else
12203     AC_MSG_RESULT([no])
12206 # Pdfium?
12207 AC_MSG_CHECKING([whether to build PDFium])
12208 ENABLE_PDFIUM=
12209 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12210     AC_MSG_RESULT([yes])
12211     ENABLE_PDFIUM=TRUE
12212     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12213 else
12214     AC_MSG_RESULT([no])
12216 AC_SUBST(ENABLE_PDFIUM)
12218 if test "$ENABLE_PDFIUM" = "TRUE"; then
12219     AC_MSG_CHECKING([which OpenJPEG library to use])
12220     if test "$with_system_openjpeg" = "yes"; then
12221         SYSTEM_OPENJPEG2=TRUE
12222         AC_MSG_RESULT([external])
12223         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12224         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12225         FilterLibs "${OPENJPEG2_LIBS}"
12226         OPENJPEG2_LIBS="${filteredlibs}"
12227     else
12228         SYSTEM_OPENJPEG2=FALSE
12229         AC_MSG_RESULT([internal])
12230     fi
12232     AC_MSG_CHECKING([which Abseil library to use])
12233     if test "$with_system_abseil" = "yes"; then
12234         AC_MSG_RESULT([external])
12235         SYSTEM_ABSEIL=TRUE
12236         AC_LANG_PUSH([C++])
12237         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12238                         [AC_MSG_ERROR(abseil headers not found.)], [])
12239         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12240                         [AC_MSG_ERROR(abseil headers not found.)], [])
12241         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12242                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12243         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12244                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12245         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12246         AC_LANG_POP([C++])
12247         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12248         FilterLibs "${ABSEIL_LIBS}"
12249         ABSEIL_LIBS="${filteredlibs}"
12250     else
12251         AC_MSG_RESULT([internal])
12252     fi
12254 AC_SUBST(SYSTEM_OPENJPEG2)
12255 AC_SUBST(SYSTEM_ABSEIL)
12256 AC_SUBST(ABSEIL_CFLAGS)
12257 AC_SUBST(ABSEIL_LIBS)
12259 dnl ===================================================================
12260 dnl Check for poppler
12261 dnl ===================================================================
12262 ENABLE_POPPLER=
12263 AC_MSG_CHECKING([whether to build Poppler])
12264 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12265     AC_MSG_RESULT([yes])
12266     ENABLE_POPPLER=TRUE
12267     AC_DEFINE(HAVE_FEATURE_POPPLER)
12268 else
12269     AC_MSG_RESULT([no])
12271 AC_SUBST(ENABLE_POPPLER)
12273 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12274     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12277 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12278     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12281 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12282     dnl ===================================================================
12283     dnl Check for system poppler
12284     dnl ===================================================================
12285     AC_MSG_CHECKING([which PDF import poppler to use])
12286     if test "$with_system_poppler" = "yes"; then
12287         AC_MSG_RESULT([external])
12288         SYSTEM_POPPLER=TRUE
12289         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12290         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12291         FilterLibs "${POPPLER_LIBS}"
12292         POPPLER_LIBS="${filteredlibs}"
12293     else
12294         AC_MSG_RESULT([internal])
12295         SYSTEM_POPPLER=
12296         BUILD_TYPE="$BUILD_TYPE POPPLER"
12297     fi
12298     AC_DEFINE([ENABLE_PDFIMPORT],1)
12300 AC_SUBST(ENABLE_PDFIMPORT)
12301 AC_SUBST(SYSTEM_POPPLER)
12302 AC_SUBST(POPPLER_CFLAGS)
12303 AC_SUBST(POPPLER_LIBS)
12305 # Skia?
12306 ENABLE_SKIA=
12307 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12308     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12309     if test "$SYSTEM_FREETYPE" = TRUE; then
12310         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12311             [skia_freetype_ok=yes],
12312             [skia_freetype_ok=no])
12313     else # internal is ok
12314         skia_freetype_ok=yes
12315     fi
12316     AC_MSG_CHECKING([whether to build Skia])
12317     if test "$skia_freetype_ok" = "yes"; then
12318         if test "$enable_skia" = "debug"; then
12319             AC_MSG_RESULT([yes (debug)])
12320             ENABLE_SKIA_DEBUG=TRUE
12321         else
12322             AC_MSG_RESULT([yes])
12323             ENABLE_SKIA_DEBUG=
12324         fi
12325         ENABLE_SKIA=TRUE
12326         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12327             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12328         fi
12330         AC_DEFINE(HAVE_FEATURE_SKIA)
12331         BUILD_TYPE="$BUILD_TYPE SKIA"
12333         if test "$OS" = "MACOSX"; then
12334             AC_DEFINE(SK_GANESH,1)
12335             AC_DEFINE(SK_METAL,1)
12336             SKIA_GPU=METAL
12337             AC_SUBST(SKIA_GPU)
12338         else
12339             AC_DEFINE(SK_GANESH,1)
12340             AC_DEFINE(SK_VULKAN,1)
12341             SKIA_GPU=VULKAN
12342             AC_SUBST(SKIA_GPU)
12343         fi
12344     else
12345         AC_MSG_RESULT([no (freetype too old)])
12346         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12347     fi
12349 else
12350     AC_MSG_CHECKING([whether to build Skia])
12351     AC_MSG_RESULT([no])
12353 AC_SUBST(ENABLE_SKIA)
12354 AC_SUBST(ENABLE_SKIA_DEBUG)
12356 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12357 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12358 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12359 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12360 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12361 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12362 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12363 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12364 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12365 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12366 LO_CLANG_VERSION=
12367 HAVE_LO_CLANG_DLLEXPORTINLINES=
12369 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12370     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12371         AC_MSG_CHECKING([for Clang])
12372         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12373     else
12374         if test "$_os" = "WINNT"; then
12375             AC_MSG_CHECKING([for clang-cl])
12376             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12377                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12378             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12379                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12380             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12381                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12382             fi
12383             if test -n "$LO_CLANG_CC"; then
12384                 dnl explicitly set -m32/-m64
12385                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12386                 LO_CLANG_CXX="$LO_CLANG_CC"
12387                 AC_MSG_RESULT([$LO_CLANG_CC])
12388             else
12389                 AC_MSG_RESULT([no])
12390             fi
12392             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12393             echo "#include <stdlib.h>" > conftest.c
12394             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12395                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12396             rm -f conftest.c conftest.obj
12397             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12398                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12399             else
12400                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12401             fi
12402         else
12403             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12404             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12405         fi
12406     fi
12407     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12408         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12409         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12410         if test "$LO_CLANG_VERSION" -lt 50002; then
12411             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12412             LO_CLANG_CC=
12413             LO_CLANG_CXX=
12414         fi
12415     fi
12416     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12417         save_CXX="$CXX"
12418         CXX="$LO_CLANG_CXX"
12419         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12420         AC_LANG_PUSH([C++])
12421         save_CXXFLAGS=$CXXFLAGS
12422         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12423         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12424                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12425                 AC_MSG_RESULT([yes])
12426             ], [AC_MSG_RESULT([no])])
12427         CXXFLAGS=$save_CXXFLAGS
12428         AC_LANG_POP([C++])
12429         CXX="$save_CXX"
12430         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12431             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.])
12432         fi
12433     fi
12434     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12435         # Skia is the default on Windows and Mac, so hard-require Clang.
12436         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12437         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12438             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12439         else
12440             AC_MSG_WARN([Clang compiler not found.])
12441         fi
12442     else
12444         save_CXX="$CXX"
12445         CXX="$LO_CLANG_CXX"
12446         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12447         flag_sse2=-msse2
12448         flag_ssse3=-mssse3
12449         flag_sse41=-msse4.1
12450         flag_sse42=-msse4.2
12451         flag_avx=-mavx
12452         flag_avx2=-mavx2
12453         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12454         flag_avx512f=-mavx512f
12455         flag_f16c=-mf16c
12456         flag_fma=-mfma
12458         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12459         AC_LANG_PUSH([C++])
12460         save_CXXFLAGS=$CXXFLAGS
12461         CXXFLAGS="$CXXFLAGS $flag_sse2"
12462         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12463             #include <emmintrin.h>
12464             int main () {
12465                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12466                 c = _mm_xor_si128 (a, b);
12467                 return 0;
12468             }
12469             ])],
12470             [can_compile_sse2=yes],
12471             [can_compile_sse2=no])
12472         AC_LANG_POP([C++])
12473         CXXFLAGS=$save_CXXFLAGS
12474         AC_MSG_RESULT([${can_compile_sse2}])
12475         if test "${can_compile_sse2}" = "yes" ; then
12476             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12477         fi
12479         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12480         AC_LANG_PUSH([C++])
12481         save_CXXFLAGS=$CXXFLAGS
12482         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12483         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12484             #include <tmmintrin.h>
12485             int main () {
12486                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12487                 c = _mm_maddubs_epi16 (a, b);
12488                 return 0;
12489             }
12490             ])],
12491             [can_compile_ssse3=yes],
12492             [can_compile_ssse3=no])
12493         AC_LANG_POP([C++])
12494         CXXFLAGS=$save_CXXFLAGS
12495         AC_MSG_RESULT([${can_compile_ssse3}])
12496         if test "${can_compile_ssse3}" = "yes" ; then
12497             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12498         fi
12500         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12501         AC_LANG_PUSH([C++])
12502         save_CXXFLAGS=$CXXFLAGS
12503         CXXFLAGS="$CXXFLAGS $flag_sse41"
12504         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12505             #include <smmintrin.h>
12506             int main () {
12507                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12508                 c = _mm_cmpeq_epi64 (a, b);
12509                 return 0;
12510             }
12511             ])],
12512             [can_compile_sse41=yes],
12513             [can_compile_sse41=no])
12514         AC_LANG_POP([C++])
12515         CXXFLAGS=$save_CXXFLAGS
12516         AC_MSG_RESULT([${can_compile_sse41}])
12517         if test "${can_compile_sse41}" = "yes" ; then
12518             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12519         fi
12521         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12522         AC_LANG_PUSH([C++])
12523         save_CXXFLAGS=$CXXFLAGS
12524         CXXFLAGS="$CXXFLAGS $flag_sse42"
12525         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12526             #include <nmmintrin.h>
12527             int main () {
12528                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12529                 c = _mm_cmpgt_epi64 (a, b);
12530                 return 0;
12531             }
12532             ])],
12533             [can_compile_sse42=yes],
12534             [can_compile_sse42=no])
12535         AC_LANG_POP([C++])
12536         CXXFLAGS=$save_CXXFLAGS
12537         AC_MSG_RESULT([${can_compile_sse42}])
12538         if test "${can_compile_sse42}" = "yes" ; then
12539             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12540         fi
12542         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12543         AC_LANG_PUSH([C++])
12544         save_CXXFLAGS=$CXXFLAGS
12545         CXXFLAGS="$CXXFLAGS $flag_avx"
12546         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12547             #include <immintrin.h>
12548             int main () {
12549                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12550                 c = _mm256_xor_ps(a, b);
12551                 return 0;
12552             }
12553             ])],
12554             [can_compile_avx=yes],
12555             [can_compile_avx=no])
12556         AC_LANG_POP([C++])
12557         CXXFLAGS=$save_CXXFLAGS
12558         AC_MSG_RESULT([${can_compile_avx}])
12559         if test "${can_compile_avx}" = "yes" ; then
12560             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12561         fi
12563         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12564         AC_LANG_PUSH([C++])
12565         save_CXXFLAGS=$CXXFLAGS
12566         CXXFLAGS="$CXXFLAGS $flag_avx2"
12567         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12568             #include <immintrin.h>
12569             int main () {
12570                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12571                 c = _mm256_maddubs_epi16(a, b);
12572                 return 0;
12573             }
12574             ])],
12575             [can_compile_avx2=yes],
12576             [can_compile_avx2=no])
12577         AC_LANG_POP([C++])
12578         CXXFLAGS=$save_CXXFLAGS
12579         AC_MSG_RESULT([${can_compile_avx2}])
12580         if test "${can_compile_avx2}" = "yes" ; then
12581             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12582         fi
12584         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12585         AC_LANG_PUSH([C++])
12586         save_CXXFLAGS=$CXXFLAGS
12587         CXXFLAGS="$CXXFLAGS $flag_avx512"
12588         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12589             #include <immintrin.h>
12590             int main () {
12591                 __m512i a = _mm512_loadu_si512(0);
12592                 __m512d v1 = _mm512_load_pd(0);
12593                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12594                 __m512d v2 = _mm512_abs_pd(v1);
12595                 return 0;
12596             }
12597             ])],
12598             [can_compile_avx512=yes],
12599             [can_compile_avx512=no])
12600         AC_LANG_POP([C++])
12601         CXXFLAGS=$save_CXXFLAGS
12602         AC_MSG_RESULT([${can_compile_avx512}])
12603         if test "${can_compile_avx512}" = "yes" ; then
12604             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12605             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12606         fi
12608         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12609         AC_LANG_PUSH([C++])
12610         save_CXXFLAGS=$CXXFLAGS
12611         CXXFLAGS="$CXXFLAGS $flag_f16c"
12612         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12613             #include <immintrin.h>
12614             int main () {
12615                 __m128i a = _mm_set1_epi32 (0);
12616                 __m128 c;
12617                 c = _mm_cvtph_ps(a);
12618                 return 0;
12619             }
12620             ])],
12621             [can_compile_f16c=yes],
12622             [can_compile_f16c=no])
12623         AC_LANG_POP([C++])
12624         CXXFLAGS=$save_CXXFLAGS
12625         AC_MSG_RESULT([${can_compile_f16c}])
12626         if test "${can_compile_f16c}" = "yes" ; then
12627             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12628         fi
12630         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12631         AC_LANG_PUSH([C++])
12632         save_CXXFLAGS=$CXXFLAGS
12633         CXXFLAGS="$CXXFLAGS $flag_fma"
12634         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12635             #include <immintrin.h>
12636             int main () {
12637                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12638                 d = _mm256_fmadd_ps(a, b, c);
12639                 return 0;
12640             }
12641             ])],
12642             [can_compile_fma=yes],
12643             [can_compile_fma=no])
12644         AC_LANG_POP([C++])
12645         CXXFLAGS=$save_CXXFLAGS
12646         AC_MSG_RESULT([${can_compile_fma}])
12647         if test "${can_compile_fma}" = "yes" ; then
12648             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12649         fi
12651         CXX="$save_CXX"
12652     fi
12655 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12657 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12658     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12659     AC_LANG_PUSH([C])
12660     save_CC="$CC"
12661     CC="$LO_CLANG_CC"
12662     save_CFLAGS=$CFLAGS
12663     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12664     dnl an empty program will do, we're checking the compiler flags
12665     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12666                       [use_ccache=yes], [use_ccache=no])
12667     CFLAGS=$save_CFLAGS
12668     CC=$save_CC
12669     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12670         AC_MSG_RESULT([yes])
12671     else
12672         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12673         AC_MSG_RESULT([no])
12674     fi
12675     AC_LANG_POP([C])
12677     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12678     AC_LANG_PUSH([C++])
12679     save_CXX="$CXX"
12680     CXX="$LO_CLANG_CXX"
12681     save_CXXFLAGS=$CXXFLAGS
12682     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12683     dnl an empty program will do, we're checking the compiler flags
12684     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12685                       [use_ccache=yes], [use_ccache=no])
12686     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12687         AC_MSG_RESULT([yes])
12688     else
12689         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12690         AC_MSG_RESULT([no])
12691     fi
12692     CXXFLAGS=$save_CXXFLAGS
12693     CXX=$save_CXX
12694     AC_LANG_POP([C++])
12697 AC_SUBST(LO_CLANG_CC)
12698 AC_SUBST(LO_CLANG_CXX)
12699 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12700 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12701 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12702 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12703 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12704 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12705 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12706 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12707 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12708 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12709 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12710 AC_SUBST(LO_CLANG_VERSION)
12711 AC_SUBST(CLANG_USE_LD)
12712 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12714 SYSTEM_GPGMEPP=
12716 AC_MSG_CHECKING([whether to enable gpgmepp])
12717 if test "$enable_gpgmepp" = no; then
12718     AC_MSG_RESULT([no])
12719 elif test "$enable_mpl_subset" = "yes"; then
12720     AC_MSG_RESULT([no (MPL only)])
12721 elif test "$enable_fuzzers" = "yes"; then
12722     AC_MSG_RESULT([no (oss-fuzz)])
12723 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12724     AC_MSG_RESULT([yes])
12725     dnl ===================================================================
12726     dnl Check for system gpgme
12727     dnl ===================================================================
12728     AC_MSG_CHECKING([which gpgmepp to use])
12729     if test "$with_system_gpgmepp" = "yes"; then
12730         AC_MSG_RESULT([external])
12731         SYSTEM_GPGMEPP=TRUE
12733         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12734         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12735             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12736         AC_CHECK_HEADER(gpgme.h, [],
12737             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12738         AC_CHECK_LIB(gpgmepp, main, [],
12739             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12740         GPGMEPP_LIBS=-lgpgmepp
12741     else
12742         AC_MSG_RESULT([internal])
12743         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12745         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12746         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12747         if test "$_os" != "WINNT"; then
12748             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12749             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12750         fi
12751     fi
12752     ENABLE_GPGMEPP=TRUE
12753     AC_DEFINE([HAVE_FEATURE_GPGME])
12754     AC_PATH_PROG(GPG, gpg)
12755     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12756     # so let's exclude that manually for the moment
12757     if test -n "$GPG" -a "$_os" != "WINNT"; then
12758         # make sure we not only have a working gpgme, but a full working
12759         # gpg installation to run OpenPGP signature verification
12760         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12761     fi
12762     if test "$_os" = "Linux"; then
12763       uid=`id -u`
12764       AC_MSG_CHECKING([for /run/user/$uid])
12765       if test -d /run/user/$uid; then
12766         AC_MSG_RESULT([yes])
12767         AC_PATH_PROG(GPGCONF, gpgconf)
12769         # Older versions of gpgconf are not working as expected, since
12770         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12771         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12772         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12773         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12774         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12775         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12776         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12777           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12778           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12779           if $GPGCONF --dump-options > /dev/null ; then
12780             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12781               AC_MSG_RESULT([yes])
12782               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12783               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12784             else
12785               AC_MSG_RESULT([no])
12786             fi
12787           else
12788             AC_MSG_RESULT([no. missing or broken gpgconf?])
12789           fi
12790         else
12791           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12792         fi
12793       else
12794         AC_MSG_RESULT([no])
12795      fi
12796    fi
12797 else
12798     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12800 AC_SUBST(ENABLE_GPGMEPP)
12801 AC_SUBST(SYSTEM_GPGMEPP)
12802 AC_SUBST(GPG_ERROR_CFLAGS)
12803 AC_SUBST(GPG_ERROR_LIBS)
12804 AC_SUBST(LIBASSUAN_CFLAGS)
12805 AC_SUBST(LIBASSUAN_LIBS)
12806 AC_SUBST(GPGMEPP_CFLAGS)
12807 AC_SUBST(GPGMEPP_LIBS)
12809 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12810 if test "$with_java" != "no"; then
12811     AC_MSG_RESULT([yes])
12812     ENABLE_JAVA_WEBSOCKET=TRUE
12813     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12814     NEED_ANT=TRUE
12815 else
12816     AC_MSG_RESULT([no])
12817     ENABLE_JAVA_WEBSOCKET=
12819 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12821 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12822 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12823     AC_MSG_RESULT([yes])
12824     ENABLE_MEDIAWIKI=TRUE
12825     BUILD_TYPE="$BUILD_TYPE XSLTML"
12826     if test  "x$with_java" = "xno"; then
12827         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12828     fi
12829 else
12830     AC_MSG_RESULT([no])
12831     ENABLE_MEDIAWIKI=
12832     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12834 AC_SUBST(ENABLE_MEDIAWIKI)
12836 AC_MSG_CHECKING([whether to build the Report Builder])
12837 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12838     AC_MSG_RESULT([yes])
12839     ENABLE_REPORTBUILDER=TRUE
12840     AC_MSG_CHECKING([which jfreereport libs to use])
12841     if test "$with_system_jfreereport" = "yes"; then
12842         SYSTEM_JFREEREPORT=TRUE
12843         AC_MSG_RESULT([external])
12844         if test -z $SAC_JAR; then
12845             SAC_JAR=/usr/share/java/sac.jar
12846         fi
12847         if ! test -f $SAC_JAR; then
12848              AC_MSG_ERROR(sac.jar not found.)
12849         fi
12851         if test -z $LIBXML_JAR; then
12852             if test -f /usr/share/java/libxml-1.0.0.jar; then
12853                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12854             elif test -f /usr/share/java/libxml.jar; then
12855                 LIBXML_JAR=/usr/share/java/libxml.jar
12856             else
12857                 AC_MSG_ERROR(libxml.jar replacement not found.)
12858             fi
12859         elif ! test -f $LIBXML_JAR; then
12860             AC_MSG_ERROR(libxml.jar not found.)
12861         fi
12863         if test -z $FLUTE_JAR; then
12864             if test -f /usr/share/java/flute-1.3.0.jar; then
12865                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12866             elif test -f /usr/share/java/flute.jar; then
12867                 FLUTE_JAR=/usr/share/java/flute.jar
12868             else
12869                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12870             fi
12871         elif ! test -f $FLUTE_JAR; then
12872             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12873         fi
12875         if test -z $JFREEREPORT_JAR; then
12876             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12877                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12878             elif test -f /usr/share/java/flow-engine.jar; then
12879                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12880             else
12881                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12882             fi
12883         elif ! test -f  $JFREEREPORT_JAR; then
12884                 AC_MSG_ERROR(jfreereport.jar not found.)
12885         fi
12887         if test -z $LIBLAYOUT_JAR; then
12888             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12889                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12890             elif test -f /usr/share/java/liblayout.jar; then
12891                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12892             else
12893                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12894             fi
12895         elif ! test -f $LIBLAYOUT_JAR; then
12896                 AC_MSG_ERROR(liblayout.jar not found.)
12897         fi
12899         if test -z $LIBLOADER_JAR; then
12900             if test -f /usr/share/java/libloader-1.0.0.jar; then
12901                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12902             elif test -f /usr/share/java/libloader.jar; then
12903                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12904             else
12905                 AC_MSG_ERROR(libloader.jar replacement not found.)
12906             fi
12907         elif ! test -f  $LIBLOADER_JAR; then
12908             AC_MSG_ERROR(libloader.jar not found.)
12909         fi
12911         if test -z $LIBFORMULA_JAR; then
12912             if test -f /usr/share/java/libformula-0.2.0.jar; then
12913                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12914             elif test -f /usr/share/java/libformula.jar; then
12915                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12916             else
12917                 AC_MSG_ERROR(libformula.jar replacement not found.)
12918             fi
12919         elif ! test -f $LIBFORMULA_JAR; then
12920                 AC_MSG_ERROR(libformula.jar not found.)
12921         fi
12923         if test -z $LIBREPOSITORY_JAR; then
12924             if test -f /usr/share/java/librepository-1.0.0.jar; then
12925                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12926             elif test -f /usr/share/java/librepository.jar; then
12927                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12928             else
12929                 AC_MSG_ERROR(librepository.jar replacement not found.)
12930             fi
12931         elif ! test -f $LIBREPOSITORY_JAR; then
12932             AC_MSG_ERROR(librepository.jar not found.)
12933         fi
12935         if test -z $LIBFONTS_JAR; then
12936             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12937                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12938             elif test -f /usr/share/java/libfonts.jar; then
12939                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12940             else
12941                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12942             fi
12943         elif ! test -f $LIBFONTS_JAR; then
12944                 AC_MSG_ERROR(libfonts.jar not found.)
12945         fi
12947         if test -z $LIBSERIALIZER_JAR; then
12948             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12949                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12950             elif test -f /usr/share/java/libserializer.jar; then
12951                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12952             else
12953                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12954             fi
12955         elif ! test -f $LIBSERIALIZER_JAR; then
12956                 AC_MSG_ERROR(libserializer.jar not found.)
12957         fi
12959         if test -z $LIBBASE_JAR; then
12960             if test -f /usr/share/java/libbase-1.0.0.jar; then
12961                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12962             elif test -f /usr/share/java/libbase.jar; then
12963                 LIBBASE_JAR=/usr/share/java/libbase.jar
12964             else
12965                 AC_MSG_ERROR(libbase.jar replacement not found.)
12966             fi
12967         elif ! test -f $LIBBASE_JAR; then
12968             AC_MSG_ERROR(libbase.jar not found.)
12969         fi
12971     else
12972         AC_MSG_RESULT([internal])
12973         SYSTEM_JFREEREPORT=
12974         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12975         NEED_ANT=TRUE
12976     fi
12977 else
12978     AC_MSG_RESULT([no])
12979     ENABLE_REPORTBUILDER=
12980     SYSTEM_JFREEREPORT=
12982 AC_SUBST(ENABLE_REPORTBUILDER)
12983 AC_SUBST(SYSTEM_JFREEREPORT)
12984 AC_SUBST(SAC_JAR)
12985 AC_SUBST(LIBXML_JAR)
12986 AC_SUBST(FLUTE_JAR)
12987 AC_SUBST(JFREEREPORT_JAR)
12988 AC_SUBST(LIBBASE_JAR)
12989 AC_SUBST(LIBLAYOUT_JAR)
12990 AC_SUBST(LIBLOADER_JAR)
12991 AC_SUBST(LIBFORMULA_JAR)
12992 AC_SUBST(LIBREPOSITORY_JAR)
12993 AC_SUBST(LIBFONTS_JAR)
12994 AC_SUBST(LIBSERIALIZER_JAR)
12996 # scripting provider for BeanShell?
12997 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12998 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12999     AC_MSG_RESULT([yes])
13000     ENABLE_SCRIPTING_BEANSHELL=TRUE
13002     dnl ===================================================================
13003     dnl Check for system beanshell
13004     dnl ===================================================================
13005     AC_MSG_CHECKING([which beanshell to use])
13006     if test "$with_system_beanshell" = "yes"; then
13007         AC_MSG_RESULT([external])
13008         SYSTEM_BSH=TRUE
13009         if test -z $BSH_JAR; then
13010             BSH_JAR=/usr/share/java/bsh.jar
13011         fi
13012         if ! test -f $BSH_JAR; then
13013             AC_MSG_ERROR(bsh.jar not found.)
13014         fi
13015     else
13016         AC_MSG_RESULT([internal])
13017         SYSTEM_BSH=
13018         BUILD_TYPE="$BUILD_TYPE BSH"
13019     fi
13020 else
13021     AC_MSG_RESULT([no])
13022     ENABLE_SCRIPTING_BEANSHELL=
13023     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13025 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13026 AC_SUBST(SYSTEM_BSH)
13027 AC_SUBST(BSH_JAR)
13029 # scripting provider for JavaScript?
13030 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13031 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13032     AC_MSG_RESULT([yes])
13033     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13035     dnl ===================================================================
13036     dnl Check for system rhino
13037     dnl ===================================================================
13038     AC_MSG_CHECKING([which rhino to use])
13039     if test "$with_system_rhino" = "yes"; then
13040         AC_MSG_RESULT([external])
13041         SYSTEM_RHINO=TRUE
13042         if test -z $RHINO_JAR; then
13043             RHINO_JAR=/usr/share/java/js.jar
13044         fi
13045         if ! test -f $RHINO_JAR; then
13046             AC_MSG_ERROR(js.jar not found.)
13047         fi
13048     else
13049         AC_MSG_RESULT([internal])
13050         SYSTEM_RHINO=
13051         BUILD_TYPE="$BUILD_TYPE RHINO"
13052         NEED_ANT=TRUE
13053     fi
13054 else
13055     AC_MSG_RESULT([no])
13056     ENABLE_SCRIPTING_JAVASCRIPT=
13057     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13059 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13060 AC_SUBST(SYSTEM_RHINO)
13061 AC_SUBST(RHINO_JAR)
13063 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13064 # paths should be added to library search path. So lets put all 64-bit
13065 # platforms there.
13066 supports_multilib=
13067 case "$host_cpu" in
13068 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13069     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13070         supports_multilib="yes"
13071     fi
13072     ;;
13074     ;;
13075 esac
13077 dnl ===================================================================
13078 dnl QT5 Integration
13079 dnl ===================================================================
13081 QT5_CFLAGS=""
13082 QT5_LIBS=""
13083 QMAKE5="qmake"
13084 MOC5="moc"
13085 QT5_GOBJECT_CFLAGS=""
13086 QT5_GOBJECT_LIBS=""
13087 QT5_HAVE_GOBJECT=""
13088 QT5_PLATFORMS_SRCDIR=""
13089 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13090         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13091         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13092 then
13093     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13094     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13096     if test -n "$supports_multilib"; then
13097         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13098     fi
13100     qt5_test_include="QtWidgets/qapplication.h"
13101     if test "$_os" = "Emscripten"; then
13102         qt5_test_library="libQt5Widgets.a"
13103     else
13104         qt5_test_library="libQt5Widgets.so"
13105     fi
13107     dnl Check for qmake5
13108     if test -n "$QT5DIR"; then
13109         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13110     else
13111         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13112     fi
13113     if test "$QMAKE5" = "no"; then
13114         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13115     else
13116         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13117         if test -z "$qmake5_test_ver"; then
13118             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13119         fi
13120         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13121         qt5_minimal_minor="15"
13122         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13123             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13124         else
13125             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13126         fi
13127     fi
13129     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13130     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13131     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13132     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13134     AC_MSG_CHECKING([for Qt5 headers])
13135     qt5_incdir="no"
13136     for inc_dir in $qt5_incdirs; do
13137         if test -r "$inc_dir/$qt5_test_include"; then
13138             qt5_incdir="$inc_dir"
13139             break
13140         fi
13141     done
13142     AC_MSG_RESULT([$qt5_incdir])
13143     if test "x$qt5_incdir" = "xno"; then
13144         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13145     fi
13146     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13147     AC_LANG_PUSH([C++])
13148     save_CPPFLAGS=$CPPFLAGS
13149     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13150     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13151         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13152     CPPFLAGS=$save_CPPFLAGS
13153     AC_LANG_POP([C++])
13155     AC_MSG_CHECKING([for Qt5 libraries])
13156     qt5_libdir="no"
13157     for lib_dir in $qt5_libdirs; do
13158         if test -r "$lib_dir/$qt5_test_library"; then
13159             qt5_libdir="$lib_dir"
13160             break
13161         fi
13162     done
13163     AC_MSG_RESULT([$qt5_libdir])
13164     if test "x$qt5_libdir" = "xno"; then
13165         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13166     fi
13168     if test "$_os" = "Emscripten"; then
13169         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13170             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13171         fi
13172         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13173             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13174         fi
13176         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13177         if ! test -x "$EMSDK_LLVM_NM"; then
13178             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13179         fi
13180         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13181             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13182         fi
13183         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13184         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13185             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13186         fi
13187         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13188             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13189         fi
13190     fi
13192     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13193     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13194     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13195     if test "$_os" = "Emscripten"; then
13196         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13197     fi
13199     if test "$USING_X11" = TRUE; then
13200         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13201         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13202         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13203         QT5_USING_X11=1
13204         AC_DEFINE(QT5_USING_X11)
13205     fi
13207     dnl Check for Meta Object Compiler
13209     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13210     if test "$MOC5" = "no"; then
13211         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13212 the root of your Qt installation by exporting QT5DIR before running "configure".])
13213     fi
13215     if test "$test_gstreamer_1_0" = yes; then
13216         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13217                 QT5_HAVE_GOBJECT=1
13218                 AC_DEFINE(QT5_HAVE_GOBJECT)
13219             ],
13220             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13221         )
13222     fi
13224 AC_SUBST(QT5_CFLAGS)
13225 AC_SUBST(QT5_LIBS)
13226 AC_SUBST(MOC5)
13227 AC_SUBST(QT5_GOBJECT_CFLAGS)
13228 AC_SUBST(QT5_GOBJECT_LIBS)
13229 AC_SUBST(QT5_HAVE_GOBJECT)
13230 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13232 dnl ===================================================================
13233 dnl QT6 Integration
13234 dnl ===================================================================
13236 QT6_CFLAGS=""
13237 QT6_LIBS=""
13238 QMAKE6="qmake"
13239 MOC6="moc"
13240 QT6_PLATFORMS_SRCDIR=""
13241 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13242         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13243 then
13244     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13245     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13247     if test -n "$supports_multilib"; then
13248         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13249     fi
13251     qt6_test_include="QtWidgets/qapplication.h"
13252     if test "$_os" = "Emscripten"; then
13253         qt6_test_library="libQt6Widgets.a"
13254     else
13255         qt6_test_library="libQt6Widgets.so"
13256     fi
13258     dnl Check for qmake6
13259     if test -n "$QT6DIR"; then
13260         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13261     else
13262         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13263     fi
13264     if test "$QMAKE6" = "no"; then
13265         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13266     else
13267         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13268         if test -z "$qmake6_test_ver"; then
13269             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13270         fi
13271         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13272     fi
13274     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13275     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13276     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13277     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13279     AC_MSG_CHECKING([for Qt6 headers])
13280     qt6_incdir="no"
13281     for inc_dir in $qt6_incdirs; do
13282         if test -r "$inc_dir/$qt6_test_include"; then
13283             qt6_incdir="$inc_dir"
13284             break
13285         fi
13286     done
13287     AC_MSG_RESULT([$qt6_incdir])
13288     if test "x$qt6_incdir" = "xno"; then
13289         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13290     fi
13291     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13292     AC_LANG_PUSH([C++])
13293     save_CPPFLAGS=$CPPFLAGS
13294     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13295     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13296         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13297     CPPFLAGS=$save_CPPFLAGS
13298     AC_LANG_POP([C++])
13300     AC_MSG_CHECKING([for Qt6 libraries])
13301     qt6_libdir="no"
13302     for lib_dir in $qt6_libdirs; do
13303         if test -r "$lib_dir/$qt6_test_library"; then
13304             qt6_libdir="$lib_dir"
13305             break
13306         fi
13307     done
13308     AC_MSG_RESULT([$qt6_libdir])
13309     if test "x$qt6_libdir" = "xno"; then
13310         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13311     fi
13313     if test "$_os" = "Emscripten"; then
13314         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13315             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13316         fi
13317         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13318             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13319         fi
13320     fi
13322     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13323     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13324     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13325     if test "$_os" = "Emscripten"; then
13326         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13327     fi
13329     if test "$USING_X11" = TRUE; then
13330         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13331         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13332         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13333         QT6_USING_X11=1
13334         AC_DEFINE(QT6_USING_X11)
13335     fi
13337     dnl Check for Meta Object Compiler
13339     for lib_dir in $qt6_libdirs; do
13340         if test -z "$qt6_libexec_dirs"; then
13341             qt6_libexec_dirs="$lib_dir/libexec"
13342         else
13343             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13344         fi
13345     done
13346     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])
13347     if test "$MOC6" = "no"; then
13348         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13349 the root of your Qt installation by exporting QT6DIR before running "configure".])
13350     else
13351         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13352         if test -z "$moc6_test_ver"; then
13353             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13354         fi
13355         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13356     fi
13358 AC_SUBST(QT6_CFLAGS)
13359 AC_SUBST(QT6_LIBS)
13360 AC_SUBST(MOC6)
13361 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13363 dnl ===================================================================
13364 dnl KF5 Integration
13365 dnl ===================================================================
13367 KF5_CFLAGS=""
13368 KF5_LIBS=""
13369 KF5_CONFIG="kf5-config"
13370 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13371         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13372 then
13373     if test "$OS" = "HAIKU"; then
13374         haiku_arch="`echo $RTL_ARCH | tr X x`"
13375         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13376         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13377     fi
13379     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13380     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13381     if test -n "$supports_multilib"; then
13382         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13383     fi
13385     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13386     kf5_test_library="libKF5KIOFileWidgets.so"
13387     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13389     dnl kf5 KDE4 support compatibility installed
13390     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13391     if test "$KF5_CONFIG" != "no"; then
13392         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13393         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13394     fi
13396     dnl Check for KF5 headers
13397     AC_MSG_CHECKING([for KF5 headers])
13398     kf5_incdir="no"
13399     for kf5_check in $kf5_incdirs; do
13400         if test -r "$kf5_check/$kf5_test_include"; then
13401             kf5_incdir="$kf5_check/KF5"
13402             break
13403         fi
13404     done
13405     AC_MSG_RESULT([$kf5_incdir])
13406     if test "x$kf5_incdir" = "xno"; then
13407         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13408     fi
13410     dnl Check for KF5 libraries
13411     AC_MSG_CHECKING([for KF5 libraries])
13412     kf5_libdir="no"
13413     for kf5_check in $kf5_libdirs; do
13414         if test -r "$kf5_check/$kf5_test_library"; then
13415             kf5_libdir="$kf5_check"
13416             break
13417         fi
13418     done
13420     AC_MSG_RESULT([$kf5_libdir])
13421     if test "x$kf5_libdir" = "xno"; then
13422         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13423     fi
13425     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"
13426     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13427     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13429     if test "$USING_X11" = TRUE; then
13430         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13431     fi
13433     AC_LANG_PUSH([C++])
13434     save_CXXFLAGS=$CXXFLAGS
13435     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13436     AC_MSG_CHECKING([whether KDE is >= 5.0])
13437        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13438 #include <kcoreaddons_version.h>
13440 int main(int argc, char **argv) {
13441        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13442        else return 1;
13444        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13445     CXXFLAGS=$save_CXXFLAGS
13446     AC_LANG_POP([C++])
13448 AC_SUBST(KF5_CFLAGS)
13449 AC_SUBST(KF5_LIBS)
13451 dnl ===================================================================
13452 dnl KF6 Integration
13453 dnl ===================================================================
13455 KF6_CFLAGS=""
13456 KF6_LIBS=""
13457 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13458 then
13459     if test "$OS" = "HAIKU"; then
13460         haiku_arch="`echo $RTL_ARCH | tr X x`"
13461         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13462         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13463     fi
13465     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13466     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13467     if test -n "$supports_multilib"; then
13468         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13469     fi
13471     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13472     kf6_test_library="libKF6KIOFileWidgets.so"
13473     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13475     dnl Check for KF6 headers
13476     AC_MSG_CHECKING([for KF6 headers])
13477     kf6_incdir="no"
13478     for kf6_check in $kf6_incdirs; do
13479         if test -r "$kf6_check/$kf6_test_include"; then
13480             kf6_incdir="$kf6_check/KF6"
13481             break
13482         fi
13483     done
13484     AC_MSG_RESULT([$kf6_incdir])
13485     if test "x$kf6_incdir" = "xno"; then
13486         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13487     fi
13489     dnl Check for KF6 libraries
13490     AC_MSG_CHECKING([for KF6 libraries])
13491     kf6_libdir="no"
13492     for kf6_check in $kf6_libdirs; do
13493         if test -r "$kf6_check/$kf6_test_library"; then
13494             kf6_libdir="$kf6_check"
13495             break
13496         fi
13497     done
13499     AC_MSG_RESULT([$kf6_libdir])
13500     if test "x$kf6_libdir" = "xno"; then
13501         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13502     fi
13504     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"
13505     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13506     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13508     AC_LANG_PUSH([C++])
13509     save_CXXFLAGS=$CXXFLAGS
13510     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13511     dnl KF6 development version as of 2023-06 uses version number 5.240
13512     AC_MSG_CHECKING([whether KDE is >= 5.240])
13513        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13514 #include <kcoreaddons_version.h>
13516 int main(int argc, char **argv) {
13517        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13518        else return 1;
13520        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13521     CXXFLAGS=$save_CXXFLAGS
13522     AC_LANG_POP([C++])
13524 AC_SUBST(KF6_CFLAGS)
13525 AC_SUBST(KF6_LIBS)
13527 dnl ===================================================================
13528 dnl Test whether to include Evolution 2 support
13529 dnl ===================================================================
13530 AC_MSG_CHECKING([whether to enable evolution 2 support])
13531 if test "$enable_evolution2" = yes; then
13532     AC_MSG_RESULT([yes])
13533     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13534     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13535     FilterLibs "${GOBJECT_LIBS}"
13536     GOBJECT_LIBS="${filteredlibs}"
13537     ENABLE_EVOAB2="TRUE"
13538 else
13539     AC_MSG_RESULT([no])
13541 AC_SUBST(ENABLE_EVOAB2)
13542 AC_SUBST(GOBJECT_CFLAGS)
13543 AC_SUBST(GOBJECT_LIBS)
13545 dnl ===================================================================
13546 dnl Test which themes to include
13547 dnl ===================================================================
13548 AC_MSG_CHECKING([which themes to include])
13549 # if none given use default subset of available themes
13550 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13551     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"
13554 WITH_THEMES=""
13555 if test "x$with_theme" != "xno"; then
13556     for theme in $with_theme; do
13557         case $theme in
13558         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" ;;
13559         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13560         esac
13561     done
13563 AC_MSG_RESULT([$WITH_THEMES])
13564 AC_SUBST([WITH_THEMES])
13566 ###############################################################################
13567 # Extensions checking
13568 ###############################################################################
13569 AC_MSG_CHECKING([for extensions integration])
13570 if test "x$enable_extension_integration" != "xno"; then
13571     WITH_EXTENSION_INTEGRATION=TRUE
13572     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13573     AC_MSG_RESULT([yes, use integration])
13574 else
13575     WITH_EXTENSION_INTEGRATION=
13576     AC_MSG_RESULT([no, do not integrate])
13578 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13580 dnl Should any extra extensions be included?
13581 dnl There are standalone tests for each of these below.
13582 WITH_EXTRA_EXTENSIONS=
13583 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13585 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13586 if test "x$with_java" != "xno"; then
13587     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13590 AC_MSG_CHECKING([whether to build opens___.ttf])
13591 if test "$enable_build_opensymbol" = "yes"; then
13592     AC_MSG_RESULT([yes])
13593     AC_PATH_PROG(FONTFORGE, fontforge)
13594     if test -z "$FONTFORGE"; then
13595         AC_MSG_ERROR([fontforge not installed])
13596     fi
13597 else
13598     AC_MSG_RESULT([no])
13599     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13601 AC_SUBST(FONTFORGE)
13603 dnl ===================================================================
13604 dnl Test whether to include fonts
13605 dnl ===================================================================
13606 AC_MSG_CHECKING([whether to include third-party fonts])
13607 if test "$with_fonts" != "no"; then
13608     AC_MSG_RESULT([yes])
13609     WITH_FONTS=TRUE
13610     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13611     AC_DEFINE(HAVE_MORE_FONTS)
13612 else
13613     AC_MSG_RESULT([no])
13614     WITH_FONTS=
13615     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13617 AC_SUBST(WITH_FONTS)
13620 dnl ===================================================================
13621 dnl Test whether to enable online update service
13622 dnl ===================================================================
13623 AC_MSG_CHECKING([whether to enable online update])
13624 ENABLE_ONLINE_UPDATE=
13625 if test "$enable_online_update" = ""; then
13626     AC_MSG_RESULT([no])
13627 else
13628     if test "$enable_online_update" = "mar"; then
13629         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13630     elif test "$enable_online_update" = "yes"; then
13631         if test "$enable_curl" != "yes"; then
13632             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13633         fi
13634         AC_MSG_RESULT([yes])
13635         ENABLE_ONLINE_UPDATE="TRUE"
13636     else
13637         AC_MSG_RESULT([no])
13638     fi
13640 AC_SUBST(ENABLE_ONLINE_UPDATE)
13643 dnl ===================================================================
13644 dnl Test whether to enable mar online update service
13645 dnl ===================================================================
13646 AC_MSG_CHECKING([whether to enable mar online update])
13647 ENABLE_ONLINE_UPDATE_MAR=
13648 if test "$enable_online_update_mar" = yes; then
13649     AC_MSG_RESULT([yes])
13650     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13651     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13652 else
13653     AC_MSG_RESULT([no])
13655 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13657 AC_MSG_CHECKING([for mar online update baseurl])
13658 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13659 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13660     AC_MSG_RESULT([yes])
13661 else
13662     AC_MSG_RESULT([no])
13664 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13666 AC_MSG_CHECKING([for mar online update certificateder])
13667 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13668 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13669     AC_MSG_RESULT([yes])
13670 else
13671     AC_MSG_RESULT([no])
13673 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13675 AC_MSG_CHECKING([for mar online update certificatename])
13676 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13677 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13678     AC_MSG_RESULT([yes])
13679 else
13680     AC_MSG_RESULT([no])
13682 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13684 AC_MSG_CHECKING([for mar online update certificatepath])
13685 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13686 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13687     AC_MSG_RESULT([yes])
13688 else
13689     AC_MSG_RESULT([no])
13691 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13693 AC_MSG_CHECKING([for mar online update channel])
13694 ONLINEUPDATE_MAR_CHANNEL=$with_online_update_mar_channel
13695 if test -n "$ONLINEUPDATE_MAR_CHANNEL"; then
13696     AC_MSG_RESULT([yes])
13697 else
13698     AC_MSG_RESULT([no])
13700 AC_SUBST(ONLINEUPDATE_MAR_CHANNEL)
13702 AC_MSG_CHECKING([for mar online update serverurl])
13703 ONLINEUPDATE_MAR_SERVERURL=$with_online_update_mar_serverurl
13704 if test -n "$ONLINEUPDATE_MAR_SERVERURL"; then
13705     AC_MSG_RESULT([yes])
13706 else
13707     AC_MSG_RESULT([no])
13709 AC_SUBST(ONLINEUPDATE_MAR_SERVERURL)
13711 AC_MSG_CHECKING([for mar online update uploadurl])
13712 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13713 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13714     AC_MSG_RESULT([yes])
13715 else
13716     AC_MSG_RESULT([no])
13718 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13721 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13722 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13723     if test "x$with_privacy_policy_url" = "xundefined"; then
13724         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13725     fi
13727 AC_SUBST(PRIVACY_POLICY_URL)
13728 dnl ===================================================================
13729 dnl Test whether we need bzip2
13730 dnl ===================================================================
13731 SYSTEM_BZIP2=
13732 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13733     AC_MSG_CHECKING([whether to use system bzip2])
13734     if test "$with_system_bzip2" = yes; then
13735         SYSTEM_BZIP2=TRUE
13736         AC_MSG_RESULT([yes])
13737         PKG_CHECK_MODULES(BZIP2, bzip2)
13738         FilterLibs "${BZIP2_LIBS}"
13739         BZIP2_LIBS="${filteredlibs}"
13740     else
13741         AC_MSG_RESULT([no])
13742         BUILD_TYPE="$BUILD_TYPE BZIP2"
13743     fi
13745 AC_SUBST(SYSTEM_BZIP2)
13746 AC_SUBST(BZIP2_CFLAGS)
13747 AC_SUBST(BZIP2_LIBS)
13749 dnl ===================================================================
13750 dnl Test whether to enable extension update
13751 dnl ===================================================================
13752 AC_MSG_CHECKING([whether to enable extension update])
13753 ENABLE_EXTENSION_UPDATE=
13754 if test "x$enable_extension_update" = "xno"; then
13755     AC_MSG_RESULT([no])
13756 else
13757     AC_MSG_RESULT([yes])
13758     ENABLE_EXTENSION_UPDATE="TRUE"
13759     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13760     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13762 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13765 dnl ===================================================================
13766 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13767 dnl ===================================================================
13768 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13769 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13770     AC_MSG_RESULT([no])
13771     ENABLE_SILENT_MSI=
13772 else
13773     AC_MSG_RESULT([yes])
13774     ENABLE_SILENT_MSI=TRUE
13775     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13777 AC_SUBST(ENABLE_SILENT_MSI)
13779 dnl ===================================================================
13780 dnl Check for WiX tools.
13781 dnl ===================================================================
13782 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13783     AC_MSG_RESULT([no])
13784     ENABLE_WIX=
13785 else
13786     AC_MSG_RESULT([yes])
13787     # FIXME: this should do proper detection, but the path is currently
13788     # hardcoded in msicreator/createmsi.py
13789     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13790       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13791     fi
13792     ENABLE_WIX=TRUE
13794 AC_SUBST(ENABLE_WIX)
13796 AC_MSG_CHECKING([whether and how to use Xinerama])
13797 if test "$USING_X11" = TRUE; then
13798     if test "$x_libraries" = "default_x_libraries"; then
13799         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13800         if test "x$XINERAMALIB" = x; then
13801            XINERAMALIB="/usr/lib"
13802         fi
13803     else
13804         XINERAMALIB="$x_libraries"
13805     fi
13806     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13807         # we have both versions, let the user decide but use the dynamic one
13808         # per default
13809         USE_XINERAMA=TRUE
13810         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13811             XINERAMA_LINK=dynamic
13812         else
13813             XINERAMA_LINK=static
13814         fi
13815     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13816         # we have only the dynamic version
13817         USE_XINERAMA=TRUE
13818         XINERAMA_LINK=dynamic
13819     elif test -e "$XINERAMALIB/libXinerama.a"; then
13820         # static version
13821         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13822             USE_XINERAMA=TRUE
13823             XINERAMA_LINK=static
13824         else
13825             USE_XINERAMA=
13826             XINERAMA_LINK=none
13827         fi
13828     else
13829         # no Xinerama
13830         USE_XINERAMA=
13831         XINERAMA_LINK=none
13832     fi
13833     if test "$USE_XINERAMA" = "TRUE"; then
13834         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13835         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13836             [AC_MSG_ERROR(Xinerama header not found.)], [])
13837         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13838         if test "x$XEXTLIB" = x; then
13839            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13840         fi
13841         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13842         if test "$_os" = "FreeBSD"; then
13843             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13844         fi
13845         if test "$_os" = "Linux"; then
13846             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13847         fi
13848         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13849             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13850     else
13851         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13852     fi
13853 else
13854     USE_XINERAMA=
13855     XINERAMA_LINK=none
13856     AC_MSG_RESULT([no])
13858 AC_SUBST(XINERAMA_LINK)
13860 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13861 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13862     enable_cairo_rgba=yes
13864 if test "$enable_cairo_rgba" = yes; then
13865     AC_DEFINE(ENABLE_CAIRO_RGBA)
13866     ENABLE_CAIRO_RGBA=TRUE
13867     AC_MSG_RESULT([yes])
13868 else
13869     ENABLE_CAIRO_RGBA=
13870     AC_MSG_RESULT([no])
13872 AC_SUBST(ENABLE_CAIRO_RGBA)
13874 dnl ===================================================================
13875 dnl Test whether to build cairo or rely on the system version
13876 dnl ===================================================================
13878 if test "$test_cairo" = "yes"; then
13879     AC_MSG_CHECKING([whether to use the system cairo])
13881     : ${with_system_cairo:=$with_system_libs}
13882     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13883         SYSTEM_CAIRO=TRUE
13884         AC_MSG_RESULT([yes])
13886         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13887         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13888         FilterLibs "${CAIRO_LIBS}"
13889         CAIRO_LIBS="${filteredlibs}"
13891         if test "$test_xrender" = "yes"; then
13892             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13893             AC_LANG_PUSH([C])
13894             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13895 #ifdef PictStandardA8
13896 #else
13897       return fail;
13898 #endif
13899 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13901             AC_LANG_POP([C])
13902         fi
13903     else
13904         AC_MSG_RESULT([no])
13905         BUILD_TYPE="$BUILD_TYPE CAIRO"
13906     fi
13908     if test "$enable_cairo_canvas" != no; then
13909         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13910         ENABLE_CAIRO_CANVAS=TRUE
13911     fi
13914 AC_SUBST(CAIRO_CFLAGS)
13915 AC_SUBST(CAIRO_LIBS)
13916 AC_SUBST(ENABLE_CAIRO_CANVAS)
13917 AC_SUBST(SYSTEM_CAIRO)
13919 dnl ===================================================================
13920 dnl Test whether to use avahi
13921 dnl ===================================================================
13922 if test "$_os" = "WINNT"; then
13923     # Windows uses bundled mDNSResponder
13924     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13925 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13926     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13927                       [ENABLE_AVAHI="TRUE"])
13928     AC_DEFINE(HAVE_FEATURE_AVAHI)
13929     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13930     FilterLibs "${AVAHI_LIBS}"
13931     AVAHI_LIBS="${filteredlibs}"
13934 AC_SUBST(ENABLE_AVAHI)
13935 AC_SUBST(AVAHI_CFLAGS)
13936 AC_SUBST(AVAHI_LIBS)
13938 dnl ===================================================================
13939 dnl Test whether to use liblangtag
13940 dnl ===================================================================
13941 SYSTEM_LIBLANGTAG=
13942 AC_MSG_CHECKING([whether to use system liblangtag])
13943 if test "$with_system_liblangtag" = yes; then
13944     SYSTEM_LIBLANGTAG=TRUE
13945     AC_MSG_RESULT([yes])
13946     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13947     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13948     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13949     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13950     FilterLibs "${LIBLANGTAG_LIBS}"
13951     LIBLANGTAG_LIBS="${filteredlibs}"
13952 else
13953     SYSTEM_LIBLANGTAG=
13954     AC_MSG_RESULT([no])
13955     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13956     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13957     if test "$COM" = "MSC"; then
13958         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13959     else
13960         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13961     fi
13963 AC_SUBST(SYSTEM_LIBLANGTAG)
13964 AC_SUBST(LIBLANGTAG_CFLAGS)
13965 AC_SUBST(LIBLANGTAG_LIBS)
13967 dnl ===================================================================
13968 dnl Test whether to build libpng or rely on the system version
13969 dnl ===================================================================
13971 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13972 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13973 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13975 dnl ===================================================================
13976 dnl Test whether to build libtiff or rely on the system version
13977 dnl ===================================================================
13979 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13981 dnl ===================================================================
13982 dnl Test whether to build libwebp or rely on the system version
13983 dnl ===================================================================
13985 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13987 dnl ===================================================================
13988 dnl Check for runtime JVM search path
13989 dnl ===================================================================
13990 if test "$ENABLE_JAVA" != ""; then
13991     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13992     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13993         AC_MSG_RESULT([yes])
13994         if ! test -d "$with_jvm_path"; then
13995             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13996         fi
13997         if ! test -d "$with_jvm_path"jvm; then
13998             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13999         fi
14000         JVM_ONE_PATH_CHECK="$with_jvm_path"
14001         AC_SUBST(JVM_ONE_PATH_CHECK)
14002     else
14003         AC_MSG_RESULT([no])
14004     fi
14007 dnl ===================================================================
14008 dnl Test for the presence of Ant and that it works
14009 dnl ===================================================================
14011 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
14012 # breaks filename decoding, so for the ant section, set it to LANG
14013 LC_ALL=$LANG
14014 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14015     ANT_HOME=; export ANT_HOME
14016     WITH_ANT_HOME=; export WITH_ANT_HOME
14017     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14018         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14019             if test "$_os" = "WINNT"; then
14020                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14021             else
14022                 with_ant_home="$LODE_HOME/opt/ant"
14023             fi
14024         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
14025             with_ant_home="$LODE_HOME/opt/ant"
14026         fi
14027     fi
14028     if test -z "$with_ant_home"; then
14029         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14030     else
14031         if test "$_os" = "WINNT"; then
14032             # AC_PATH_PROGS needs unix path
14033             with_ant_home=`cygpath -u "$with_ant_home"`
14034         fi
14035         AbsolutePath "$with_ant_home"
14036         with_ant_home=$absolute_path
14037         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14038         WITH_ANT_HOME=$with_ant_home
14039         ANT_HOME=$with_ant_home
14040     fi
14042     if test -z "$ANT"; then
14043         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14044     else
14045         # resolve relative or absolute symlink
14046         while test -h "$ANT"; do
14047             a_cwd=`pwd`
14048             a_basename=`basename "$ANT"`
14049             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14050             cd "`dirname "$ANT"`"
14051             cd "`dirname "$a_script"`"
14052             ANT="`pwd`"/"`basename "$a_script"`"
14053             cd "$a_cwd"
14054         done
14056         AC_MSG_CHECKING([if $ANT works])
14057         mkdir -p conftest.dir
14058         a_cwd=$(pwd)
14059         cd conftest.dir
14060         cat > conftest.java << EOF
14061         public class conftest {
14062             int testmethod(int a, int b) {
14063                     return a + b;
14064             }
14065         }
14068         cat > conftest.xml << EOF
14069         <project name="conftest" default="conftest">
14070         <target name="conftest">
14071             <javac srcdir="." includes="conftest.java">
14072             </javac>
14073         </target>
14074         </project>
14077         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14078         if test $? = 0 -a -f ./conftest.class; then
14079             AC_MSG_RESULT([Ant works])
14080             if test -z "$WITH_ANT_HOME"; then
14081                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14082                 if test -z "$ANT_HOME"; then
14083                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14084                 fi
14085             else
14086                 ANT_HOME="$WITH_ANT_HOME"
14087             fi
14088         else
14089             echo "configure: Ant test failed" >&5
14090             cat conftest.java >&5
14091             cat conftest.xml >&5
14092             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14093         fi
14094         cd "$a_cwd"
14095         rm -fr conftest.dir
14096     fi
14097     if test -z "$ANT_HOME"; then
14098         ANT_HOME="NO_ANT_HOME"
14099     else
14100         PathFormat "$ANT_HOME"
14101         ANT_HOME="$formatted_path"
14102         PathFormat "$ANT"
14103         ANT="$formatted_path"
14104     fi
14106     dnl Checking for ant.jar
14107     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14108         AC_MSG_CHECKING([Ant lib directory])
14109         if test -f $ANT_HOME/lib/ant.jar; then
14110             ANT_LIB="$ANT_HOME/lib"
14111         else
14112             if test -f $ANT_HOME/ant.jar; then
14113                 ANT_LIB="$ANT_HOME"
14114             else
14115                 if test -f /usr/share/java/ant.jar; then
14116                     ANT_LIB=/usr/share/java
14117                 else
14118                     if test -f /usr/share/ant-core/lib/ant.jar; then
14119                         ANT_LIB=/usr/share/ant-core/lib
14120                     else
14121                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14122                             ANT_LIB="$ANT_HOME/lib/ant"
14123                         else
14124                             if test -f /usr/share/lib/ant/ant.jar; then
14125                                 ANT_LIB=/usr/share/lib/ant
14126                             else
14127                                 AC_MSG_ERROR([Ant libraries not found!])
14128                             fi
14129                         fi
14130                     fi
14131                 fi
14132             fi
14133         fi
14134         PathFormat "$ANT_LIB"
14135         ANT_LIB="$formatted_path"
14136         AC_MSG_RESULT([Ant lib directory found.])
14137     fi
14139     ant_minver=1.6.0
14140     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14142     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14143     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14144     ant_version_major=`echo $ant_version | cut -d. -f1`
14145     ant_version_minor=`echo $ant_version | cut -d. -f2`
14146     echo "configure: ant_version $ant_version " >&5
14147     echo "configure: ant_version_major $ant_version_major " >&5
14148     echo "configure: ant_version_minor $ant_version_minor " >&5
14149     if test "$ant_version_major" -ge "2"; then
14150         AC_MSG_RESULT([yes, $ant_version])
14151     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14152         AC_MSG_RESULT([yes, $ant_version])
14153     else
14154         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14155     fi
14157     rm -f conftest* core core.* *.core
14159 AC_SUBST(ANT)
14160 AC_SUBST(ANT_HOME)
14161 AC_SUBST(ANT_LIB)
14163 OOO_JUNIT_JAR=
14164 HAMCREST_JAR=
14165 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14166     AC_MSG_CHECKING([for JUnit 4])
14167     if test "$with_junit" = "yes"; then
14168         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14169             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14170         elif test -e /usr/share/java/junit4.jar; then
14171             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14172         else
14173            if test -e /usr/share/lib/java/junit.jar; then
14174               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14175            else
14176               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14177            fi
14178         fi
14179     else
14180         OOO_JUNIT_JAR=$with_junit
14181     fi
14182     if test "$_os" = "WINNT"; then
14183         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14184     fi
14185     printf 'import org.junit.Before;' > conftest.java
14186     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14187         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14188     else
14189         AC_MSG_ERROR(
14190 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14191  specify its pathname via --with-junit=..., or disable it via --without-junit])
14192     fi
14193     rm -f conftest.class conftest.java
14194     if test $OOO_JUNIT_JAR != ""; then
14195         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14196     fi
14198     AC_MSG_CHECKING([for included Hamcrest])
14199     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14200     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14201         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14202     else
14203         AC_MSG_RESULT([Not included])
14204         AC_MSG_CHECKING([for standalone hamcrest jar.])
14205         if test "$with_hamcrest" = "yes"; then
14206             if test -e /usr/share/lib/java/hamcrest.jar; then
14207                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14208             elif test -e /usr/share/java/hamcrest/core.jar; then
14209                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14210             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14211                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14212             else
14213                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14214             fi
14215         else
14216             HAMCREST_JAR=$with_hamcrest
14217         fi
14218         if test "$_os" = "WINNT"; then
14219             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14220         fi
14221         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14222             AC_MSG_RESULT([$HAMCREST_JAR])
14223         else
14224             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),
14225                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14226         fi
14227     fi
14228     rm -f conftest.class conftest.java
14230 AC_SUBST(OOO_JUNIT_JAR)
14231 AC_SUBST(HAMCREST_JAR)
14232 # set back LC_ALL to C after the java related tests...
14233 LC_ALL=C
14235 AC_SUBST(SCPDEFS)
14238 # check for wget and curl
14240 WGET=
14241 CURL=
14243 if test "$enable_fetch_external" != "no"; then
14245 CURL=`which curl 2>/dev/null`
14247 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14248     # wget new enough?
14249     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14250     if test $? -eq 0; then
14251         WGET=$i
14252         break
14253     fi
14254 done
14256 if test -z "$WGET" -a -z "$CURL"; then
14257     AC_MSG_ERROR([neither wget nor curl found!])
14262 AC_SUBST(WGET)
14263 AC_SUBST(CURL)
14266 # check for sha256sum
14268 SHA256SUM=
14270 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14271     eval "$i -a 256 --version" > /dev/null 2>&1
14272     ret=$?
14273     if test $ret -eq 0; then
14274         SHA256SUM="$i -a 256"
14275         break
14276     fi
14277 done
14279 if test -z "$SHA256SUM"; then
14280     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14281         eval "$i --version" > /dev/null 2>&1
14282         ret=$?
14283         if test $ret -eq 0; then
14284             SHA256SUM=$i
14285             break
14286         fi
14287     done
14290 if test -z "$SHA256SUM"; then
14291     AC_MSG_ERROR([no sha256sum found!])
14294 AC_SUBST(SHA256SUM)
14296 dnl ===================================================================
14297 dnl Dealing with l10n options
14298 dnl ===================================================================
14299 AC_MSG_CHECKING([which languages to be built])
14300 # get list of all languages
14301 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14302 # the sed command does the following:
14303 #   + if a line ends with a backslash, append the next line to it
14304 #   + adds " on the beginning of the value (after =)
14305 #   + adds " at the end of the value
14306 #   + removes en-US; we want to put it on the beginning
14307 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14308 [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)]
14309 ALL_LANGS="en-US $completelangiso"
14310 # check the configured localizations
14311 WITH_LANG="$with_lang"
14313 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14314 # (Norwegian is "nb" and "nn".)
14315 if test "$WITH_LANG" = "no"; then
14316     WITH_LANG=
14319 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14320     AC_MSG_RESULT([en-US])
14321 else
14322     AC_MSG_RESULT([$WITH_LANG])
14323     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14324     if test -z "$MSGFMT"; then
14325         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14326             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14327         elif test -x "/opt/lo/bin/msgfmt"; then
14328             MSGFMT="/opt/lo/bin/msgfmt"
14329         else
14330             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14331             if test -z "$MSGFMT"; then
14332                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14333             fi
14334         fi
14335     fi
14336     if test -z "$MSGUNIQ"; then
14337         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14338             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14339         elif test -x "/opt/lo/bin/msguniq"; then
14340             MSGUNIQ="/opt/lo/bin/msguniq"
14341         else
14342             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14343             if test -z "$MSGUNIQ"; then
14344                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14345             fi
14346         fi
14347     fi
14349 AC_SUBST(MSGFMT)
14350 AC_SUBST(MSGUNIQ)
14351 # check that the list is valid
14352 for lang in $WITH_LANG; do
14353     test "$lang" = "ALL" && continue
14354     # need to check for the exact string, so add space before and after the list of all languages
14355     for vl in $ALL_LANGS; do
14356         if test "$vl" = "$lang"; then
14357            break
14358         fi
14359     done
14360     if test "$vl" != "$lang"; then
14361         # if you're reading this - you prolly quoted your languages remove the quotes ...
14362         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14363     fi
14364 done
14365 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14366     echo $WITH_LANG | grep -q en-US
14367     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14369 # list with substituted ALL
14370 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14371 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14372 test "$WITH_LANG" = "en-US" && WITH_LANG=
14373 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14374     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14375     ALL_LANGS=`echo $ALL_LANGS qtz`
14377 AC_SUBST(ALL_LANGS)
14378 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14379 AC_SUBST(WITH_LANG)
14380 AC_SUBST(WITH_LANG_LIST)
14381 AC_SUBST(GIT_NEEDED_SUBMODULES)
14383 WITH_POOR_HELP_LOCALIZATIONS=
14384 if test -d "$SRC_ROOT/translations/source"; then
14385     for l in `ls -1 $SRC_ROOT/translations/source`; do
14386         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14387             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14388         fi
14389     done
14391 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14393 if test -n "$with_locales" -a "$with_locales" != ALL; then
14394     WITH_LOCALES="$with_locales"
14396     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14397     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14398     # config_host/config_locales.h.in
14399     for locale in $WITH_LOCALES; do
14400         lang=${locale%_*}
14402         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14404         case $lang in
14405         hi|mr*ne)
14406             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14407             ;;
14408         bg|ru)
14409             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14410             ;;
14411         esac
14412     done
14413 else
14414     AC_DEFINE(WITH_LOCALE_ALL)
14416 AC_SUBST(WITH_LOCALES)
14418 dnl git submodule update --reference
14419 dnl ===================================================================
14420 if test -n "${GIT_REFERENCE_SRC}"; then
14421     for repo in ${GIT_NEEDED_SUBMODULES}; do
14422         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14423             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14424         fi
14425     done
14427 AC_SUBST(GIT_REFERENCE_SRC)
14429 dnl git submodules linked dirs
14430 dnl ===================================================================
14431 if test -n "${GIT_LINK_SRC}"; then
14432     for repo in ${GIT_NEEDED_SUBMODULES}; do
14433         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14434             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14435         fi
14436     done
14438 AC_SUBST(GIT_LINK_SRC)
14440 dnl branding
14441 dnl ===================================================================
14442 AC_MSG_CHECKING([for alternative branding images directory])
14443 # initialize mapped arrays
14444 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14445 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14447 if test -z "$with_branding" -o "$with_branding" = "no"; then
14448     AC_MSG_RESULT([none])
14449     DEFAULT_BRAND_IMAGES="$brand_files"
14450 else
14451     if ! test -d $with_branding ; then
14452         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14453     else
14454         AC_MSG_RESULT([$with_branding])
14455         CUSTOM_BRAND_DIR="$with_branding"
14456         for lfile in $brand_files
14457         do
14458             if ! test -f $with_branding/$lfile ; then
14459                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14460                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14461             else
14462                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14463             fi
14464         done
14465         check_for_progress="yes"
14466     fi
14468 AC_SUBST([BRAND_INTRO_IMAGES])
14469 AC_SUBST([CUSTOM_BRAND_DIR])
14470 AC_SUBST([CUSTOM_BRAND_IMAGES])
14471 AC_SUBST([DEFAULT_BRAND_IMAGES])
14474 AC_MSG_CHECKING([for 'intro' progress settings])
14475 PROGRESSBARCOLOR=
14476 PROGRESSSIZE=
14477 PROGRESSPOSITION=
14478 PROGRESSFRAMECOLOR=
14479 PROGRESSTEXTCOLOR=
14480 PROGRESSTEXTBASELINE=
14482 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14483     source "$with_branding/progress.conf"
14484     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14485 else
14486     AC_MSG_RESULT([none])
14489 AC_SUBST(PROGRESSBARCOLOR)
14490 AC_SUBST(PROGRESSSIZE)
14491 AC_SUBST(PROGRESSPOSITION)
14492 AC_SUBST(PROGRESSFRAMECOLOR)
14493 AC_SUBST(PROGRESSTEXTCOLOR)
14494 AC_SUBST(PROGRESSTEXTBASELINE)
14497 dnl ===================================================================
14498 dnl Custom build version
14499 dnl ===================================================================
14500 AC_MSG_CHECKING([for extra build ID])
14501 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14502     EXTRA_BUILDID="$with_extra_buildid"
14504 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14505 if test -n "$EXTRA_BUILDID" ; then
14506     AC_MSG_RESULT([$EXTRA_BUILDID])
14507 else
14508     AC_MSG_RESULT([not set])
14510 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14512 OOO_VENDOR=
14513 AC_MSG_CHECKING([for vendor])
14514 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14515     OOO_VENDOR="$USERNAME"
14517     if test -z "$OOO_VENDOR"; then
14518         OOO_VENDOR="$USER"
14519     fi
14521     if test -z "$OOO_VENDOR"; then
14522         OOO_VENDOR="`id -u -n`"
14523     fi
14525     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14526 else
14527     OOO_VENDOR="$with_vendor"
14528     AC_MSG_RESULT([$OOO_VENDOR])
14530 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14531 AC_SUBST(OOO_VENDOR)
14533 if test "$_os" = "Android" ; then
14534     ANDROID_PACKAGE_NAME=
14535     AC_MSG_CHECKING([for Android package name])
14536     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14537         if test -n "$ENABLE_DEBUG"; then
14538             # Default to the package name that makes ndk-gdb happy.
14539             ANDROID_PACKAGE_NAME="org.libreoffice"
14540         else
14541             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14542         fi
14544         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14545     else
14546         ANDROID_PACKAGE_NAME="$with_android_package_name"
14547         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14548     fi
14549     AC_SUBST(ANDROID_PACKAGE_NAME)
14552 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14553 if test "$with_compat_oowrappers" = "yes"; then
14554     WITH_COMPAT_OOWRAPPERS=TRUE
14555     AC_MSG_RESULT(yes)
14556 else
14557     WITH_COMPAT_OOWRAPPERS=
14558     AC_MSG_RESULT(no)
14560 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14562 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14563 AC_MSG_CHECKING([for install dirname])
14564 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14565     INSTALLDIRNAME="$with_install_dirname"
14567 AC_MSG_RESULT([$INSTALLDIRNAME])
14568 AC_SUBST(INSTALLDIRNAME)
14570 AC_MSG_CHECKING([for prefix])
14571 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14572 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14573 PREFIXDIR="$prefix"
14574 AC_MSG_RESULT([$PREFIXDIR])
14575 AC_SUBST(PREFIXDIR)
14577 LIBDIR=[$(eval echo $(eval echo $libdir))]
14578 AC_SUBST(LIBDIR)
14580 DATADIR=[$(eval echo $(eval echo $datadir))]
14581 AC_SUBST(DATADIR)
14583 MANDIR=[$(eval echo $(eval echo $mandir))]
14584 AC_SUBST(MANDIR)
14586 DOCDIR=[$(eval echo $(eval echo $docdir))]
14587 AC_SUBST(DOCDIR)
14589 BINDIR=[$(eval echo $(eval echo $bindir))]
14590 AC_SUBST(BINDIR)
14592 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14593 AC_SUBST(INSTALLDIR)
14595 TESTINSTALLDIR="${BUILDDIR}/test-install"
14596 AC_SUBST(TESTINSTALLDIR)
14599 # ===================================================================
14600 # OAuth2 id and secrets
14601 # ===================================================================
14603 AC_MSG_CHECKING([for Google Drive client id and secret])
14604 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14605     AC_MSG_RESULT([not set])
14606     GDRIVE_CLIENT_ID="\"\""
14607     GDRIVE_CLIENT_SECRET="\"\""
14608 else
14609     AC_MSG_RESULT([set])
14610     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14611     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14613 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14614 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14616 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14617 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14618     AC_MSG_RESULT([not set])
14619     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14620     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14621 else
14622     AC_MSG_RESULT([set])
14623     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14624     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14626 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14627 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14629 AC_MSG_CHECKING([for OneDrive client id and secret])
14630 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14631     AC_MSG_RESULT([not set])
14632     ONEDRIVE_CLIENT_ID="\"\""
14633     ONEDRIVE_CLIENT_SECRET="\"\""
14634 else
14635     AC_MSG_RESULT([set])
14636     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14637     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14639 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14640 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14643 dnl ===================================================================
14644 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14645 dnl --enable-dependency-tracking configure option
14646 dnl ===================================================================
14647 AC_MSG_CHECKING([whether to enable dependency tracking])
14648 if test "$enable_dependency_tracking" = "no"; then
14649     nodep=TRUE
14650     AC_MSG_RESULT([no])
14651 else
14652     AC_MSG_RESULT([yes])
14654 AC_SUBST(nodep)
14656 dnl ===================================================================
14657 dnl Number of CPUs to use during the build
14658 dnl ===================================================================
14659 AC_MSG_CHECKING([for number of processors to use])
14660 # plain --with-parallelism is just the default
14661 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14662     if test "$with_parallelism" = "no"; then
14663         PARALLELISM=0
14664     else
14665         PARALLELISM=$with_parallelism
14666     fi
14667 else
14668     if test "$enable_icecream" = "yes"; then
14669         PARALLELISM="40"
14670     else
14671         case `uname -s` in
14673         Darwin|FreeBSD|NetBSD|OpenBSD)
14674             PARALLELISM=`sysctl -n hw.ncpu`
14675             ;;
14677         Linux)
14678             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14679         ;;
14680         # what else than above does profit here *and* has /proc?
14681         *)
14682             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14683             ;;
14684         esac
14686         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14687         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14688     fi
14691 if test $PARALLELISM -eq 0; then
14692     AC_MSG_RESULT([explicit make -j option needed])
14693 else
14694     AC_MSG_RESULT([$PARALLELISM])
14696 AC_SUBST(PARALLELISM)
14699 # Set up ILIB for MSVC build
14701 ILIB1=
14702 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14703     ILIB="."
14704     if test -n "$JAVA_HOME"; then
14705         ILIB="$ILIB;$JAVA_HOME/lib"
14706     fi
14707     ILIB1=-link
14708     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14709     ILIB="$ILIB;$formatted_path"
14710     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14711     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14712     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14713     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14714         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14715         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14716     fi
14717     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14718     ucrtlibpath_formatted=$formatted_path
14719     ILIB="$ILIB;$ucrtlibpath_formatted"
14720     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14721     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14722         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14723         ILIB="$ILIB;$formatted_path"
14724     else
14725         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14726         ILIB="$ILIB;$formatted_path"
14727     fi
14729     if test "$cross_compiling" != "yes"; then
14730         ILIB_FOR_BUILD="$ILIB"
14731     fi
14733 AC_SUBST(ILIB)
14734 AC_SUBST(ILIB_FOR_BUILD)
14736 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14737 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14738 dnl from consteval constructor initializing const variable",
14739 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14740 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14741 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14742 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14743 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14744 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14745 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14746 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14747 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14748 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14749 AC_LANG_PUSH([C++])
14750 save_CXX=$CXX
14751 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14752     CXX="env LIB=$ILIB $CXX"
14754 save_CXXFLAGS=$CXXFLAGS
14755 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14756 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14757         struct S {
14758             consteval S() { i = 1; }
14759             int i = 0;
14760         };
14761         S const s;
14763         struct S1 {
14764              int a;
14765              consteval S1(int n): a(n) {}
14766         };
14767         struct S2 {
14768             S1 x;
14769             S2(): x(0) {}
14770         };
14772         struct S3 {
14773             consteval S3() {}
14774             union {
14775                 int a;
14776                 unsigned b = 0;
14777             };
14778         };
14779         void f() { S3(); }
14781         struct S4 { consteval S4() = default; };
14782         void f4(bool b) { b ? S4() : S4(); }
14784         struct S5 {
14785             consteval S5() { c = 0; }
14786             char * f() { return &c; }
14787             union {
14788                 char c;
14789                 int i;
14790             };
14791         };
14792         auto s5 = S5().f();
14793     ], [
14794         return (s.i == 1) ? 0 : 1;
14795     ])], [
14796         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14797         AC_MSG_RESULT([yes])
14798     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14799 CXX=$save_CXX
14800 CXXFLAGS=$save_CXXFLAGS
14801 AC_LANG_POP([C++])
14803 # ===================================================================
14804 # Creating bigger shared library to link against
14805 # ===================================================================
14806 AC_MSG_CHECKING([whether to create huge library])
14807 MERGELIBS=
14809 if test $_os = iOS -o $_os = Android; then
14810     # Never any point in mergelibs for these as we build just static
14811     # libraries anyway...
14812     enable_mergelibs=no
14815 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14816     if test $_os != Linux -a $_os != WINNT; then
14817         add_warning "--enable-mergelibs is not tested for this platform"
14818     fi
14819     MERGELIBS="TRUE"
14820     AC_MSG_RESULT([yes])
14821     AC_DEFINE(ENABLE_MERGELIBS)
14822 else
14823     AC_MSG_RESULT([no])
14825 AC_SUBST([MERGELIBS])
14827 dnl ===================================================================
14828 dnl icerun is a wrapper that stops us spawning tens of processes
14829 dnl locally - for tools that can't be executed on the compile cluster
14830 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14831 dnl ===================================================================
14832 AC_MSG_CHECKING([whether to use icerun wrapper])
14833 ICECREAM_RUN=
14834 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14835     ICECREAM_RUN=icerun
14836     AC_MSG_RESULT([yes])
14837 else
14838     AC_MSG_RESULT([no])
14840 AC_SUBST(ICECREAM_RUN)
14842 dnl ===================================================================
14843 dnl Setup the ICECC_VERSION for the build the same way it was set for
14844 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14845 dnl ===================================================================
14846 x_ICECC_VERSION=[\#]
14847 if test -n "$ICECC_VERSION" ; then
14848     x_ICECC_VERSION=
14850 AC_SUBST(x_ICECC_VERSION)
14851 AC_SUBST(ICECC_VERSION)
14853 dnl ===================================================================
14855 AC_MSG_CHECKING([MPL subset])
14856 MPL_SUBSET=
14857 LICENSE="LGPL"
14859 if test "$enable_mpl_subset" = "yes"; then
14860     mpl_error_string=
14861     newline=$'\n    *'
14862     warn_report=false
14863     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14864         warn_report=true
14865     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14866         warn_report=true
14867     fi
14868     if test "$warn_report" = "true"; then
14869         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14870     fi
14871     if test "x$enable_postgresql_sdbc" != "xno"; then
14872         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14873     fi
14874     if test "$enable_lotuswordpro" = "yes"; then
14875         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14876     fi
14877     if test -n "$ENABLE_POPPLER"; then
14878         if test "x$SYSTEM_POPPLER" = "x"; then
14879             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14880         fi
14881     fi
14882     # cf. m4/libo_check_extension.m4
14883     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14884         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14885     fi
14886     denied_themes=
14887     filtered_themes=
14888     for theme in $WITH_THEMES; do
14889         case $theme in
14890         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14891             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14892         *)
14893             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14894         esac
14895     done
14896     if test "x$denied_themes" != "x"; then
14897         if test "x$filtered_themes" == "x"; then
14898             filtered_themes="colibre"
14899         fi
14900         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14901     fi
14903     ENABLE_OPENGL_TRANSITIONS=
14905     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14906         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14907     fi
14909     if test "x$mpl_error_string" != "x"; then
14910         AC_MSG_ERROR([$mpl_error_string])
14911     fi
14913     MPL_SUBSET="TRUE"
14914     LICENSE="MPL-2.0"
14915     AC_DEFINE(MPL_HAVE_SUBSET)
14916     AC_MSG_RESULT([only])
14917 else
14918     AC_MSG_RESULT([no restrictions])
14920 AC_SUBST(MPL_SUBSET)
14921 AC_SUBST(LICENSE)
14923 dnl ===================================================================
14925 AC_MSG_CHECKING([formula logger])
14926 ENABLE_FORMULA_LOGGER=
14928 if test "x$enable_formula_logger" = "xyes"; then
14929     AC_MSG_RESULT([yes])
14930     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14931     ENABLE_FORMULA_LOGGER=TRUE
14932 elif test -n "$ENABLE_DBGUTIL" ; then
14933     AC_MSG_RESULT([yes])
14934     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14935     ENABLE_FORMULA_LOGGER=TRUE
14936 else
14937     AC_MSG_RESULT([no])
14940 AC_SUBST(ENABLE_FORMULA_LOGGER)
14942 dnl ===================================================================
14943 dnl Checking for active Antivirus software.
14944 dnl ===================================================================
14946 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14947     AC_MSG_CHECKING([for active Antivirus software])
14948     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14949     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14950     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14951         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14952             AC_MSG_RESULT([found])
14953             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14954             echo $EICAR_STRING > $SRC_ROOT/eicar
14955             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14956             rm $SRC_ROOT/eicar
14957             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14958                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14959             fi
14960             echo $EICAR_STRING > $BUILDDIR/eicar
14961             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14962             rm $BUILDDIR/eicar
14963             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14964                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14965             fi
14966             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"
14967         else
14968             AC_MSG_RESULT([not found])
14969         fi
14970     else
14971         AC_MSG_RESULT([n/a])
14972     fi
14975 dnl ===================================================================
14977 AC_MSG_CHECKING([for coredumpctl support])
14978 if test -z "$with_coredumpctl" && test $_os != Linux; then
14979     with_coredumpctl=no
14981 if test "$with_coredumpctl" = no; then
14982     WITH_COREDUMPCTL=
14983 else
14984     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14985     AC_PATH_PROG(JQ, jq)
14986     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14987     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14988     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14989         || test -z "$SYSTEMD_RUN"
14990     then
14991         if test -z "$with_coredumpctl"; then
14992             WITH_COREDUMPCTL=
14993         else
14994             if test -z "$COREDUMPCTL"; then
14995                 AC_MSG_ERROR([coredumpctl not found])
14996             fi
14997             if test -z "$JQ"; then
14998                 AC_MSG_ERROR([jq not found])
14999             fi
15000             if test -z "$SYSTEMD_ESCAPE"; then
15001                 AC_MSG_ERROR([systemd-escape not found])
15002             fi
15003             if test -z "$SYSTEMD_RUN"; then
15004                 AC_MSG_ERROR([systemd-run not found])
15005             fi
15006         fi
15007     else
15008         WITH_COREDUMPCTL=TRUE
15009     fi
15011 if test -z "$WITH_COREDUMPCTL"; then
15012     AC_MSG_RESULT([no])
15013 else
15014     AC_MSG_RESULT([yes])
15016 AC_SUBST(COREDUMPCTL)
15017 AC_SUBST(JQ)
15018 AC_SUBST(SYSTEMD_ESCAPE)
15019 AC_SUBST(SYSTEMD_RUN)
15020 AC_SUBST(WITH_COREDUMPCTL)
15022 dnl ===================================================================
15023 dnl Setting up the environment.
15024 dnl ===================================================================
15025 AC_MSG_NOTICE([setting up the build environment variables...])
15027 AC_SUBST(COMPATH)
15029 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15030     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15031         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15032         ATL_INCLUDE="$COMPATH/atlmfc/include"
15033     elif test -d "$COMPATH/atlmfc/lib"; then
15034         ATL_LIB="$COMPATH/atlmfc/lib"
15035         ATL_INCLUDE="$COMPATH/atlmfc/include"
15036     else
15037         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15038         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15039     fi
15040     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15041     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15042     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15045 if test "$build_os" = "cygwin"; then
15046     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15047     PathFormat "/usr/bin/find.exe"
15048     FIND="$formatted_path"
15049     PathFormat "/usr/bin/sort.exe"
15050     SORT="$formatted_path"
15051     PathFormat "/usr/bin/grep.exe"
15052     WIN_GREP="$formatted_path"
15053     PathFormat "/usr/bin/ls.exe"
15054     WIN_LS="$formatted_path"
15055     PathFormat "/usr/bin/touch.exe"
15056     WIN_TOUCH="$formatted_path"
15057 else
15058     FIND=find
15059     SORT=sort
15062 AC_SUBST(ATL_INCLUDE)
15063 AC_SUBST(ATL_LIB)
15064 AC_SUBST(FIND)
15065 AC_SUBST(SORT)
15066 AC_SUBST(WIN_GREP)
15067 AC_SUBST(WIN_LS)
15068 AC_SUBST(WIN_TOUCH)
15070 AC_SUBST(BUILD_TYPE)
15072 AC_SUBST(SOLARINC)
15074 PathFormat "$PERL"
15075 PERL="$formatted_path"
15076 AC_SUBST(PERL)
15078 if test -n "$TMPDIR"; then
15079     TEMP_DIRECTORY="$TMPDIR"
15080 else
15081     TEMP_DIRECTORY="/tmp"
15083 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15084 if test "$build_os" = "cygwin"; then
15085     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15086     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15088 AC_SUBST(TEMP_DIRECTORY)
15089 AC_SUBST(CYGWIN_BASH)
15091 # setup the PATH for the environment
15092 if test -n "$LO_PATH_FOR_BUILD"; then
15093     LO_PATH="$LO_PATH_FOR_BUILD"
15094     case "$host_os" in
15095     cygwin*|wsl*)
15096         pathmunge "$MSVC_HOST_PATH" "before"
15097         ;;
15098     esac
15099 else
15100     LO_PATH="$PATH"
15102     case "$host_os" in
15104     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15105         if test "$ENABLE_JAVA" != ""; then
15106             pathmunge "$JAVA_HOME/bin" "after"
15107         fi
15108         ;;
15110     cygwin*|wsl*)
15111         # Win32 make needs native paths
15112         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15113             LO_PATH=`cygpath -p -m "$PATH"`
15114         fi
15115         if test "$WIN_BUILD_ARCH" = "x64"; then
15116             # needed for msi packaging
15117             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15118         fi
15119         if test "$WIN_BUILD_ARCH" = "arm64"; then
15120             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15121             # the x86 ones probably would work just as well...
15122             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15123         fi
15124         # .NET 4.6 and higher don't have bin directory
15125         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15126             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15127         fi
15128         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15129         pathmunge "$CSC_PATH" "before"
15130         pathmunge "$MIDL_PATH" "before"
15131         pathmunge "$AL_PATH" "before"
15132         pathmunge "$MSVC_MULTI_PATH" "before"
15133         pathmunge "$MSVC_BUILD_PATH" "before"
15134         if test -n "$MSBUILD_PATH" ; then
15135             pathmunge "$MSBUILD_PATH" "before"
15136         fi
15137         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15138         if test "$ENABLE_JAVA" != ""; then
15139             if test -d "$JAVA_HOME/jre/bin/client"; then
15140                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15141             fi
15142             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15143                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15144             fi
15145             pathmunge "$JAVA_HOME/bin" "before"
15146         fi
15147         pathmunge "$MSVC_HOST_PATH" "before"
15148         ;;
15150     solaris*)
15151         pathmunge "/usr/css/bin" "before"
15152         if test "$ENABLE_JAVA" != ""; then
15153             pathmunge "$JAVA_HOME/bin" "after"
15154         fi
15155         ;;
15156     esac
15159 AC_SUBST(LO_PATH)
15161 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15162 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15163     x_LO_ELFCHECK_ALLOWLIST=
15164 else
15165     x_LO_ELFCHECK_ALLOWLIST=[\#]
15167 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15168 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15170 libo_FUZZ_SUMMARY
15172 # Generate a configuration sha256 we can use for deps
15173 if test -f config_host.mk; then
15174     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15176 if test -f config_host_lang.mk; then
15177     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15180 CFLAGS=$my_original_CFLAGS
15181 CXXFLAGS=$my_original_CXXFLAGS
15182 CPPFLAGS=$my_original_CPPFLAGS
15184 AC_CONFIG_LINKS([include:include])
15186 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15187 # BUILD platform configuration] - otherwise breaks cross building
15188 AC_CONFIG_FILES([config_host.mk
15189                  config_host_lang.mk
15190                  Makefile
15191                  bin/bffvalidator.sh
15192                  bin/odfvalidator.sh
15193                  bin/officeotron.sh
15194                  instsetoo_native/util/openoffice.lst
15195                  sysui/desktop/macosx/Info.plist
15196                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15197                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15198                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15200 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15201 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15202 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15203 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15204 AC_CONFIG_HEADERS([config_host/config_clang.h])
15205 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15206 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15207 AC_CONFIG_HEADERS([config_host/config_eot.h])
15208 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15209 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15210 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15211 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15212 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15213 AC_CONFIG_HEADERS([config_host/config_features.h])
15214 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15215 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15216 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15217 AC_CONFIG_HEADERS([config_host/config_folders.h])
15218 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15219 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15220 AC_CONFIG_HEADERS([config_host/config_gio.h])
15221 AC_CONFIG_HEADERS([config_host/config_global.h])
15222 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15223 AC_CONFIG_HEADERS([config_host/config_java.h])
15224 AC_CONFIG_HEADERS([config_host/config_langs.h])
15225 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15226 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15227 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15228 AC_CONFIG_HEADERS([config_host/config_locales.h])
15229 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15230 AC_CONFIG_HEADERS([config_host/config_oox.h])
15231 AC_CONFIG_HEADERS([config_host/config_options.h])
15232 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15233 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15234 AC_CONFIG_HEADERS([config_host/config_skia.h])
15235 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15236 AC_CONFIG_HEADERS([config_host/config_validation.h])
15237 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15238 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15239 AC_CONFIG_HEADERS([config_host/config_version.h])
15240 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15241 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15242 AC_CONFIG_HEADERS([config_host/config_python.h])
15243 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15244 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15245 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15246 AC_OUTPUT
15248 if test "$CROSS_COMPILING" = TRUE; then
15249     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15252 # touch the config timestamp file
15253 if test ! -f config_host.mk.stamp; then
15254     echo > config_host.mk.stamp
15255 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15256     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15257 else
15258     echo > config_host.mk.stamp
15261 # touch the config lang timestamp file
15262 if test ! -f config_host_lang.mk.stamp; then
15263     echo > config_host_lang.mk.stamp
15264 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15265     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15266 else
15267     echo > config_host_lang.mk.stamp
15271 if test \( "$STALE_MAKE" = "TRUE" \) \
15272         -a "$build_os" = "cygwin"; then
15274 cat << _EOS
15275 ****************************************************************************
15276 WARNING:
15277 Your make version is known to be horribly slow, and hard to debug
15278 problems with. To get a reasonably functional make please do:
15280 to install a pre-compiled binary make for Win32
15282  mkdir -p /opt/lo/bin
15283  cd /opt/lo/bin
15284  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15285  cp make-4.2.1-msvc.exe make
15286  chmod +x make
15288 to install from source:
15289 place yourself in a working directory of you choice.
15291  git clone git://git.savannah.gnu.org/make.git
15293  [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"]
15294  set PATH=%PATH%;C:\Cygwin\bin
15295  [or Cygwin64, if that is what you have]
15296  cd path-to-make-repo-you-cloned-above
15297  build_w32.bat --without-guile
15299 should result in a WinRel/gnumake.exe.
15300 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15302 Then re-run autogen.sh
15304 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15305 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15307 _EOS
15311 cat << _EOF
15312 ****************************************************************************
15314 To show information on various make targets and make flags, run:
15315 $GNUMAKE help
15317 To just build, run:
15318 $GNUMAKE
15320 _EOF
15322 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15323     cat << _EOF
15324 After the build has finished successfully, you can immediately run what you built using the command:
15325 _EOF
15327     if test $_os = Darwin; then
15328         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15329     else
15330         echo instdir/program/soffice
15331     fi
15332     cat << _EOF
15334 If you want to run the unit tests, run:
15335 $GNUMAKE check
15337 _EOF
15340 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15341     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15342     cat "$WARNINGS_FILE_FOR_BUILD"
15343     echo
15346 if test -s "$WARNINGS_FILE"; then
15347     echo "HOST config ($WARNINGS_FILE)"
15348     cat "$WARNINGS_FILE"
15351 # Remove unneeded emconfigure artifacts
15352 rm -f a.out a.wasm a.out.js a.out.wasm
15354 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: