cross-compiling on windows needs openssl to build internal python
[LibreOffice.git] / configure.ac
blob17fa8afac23ab5a91b39b3789d626e37a51e06c7
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],[7.6.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 LIBO_THIS_YEAR=`date +%Y`
523 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
525 # replace backslashes, to get a valid c++ string
526 config_args=$(echo $ac_configure_args | tr '\\' '/')
527 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
529 dnl ===================================================================
530 dnl Product version
531 dnl ===================================================================
532 AC_MSG_CHECKING([for product version])
533 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
534 AC_MSG_RESULT([$PRODUCTVERSION])
535 AC_SUBST(PRODUCTVERSION)
537 AC_PROG_EGREP
538 # AC_PROG_EGREP doesn't set GREP on all systems as well
539 AC_PATH_PROG(GREP, grep)
541 BUILDDIR=`pwd`
542 cd $srcdir
543 SRC_ROOT=`pwd`
544 cd $BUILDDIR
545 x_Cygwin=[\#]
547 dnl ======================================
548 dnl Required GObject introspection version
549 dnl ======================================
550 INTROSPECTION_REQUIRED_VERSION=1.32.0
552 dnl ===================================================================
553 dnl Search all the common names for GNU Make
554 dnl ===================================================================
555 AC_MSG_CHECKING([for GNU Make])
557 # try to use our own make if it is available and GNUMAKE was not already defined
558 if test -z "$GNUMAKE"; then
559     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
560         GNUMAKE="$LODE_HOME/opt/bin/make"
561     elif test -x "/opt/lo/bin/make"; then
562         GNUMAKE="/opt/lo/bin/make"
563     fi
566 GNUMAKE_WIN_NATIVE=
567 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
568     if test -n "$a"; then
569         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
570         if test $? -eq 0;  then
571             if test "$build_os" = "cygwin"; then
572                 if test -n "$($a -v | grep 'Built for Windows')" ; then
573                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
574                     GNUMAKE_WIN_NATIVE="TRUE"
575                 else
576                     GNUMAKE=`which $a`
577                 fi
578             else
579                 GNUMAKE=`which $a`
580             fi
581             break
582         fi
583     fi
584 done
585 AC_MSG_RESULT($GNUMAKE)
586 if test -z "$GNUMAKE"; then
587     AC_MSG_ERROR([not found. install GNU Make.])
588 else
589     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
590         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
591     fi
594 win_short_path_for_make()
596     local short_path="$1"
597     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
598         cygpath -sm "$short_path"
599     else
600         cygpath -u "$(cygpath -d "$short_path")"
601     fi
605 if test "$build_os" = "cygwin"; then
606     PathFormat "$SRC_ROOT"
607     SRC_ROOT="$formatted_path"
608     PathFormat "$BUILDDIR"
609     BUILDDIR="$formatted_path"
610     x_Cygwin=
611     AC_MSG_CHECKING(for explicit COMSPEC)
612     if test -z "$COMSPEC"; then
613         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
614     else
615         AC_MSG_RESULT([found: $COMSPEC])
616     fi
619 AC_SUBST(SRC_ROOT)
620 AC_SUBST(BUILDDIR)
621 AC_SUBST(x_Cygwin)
622 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
623 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
624 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
626 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
627     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
630 # need sed in os checks...
631 AC_PATH_PROGS(SED, sed)
632 if test -z "$SED"; then
633     AC_MSG_ERROR([install sed to run this script])
636 # Set the ENABLE_LTO variable
637 # ===================================================================
638 AC_MSG_CHECKING([whether to use link-time optimization])
639 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
640     ENABLE_LTO="TRUE"
641     AC_MSG_RESULT([yes])
642 else
643     ENABLE_LTO=""
644     AC_MSG_RESULT([no])
646 AC_SUBST(ENABLE_LTO)
648 AC_ARG_ENABLE(fuzz-options,
649     AS_HELP_STRING([--enable-fuzz-options],
650         [Randomly enable or disable each of those configurable options
651          that are supposed to be freely selectable without interdependencies,
652          or where bad interaction from interdependencies is automatically avoided.])
655 dnl ===================================================================
656 dnl When building for Android, --with-android-ndk,
657 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
658 dnl mandatory
659 dnl ===================================================================
661 AC_ARG_WITH(android-ndk,
662     AS_HELP_STRING([--with-android-ndk],
663         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
666 AC_ARG_WITH(android-ndk-toolchain-version,
667     AS_HELP_STRING([--with-android-ndk-toolchain-version],
668         [Specify which toolchain version to use, of those present in the
669         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
670         with_android_ndk_toolchain_version=clang5.0)
672 AC_ARG_WITH(android-sdk,
673     AS_HELP_STRING([--with-android-sdk],
674         [Specify location of the Android SDK. Mandatory when building for Android.]),
677 AC_ARG_WITH(android-api-level,
678     AS_HELP_STRING([--with-android-api-level],
679         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
682 ANDROID_NDK_DIR=
683 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
684     with_android_ndk="$SRC_ROOT/external/android-ndk"
686 if test -n "$with_android_ndk"; then
687     eval ANDROID_NDK_DIR=$with_android_ndk
689     ANDROID_API_LEVEL=16
690     if test -n "$with_android_api_level" ; then
691         ANDROID_API_LEVEL="$with_android_api_level"
692     fi
694     if test $host_cpu = arm; then
695         LLVM_TRIPLE=armv7a-linux-androideabi
696         ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
697         ANDROID_APP_ABI=armeabi-v7a
698         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
699     elif test $host_cpu = aarch64; then
700         LLVM_TRIPLE=aarch64-linux-android
701         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
702         # minimum android version that supports aarch64
703         if test "$ANDROID_API_LEVEL" -lt "21" ; then
704             ANDROID_API_LEVEL=21
705         fi
706         ANDROID_APP_ABI=arm64-v8a
707     elif test $host_cpu = x86_64; then
708         LLVM_TRIPLE=x86_64-linux-android
709         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
710         # minimum android version that supports x86_64
711         ANDROID_API_LEVEL=21
712         ANDROID_APP_ABI=x86_64
713     else
714         # host_cpu is something like "i386" or "i686" I guess, NDK uses
715         # "x86" in some contexts
716         LLVM_TRIPLE=i686-linux-android
717         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
718         ANDROID_APP_ABI=x86
719     fi
721     # Set up a lot of pre-canned defaults
723     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
724         if test ! -f $ANDROID_NDK_DIR/source.properties; then
725             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
726         fi
727         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
728     else
729         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
730     fi
731     if test -z "$ANDROID_NDK_VERSION";  then
732         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
733     fi
734     case $ANDROID_NDK_VERSION in
735     r9*|r10*)
736         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
737         ;;
738     11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
739         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
740         ;;
741     23.*)
742         ;;
743     *)
744         # NDK 24 dropped support for API levels < 19
745         if test "$ANDROID_API_LEVEL" -lt "19"; then
746             ANDROID_API_LEVEL=19
747         fi
748         case $ANDROID_NDK_VERSION in
749         24.*|25.*)
750             ;;
751         *)
752             AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
753             add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
754             ;;
755         esac
756         ;;
757     esac
759     case "$with_android_ndk_toolchain_version" in
760     clang5.0)
761         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
762         ;;
763     *)
764         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
765     esac
767     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
769     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
770     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
771     # manage to link the (app-specific) single huge .so that is built for the app in
772     # android/source/ if there is debug information in a significant part of the object files.
773     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
774     # all objects have been built with debug information.)
775     case $build_os in
776     linux-gnu*)
777         android_HOST_TAG=linux-x86_64
778         ;;
779     darwin*)
780         android_HOST_TAG=darwin-x86_64
781         ;;
782     *)
783         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
784         # ndk would also support windows and windows-x86_64
785         ;;
786     esac
787     ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
788     ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
790     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
791     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
792     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
793     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
794     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
796     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
797     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
798     if test "$ENABLE_LTO" = TRUE; then
799         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
800         # $CC and $CXX when building external libraries
801         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
802     fi
804     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
806     if test -z "$CC"; then
807         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
808         CC_BASE="clang"
809     fi
810     if test -z "$CXX"; then
811         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
812         CXX_BASE="clang++"
813     fi
815 AC_SUBST(ANDROID_NDK_DIR)
816 AC_SUBST(ANDROID_API_LEVEL)
817 AC_SUBST(ANDROID_APP_ABI)
818 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
819 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
820 AC_SUBST(ANDROID_TOOLCHAIN)
822 dnl ===================================================================
823 dnl --with-android-sdk
824 dnl ===================================================================
825 ANDROID_SDK_DIR=
826 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
827     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
829 if test -n "$with_android_sdk"; then
830     eval ANDROID_SDK_DIR=$with_android_sdk
831     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
833 AC_SUBST(ANDROID_SDK_DIR)
835 AC_ARG_ENABLE([android-lok],
836     AS_HELP_STRING([--enable-android-lok],
837         [The Android app from the android/ subdir needs several tweaks all
838          over the place that break the LOK when used in the Online-based
839          Android app.  This switch indicates that the intent of this build is
840          actually the Online-based, non-modified LOK.])
842 ENABLE_ANDROID_LOK=
843 if test -n "$ANDROID_NDK_DIR" ; then
844     if test "$enable_android_lok" = yes; then
845         ENABLE_ANDROID_LOK=TRUE
846         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
847         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
848     else
849         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
850     fi
852 AC_SUBST([ENABLE_ANDROID_LOK])
854 libo_FUZZ_ARG_ENABLE([android-editing],
855     AS_HELP_STRING([--enable-android-editing],
856         [Enable the experimental editing feature on Android.])
858 ENABLE_ANDROID_EDITING=
859 if test "$enable_android_editing" = yes; then
860     ENABLE_ANDROID_EDITING=TRUE
862 AC_SUBST([ENABLE_ANDROID_EDITING])
864 disable_database_connectivity_dependencies()
866     enable_evolution2=no
867     enable_firebird_sdbc=no
868     enable_mariadb_sdbc=no
869     enable_postgresql_sdbc=no
870     enable_report_builder=no
873 # ===================================================================
875 # Start initial platform setup
877 # The using_* variables reflect platform support and should not be
878 # changed after the "End initial platform setup" block.
879 # This is also true for most test_* variables.
880 # ===================================================================
881 build_crypto=yes
882 test_clucene=no
883 test_gdb_index=no
884 test_openldap=yes
885 test_split_debug=no
886 test_webdav=yes
887 usable_dlapi=yes
889 # There is currently just iOS not using salplug, so this explicitly enables it.
890 # must: using_freetype_fontconfig
891 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
892 # must: using_x11
894 # Default values, as such probably valid just for Linux, set
895 # differently below just for Mac OSX, but at least better than
896 # hardcoding these as we used to do. Much of this is duplicated also
897 # in solenv for old build system and for gbuild, ideally we should
898 # perhaps define stuff like this only here in configure.ac?
900 LINKFLAGSSHL="-shared"
901 PICSWITCH="-fpic"
902 DLLPOST=".so"
904 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
906 INSTROOTBASESUFFIX=
907 INSTROOTCONTENTSUFFIX=
908 SDKDIRNAME=sdk
910 HOST_PLATFORM="$host"
912 host_cpu_for_clang="$host_cpu"
914 case "$host_os" in
916 solaris*)
917     using_freetype_fontconfig=yes
918     using_x11=yes
919     build_skia=yes
920     _os=SunOS
922     dnl ===========================================================
923     dnl Check whether we're using Solaris 10 - SPARC or Intel.
924     dnl ===========================================================
925     AC_MSG_CHECKING([the Solaris operating system release])
926     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
927     if test "$_os_release" -lt "10"; then
928         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
929     else
930         AC_MSG_RESULT([ok ($_os_release)])
931     fi
933     dnl Check whether we're using a SPARC or i386 processor
934     AC_MSG_CHECKING([the processor type])
935     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
936         AC_MSG_RESULT([ok ($host_cpu)])
937     else
938         AC_MSG_ERROR([only SPARC and i386 processors are supported])
939     fi
940     ;;
942 linux-gnu*|k*bsd*-gnu*|linux-musl*)
943     using_freetype_fontconfig=yes
944     using_x11=yes
945     build_skia=yes
946     test_gdb_index=yes
947     test_split_debug=yes
948     if test "$enable_fuzzers" = yes; then
949         test_system_freetype=no
950     fi
951     _os=Linux
952     ;;
954 gnu)
955     using_freetype_fontconfig=yes
956     using_x11=no
957     _os=GNU
958      ;;
960 cygwin*|wsl*)
961     # When building on Windows normally with MSVC under Cygwin,
962     # configure thinks that the host platform (the platform the
963     # built code will run on) is Cygwin, even if it obviously is
964     # Windows, which in Autoconf terminology is called
965     # "mingw32". (Which is misleading as MinGW is the name of the
966     # tool-chain, not an operating system.)
968     # Somewhat confusing, yes. But this configure script doesn't
969     # look at $host etc that much, it mostly uses its own $_os
970     # variable, set here in this case statement.
972     using_freetype_fontconfig=no
973     using_x11=no
974     test_unix_dlapi=no
975     test_openldap=no
976     enable_pagein=no
977     build_skia=yes
978     _os=WINNT
980     DLLPOST=".dll"
981     LINKFLAGSNOUNDEFS=
983     if test "$host_cpu" = "aarch64"; then
984         build_skia=no
985         enable_gpgmepp=no
986         enable_coinmp=no
987         enable_firebird_sdbc=no
988     fi
989     ;;
991 darwin*) # macOS
992     using_freetype_fontconfig=no
993     using_x11=no
994     build_skia=yes
995     enable_pagein=no
996     if test -n "$LODE_HOME" ; then
997         mac_sanitize_path
998         AC_MSG_NOTICE([sanitized the PATH to $PATH])
999     fi
1000     _os=Darwin
1001     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
1002     INSTROOTCONTENTSUFFIX=/Contents
1003     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
1004     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1005     LINKFLAGSSHL="-dynamiclib -single_module"
1007     # -fPIC is default
1008     PICSWITCH=""
1010     DLLPOST=".dylib"
1012     # -undefined error is the default
1013     LINKFLAGSNOUNDEFS=""
1014     case "$host_cpu" in
1015     aarch64|arm64)
1016         # Apple's Clang uses "arm64"
1017         host_cpu_for_clang=arm64
1018     esac
1021 ios*) # iOS
1022     using_freetype_fontconfig=no
1023     using_x11=no
1024     build_crypto=no
1025     test_libcmis=no
1026     test_openldap=no
1027     test_webdav=no
1028     if test -n "$LODE_HOME" ; then
1029         mac_sanitize_path
1030         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1031     fi
1032     enable_gpgmepp=no
1033     _os=iOS
1034     enable_mpl_subset=yes
1035     enable_lotuswordpro=no
1036     disable_database_connectivity_dependencies
1037     enable_coinmp=no
1038     enable_lpsolve=no
1039     enable_extension_integration=no
1040     enable_xmlhelp=no
1041     with_ppds=no
1042     if test "$enable_ios_simulator" = "yes"; then
1043         host=x86_64-apple-darwin
1044     fi
1045     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1046     LINKFLAGSSHL="-dynamiclib -single_module"
1048     # -fPIC is default
1049     PICSWITCH=""
1051     DLLPOST=".dylib"
1053     # -undefined error is the default
1054     LINKFLAGSNOUNDEFS=""
1056     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1057     # part, so use aarch64-apple-darwin for now.
1058     HOST_PLATFORM=aarch64-apple-darwin
1060     # Apple's Clang uses "arm64"
1061     host_cpu_for_clang=arm64
1064 freebsd*)
1065     using_freetype_fontconfig=yes
1066     using_x11=yes
1067     build_skia=yes
1068     AC_MSG_CHECKING([the FreeBSD operating system release])
1069     if test -n "$with_os_version"; then
1070         OSVERSION="$with_os_version"
1071     else
1072         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1073     fi
1074     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1075     AC_MSG_CHECKING([which thread library to use])
1076     if test "$OSVERSION" -lt "500016"; then
1077         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1078         PTHREAD_LIBS="-pthread"
1079     elif test "$OSVERSION" -lt "502102"; then
1080         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1081         PTHREAD_LIBS="-lc_r"
1082     else
1083         PTHREAD_CFLAGS=""
1084         PTHREAD_LIBS="-pthread"
1085     fi
1086     AC_MSG_RESULT([$PTHREAD_LIBS])
1087     _os=FreeBSD
1088     ;;
1090 *netbsd*)
1091     using_freetype_fontconfig=yes
1092     using_x11=yes
1093     test_gtk3_kde5=no
1094     build_skia=yes
1095     PTHREAD_LIBS="-pthread -lpthread"
1096     _os=NetBSD
1097     ;;
1099 openbsd*)
1100     using_freetype_fontconfig=yes
1101     using_x11=yes
1102     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1103     PTHREAD_LIBS="-pthread"
1104     _os=OpenBSD
1105     ;;
1107 dragonfly*)
1108     using_freetype_fontconfig=yes
1109     using_x11=yes
1110     build_skia=yes
1111     PTHREAD_LIBS="-pthread"
1112     _os=DragonFly
1113     ;;
1115 linux-android*)
1116     # API exists, but seems not really usable since Android 7 AFAIK
1117     usable_dlapi=no
1118     using_freetype_fontconfig=yes
1119     using_headless_plugin=no
1120     using_x11=no
1121     build_crypto=no
1122     test_openldap=no
1123     test_system_freetype=no
1124     test_webdav=no
1125     disable_database_connectivity_dependencies
1126     enable_lotuswordpro=no
1127     enable_mpl_subset=yes
1128     enable_cairo_canvas=no
1129     enable_coinmp=yes
1130     enable_lpsolve=no
1131     enable_odk=no
1132     enable_python=no
1133     enable_xmlhelp=no
1134     _os=Android
1135     ;;
1137 haiku*)
1138     using_freetype_fontconfig=yes
1139     using_x11=no
1140     test_gtk3=no
1141     test_gtk3_kde5=no
1142     test_kf5=yes
1143     enable_odk=no
1144     enable_coinmp=no
1145     enable_pdfium=no
1146     enable_sdremote=no
1147     enable_postgresql_sdbc=no
1148     enable_firebird_sdbc=no
1149     _os=Haiku
1150     ;;
1152 emscripten)
1153     # API currently just exists in headers, not code
1154     usable_dlapi=no
1155     using_freetype_fontconfig=yes
1156     using_x11=yes
1157     test_openldap=no
1158     test_qt5=yes
1159     test_split_debug=yes
1160     test_system_freetype=no
1161     enable_compiler_plugins=no
1162     enable_customtarget_components=yes
1163     enable_split_debug=yes
1164     enable_wasm_strip=yes
1165     with_system_zlib=no
1166     with_theme="colibre"
1167     _os=Emscripten
1168     ;;
1171     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1172     ;;
1173 esac
1175 AC_SUBST(HOST_PLATFORM)
1177 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1178     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1181 # Set defaults, if not set by platform
1182 test "${test_cups+set}" = set || test_cups="$using_x11"
1183 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1184 test "${test_gen+set}" = set || test_gen="$using_x11"
1185 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1186 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1187 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1188 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1189 # don't handle test_qt5, so it can disable test_kf5 later
1190 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1191 test "${test_randr+set}" = set || test_randr="$using_x11"
1192 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1193 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1195 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1196 # Make sure fontconfig and freetype test both either system or not
1197 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1198 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1200 # convenience / platform overriding "fixes"
1201 # Don't sort!
1202 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1203 test "$test_kf5" = yes && test_qt5=yes
1204 test "$test_gtk3" != yes && enable_gtk3=no
1205 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1206 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1207 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1209 # Keep in sync with the above $using_x11 depending test default list
1210 disable_x11_tests()
1212     test_cups=no
1213     test_dbus=no
1214     test_gen=no
1215     test_gstreamer_1_0=no
1216     test_gtk3_kde5=no
1217     test_gtk3=no
1218     test_gtk4=no
1219     test_kf5=no
1220     test_qt5=no
1221     test_qt6=no
1222     test_randr=no
1223     test_xrender=no
1226 test "$using_x11" = yes && USING_X11=TRUE
1228 if test "$using_freetype_fontconfig" = yes; then
1229     AC_DEFINE(USE_HEADLESS_CODE)
1230     USE_HEADLESS_CODE=TRUE
1231     if test "$using_headless_plugin" = yes; then
1232         AC_DEFINE(ENABLE_HEADLESS)
1233         ENABLE_HEADLESS=TRUE
1234     fi
1235 else
1236     test_fontconfig=no
1237     test_freetype=no
1240 AC_SUBST(ENABLE_HEADLESS)
1241 AC_SUBST(USE_HEADLESS_CODE)
1243 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1244 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1245 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1246 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1248 # ===================================================================
1250 # End initial platform setup
1252 # ===================================================================
1254 if test "$_os" = "Android" ; then
1255     # Verify that the NDK and SDK options are proper
1256     if test -z "$with_android_ndk"; then
1257         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1258     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1259         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1260     fi
1262     if test -z "$ANDROID_SDK_DIR"; then
1263         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1264     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1265         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1266     fi
1269 AC_SUBST(SDKDIRNAME)
1271 AC_SUBST(PTHREAD_CFLAGS)
1272 AC_SUBST(PTHREAD_LIBS)
1274 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1275 # By default use the ones specified by our build system,
1276 # but explicit override is possible.
1277 AC_MSG_CHECKING(for explicit AFLAGS)
1278 if test -n "$AFLAGS"; then
1279     AC_MSG_RESULT([$AFLAGS])
1280     x_AFLAGS=
1281 else
1282     AC_MSG_RESULT(no)
1283     x_AFLAGS=[\#]
1285 AC_MSG_CHECKING(for explicit CFLAGS)
1286 if test -n "$CFLAGS"; then
1287     AC_MSG_RESULT([$CFLAGS])
1288     x_CFLAGS=
1289 else
1290     AC_MSG_RESULT(no)
1291     x_CFLAGS=[\#]
1293 AC_MSG_CHECKING(for explicit CXXFLAGS)
1294 if test -n "$CXXFLAGS"; then
1295     AC_MSG_RESULT([$CXXFLAGS])
1296     x_CXXFLAGS=
1297 else
1298     AC_MSG_RESULT(no)
1299     x_CXXFLAGS=[\#]
1301 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1302 if test -n "$OBJCFLAGS"; then
1303     AC_MSG_RESULT([$OBJCFLAGS])
1304     x_OBJCFLAGS=
1305 else
1306     AC_MSG_RESULT(no)
1307     x_OBJCFLAGS=[\#]
1309 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1310 if test -n "$OBJCXXFLAGS"; then
1311     AC_MSG_RESULT([$OBJCXXFLAGS])
1312     x_OBJCXXFLAGS=
1313 else
1314     AC_MSG_RESULT(no)
1315     x_OBJCXXFLAGS=[\#]
1317 AC_MSG_CHECKING(for explicit LDFLAGS)
1318 if test -n "$LDFLAGS"; then
1319     AC_MSG_RESULT([$LDFLAGS])
1320     x_LDFLAGS=
1321 else
1322     AC_MSG_RESULT(no)
1323     x_LDFLAGS=[\#]
1325 AC_SUBST(AFLAGS)
1326 AC_SUBST(CFLAGS)
1327 AC_SUBST(CXXFLAGS)
1328 AC_SUBST(OBJCFLAGS)
1329 AC_SUBST(OBJCXXFLAGS)
1330 AC_SUBST(LDFLAGS)
1331 AC_SUBST(x_AFLAGS)
1332 AC_SUBST(x_CFLAGS)
1333 AC_SUBST(x_CXXFLAGS)
1334 AC_SUBST(x_OBJCFLAGS)
1335 AC_SUBST(x_OBJCXXFLAGS)
1336 AC_SUBST(x_LDFLAGS)
1338 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1339 my_original_CFLAGS=$CFLAGS
1340 my_original_CXXFLAGS=$CXXFLAGS
1341 my_original_CPPFLAGS=$CPPFLAGS
1343 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1344 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1345 dnl AC_PROG_CC internally.
1346 if test "$_os" != "WINNT"; then
1347     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1348     save_CFLAGS=$CFLAGS
1349     AC_PROG_CC
1350     CFLAGS=$save_CFLAGS
1351     if test -z "$CC_BASE"; then
1352         CC_BASE=`first_arg_basename "$CC"`
1353     fi
1356 if test "$_os" != "WINNT"; then
1357     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1358 else
1359     ENDIANNESS=little
1361 AC_SUBST(ENDIANNESS)
1363 if test "$usable_dlapi" != no; then
1364     AC_DEFINE([HAVE_DLAPI])
1365     if test "$test_unix_dlapi" != no; then
1366         save_LIBS="$LIBS"
1367         AC_SEARCH_LIBS([dlsym], [dl],
1368             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1369             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1370         LIBS="$save_LIBS"
1371         AC_DEFINE([HAVE_UNIX_DLAPI])
1372     fi
1374 AC_SUBST(UNIX_DLAPI_LIBS)
1376 # Check for a (GNU) backtrace implementation
1377 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1378 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1379 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1380     save_LIBS="$LIBS"
1381     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1382         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1383         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1384     LIBS="$save_LIBS"
1386 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1387     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1390 dnl ===================================================================
1391 dnl Sanity checks for Emscripten SDK setup
1392 dnl ===================================================================
1394 EMSCRIPTEN_MIN_MAJOR=2
1395 EMSCRIPTEN_MIN_MINOR=0
1396 EMSCRIPTEN_MIN_TINY=31
1397 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1399 if test "$_os" = "Emscripten"; then
1400     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1401     AS_IF([test -z "$EMSDK"],
1402           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1403     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1404     if test -f "$EMSCRIPTEN_VERSION_H"; then
1405         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1406         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1407         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1408     else
1409         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1410         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1411         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1412         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1413     fi
1415     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1417     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1418     if test $? -eq 0; then
1419         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1420     else
1421         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1422     fi
1424     EMSCRIPTEN_ERROR=0
1425     if ! which emconfigure >/dev/null 2>&1; then
1426         AC_MSG_WARN([emconfigure must be in your \$PATH])
1427         EMSCRIPTEN_ERROR=1
1428     fi
1429     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1430         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1431         EMSCRIPTEN_ERROR=1
1432     fi
1433     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1434     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1435         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1436         EMSCRIPTEN_ERROR=1
1437     fi
1438     if test $EMSCRIPTEN_ERROR -ne 0; then
1439         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1440     fi
1442 AC_SUBST(EMSDK_FILE_PACKAGER)
1444 ###############################################################################
1445 # Extensions switches --enable/--disable
1446 ###############################################################################
1447 # By default these should be enabled unless having extra dependencies.
1448 # If there is extra dependency over configure options then the enable should
1449 # be automagic based on whether the requiring feature is enabled or not.
1450 # All this options change anything only with --enable-extension-integration.
1452 # The name of this option and its help string makes it sound as if
1453 # extensions are built anyway, just not integrated in the installer,
1454 # if you use --disable-extension-integration. Is that really the
1455 # case?
1457 AC_ARG_ENABLE(ios-simulator,
1458     AS_HELP_STRING([--enable-ios-simulator],
1459         [build for iOS simulator])
1462 libo_FUZZ_ARG_ENABLE(extension-integration,
1463     AS_HELP_STRING([--disable-extension-integration],
1464         [Disable integration of the built extensions in the installer of the
1465          product. Use this switch to disable the integration.])
1468 AC_ARG_ENABLE(avmedia,
1469     AS_HELP_STRING([--disable-avmedia],
1470         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1471 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1473 AC_ARG_ENABLE(database-connectivity,
1474     AS_HELP_STRING([--disable-database-connectivity],
1475         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1478 # This doesn't mean not building (or "integrating") extensions
1479 # (although it probably should; i.e. it should imply
1480 # --disable-extension-integration I guess), it means not supporting
1481 # any extension mechanism at all
1482 libo_FUZZ_ARG_ENABLE(extensions,
1483     AS_HELP_STRING([--disable-extensions],
1484         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1487 AC_ARG_ENABLE(scripting,
1488     AS_HELP_STRING([--disable-scripting],
1489         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1490 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1492 # This is mainly for Android and iOS, but could potentially be used in some
1493 # special case otherwise, too, so factored out as a separate setting
1495 AC_ARG_ENABLE(dynamic-loading,
1496     AS_HELP_STRING([--disable-dynamic-loading],
1497         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1500 libo_FUZZ_ARG_ENABLE(report-builder,
1501     AS_HELP_STRING([--disable-report-builder],
1502         [Disable the Report Builder.])
1505 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1506     AS_HELP_STRING([--enable-ext-wiki-publisher],
1507         [Enable the Wiki Publisher extension.])
1510 libo_FUZZ_ARG_ENABLE(lpsolve,
1511     AS_HELP_STRING([--disable-lpsolve],
1512         [Disable compilation of the lp solve solver ])
1514 libo_FUZZ_ARG_ENABLE(coinmp,
1515     AS_HELP_STRING([--disable-coinmp],
1516         [Disable compilation of the CoinMP solver ])
1519 libo_FUZZ_ARG_ENABLE(pdfimport,
1520     AS_HELP_STRING([--disable-pdfimport],
1521         [Disable building the PDF import feature.])
1524 libo_FUZZ_ARG_ENABLE(pdfium,
1525     AS_HELP_STRING([--disable-pdfium],
1526         [Disable building PDFium. Results in unsecure PDF signature verification.])
1529 libo_FUZZ_ARG_ENABLE(skia,
1530     AS_HELP_STRING([--disable-skia],
1531         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1534 ###############################################################################
1536 dnl ---------- *** ----------
1538 libo_FUZZ_ARG_ENABLE(mergelibs,
1539     AS_HELP_STRING([--enable-mergelibs],
1540         [Merge several of the smaller libraries into one big, "merged", one.])
1543 libo_FUZZ_ARG_ENABLE(breakpad,
1544     AS_HELP_STRING([--enable-breakpad],
1545         [Enables breakpad for crash reporting.])
1548 libo_FUZZ_ARG_ENABLE(crashdump,
1549     AS_HELP_STRING([--disable-crashdump],
1550         [Disable dump.ini and dump-file, when --enable-breakpad])
1553 AC_ARG_ENABLE(fetch-external,
1554     AS_HELP_STRING([--disable-fetch-external],
1555         [Disables fetching external tarballs from web sources.])
1558 AC_ARG_ENABLE(fuzzers,
1559     AS_HELP_STRING([--enable-fuzzers],
1560         [Enables building libfuzzer targets for fuzz testing.])
1563 libo_FUZZ_ARG_ENABLE(pch,
1564     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1565         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1566          Using 'system' will include only external headers, 'base' will add also headers
1567          from base modules, 'normal' will also add all headers except from the module built,
1568          'full' will use all suitable headers even from a module itself.])
1571 libo_FUZZ_ARG_ENABLE(epm,
1572     AS_HELP_STRING([--enable-epm],
1573         [LibreOffice includes self-packaging code, that requires epm, however epm is
1574          useless for large scale package building.])
1577 libo_FUZZ_ARG_ENABLE(odk,
1578     AS_HELP_STRING([--enable-odk],
1579         [Enable building the Office Development Kit, the part that extensions need to build against])
1582 AC_ARG_ENABLE(mpl-subset,
1583     AS_HELP_STRING([--enable-mpl-subset],
1584         [Don't compile any pieces which are not MPL or more liberally licensed])
1587 libo_FUZZ_ARG_ENABLE(evolution2,
1588     AS_HELP_STRING([--enable-evolution2],
1589         [Allows the built-in evolution 2 addressbook connectivity build to be
1590          enabled.])
1593 AC_ARG_ENABLE(avahi,
1594     AS_HELP_STRING([--enable-avahi],
1595         [Determines whether to use Avahi to advertise Impress to remote controls.])
1598 libo_FUZZ_ARG_ENABLE(werror,
1599     AS_HELP_STRING([--enable-werror],
1600         [Turn warnings to errors. (Has no effect in modules where the treating
1601          of warnings as errors is disabled explicitly.)]),
1604 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1605     AS_HELP_STRING([--enable-assert-always-abort],
1606         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1609 libo_FUZZ_ARG_ENABLE(dbgutil,
1610     AS_HELP_STRING([--enable-dbgutil],
1611         [Provide debugging support from --enable-debug and include additional debugging
1612          utilities such as object counting or more expensive checks.
1613          This is the recommended option for developers.
1614          Note that this makes the build ABI incompatible, it is not possible to mix object
1615          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1617 libo_FUZZ_ARG_ENABLE(debug,
1618     AS_HELP_STRING([--enable-debug],
1619         [Include debugging information, disable compiler optimization and inlining plus
1620          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1622 libo_FUZZ_ARG_ENABLE(split-debug,
1623     AS_HELP_STRING([--disable-split-debug],
1624         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1625          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1627 libo_FUZZ_ARG_ENABLE(gdb-index,
1628     AS_HELP_STRING([--disable-gdb-index],
1629         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1630          The feature requires a linker that supports the --gdb-index option.]))
1632 libo_FUZZ_ARG_ENABLE(sal-log,
1633     AS_HELP_STRING([--enable-sal-log],
1634         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1636 libo_FUZZ_ARG_ENABLE(symbols,
1637     AS_HELP_STRING([--enable-symbols],
1638         [Generate debug information.
1639          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1640          otherwise. It is possible to explicitly specify gbuild build targets
1641          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1642          everything in the directory; there is no ordering, more specific overrides
1643          more general, and disabling takes precedence).
1644          Example: --enable-symbols="all -sw/ -Library_sc".]))
1646 libo_FUZZ_ARG_ENABLE(optimized,
1647     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1648         [Whether to compile with optimization flags.
1649          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1650          otherwise. Using 'debug' will try to use only optimizations that should
1651          not interfere with debugging. For Emscripten we default to optimized (-O1)
1652          debug build, as otherwise binaries become too large.]))
1654 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1655     AS_HELP_STRING([--disable-runtime-optimizations],
1656         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1657          JVM JIT) that are known to interact badly with certain dynamic analysis
1658          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1659          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1660          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1662 AC_ARG_WITH(valgrind,
1663     AS_HELP_STRING([--with-valgrind],
1664         [Make availability of Valgrind headers a hard requirement.]))
1666 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1667     AS_HELP_STRING([--enable-compiler-plugins],
1668         [Enable compiler plugins that will perform additional checks during
1669          building. Enabled automatically by --enable-dbgutil.
1670          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1671 COMPILER_PLUGINS_DEBUG=
1672 if test "$enable_compiler_plugins" = debug; then
1673     enable_compiler_plugins=yes
1674     COMPILER_PLUGINS_DEBUG=TRUE
1677 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1678     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1679         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1680          relevant in the --disable-compiler-plugins case.]))
1682 libo_FUZZ_ARG_ENABLE(ooenv,
1683     AS_HELP_STRING([--enable-ooenv],
1684         [Enable ooenv for the instdir installation.]))
1686 AC_ARG_ENABLE(lto,
1687     AS_HELP_STRING([--enable-lto],
1688         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1689          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1690          linker.)]))
1692 AC_ARG_ENABLE(python,
1693     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1694         [Enables or disables Python support at run-time.
1695          Also specifies what Python to use at build-time.
1696          'fully-internal' even forces the internal version for uses of Python
1697          during the build.
1698          On macOS the only choices are
1699          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1700          ]))
1702 libo_FUZZ_ARG_ENABLE(gtk3,
1703     AS_HELP_STRING([--disable-gtk3],
1704         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1705 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1707 AC_ARG_ENABLE(gtk4,
1708     AS_HELP_STRING([--enable-gtk4],
1709         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1711 AC_ARG_ENABLE(introspection,
1712     AS_HELP_STRING([--enable-introspection],
1713         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1714          Linux distributions.)]))
1716 AC_ARG_ENABLE(split-app-modules,
1717     AS_HELP_STRING([--enable-split-app-modules],
1718         [Split file lists for app modules, e.g. base, calc.
1719          Has effect only with make distro-pack-install]),
1722 AC_ARG_ENABLE(split-opt-features,
1723     AS_HELP_STRING([--enable-split-opt-features],
1724         [Split file lists for some optional features, e.g. pyuno, testtool.
1725          Has effect only with make distro-pack-install]),
1728 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1729     AS_HELP_STRING([--disable-cairo-canvas],
1730         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1733 libo_FUZZ_ARG_ENABLE(dbus,
1734     AS_HELP_STRING([--disable-dbus],
1735         [Determines whether to enable features that depend on dbus.
1736          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1737 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1739 libo_FUZZ_ARG_ENABLE(sdremote,
1740     AS_HELP_STRING([--disable-sdremote],
1741         [Determines whether to enable Impress remote control (i.e. the server component).]),
1742 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1744 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1745     AS_HELP_STRING([--disable-sdremote-bluetooth],
1746         [Determines whether to build sdremote with bluetooth support.
1747          Requires dbus on Linux.]))
1749 libo_FUZZ_ARG_ENABLE(gio,
1750     AS_HELP_STRING([--disable-gio],
1751         [Determines whether to use the GIO support.]),
1752 ,test "${enable_gio+set}" = set || enable_gio=yes)
1754 AC_ARG_ENABLE(qt5,
1755     AS_HELP_STRING([--enable-qt5],
1756         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1757          available.]),
1760 AC_ARG_ENABLE(qt6,
1761     AS_HELP_STRING([--enable-qt6],
1762         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1763          available.]),
1766 AC_ARG_ENABLE(kf5,
1767     AS_HELP_STRING([--enable-kf5],
1768         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1769          KF5 are available.]),
1772 AC_ARG_ENABLE(gtk3_kde5,
1773     AS_HELP_STRING([--enable-gtk3-kde5],
1774         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1775          platforms where Gtk3, Qt5 and Plasma is available.]),
1778 AC_ARG_ENABLE(gen,
1779     AS_HELP_STRING([--enable-gen],
1780         [To select the gen backend in case of --disable-dynamic-loading.
1781          Per default auto-enabled when X11 is used.]),
1782 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1784 AC_ARG_ENABLE(gui,
1785     AS_HELP_STRING([--disable-gui],
1786         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1787 ,enable_gui=yes)
1789 libo_FUZZ_ARG_ENABLE(randr,
1790     AS_HELP_STRING([--disable-randr],
1791         [Disable RandR support in the vcl project.]),
1792 ,test "${enable_randr+set}" = set || enable_randr=yes)
1794 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1795     AS_HELP_STRING([--disable-gstreamer-1-0],
1796         [Disable building with the gstreamer 1.0 avmedia backend.]),
1797 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1799 libo_FUZZ_ARG_ENABLE([eot],
1800     [AS_HELP_STRING([--enable-eot],
1801         [Enable support for Embedded OpenType fonts.])],
1802 ,test "${enable_eot+set}" = set || enable_eot=no)
1804 libo_FUZZ_ARG_ENABLE(cve-tests,
1805     AS_HELP_STRING([--disable-cve-tests],
1806         [Prevent CVE tests to be executed]),
1809 AC_ARG_ENABLE(build-opensymbol,
1810     AS_HELP_STRING([--enable-build-opensymbol],
1811         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1812          fontforge installed.]),
1815 AC_ARG_ENABLE(dependency-tracking,
1816     AS_HELP_STRING([--enable-dependency-tracking],
1817         [Do not reject slow dependency extractors.])[
1818   --disable-dependency-tracking
1819                           Disables generation of dependency information.
1820                           Speed up one-time builds.],
1823 AC_ARG_ENABLE(icecream,
1824     AS_HELP_STRING([--enable-icecream],
1825         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1826          It defaults to /opt/icecream for the location of the icecream gcc/g++
1827          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1830 AC_ARG_ENABLE(ld,
1831     AS_HELP_STRING([--enable-ld=<linker>],
1832         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1833          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1834          If <linker> contains any ':', the part before the first ':' is used as the value of
1835          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1836          needed for Clang 12).]),
1839 libo_FUZZ_ARG_ENABLE(cups,
1840     AS_HELP_STRING([--disable-cups],
1841         [Do not build cups support.])
1844 AC_ARG_ENABLE(ccache,
1845     AS_HELP_STRING([--disable-ccache],
1846         [Do not try to use ccache automatically.
1847          By default we will try to detect if ccache is available; in that case if
1848          CC/CXX are not yet set, and --enable-icecream is not given, we
1849          attempt to use ccache. --disable-ccache disables ccache completely.
1850          Additionally ccache's depend mode is enabled if possible,
1851          use --enable-ccache=nodepend to enable ccache without depend mode.
1855 AC_ARG_ENABLE(z7-debug,
1856     AS_HELP_STRING([--enable-z7-debug],
1857         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1858          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1859          Enabled by default if ccache is detected.]))
1861 libo_FUZZ_ARG_ENABLE(online-update,
1862     AS_HELP_STRING([--enable-online-update],
1863         [Enable the online update service that will check for new versions of
1864          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1865          If the value is "mar", the experimental Mozilla-like update will be
1866          enabled instead of the traditional update mechanism.]),
1869 AC_ARG_WITH(update-config,
1870     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1871                    [Path to the update config ini file]))
1873 libo_FUZZ_ARG_ENABLE(extension-update,
1874     AS_HELP_STRING([--disable-extension-update],
1875         [Disable possibility to update installed extensions.]),
1878 libo_FUZZ_ARG_ENABLE(release-build,
1879     AS_HELP_STRING([--enable-release-build],
1880         [Enable release build. Note that the "release build" choice is orthogonal to
1881          whether symbols are present, debug info is generated, or optimization
1882          is done.
1883          See https://wiki.documentfoundation.org/Development/DevBuild]),
1886 AC_ARG_ENABLE(windows-build-signing,
1887     AS_HELP_STRING([--enable-windows-build-signing],
1888         [Enable signing of windows binaries (*.exe, *.dll)]),
1891 AC_ARG_ENABLE(silent-msi,
1892     AS_HELP_STRING([--enable-silent-msi],
1893         [Enable MSI with LIMITUI=1 (silent install).]),
1896 AC_ARG_ENABLE(macosx-code-signing,
1897     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1898         [Sign executables, dylibs, frameworks and the app bundle. If you
1899          don't provide an identity the first suitable certificate
1900          in your keychain is used.]),
1903 AC_ARG_ENABLE(macosx-package-signing,
1904     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1905         [Create a .pkg suitable for uploading to the Mac App Store and sign
1906          it. If you don't provide an identity the first suitable certificate
1907          in your keychain is used.]),
1910 AC_ARG_ENABLE(macosx-sandbox,
1911     AS_HELP_STRING([--enable-macosx-sandbox],
1912         [Make the app bundle run in a sandbox. Requires code signing.
1913          Is required by apps distributed in the Mac App Store, and implies
1914          adherence to App Store rules.]),
1917 AC_ARG_WITH(macosx-bundle-identifier,
1918     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1919         [Define the macOS bundle identifier. Default is the somewhat weird
1920          org.libreoffice.script ("script", huh?).]),
1921 ,with_macosx_bundle_identifier=org.libreoffice.script)
1923 AC_ARG_WITH(macosx-provisioning-profile,
1924     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1925         [Specify the path to a provisioning profile to use]),
1928 AC_ARG_WITH(product-name,
1929     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1930         [Define the product name. Default is AC_PACKAGE_NAME.]),
1931 ,with_product_name=$PRODUCTNAME)
1933 libo_FUZZ_ARG_ENABLE(community-flavor,
1934     AS_HELP_STRING([--disable-community-flavor],
1935         [Disable the Community branding.]),
1938 AC_ARG_WITH(package-version,
1939     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1940         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1943 libo_FUZZ_ARG_ENABLE(readonly-installset,
1944     AS_HELP_STRING([--enable-readonly-installset],
1945         [Prevents any attempts by LibreOffice to write into its installation. That means
1946          at least that no "system-wide" extensions can be added. Partly experimental work in
1947          progress, probably not fully implemented. Always enabled for macOS.]),
1950 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1951     AS_HELP_STRING([--disable-mariadb-sdbc],
1952         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1955 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1956     AS_HELP_STRING([--disable-postgresql-sdbc],
1957         [Disable the build of the PostgreSQL-SDBC driver.])
1960 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1961     AS_HELP_STRING([--disable-lotuswordpro],
1962         [Disable the build of the Lotus Word Pro filter.]),
1963 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1965 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1966     AS_HELP_STRING([--disable-firebird-sdbc],
1967         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1968 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1970 AC_ARG_ENABLE(bogus-pkg-config,
1971     AS_HELP_STRING([--enable-bogus-pkg-config],
1972         [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.]),
1975 AC_ARG_ENABLE(openssl,
1976     AS_HELP_STRING([--disable-openssl],
1977         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1978          components will use NSS. Work in progress,
1979          use only if you are hacking on it.]),
1980 ,enable_openssl=yes)
1982 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1983     AS_HELP_STRING([--enable-cipher-openssl-backend],
1984         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1985          Requires --enable-openssl.]))
1987 AC_ARG_ENABLE(nss,
1988     AS_HELP_STRING([--disable-nss],
1989         [Disable using NSS. If disabled,
1990          components will use openssl. Work in progress,
1991          use only if you are hacking on it.]),
1992 ,enable_nss=yes)
1994 AC_ARG_ENABLE(library-bin-tar,
1995     AS_HELP_STRING([--enable-library-bin-tar],
1996         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1997         Some libraries can save their build result in a tarball
1998         stored in TARFILE_LOCATION. That binary tarball is
1999         uniquely identified by the source tarball,
2000         the content of the config_host.mk file and the content
2001         of the top-level directory in core for that library
2002         If this option is enabled, then if such a tarfile exist, it will be untarred
2003         instead of the source tarfile, and the build step will be skipped for that
2004         library.
2005         If a proper tarfile does not exist, then the normal source-based
2006         build is done for that library and a proper binary tarfile is created
2007         for the next time.]),
2010 AC_ARG_ENABLE(dconf,
2011     AS_HELP_STRING([--disable-dconf],
2012         [Disable the dconf configuration backend (enabled by default where
2013          available).]))
2015 libo_FUZZ_ARG_ENABLE(formula-logger,
2016     AS_HELP_STRING(
2017         [--enable-formula-logger],
2018         [Enable formula logger for logging formula calculation flow in Calc.]
2019     )
2022 AC_ARG_ENABLE(ldap,
2023     AS_HELP_STRING([--disable-ldap],
2024         [Disable LDAP support.]),
2025 ,enable_ldap=yes)
2027 AC_ARG_ENABLE(opencl,
2028     AS_HELP_STRING([--disable-opencl],
2029         [Disable OpenCL support.]),
2030 ,enable_opencl=yes)
2032 libo_FUZZ_ARG_ENABLE(librelogo,
2033     AS_HELP_STRING([--disable-librelogo],
2034         [Do not build LibreLogo.]),
2035 ,enable_librelogo=yes)
2037 AC_ARG_ENABLE(wasm-strip,
2038     AS_HELP_STRING([--enable-wasm-strip],
2039         [Strip the static build like for WASM/emscripten platform.]),
2042 AC_ARG_WITH(main-module,
2043     AS_HELP_STRING([--with-main-module=<writer/calc>],
2044         [Specify which main module to build for wasm.
2045         Default value is 'writer'.]),
2048 AC_ARG_ENABLE(wasm-exceptions,
2049     AS_HELP_STRING([--enable-wasm-exceptions],
2050         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2051         matter of fact, this is currently not finished by any implementation)
2052         (see https://webassembly.org/roadmap/ for the current state]),
2055 AC_ARG_ENABLE(xmlhelp,
2056     AS_HELP_STRING([--disable-xmlhelp],
2057         [Disable XML help support]),
2058 ,enable_xmlhelp=yes)
2060 AC_ARG_ENABLE(customtarget-components,
2061     AS_HELP_STRING([--enable-customtarget-components],
2062         [Generates the static UNO object constructor mapping from the build.]))
2064 AC_ARG_ENABLE(float_device_pixel,
2065     AS_HELP_STRING([--enable-float-device-pixel],
2066                    [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2069 dnl ===================================================================
2070 dnl Optional Packages (--with/without-)
2071 dnl ===================================================================
2073 AC_ARG_WITH(gcc-home,
2074     AS_HELP_STRING([--with-gcc-home],
2075         [Specify the location of gcc/g++ manually. This can be used in conjunction
2076          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2077          non-default path.]),
2080 AC_ARG_WITH(gnu-patch,
2081     AS_HELP_STRING([--with-gnu-patch],
2082         [Specify location of GNU patch on Solaris or FreeBSD.]),
2085 AC_ARG_WITH(build-platform-configure-options,
2086     AS_HELP_STRING([--with-build-platform-configure-options],
2087         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2090 AC_ARG_WITH(gnu-cp,
2091     AS_HELP_STRING([--with-gnu-cp],
2092         [Specify location of GNU cp on Solaris or FreeBSD.]),
2095 AC_ARG_WITH(external-tar,
2096     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2097         [Specify an absolute path of where to find (and store) tarfiles.]),
2098     TARFILE_LOCATION=$withval ,
2101 AC_ARG_WITH(referenced-git,
2102     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2103         [Specify another checkout directory to reference. This makes use of
2104                  git submodule update --reference, and saves a lot of diskspace
2105                  when having multiple trees side-by-side.]),
2106     GIT_REFERENCE_SRC=$withval ,
2109 AC_ARG_WITH(linked-git,
2110     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2111         [Specify a directory where the repositories of submodules are located.
2112          This uses a method similar to git-new-workdir to get submodules.]),
2113     GIT_LINK_SRC=$withval ,
2116 AC_ARG_WITH(galleries,
2117     AS_HELP_STRING([--with-galleries],
2118         [Specify how galleries should be built. It is possible either to
2119          build these internally from source ("build"),
2120          or to disable them ("no")]),
2123 AC_ARG_WITH(theme,
2124     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2125         [Choose which themes to include. By default those themes with an '*' are included.
2126          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2127          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2128          *elementary, *elementary_svg,
2129          *karasa_jaga, *karasa_jaga_svg,
2130          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2131          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2134 libo_FUZZ_ARG_WITH(helppack-integration,
2135     AS_HELP_STRING([--without-helppack-integration],
2136         [It will not integrate the helppacks to the installer
2137          of the product. Please use this switch to use the online help
2138          or separate help packages.]),
2141 libo_FUZZ_ARG_WITH(fonts,
2142     AS_HELP_STRING([--without-fonts],
2143         [LibreOffice includes some third-party fonts to provide a reliable basis for
2144          help content, templates, samples, etc. When these fonts are already
2145          known to be available on the system then you should use this option.]),
2148 AC_ARG_WITH(epm,
2149     AS_HELP_STRING([--with-epm],
2150         [Decides which epm to use. Default is to use the one from the system if
2151          one is built. When either this is not there or you say =internal epm
2152          will be built.]),
2155 AC_ARG_WITH(package-format,
2156     AS_HELP_STRING([--with-package-format],
2157         [Specify package format(s) for LibreOffice installation sets. The
2158          implicit --without-package-format leads to no installation sets being
2159          generated. Possible values: archive, bsd, deb, dmg,
2160          installed, msi, pkg, and rpm.
2161          Example: --with-package-format='deb rpm']),
2164 AC_ARG_WITH(tls,
2165     AS_HELP_STRING([--with-tls],
2166         [Decides which TLS/SSL and cryptographic implementations to use for
2167          LibreOffice's code. Default is to use NSS although OpenSSL is also
2168          possible. Notice that selecting NSS restricts the usage of OpenSSL
2169          in LO's code but selecting OpenSSL doesn't restrict by now the
2170          usage of NSS in LO's code. Possible values: openssl, nss.
2171          Example: --with-tls="nss"]),
2174 AC_ARG_WITH(system-libs,
2175     AS_HELP_STRING([--with-system-libs],
2176         [Use libraries already on system -- enables all --with-system-* flags.]),
2179 AC_ARG_WITH(system-bzip2,
2180     AS_HELP_STRING([--with-system-bzip2],
2181         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2182     [with_system_bzip2="$with_system_libs"])
2184 AC_ARG_WITH(system-headers,
2185     AS_HELP_STRING([--with-system-headers],
2186         [Use headers already on system -- enables all --with-system-* flags for
2187          external packages whose headers are the only entities used i.e.
2188          boost/odbc/sane-header(s).]),,
2189     [with_system_headers="$with_system_libs"])
2191 AC_ARG_WITH(system-jars,
2192     AS_HELP_STRING([--without-system-jars],
2193         [When building with --with-system-libs, also the needed jars are expected
2194          on the system. Use this to disable that]),,
2195     [with_system_jars="$with_system_libs"])
2197 AC_ARG_WITH(system-cairo,
2198     AS_HELP_STRING([--with-system-cairo],
2199         [Use cairo libraries already on system.  Happens automatically for
2200          (implicit) --enable-gtk3.]))
2202 AC_ARG_WITH(system-epoxy,
2203     AS_HELP_STRING([--with-system-epoxy],
2204         [Use epoxy libraries already on system.  Happens automatically for
2205          (implicit) --enable-gtk3.]),,
2206        [with_system_epoxy="$with_system_libs"])
2208 AC_ARG_WITH(myspell-dicts,
2209     AS_HELP_STRING([--with-myspell-dicts],
2210         [Adds myspell dictionaries to the LibreOffice installation set]),
2213 AC_ARG_WITH(system-dicts,
2214     AS_HELP_STRING([--without-system-dicts],
2215         [Do not use dictionaries from system paths.]),
2218 AC_ARG_WITH(external-dict-dir,
2219     AS_HELP_STRING([--with-external-dict-dir],
2220         [Specify external dictionary dir.]),
2223 AC_ARG_WITH(external-hyph-dir,
2224     AS_HELP_STRING([--with-external-hyph-dir],
2225         [Specify external hyphenation pattern dir.]),
2228 AC_ARG_WITH(external-thes-dir,
2229     AS_HELP_STRING([--with-external-thes-dir],
2230         [Specify external thesaurus dir.]),
2233 AC_ARG_WITH(system-zlib,
2234     AS_HELP_STRING([--with-system-zlib],
2235         [Use zlib already on system.]),,
2236     [with_system_zlib=auto])
2238 AC_ARG_WITH(system-jpeg,
2239     AS_HELP_STRING([--with-system-jpeg],
2240         [Use jpeg already on system.]),,
2241     [with_system_jpeg="$with_system_libs"])
2243 AC_ARG_WITH(system-expat,
2244     AS_HELP_STRING([--with-system-expat],
2245         [Use expat already on system.]),,
2246     [with_system_expat="$with_system_libs"])
2248 AC_ARG_WITH(system-libxml,
2249     AS_HELP_STRING([--with-system-libxml],
2250         [Use libxml/libxslt already on system.]),,
2251     [with_system_libxml=auto])
2253 AC_ARG_WITH(system-openldap,
2254     AS_HELP_STRING([--with-system-openldap],
2255         [Use the OpenLDAP LDAP SDK already on system.]),,
2256     [with_system_openldap="$with_system_libs"])
2258 libo_FUZZ_ARG_ENABLE(poppler,
2259     AS_HELP_STRING([--disable-poppler],
2260         [Disable building Poppler.])
2263 AC_ARG_WITH(system-poppler,
2264     AS_HELP_STRING([--with-system-poppler],
2265         [Use system poppler (only needed for PDF import).]),,
2266     [with_system_poppler="$with_system_libs"])
2268 AC_ARG_WITH(system-abseil,
2269     AS_HELP_STRING([--with-system-abseil],
2270         [Use the abseil libraries already on system.]),,
2271     [with_system_abseil="$with_system_libs"])
2273 AC_ARG_WITH(system-openjpeg,
2274     AS_HELP_STRING([--with-system-openjpeg],
2275         [Use the OpenJPEG library already on system.]),,
2276     [with_system_openjpeg="$with_system_libs"])
2278 libo_FUZZ_ARG_ENABLE(gpgmepp,
2279     AS_HELP_STRING([--disable-gpgmepp],
2280         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2283 AC_ARG_WITH(system-gpgmepp,
2284     AS_HELP_STRING([--with-system-gpgmepp],
2285         [Use gpgmepp already on system]),,
2286     [with_system_gpgmepp="$with_system_libs"])
2288 AC_ARG_WITH(system-mariadb,
2289     AS_HELP_STRING([--with-system-mariadb],
2290         [Use MariaDB/MySQL libraries already on system.]),,
2291     [with_system_mariadb="$with_system_libs"])
2293 AC_ARG_ENABLE(bundle-mariadb,
2294     AS_HELP_STRING([--enable-bundle-mariadb],
2295         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2298 AC_ARG_WITH(system-postgresql,
2299     AS_HELP_STRING([--with-system-postgresql],
2300         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2301          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2302     [with_system_postgresql="$with_system_libs"])
2304 AC_ARG_WITH(libpq-path,
2305     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2306         [Use this PostgreSQL C interface (libpq) installation for building
2307          the PostgreSQL-SDBC extension.]),
2310 AC_ARG_WITH(system-firebird,
2311     AS_HELP_STRING([--with-system-firebird],
2312         [Use Firebird libraries already on system, for building the Firebird-SDBC
2313          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2314     [with_system_firebird="$with_system_libs"])
2316 AC_ARG_WITH(system-libtommath,
2317             AS_HELP_STRING([--with-system-libtommath],
2318                            [Use libtommath already on system]),,
2319             [with_system_libtommath="$with_system_libs"])
2321 AC_ARG_WITH(system-hsqldb,
2322     AS_HELP_STRING([--with-system-hsqldb],
2323         [Use hsqldb already on system.]))
2325 AC_ARG_WITH(hsqldb-jar,
2326     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2327         [Specify path to jarfile manually.]),
2328     HSQLDB_JAR=$withval)
2330 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2331     AS_HELP_STRING([--disable-scripting-beanshell],
2332         [Disable support for scripts in BeanShell.]),
2336 AC_ARG_WITH(system-beanshell,
2337     AS_HELP_STRING([--with-system-beanshell],
2338         [Use beanshell already on system.]),,
2339     [with_system_beanshell="$with_system_jars"])
2341 AC_ARG_WITH(beanshell-jar,
2342     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2343         [Specify path to jarfile manually.]),
2344     BSH_JAR=$withval)
2346 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2347     AS_HELP_STRING([--disable-scripting-javascript],
2348         [Disable support for scripts in JavaScript.]),
2352 AC_ARG_WITH(system-rhino,
2353     AS_HELP_STRING([--with-system-rhino],
2354         [Use rhino already on system.]),,)
2355 #    [with_system_rhino="$with_system_jars"])
2356 # Above is not used as we have different debug interface
2357 # patched into internal rhino. This code needs to be fixed
2358 # before we can enable it by default.
2360 AC_ARG_WITH(rhino-jar,
2361     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2362         [Specify path to jarfile manually.]),
2363     RHINO_JAR=$withval)
2365 AC_ARG_WITH(system-jfreereport,
2366     AS_HELP_STRING([--with-system-jfreereport],
2367         [Use JFreeReport already on system.]),,
2368     [with_system_jfreereport="$with_system_jars"])
2370 AC_ARG_WITH(sac-jar,
2371     AS_HELP_STRING([--with-sac-jar=JARFILE],
2372         [Specify path to jarfile manually.]),
2373     SAC_JAR=$withval)
2375 AC_ARG_WITH(libxml-jar,
2376     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2377         [Specify path to jarfile manually.]),
2378     LIBXML_JAR=$withval)
2380 AC_ARG_WITH(flute-jar,
2381     AS_HELP_STRING([--with-flute-jar=JARFILE],
2382         [Specify path to jarfile manually.]),
2383     FLUTE_JAR=$withval)
2385 AC_ARG_WITH(jfreereport-jar,
2386     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2387         [Specify path to jarfile manually.]),
2388     JFREEREPORT_JAR=$withval)
2390 AC_ARG_WITH(liblayout-jar,
2391     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2392         [Specify path to jarfile manually.]),
2393     LIBLAYOUT_JAR=$withval)
2395 AC_ARG_WITH(libloader-jar,
2396     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2397         [Specify path to jarfile manually.]),
2398     LIBLOADER_JAR=$withval)
2400 AC_ARG_WITH(libformula-jar,
2401     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2402         [Specify path to jarfile manually.]),
2403     LIBFORMULA_JAR=$withval)
2405 AC_ARG_WITH(librepository-jar,
2406     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2407         [Specify path to jarfile manually.]),
2408     LIBREPOSITORY_JAR=$withval)
2410 AC_ARG_WITH(libfonts-jar,
2411     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2412         [Specify path to jarfile manually.]),
2413     LIBFONTS_JAR=$withval)
2415 AC_ARG_WITH(libserializer-jar,
2416     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2417         [Specify path to jarfile manually.]),
2418     LIBSERIALIZER_JAR=$withval)
2420 AC_ARG_WITH(libbase-jar,
2421     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2422         [Specify path to jarfile manually.]),
2423     LIBBASE_JAR=$withval)
2425 AC_ARG_WITH(system-odbc,
2426     AS_HELP_STRING([--with-system-odbc],
2427         [Use the odbc headers already on system.]),,
2428     [with_system_odbc="auto"])
2430 AC_ARG_WITH(system-sane,
2431     AS_HELP_STRING([--with-system-sane],
2432         [Use sane.h already on system.]),,
2433     [with_system_sane="$with_system_headers"])
2435 AC_ARG_WITH(system-bluez,
2436     AS_HELP_STRING([--with-system-bluez],
2437         [Use bluetooth.h already on system.]),,
2438     [with_system_bluez="$with_system_headers"])
2440 AC_ARG_WITH(system-boost,
2441     AS_HELP_STRING([--with-system-boost],
2442         [Use boost already on system.]),,
2443     [with_system_boost="$with_system_headers"])
2445 AC_ARG_WITH(system-dragonbox,
2446     AS_HELP_STRING([--with-system-dragonbox],
2447         [Use dragonbox already on system.]),,
2448     [with_system_dragonbox="$with_system_headers"])
2450 AC_ARG_WITH(system-libfixmath,
2451     AS_HELP_STRING([--with-system-libfixmath],
2452         [Use libfixmath already on system.]),,
2453     [with_system_libfixmath="$with_system_libs"])
2455 AC_ARG_WITH(system-glm,
2456     AS_HELP_STRING([--with-system-glm],
2457         [Use glm already on system.]),,
2458     [with_system_glm="$with_system_headers"])
2460 AC_ARG_WITH(system-hunspell,
2461     AS_HELP_STRING([--with-system-hunspell],
2462         [Use libhunspell already on system.]),,
2463     [with_system_hunspell="$with_system_libs"])
2465 libo_FUZZ_ARG_ENABLE(zxing,
2466     AS_HELP_STRING([--disable-zxing],
2467        [Disable use of zxing external library.]))
2469 AC_ARG_WITH(system-zxing,
2470     AS_HELP_STRING([--with-system-zxing],
2471         [Use libzxing already on system.]),,
2472     [with_system_zxing="$with_system_libs"])
2474 AC_ARG_WITH(system-box2d,
2475     AS_HELP_STRING([--with-system-box2d],
2476         [Use box2d already on system.]),,
2477     [with_system_box2d="$with_system_libs"])
2479 AC_ARG_WITH(system-mythes,
2480     AS_HELP_STRING([--with-system-mythes],
2481         [Use mythes already on system.]),,
2482     [with_system_mythes="$with_system_libs"])
2484 AC_ARG_WITH(system-altlinuxhyph,
2485     AS_HELP_STRING([--with-system-altlinuxhyph],
2486         [Use ALTLinuxhyph already on system.]),,
2487     [with_system_altlinuxhyph="$with_system_libs"])
2489 AC_ARG_WITH(system-lpsolve,
2490     AS_HELP_STRING([--with-system-lpsolve],
2491         [Use lpsolve already on system.]),,
2492     [with_system_lpsolve="$with_system_libs"])
2494 AC_ARG_WITH(system-coinmp,
2495     AS_HELP_STRING([--with-system-coinmp],
2496         [Use CoinMP already on system.]),,
2497     [with_system_coinmp="$with_system_libs"])
2499 AC_ARG_WITH(system-liblangtag,
2500     AS_HELP_STRING([--with-system-liblangtag],
2501         [Use liblangtag library already on system.]),,
2502     [with_system_liblangtag="$with_system_libs"])
2504 AC_ARG_WITH(system-lockfile,
2505     AS_HELP_STRING([--with-system-lockfile[=file]],
2506         [Detect a system lockfile program or use the \$file argument.]))
2508 AC_ARG_WITH(webdav,
2509     AS_HELP_STRING([--without-webdav],
2510         [Disable WebDAV support in the UCB.]))
2512 AC_ARG_WITH(linker-hash-style,
2513     AS_HELP_STRING([--with-linker-hash-style],
2514         [Use linker with --hash-style=<style> when linking shared objects.
2515          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2516          if supported on the build system, and "sysv" otherwise.]))
2518 AC_ARG_WITH(jdk-home,
2519     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2520         [If you have installed JDK 9 or later on your system please supply the
2521          path here. Note that this is not the location of the java command but the
2522          location of the entire distribution. In case of cross-compiling, this
2523          is the JDK of the host os. Use --with-build-platform-configure-options
2524          to point to a different build platform JDK.]),
2527 AC_ARG_WITH(help,
2528     AS_HELP_STRING([--with-help],
2529         [Enable the build of help. There is a special parameter "common" that
2530          can be used to bundle only the common part, .e.g help-specific icons.
2531          This is useful when you build the helpcontent separately.])
2532     [
2533                           Usage:     --with-help    build the old local help
2534                                  --without-help     no local help (default)
2535                                  --with-help=html   build the new HTML local help
2536                                  --with-help=online build the new HTML online help
2537     ],
2540 AC_ARG_WITH(omindex,
2541    AS_HELP_STRING([--with-omindex],
2542         [Enable the support of xapian-omega index for online help.])
2543    [
2544                          Usage: --with-omindex=server prepare the pages for omindex
2545                                 but let xapian-omega be built in server.
2546                                 --with-omindex=noxap do not prepare online pages
2547                                 for xapian-omega
2548   ],
2551 libo_FUZZ_ARG_WITH(java,
2552     AS_HELP_STRING([--with-java=<java command>],
2553         [Specify the name of the Java interpreter command. Typically "java"
2554          which is the default.
2556          To build without support for Java components, applets, accessibility
2557          or the XML filters written in Java, use --without-java or --with-java=no.]),
2558     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2559     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2562 AC_ARG_WITH(jvm-path,
2563     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2564         [Use a specific JVM search path at runtime.
2565          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2568 AC_ARG_WITH(ant-home,
2569     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2570         [If you have installed Apache Ant on your system, please supply the path here.
2571          Note that this is not the location of the Ant binary but the location
2572          of the entire distribution.]),
2575 AC_ARG_WITH(symbol-config,
2576     AS_HELP_STRING([--with-symbol-config],
2577         [Configuration for the crashreport symbol upload]),
2578         [],
2579         [with_symbol_config=no])
2581 AC_ARG_WITH(export-validation,
2582     AS_HELP_STRING([--without-export-validation],
2583         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2584 ,with_export_validation=auto)
2586 AC_ARG_WITH(bffvalidator,
2587     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2588         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2589          Requires installed Microsoft Office Binary File Format Validator.
2590          Note: export-validation (--with-export-validation) is required to be turned on.
2591          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2592 ,with_bffvalidator=no)
2594 libo_FUZZ_ARG_WITH(junit,
2595     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2596         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2597          --without-junit disables those tests. Not relevant in the --without-java case.]),
2598 ,with_junit=yes)
2600 AC_ARG_WITH(hamcrest,
2601     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2602         [Specifies the hamcrest jar file to use for JUnit-based tests.
2603          --without-junit disables those tests. Not relevant in the --without-java case.]),
2604 ,with_hamcrest=yes)
2606 AC_ARG_WITH(perl-home,
2607     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2608         [If you have installed Perl 5 Distribution, on your system, please
2609          supply the path here. Note that this is not the location of the Perl
2610          binary but the location of the entire distribution.]),
2613 libo_FUZZ_ARG_WITH(doxygen,
2614     AS_HELP_STRING(
2615         [--with-doxygen=<absolute path to doxygen executable>],
2616         [Specifies the doxygen executable to use when generating ODK C/C++
2617          documentation. --without-doxygen disables generation of ODK C/C++
2618          documentation. Not relevant in the --disable-odk case.]),
2619 ,with_doxygen=yes)
2621 AC_ARG_WITH(visual-studio,
2622     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2623         [Specify which Visual Studio version to use in case several are
2624          installed. Currently 2019 (default) and 2022 are supported.]),
2627 AC_ARG_WITH(windows-sdk,
2628     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2629         [Specify which Windows SDK, or "Windows Kit", version to use
2630          in case the one that came with the selected Visual Studio
2631          is not what you want for some reason. Note that not all compiler/SDK
2632          combinations are supported. The intent is that this option should not
2633          be needed.]),
2636 AC_ARG_WITH(lang,
2637     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2638         [Use this option to build LibreOffice with additional UI language support.
2639          English (US) is always included by default.
2640          Separate multiple languages with space.
2641          For all languages, use --with-lang=ALL.]),
2644 AC_ARG_WITH(locales,
2645     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2646         [Use this option to limit the locale information built in.
2647          Separate multiple locales with space.
2648          Very experimental and might well break stuff.
2649          Just a desperate measure to shrink code and data size.
2650          By default all the locales available is included.
2651          Just works with --disable-dynloading. Defaults to "ALL".
2652          This option is completely unrelated to --with-lang.])
2653     [
2654                           Affects also our character encoding conversion
2655                           tables for encodings mainly targeted for a
2656                           particular locale, like EUC-CN and EUC-TW for
2657                           zh, ISO-2022-JP for ja.
2659                           Affects also our add-on break iterator data for
2660                           some languages.
2662                           For the default, all locales, don't use this switch at all.
2663                           Specifying just the language part of a locale means all matching
2664                           locales will be included.
2665     ],
2668 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2669 libo_FUZZ_ARG_WITH(krb5,
2670     AS_HELP_STRING([--with-krb5],
2671         [Enable MIT Kerberos 5 support in modules that support it.
2672          By default automatically enabled on platforms
2673          where a good system Kerberos 5 is available.]),
2676 libo_FUZZ_ARG_WITH(gssapi,
2677     AS_HELP_STRING([--with-gssapi],
2678         [Enable GSSAPI support in modules that support it.
2679          By default automatically enabled on platforms
2680          where a good system GSSAPI is available.]),
2683 libo_FUZZ_ARG_WITH(lxml,
2684     AS_HELP_STRING([--without-lxml],
2685         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2686          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2687          report widget classes and ids.]),
2690 libo_FUZZ_ARG_WITH(latest-c++,
2691     AS_HELP_STRING([--with-latest-c++],
2692         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2693          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2694         [with_latest_c__=no])
2696 AC_ARG_WITH(gtk3-build,
2697     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2698         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2699          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2701 dnl ===================================================================
2702 dnl Branding
2703 dnl ===================================================================
2705 AC_ARG_WITH(branding,
2706     AS_HELP_STRING([--with-branding=/path/to/images],
2707         [Use given path to retrieve branding images set.])
2708     [
2709                           Search for intro.png about.svg and logo.svg.
2710                           If any is missing, default ones will be used instead.
2712                           Search also progress.conf for progress
2713                           settings on intro screen :
2715                           PROGRESSBARCOLOR="255,255,255" Set color of
2716                           progress bar. Comma separated RGB decimal values.
2717                           PROGRESSSIZE="407,6" Set size of progress bar.
2718                           Comma separated decimal values (width, height).
2719                           PROGRESSPOSITION="61,317" Set position of progress
2720                           bar from left,top. Comma separated decimal values.
2721                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2722                           bar frame. Comma separated RGB decimal values.
2723                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2724                           bar text. Comma separated RGB decimal values.
2725                           PROGRESSTEXTBASELINE="287" Set vertical position of
2726                           progress bar text from top. Decimal value.
2728                           Default values will be used if not found.
2729     ],
2733 AC_ARG_WITH(extra-buildid,
2734     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2735         [Show addition build identification in about dialog.]),
2739 AC_ARG_WITH(vendor,
2740     AS_HELP_STRING([--with-vendor="John the Builder"],
2741         [Set vendor of the build.]),
2744 AC_ARG_WITH(privacy-policy-url,
2745     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2746         [The URL to your privacy policy (needed when
2747          enabling online-update or crashreporting via breakpad)]),
2748         [if test "x$with_privacy_policy_url" = "xyes"; then
2749             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2750          elif test "x$with_privacy_policy_url" = "xno"; then
2751             with_privacy_policy_url="undefined"
2752          fi]
2753 ,[with_privacy_policy_url="undefined"])
2755 AC_ARG_WITH(android-package-name,
2756     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2757         [Set Android package name of the build.]),
2760 AC_ARG_WITH(compat-oowrappers,
2761     AS_HELP_STRING([--with-compat-oowrappers],
2762         [Install oo* wrappers in parallel with
2763          lo* ones to keep backward compatibility.
2764          Has effect only with make distro-pack-install]),
2767 AC_ARG_WITH(os-version,
2768     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2769         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2772 AC_ARG_WITH(parallelism,
2773     AS_HELP_STRING([--with-parallelism],
2774         [Number of jobs to run simultaneously during build. Parallel builds can
2775         save a lot of time on multi-cpu machines. Defaults to the number of
2776         CPUs on the machine, unless you configure --enable-icecream - then to
2777         40.]),
2780 AC_ARG_WITH(all-tarballs,
2781     AS_HELP_STRING([--with-all-tarballs],
2782         [Download all external tarballs unconditionally]))
2784 AC_ARG_WITH(gdrive-client-id,
2785     AS_HELP_STRING([--with-gdrive-client-id],
2786         [Provides the client id of the application for OAuth2 authentication
2787         on Google Drive. If either this or --with-gdrive-client-secret is
2788         empty, the feature will be disabled]),
2791 AC_ARG_WITH(gdrive-client-secret,
2792     AS_HELP_STRING([--with-gdrive-client-secret],
2793         [Provides the client secret of the application for OAuth2
2794         authentication on Google Drive. If either this or
2795         --with-gdrive-client-id is empty, the feature will be disabled]),
2798 AC_ARG_WITH(alfresco-cloud-client-id,
2799     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2800         [Provides the client id of the application for OAuth2 authentication
2801         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2802         empty, the feature will be disabled]),
2805 AC_ARG_WITH(alfresco-cloud-client-secret,
2806     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2807         [Provides the client secret of the application for OAuth2
2808         authentication on Alfresco Cloud. If either this or
2809         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2812 AC_ARG_WITH(onedrive-client-id,
2813     AS_HELP_STRING([--with-onedrive-client-id],
2814         [Provides the client id of the application for OAuth2 authentication
2815         on OneDrive. If either this or --with-onedrive-client-secret is
2816         empty, the feature will be disabled]),
2819 AC_ARG_WITH(onedrive-client-secret,
2820     AS_HELP_STRING([--with-onedrive-client-secret],
2821         [Provides the client secret of the application for OAuth2
2822         authentication on OneDrive. If either this or
2823         --with-onedrive-client-id is empty, the feature will be disabled]),
2825 dnl ===================================================================
2826 dnl Do we want to use pre-build binary tarball for recompile
2827 dnl ===================================================================
2829 if test "$enable_library_bin_tar" = "yes" ; then
2830     USE_LIBRARY_BIN_TAR=TRUE
2831 else
2832     USE_LIBRARY_BIN_TAR=
2834 AC_SUBST(USE_LIBRARY_BIN_TAR)
2836 dnl ===================================================================
2837 dnl Test whether build target is Release Build
2838 dnl ===================================================================
2839 AC_MSG_CHECKING([whether build target is Release Build])
2840 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2841     AC_MSG_RESULT([no])
2842     ENABLE_RELEASE_BUILD=
2843     GET_TASK_ALLOW_ENTITLEMENT='
2844         <!-- We want to be able to debug a hardened process when not building for release -->
2845         <key>com.apple.security.get-task-allow</key>
2846         <true/>'
2847 else
2848     AC_MSG_RESULT([yes])
2849     ENABLE_RELEASE_BUILD=TRUE
2850     GET_TASK_ALLOW_ENTITLEMENT=''
2852 AC_SUBST(ENABLE_RELEASE_BUILD)
2853 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2855 AC_MSG_CHECKING([whether to build a Community flavor])
2856 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2857     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2858     AC_MSG_RESULT([yes])
2859 else
2860     AC_MSG_RESULT([no])
2863 dnl ===================================================================
2864 dnl Test whether to sign Windows Build
2865 dnl ===================================================================
2866 AC_MSG_CHECKING([whether to sign windows build])
2867 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2868     AC_MSG_RESULT([yes])
2869     WINDOWS_BUILD_SIGNING="TRUE"
2870 else
2871     AC_MSG_RESULT([no])
2872     WINDOWS_BUILD_SIGNING="FALSE"
2874 AC_SUBST(WINDOWS_BUILD_SIGNING)
2876 dnl ===================================================================
2877 dnl MacOSX build and runtime environment options
2878 dnl ===================================================================
2880 AC_ARG_WITH(macosx-version-min-required,
2881     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2882         [set the minimum OS version needed to run the built LibreOffice])
2883     [
2884                           e. g.: --with-macosx-version-min-required=10.15
2885     ],
2888 dnl ===================================================================
2889 dnl Check for incompatible options set by fuzzing, and reset those
2890 dnl automatically to working combinations
2891 dnl ===================================================================
2893 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2894         "$enable_dbus" != "$enable_avahi"; then
2895     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2896     enable_avahi=$enable_dbus
2899 add_lopath_after ()
2901     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2902         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2903     fi
2906 add_lopath_before ()
2908     local IFS=${P_SEP}
2909     local path_cleanup
2910     local dir
2911     for dir in $LO_PATH ; do
2912         if test "$dir" != "$1" ; then
2913             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2914         fi
2915     done
2916     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2919 dnl ===================================================================
2920 dnl check for required programs (grep, awk, sed, bash)
2921 dnl ===================================================================
2923 pathmunge ()
2925     local new_path
2926     if test -n "$1"; then
2927         if test "$build_os" = "cygwin"; then
2928             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2929                 PathFormat "$1"
2930                 new_path=`cygpath -sm "$formatted_path"`
2931             else
2932                 PathFormat "$1"
2933                 new_path=`cygpath -u "$formatted_path"`
2934             fi
2935         else
2936             new_path="$1"
2937         fi
2938         if test "$2" = "after"; then
2939             add_lopath_after "$new_path"
2940         else
2941             add_lopath_before "$new_path"
2942         fi
2943     fi
2946 AC_PROG_AWK
2947 AC_PATH_PROG( AWK, $AWK)
2948 if test -z "$AWK"; then
2949     AC_MSG_ERROR([install awk to run this script])
2952 AC_PATH_PROG(BASH, bash)
2953 if test -z "$BASH"; then
2954     AC_MSG_ERROR([bash not found in \$PATH])
2956 AC_SUBST(BASH)
2958 # prefer parallel compression tools, if available
2959 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2960 if test -z "$COMPRESSIONTOOL"; then
2961     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2962     if test -z "$COMPRESSIONTOOL"; then
2963         AC_MSG_ERROR([gzip not found in \$PATH])
2964     fi
2966 AC_SUBST(COMPRESSIONTOOL)
2968 AC_MSG_CHECKING([for GNU or BSD tar])
2969 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2970     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
2971     if test $? -eq 0;  then
2972         GNUTAR=$a
2973         break
2974     fi
2975 done
2976 AC_MSG_RESULT($GNUTAR)
2977 if test -z "$GNUTAR"; then
2978     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2980 AC_SUBST(GNUTAR)
2982 AC_MSG_CHECKING([for tar's option to strip components])
2983 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2984 if test $? -eq 0; then
2985     STRIP_COMPONENTS="--strip-components"
2986 else
2987     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
2988     if test $? -eq 0; then
2989         STRIP_COMPONENTS="--strip-path"
2990     else
2991         STRIP_COMPONENTS="unsupported"
2992     fi
2994 AC_MSG_RESULT($STRIP_COMPONENTS)
2995 if test x$STRIP_COMPONENTS = xunsupported; then
2996     AC_MSG_ERROR([you need a tar that is able to strip components.])
2998 AC_SUBST(STRIP_COMPONENTS)
3000 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3001 dnl desktop OSes from "mobile" ones.
3003 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3004 dnl In other words, that when building for an OS that is not a
3005 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3007 dnl Note the direction of the implication; there is no assumption that
3008 dnl cross-compiling would imply a non-desktop OS.
3010 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3011     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3012     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3013     if test "$_os" != Emscripten; then
3014         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3015     fi
3018 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3019 # also work with the default gtk3 plugin.
3020 if test "$enable_wasm_strip" = "yes"; then
3021     enable_avmedia=no
3022     enable_cmis=no
3023     enable_coinmp=no
3024     enable_cups=no
3025     test "$_os" = Emscripten && enable_curl=no
3026     enable_database_connectivity=no
3027     enable_dbus=no
3028     enable_dconf=no
3029     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3030     enable_extension_integration=no
3031     enable_extensions=no
3032     enable_extension_update=no
3033     enable_gio=no
3034     enable_gpgmepp=no
3035     enable_ldap=no
3036     enable_lotuswordpro=no
3037     enable_lpsolve=no
3038     enable_nss=no
3039     enable_odk=no
3040     enable_online_update=no
3041     enable_opencl=no
3042     enable_pdfimport=no
3043     enable_randr=no
3044     enable_report_builder=no
3045     enable_scripting=no
3046     enable_sdremote_bluetooth=no
3047     enable_skia=no
3048     enable_xmlhelp=no
3049     enable_zxing=no
3050     test_libepubgen=no
3051     test_libcdr=no
3052     test_libcmis=no
3053     test_libetonyek=no
3054     test_libfreehand=no
3055     test_libmspub=no
3056     test_libpagemaker=no
3057     test_libqxp=no
3058     test_libvisio=no
3059     test_libzmf=no
3060     test_webdav=no
3061     with_galleries=no
3062     with_webdav=no
3063     with_x=no
3065     test "${with_fonts+set}" = set || with_fonts=yes
3066     test "${with_locales+set}" = set || with_locales=en
3068     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3069     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3070     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3071     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3072 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3073     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3074     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3075     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3076     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3077 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3078     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3079     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3080     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3081     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3082     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3083     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3084     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3085     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3088 EMSCRIPTEN_NEH_MAJOR=3
3089 EMSCRIPTEN_NEH_MINOR=1
3090 EMSCRIPTEN_NEH_TINY=3
3091 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3093 if test "$enable_wasm_exceptions" = yes; then
3094     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3095     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3096     if test $? -ne 0; then
3097         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3098     else
3099         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3100     fi
3101     ENABLE_WASM_EXCEPTIONS=TRUE
3103 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3105 # Whether to build "avmedia" functionality or not.
3107 if test "$enable_avmedia" = yes; then
3108     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3109     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3110 else
3111     test_gstreamer_1_0=no
3114 # Decide whether to build database connectivity stuff (including Base) or not.
3115 if test "$enable_database_connectivity" != no; then
3116     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3117     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3118 else
3119     if test "$_os" = iOS; then
3120         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3121     fi
3122     disable_database_connectivity_dependencies
3125 if test -z "$enable_extensions"; then
3126     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3127     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3128         enable_extensions=yes
3129     fi
3132 DISABLE_SCRIPTING=''
3133 if test "$enable_scripting" = yes; then
3134     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3135     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3136 else
3137     DISABLE_SCRIPTING='TRUE'
3138     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3141 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3142     # Disable dynamic_loading always for iOS and Android
3143     enable_dynamic_loading=no
3144 elif test -z "$enable_dynamic_loading"; then
3145     # Otherwise enable it unless specifically disabled
3146     enable_dynamic_loading=yes
3149 DISABLE_DYNLOADING=''
3150 if test "$enable_dynamic_loading" = yes; then
3151     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3152 else
3153     DISABLE_DYNLOADING='TRUE'
3154     if test $_os != iOS -a $_os != Android; then
3155         enable_database_connectivity=no
3156         enable_nss=no
3157         enable_odk=no
3158         enable_python=no
3159         enable_skia=no
3160         with_java=no
3161     fi
3163 AC_SUBST(DISABLE_DYNLOADING)
3165 ENABLE_CUSTOMTARGET_COMPONENTS=
3166 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3167     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3168     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3169         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3170     fi
3172 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3174 if test "$enable_extensions" = yes; then
3175     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3176     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3177 else
3178     enable_extension_integration=no
3179     enable_extension_update=no
3182 # remember SYSBASE value
3183 AC_SUBST(SYSBASE)
3185 dnl ===================================================================
3186 dnl  Sort out various gallery compilation options
3187 dnl ===================================================================
3188 WITH_GALLERY_BUILD=TRUE
3189 AC_MSG_CHECKING([how to build and package galleries])
3190 if test -n "${with_galleries}"; then
3191     if test "$with_galleries" = "build"; then
3192         if test "$enable_database_connectivity" = no; then
3193             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3194         fi
3195         AC_MSG_RESULT([build from source images internally])
3196     elif test "$with_galleries" = "no"; then
3197         WITH_GALLERY_BUILD=
3198         AC_MSG_RESULT([disable non-internal gallery build])
3199     else
3200         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3201     fi
3202 else
3203     if test $_os != iOS -a $_os != Android; then
3204         AC_MSG_RESULT([internal src images for desktop])
3205     else
3206         WITH_GALLERY_BUILD=
3207         AC_MSG_RESULT([disable src image build])
3208     fi
3210 AC_SUBST(WITH_GALLERY_BUILD)
3212 dnl ===================================================================
3213 dnl  Checks if ccache is available
3214 dnl ===================================================================
3215 CCACHE_DEPEND_MODE=
3216 if test "$enable_ccache" = "no"; then
3217     CCACHE=""
3218 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3219     case "%$CC%$CXX%" in
3220     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3221     # assume that's good then
3222     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3223         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3224         CCACHE_DEPEND_MODE=1
3225         ;;
3226     *)
3227         # try to use our own ccache if it is available and CCACHE was not already defined
3228         if test -z "$CCACHE"; then
3229             if test "$_os" = "WINNT"; then
3230                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3231             fi
3232             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3233                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3234             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3235                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3236             fi
3237         fi
3238         AC_PATH_PROG([CCACHE],[ccache],[not found])
3239         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3240             CCACHE=`win_short_path_for_make "$CCACHE"`
3241             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3242             rm -f conftest.txt
3243             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3244             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3245             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3246                 AC_MSG_RESULT(yes)
3247             else
3248                 AC_MSG_RESULT(no)
3249                 CCACHE="not found"
3250             fi
3251             rm -f conftest.txt
3252         fi
3253         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3254             # on windows/VC perhaps sccache is around?
3255             case "%$CC%$CXX%" in
3256             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3257             # assume that's good then
3258             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3259                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3260                 CCACHE_DEPEND_MODE=1
3261                 SCCACHE=1
3262                 ;;
3263             *)
3264                 # for sharing code below, reuse CCACHE env var
3265                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3266                 if test "$CCACHE" != "not found"; then
3267                     CCACHE=`win_short_path_for_make "$CCACHE"`
3268                     SCCACHE=1
3269                     CCACHE_DEPEND_MODE=1
3270                 fi
3271                 ;;
3272             esac
3273         fi
3274         if test "$CCACHE" = "not found"; then
3275             CCACHE=""
3276         fi
3277         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3278             CCACHE_DEPEND_MODE=1
3279             # Need to check for ccache version: otherwise prevents
3280             # caching of the results (like "-x objective-c++" for Mac)
3281             if test $_os = Darwin -o $_os = iOS; then
3282                 # Check ccache version
3283                 AC_MSG_CHECKING([whether version of ccache is suitable])
3284                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3285                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3286                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3287                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3288                 else
3289                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3290                     CCACHE=""
3291                     CCACHE_DEPEND_MODE=
3292                 fi
3293             fi
3294         fi
3295         ;;
3296     esac
3297 else
3298     CCACHE=""
3300 if test "$enable_ccache" = "nodepend"; then
3301     CCACHE_DEPEND_MODE=""
3303 AC_SUBST(CCACHE_DEPEND_MODE)
3305 # sccache defaults are good enough
3306 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3307     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3308     # -p works with both 4.2 and 4.4
3309     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3310     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3311     if test "$ccache_size" = ""; then
3312         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3313         if test "$ccache_size" = ""; then
3314             ccache_size=0
3315         fi
3316         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3317         if test $ccache_size -lt 1024; then
3318             CCACHE=""
3319             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3320             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3321         else
3322             # warn that ccache may be too small for debug build
3323             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3324             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3325         fi
3326     else
3327         if test $ccache_size -lt 5; then
3328             #warn that ccache may be too small for debug build
3329             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3330             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3331         fi
3332     fi
3335 ENABLE_Z7_DEBUG=
3336 if test "$enable_z7_debug" != no; then
3337     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3338         ENABLE_Z7_DEBUG=TRUE
3339     fi
3340 else
3341     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3342     add_warning "ccache will not work with --disable-z7-debug"
3344 AC_SUBST(ENABLE_Z7_DEBUG)
3346 dnl ===================================================================
3347 dnl  Checks for C compiler,
3348 dnl  The check for the C++ compiler is later on.
3349 dnl ===================================================================
3350 if test "$_os" != "WINNT"; then
3351     GCC_HOME_SET="true"
3352     AC_MSG_CHECKING([gcc home])
3353     if test -z "$with_gcc_home"; then
3354         if test "$enable_icecream" = "yes"; then
3355             if test -d "/usr/lib/icecc/bin"; then
3356                 GCC_HOME="/usr/lib/icecc/"
3357             elif test -d "/usr/libexec/icecc/bin"; then
3358                 GCC_HOME="/usr/libexec/icecc/"
3359             elif test -d "/opt/icecream/bin"; then
3360                 GCC_HOME="/opt/icecream/"
3361             else
3362                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3364             fi
3365         else
3366             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3367             GCC_HOME_SET="false"
3368         fi
3369     else
3370         GCC_HOME="$with_gcc_home"
3371     fi
3372     AC_MSG_RESULT($GCC_HOME)
3373     AC_SUBST(GCC_HOME)
3375     if test "$GCC_HOME_SET" = "true"; then
3376         if test -z "$CC"; then
3377             CC="$GCC_HOME/bin/gcc"
3378             CC_BASE="gcc"
3379         fi
3380         if test -z "$CXX"; then
3381             CXX="$GCC_HOME/bin/g++"
3382             CXX_BASE="g++"
3383         fi
3384     fi
3387 COMPATH=`dirname "$CC"`
3388 if test "$COMPATH" = "."; then
3389     AC_PATH_PROGS(COMPATH, $CC)
3390     dnl double square bracket to get single because of M4 quote...
3391     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3393 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3395 dnl ===================================================================
3396 dnl Java support
3397 dnl ===================================================================
3398 AC_MSG_CHECKING([whether to build with Java support])
3399 if test "$with_java" != "no"; then
3400     if test "$DISABLE_SCRIPTING" = TRUE; then
3401         AC_MSG_RESULT([no, overridden by --disable-scripting])
3402         ENABLE_JAVA=""
3403         with_java=no
3404     else
3405         AC_MSG_RESULT([yes])
3406         ENABLE_JAVA="TRUE"
3407         AC_DEFINE(HAVE_FEATURE_JAVA)
3408     fi
3409 else
3410     AC_MSG_RESULT([no])
3411     ENABLE_JAVA=""
3414 AC_SUBST(ENABLE_JAVA)
3416 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3418 dnl ENABLE_JAVA="" indicate no Java support at all
3420 dnl ===================================================================
3421 dnl Check macOS SDK and compiler
3422 dnl ===================================================================
3424 if test $_os = Darwin; then
3426     # The SDK in the currently selected Xcode should be found.
3428     AC_MSG_CHECKING([what macOS SDK to use])
3429     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3430     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3431     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3432     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3433     # problems that existed in the PPC days with target versions not being respected or random
3434     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3435     # SDK version is enough, no need to do both...
3436     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3437     if test ! -d "$MACOSX_SDK_PATH"; then
3438         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3439     fi
3440     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3441     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3442     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3443     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3444     # 10.10.2 is 101002
3445     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3446     # correct version in case such an old SDK is specified, it will be rejected later anyway
3447     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3448     if test $MACOSX_SDK_VERSION -lt 101500; then
3449         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3450     fi
3451     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3452         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3453     fi
3454     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3456     AC_MSG_CHECKING([what minimum version of macOS to require])
3457     if test "$with_macosx_version_min_required" = "" ; then
3458         if test "$host_cpu" = x86_64; then
3459             with_macosx_version_min_required="10.15";
3460         else
3461             with_macosx_version_min_required="11.0";
3462         fi
3463     fi
3464     # see same notes about MACOSX_SDK_VERSION above
3465     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3466     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3467         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3468     fi
3469     AC_MSG_RESULT([$with_macosx_version_min_required])
3471     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3472     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3473         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3474     else
3475         AC_MSG_RESULT([yes])
3476     fi
3478     # export this so that "xcrun" invocations later return matching values
3479     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3480     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3481     export DEVELOPER_DIR
3482     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3483     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3485     AC_MSG_CHECKING([whether Xcode is new enough])
3486     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3487     my_xcode_ver2=${my_xcode_ver1#Xcode }
3488     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3489     if test "$my_xcode_ver3" -ge 1205; then
3490         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3491     else
3492         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3493     fi
3495     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3496     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3498     LIBTOOL=/usr/bin/libtool
3499     INSTALL_NAME_TOOL=install_name_tool
3500     if test -z "$save_CC"; then
3501         stdlib=-stdlib=libc++
3503         AC_MSG_CHECKING([what C compiler to use])
3504         CC="`xcrun -find clang`"
3505         CC_BASE=`first_arg_basename "$CC"`
3506         if test "$host_cpu" = x86_64; then
3507             CC+=" -target x86_64-apple-macos"
3508         else
3509             CC+=" -target arm64-apple-macos"
3510         fi
3511         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3512         AC_MSG_RESULT([$CC])
3514         AC_MSG_CHECKING([what C++ compiler to use])
3515         CXX="`xcrun -find clang++`"
3516         CXX_BASE=`first_arg_basename "$CXX"`
3517         if test "$host_cpu" = x86_64; then
3518             CXX+=" -target x86_64-apple-macos"
3519         else
3520             CXX+=" -target arm64-apple-macos"
3521         fi
3522         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3523         AC_MSG_RESULT([$CXX])
3525         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3526         AR=`xcrun -find ar`
3527         NM=`xcrun -find nm`
3528         STRIP=`xcrun -find strip`
3529         LIBTOOL=`xcrun -find libtool`
3530         RANLIB=`xcrun -find ranlib`
3531     fi
3533     AC_MSG_CHECKING([whether to do code signing])
3535     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3536         AC_MSG_RESULT([no])
3537     else
3538         if test "$enable_macosx_code_signing" = yes; then
3539             # By default use the first suitable certificate (?).
3541             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3542             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3543             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3544             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3545             # "Developer ID Application" one.
3546             identity="Developer ID Application:"
3547         else
3548             identity=$enable_macosx_code_signing
3549         fi
3550         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3551         if test -n "$identity"; then
3552             MACOSX_CODESIGNING_IDENTITY=$identity
3553             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3554             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3555         else
3556             AC_MSG_ERROR([cannot determine identity to use])
3557         fi
3558     fi
3560     AC_MSG_CHECKING([whether to create a Mac App Store package])
3562     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3563         AC_MSG_RESULT([no])
3564     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3565         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3566     else
3567         if test "$enable_macosx_package_signing" = yes; then
3568             # By default use the first suitable certificate.
3569             # It should be a "3rd Party Mac Developer Installer" one
3570             identity="3rd Party Mac Developer Installer:"
3571         else
3572             identity=$enable_macosx_package_signing
3573         fi
3574         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3575         if test -n "$identity"; then
3576             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3577             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3578             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3579         else
3580             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3581         fi
3582     fi
3584     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3585         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3586     fi
3588     AC_MSG_CHECKING([whether to sandbox the application])
3590     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3591         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3592     elif test "$enable_macosx_sandbox" = yes; then
3593         ENABLE_MACOSX_SANDBOX=TRUE
3594         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3595         AC_MSG_RESULT([yes])
3596     else
3597         AC_MSG_RESULT([no])
3598     fi
3600     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3601     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3602     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3604     if test -n "$with_macosx_provisioning_profile" ; then
3605         if test ! -f "$with_macosx_provisioning_profile"; then
3606             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3607         else
3608             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3609             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3610                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3611                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3612                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3613         fi
3614     fi
3616 AC_SUBST(MACOSX_SDK_PATH)
3617 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3618 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3619 AC_SUBST(INSTALL_NAME_TOOL)
3620 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3621 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3622 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3623 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3624 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3625 AC_SUBST(MACOSX_PROVISIONING_INFO)
3626 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3627 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3628 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3630 dnl ===================================================================
3631 dnl Check iOS SDK and compiler
3632 dnl ===================================================================
3634 if test $_os = iOS; then
3635     AC_MSG_CHECKING([what iOS SDK to use])
3637     if test "$enable_ios_simulator" = "yes"; then
3638         platformlc=iphonesimulator
3639         versionmin=-mios-simulator-version-min=14.5
3640     else
3641         platformlc=iphoneos
3642         versionmin=-miphoneos-version-min=14.5
3643     fi
3645     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3647     if ! test -d "$sysroot"; then
3648         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3649     fi
3651     AC_MSG_RESULT($sysroot)
3653     stdlib="-stdlib=libc++"
3655     AC_MSG_CHECKING([what C compiler to use])
3656     CC="`xcrun -find clang`"
3657     CC_BASE=`first_arg_basename "$CC"`
3658     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3659     AC_MSG_RESULT([$CC])
3661     AC_MSG_CHECKING([what C++ compiler to use])
3662     CXX="`xcrun -find clang++`"
3663     CXX_BASE=`first_arg_basename "$CXX"`
3664     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3665     AC_MSG_RESULT([$CXX])
3667     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3668     AR=`xcrun -find ar`
3669     NM=`xcrun -find nm`
3670     STRIP=`xcrun -find strip`
3671     LIBTOOL=`xcrun -find libtool`
3672     RANLIB=`xcrun -find ranlib`
3675 AC_MSG_CHECKING([whether to treat the installation as read-only])
3677 if test $_os = Darwin; then
3678     enable_readonly_installset=yes
3679 elif test "$enable_extensions" != yes; then
3680     enable_readonly_installset=yes
3682 if test "$enable_readonly_installset" = yes; then
3683     AC_MSG_RESULT([yes])
3684     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3685 else
3686     AC_MSG_RESULT([no])
3689 dnl ===================================================================
3690 dnl Structure of install set
3691 dnl ===================================================================
3693 if test $_os = Darwin; then
3694     LIBO_BIN_FOLDER=MacOS
3695     LIBO_ETC_FOLDER=Resources
3696     LIBO_LIBEXEC_FOLDER=MacOS
3697     LIBO_LIB_FOLDER=Frameworks
3698     LIBO_LIB_PYUNO_FOLDER=Resources
3699     LIBO_SHARE_FOLDER=Resources
3700     LIBO_SHARE_HELP_FOLDER=Resources/help
3701     LIBO_SHARE_JAVA_FOLDER=Resources/java
3702     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3703     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3704     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3705     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3706     LIBO_URE_BIN_FOLDER=MacOS
3707     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3708     LIBO_URE_LIB_FOLDER=Frameworks
3709     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3710     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3711 elif test $_os = WINNT; then
3712     LIBO_BIN_FOLDER=program
3713     LIBO_ETC_FOLDER=program
3714     LIBO_LIBEXEC_FOLDER=program
3715     LIBO_LIB_FOLDER=program
3716     LIBO_LIB_PYUNO_FOLDER=program
3717     LIBO_SHARE_FOLDER=share
3718     LIBO_SHARE_HELP_FOLDER=help
3719     LIBO_SHARE_JAVA_FOLDER=program/classes
3720     LIBO_SHARE_PRESETS_FOLDER=presets
3721     LIBO_SHARE_READMES_FOLDER=readmes
3722     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3723     LIBO_SHARE_SHELL_FOLDER=program/shell
3724     LIBO_URE_BIN_FOLDER=program
3725     LIBO_URE_ETC_FOLDER=program
3726     LIBO_URE_LIB_FOLDER=program
3727     LIBO_URE_MISC_FOLDER=program
3728     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3729 else
3730     LIBO_BIN_FOLDER=program
3731     LIBO_ETC_FOLDER=program
3732     LIBO_LIBEXEC_FOLDER=program
3733     LIBO_LIB_FOLDER=program
3734     LIBO_LIB_PYUNO_FOLDER=program
3735     LIBO_SHARE_FOLDER=share
3736     LIBO_SHARE_HELP_FOLDER=help
3737     LIBO_SHARE_JAVA_FOLDER=program/classes
3738     LIBO_SHARE_PRESETS_FOLDER=presets
3739     LIBO_SHARE_READMES_FOLDER=readmes
3740     if test "$enable_fuzzers" != yes; then
3741         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3742     else
3743         LIBO_SHARE_RESOURCE_FOLDER=resource
3744     fi
3745     LIBO_SHARE_SHELL_FOLDER=program/shell
3746     LIBO_URE_BIN_FOLDER=program
3747     LIBO_URE_ETC_FOLDER=program
3748     LIBO_URE_LIB_FOLDER=program
3749     LIBO_URE_MISC_FOLDER=program
3750     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3752 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3753 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3754 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3755 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3756 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3757 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3758 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3759 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3760 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3761 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3762 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3763 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3764 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3765 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3766 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3767 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3769 # Not all of them needed in config_host.mk, add more if need arises
3770 AC_SUBST(LIBO_BIN_FOLDER)
3771 AC_SUBST(LIBO_ETC_FOLDER)
3772 AC_SUBST(LIBO_LIB_FOLDER)
3773 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3774 AC_SUBST(LIBO_SHARE_FOLDER)
3775 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3776 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3777 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3778 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3779 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3780 AC_SUBST(LIBO_URE_BIN_FOLDER)
3781 AC_SUBST(LIBO_URE_ETC_FOLDER)
3782 AC_SUBST(LIBO_URE_LIB_FOLDER)
3783 AC_SUBST(LIBO_URE_MISC_FOLDER)
3784 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3786 dnl ===================================================================
3787 dnl Windows specific tests and stuff
3788 dnl ===================================================================
3790 reg_get_value()
3792     # Return value: $regvalue
3793     unset regvalue
3795     if test "$build_os" = "wsl"; then
3796         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3797         return
3798     fi
3800     local _regentry="/proc/registry${1}/${2}"
3801     if test -f "$_regentry"; then
3802         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3803         # Registry keys read via /proc/registry* are always \0 terminated!
3804         local _regvalue=$(tr -d '\0' < "$_regentry")
3805         if test $? -eq 0; then
3806             regvalue=$_regvalue
3807         fi
3808     fi
3811 # Get a value from the 32-bit side of the Registry
3812 reg_get_value_32()
3814     reg_get_value "32" "$1"
3817 # Get a value from the 64-bit side of the Registry
3818 reg_get_value_64()
3820     reg_get_value "64" "$1"
3823 reg_list_values()
3825     # Return value: $reglist
3826     unset reglist
3828     if test "$build_os" = "wsl"; then
3829         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3830         return
3831     fi
3833     reglist=$(ls "/proc/registry${1}/${2}")
3836 # List values from the 32-bit side of the Registry
3837 reg_list_values_32()
3839     reg_list_values "32" "$1"
3842 # List values from the 64-bit side of the Registry
3843 reg_list_values_64()
3845     reg_list_values "64" "$1"
3848 case "$host_os" in
3849 cygwin*|wsl*)
3850     COM=MSC
3851     OS=WNT
3852     RTL_OS=Windows
3853     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3854         P_SEP=";"
3855     else
3856         P_SEP=:
3857     fi
3858     case "$host_cpu" in
3859     x86_64)
3860         CPUNAME=X86_64
3861         RTL_ARCH=X86_64
3862         PLATFORMID=windows_x86_64
3863         WINDOWS_X64=1
3864         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3865         WIN_HOST_ARCH="x64"
3866         WIN_MULTI_ARCH="x86"
3867         WIN_HOST_BITS=64
3868         ;;
3869     i*86)
3870         CPUNAME=INTEL
3871         RTL_ARCH=x86
3872         PLATFORMID=windows_x86
3873         WIN_HOST_ARCH="x86"
3874         WIN_HOST_BITS=32
3875         WIN_OTHER_ARCH="x64"
3876         ;;
3877     aarch64)
3878         CPUNAME=AARCH64
3879         RTL_ARCH=AARCH64
3880         PLATFORMID=windows_aarch64
3881         WINDOWS_X64=1
3882         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3883         WIN_HOST_ARCH="arm64"
3884         WIN_HOST_BITS=64
3885         with_ucrt_dir=no
3886         ;;
3887     *)
3888         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3889         ;;
3890     esac
3892     case "$build_cpu" in
3893     x86_64) WIN_BUILD_ARCH="x64" ;;
3894     i*86) WIN_BUILD_ARCH="x86" ;;
3895     aarch64) WIN_BUILD_ARCH="arm64" ;;
3896     *)
3897         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3898         ;;
3899     esac
3901     SCPDEFS="$SCPDEFS -D_MSC_VER"
3902     ;;
3903 esac
3905 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3906 # other-arch won't, but wouldn't break the build (x64 on x86).
3907 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3908     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3912 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3913     # To allow building Windows multi-arch releases without cross-tooling
3914     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3915         cross_compiling="yes"
3916     fi
3919 if test "$cross_compiling" = "yes"; then
3920     export CROSS_COMPILING=TRUE
3921     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3922         ENABLE_WASM_STRIP=TRUE
3923     fi
3924     if test "$_os" = "Emscripten"; then
3925         if test "$with_main_module" = "calc"; then
3926             ENABLE_WASM_STRIP_WRITER=TRUE
3927         elif test "$with_main_module" = "writer"; then
3928             ENABLE_WASM_STRIP_CALC=TRUE
3929         fi
3930     fi
3931 else
3932     CROSS_COMPILING=
3933     BUILD_TYPE="$BUILD_TYPE NATIVE"
3935 AC_SUBST(CROSS_COMPILING)
3936 AC_SUBST(ENABLE_WASM_STRIP)
3937 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3938 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3940 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3941 # NOTE: must _not_ be used for bundled external libraries!
3942 ISYSTEM=
3943 if test "$GCC" = "yes"; then
3944     AC_MSG_CHECKING( for -isystem )
3945     save_CFLAGS=$CFLAGS
3946     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3947     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3948     CFLAGS=$save_CFLAGS
3949     if test -n "$ISYSTEM"; then
3950         AC_MSG_RESULT(yes)
3951     else
3952         AC_MSG_RESULT(no)
3953     fi
3955 if test -z "$ISYSTEM"; then
3956     # fall back to using -I
3957     ISYSTEM=-I
3959 AC_SUBST(ISYSTEM)
3961 dnl ===================================================================
3962 dnl  Check which Visual Studio compiler is used
3963 dnl ===================================================================
3965 map_vs_year_to_version()
3967     # Return value: $vsversion
3969     unset vsversion
3971     case $1 in
3972     2019)
3973         vsversion=16;;
3974     2022)
3975         vsversion=17;;
3976     2022preview)
3977         vsversion=17.5;;
3978     *)
3979         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3980     esac
3983 vs_versions_to_check()
3985     # Args: $1 (optional) : versions to check, in the order of preference
3986     # Return value: $vsversions
3988     unset vsversions
3990     if test -n "$1"; then
3991         map_vs_year_to_version "$1"
3992         vsversions=$vsversion
3993     else
3994         # Default version is 2019
3995         vsversions="16"
3996     fi
3999 win_get_env_from_vsdevcmdbat()
4001     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4002     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4003     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4004     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4005     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4006     local result
4007     if test "$build_os" = "wsl"; then
4008         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4009     else
4010         chmod +x $WRAPPERBATCHFILEPATH
4011         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4012     fi
4013     rm -f $WRAPPERBATCHFILEPATH
4014     printf '%s' "$result"
4017 find_ucrt()
4019     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4020     if test -n "$regvalue"; then
4021         PathFormat "$regvalue"
4022         UCRTSDKDIR=$formatted_path_unix
4023         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4024         UCRTVERSION=$regvalue
4025         # Rest if not exist
4026         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4027           UCRTSDKDIR=
4028         fi
4029     fi
4030     if test -z "$UCRTSDKDIR"; then
4031         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4032         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4033         if test -f "$ide_env_file"; then
4034             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4035             UCRTSDKDIR=$formatted_path
4036             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4037             dnl Hack needed at least by tml:
4038             if test "$UCRTVERSION" = 10.0.15063.0 \
4039                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4040                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4041             then
4042                 UCRTVERSION=10.0.14393.0
4043             fi
4044         else
4045           AC_MSG_ERROR([No UCRT found])
4046         fi
4047     fi
4050 find_msvc()
4052     # Find Visual C++
4053     # Args: $1 (optional) : The VS version year
4054     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4056     unset vctest vctoolset vcnumwithdot vcbuildnumber
4058     vs_versions_to_check "$1"
4059     if test "$build_os" = wsl; then
4060         vswhere="$PROGRAMFILESX86"
4061         if test -z "$vswhere"; then
4062             vswhere="c:\\Program Files (x86)"
4063         fi
4064     else
4065         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4066     fi
4067     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4068     PathFormat "$vswhere"
4069     vswhere=$formatted_path_unix
4070     for ver in $vsversions; do
4071         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4072         if test -z "$vswhereoutput"; then
4073             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4074         fi
4075         # Fall back to all MS products (this includes VC++ Build Tools)
4076         if ! test -n "$vswhereoutput"; then
4077             AC_MSG_CHECKING([VC++ Build Tools and similar])
4078             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4079         fi
4080         if test -n "$vswhereoutput"; then
4081             PathFormat "$vswhereoutput"
4082             vctest=$formatted_path_unix
4083             break
4084         fi
4085     done
4087     if test -n "$vctest"; then
4088         vcnumwithdot="$ver"
4089         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4090             vcnumwithdot=$vcnumwithdot.0
4091         fi
4092         case "$vcnumwithdot" in
4093         16.0)
4094             vcyear=2019
4095             vctoolset=v142
4096             ;;
4097         17.0 | 17.5)
4098             vcyear=2022
4099             vctoolset=v143
4100             ;;
4101         esac
4102         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4104     fi
4107 test_cl_exe()
4109     AC_MSG_CHECKING([$1 compiler])
4111     CL_EXE_PATH="$2/cl.exe"
4113     if test ! -f "$CL_EXE_PATH"; then
4114         if test "$1" = "multi-arch"; then
4115             AC_MSG_WARN([no compiler (cl.exe) in $2])
4116             return 1
4117         else
4118             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4119         fi
4120     fi
4122     dnl ===========================================================
4123     dnl  Check for the corresponding mspdb*.dll
4124     dnl ===========================================================
4126     # MSVC 15.0 has libraries from 14.0?
4127     mspdbnum="140"
4129     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4130         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4131     fi
4133     # The compiles has to find its shared libraries
4134     OLD_PATH="$PATH"
4135     TEMP_PATH=`cygpath -d "$2"`
4136     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4138     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4139         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4140     fi
4142     PATH="$OLD_PATH"
4144     AC_MSG_RESULT([$CL_EXE_PATH])
4147 SOLARINC=
4148 MSBUILD_PATH=
4149 DEVENV=
4150 if test "$_os" = "WINNT"; then
4151     AC_MSG_CHECKING([Visual C++])
4152     find_msvc "$with_visual_studio"
4153     if test -z "$vctest"; then
4154         if test -n "$with_visual_studio"; then
4155             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4156         else
4157             AC_MSG_ERROR([no Visual Studio installation found])
4158         fi
4159     fi
4160     AC_MSG_RESULT([])
4162     VC_PRODUCT_DIR="$vctest/VC"
4163     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4165     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4166     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4167         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4168         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4169         if test $? -ne 0; then
4170             WIN_MULTI_ARCH=""
4171             WIN_OTHER_ARCH=""
4172         fi
4173     fi
4175     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4176         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4177         test_cl_exe "build" "$MSVC_BUILD_PATH"
4178     fi
4180     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4181         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4182         test_cl_exe "host" "$MSVC_HOST_PATH"
4183     else
4184         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4185     fi
4187     AC_MSG_CHECKING([for short pathname of VC product directory])
4188     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4189     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4191     UCRTSDKDIR=
4192     UCRTVERSION=
4194     AC_MSG_CHECKING([for UCRT location])
4195     find_ucrt
4196     # find_ucrt errors out if it doesn't find it
4197     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4198     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4199     ucrtincpath_formatted=$formatted_path
4200     # SOLARINC is used for external modules and must be set too.
4201     # And no, it's not sufficient to set SOLARINC only, as configure
4202     # itself doesn't honour it.
4203     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4204     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4205     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4206     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4208     AC_SUBST(UCRTSDKDIR)
4209     AC_SUBST(UCRTVERSION)
4211     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4212     # Find the proper version of MSBuild.exe to use based on the VS version
4213     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4214     if test -z "$regvalue" ; then
4215         if test "$WIN_BUILD_ARCH" != "x64"; then
4216             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4217         else
4218             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4219         fi
4220     fi
4221     if test -d "$regvalue" ; then
4222         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4223         AC_MSG_RESULT([$regvalue])
4224     else
4225         AC_MSG_ERROR([MSBuild.exe location not found])
4226     fi
4228     # Find the version of devenv.exe
4229     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4230     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4231     DEVENV_unix=$(cygpath -u "$DEVENV")
4232     if test ! -e "$DEVENV_unix"; then
4233         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4234     fi
4236     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4237     dnl needed when building CLR code:
4238     if test -z "$MSVC_CXX"; then
4239         # This gives us a posix path with 8.3 filename restrictions
4240         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4241     fi
4243     if test -z "$CC"; then
4244         CC=$MSVC_CXX
4245         CC_BASE=`first_arg_basename "$CC"`
4246     fi
4247     if test -z "$CXX"; then
4248         CXX=$MSVC_CXX
4249         CXX_BASE=`first_arg_basename "$CXX"`
4250     fi
4252     if test -n "$CC"; then
4253         # Remove /cl.exe from CC case insensitive
4254         AC_MSG_NOTICE([found Visual C++ $vcyear])
4256         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4257         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4259         PathFormat "$COMPATH"
4260         COMPATH=`win_short_path_for_make "$formatted_path"`
4262         VCVER=$vcnumwithdot
4263         VCTOOLSET=$vctoolset
4265         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4266         # are always "better", we list them in reverse chronological order.
4268         case "$vcnumwithdot" in
4269         16.0 | 17.0 | 17.5)
4270             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4271             ;;
4272         esac
4274         # The expectation is that --with-windows-sdk should not need to be used
4275         if test -n "$with_windows_sdk"; then
4276             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4277             *" "$with_windows_sdk" "*)
4278                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4279                 ;;
4280             *)
4281                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4282                 ;;
4283             esac
4284         fi
4286         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4287         ac_objext=obj
4288         ac_exeext=exe
4290     else
4291         AC_MSG_ERROR([Visual C++ not found after all, huh])
4292     fi
4294     # ERROR if VS version < 16.5
4295     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4296     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4297         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4298         // between Visual Studio versions and _MSC_VER:
4299         #if _MSC_VER < 1925
4300         #error
4301         #endif
4302     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4304     # WARN if VS version < 16.10
4305     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4306     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4307         #if _MSC_VER < 1929
4308         #error
4309         #endif
4310     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4312     if test $vs2019_recommended_version = yes; then
4313         AC_MSG_RESULT([yes])
4314     else
4315         AC_MSG_WARN([no])
4316         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."
4317     fi
4319     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4320     # version of the Explorer extension (and maybe other small
4321     # bits, too) needed when installing a 32-bit LibreOffice on a
4322     # 64-bit OS. The 64-bit Explorer extension is a feature that
4323     # has been present since long in OOo. Don't confuse it with
4324     # building LibreOffice itself as 64-bit code.
4326     BUILD_X64=
4327     CXX_X64_BINARY=
4329     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4330         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4331         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4332              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4333         then
4334             BUILD_X64=TRUE
4335             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4336             AC_MSG_RESULT([found])
4337         else
4338             AC_MSG_RESULT([not found])
4339             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4340         fi
4341     elif test "$WIN_HOST_ARCH" = "x64"; then
4342         CXX_X64_BINARY=$CXX
4343     fi
4344     AC_SUBST(BUILD_X64)
4346     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4347     AC_SUBST(CXX_X64_BINARY)
4349     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4350     # needed to support TWAIN scan on both 32- and 64-bit systems
4352     case "$WIN_HOST_ARCH" in
4353     x64)
4354         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4355         if test -n "$CXX_X86_BINARY"; then
4356             BUILD_X86=TRUE
4357             AC_MSG_RESULT([preset])
4358         elif test -n "$WIN_MULTI_ARCH"; then
4359             BUILD_X86=TRUE
4360             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4361             AC_MSG_RESULT([found])
4362         else
4363             AC_MSG_RESULT([not found])
4364             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4365         fi
4366         ;;
4367     x86)
4368         BUILD_X86=TRUE
4369         CXX_X86_BINARY=$MSVC_CXX
4370         ;;
4371     esac
4372     AC_SUBST(BUILD_X86)
4373     AC_SUBST(CXX_X86_BINARY)
4375 AC_SUBST(VCVER)
4376 AC_SUBST(VCTOOLSET)
4377 AC_SUBST(DEVENV)
4378 AC_SUBST(MSVC_CXX)
4380 COM_IS_CLANG=
4381 AC_MSG_CHECKING([whether the compiler is actually Clang])
4382 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4383     #ifndef __clang__
4384     you lose
4385     #endif
4386     int foo=42;
4387     ]])],
4388     [AC_MSG_RESULT([yes])
4389      COM_IS_CLANG=TRUE],
4390     [AC_MSG_RESULT([no])])
4391 AC_SUBST(COM_IS_CLANG)
4393 CLANGVER=
4394 if test "$COM_IS_CLANG" = TRUE; then
4395     AC_MSG_CHECKING([whether Clang is new enough])
4396     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4397         #if !defined __apple_build_version__
4398         #error
4399         #endif
4400         ]])],
4401         [my_apple_clang=yes],[my_apple_clang=])
4402     if test "$my_apple_clang" = yes; then
4403         AC_MSG_RESULT([assumed yes (Apple Clang)])
4404     elif test "$_os" = Emscripten; then
4405         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4406     else
4407         if test "$_os" = WINNT; then
4408             dnl In which case, assume clang-cl:
4409             my_args="/EP /TC"
4410         else
4411             my_args="-E -P"
4412         fi
4413         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4414         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4415         CLANGVER=`echo $clang_version \
4416             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4417         if test "$CLANGVER" -ge 80001; then
4418             AC_MSG_RESULT([yes ($clang_version)])
4419         else
4420             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4421         fi
4422         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4423         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4424     fi
4427 SHOWINCLUDES_PREFIX=
4428 if test "$_os" = WINNT; then
4429     dnl We need to guess the prefix of the -showIncludes output, it can be
4430     dnl localized
4431     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4432     echo "#include <stdlib.h>" > conftest.c
4433     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4434         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4435     rm -f conftest.c conftest.obj
4436     if test -z "$SHOWINCLUDES_PREFIX"; then
4437         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4438     else
4439         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4440     fi
4442 AC_SUBST(SHOWINCLUDES_PREFIX)
4445 # prefix C with ccache if needed
4447 if test "$CCACHE" != ""; then
4448     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4450     AC_LANG_PUSH([C])
4451     save_CFLAGS=$CFLAGS
4452     CFLAGS="$CFLAGS --ccache-skip -O2"
4453     # msvc does not fail on unknown options, check stdout
4454     if test "$COM" = MSC; then
4455         CFLAGS="$CFLAGS -nologo"
4456     fi
4457     save_ac_c_werror_flag=$ac_c_werror_flag
4458     ac_c_werror_flag=yes
4459     dnl an empty program will do, we're checking the compiler flags
4460     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4461                       [use_ccache=yes], [use_ccache=no])
4462     CFLAGS=$save_CFLAGS
4463     ac_c_werror_flag=$save_ac_c_werror_flag
4464     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4465         AC_MSG_RESULT([yes])
4466     else
4467         CC="$CCACHE $CC"
4468         CC_BASE="ccache $CC_BASE"
4469         AC_MSG_RESULT([no])
4470     fi
4471     AC_LANG_POP([C])
4474 # ===================================================================
4475 # check various GCC options that Clang does not support now but maybe
4476 # will somewhen in the future, check them even for GCC, so that the
4477 # flags are set
4478 # ===================================================================
4480 HAVE_GCC_GGDB2=
4481 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4482     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4483     save_CFLAGS=$CFLAGS
4484     CFLAGS="$CFLAGS -Werror -ggdb2"
4485     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4486     CFLAGS=$save_CFLAGS
4487     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4488         AC_MSG_RESULT([yes])
4489     else
4490         AC_MSG_RESULT([no])
4491     fi
4493     if test "$host_cpu" = "m68k"; then
4494         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4495         save_CFLAGS=$CFLAGS
4496         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4497         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4498         CFLAGS=$save_CFLAGS
4499         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4500             AC_MSG_RESULT([yes])
4501         else
4502             AC_MSG_ERROR([no])
4503         fi
4504     fi
4506 AC_SUBST(HAVE_GCC_GGDB2)
4508 dnl ===================================================================
4509 dnl  Test the gcc version
4510 dnl ===================================================================
4511 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4512     AC_MSG_CHECKING([the GCC version])
4513     _gcc_version=`$CC -dumpfullversion`
4514     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4515         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4516     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4518     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4520     if test "$gcc_full_version" -lt 70000; then
4521         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4522     fi
4523 else
4524     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4525     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4526     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4527     # (which reports itself as GCC 4.2.1).
4528     GCC_VERSION=
4530 AC_SUBST(GCC_VERSION)
4532 dnl Set the ENABLE_DBGUTIL variable
4533 dnl ===================================================================
4534 AC_MSG_CHECKING([whether to build with additional debug utilities])
4535 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4536     ENABLE_DBGUTIL="TRUE"
4537     # this is an extra var so it can have different default on different MSVC
4538     # versions (in case there are version specific problems with it)
4539     MSVC_USE_DEBUG_RUNTIME="TRUE"
4541     AC_MSG_RESULT([yes])
4542     # cppunit and graphite expose STL in public headers
4543     if test "$with_system_cppunit" = "yes"; then
4544         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4545     else
4546         with_system_cppunit=no
4547     fi
4548     if test "$with_system_graphite" = "yes"; then
4549         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4550     else
4551         with_system_graphite=no
4552     fi
4553     if test "$with_system_orcus" = "yes"; then
4554         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4555     else
4556         with_system_orcus=no
4557     fi
4558     if test "$with_system_libcmis" = "yes"; then
4559         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4560     else
4561         with_system_libcmis=no
4562     fi
4563     if test "$with_system_hunspell" = "yes"; then
4564         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4565     else
4566         with_system_hunspell=no
4567     fi
4568     if test "$with_system_gpgmepp" = "yes"; then
4569         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4570     else
4571         with_system_gpgmepp=no
4572     fi
4573     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4574     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4575     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4576     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4577     # of those two is using the system variant:
4578     if test "$with_system_libnumbertext" = "yes"; then
4579         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4580     else
4581         with_system_libnumbertext=no
4582     fi
4583     if test "$with_system_libwps" = "yes"; then
4584         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4585     else
4586         with_system_libwps=no
4587     fi
4588 else
4589     ENABLE_DBGUTIL=""
4590     MSVC_USE_DEBUG_RUNTIME=""
4591     AC_MSG_RESULT([no])
4593 AC_SUBST(ENABLE_DBGUTIL)
4594 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4596 dnl Set the ENABLE_DEBUG variable.
4597 dnl ===================================================================
4598 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4599     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4601 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4602     if test -z "$libo_fuzzed_enable_debug"; then
4603         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4604     else
4605         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4606         enable_debug=yes
4607     fi
4610 AC_MSG_CHECKING([whether to do a debug build])
4611 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4612     ENABLE_DEBUG="TRUE"
4613     if test -n "$ENABLE_DBGUTIL" ; then
4614         AC_MSG_RESULT([yes (dbgutil)])
4615     else
4616         AC_MSG_RESULT([yes])
4617     fi
4618 else
4619     ENABLE_DEBUG=""
4620     AC_MSG_RESULT([no])
4622 AC_SUBST(ENABLE_DEBUG)
4624 dnl ===================================================================
4625 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4626 dnl This is done only after compiler checks (need to know if Clang is
4627 dnl used, for different defaults) and after checking if a debug build
4628 dnl is wanted (non-debug builds get the default linker if not explicitly
4629 dnl specified otherwise).
4630 dnl All checks for linker features/options should come after this.
4631 dnl ===================================================================
4632 check_use_ld()
4634     use_ld=-fuse-ld=${1%%:*}
4635     use_ld_path=${1#*:}
4636     if test "$use_ld_path" != "$1"; then
4637         if test "$COM_IS_CLANG" = TRUE; then
4638             if test "$CLANGVER" -ge 120000; then
4639                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4640             else
4641                 use_ld="-fuse-ld=${use_ld_path}"
4642             fi
4643         else
4644             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4645             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4646             # pickup the alternative linker, when called by libtool for linking.
4647             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4648             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4649         fi
4650     fi
4651     use_ld_fail_if_error=$2
4652     use_ld_ok=
4653     AC_MSG_CHECKING([for $use_ld linker support])
4654     use_ld_ldflags_save="$LDFLAGS"
4655     LDFLAGS="$LDFLAGS $use_ld"
4656     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4657 #include <stdio.h>
4658         ],[
4659 printf ("hello world\n");
4660         ])], USE_LD=$use_ld, [])
4661     if test -n "$USE_LD"; then
4662         AC_MSG_RESULT( yes )
4663         use_ld_ok=yes
4664     else
4665         if test -n "$use_ld_fail_if_error"; then
4666             AC_MSG_ERROR( no )
4667         else
4668             AC_MSG_RESULT( no )
4669         fi
4670     fi
4671     if test -n "$use_ld_ok"; then
4672         dnl keep the value of LDFLAGS
4673         return 0
4674     fi
4675     LDFLAGS="$use_ld_ldflags_save"
4676     return 1
4678 USE_LD=
4679 if test "$enable_ld" != "no"; then
4680     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4681         if test -n "$enable_ld"; then
4682             check_use_ld "$enable_ld" fail_if_error
4683         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4684             dnl non-debug builds default to the default linker
4685             true
4686         elif test -n "$COM_IS_CLANG"; then
4687             check_use_ld lld
4688             if test $? -ne 0; then
4689                 check_use_ld gold
4690                 if test $? -ne 0; then
4691                     check_use_ld mold
4692                 fi
4693             fi
4694         else
4695             # For gcc first try gold, new versions also support lld/mold.
4696             check_use_ld gold
4697             if test $? -ne 0; then
4698                 check_use_ld lld
4699                 if test $? -ne 0; then
4700                     check_use_ld mold
4701                 fi
4702             fi
4703         fi
4704         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4705         rm conftest.out
4706         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4707         if test -z "$ld_used"; then
4708             ld_used="unknown"
4709         fi
4710         AC_MSG_CHECKING([for linker that is used])
4711         AC_MSG_RESULT([$ld_used])
4712         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4713             if echo "$ld_used" | grep -q "^GNU ld"; then
4714                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4715                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4716             fi
4717         fi
4718     else
4719         if test "$enable_ld" = "yes"; then
4720             AC_MSG_ERROR([--enable-ld not supported])
4721         fi
4722     fi
4724 AC_SUBST(USE_LD)
4725 AC_SUBST(LD)
4727 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4728 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4729     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4730     bsymbolic_functions_ldflags_save=$LDFLAGS
4731     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4732     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4733 #include <stdio.h>
4734         ],[
4735 printf ("hello world\n");
4736         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4737     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4738         AC_MSG_RESULT( found )
4739     else
4740         AC_MSG_RESULT( not found )
4741     fi
4742     LDFLAGS=$bsymbolic_functions_ldflags_save
4744 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4746 LD_GC_SECTIONS=
4747 if test "$GCC" = "yes"; then
4748     for flag in "--gc-sections" "-dead_strip"; do
4749         AC_MSG_CHECKING([for $flag linker support])
4750         ldflags_save=$LDFLAGS
4751         LDFLAGS="$LDFLAGS -Wl,$flag"
4752         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4753 #include <stdio.h>
4754             ],[
4755 printf ("hello world\n");
4756             ])],[
4757             LD_GC_SECTIONS="-Wl,$flag"
4758             AC_MSG_RESULT( found )
4759             ], [
4760             AC_MSG_RESULT( not found )
4761             ])
4762         LDFLAGS=$ldflags_save
4763         if test -n "$LD_GC_SECTIONS"; then
4764             break
4765         fi
4766     done
4768 AC_SUBST(LD_GC_SECTIONS)
4770 HAVE_EXTERNAL_DWARF=
4771 if test "$enable_split_debug" != no; then
4772     use_split_debug=
4773     if test -n "$ENABLE_LTO"; then
4774         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4775     elif test "$enable_split_debug" = yes; then
4776         use_split_debug=1
4777     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4778     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4779         use_split_debug=1
4780     fi
4781     if test -n "$use_split_debug"; then
4782         if test "$_os" = "Emscripten"; then
4783             TEST_CC_FLAG=-gseparate-dwarf
4784         else
4785             TEST_CC_FLAG=-gsplit-dwarf
4786         fi
4787         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4788         save_CFLAGS=$CFLAGS
4789         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4790         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4791         CFLAGS=$save_CFLAGS
4792         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4793             AC_MSG_RESULT([yes])
4794         else
4795             if test "$enable_split_debug" = yes; then
4796                 AC_MSG_ERROR([no])
4797             else
4798                 AC_MSG_RESULT([no])
4799             fi
4800         fi
4801     fi
4802     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4803         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4804         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4805     fi
4807 AC_SUBST(HAVE_EXTERNAL_DWARF)
4809 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4810 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4811 save_CFLAGS=$CFLAGS
4812 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4813 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4814 CFLAGS=$save_CFLAGS
4815 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4816     AC_MSG_RESULT([yes])
4817 else
4818     AC_MSG_RESULT([no])
4820 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4822 ENABLE_GDB_INDEX=
4823 if test "$enable_gdb_index" != "no"; then
4824     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4825     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4826         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4827         save_CFLAGS=$CFLAGS
4828         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4829         have_ggnu_pubnames=
4830         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4831         if test "$have_ggnu_pubnames" != "TRUE"; then
4832             if test "$enable_gdb_index" = "yes"; then
4833                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4834             else
4835                 AC_MSG_RESULT( no )
4836             fi
4837         else
4838             AC_MSG_RESULT( yes )
4839             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4840             ldflags_save=$LDFLAGS
4841             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4842             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4843 #include <stdio.h>
4844                 ],[
4845 printf ("hello world\n");
4846                 ])], ENABLE_GDB_INDEX=TRUE, [])
4847             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4848                 AC_MSG_RESULT( yes )
4849             else
4850                 if test "$enable_gdb_index" = "yes"; then
4851                     AC_MSG_ERROR( no )
4852                 else
4853                     AC_MSG_RESULT( no )
4854                 fi
4855             fi
4856             LDFLAGS=$ldflags_save
4857         fi
4858         CFLAGS=$save_CFLAGS
4859         fi
4860     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4861         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4862         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4863     fi
4865 AC_SUBST(ENABLE_GDB_INDEX)
4867 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4868     enable_sal_log=yes
4870 if test "$enable_sal_log" = yes; then
4871     ENABLE_SAL_LOG=TRUE
4873 AC_SUBST(ENABLE_SAL_LOG)
4875 dnl Check for enable symbols option
4876 dnl ===================================================================
4877 AC_MSG_CHECKING([whether to generate debug information])
4878 if test -z "$enable_symbols"; then
4879     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4880         enable_symbols=yes
4881     else
4882         enable_symbols=no
4883     fi
4885 if test "$enable_symbols" = yes; then
4886     ENABLE_SYMBOLS_FOR=all
4887     AC_MSG_RESULT([yes])
4888 elif test "$enable_symbols" = no; then
4889     ENABLE_SYMBOLS_FOR=
4890     AC_MSG_RESULT([no])
4891 else
4892     # Selective debuginfo.
4893     ENABLE_SYMBOLS_FOR="$enable_symbols"
4894     AC_MSG_RESULT([for "$enable_symbols"])
4896 AC_SUBST(ENABLE_SYMBOLS_FOR)
4898 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4899     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4900     AC_MSG_CHECKING([whether enough memory is available for linking])
4901     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4902     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4903     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4904         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4905     else
4906         AC_MSG_RESULT([yes])
4907     fi
4910 ENABLE_OPTIMIZED=
4911 ENABLE_OPTIMIZED_DEBUG=
4912 AC_MSG_CHECKING([whether to compile with optimization flags])
4913 if test -z "$enable_optimized"; then
4914     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4915         enable_optimized=no
4916     else
4917         enable_optimized=yes
4918     fi
4920 if test "$enable_optimized" = yes; then
4921     ENABLE_OPTIMIZED=TRUE
4922     AC_MSG_RESULT([yes])
4923 elif test "$enable_optimized" = debug; then
4924     ENABLE_OPTIMIZED_DEBUG=TRUE
4925     AC_MSG_RESULT([yes (debug)])
4926     HAVE_GCC_OG=
4927     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4928         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4929         save_CFLAGS=$CFLAGS
4930         CFLAGS="$CFLAGS -Werror -Og"
4931         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4932         CFLAGS=$save_CFLAGS
4933         if test "$HAVE_GCC_OG" = "TRUE"; then
4934             AC_MSG_RESULT([yes])
4935         else
4936             AC_MSG_RESULT([no])
4937         fi
4938     fi
4939     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4940         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4941     fi
4942 else
4943     AC_MSG_RESULT([no])
4945 AC_SUBST(ENABLE_OPTIMIZED)
4946 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4949 # determine CPUNAME, OS, ...
4951 case "$host_os" in
4953 cygwin*|wsl*)
4954     # Already handled
4955     ;;
4957 darwin*)
4958     COM=GCC
4959     OS=MACOSX
4960     RTL_OS=MacOSX
4961     P_SEP=:
4963     case "$host_cpu" in
4964     aarch64|arm64)
4965         if test "$enable_ios_simulator" = "yes"; then
4966             OS=iOS
4967         else
4968             CPUNAME=AARCH64
4969             RTL_ARCH=AARCH64
4970             PLATFORMID=macosx_aarch64
4971         fi
4972         ;;
4973     x86_64)
4974         if test "$enable_ios_simulator" = "yes"; then
4975             OS=iOS
4976         fi
4977         CPUNAME=X86_64
4978         RTL_ARCH=X86_64
4979         PLATFORMID=macosx_x86_64
4980         ;;
4981     *)
4982         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4983         ;;
4984     esac
4985     ;;
4987 ios*)
4988     COM=GCC
4989     OS=iOS
4990     RTL_OS=iOS
4991     P_SEP=:
4993     case "$host_cpu" in
4994     aarch64|arm64)
4995         if test "$enable_ios_simulator" = "yes"; then
4996             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4997         fi
4998         ;;
4999     *)
5000         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5001         ;;
5002     esac
5003     CPUNAME=AARCH64
5004     RTL_ARCH=AARCH64
5005     PLATFORMID=ios_arm64
5006     ;;
5008 dragonfly*)
5009     COM=GCC
5010     OS=DRAGONFLY
5011     RTL_OS=DragonFly
5012     P_SEP=:
5014     case "$host_cpu" in
5015     i*86)
5016         CPUNAME=INTEL
5017         RTL_ARCH=x86
5018         PLATFORMID=dragonfly_x86
5019         ;;
5020     x86_64)
5021         CPUNAME=X86_64
5022         RTL_ARCH=X86_64
5023         PLATFORMID=dragonfly_x86_64
5024         ;;
5025     *)
5026         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5027         ;;
5028     esac
5029     ;;
5031 freebsd*)
5032     COM=GCC
5033     RTL_OS=FreeBSD
5034     OS=FREEBSD
5035     P_SEP=:
5037     case "$host_cpu" in
5038     aarch64)
5039         CPUNAME=AARCH64
5040         PLATFORMID=freebsd_aarch64
5041         RTL_ARCH=AARCH64
5042         ;;
5043     i*86)
5044         CPUNAME=INTEL
5045         RTL_ARCH=x86
5046         PLATFORMID=freebsd_x86
5047         ;;
5048     x86_64|amd64)
5049         CPUNAME=X86_64
5050         RTL_ARCH=X86_64
5051         PLATFORMID=freebsd_x86_64
5052         ;;
5053     powerpc64)
5054         CPUNAME=POWERPC64
5055         RTL_ARCH=PowerPC_64
5056         PLATFORMID=freebsd_powerpc64
5057         ;;
5058     powerpc|powerpcspe)
5059         CPUNAME=POWERPC
5060         RTL_ARCH=PowerPC
5061         PLATFORMID=freebsd_powerpc
5062         ;;
5063     *)
5064         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5065         ;;
5066     esac
5067     ;;
5069 haiku*)
5070     COM=GCC
5071     GUIBASE=haiku
5072     RTL_OS=Haiku
5073     OS=HAIKU
5074     P_SEP=:
5076     case "$host_cpu" in
5077     i*86)
5078         CPUNAME=INTEL
5079         RTL_ARCH=x86
5080         PLATFORMID=haiku_x86
5081         ;;
5082     x86_64|amd64)
5083         CPUNAME=X86_64
5084         RTL_ARCH=X86_64
5085         PLATFORMID=haiku_x86_64
5086         ;;
5087     *)
5088         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5089         ;;
5090     esac
5091     ;;
5093 kfreebsd*)
5094     COM=GCC
5095     OS=LINUX
5096     RTL_OS=kFreeBSD
5097     P_SEP=:
5099     case "$host_cpu" in
5101     i*86)
5102         CPUNAME=INTEL
5103         RTL_ARCH=x86
5104         PLATFORMID=kfreebsd_x86
5105         ;;
5106     x86_64)
5107         CPUNAME=X86_64
5108         RTL_ARCH=X86_64
5109         PLATFORMID=kfreebsd_x86_64
5110         ;;
5111     *)
5112         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5113         ;;
5114     esac
5115     ;;
5117 linux-gnu*|linux-musl*)
5118     COM=GCC
5119     OS=LINUX
5120     RTL_OS=Linux
5121     P_SEP=:
5123     case "$host_cpu" in
5125     aarch64)
5126         CPUNAME=AARCH64
5127         PLATFORMID=linux_aarch64
5128         RTL_ARCH=AARCH64
5129         EPM_FLAGS="-a arm64"
5130         ;;
5131     alpha)
5132         CPUNAME=AXP
5133         RTL_ARCH=ALPHA
5134         PLATFORMID=linux_alpha
5135         ;;
5136     arm*)
5137         CPUNAME=ARM
5138         EPM_FLAGS="-a arm"
5139         RTL_ARCH=ARM_EABI
5140         PLATFORMID=linux_arm_eabi
5141         case "$host_cpu" in
5142         arm*-linux)
5143             RTL_ARCH=ARM_OABI
5144             PLATFORMID=linux_arm_oabi
5145             ;;
5146         esac
5147         ;;
5148     hppa)
5149         CPUNAME=HPPA
5150         RTL_ARCH=HPPA
5151         EPM_FLAGS="-a hppa"
5152         PLATFORMID=linux_hppa
5153         ;;
5154     i*86)
5155         CPUNAME=INTEL
5156         RTL_ARCH=x86
5157         PLATFORMID=linux_x86
5158         ;;
5159     ia64)
5160         CPUNAME=IA64
5161         RTL_ARCH=IA64
5162         PLATFORMID=linux_ia64
5163         ;;
5164     mips)
5165         CPUNAME=MIPS
5166         RTL_ARCH=MIPS_EB
5167         EPM_FLAGS="-a mips"
5168         PLATFORMID=linux_mips_eb
5169         ;;
5170     mips64)
5171         CPUNAME=MIPS64
5172         RTL_ARCH=MIPS64_EB
5173         EPM_FLAGS="-a mips64"
5174         PLATFORMID=linux_mips64_eb
5175         ;;
5176     mips64el)
5177         CPUNAME=MIPS64
5178         RTL_ARCH=MIPS64_EL
5179         EPM_FLAGS="-a mips64el"
5180         PLATFORMID=linux_mips64_el
5181         ;;
5182     mipsel)
5183         CPUNAME=MIPS
5184         RTL_ARCH=MIPS_EL
5185         EPM_FLAGS="-a mipsel"
5186         PLATFORMID=linux_mips_el
5187         ;;
5188     riscv64)
5189         CPUNAME=RISCV64
5190         RTL_ARCH=RISCV64
5191         EPM_FLAGS="-a riscv64"
5192         PLATFORMID=linux_riscv64
5193         ;;
5194     m68k)
5195         CPUNAME=M68K
5196         RTL_ARCH=M68K
5197         PLATFORMID=linux_m68k
5198         ;;
5199     powerpc)
5200         CPUNAME=POWERPC
5201         RTL_ARCH=PowerPC
5202         PLATFORMID=linux_powerpc
5203         ;;
5204     powerpc64)
5205         CPUNAME=POWERPC64
5206         RTL_ARCH=PowerPC_64
5207         PLATFORMID=linux_powerpc64
5208         ;;
5209     powerpc64le)
5210         CPUNAME=POWERPC64
5211         RTL_ARCH=PowerPC_64_LE
5212         PLATFORMID=linux_powerpc64_le
5213         ;;
5214     sparc)
5215         CPUNAME=SPARC
5216         RTL_ARCH=SPARC
5217         PLATFORMID=linux_sparc
5218         ;;
5219     sparc64)
5220         CPUNAME=SPARC64
5221         RTL_ARCH=SPARC64
5222         PLATFORMID=linux_sparc64
5223         ;;
5224     s390x)
5225         CPUNAME=S390X
5226         RTL_ARCH=S390x
5227         PLATFORMID=linux_s390x
5228         ;;
5229     x86_64)
5230         CPUNAME=X86_64
5231         RTL_ARCH=X86_64
5232         PLATFORMID=linux_x86_64
5233         ;;
5234     loongarch64)
5235         CPUNAME=LOONGARCH64
5236         RTL_ARCH=LOONGARCH64
5237         PLATFORMID=linux_loongarch64
5238         ;;
5239     *)
5240         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5241         ;;
5242     esac
5243     ;;
5245 linux-android*)
5246     COM=GCC
5247     OS=ANDROID
5248     RTL_OS=Android
5249     P_SEP=:
5251     case "$host_cpu" in
5253     arm|armel)
5254         CPUNAME=ARM
5255         RTL_ARCH=ARM_EABI
5256         PLATFORMID=android_arm_eabi
5257         ;;
5258     aarch64)
5259         CPUNAME=AARCH64
5260         RTL_ARCH=AARCH64
5261         PLATFORMID=android_aarch64
5262         ;;
5263     i*86)
5264         CPUNAME=INTEL
5265         RTL_ARCH=x86
5266         PLATFORMID=android_x86
5267         ;;
5268     x86_64)
5269         CPUNAME=X86_64
5270         RTL_ARCH=X86_64
5271         PLATFORMID=android_x86_64
5272         ;;
5273     *)
5274         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5275         ;;
5276     esac
5277     ;;
5279 *netbsd*)
5280     COM=GCC
5281     OS=NETBSD
5282     RTL_OS=NetBSD
5283     P_SEP=:
5285     case "$host_cpu" in
5286     i*86)
5287         CPUNAME=INTEL
5288         RTL_ARCH=x86
5289         PLATFORMID=netbsd_x86
5290         ;;
5291     powerpc)
5292         CPUNAME=POWERPC
5293         RTL_ARCH=PowerPC
5294         PLATFORMID=netbsd_powerpc
5295         ;;
5296     sparc)
5297         CPUNAME=SPARC
5298         RTL_ARCH=SPARC
5299         PLATFORMID=netbsd_sparc
5300         ;;
5301     x86_64)
5302         CPUNAME=X86_64
5303         RTL_ARCH=X86_64
5304         PLATFORMID=netbsd_x86_64
5305         ;;
5306     *)
5307         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5308         ;;
5309     esac
5310     ;;
5312 openbsd*)
5313     COM=GCC
5314     OS=OPENBSD
5315     RTL_OS=OpenBSD
5316     P_SEP=:
5318     case "$host_cpu" in
5319     i*86)
5320         CPUNAME=INTEL
5321         RTL_ARCH=x86
5322         PLATFORMID=openbsd_x86
5323         ;;
5324     x86_64)
5325         CPUNAME=X86_64
5326         RTL_ARCH=X86_64
5327         PLATFORMID=openbsd_x86_64
5328         ;;
5329     *)
5330         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5331         ;;
5332     esac
5333     SOLARINC="$SOLARINC -I/usr/local/include"
5334     ;;
5336 solaris*)
5337     COM=GCC
5338     OS=SOLARIS
5339     RTL_OS=Solaris
5340     P_SEP=:
5342     case "$host_cpu" in
5343     i*86)
5344         CPUNAME=INTEL
5345         RTL_ARCH=x86
5346         PLATFORMID=solaris_x86
5347         ;;
5348     sparc)
5349         CPUNAME=SPARC
5350         RTL_ARCH=SPARC
5351         PLATFORMID=solaris_sparc
5352         ;;
5353     sparc64)
5354         CPUNAME=SPARC64
5355         RTL_ARCH=SPARC64
5356         PLATFORMID=solaris_sparc64
5357         ;;
5358     *)
5359         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5360         ;;
5361     esac
5362     SOLARINC="$SOLARINC -I/usr/local/include"
5363     ;;
5365 emscripten*)
5366     COM=GCC
5367     OS=EMSCRIPTEN
5368     RTL_OS=Emscripten
5369     P_SEP=:
5371     case "$host_cpu" in
5372     wasm32|wasm64)
5373         ;;
5374     *)
5375         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5376         ;;
5377     esac
5378     CPUNAME=INTEL
5379     RTL_ARCH=x86
5380     PLATFORMID=linux_x86
5381     ;;
5384     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5385     ;;
5386 esac
5388 DISABLE_GUI=""
5389 if test "$enable_gui" = "no"; then
5390     if test "$using_x11" != yes; then
5391         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5392     fi
5393     USING_X11=
5394     DISABLE_GUI=TRUE
5395     test_epoxy=no
5396 else
5397     AC_DEFINE(HAVE_FEATURE_UI)
5399 AC_SUBST(DISABLE_GUI)
5401 if test "$with_x" = "no"; then
5402     USING_X11=
5405 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5406     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5409 if test "$using_x11" = yes; then
5410     if test "$USING_X11" = TRUE; then
5411         AC_DEFINE(USING_X11)
5412     else
5413         disable_x11_tests
5414         if test "$DISABLE_DYNLOADING" = TRUE; then
5415             test_qt5=yes
5416         fi
5417     fi
5418 else
5419     if test "$USING_X11" = TRUE; then
5420         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5421     fi
5424 WORKDIR="${BUILDDIR}/workdir"
5425 INSTDIR="${BUILDDIR}/instdir"
5426 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5427 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5428 AC_SUBST(COM)
5429 AC_SUBST(CPUNAME)
5430 AC_SUBST(RTL_OS)
5431 AC_SUBST(RTL_ARCH)
5432 AC_SUBST(EPM_FLAGS)
5433 AC_SUBST(USING_X11)
5434 AC_SUBST([INSTDIR])
5435 AC_SUBST([INSTROOT])
5436 AC_SUBST([INSTROOTBASE])
5437 AC_SUBST(OS)
5438 AC_SUBST(P_SEP)
5439 AC_SUBST(WORKDIR)
5440 AC_SUBST(PLATFORMID)
5441 AC_SUBST(WINDOWS_X64)
5442 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5443 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5445 if test "$OS" = WNT -a "$COM" = MSC; then
5446     case "$CPUNAME" in
5447     INTEL) CPPU_ENV=msci ;;
5448     X86_64) CPPU_ENV=mscx ;;
5449     AARCH64) CPPU_ENV=msca ;;
5450     *)
5451         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5452         ;;
5453     esac
5454 else
5455     CPPU_ENV=gcc3
5457 AC_SUBST(CPPU_ENV)
5459 dnl ===================================================================
5460 dnl Test which package format to use
5461 dnl ===================================================================
5462 AC_MSG_CHECKING([which package format to use])
5463 if test -n "$with_package_format" -a "$with_package_format" != no; then
5464     for i in $with_package_format; do
5465         case "$i" in
5466         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5467             ;;
5468         *)
5469             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5470 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5471 deb - Debian software distribution
5472 pkg - Solaris software distribution
5473 rpm - RedHat software distribution
5475 LibreOffice additionally supports:
5476 archive - .tar.gz or .zip
5477 dmg - macOS .dmg
5478 installed - installation tree
5479 msi - Windows .msi
5480         ])
5481             ;;
5482         esac
5483     done
5484     # fakeroot is needed to ensure correct file ownerships/permissions
5485     # inside deb packages and tar archives created on Linux and Solaris.
5486     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5487         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5488         if test "$FAKEROOT" = "no"; then
5489             AC_MSG_ERROR(
5490                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5491         fi
5492     fi
5493     PKGFORMAT="$with_package_format"
5494     AC_MSG_RESULT([$PKGFORMAT])
5495 else
5496     PKGFORMAT=
5497     AC_MSG_RESULT([none])
5499 AC_SUBST(PKGFORMAT)
5501 dnl ===================================================================
5502 dnl handle help related options
5504 dnl If you change help related options, please update README.help
5505 dnl ===================================================================
5507 ENABLE_HTMLHELP=
5508 HELP_OMINDEX_PAGE=
5509 HELP_ONLINE=
5510 WITH_HELPPACKS=
5512 AC_MSG_CHECKING([which help to build])
5513 if test -n "$with_help" -a "$with_help" != "no"; then
5514     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5515     BUILD_TYPE="$BUILD_TYPE HELP"
5516     case "$with_help" in
5517     "html")
5518         ENABLE_HTMLHELP=TRUE
5519         WITH_HELPPACKS=TRUE
5520         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5521         AC_MSG_RESULT([HTML (local)])
5522         ;;
5523     "online")
5524         ENABLE_HTMLHELP=TRUE
5525         HELP_ONLINE=TRUE
5526         AC_MSG_RESULT([HTML (online)])
5527         ;;
5528     yes)
5529         WITH_HELPPACKS=TRUE
5530         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5531         AC_MSG_RESULT([XML (local)])
5532         ;;
5533     *)
5534         AC_MSG_ERROR([Unknown --with-help=$with_help])
5535         ;;
5536     esac
5537 else
5538     AC_MSG_RESULT([no])
5541 AC_MSG_CHECKING([if we need to build the help index tooling])
5542 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5543     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5544     test_clucene=yes
5545     AC_MSG_RESULT([yes])
5546 else
5547     AC_MSG_RESULT([no])
5550 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5551 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5552     if test "$HELP_ONLINE" != TRUE; then
5553         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5554     fi
5555     case "$with_omindex" in
5556     "server")
5557         HELP_OMINDEX_PAGE=TRUE
5558         AC_MSG_RESULT([SERVER])
5559         ;;
5560     "noxap")
5561         AC_MSG_RESULT([NOXAP])
5562         ;;
5563     *)
5564         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5565         ;;
5566     esac
5567 else
5568     AC_MSG_RESULT([no])
5571 AC_MSG_CHECKING([whether to include the XML-help support])
5572 if test "$enable_xmlhelp" = yes; then
5573     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5574     test_clucene=yes
5575     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5576     AC_MSG_RESULT([yes])
5577 else
5578     if test "$with_help" = yes; then
5579         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5580     fi
5581     AC_MSG_RESULT([no])
5584 dnl Test whether to integrate helppacks into the product's installer
5585 AC_MSG_CHECKING([for helppack integration])
5586 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5587     AC_MSG_RESULT([no integration])
5588 else
5589     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5590     AC_MSG_RESULT([integration])
5593 AC_SUBST([ENABLE_HTMLHELP])
5594 AC_SUBST([HELP_OMINDEX_PAGE])
5595 AC_SUBST([HELP_ONLINE])
5596 # WITH_HELPPACKS is used only in configure
5598 dnl ===================================================================
5599 dnl Set up a different compiler to produce tools to run on the build
5600 dnl machine when doing cross-compilation
5601 dnl ===================================================================
5603 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5604 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5605 if test "$cross_compiling" = "yes"; then
5606     AC_MSG_CHECKING([for BUILD platform configuration])
5607     echo
5608     rm -rf CONF-FOR-BUILD config_build.mk
5609     mkdir CONF-FOR-BUILD
5610     # Here must be listed all files needed when running the configure script. In particular, also
5611     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5612     # keep them in the same order as there.
5613     (cd $SRC_ROOT && tar cf - \
5614         config.guess \
5615         bin/get_config_variables \
5616         solenv/bin/getcompver.awk \
5617         solenv/inc/langlist.mk \
5618         download.lst \
5619         config_host.mk.in \
5620         config_host_lang.mk.in \
5621         Makefile.in \
5622         lo.xcent.in \
5623         bin/bffvalidator.sh.in \
5624         bin/odfvalidator.sh.in \
5625         bin/officeotron.sh.in \
5626         hardened_runtime.xcent.in \
5627         instsetoo_native/util/openoffice.lst.in \
5628         config_host/*.in \
5629         sysui/desktop/macosx/Info.plist.in \
5630         .vscode/vs-code-template.code-workspace.in \
5631         solenv/lockfile/autoconf.h.in \
5632         ) \
5633     | (cd CONF-FOR-BUILD && tar xf -)
5634     cp configure CONF-FOR-BUILD
5635     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5636     (
5637     unset COM USING_X11 OS CPUNAME
5638     unset CC CXX SYSBASE CFLAGS
5639     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5640     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5641     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5642     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5643     if test -n "$CC_FOR_BUILD"; then
5644         export CC="$CC_FOR_BUILD"
5645         CC_BASE=`first_arg_basename "$CC"`
5646     fi
5647     if test -n "$CXX_FOR_BUILD"; then
5648         export CXX="$CXX_FOR_BUILD"
5649         CXX_BASE=`first_arg_basename "$CXX"`
5650     fi
5651     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5652     cd CONF-FOR-BUILD
5654     # Handle host configuration, which affects the cross-toolset too
5655     sub_conf_opts=""
5656     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5657     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5658     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5659     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5660     if test -n "$ENABLE_JAVA"; then
5661         case "$_os" in
5662         Android)
5663             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5664             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5665             ;;
5666         *)
5667             if test -z "$with_jdk_home"; then
5668                 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.])
5669             fi
5670             ;;
5671         esac
5672     else
5673         sub_conf_opts="$sub_conf_opts --without-java"
5674     fi
5675     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5676     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5677     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5678     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5679     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5680     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5681     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5682     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5683     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5684     if test "$_os" = "Emscripten"; then
5685         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5686         if test "${with_main_module+set}" = set; then
5687             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5688         else
5689             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5690         fi
5691     fi
5692     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5693     # when cross-compiling for aarch64, overriding the defaults below
5694     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5696     # Don't bother having configure look for stuff not needed for the build platform anyway
5697     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5698     sub_conf_defaults=" \
5699         --build="$build_alias" \
5700         --disable-cairo-canvas \
5701         --disable-cups \
5702         --disable-customtarget-components \
5703         --disable-firebird-sdbc \
5704         --disable-gpgmepp \
5705         --disable-gstreamer-1-0 \
5706         --disable-gtk3 \
5707         --disable-gtk4 \
5708         --disable-libcmis \
5709         --disable-mariadb-sdbc \
5710         --disable-nss \
5711         --disable-online-update \
5712         --disable-opencl \
5713         --disable-openssl \
5714         --disable-pdfimport \
5715         --disable-postgresql-sdbc \
5716         --disable-skia \
5717         --disable-xmlhelp \
5718         --enable-dynamic-loading \
5719         --enable-icecream="$enable_icecream" \
5720         --without-doxygen \
5721         --without-tls \
5722         --without-webdav \
5723         --without-x \
5725     # single quotes added for better readability in case of spaces
5726     echo "    Running CONF-FOR-BUILD/configure" \
5727         $sub_conf_defaults \
5728         --with-parallelism="'$with_parallelism'" \
5729         --with-theme="'$with_theme'" \
5730         --with-vendor="'$with_vendor'" \
5731         $sub_conf_opts \
5732         $with_build_platform_configure_options \
5733         --srcdir=$srcdir
5735     ./configure \
5736         $sub_conf_defaults \
5737         --with-parallelism="$with_parallelism" \
5738         --with-theme="$with_theme" \
5739         "--with-vendor=$with_vendor" \
5740         $sub_conf_opts \
5741         $with_build_platform_configure_options \
5742         --srcdir=$srcdir \
5743         2>&1 | sed -e 's/^/    /'
5744     if test [${PIPESTATUS[0]}] -ne 0; then
5745         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5746     fi
5748     # filter permitted build targets
5749     PERMITTED_BUILD_TARGETS="
5750         AVMEDIA
5751         BOOST
5752         CAIRO
5753         CLUCENE
5754         CURL
5755         DBCONNECTIVITY
5756         DESKTOP
5757         DRAGONBOX
5758         DYNLOADING
5759         EPOXY
5760         EXPAT
5761         GLM
5762         GRAPHITE
5763         HARFBUZZ
5764         HELPTOOLS
5765         ICU
5766         LCMS2
5767         LIBJPEG_TURBO
5768         LIBLANGTAG
5769         LibO
5770         LIBFFI
5771         LIBPN
5772         LIBTIFF
5773         LIBWEBP
5774         LIBXML2
5775         LIBXSLT
5776         MDDS
5777         NATIVE
5778         OPENSSL
5779         ORCUS
5780         PYTHON
5781         SCRIPTING
5782         ZLIB
5784     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5785     # newlined lists, to use grep as a filter
5786     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5787     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5788     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5789     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5791     cp config_host.mk ../config_build.mk
5792     cp config_host_lang.mk ../config_build_lang.mk
5793     mv config.log ../config.Build.log
5794     mkdir -p ../config_build
5795     mv config_host/*.h ../config_build
5796     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5798     # all these will get a _FOR_BUILD postfix
5799     DIRECT_FOR_BUILD_SETTINGS="
5800         CC
5801         CPPU_ENV
5802         CXX
5803         ILIB
5804         JAVA_HOME
5805         JAVAIFLAGS
5806         JDK
5807         JDK_SECURITYMANAGER_DISALLOWED
5808         LIBO_BIN_FOLDER
5809         LIBO_LIB_FOLDER
5810         LIBO_URE_LIB_FOLDER
5811         LIBO_URE_MISC_FOLDER
5812         OS
5813         SDKDIRNAME
5814         SYSTEM_LIBXML
5815         SYSTEM_LIBXSLT
5817     # these overwrite host config with build config
5818     OVERWRITING_SETTINGS="
5819         ANT
5820         ANT_HOME
5821         ANT_LIB
5822         JAVA_CLASSPATH_NOT_SET
5823         JAVA_SOURCE_VER
5824         JAVA_TARGET_VER
5825         JAVACFLAGS
5826         JAVACOMPILER
5827         JAVADOC
5828         JAVADOCISGJDOC
5829         LOCKFILE
5830         SYSTEM_GENBRK
5831         SYSTEM_GENCCODE
5832         SYSTEM_GENCMN
5834     # these need some special handling
5835     EXTRA_HANDLED_SETTINGS="
5836         INSTDIR
5837         INSTROOT
5838         PATH
5839         WORKDIR
5841     OLD_PATH=$PATH
5842     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5843     BUILD_PATH=$PATH
5844     PATH=$OLD_PATH
5846     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5847     echo "$line" >>build-config
5849     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5850         VV='$'$V
5851         VV=`eval "echo $VV"`
5852         if test -n "$VV"; then
5853             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5854             echo "$line" >>build-config
5855         fi
5856     done
5858     for V in $OVERWRITING_SETTINGS; do
5859         VV='$'$V
5860         VV=`eval "echo $VV"`
5861         if test -n "$VV"; then
5862             line=${V}='${'${V}:-$VV'}'
5863             echo "$line" >>build-config
5864         fi
5865     done
5867     for V in INSTDIR INSTROOT WORKDIR; do
5868         VV='$'$V
5869         VV=`eval "echo $VV"`
5870         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5871         if test -n "$VV"; then
5872             line="${V}_FOR_BUILD='$VV'"
5873             echo "$line" >>build-config
5874         fi
5875     done
5877     )
5878     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5879     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])
5880     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5881              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5883     eval `cat CONF-FOR-BUILD/build-config`
5885     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5887     rm -rf CONF-FOR-BUILD
5888 else
5889     OS_FOR_BUILD="$OS"
5890     CC_FOR_BUILD="$CC"
5891     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5892     CXX_FOR_BUILD="$CXX"
5893     INSTDIR_FOR_BUILD="$INSTDIR"
5894     INSTROOT_FOR_BUILD="$INSTROOT"
5895     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5896     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5897     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5898     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5899     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5900     WORKDIR_FOR_BUILD="$WORKDIR"
5902 AC_SUBST(OS_FOR_BUILD)
5903 AC_SUBST(INSTDIR_FOR_BUILD)
5904 AC_SUBST(INSTROOT_FOR_BUILD)
5905 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5906 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5907 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5908 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5909 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5910 AC_SUBST(WORKDIR_FOR_BUILD)
5911 AC_SUBST(CC_FOR_BUILD)
5912 AC_SUBST(CXX_FOR_BUILD)
5913 AC_SUBST(CPPU_ENV_FOR_BUILD)
5915 dnl ===================================================================
5916 dnl Check for lockfile deps
5917 dnl ===================================================================
5918 if test -z "$CROSS_COMPILING"; then
5919     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5920     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5921     AC_MSG_CHECKING([which lockfile binary to use])
5922     case "$with_system_lockfile" in
5923     yes)
5924         AC_MSG_RESULT([external])
5925         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5926         ;;
5927     no)
5928         AC_MSG_RESULT([internal])
5929         ;;
5930     *)
5931         if test -x "$with_system_lockfile"; then
5932             LOCKFILE="$with_system_lockfile"
5933         else
5934             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5935         fi
5936         AC_MSG_RESULT([$with_system_lockfile])
5937         ;;
5938     esac
5941 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5942     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5945 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5946 AC_CHECK_FUNCS([utime utimes])
5947 AC_SUBST(LOCKFILE)
5949 dnl ===================================================================
5950 dnl Check for syslog header
5951 dnl ===================================================================
5952 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5954 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5955 dnl ===================================================================
5956 AC_MSG_CHECKING([whether to turn warnings to errors])
5957 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5958     ENABLE_WERROR="TRUE"
5959     PYTHONWARNINGS="error"
5960     AC_MSG_RESULT([yes])
5961 else
5962     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5963         ENABLE_WERROR="TRUE"
5964         PYTHONWARNINGS="error"
5965         AC_MSG_RESULT([yes])
5966     else
5967         AC_MSG_RESULT([no])
5968     fi
5970 AC_SUBST(ENABLE_WERROR)
5971 AC_SUBST(PYTHONWARNINGS)
5973 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5974 dnl ===================================================================
5975 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5976 if test -z "$enable_assert_always_abort"; then
5977    if test "$ENABLE_DEBUG" = TRUE; then
5978        enable_assert_always_abort=yes
5979    else
5980        enable_assert_always_abort=no
5981    fi
5983 if test "$enable_assert_always_abort" = "yes"; then
5984     ASSERT_ALWAYS_ABORT="TRUE"
5985     AC_MSG_RESULT([yes])
5986 else
5987     ASSERT_ALWAYS_ABORT="FALSE"
5988     AC_MSG_RESULT([no])
5990 AC_SUBST(ASSERT_ALWAYS_ABORT)
5992 # Determine whether to use ooenv for the instdir installation
5993 # ===================================================================
5994 if test $_os != "WINNT" -a $_os != "Darwin"; then
5995     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5996     if test -z "$enable_ooenv"; then
5997         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5998             enable_ooenv=yes
5999         else
6000             enable_ooenv=no
6001         fi
6002     fi
6003     if test "$enable_ooenv" = "no"; then
6004         AC_MSG_RESULT([no])
6005     else
6006         ENABLE_OOENV="TRUE"
6007         AC_MSG_RESULT([yes])
6008     fi
6010 AC_SUBST(ENABLE_OOENV)
6012 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6013     if test "$enable_qt5" = "no"; then
6014         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6015     else
6016         enable_qt5=yes
6017     fi
6020 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6021 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6022     AC_MSG_RESULT([yes])
6023     ENABLE_PAGEIN=TRUE
6024     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6025 else
6026     AC_MSG_RESULT([no])
6028 AC_SUBST(ENABLE_PAGEIN)
6030 dnl ===================================================================
6031 dnl check for cups support
6032 dnl ===================================================================
6034 AC_MSG_CHECKING([whether to enable CUPS support])
6035 if test "$test_cups" = yes -a "$enable_cups" != no; then
6036     ENABLE_CUPS=TRUE
6037     AC_MSG_RESULT([yes])
6039     AC_MSG_CHECKING([whether cups support is present])
6040     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6041     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6042     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6043         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6044     fi
6045 else
6046     AC_MSG_RESULT([no])
6049 AC_SUBST(ENABLE_CUPS)
6051 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6053 dnl whether to find & fetch external tarballs?
6054 dnl ===================================================================
6055 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6056    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6057        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6058    else
6059        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6060    fi
6062 if test -z "$TARFILE_LOCATION"; then
6063     if test -d "$SRC_ROOT/src" ; then
6064         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6065         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6066     fi
6067     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6068 else
6069     AbsolutePath "$TARFILE_LOCATION"
6070     PathFormat "${absolute_path}"
6071     TARFILE_LOCATION="${formatted_path_unix}"
6073 AC_SUBST(TARFILE_LOCATION)
6075 AC_MSG_CHECKING([whether we want to fetch tarballs])
6076 if test "$enable_fetch_external" != "no"; then
6077     if test "$with_all_tarballs" = "yes"; then
6078         AC_MSG_RESULT([yes, all of them])
6079         DO_FETCH_TARBALLS="ALL"
6080     else
6081         AC_MSG_RESULT([yes, if we use them])
6082         DO_FETCH_TARBALLS="TRUE"
6083     fi
6084 else
6085     AC_MSG_RESULT([no])
6086     DO_FETCH_TARBALLS=
6088 AC_SUBST(DO_FETCH_TARBALLS)
6090 dnl Test whether to include MySpell dictionaries
6091 dnl ===================================================================
6092 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6093 if test "$with_myspell_dicts" = "yes"; then
6094     AC_MSG_RESULT([yes])
6095     WITH_MYSPELL_DICTS=TRUE
6096     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6097     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6098 else
6099     AC_MSG_RESULT([no])
6100     WITH_MYSPELL_DICTS=
6102 AC_SUBST(WITH_MYSPELL_DICTS)
6104 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6105 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6106     if test "$with_system_dicts" = yes; then
6107         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6108     fi
6109     with_system_dicts=no
6112 AC_MSG_CHECKING([whether to use dicts from external paths])
6113 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6114     AC_MSG_RESULT([yes])
6115     SYSTEM_DICTS=TRUE
6116     AC_MSG_CHECKING([for spelling dictionary directory])
6117     if test -n "$with_external_dict_dir"; then
6118         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6119     else
6120         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6121         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6122             DICT_SYSTEM_DIR=file:///usr/share/myspell
6123         fi
6124     fi
6125     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6126     AC_MSG_CHECKING([for hyphenation patterns directory])
6127     if test -n "$with_external_hyph_dir"; then
6128         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6129     else
6130         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6131     fi
6132     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6133     AC_MSG_CHECKING([for thesaurus directory])
6134     if test -n "$with_external_thes_dir"; then
6135         THES_SYSTEM_DIR=file://$with_external_thes_dir
6136     else
6137         THES_SYSTEM_DIR=file:///usr/share/mythes
6138     fi
6139     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6140 else
6141     AC_MSG_RESULT([no])
6142     SYSTEM_DICTS=
6144 AC_SUBST(SYSTEM_DICTS)
6145 AC_SUBST(DICT_SYSTEM_DIR)
6146 AC_SUBST(HYPH_SYSTEM_DIR)
6147 AC_SUBST(THES_SYSTEM_DIR)
6149 dnl ===================================================================
6150 dnl Precompiled headers.
6151 ENABLE_PCH=""
6152 AC_MSG_CHECKING([whether to enable pch feature])
6153 if test -z "$enable_pch"; then
6154     if test "$_os" = "WINNT"; then
6155         # Enabled by default on Windows.
6156         enable_pch=yes
6157         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6158         if test -z "$enable_ccache" -a "$SCCACHE"; then
6159             CCACHE=""
6160         fi
6161     else
6162         enable_pch=no
6163     fi
6165 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6166     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6168 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6169     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6171 if test "$enable_pch" = "system"; then
6172     ENABLE_PCH="1"
6173     AC_MSG_RESULT([yes (system headers)])
6174 elif test "$enable_pch" = "base"; then
6175     ENABLE_PCH="2"
6176     AC_MSG_RESULT([yes (system and base headers)])
6177 elif test "$enable_pch" = "normal"; then
6178     ENABLE_PCH="3"
6179     AC_MSG_RESULT([yes (normal)])
6180 elif test "$enable_pch" = "full"; then
6181     ENABLE_PCH="4"
6182     AC_MSG_RESULT([yes (full)])
6183 elif test "$enable_pch" = "yes"; then
6184     # Pick a suitable default.
6185     if test "$GCC" = "yes"; then
6186         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6187         # while making the PCHs larger and rebuilds more likely.
6188         ENABLE_PCH="2"
6189         AC_MSG_RESULT([yes (system and base headers)])
6190     else
6191         # With MSVC the highest level makes a significant difference,
6192         # and it was the default when there used to be no PCH levels.
6193         ENABLE_PCH="4"
6194         AC_MSG_RESULT([yes (full)])
6195     fi
6196 elif test "$enable_pch" = "no"; then
6197     AC_MSG_RESULT([no])
6198 else
6199     AC_MSG_ERROR([Unknown value for --enable-pch])
6201 AC_SUBST(ENABLE_PCH)
6202 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6203 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6204     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6205     if test "$CCACHE_BIN" != "not found"; then
6206         AC_MSG_CHECKING([ccache version])
6207         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6208         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6209         AC_MSG_RESULT([$CCACHE_VERSION])
6210         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6211         if test "$CCACHE_NUMVER" -gt "030701"; then
6212             AC_MSG_RESULT([yes])
6213         else
6214             AC_MSG_RESULT([no (not newer than 3.7.1)])
6215             CCACHE_DEPEND_MODE=
6216         fi
6217     fi
6220 PCH_INSTANTIATE_TEMPLATES=
6221 if test -n "$ENABLE_PCH"; then
6222     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6223     save_CFLAGS=$CFLAGS
6224     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6225     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6226     CFLAGS=$save_CFLAGS
6227     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6228         AC_MSG_RESULT(yes)
6229     else
6230         AC_MSG_RESULT(no)
6231     fi
6233 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6235 BUILDING_PCH_WITH_OBJ=
6236 if test -n "$ENABLE_PCH"; then
6237     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6238     save_CFLAGS=$CFLAGS
6239     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6240     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6241     CFLAGS=$save_CFLAGS
6242     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6243         AC_MSG_RESULT(yes)
6244     else
6245         AC_MSG_RESULT(no)
6246     fi
6248 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6250 PCH_CODEGEN=
6251 PCH_NO_CODEGEN=
6252 fpch_prefix=
6253 if test "$COM" = MSC; then
6254     fpch_prefix="-Xclang "
6256 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6257     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6258     save_CFLAGS=$CFLAGS
6259     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6260     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6261         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6262     CFLAGS=$save_CFLAGS
6263     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6264     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6265         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6266     CFLAGS=$save_CFLAGS
6267     if test -n "$PCH_CODEGEN"; then
6268         AC_MSG_RESULT(yes)
6269     else
6270         AC_MSG_RESULT(no)
6271     fi
6273 AC_SUBST(PCH_CODEGEN)
6274 AC_SUBST(PCH_NO_CODEGEN)
6275 PCH_DEBUGINFO=
6276 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6277     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6278     save_CFLAGS=$CFLAGS
6279     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6280     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6281     CFLAGS=$save_CFLAGS
6282     if test -n "$PCH_DEBUGINFO"; then
6283         AC_MSG_RESULT(yes)
6284     else
6285         AC_MSG_RESULT(no)
6286     fi
6288 AC_SUBST(PCH_DEBUGINFO)
6290 TAB=`printf '\t'`
6292 AC_MSG_CHECKING([the GNU Make version])
6293 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6294 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6295 if test "$_make_longver" -ge "040000"; then
6296     AC_MSG_RESULT([$GNUMAKE $_make_version])
6297 else
6298     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6301 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6302 STALE_MAKE=
6303 if test "$_make_ver_check" = ""; then
6304    STALE_MAKE=TRUE
6307 HAVE_LD_HASH_STYLE=FALSE
6308 WITH_LINKER_HASH_STYLE=
6309 AC_MSG_CHECKING([for --hash-style gcc linker support])
6310 if test "$GCC" = "yes"; then
6311     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6312         hash_styles="gnu sysv"
6313     elif test "$with_linker_hash_style" = "no"; then
6314         hash_styles=
6315     else
6316         hash_styles="$with_linker_hash_style"
6317     fi
6319     for hash_style in $hash_styles; do
6320         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6321         hash_style_ldflags_save=$LDFLAGS
6322         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6324         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6325             [
6326 #include <stdio.h>
6327             ],[
6328 printf ("");
6329             ])],
6330             [
6331                   HAVE_LD_HASH_STYLE=TRUE
6332                   WITH_LINKER_HASH_STYLE=$hash_style
6333             ],
6334             [HAVE_LD_HASH_STYLE=FALSE],
6335             [HAVE_LD_HASH_STYLE=FALSE])
6336         LDFLAGS=$hash_style_ldflags_save
6337     done
6339     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6340         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6341     else
6342         AC_MSG_RESULT( no )
6343     fi
6344     LDFLAGS=$hash_style_ldflags_save
6345 else
6346     AC_MSG_RESULT( no )
6348 AC_SUBST(HAVE_LD_HASH_STYLE)
6349 AC_SUBST(WITH_LINKER_HASH_STYLE)
6351 dnl ===================================================================
6352 dnl Check whether there's a Perl version available.
6353 dnl ===================================================================
6354 if test -z "$with_perl_home"; then
6355     AC_PATH_PROG(PERL, perl)
6356 else
6357     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6358     _perl_path="$with_perl_home/bin/perl"
6359     if test -x "$_perl_path"; then
6360         PERL=$_perl_path
6361     else
6362         AC_MSG_ERROR([$_perl_path not found])
6363     fi
6366 dnl ===================================================================
6367 dnl Testing for Perl version 5 or greater.
6368 dnl $] is the Perl version variable, it is returned as an integer
6369 dnl ===================================================================
6370 if test "$PERL"; then
6371     AC_MSG_CHECKING([the Perl version])
6372     ${PERL} -e "exit($]);"
6373     _perl_version=$?
6374     if test "$_perl_version" -lt 5; then
6375         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6376     fi
6377     AC_MSG_RESULT([Perl $_perl_version])
6378 else
6379     AC_MSG_ERROR([Perl not found, install Perl 5])
6382 dnl ===================================================================
6383 dnl Testing for required Perl modules
6384 dnl ===================================================================
6386 AC_MSG_CHECKING([for required Perl modules])
6387 perl_use_string="use Cwd ; use Digest::MD5"
6388 if test "$_os" = "WINNT"; then
6389     if test -n "$PKGFORMAT"; then
6390         for i in $PKGFORMAT; do
6391             case "$i" in
6392             msi)
6393                 # for getting fonts versions to use in MSI
6394                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6395                 ;;
6396             esac
6397         done
6398     fi
6400 if test "$with_system_hsqldb" = "yes"; then
6401     perl_use_string="$perl_use_string ; use Archive::Zip"
6403 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6404     # OpenSSL needs that to build
6405     perl_use_string="$perl_use_string ; use FindBin"
6407 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6408     AC_MSG_RESULT([all modules found])
6409 else
6410     AC_MSG_RESULT([failed to find some modules])
6411     # Find out which modules are missing.
6412     for i in $perl_use_string; do
6413         if test "$i" != "use" -a "$i" != ";"; then
6414             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6415                 missing_perl_modules="$missing_perl_modules $i"
6416             fi
6417         fi
6418     done
6419     AC_MSG_ERROR([
6420     The missing Perl modules are: $missing_perl_modules
6421     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6424 dnl ===================================================================
6425 dnl Check for pkg-config
6426 dnl ===================================================================
6427 if test "$_os" != "WINNT"; then
6428     PKG_PROG_PKG_CONFIG
6430 AC_SUBST(PKG_CONFIG)
6431 AC_SUBST(PKG_CONFIG_PATH)
6432 AC_SUBST(PKG_CONFIG_LIBDIR)
6434 if test "$_os" != "WINNT"; then
6436     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6437     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6438     # explicitly. Or put /path/to/compiler in PATH yourself.
6440     toolprefix=gcc
6441     if test "$COM_IS_CLANG" = "TRUE"; then
6442         toolprefix=llvm
6443     fi
6444     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6445     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6446     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6447     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6448     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6449     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6451 AC_SUBST(AR)
6452 AC_SUBST(NM)
6453 AC_SUBST(OBJDUMP)
6454 AC_SUBST(RANLIB)
6455 AC_SUBST(READELF)
6456 AC_SUBST(STRIP)
6458 dnl ===================================================================
6459 dnl pkg-config checks on macOS
6460 dnl ===================================================================
6462 if test $_os = Darwin; then
6463     AC_MSG_CHECKING([for bogus pkg-config])
6464     if test -n "$PKG_CONFIG"; then
6465         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6466             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6467         else
6468             if test "$enable_bogus_pkg_config" = "yes"; then
6469                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6470             else
6471                 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.])
6472             fi
6473         fi
6474     else
6475         AC_MSG_RESULT([no, good])
6476     fi
6479 find_csc()
6481     # Return value: $csctest
6483     unset csctest
6485     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6486     if test -n "$regvalue"; then
6487         csctest=$regvalue
6488         return
6489     fi
6492 find_al()
6494     # Return value: $altest
6496     unset altest
6498     # We need this check to detect 4.6.1 or above.
6499     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6500         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6501         PathFormat "$regvalue"
6502         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6503             altest=$regvalue
6504             return
6505         fi
6506     done
6508     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6509     for x in $reglist; do
6510         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6511         PathFormat "$regvalue"
6512         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6513             altest=$regvalue
6514             return
6515         fi
6516     done
6519 find_dotnetsdk46()
6521     unset frametest
6523     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
6524         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6525         if test -n "$regvalue"; then
6526             frametest=$regvalue
6527             return
6528         fi
6529     done
6532 find_winsdk_version()
6534     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6535     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6537     unset winsdktest winsdkbinsubdir winsdklibsubdir
6539     case "$1" in
6540     8.0|8.0A)
6541         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6542         if test -n "$regvalue"; then
6543             winsdktest=$regvalue
6544             winsdklibsubdir=win8
6545             return
6546         fi
6547         ;;
6548     8.1|8.1A)
6549         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6550         if test -n "$regvalue"; then
6551             winsdktest=$regvalue
6552             winsdklibsubdir=winv6.3
6553             return
6554         fi
6555         ;;
6556     10.0)
6557         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6558         if test -n "$regvalue"; then
6559             winsdktest=$regvalue
6560             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6561             if test -n "$regvalue"; then
6562                 winsdkbinsubdir="$regvalue".0
6563                 winsdklibsubdir=$winsdkbinsubdir
6564                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6565                 local tmppath_unix=$(cygpath -u "$tmppath")
6566                 # test exist the SDK path
6567                 if test -d "$tmppath_unix"; then
6568                    # when path is convertible to a short path then path is okay
6569                    cygpath -d "$tmppath" >/dev/null 2>&1
6570                    if test $? -ne 0; then
6571                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6572                    fi
6573                 else
6574                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6575                 fi
6576             fi
6577             return
6578         fi
6579         ;;
6580     esac
6583 find_winsdk()
6585     # Return value: From find_winsdk_version
6587     unset winsdktest
6589     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6590         find_winsdk_version $ver
6591         if test -n "$winsdktest"; then
6592             return
6593         fi
6594     done
6597 find_msms()
6599     # Return value: $msmdir
6600     local version="$1"
6602     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6603     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6604     local my_msm_dir
6606     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6608     msmdir=
6609     case "$VCVER" in
6610     16.0 | 17.0 | 17.5)
6611         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6612             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6613             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6614             if test -e "$my_msm_dir${my_msm_file}"; then
6615                 msmdir=$my_msm_dir
6616             fi
6617         done
6618         ;;
6619     esac
6621     if test -n "$msmdir"; then
6622         msmdir=`cygpath -m "$msmdir"`
6623         AC_MSG_RESULT([$msmdir])
6624     else
6625         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6626             AC_MSG_FAILURE([not found])
6627         else
6628             AC_MSG_WARN([not found (check config.log)])
6629             add_warning "MSM ${my_msm_file} not found"
6630         fi
6631     fi
6634 find_msvc_x64_dlls()
6636     # Return value: $msvcdllpath, $msvcdlls
6638     AC_MSG_CHECKING([for MSVC x64 DLL path])
6640     dnl Order crtver in increasing order. Then check the directories returned by
6641     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6642     dnl the result will be the highest CRT version found in the highest directory.
6644     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6645     case "$VCVER" in
6646     16.0 | 17.0 | 17.5)
6647         for crtver in 141 142 143; do
6648             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6649                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6650                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6651                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6652                 fi
6653             done
6654         done
6655         ;;
6656     esac
6657     AC_MSG_RESULT([$msvcdllpath])
6658     AC_MSG_CHECKING([for MSVC x64 DLLs])
6659     msvcdlls="msvcp140.dll vcruntime140.dll"
6660     for dll in $msvcdlls; do
6661         if ! test -f "$msvcdllpath/$dll"; then
6662             AC_MSG_FAILURE([missing $dll])
6663         fi
6664     done
6665     AC_MSG_RESULT([found all ($msvcdlls)])
6668 dnl =========================================
6669 dnl Check for the Windows  SDK.
6670 dnl =========================================
6671 if test "$_os" = "WINNT"; then
6672     AC_MSG_CHECKING([for Windows SDK])
6673     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6674         find_winsdk
6675         WINDOWS_SDK_HOME=$winsdktest
6677         # normalize if found
6678         if test -n "$WINDOWS_SDK_HOME"; then
6679             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6680             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6681         fi
6683         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6684     fi
6686     if test -n "$WINDOWS_SDK_HOME"; then
6687         # Remove a possible trailing backslash
6688         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6690         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6691              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6692              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6693             have_windows_sdk_headers=yes
6694         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6695              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6696              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6697             have_windows_sdk_headers=yes
6698         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6699              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6700              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6701             have_windows_sdk_headers=yes
6702         else
6703             have_windows_sdk_headers=no
6704         fi
6706         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6707             have_windows_sdk_libs=yes
6708         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6709             have_windows_sdk_libs=yes
6710         else
6711             have_windows_sdk_libs=no
6712         fi
6714         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6715             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6716 the  Windows SDK are installed.])
6717         fi
6718     fi
6720     if test -z "$WINDOWS_SDK_HOME"; then
6721         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6722     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6723         WINDOWS_SDK_VERSION=80
6724         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6725     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6726         WINDOWS_SDK_VERSION=81
6727         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6728     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6729         WINDOWS_SDK_VERSION=10
6730         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6731     else
6732         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6733     fi
6734     PathFormat "$WINDOWS_SDK_HOME"
6735     WINDOWS_SDK_HOME="$formatted_path"
6736     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6737     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6738         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6739         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6740             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6741         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6742             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6743         fi
6744     fi
6746     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6747     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6748     dnl but not in v8.0), so allow this to be overridden with a
6749     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6750     dnl and configuration error if no WiLangId.vbs is found would arguably be
6751     dnl better, but I do not know under which conditions exactly it is needed by
6752     dnl msiglobal.pm:
6753     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6754         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6755         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6756         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6757             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6758             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6759         fi
6760         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6761             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6762             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6763         fi
6764         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6765             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6766             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6767         fi
6768     fi
6769     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6770         if test -n "$with_package_format" -a "$with_package_format" != no; then
6771             for i in "$with_package_format"; do
6772                 if test "$i" = "msi"; then
6773                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6774                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6775                     fi
6776                 fi
6777             done
6778         fi
6779     fi
6781 AC_SUBST(WINDOWS_SDK_HOME)
6782 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6783 AC_SUBST(WINDOWS_SDK_VERSION)
6784 AC_SUBST(WINDOWS_SDK_WILANGID)
6786 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6787     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6788     dnl dir, it also determines that dir's path w/o an arch segment if any,
6789     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6790     AC_MSG_CHECKING([for midl.exe])
6792     find_winsdk
6793     PathFormat "$winsdktest"
6794     winsdktest_unix="$formatted_path_unix"
6796     if test -n "$winsdkbinsubdir" \
6797         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6798     then
6799         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6800         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6801     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6802         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6803         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6804     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6805         MIDL_PATH=$winsdktest/Bin
6806         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6807     fi
6808     PathFormat "$MIDL_PATH"
6809     if test ! -f "$formatted_path_unix/midl.exe"; then
6810         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6811     else
6812         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6813     fi
6815     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6816     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6818     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6819          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6820          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6821          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6822     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6823          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6824          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6825          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6826     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6827          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6828          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6829          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6830     else
6831         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6832     fi
6834     dnl Check csc.exe
6835     AC_MSG_CHECKING([for csc.exe])
6836     find_csc
6837     PathFormat "$csctest"
6838     csctest_unix="$formatted_path_unix"
6839     if test -f "$csctest_unix/csc.exe"; then
6840         CSC_PATH="$csctest"
6841     fi
6842     if test ! -f "$csctest_unix/csc.exe"; then
6843         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6844     else
6845         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6846     fi
6848     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6850     dnl Check al.exe
6851     AC_MSG_CHECKING([for al.exe])
6852     if test -n "$winsdkbinsubdir" \
6853         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6854     then
6855         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6856     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6857         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6858     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6859         AL_PATH="$winsdktest/Bin"
6860     fi
6862     if test -z "$AL_PATH"; then
6863         find_al
6864         PathFormat "$altest"
6865         altest_unix="$formatted_path_unix"
6866         if test -f "$altest_unix/bin/al.exe"; then
6867             AL_PATH="$altest/bin"
6868         elif test -f "$altest_unix/al.exe"; then
6869             AL_PATH="$altest"
6870         fi
6871     fi
6872     PathFormat "$AL_PATH"
6873     if test ! -f "$formatted_path_unix/al.exe"; then
6874         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6875     else
6876         AC_MSG_RESULT([$AL_PATH/al.exe])
6877     fi
6879     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6881     dnl Check mscoree.lib / .NET Framework dir
6882     AC_MSG_CHECKING(.NET Framework)
6883     find_dotnetsdk46
6884     PathFormat "$frametest"
6885     frametest="$formatted_path_unix"
6886     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6887         DOTNET_FRAMEWORK_HOME="$frametest"
6888     else
6889         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6890             DOTNET_FRAMEWORK_HOME="$winsdktest"
6891         fi
6892     fi
6893     PathFormat "$DOTNET_FRAMEWORK_HOME"
6894     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
6895         AC_MSG_ERROR([mscoree.lib not found])
6896     fi
6897     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6899     PathFormat "$MIDL_PATH"
6900     MIDL_PATH="$formatted_path"
6902     PathFormat "$AL_PATH"
6903     AL_PATH="$formatted_path"
6905     PathFormat "$DOTNET_FRAMEWORK_HOME"
6906     DOTNET_FRAMEWORK_HOME="$formatted_path"
6908     PathFormat "$CSC_PATH"
6909     CSC_PATH="$formatted_path"
6912 dnl ===================================================================
6913 dnl Testing for C++ compiler and version...
6914 dnl ===================================================================
6916 if test "$_os" != "WINNT"; then
6917     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6918     save_CXXFLAGS=$CXXFLAGS
6919     AC_PROG_CXX
6920     CXXFLAGS=$save_CXXFLAGS
6921     if test -z "$CXX_BASE"; then
6922         CXX_BASE=`first_arg_basename "$CXX"`
6923     fi
6926 dnl check for GNU C++ compiler version
6927 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6928     AC_MSG_CHECKING([the GNU C++ compiler version])
6930     _gpp_version=`$CXX -dumpversion`
6931     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6933     if test "$_gpp_majmin" -lt "700"; then
6934         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6935     else
6936         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6937     fi
6939     dnl see https://issuetracker.google.com/issues/36962819
6940         glibcxx_threads=no
6941         AC_LANG_PUSH([C++])
6942         AC_REQUIRE_CPP
6943         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6944         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6945             #include <bits/c++config.h>]],[[
6946             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6947             && !defined(_GLIBCXX__PTHREADS) \
6948             && !defined(_GLIBCXX_HAS_GTHREADS)
6949             choke me
6950             #endif
6951         ]])],[AC_MSG_RESULT([yes])
6952         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6953         AC_LANG_POP([C++])
6954         if test $glibcxx_threads = yes; then
6955             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6956         fi
6958 AC_SUBST(BOOST_CXXFLAGS)
6961 # prefx CXX with ccache if needed
6963 if test "$CCACHE" != ""; then
6964     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6965     AC_LANG_PUSH([C++])
6966     save_CXXFLAGS=$CXXFLAGS
6967     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6968     # msvc does not fail on unknown options, check stdout
6969     if test "$COM" = MSC; then
6970         CXXFLAGS="$CXXFLAGS -nologo"
6971     fi
6972     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6973     ac_cxx_werror_flag=yes
6974     dnl an empty program will do, we're checking the compiler flags
6975     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6976                       [use_ccache=yes], [use_ccache=no])
6977     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6978         AC_MSG_RESULT([yes])
6979     else
6980         CXX="$CCACHE $CXX"
6981         CXX_BASE="ccache $CXX_BASE"
6982         AC_MSG_RESULT([no])
6983     fi
6984     CXXFLAGS=$save_CXXFLAGS
6985     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6986     AC_LANG_POP([C++])
6989 dnl ===================================================================
6990 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6991 dnl ===================================================================
6993 if test "$_os" != "WINNT"; then
6994     AC_PROG_CXXCPP
6996     dnl Check whether there's a C pre-processor.
6997     AC_PROG_CPP
7001 dnl ===================================================================
7002 dnl Find integral type sizes and alignments
7003 dnl ===================================================================
7005 if test "$_os" != "WINNT"; then
7007     AC_CHECK_SIZEOF(long)
7008     AC_CHECK_SIZEOF(short)
7009     AC_CHECK_SIZEOF(int)
7010     AC_CHECK_SIZEOF(long long)
7011     AC_CHECK_SIZEOF(double)
7012     AC_CHECK_SIZEOF(void*)
7013     AC_CHECK_SIZEOF(size_t)
7015     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7016     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7017     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7018     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7019     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7020     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7022     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7023     m4_pattern_allow([AC_CHECK_ALIGNOF])
7024     m4_ifdef([AC_CHECK_ALIGNOF],
7025         [
7026             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7027             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7028             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7029             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7030         ],
7031         [
7032             case "$_os-$host_cpu" in
7033             Linux-i686)
7034                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7035                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7036                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7037                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7038                 ;;
7039             Linux-x86_64)
7040                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7041                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7042                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7043                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7044                 ;;
7045             *)
7046                 if test -z "$ac_cv_alignof_short" -o \
7047                         -z "$ac_cv_alignof_int" -o \
7048                         -z "$ac_cv_alignof_long" -o \
7049                         -z "$ac_cv_alignof_double"; then
7050                    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.])
7051                 fi
7052                 ;;
7053             esac
7054         ])
7056     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7057     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7058     if test $ac_cv_sizeof_long -eq 8; then
7059         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7060     elif test $ac_cv_sizeof_double -eq 8; then
7061         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7062     else
7063         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7064     fi
7066     dnl Check for large file support
7067     AC_SYS_LARGEFILE
7068     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7069         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7070     fi
7071     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7072         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7073     fi
7074 else
7075     # Hardcode for MSVC
7076     SAL_TYPES_SIZEOFSHORT=2
7077     SAL_TYPES_SIZEOFINT=4
7078     SAL_TYPES_SIZEOFLONG=4
7079     SAL_TYPES_SIZEOFLONGLONG=8
7080     if test $WIN_HOST_BITS -eq 32; then
7081         SAL_TYPES_SIZEOFPOINTER=4
7082         SIZEOF_SIZE_T=4
7083     else
7084         SAL_TYPES_SIZEOFPOINTER=8
7085         SIZEOF_SIZE_T=8
7086     fi
7087     SAL_TYPES_ALIGNMENT2=2
7088     SAL_TYPES_ALIGNMENT4=4
7089     SAL_TYPES_ALIGNMENT8=8
7090     LFS_CFLAGS=''
7092 AC_SUBST(LFS_CFLAGS)
7093 AC_SUBST(SIZEOF_SIZE_T)
7095 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7096 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7097 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7098 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7099 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7100 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7101 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7102 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7104 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7105 AC_MSG_CHECKING([whether jumbo sheets are supported])
7106 if test "$_os" != "WINNT"; then
7107     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7108         AC_MSG_RESULT([yes])
7109         ENABLE_JUMBO_SHEETS=TRUE
7110         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7111     else
7112         AC_MSG_RESULT([no])
7113     fi
7114 else
7115     if test $WIN_HOST_BITS -gt 32; then
7116         # 64bit windows is special-cased for tools::Long because long is 32bit
7117         AC_MSG_RESULT([yes])
7118         ENABLE_JUMBO_SHEETS=TRUE
7119         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7120     else
7121         AC_MSG_RESULT([no])
7122     fi
7124 AC_SUBST(ENABLE_JUMBO_SHEETS)
7126 dnl ===================================================================
7127 dnl Check whether to enable runtime optimizations
7128 dnl ===================================================================
7129 ENABLE_RUNTIME_OPTIMIZATIONS=
7130 AC_MSG_CHECKING([whether to enable runtime optimizations])
7131 if test -z "$enable_runtime_optimizations"; then
7132     for i in $CC; do
7133         case $i in
7134         -fsanitize=*)
7135             enable_runtime_optimizations=no
7136             break
7137             ;;
7138         esac
7139     done
7141 if test "$enable_runtime_optimizations" != no; then
7142     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7143     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7144     AC_MSG_RESULT([yes])
7145 else
7146     AC_MSG_RESULT([no])
7148 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7150 dnl ===================================================================
7151 dnl Check if valgrind headers are available
7152 dnl ===================================================================
7153 ENABLE_VALGRIND=
7154 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7155     prev_cppflags=$CPPFLAGS
7156     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7157     # or where does it come from?
7158     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7159     AC_CHECK_HEADER([valgrind/valgrind.h],
7160         [ENABLE_VALGRIND=TRUE])
7161     CPPFLAGS=$prev_cppflags
7163 AC_SUBST([ENABLE_VALGRIND])
7164 if test -z "$ENABLE_VALGRIND"; then
7165     if test "$with_valgrind" = yes; then
7166         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7167     fi
7168     VALGRIND_CFLAGS=
7170 AC_SUBST([VALGRIND_CFLAGS])
7173 dnl ===================================================================
7174 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7175 dnl ===================================================================
7177 # We need at least the sys/sdt.h include header.
7178 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7179 if test "$SDT_H_FOUND" = "TRUE"; then
7180     # Found sys/sdt.h header, now make sure the c++ compiler works.
7181     # Old g++ versions had problems with probes in constructors/destructors.
7182     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7183     AC_LANG_PUSH([C++])
7184     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7185     #include <sys/sdt.h>
7186     class ProbeClass
7187     {
7188     private:
7189       int& ref;
7190       const char *name;
7192     public:
7193       ProbeClass(int& v, const char *n) : ref(v), name(n)
7194       {
7195         DTRACE_PROBE2(_test_, cons, name, ref);
7196       }
7198       void method(int min)
7199       {
7200         DTRACE_PROBE3(_test_, meth, name, ref, min);
7201         ref -= min;
7202       }
7204       ~ProbeClass()
7205       {
7206         DTRACE_PROBE2(_test_, dest, name, ref);
7207       }
7208     };
7209     ]],[[
7210     int i = 64;
7211     DTRACE_PROBE1(_test_, call, i);
7212     ProbeClass inst = ProbeClass(i, "call");
7213     inst.method(24);
7214     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7215           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7216     AC_LANG_POP([C++])
7218 AC_CONFIG_HEADERS([config_host/config_probes.h])
7220 dnl ===================================================================
7221 dnl GCC features
7222 dnl ===================================================================
7223 HAVE_GCC_STACK_CLASH_PROTECTION=
7224 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7225     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7226     save_CFLAGS=$CFLAGS
7227     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7228     AC_LINK_IFELSE(
7229         [AC_LANG_PROGRAM(, [[return 0;]])],
7230         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7231         [AC_MSG_RESULT([no])])
7232     CFLAGS=$save_CFLAGS
7234     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7235     save_CFLAGS=$CFLAGS
7236     CFLAGS="$CFLAGS -Werror -mno-avx"
7237     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7238     CFLAGS=$save_CFLAGS
7239     if test "$HAVE_GCC_AVX" = "TRUE"; then
7240         AC_MSG_RESULT([yes])
7241     else
7242         AC_MSG_RESULT([no])
7243     fi
7245     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7246     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7247     int v = 0;
7248     if (__sync_add_and_fetch(&v, 1) != 1 ||
7249         __sync_sub_and_fetch(&v, 1) != 0)
7250         return 1;
7251     __sync_synchronize();
7252     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7253         v != 1)
7254         return 1;
7255     return 0;
7256 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7257     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7258         AC_MSG_RESULT([yes])
7259         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7260     else
7261         AC_MSG_RESULT([no])
7262     fi
7264     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7265     AC_LANG_PUSH([C++])
7266     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7267             #include <cstddef>
7268             #include <cxxabi.h>
7269             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7270         ])], [
7271             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7272             AC_MSG_RESULT([yes])
7273         ], [AC_MSG_RESULT([no])])
7274     AC_LANG_POP([C++])
7276     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7277     AC_LANG_PUSH([C++])
7278     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7279             #include <cstddef>
7280             #include <cxxabi.h>
7281             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7282         ])], [
7283             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7284             AC_MSG_RESULT([yes])
7285         ], [AC_MSG_RESULT([no])])
7286     AC_LANG_POP([C++])
7288     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7289     AC_LANG_PUSH([C++])
7290     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7291             #include <cxxabi.h>
7292             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7293         ])], [
7294             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7295             AC_MSG_RESULT([yes])
7296         ], [AC_MSG_RESULT([no])])
7297     AC_LANG_POP([C++])
7299     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7300     AC_LANG_PUSH([C++])
7301     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7302             #include <cstddef>
7303             #include <cxxabi.h>
7304             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7305         ])], [
7306             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7307             AC_MSG_RESULT([yes])
7308         ], [AC_MSG_RESULT([no])])
7309     AC_LANG_POP([C++])
7311     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7312     AC_LANG_PUSH([C++])
7313     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7314             #include <cstddef>
7315             #include <cxxabi.h>
7316             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7317         ])], [
7318             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7319             AC_MSG_RESULT([yes])
7320         ], [AC_MSG_RESULT([no])])
7321     AC_LANG_POP([C++])
7323     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7324     AC_LANG_PUSH([C++])
7325     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7326             #include <cxxabi.h>
7327             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7328         ])], [
7329             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7330             AC_MSG_RESULT([yes])
7331         ], [AC_MSG_RESULT([no])])
7332     AC_LANG_POP([C++])
7334     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7335     AC_LANG_PUSH([C++])
7336     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7337             #include <cxxabi.h>
7338             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7339         ])], [
7340             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7341             AC_MSG_RESULT([yes])
7342         ], [AC_MSG_RESULT([no])])
7343     AC_LANG_POP([C++])
7345     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7346     AC_LANG_PUSH([C++])
7347     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7348             #include <cxxabi.h>
7349             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7350         ])], [
7351             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7352             AC_MSG_RESULT([yes])
7353         ], [AC_MSG_RESULT([no])])
7354     AC_LANG_POP([C++])
7356     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7357     AC_LANG_PUSH([C++])
7358     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7359             #include <cstddef>
7360             #include <cxxabi.h>
7361             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7362         ])], [
7363             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7364             AC_MSG_RESULT([yes])
7365         ], [AC_MSG_RESULT([no])])
7366     AC_LANG_POP([C++])
7368     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7369     AC_LANG_PUSH([C++])
7370     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7371             #include <cstddef>
7372             #include <cxxabi.h>
7373             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7374         ])], [
7375             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7376             AC_MSG_RESULT([yes])
7377         ], [AC_MSG_RESULT([no])])
7378     AC_LANG_POP([C++])
7381 AC_SUBST(HAVE_GCC_AVX)
7382 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7383 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7385 dnl ===================================================================
7386 dnl Identify the C++ library
7387 dnl ===================================================================
7389 AC_MSG_CHECKING([what the C++ library is])
7390 HAVE_LIBSTDCPP=
7391 HAVE_LIBCPP=
7392 AC_LANG_PUSH([C++])
7393 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7394 #include <utility>
7395 #ifndef __GLIBCXX__
7396 foo bar
7397 #endif
7398 ]])],
7399     [CPP_LIBRARY=GLIBCXX
7400      cpp_library_name="GNU libstdc++"
7401      HAVE_LIBSTDCPP=TRUE
7402     ],
7403     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7404 #include <utility>
7405 #ifndef _LIBCPP_VERSION
7406 foo bar
7407 #endif
7408 ]])],
7409     [CPP_LIBRARY=LIBCPP
7410      cpp_library_name="LLVM libc++"
7411      AC_DEFINE([HAVE_LIBCPP])
7412      HAVE_LIBCPP=TRUE
7413     ],
7414     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7415 #include <utility>
7416 #ifndef _MSC_VER
7417 foo bar
7418 #endif
7419 ]])],
7420     [CPP_LIBRARY=MSVCRT
7421      cpp_library_name="Microsoft"
7422     ],
7423     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7424 AC_MSG_RESULT([$cpp_library_name])
7425 AC_LANG_POP([C++])
7426 AC_SUBST([HAVE_LIBSTDCPP])
7427 AC_SUBST([HAVE_LIBCPP])
7429 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7430 then
7431     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7432     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7433     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7434     # although there will be backwards compatibility).
7435     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7436     # and there would be undefined references to debug functions.
7437     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7438     # So check if debug mode can be used and disable or downgrade it to assertions
7439     # if needed.
7440     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7441     AC_LANG_PUSH([C++])
7442     libcpp_debug_links=
7443     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7444 #define _LIBCPP_DEBUG 0 // only assertions
7445 #include <vector>
7446 int main()
7448     std::vector<int> v;
7449     v.push_back( 1 );
7450     return v[ 3 ];
7452 ]])], [libcpp_debug_links=1])
7453     if test -n "$libcpp_debug_links"; then
7454         # we can use at least assertions, check if debug mode works
7455         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7456 #define _LIBCPP_DEBUG 1 // debug mode
7457 #include <string>
7458 #include <vector>
7459 int foo(const std::vector<int>& v) { return *v.begin(); }
7460 int main()
7462     std::vector<int> v;
7463     v.push_back( 1 );
7464     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7465     return (foo(v) + s.size()) != 0 ? 0 : 1;
7467 ]])],
7468         [AC_MSG_RESULT(yes)
7469          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7470         ],
7471         [AC_MSG_RESULT(no, using only assertions)
7472          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7473         ]
7474         )
7475     else
7476         AC_MSG_RESULT(no)
7477     fi
7478     AC_LANG_POP([C++])
7480 AC_SUBST([LIBCPP_DEBUG])
7482 dnl ===================================================================
7483 dnl Check for gperf
7484 dnl ===================================================================
7485 AC_PATH_PROG(GPERF, gperf)
7486 if test -z "$GPERF"; then
7487     AC_MSG_ERROR([gperf not found but needed. Install it.])
7489 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7490     GPERF=`cygpath -m $GPERF`
7492 AC_MSG_CHECKING([whether gperf is new enough])
7493 my_gperf_ver1=$($GPERF --version | head -n 1)
7494 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7495 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7496 if test "$my_gperf_ver3" -ge 301; then
7497     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7498 else
7499     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7501 AC_SUBST(GPERF)
7503 dnl ===================================================================
7504 dnl Check for system libcmis
7505 dnl ===================================================================
7506 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7508 dnl ===================================================================
7509 dnl C++11
7510 dnl ===================================================================
7512 if test -z "${CXXFLAGS_CXX11+x}"; then
7513     AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7514     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7515         if test "$with_latest_c__" = yes; then
7516             CXXFLAGS_CXX11=-std:c++latest
7517         else
7518             CXXFLAGS_CXX11=-std:c++17
7519         fi
7520         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7521     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7522         my_flags='-std=c++17 -std=c++1z'
7523         if test "$with_latest_c__" = yes; then
7524             my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7525         fi
7526         for flag in $my_flags; do
7527             if test "$COM" = MSC; then
7528                 flag="-Xclang $flag"
7529             fi
7530             save_CXXFLAGS=$CXXFLAGS
7531             CXXFLAGS="$CXXFLAGS $flag -Werror"
7532             if test "$SYSTEM_LIBCMIS" = TRUE; then
7533                 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7534             fi
7535             AC_LANG_PUSH([C++])
7536             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7537                 #include <algorithm>
7538                 #include <functional>
7539                 #include <vector>
7541                 #if defined SYSTEM_LIBCMIS
7542                 // See ucb/source/ucp/cmis/auth_provider.hxx:
7543                 #if !defined __clang__
7544                 #pragma GCC diagnostic push
7545                 #pragma GCC diagnostic ignored "-Wdeprecated"
7546                 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7547                 #endif
7548                 #include <libcmis/libcmis.hxx>
7549                 #if !defined __clang__
7550                 #pragma GCC diagnostic pop
7551                 #endif
7552                 #endif
7554                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7555                     std::sort(v.begin(), v.end(), fn);
7556                 }
7557                 ]])],[CXXFLAGS_CXX11=$flag])
7558             AC_LANG_POP([C++])
7559             CXXFLAGS=$save_CXXFLAGS
7560             if test -n "$CXXFLAGS_CXX11"; then
7561                 break
7562             fi
7563         done
7564     fi
7565     if test -n "$CXXFLAGS_CXX11"; then
7566         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7567     else
7568         AC_MSG_ERROR(no)
7569     fi
7571 AC_SUBST(CXXFLAGS_CXX11)
7573 if test "$GCC" = "yes"; then
7574     save_CXXFLAGS=$CXXFLAGS
7575     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7576     CHECK_L_ATOMIC
7577     CXXFLAGS=$save_CXXFLAGS
7578     AC_SUBST(ATOMIC_LIB)
7581 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7582 save_CXXFLAGS=$CXXFLAGS
7583 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7584 AC_LANG_PUSH([C++])
7586 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7587 #include <stddef.h>
7589 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7591 namespace
7593         struct b
7594         {
7595                 int i;
7596                 int j;
7597         };
7599 ]], [[
7600 struct a
7602         int i;
7603         int j;
7605 a thinga[]={{0,0}, {1,1}};
7606 b thingb[]={{0,0}, {1,1}};
7607 size_t i = sizeof(sal_n_array_size(thinga));
7608 size_t j = sizeof(sal_n_array_size(thingb));
7609 return !(i != 0 && j != 0);
7611     ], [ AC_MSG_RESULT(yes) ],
7612     [ AC_MSG_ERROR(no)])
7613 AC_LANG_POP([C++])
7614 CXXFLAGS=$save_CXXFLAGS
7616 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7617 if test "$GCC" = yes; then
7618     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7619     AC_LANG_PUSH([C++])
7620     save_CXXFLAGS=$CXXFLAGS
7621     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7622     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7623     CXXFLAGS=$save_CXXFLAGS
7624     AC_LANG_POP([C++])
7625     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7626         AC_MSG_RESULT([yes])
7627     else
7628         AC_MSG_RESULT([no])
7629     fi
7631 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7633 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7634 AC_LANG_PUSH([C++])
7635 save_CXXFLAGS=$CXXFLAGS
7636 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7637 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7638         #include <algorithm>
7639         #include <initializer_list>
7640         #include <vector>
7641         template<typename T> class S {
7642         private:
7643             std::vector<T> v_;
7644         public:
7645             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7646         };
7647         constinit S<int> s{3, 2, 1};
7648     ])], [
7649         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7650         AC_MSG_RESULT([yes])
7651     ], [AC_MSG_RESULT([no])])
7652 CXXFLAGS=$save_CXXFLAGS
7653 AC_LANG_POP([C++])
7655 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7656 AC_LANG_PUSH([C++])
7657 save_CXXFLAGS=$CXXFLAGS
7658 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7659 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7660         #include <span>
7661         #include <type_traits>
7662         // Don't check size_type directly, as it was called index_type before P1872R0:
7663         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7664     ])], [
7665         AC_DEFINE([HAVE_CPP_SPAN],[1])
7666         AC_MSG_RESULT([yes])
7667     ], [AC_MSG_RESULT([no])])
7668 CXXFLAGS=$save_CXXFLAGS
7669 AC_LANG_POP([C++])
7671 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7672 AC_LANG_PUSH([C++])
7673 save_CXXFLAGS=$CXXFLAGS
7674 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7675 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7676         struct S1 { S1(S1 &&); };
7677         struct S2: S1 {};
7678         S1 f(S2 s) { return s; }
7679     ])], [
7680         AC_DEFINE([HAVE_P1155R3],[1])
7681         AC_MSG_RESULT([yes])
7682     ], [AC_MSG_RESULT([no])])
7683 CXXFLAGS=$save_CXXFLAGS
7684 AC_LANG_POP([C++])
7686 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7687 HAVE_CXX20_ATOMIC_REF=
7688 AC_LANG_PUSH([C++])
7689 save_CXXFLAGS=$CXXFLAGS
7690 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7691 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7692         #include <atomic>
7693         int x;
7694         std::atomic_ref<int> y(x);
7695     ])], [
7696         HAVE_CXX20_ATOMIC_REF=TRUE
7697         AC_MSG_RESULT([yes])
7698     ], [AC_MSG_RESULT([no])])
7699 CXXFLAGS=$save_CXXFLAGS
7700 AC_LANG_POP([C++])
7701 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7703 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7704 dnl which is included in -Wextra anyway):
7705 HAVE_WDEPRECATED_COPY_DTOR=
7706 if test "$GCC" = yes; then
7707     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7708     AC_LANG_PUSH([C++])
7709     save_CXXFLAGS=$CXXFLAGS
7710     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7711     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7712             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7713             AC_MSG_RESULT([yes])
7714         ], [AC_MSG_RESULT([no])])
7715     CXXFLAGS=$save_CXXFLAGS
7716     AC_LANG_POP([C++])
7718 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7720 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7721 dnl uninitialized warning for code like
7723 dnl   OString f();
7724 dnl   boost::optional<OString> * g(bool b) {
7725 dnl       boost::optional<OString> o;
7726 dnl       if (b) o = f();
7727 dnl       return new boost::optional<OString>(o);
7728 dnl   }
7730 dnl (as is e.g. present, in a slightly more elaborate form, in
7731 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7732 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7733 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7734 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7735     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7736     AC_LANG_PUSH([C++])
7737     save_CXXFLAGS=$CXXFLAGS
7738     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7739     if test "$ENABLE_OPTIMIZED" = TRUE; then
7740         CXXFLAGS="$CXXFLAGS -O2"
7741     else
7742         CXXFLAGS="$CXXFLAGS -O0"
7743     fi
7744     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7745             #include <new>
7746             void f1(int);
7747             struct S1 {
7748                 ~S1() { f1(n); }
7749                 int n = 0;
7750             };
7751             struct S2 {
7752                 S2() {}
7753                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7754                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7755                 void set(S1 s) {
7756                     new (stg) S1(s);
7757                     init = true;
7758                 }
7759                 bool init = false;
7760                 char stg[sizeof (S1)];
7761             } ;
7762             S1 f2();
7763             S2 * f3(bool b) {
7764                 S2 o;
7765                 if (b) o.set(f2());
7766                 return new S2(o);
7767             }
7768         ]])], [AC_MSG_RESULT([no])], [
7769             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7770             AC_MSG_RESULT([yes])
7771         ])
7772     CXXFLAGS=$save_CXXFLAGS
7773     AC_LANG_POP([C++])
7775 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7777 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7778 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7779 dnl hits us e.g. with GCC 10 and --enable-optimized at
7781 dnl   In file included from include/rtl/string.hxx:49,
7782 dnl                    from include/rtl/ustring.hxx:43,
7783 dnl                    from include/osl/file.hxx:35,
7784 dnl                    from include/codemaker/global.hxx:28,
7785 dnl                    from include/codemaker/options.hxx:23,
7786 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7787 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7788 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,
7789 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,
7790 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,
7791 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7792 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7793 dnl      78 |         memcpy( buffer, data, length );
7794 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7795 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7796 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7797     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7798     AC_LANG_PUSH([C++])
7799     save_CXXFLAGS=$CXXFLAGS
7800     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7801     if test "$ENABLE_OPTIMIZED" = TRUE; then
7802         CXXFLAGS="$CXXFLAGS -O2"
7803     else
7804         CXXFLAGS="$CXXFLAGS -O0"
7805     fi
7806     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7807     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7808             void fill(char const * begin, char const * end, char c);
7809             struct q {
7810                 char ids[4];
7811                 char username[6];
7812             };
7813             void test(q & c) {
7814                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7815                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7816             }
7817         ]])], [AC_MSG_RESULT([no])], [
7818             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7819             AC_MSG_RESULT([yes])
7820         ])
7821     CXXFLAGS=$save_CXXFLAGS
7822     AC_LANG_POP([C++])
7824 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7826 HAVE_DLLEXPORTINLINES=
7827 if test "$_os" = "WINNT"; then
7828     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7829     AC_LANG_PUSH([C++])
7830     save_CXXFLAGS=$CXXFLAGS
7831     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7832     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7833             HAVE_DLLEXPORTINLINES=TRUE
7834             AC_MSG_RESULT([yes])
7835         ], [AC_MSG_RESULT([no])])
7836     CXXFLAGS=$save_CXXFLAGS
7837     AC_LANG_POP([C++])
7839 AC_SUBST([HAVE_DLLEXPORTINLINES])
7841 dnl ===================================================================
7842 dnl CPU Intrinsics support - SSE, AVX
7843 dnl ===================================================================
7845 CXXFLAGS_INTRINSICS_SSE2=
7846 CXXFLAGS_INTRINSICS_SSSE3=
7847 CXXFLAGS_INTRINSICS_SSE41=
7848 CXXFLAGS_INTRINSICS_SSE42=
7849 CXXFLAGS_INTRINSICS_AVX=
7850 CXXFLAGS_INTRINSICS_AVX2=
7851 CXXFLAGS_INTRINSICS_AVX512=
7852 CXXFLAGS_INTRINSICS_AVX512F=
7853 CXXFLAGS_INTRINSICS_F16C=
7854 CXXFLAGS_INTRINSICS_FMA=
7856 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7857     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7858     flag_sse2=-msse2
7859     flag_ssse3=-mssse3
7860     flag_sse41=-msse4.1
7861     flag_sse42=-msse4.2
7862     flag_avx=-mavx
7863     flag_avx2=-mavx2
7864     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7865     flag_avx512f=-mavx512f
7866     flag_f16c=-mf16c
7867     flag_fma=-mfma
7868 else
7869     # With MSVC using -arch is in fact not necessary for being able
7870     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7871     # even if compiled with -arch:AVX, the -arch option really only affects
7872     # instructions generated for C/C++ code.
7873     # So use the matching same (or lower) -arch options, but only in order
7874     # to generate the best matching instructions for the C++ code surrounding
7875     # the intrinsics.
7876     # SSE2 is the default for x86/x64, so no need to specify the option.
7877     flag_sse2=
7878     # No specific options for these, use the next lower.
7879     flag_ssse3="$flag_sse2"
7880     flag_sse41="$flag_sse2"
7881     flag_sse42="$flag_sse2"
7882     flag_avx=-arch:AVX
7883     flag_avx2=-arch:AVX2
7884     flag_avx512=-arch:AVX512
7885     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7886     flag_avx512f=-arch:AVX2
7887     # No MSVC options for these.
7888     flag_f16c="$flag_sse2"
7889     flag_fma="$flag_sse2"
7892 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7893 AC_LANG_PUSH([C++])
7894 save_CXXFLAGS=$CXXFLAGS
7895 CXXFLAGS="$CXXFLAGS $flag_sse2"
7896 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7897     #include <emmintrin.h>
7898     int main () {
7899         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7900         c = _mm_xor_si128 (a, b);
7901         return 0;
7902     }
7903     ])],
7904     [can_compile_sse2=yes],
7905     [can_compile_sse2=no])
7906 AC_LANG_POP([C++])
7907 CXXFLAGS=$save_CXXFLAGS
7908 AC_MSG_RESULT([${can_compile_sse2}])
7909 if test "${can_compile_sse2}" = "yes" ; then
7910     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7913 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7914 AC_LANG_PUSH([C++])
7915 save_CXXFLAGS=$CXXFLAGS
7916 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7917 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7918     #include <tmmintrin.h>
7919     int main () {
7920         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7921         c = _mm_maddubs_epi16 (a, b);
7922         return 0;
7923     }
7924     ])],
7925     [can_compile_ssse3=yes],
7926     [can_compile_ssse3=no])
7927 AC_LANG_POP([C++])
7928 CXXFLAGS=$save_CXXFLAGS
7929 AC_MSG_RESULT([${can_compile_ssse3}])
7930 if test "${can_compile_ssse3}" = "yes" ; then
7931     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7934 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7935 AC_LANG_PUSH([C++])
7936 save_CXXFLAGS=$CXXFLAGS
7937 CXXFLAGS="$CXXFLAGS $flag_sse41"
7938 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7939     #include <smmintrin.h>
7940     int main () {
7941         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7942         c = _mm_cmpeq_epi64 (a, b);
7943         return 0;
7944     }
7945     ])],
7946     [can_compile_sse41=yes],
7947     [can_compile_sse41=no])
7948 AC_LANG_POP([C++])
7949 CXXFLAGS=$save_CXXFLAGS
7950 AC_MSG_RESULT([${can_compile_sse41}])
7951 if test "${can_compile_sse41}" = "yes" ; then
7952     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7955 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7956 AC_LANG_PUSH([C++])
7957 save_CXXFLAGS=$CXXFLAGS
7958 CXXFLAGS="$CXXFLAGS $flag_sse42"
7959 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7960     #include <nmmintrin.h>
7961     int main () {
7962         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7963         c = _mm_cmpgt_epi64 (a, b);
7964         return 0;
7965     }
7966     ])],
7967     [can_compile_sse42=yes],
7968     [can_compile_sse42=no])
7969 AC_LANG_POP([C++])
7970 CXXFLAGS=$save_CXXFLAGS
7971 AC_MSG_RESULT([${can_compile_sse42}])
7972 if test "${can_compile_sse42}" = "yes" ; then
7973     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7976 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7977 AC_LANG_PUSH([C++])
7978 save_CXXFLAGS=$CXXFLAGS
7979 CXXFLAGS="$CXXFLAGS $flag_avx"
7980 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7981     #include <immintrin.h>
7982     int main () {
7983         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7984         c = _mm256_xor_ps(a, b);
7985         return 0;
7986     }
7987     ])],
7988     [can_compile_avx=yes],
7989     [can_compile_avx=no])
7990 AC_LANG_POP([C++])
7991 CXXFLAGS=$save_CXXFLAGS
7992 AC_MSG_RESULT([${can_compile_avx}])
7993 if test "${can_compile_avx}" = "yes" ; then
7994     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7997 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7998 AC_LANG_PUSH([C++])
7999 save_CXXFLAGS=$CXXFLAGS
8000 CXXFLAGS="$CXXFLAGS $flag_avx2"
8001 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8002     #include <immintrin.h>
8003     int main () {
8004         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8005         c = _mm256_maddubs_epi16(a, b);
8006         return 0;
8007     }
8008     ])],
8009     [can_compile_avx2=yes],
8010     [can_compile_avx2=no])
8011 AC_LANG_POP([C++])
8012 CXXFLAGS=$save_CXXFLAGS
8013 AC_MSG_RESULT([${can_compile_avx2}])
8014 if test "${can_compile_avx2}" = "yes" ; then
8015     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8018 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8019 AC_LANG_PUSH([C++])
8020 save_CXXFLAGS=$CXXFLAGS
8021 CXXFLAGS="$CXXFLAGS $flag_avx512"
8022 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8023     #include <immintrin.h>
8024     int main () {
8025         __m512i a = _mm512_loadu_si512(0);
8026         __m512d v1 = _mm512_load_pd(0);
8027         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8028         __m512d v2 = _mm512_abs_pd(v1);
8029         return 0;
8030     }
8031     ])],
8032     [can_compile_avx512=yes],
8033     [can_compile_avx512=no])
8034 AC_LANG_POP([C++])
8035 CXXFLAGS=$save_CXXFLAGS
8036 AC_MSG_RESULT([${can_compile_avx512}])
8037 if test "${can_compile_avx512}" = "yes" ; then
8038     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8039     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8042 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8043 AC_LANG_PUSH([C++])
8044 save_CXXFLAGS=$CXXFLAGS
8045 CXXFLAGS="$CXXFLAGS $flag_f16c"
8046 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8047     #include <immintrin.h>
8048     int main () {
8049         __m128i a = _mm_set1_epi32 (0);
8050         __m128 c;
8051         c = _mm_cvtph_ps(a);
8052         return 0;
8053     }
8054     ])],
8055     [can_compile_f16c=yes],
8056     [can_compile_f16c=no])
8057 AC_LANG_POP([C++])
8058 CXXFLAGS=$save_CXXFLAGS
8059 AC_MSG_RESULT([${can_compile_f16c}])
8060 if test "${can_compile_f16c}" = "yes" ; then
8061     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8064 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8065 AC_LANG_PUSH([C++])
8066 save_CXXFLAGS=$CXXFLAGS
8067 CXXFLAGS="$CXXFLAGS $flag_fma"
8068 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8069     #include <immintrin.h>
8070     int main () {
8071         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8072         d = _mm256_fmadd_ps(a, b, c);
8073         return 0;
8074     }
8075     ])],
8076     [can_compile_fma=yes],
8077     [can_compile_fma=no])
8078 AC_LANG_POP([C++])
8079 CXXFLAGS=$save_CXXFLAGS
8080 AC_MSG_RESULT([${can_compile_fma}])
8081 if test "${can_compile_fma}" = "yes" ; then
8082     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8085 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8086 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8087 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8088 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8089 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8090 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8091 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8092 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8093 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8094 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8096 dnl ===================================================================
8097 dnl system stl sanity tests
8098 dnl ===================================================================
8099 if test "$_os" != "WINNT"; then
8101     AC_LANG_PUSH([C++])
8103     save_CPPFLAGS="$CPPFLAGS"
8104     if test -n "$MACOSX_SDK_PATH"; then
8105         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8106     fi
8108     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8109     # only.
8110     if test "$CPP_LIBRARY" = GLIBCXX; then
8111         dnl gcc#19664, gcc#22482, rhbz#162935
8112         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8113         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8114         AC_MSG_RESULT([$stlvisok])
8115         if test "$stlvisok" = "no"; then
8116             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8117         fi
8118     fi
8120     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8121     # when we don't make any dynamic libraries?
8122     if test "$DISABLE_DYNLOADING" = ""; then
8123         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8124         cat > conftestlib1.cc <<_ACEOF
8125 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8126 struct S2: S1<int> { virtual ~S2(); };
8127 S2::~S2() {}
8128 _ACEOF
8129         cat > conftestlib2.cc <<_ACEOF
8130 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8131 struct S2: S1<int> { virtual ~S2(); };
8132 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8133 _ACEOF
8134         gccvisinlineshiddenok=yes
8135         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8136             gccvisinlineshiddenok=no
8137         else
8138             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8139             dnl known to not work with -z defs (unsetting which makes the test
8140             dnl moot, though):
8141             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8142             if test "$COM_IS_CLANG" = TRUE; then
8143                 for i in $CXX $CXXFLAGS; do
8144                     case $i in
8145                     -fsanitize=*)
8146                         my_linkflagsnoundefs=
8147                         break
8148                         ;;
8149                     esac
8150                 done
8151             fi
8152             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8153                 gccvisinlineshiddenok=no
8154             fi
8155         fi
8157         rm -fr libconftest*
8158         AC_MSG_RESULT([$gccvisinlineshiddenok])
8159         if test "$gccvisinlineshiddenok" = "no"; then
8160             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8161         fi
8162     fi
8164    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8165     cat >visibility.cxx <<_ACEOF
8166 #pragma GCC visibility push(hidden)
8167 struct __attribute__ ((visibility ("default"))) TestStruct {
8168   static void Init();
8170 __attribute__ ((visibility ("default"))) void TestFunc() {
8171   TestStruct::Init();
8173 _ACEOF
8174     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8175         gccvisbroken=yes
8176     else
8177         case "$host_cpu" in
8178         i?86|x86_64)
8179             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8180                 gccvisbroken=no
8181             else
8182                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8183                     gccvisbroken=no
8184                 else
8185                     gccvisbroken=yes
8186                 fi
8187             fi
8188             ;;
8189         *)
8190             gccvisbroken=no
8191             ;;
8192         esac
8193     fi
8194     rm -f visibility.s visibility.cxx
8196     AC_MSG_RESULT([$gccvisbroken])
8197     if test "$gccvisbroken" = "yes"; then
8198         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8199     fi
8201     CPPFLAGS="$save_CPPFLAGS"
8203     AC_MSG_CHECKING([if CET endbranch is recognized])
8204 cat > endbr.s <<_ACEOF
8205 endbr32
8206 _ACEOF
8207     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8208     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8209         AC_MSG_RESULT([yes])
8210         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8211     else
8212         AC_MSG_RESULT([no])
8213     fi
8214     rm -f endbr.s endbr.o
8215     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8217     AC_LANG_POP([C++])
8220 dnl ===================================================================
8221 dnl  Clang++ tests
8222 dnl ===================================================================
8224 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8225 if test "$GCC" = "yes"; then
8226     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8227     AC_LANG_PUSH([C++])
8228     save_CXXFLAGS=$CXXFLAGS
8229     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8230     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8231     CXXFLAGS=$save_CXXFLAGS
8232     AC_LANG_POP([C++])
8233     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8234         AC_MSG_RESULT([yes])
8235     else
8236         AC_MSG_RESULT([no])
8237     fi
8239 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8241 dnl ===================================================================
8242 dnl Compiler plugins
8243 dnl ===================================================================
8245 COMPILER_PLUGINS=
8246 # currently only Clang
8248 if test "$COM_IS_CLANG" != "TRUE"; then
8249     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8250         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8251         enable_compiler_plugins=no
8252     fi
8255 COMPILER_PLUGINS_COM_IS_CLANG=
8256 if test "$COM_IS_CLANG" = "TRUE"; then
8257     if test -n "$enable_compiler_plugins"; then
8258         compiler_plugins="$enable_compiler_plugins"
8259     elif test -n "$ENABLE_DBGUTIL"; then
8260         compiler_plugins=test
8261     else
8262         compiler_plugins=no
8263     fi
8264     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8265         if test "$CLANGVER" -lt 120001; then
8266             if test "$compiler_plugins" = yes; then
8267                 AC_MSG_ERROR(
8268                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8269             else
8270                 compiler_plugins=no
8271             fi
8272         fi
8273     fi
8274     if test "$compiler_plugins" != "no"; then
8275         dnl The prefix where Clang resides, override to where Clang resides if
8276         dnl using a source build:
8277         if test -z "$CLANGDIR"; then
8278             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8279         fi
8280         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8281         if test -z "$COMPILER_PLUGINS_CXX"; then
8282             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8283         fi
8284         clangbindir=$CLANGDIR/bin
8285         if test "$build_os" = "cygwin"; then
8286             clangbindir=$(cygpath -u "$clangbindir")
8287         fi
8288         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8289         if test -n "$LLVM_CONFIG"; then
8290             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8291             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8292             if test -z "$CLANGLIBDIR"; then
8293                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8294             fi
8295             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8296             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8297             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8298                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8299                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8300                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8301                 fi
8302             fi
8303             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8304             clangobjdir=$($LLVM_CONFIG --obj-root)
8305             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8306                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8307             fi
8308         fi
8309         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8310         AC_LANG_PUSH([C++])
8311         save_CXX=$CXX
8312         save_CXXCPP=$CXXCPP
8313         save_CPPFLAGS=$CPPFLAGS
8314         save_CXXFLAGS=$CXXFLAGS
8315         save_LDFLAGS=$LDFLAGS
8316         save_LIBS=$LIBS
8317         CXX=$COMPILER_PLUGINS_CXX
8318         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8319         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8320         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8321         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8322             [COMPILER_PLUGINS=TRUE],
8323             [
8324             if test "$compiler_plugins" = "yes"; then
8325                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8326             else
8327                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8328                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8329             fi
8330             ])
8331         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8332         dnl comment in compilerplugins/Makefile-clang.mk:
8333         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8334             LDFLAGS=""
8335             AC_MSG_CHECKING([for clang libraries to use])
8336             if test -z "$CLANGTOOLLIBS"; then
8337                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8338                 AC_LINK_IFELSE([
8339                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8340                         [[ clang::FullSourceLoc().dump(); ]])
8341                 ],[CLANGTOOLLIBS="$LIBS"],[])
8342             fi
8343             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8344             dnl list of individual -lclang* (but note that that list can become outdated over time,
8345             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8346             dnl needs to include -lclangSupport now"):
8347             if test -z "$CLANGTOOLLIBS"; then
8348                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8349  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8350                 AC_LINK_IFELSE([
8351                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8352                         [[ clang::FullSourceLoc().dump(); ]])
8353                 ],[CLANGTOOLLIBS="$LIBS"],[])
8354             fi
8355             AC_MSG_RESULT([$CLANGTOOLLIBS])
8356             if test -z "$CLANGTOOLLIBS"; then
8357                 if test "$compiler_plugins" = "yes"; then
8358                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8359                 else
8360                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8361                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8362                 fi
8363                 COMPILER_PLUGINS=
8364             fi
8365             if test -n "$COMPILER_PLUGINS"; then
8366                 if test -z "$CLANGSYSINCLUDE"; then
8367                     if test -n "$LLVM_CONFIG"; then
8368                         # Path to the clang system headers (no idea if there's a better way to get it).
8369                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8370                     fi
8371                 fi
8372             fi
8373         fi
8374         CXX=$save_CXX
8375         CXXCPP=$save_CXXCPP
8376         CPPFLAGS=$save_CPPFLAGS
8377         CXXFLAGS=$save_CXXFLAGS
8378         LDFLAGS=$save_LDFLAGS
8379         LIBS="$save_LIBS"
8380         AC_LANG_POP([C++])
8382         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8383         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8384             #ifndef __clang__
8385             you lose
8386             #endif
8387             int foo=42;
8388             ]])],
8389             [AC_MSG_RESULT([yes])
8390              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8391             [AC_MSG_RESULT([no])])
8392         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8393     fi
8394 else
8395     if test "$enable_compiler_plugins" = "yes"; then
8396         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8397     fi
8399 COMPILER_PLUGINS_ANALYZER_PCH=
8400 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8401     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8403 AC_SUBST(COMPILER_PLUGINS)
8404 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8405 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8406 AC_SUBST(COMPILER_PLUGINS_CXX)
8407 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8408 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8409 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8410 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8411 AC_SUBST(CLANGDIR)
8412 AC_SUBST(CLANGLIBDIR)
8413 AC_SUBST(CLANGTOOLLIBS)
8414 AC_SUBST(CLANGSYSINCLUDE)
8416 # Plugin to help linker.
8417 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8418 # This makes --enable-lto build with clang work.
8419 AC_SUBST(LD_PLUGIN)
8421 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8422 AC_SUBST(HAVE_POSIX_FALLOCATE)
8424 JITC_PROCESSOR_TYPE=""
8425 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8426     # IBMs JDK needs this...
8427     JITC_PROCESSOR_TYPE=6
8428     export JITC_PROCESSOR_TYPE
8430 AC_SUBST([JITC_PROCESSOR_TYPE])
8432 # Misc Windows Stuff
8433 AC_ARG_WITH(ucrt-dir,
8434     AS_HELP_STRING([--with-ucrt-dir],
8435         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8436         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8437         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8438             Windows6.1-KB2999226-x64.msu
8439             Windows6.1-KB2999226-x86.msu
8440             Windows8.1-KB2999226-x64.msu
8441             Windows8.1-KB2999226-x86.msu
8442             Windows8-RT-KB2999226-x64.msu
8443             Windows8-RT-KB2999226-x86.msu
8444         A zip archive including those files is available from Microsoft site:
8445         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8448 UCRT_REDISTDIR="$with_ucrt_dir"
8449 if test $_os = "WINNT"; then
8450     find_msvc_x64_dlls
8451     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8452     MSVC_DLLS="$msvcdlls"
8453     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8454         with_redist=143
8455     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8456         with_redist=142
8457     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8458         with_redist=141
8459     fi
8460     for i in $PKGFORMAT; do
8461         if test "$i" = msi; then
8462             find_msms "$with_redist"
8463             if test -n "$msmdir"; then
8464                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8465                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8466             fi
8467             break
8468         fi
8469     done
8471     if test "$UCRT_REDISTDIR" = "no"; then
8472         dnl explicitly disabled
8473         UCRT_REDISTDIR=""
8474     else
8475         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8476                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8477                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8478                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8479                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8480                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8481             UCRT_REDISTDIR=""
8482             if test -n "$PKGFORMAT"; then
8483                for i in $PKGFORMAT; do
8484                    case "$i" in
8485                    msi)
8486                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8487                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8488                        ;;
8489                    esac
8490                done
8491             fi
8492         fi
8493     fi
8496 AC_SUBST(UCRT_REDISTDIR)
8497 AC_SUBST(MSVC_DLL_PATH)
8498 AC_SUBST(MSVC_DLLS)
8499 AC_SUBST(MSM_PATH)
8502 dnl ===================================================================
8503 dnl Checks for Java
8504 dnl ===================================================================
8505 if test "$ENABLE_JAVA" != ""; then
8507     # Windows-specific tests
8508     if test "$build_os" = "cygwin"; then
8509         if test -z "$with_jdk_home"; then
8510             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8511             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8512             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8513             if test -n "$regvalue"; then
8514                 ver=$regvalue
8515                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8516                 with_jdk_home=$regvalue
8517             fi
8518             howfound="found automatically"
8519         else
8520             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8521             howfound="you passed"
8522         fi
8524         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8525             AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8526         fi
8527     fi
8529     # 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.
8530     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8531     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8532         with_jdk_home=`/usr/libexec/java_home`
8533     fi
8535     JAVA_HOME=; export JAVA_HOME
8536     if test -z "$with_jdk_home"; then
8537         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8538     else
8539         _java_path="$with_jdk_home/bin/$with_java"
8540         dnl Check if there is a Java interpreter at all.
8541         if test -x "$_java_path"; then
8542             JAVAINTERPRETER=$_java_path
8543         else
8544             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8545         fi
8546     fi
8548     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8549     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8550     dnl loaded by java to run JunitTests:
8551     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8552         shortjdkhome=`cygpath -d "$with_jdk_home"`
8553         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
8554             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8555             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8556         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
8557             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8558             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8559         fi
8561         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8562             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8563         fi
8564         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8565     elif test "$cross_compiling" != "yes"; then
8566         case $CPUNAME in
8567             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8568                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8569                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8570                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8571                 fi
8572                 ;;
8573             *) # assumption: everything else 32-bit
8574                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8575                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8576                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8577                 fi
8578                 ;;
8579         esac
8580     fi
8583 dnl ===================================================================
8584 dnl Checks for JDK.
8585 dnl ===================================================================
8587 # Whether all the complexity here actually is needed any more or not, no idea.
8589 JDK_SECURITYMANAGER_DISALLOWED=
8590 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8591     _gij_longver=0
8592     AC_MSG_CHECKING([the installed JDK])
8593     if test -n "$JAVAINTERPRETER"; then
8594         dnl java -version sends output to stderr!
8595         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8596             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8597         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8598             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8599         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8600             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8601         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8602             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8603         else
8604             JDK=sun
8606             dnl Sun JDK specific tests
8607             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8608             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8610             if test "$_jdk_ver" -lt 10900; then
8611                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8612             fi
8613             if test "$_jdk_ver" -gt 10900; then
8614                 JAVA_CLASSPATH_NOT_SET=TRUE
8615             fi
8616             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8617             dnl completely removed in some Java version > 18 (see
8618             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8619             if test "$_jdk_ver" -ge 180000; then
8620                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8621             fi
8623             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8624             if test "$_os" = "WINNT"; then
8625                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8626             fi
8627             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8629             # set to limit VM usage for JunitTests
8630             JAVAIFLAGS=-Xmx64M
8631             # set to limit VM usage for javac
8632             JAVACFLAGS=-J-Xmx128M
8633         fi
8634     else
8635         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8636     fi
8637 else
8638     if test -z "$ENABLE_JAVA"; then
8639         dnl Java disabled
8640         JAVA_HOME=
8641         export JAVA_HOME
8642     elif test "$cross_compiling" = "yes"; then
8643         # Just assume compatibility of build and host JDK
8644         JDK=$JDK_FOR_BUILD
8645         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8646     fi
8649 dnl ===================================================================
8650 dnl Checks for javac
8651 dnl ===================================================================
8652 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8653     javacompiler="javac"
8654     : ${JAVA_SOURCE_VER=8}
8655     : ${JAVA_TARGET_VER=8}
8656     if test -z "$with_jdk_home"; then
8657         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8658     else
8659         _javac_path="$with_jdk_home/bin/$javacompiler"
8660         dnl Check if there is a Java compiler at all.
8661         if test -x "$_javac_path"; then
8662             JAVACOMPILER=$_javac_path
8663         fi
8664     fi
8665     if test -z "$JAVACOMPILER"; then
8666         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8667     fi
8668     if test "$build_os" = "cygwin"; then
8669         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8670             JAVACOMPILER="${JAVACOMPILER}.exe"
8671         fi
8672         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8673     fi
8676 dnl ===================================================================
8677 dnl Checks for javadoc
8678 dnl ===================================================================
8679 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8680     if test -z "$with_jdk_home"; then
8681         AC_PATH_PROG(JAVADOC, javadoc)
8682     else
8683         _javadoc_path="$with_jdk_home/bin/javadoc"
8684         dnl Check if there is a javadoc at all.
8685         if test -x "$_javadoc_path"; then
8686             JAVADOC=$_javadoc_path
8687         else
8688             AC_PATH_PROG(JAVADOC, javadoc)
8689         fi
8690     fi
8691     if test -z "$JAVADOC"; then
8692         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8693     fi
8694     if test "$build_os" = "cygwin"; then
8695         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8696             JAVADOC="${JAVADOC}.exe"
8697         fi
8698         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8699     fi
8701     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8702     JAVADOCISGJDOC="yes"
8703     fi
8705 AC_SUBST(JAVADOC)
8706 AC_SUBST(JAVADOCISGJDOC)
8708 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8709     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8710     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8711         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8712            # try to recover first by looking whether we have an alternative
8713            # system as in Debian or newer SuSEs where following /usr/bin/javac
8714            # over /etc/alternatives/javac leads to the right bindir where we
8715            # just need to strip a bit away to get a valid JAVA_HOME
8716            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8717         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8718             # maybe only one level of symlink (e.g. on Mac)
8719             JAVA_HOME=$(readlink $JAVACOMPILER)
8720             if test "$(dirname $JAVA_HOME)" = "."; then
8721                 # we've got no path to trim back
8722                 JAVA_HOME=""
8723             fi
8724         else
8725             # else warn
8726             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8727             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8728             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8729             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8730         fi
8731         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8732         if test "$JAVA_HOME" != "/usr"; then
8733             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8734                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8735                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8736                 dnl Tiger already returns a JDK path...
8737                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8738             else
8739                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8740                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8741                 dnl that checks which version to run
8742                 if test -f "$JAVA_HOME"; then
8743                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8744                 fi
8745             fi
8746         fi
8747     fi
8748     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8750     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8751     if test -z "$JAVA_HOME"; then
8752         if test "x$with_jdk_home" = "x"; then
8753             cat > findhome.java <<_ACEOF
8754 [import java.io.File;
8756 class findhome
8758     public static void main(String args[])
8759     {
8760         String jrelocation = System.getProperty("java.home");
8761         File jre = new File(jrelocation);
8762         System.out.println(jre.getParent());
8763     }
8765 _ACEOF
8766             AC_MSG_CHECKING([if javac works])
8767             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8768             AC_TRY_EVAL(javac_cmd)
8769             if test $? = 0 -a -f ./findhome.class; then
8770                 AC_MSG_RESULT([javac works])
8771             else
8772                 echo "configure: javac test failed" >&5
8773                 cat findhome.java >&5
8774                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8775             fi
8776             AC_MSG_CHECKING([if gij knows its java.home])
8777             JAVA_HOME=`$JAVAINTERPRETER findhome`
8778             if test $? = 0 -a "$JAVA_HOME" != ""; then
8779                 AC_MSG_RESULT([$JAVA_HOME])
8780             else
8781                 echo "configure: java test failed" >&5
8782                 cat findhome.java >&5
8783                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8784             fi
8785             # clean-up after ourselves
8786             rm -f ./findhome.java ./findhome.class
8787         else
8788             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8789         fi
8790     fi
8792     # now check if $JAVA_HOME is really valid
8793     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8794         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8795             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8796             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8797             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8798             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8799             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8800             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8801         fi
8802     fi
8803     PathFormat "$JAVA_HOME"
8804     JAVA_HOME="$formatted_path"
8807 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8808     "$_os" != Darwin
8809 then
8810     AC_MSG_CHECKING([for JAWT lib])
8811     if test "$_os" = WINNT; then
8812         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8813         JAWTLIB=jawt.lib
8814     else
8815         case "$host_cpu" in
8816         arm*)
8817             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8818             JAVA_ARCH=$my_java_arch
8819             ;;
8820         i*86)
8821             my_java_arch=i386
8822             ;;
8823         m68k)
8824             my_java_arch=m68k
8825             ;;
8826         powerpc)
8827             my_java_arch=ppc
8828             ;;
8829         powerpc64)
8830             my_java_arch=ppc64
8831             ;;
8832         powerpc64le)
8833             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8834             JAVA_ARCH=$my_java_arch
8835             ;;
8836         sparc64)
8837             my_java_arch=sparcv9
8838             ;;
8839         x86_64)
8840             my_java_arch=amd64
8841             ;;
8842         *)
8843             my_java_arch=$host_cpu
8844             ;;
8845         esac
8846         # This is where JDK9 puts the library
8847         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8848             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8849         else
8850             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8851         fi
8852         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8853     fi
8854     AC_MSG_RESULT([$JAWTLIB])
8856 AC_SUBST(JAWTLIB)
8858 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8859     case "$host_os" in
8861     cygwin*|wsl*)
8862         JAVAINC="-I$JAVA_HOME/include/win32"
8863         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8864         ;;
8866     darwin*)
8867         if test -d "$JAVA_HOME/include/darwin"; then
8868             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8869         else
8870             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8871         fi
8872         ;;
8874     dragonfly*)
8875         JAVAINC="-I$JAVA_HOME/include"
8876         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8877         ;;
8879     freebsd*)
8880         JAVAINC="-I$JAVA_HOME/include"
8881         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8882         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8883         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8884         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8885         ;;
8887     k*bsd*-gnu*)
8888         JAVAINC="-I$JAVA_HOME/include"
8889         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8890         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8891         ;;
8893     linux-gnu*)
8894         JAVAINC="-I$JAVA_HOME/include"
8895         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8896         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8897         ;;
8899     *netbsd*)
8900         JAVAINC="-I$JAVA_HOME/include"
8901         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8902         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8903        ;;
8905     openbsd*)
8906         JAVAINC="-I$JAVA_HOME/include"
8907         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8908         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8909         ;;
8911     solaris*)
8912         JAVAINC="-I$JAVA_HOME/include"
8913         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8914         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8915         ;;
8916     esac
8918 SOLARINC="$SOLARINC $JAVAINC"
8920 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8921     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8922     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8923     JDK_FOR_BUILD=$JDK
8924     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8927 AC_SUBST(JAVACFLAGS)
8928 AC_SUBST(JAVACOMPILER)
8929 AC_SUBST(JAVAINTERPRETER)
8930 AC_SUBST(JAVAIFLAGS)
8931 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8932 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8933 AC_SUBST(JAVA_HOME)
8934 AC_SUBST(JAVA_HOME_FOR_BUILD)
8935 AC_SUBST(JDK)
8936 AC_SUBST(JDK_FOR_BUILD)
8937 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8938 AC_SUBST(JAVA_SOURCE_VER)
8939 AC_SUBST(JAVA_TARGET_VER)
8942 dnl ===================================================================
8943 dnl Export file validation
8944 dnl ===================================================================
8945 AC_MSG_CHECKING([whether to enable export file validation])
8946 if test "$with_export_validation" != "no"; then
8947     if test -z "$ENABLE_JAVA"; then
8948         if test "$with_export_validation" = "yes"; then
8949             AC_MSG_ERROR([requested, but Java is disabled])
8950         else
8951             AC_MSG_RESULT([no, as Java is disabled])
8952         fi
8953     elif ! test -d "${SRC_ROOT}/schema"; then
8954         if test "$with_export_validation" = "yes"; then
8955             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8956         else
8957             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8958         fi
8959     else
8960         AC_MSG_RESULT([yes])
8961         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8963         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8964         if test -z "$ODFVALIDATOR"; then
8965             # remember to download the ODF toolkit with validator later
8966             AC_MSG_NOTICE([no odfvalidator found, will download it])
8967             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8968             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8970             # and fetch name of odfvalidator jar name from download.lst
8971             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8972             AC_SUBST(ODFVALIDATOR_JAR)
8974             if test -z "$ODFVALIDATOR_JAR"; then
8975                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8976             fi
8977         fi
8978         if test "$build_os" = "cygwin"; then
8979             # In case of Cygwin it will be executed from Windows,
8980             # so we need to run bash and absolute path to validator
8981             # so instead of "odfvalidator" it will be
8982             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8983             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8984         else
8985             ODFVALIDATOR="sh $ODFVALIDATOR"
8986         fi
8987         AC_SUBST(ODFVALIDATOR)
8990         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8991         if test -z "$OFFICEOTRON"; then
8992             # remember to download the officeotron with validator later
8993             AC_MSG_NOTICE([no officeotron found, will download it])
8994             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8995             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8997             # and fetch name of officeotron jar name from download.lst
8998             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8999             AC_SUBST(OFFICEOTRON_JAR)
9001             if test -z "$OFFICEOTRON_JAR"; then
9002                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9003             fi
9004         else
9005             # check version of existing officeotron
9006             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9007             if test 0"$OFFICEOTRON_VER" -lt 704; then
9008                 AC_MSG_ERROR([officeotron too old])
9009             fi
9010         fi
9011         if test "$build_os" = "cygwin"; then
9012             # In case of Cygwin it will be executed from Windows,
9013             # so we need to run bash and absolute path to validator
9014             # so instead of "odfvalidator" it will be
9015             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9016             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9017         else
9018             OFFICEOTRON="sh $OFFICEOTRON"
9019         fi
9020     fi
9021     AC_SUBST(OFFICEOTRON)
9022 else
9023     AC_MSG_RESULT([no])
9026 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9027 if test "$with_bffvalidator" != "no"; then
9028     AC_DEFINE(HAVE_BFFVALIDATOR)
9030     if test "$with_export_validation" = "no"; then
9031         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9032     fi
9034     if test "$with_bffvalidator" = "yes"; then
9035         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9036     else
9037         BFFVALIDATOR="$with_bffvalidator"
9038     fi
9040     if test "$build_os" = "cygwin"; then
9041         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9042             AC_MSG_RESULT($BFFVALIDATOR)
9043         else
9044             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9045         fi
9046     elif test -n "$BFFVALIDATOR"; then
9047         # We are not in Cygwin but need to run Windows binary with wine
9048         AC_PATH_PROGS(WINE, wine)
9050         # so swap in a shell wrapper that converts paths transparently
9051         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9052         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9053         AC_SUBST(BFFVALIDATOR_EXE)
9054         AC_MSG_RESULT($BFFVALIDATOR)
9055     else
9056         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9057     fi
9058     AC_SUBST(BFFVALIDATOR)
9059 else
9060     AC_MSG_RESULT([no])
9063 dnl ===================================================================
9064 dnl Check for epm (not needed for Windows)
9065 dnl ===================================================================
9066 AC_MSG_CHECKING([whether to enable EPM for packing])
9067 if test "$enable_epm" = "yes"; then
9068     AC_MSG_RESULT([yes])
9069     if test "$_os" != "WINNT"; then
9070         if test $_os = Darwin; then
9071             EPM=internal
9072         elif test -n "$with_epm"; then
9073             EPM=$with_epm
9074         else
9075             AC_PATH_PROG(EPM, epm, no)
9076         fi
9077         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9078             AC_MSG_NOTICE([EPM will be built.])
9079             BUILD_TYPE="$BUILD_TYPE EPM"
9080             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9081         else
9082             # Gentoo has some epm which is something different...
9083             AC_MSG_CHECKING([whether the found epm is the right epm])
9084             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9085                 AC_MSG_RESULT([yes])
9086             else
9087                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9088             fi
9089             AC_MSG_CHECKING([epm version])
9090             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9091             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9092                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9093                 AC_MSG_RESULT([OK, >= 3.7])
9094             else
9095                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9096                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9097             fi
9098         fi
9099     fi
9101     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9102         AC_MSG_CHECKING([for rpm])
9103         for a in "$RPM" rpmbuild rpm; do
9104             $a --usage >/dev/null 2> /dev/null
9105             if test $? -eq 0; then
9106                 RPM=$a
9107                 break
9108             else
9109                 $a --version >/dev/null 2> /dev/null
9110                 if test $? -eq 0; then
9111                     RPM=$a
9112                     break
9113                 fi
9114             fi
9115         done
9116         if test -z "$RPM"; then
9117             AC_MSG_ERROR([not found])
9118         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9119             RPM_PATH=`which $RPM`
9120             AC_MSG_RESULT([$RPM_PATH])
9121             SCPDEFS="$SCPDEFS -DWITH_RPM"
9122         else
9123             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9124         fi
9125     fi
9126     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9127         AC_PATH_PROG(DPKG, dpkg, no)
9128         if test "$DPKG" = "no"; then
9129             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9130         fi
9131     fi
9132     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9133        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9134         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9135             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9136                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9137                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9138                     AC_MSG_RESULT([yes])
9139                 else
9140                     AC_MSG_RESULT([no])
9141                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9142                         _pt="rpm"
9143                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9144                         add_warning "the rpms will need to be installed with --nodeps"
9145                     else
9146                         _pt="pkg"
9147                     fi
9148                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9149                     add_warning "the ${_pt}s will not be relocatable"
9150                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9151                                  relocation will work, you need to patch your epm with the
9152                                  patch in epm/epm-3.7.patch or build with
9153                                  --with-epm=internal which will build a suitable epm])
9154                 fi
9155             fi
9156         fi
9157     fi
9158     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9159         AC_PATH_PROG(PKGMK, pkgmk, no)
9160         if test "$PKGMK" = "no"; then
9161             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9162         fi
9163     fi
9164     AC_SUBST(RPM)
9165     AC_SUBST(DPKG)
9166     AC_SUBST(PKGMK)
9167 else
9168     for i in $PKGFORMAT; do
9169         case "$i" in
9170         bsd | deb | pkg | rpm | native | portable)
9171             AC_MSG_ERROR(
9172                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9173             ;;
9174         esac
9175     done
9176     AC_MSG_RESULT([no])
9177     EPM=NO
9179 AC_SUBST(EPM)
9181 ENABLE_LWP=
9182 if test "$enable_lotuswordpro" = "yes"; then
9183     ENABLE_LWP="TRUE"
9185 AC_SUBST(ENABLE_LWP)
9187 dnl ===================================================================
9188 dnl Check for building ODK
9189 dnl ===================================================================
9190 AC_MSG_CHECKING([whether to build the ODK])
9191 if test "$enable_odk" = yes; then
9192     if test "$DISABLE_DYNLOADING" = TRUE; then
9193         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9194     fi
9195     AC_MSG_RESULT([yes])
9196     BUILD_TYPE="$BUILD_TYPE ODK"
9197 else
9198     AC_MSG_RESULT([no])
9201 if test "$enable_odk" != yes; then
9202     unset DOXYGEN
9203 else
9204     if test "$with_doxygen" = no; then
9205         AC_MSG_CHECKING([for doxygen])
9206         unset DOXYGEN
9207         AC_MSG_RESULT([no])
9208     else
9209         if test "$with_doxygen" = yes; then
9210             AC_PATH_PROG([DOXYGEN], [doxygen])
9211             if test -z "$DOXYGEN"; then
9212                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9213             fi
9214             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9215                 if ! dot -V 2>/dev/null; then
9216                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9217                 fi
9218             fi
9219         else
9220             AC_MSG_CHECKING([for doxygen])
9221             DOXYGEN=$with_doxygen
9222             AC_MSG_RESULT([$DOXYGEN])
9223         fi
9224         if test -n "$DOXYGEN"; then
9225             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9226             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9227             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9228                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9229             fi
9230         fi
9231     fi
9233 AC_SUBST([DOXYGEN])
9235 dnl ==================================================================
9236 dnl libfuzzer
9237 dnl ==================================================================
9238 AC_MSG_CHECKING([whether to enable fuzzers])
9239 if test "$enable_fuzzers" != yes; then
9240     AC_MSG_RESULT([no])
9241 else
9242     if test -z $LIB_FUZZING_ENGINE; then
9243       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9244     fi
9245     AC_MSG_RESULT([yes])
9246     ENABLE_FUZZERS="TRUE"
9247     AC_DEFINE([ENABLE_FUZZERS],1)
9248     AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9249     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9251 AC_SUBST(LIB_FUZZING_ENGINE)
9253 dnl ===================================================================
9254 dnl Check for system zlib
9255 dnl ===================================================================
9256 if test "$with_system_zlib" = "auto"; then
9257     case "$_os" in
9258     WINNT)
9259         with_system_zlib="$with_system_libs"
9260         ;;
9261     *)
9262         if test "$enable_fuzzers" != "yes"; then
9263             with_system_zlib=yes
9264         else
9265             with_system_zlib=no
9266         fi
9267         ;;
9268     esac
9271 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9272 dnl and has no pkg-config for it at least on some tinderboxes,
9273 dnl so leaving that out for now
9274 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9275 AC_MSG_CHECKING([which zlib to use])
9276 if test "$with_system_zlib" = "yes"; then
9277     AC_MSG_RESULT([external])
9278     SYSTEM_ZLIB=TRUE
9279     AC_CHECK_HEADER(zlib.h, [],
9280         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9281     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9282         [AC_MSG_ERROR(zlib not found or functional)], [])
9283 else
9284     AC_MSG_RESULT([internal])
9285     SYSTEM_ZLIB=
9286     BUILD_TYPE="$BUILD_TYPE ZLIB"
9287     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9288     if test "$COM" = "MSC"; then
9289         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9290     else
9291         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9292     fi
9294 AC_SUBST(ZLIB_CFLAGS)
9295 AC_SUBST(ZLIB_LIBS)
9296 AC_SUBST(SYSTEM_ZLIB)
9298 dnl ===================================================================
9299 dnl Check for system jpeg
9300 dnl ===================================================================
9301 AC_MSG_CHECKING([which libjpeg to use])
9302 if test "$with_system_jpeg" = "yes"; then
9303     AC_MSG_RESULT([external])
9304     SYSTEM_LIBJPEG=TRUE
9305     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9306         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9307     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9308         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9309 else
9310     SYSTEM_LIBJPEG=
9311     AC_MSG_RESULT([internal, libjpeg-turbo])
9312     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9314     case "$host_cpu" in
9315     x86_64 | amd64 | i*86 | x86 | ia32)
9316         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9317         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9318             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9319                 NASM="$LODE_HOME/opt/bin/nasm"
9320             elif test -x "/opt/lo/bin/nasm"; then
9321                 NASM="/opt/lo/bin/nasm"
9322             fi
9323         fi
9325         if test -n "$NASM"; then
9326             AC_MSG_CHECKING([for object file format of host system])
9327             case "$host_os" in
9328               cygwin* | mingw* | pw32* | wsl*)
9329                 case "$host_cpu" in
9330                   x86_64)
9331                     objfmt='Win64-COFF'
9332                     ;;
9333                   *)
9334                     objfmt='Win32-COFF'
9335                     ;;
9336                 esac
9337               ;;
9338               msdosdjgpp* | go32*)
9339                 objfmt='COFF'
9340               ;;
9341               os2-emx*) # not tested
9342                 objfmt='MSOMF' # obj
9343               ;;
9344               linux*coff* | linux*oldld*)
9345                 objfmt='COFF' # ???
9346               ;;
9347               linux*aout*)
9348                 objfmt='a.out'
9349               ;;
9350               linux*)
9351                 case "$host_cpu" in
9352                   x86_64)
9353                     objfmt='ELF64'
9354                     ;;
9355                   *)
9356                     objfmt='ELF'
9357                     ;;
9358                 esac
9359               ;;
9360               kfreebsd* | freebsd* | netbsd* | openbsd*)
9361                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9362                   objfmt='BSD-a.out'
9363                 else
9364                   case "$host_cpu" in
9365                     x86_64 | amd64)
9366                       objfmt='ELF64'
9367                       ;;
9368                     *)
9369                       objfmt='ELF'
9370                       ;;
9371                   esac
9372                 fi
9373               ;;
9374               solaris* | sunos* | sysv* | sco*)
9375                 case "$host_cpu" in
9376                   x86_64)
9377                     objfmt='ELF64'
9378                     ;;
9379                   *)
9380                     objfmt='ELF'
9381                     ;;
9382                 esac
9383               ;;
9384               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9385                 case "$host_cpu" in
9386                   x86_64)
9387                     objfmt='Mach-O64'
9388                     ;;
9389                   *)
9390                     objfmt='Mach-O'
9391                     ;;
9392                 esac
9393               ;;
9394               *)
9395                 objfmt='ELF ?'
9396               ;;
9397             esac
9399             AC_MSG_RESULT([$objfmt])
9400             if test "$objfmt" = 'ELF ?'; then
9401               objfmt='ELF'
9402               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9403             fi
9405             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9406             case "$objfmt" in
9407               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9408               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9409               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9410               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9411               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9412               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9413               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9414               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9415               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9416               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9417               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9418             esac
9419             AC_MSG_RESULT([$NAFLAGS])
9421             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9422             cat > conftest.asm << EOF
9423             [%line __oline__ "configure"
9424                     section .text
9425                     global  _main,main
9426             _main:
9427             main:   xor     eax,eax
9428                     ret
9429             ]
9431             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9432             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9433               AC_MSG_RESULT(yes)
9434             else
9435               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9436               cat conftest.asm >&AS_MESSAGE_LOG_FD
9437               rm -rf conftest*
9438               AC_MSG_RESULT(no)
9439               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9440               NASM=""
9441             fi
9443         fi
9445         if test -z "$NASM"; then
9446 cat << _EOS
9447 ****************************************************************************
9448 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9449 To get one please:
9451 _EOS
9452             if test "$build_os" = "cygwin"; then
9453 cat << _EOS
9454 install a pre-compiled binary for Win32
9456 mkdir -p /opt/lo/bin
9457 cd /opt/lo/bin
9458 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9459 chmod +x nasm
9461 or get and install one from https://www.nasm.us/
9463 Then re-run autogen.sh
9465 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9466 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9468 _EOS
9469             else
9470 cat << _EOS
9471 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9473 _EOS
9474             fi
9475             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9476             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9477         fi
9478       ;;
9479     esac
9482 AC_SUBST(NASM)
9483 AC_SUBST(NAFLAGS)
9484 AC_SUBST(LIBJPEG_CFLAGS)
9485 AC_SUBST(LIBJPEG_LIBS)
9486 AC_SUBST(SYSTEM_LIBJPEG)
9488 dnl ===================================================================
9489 dnl Check for system clucene
9490 dnl ===================================================================
9491 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9492 if test "$SYSTEM_CLUCENE" = TRUE; then
9493     AC_LANG_PUSH([C++])
9494     save_CXXFLAGS=$CXXFLAGS
9495     save_CPPFLAGS=$CPPFLAGS
9496     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9497     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9498     dnl https://sourceforge.net/p/clucene/bugs/200/
9499     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9500     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9501                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9502     CXXFLAGS=$save_CXXFLAGS
9503     CPPFLAGS=$save_CPPFLAGS
9504     AC_LANG_POP([C++])
9505     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9508 dnl ===================================================================
9509 dnl Check for system expat
9510 dnl ===================================================================
9511 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9513 dnl ===================================================================
9514 dnl Check for system xmlsec
9515 dnl ===================================================================
9516 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9518 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9519 if test "$enable_eot" = "yes"; then
9520     ENABLE_EOT="TRUE"
9521     AC_DEFINE([ENABLE_EOT])
9522     AC_MSG_RESULT([yes])
9524     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9525 else
9526     ENABLE_EOT=
9527     AC_MSG_RESULT([no])
9529 AC_SUBST([ENABLE_EOT])
9531 dnl ===================================================================
9532 dnl Check for DLP libs
9533 dnl ===================================================================
9534 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9535 AS_IF([test "$COM" = "MSC"],
9536       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9537       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9539 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9540 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9542 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9544 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9546 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9547 AS_IF([test "$COM" = "MSC"],
9548       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9549       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9551 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9552 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9554 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9556 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9557 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9559 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9561 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9563 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9565 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9566 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9568 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9569 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9571 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9573 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9574 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9576 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9578 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9580 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9582 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9584 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9585 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9587 dnl ===================================================================
9588 dnl Check for system lcms2
9589 dnl ===================================================================
9590 if test "$with_system_lcms2" != "yes"; then
9591     SYSTEM_LCMS2=
9593 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9594 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9595 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9596 if test "$GCC" = "yes"; then
9597     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9599 if test "$COM" = "MSC"; then # override the above
9600     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9603 dnl ===================================================================
9604 dnl Check for system cppunit
9605 dnl ===================================================================
9606 if test "$_os" != "Android" ; then
9607     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9610 dnl ===================================================================
9611 dnl Check whether freetype is available
9613 dnl FreeType has 3 different kinds of versions
9614 dnl * release, like 2.4.10
9615 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9616 dnl * soname
9617 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9619 dnl 9.9.3 is 2.2.0
9620 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9621 dnl ===================================================================
9622 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9623 if test "x$ac_config_site_64bit_host" = xYES; then
9624     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9625 else
9626     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9628 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9630 # ===================================================================
9631 # Check for system libxslt
9632 # to prevent incompatibilities between internal libxml2 and external libxslt,
9633 # or vice versa, use with_system_libxml here
9634 # ===================================================================
9635 if test "$with_system_libxml" = "auto"; then
9636     case "$_os" in
9637     WINNT|iOS|Android)
9638         with_system_libxml="$with_system_libs"
9639         ;;
9640     Emscripten)
9641         with_system_libxml=no
9642         ;;
9643     *)
9644         if test "$enable_fuzzers" != "yes"; then
9645             with_system_libxml=yes
9646         else
9647             with_system_libxml=no
9648         fi
9649         ;;
9650     esac
9653 AC_MSG_CHECKING([which libxslt to use])
9654 if test "$with_system_libxml" = "yes"; then
9655     AC_MSG_RESULT([external])
9656     SYSTEM_LIBXSLT=TRUE
9657     if test "$_os" = "Darwin"; then
9658         dnl make sure to use SDK path
9659         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9660         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9661         dnl omit -L/usr/lib
9662         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9663         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9664     else
9665         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9666         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9667         FilterLibs "${LIBXSLT_LIBS}"
9668         LIBXSLT_LIBS="${filteredlibs}"
9669         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9670         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9671         FilterLibs "${LIBEXSLT_LIBS}"
9672         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9673     fi
9675     dnl Check for xsltproc
9676     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9677     if test "$XSLTPROC" = "no"; then
9678         AC_MSG_ERROR([xsltproc is required])
9679     fi
9680 else
9681     AC_MSG_RESULT([internal])
9682     SYSTEM_LIBXSLT=
9683     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9685 AC_SUBST(SYSTEM_LIBXSLT)
9686 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9687     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9689 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9691 AC_SUBST(LIBEXSLT_CFLAGS)
9692 AC_SUBST(LIBEXSLT_LIBS)
9693 AC_SUBST(LIBXSLT_CFLAGS)
9694 AC_SUBST(LIBXSLT_LIBS)
9695 AC_SUBST(XSLTPROC)
9697 # ===================================================================
9698 # Check for system libxml
9699 # ===================================================================
9700 AC_MSG_CHECKING([which libxml to use])
9701 if test "$with_system_libxml" = "yes"; then
9702     AC_MSG_RESULT([external])
9703     SYSTEM_LIBXML=TRUE
9704     if test "$_os" = "Darwin"; then
9705         dnl make sure to use SDK path
9706         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9707         dnl omit -L/usr/lib
9708         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9709     elif test $_os = iOS; then
9710         dnl make sure to use SDK path
9711         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9712         LIBXML_CFLAGS="-I$usr/include/libxml2"
9713         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9714     else
9715         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9716         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9717         FilterLibs "${LIBXML_LIBS}"
9718         LIBXML_LIBS="${filteredlibs}"
9719     fi
9721     dnl Check for xmllint
9722     AC_PATH_PROG(XMLLINT, xmllint, no)
9723     if test "$XMLLINT" = "no"; then
9724         AC_MSG_ERROR([xmllint is required])
9725     fi
9726 else
9727     AC_MSG_RESULT([internal])
9728     SYSTEM_LIBXML=
9729     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9730     if test "$COM" = "MSC"; then
9731         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9732     fi
9733     if test "$COM" = "MSC"; then
9734         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9735     else
9736         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9737         if test "$DISABLE_DYNLOADING" = TRUE; then
9738             LIBXML_LIBS="$LIBXML_LIBS -lm"
9739         fi
9740     fi
9741     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9743 AC_SUBST(SYSTEM_LIBXML)
9744 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9745     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9747 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9748 AC_SUBST(LIBXML_CFLAGS)
9749 AC_SUBST(LIBXML_LIBS)
9750 AC_SUBST(XMLLINT)
9752 # =====================================================================
9753 # Checking for a Python interpreter with version >= 3.3.
9754 # Optionally user can pass an option to configure, i. e.
9755 # ./configure PYTHON=/usr/bin/python
9756 # =====================================================================
9757 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9758     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9759     # unless PYTHON is defined as above which allows 'system'
9760     enable_python=internal
9762 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9763     if test -n "$PYTHON"; then
9764         PYTHON_FOR_BUILD=$PYTHON
9765     else
9766         # This allows a lack of system python with no error, we use internal one in that case.
9767         AM_PATH_PYTHON([3.3],, [:])
9768         # Clean PYTHON_VERSION checked below if cross-compiling
9769         PYTHON_VERSION=""
9770         if test "$PYTHON" != ":"; then
9771             PYTHON_FOR_BUILD=$PYTHON
9772         fi
9773     fi
9776 # Checks for Python to use for Pyuno
9777 AC_MSG_CHECKING([which Python to use for Pyuno])
9778 case "$enable_python" in
9779 no|disable)
9780     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9781         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9782         # requirement from the choice whether to include Python stuff in the installer, but why
9783         # bother?
9784         AC_MSG_ERROR([Python is required at build time.])
9785     fi
9786     enable_python=no
9787     AC_MSG_RESULT([none])
9788     ;;
9789 ""|yes|auto)
9790     if test "$DISABLE_SCRIPTING" = TRUE; then
9791         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9792             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9793         fi
9794         AC_MSG_RESULT([none, overridden by --disable-scripting])
9795         enable_python=no
9796     elif test $build_os = cygwin -o $build_os = wsl; then
9797         dnl When building on Windows we don't attempt to use any installed
9798         dnl "system"  Python.
9799         AC_MSG_RESULT([fully internal])
9800         enable_python=internal
9801     elif test "$cross_compiling" = yes; then
9802         AC_MSG_RESULT([system])
9803         enable_python=system
9804     else
9805         # Unset variables set by the above AM_PATH_PYTHON so that
9806         # we actually do check anew.
9807         AC_MSG_RESULT([])
9808         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
9809         AM_PATH_PYTHON([3.3],, [:])
9810         AC_MSG_CHECKING([which Python to use for Pyuno])
9811         if test "$PYTHON" = ":"; then
9812             if test -z "$PYTHON_FOR_BUILD"; then
9813                 AC_MSG_RESULT([fully internal])
9814             else
9815                 AC_MSG_RESULT([internal])
9816             fi
9817             enable_python=internal
9818         else
9819             AC_MSG_RESULT([system])
9820             enable_python=system
9821         fi
9822     fi
9823     ;;
9824 internal)
9825     AC_MSG_RESULT([internal])
9826     ;;
9827 fully-internal)
9828     AC_MSG_RESULT([fully internal])
9829     enable_python=internal
9830     ;;
9831 system)
9832     AC_MSG_RESULT([system])
9833     if test "$_os" = Darwin -a -z "$PYTHON"; then
9834         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9835     fi
9836     ;;
9838     AC_MSG_ERROR([Incorrect --enable-python option])
9839     ;;
9840 esac
9842 if test $enable_python != no; then
9843     BUILD_TYPE="$BUILD_TYPE PYUNO"
9846 if test $enable_python = system; then
9847     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9848         # Fallback: Accept these in the environment, or as set above
9849         # for MacOSX.
9850         :
9851     elif test "$cross_compiling" != yes; then
9852         # Unset variables set by the above AM_PATH_PYTHON so that
9853         # we actually do check anew.
9854         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
9855         # This causes an error if no python command is found
9856         AM_PATH_PYTHON([3.3])
9857         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9858         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9859         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9860         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9861         if test -z "$PKG_CONFIG"; then
9862             PYTHON_CFLAGS="-I$python_include"
9863             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9864         elif $PKG_CONFIG --exists python-$python_version-embed; then
9865             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9866             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9867         elif $PKG_CONFIG --exists python-$python_version; then
9868             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9869             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9870         else
9871             PYTHON_CFLAGS="-I$python_include"
9872             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9873         fi
9874         FilterLibs "${PYTHON_LIBS}"
9875         PYTHON_LIBS="${filteredlibs}"
9876     else
9877         dnl How to find out the cross-compilation Python installation path?
9878         AC_MSG_CHECKING([for python version])
9879         AS_IF([test -n "$PYTHON_VERSION"],
9880               [AC_MSG_RESULT([$PYTHON_VERSION])],
9881               [AC_MSG_RESULT([not found])
9882                AC_MSG_ERROR([no usable python found])])
9883         test -n "$PYTHON_CFLAGS" && break
9884     fi
9886     dnl Check if the headers really work
9887     save_CPPFLAGS="$CPPFLAGS"
9888     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9889     AC_CHECK_HEADER(Python.h)
9890     CPPFLAGS="$save_CPPFLAGS"
9892     # let the PYTHON_FOR_BUILD match the same python installation that
9893     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9894     # better for PythonTests.
9895     PYTHON_FOR_BUILD=$PYTHON
9898 if test "$with_lxml" != no; then
9899     if test -z "$PYTHON_FOR_BUILD"; then
9900         case $build_os in
9901             cygwin)
9902                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9903                 ;;
9904             *)
9905                 if test "$cross_compiling" != yes ; then
9906                     BUILD_TYPE="$BUILD_TYPE LXML"
9907                 fi
9908                 ;;
9909         esac
9910     else
9911         AC_MSG_CHECKING([for python lxml])
9912         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9913             AC_MSG_RESULT([yes])
9914         else
9915             case $build_os in
9916                 cygwin)
9917                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9918                     ;;
9919                 *)
9920                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9921                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9922                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9923                         else
9924                             BUILD_TYPE="$BUILD_TYPE LXML"
9925                             AC_MSG_RESULT([no, using internal lxml])
9926                         fi
9927                     else
9928                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9929                     fi
9930                     ;;
9931             esac
9932         fi
9933     fi
9936 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9937     SYSTEM_PYTHON=
9938     PYTHON_VERSION_MAJOR=3
9939     PYTHON_VERSION_MINOR=8
9940     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.16
9941     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9942         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9943     fi
9944     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9946     # Embedded Python dies without Home set
9947     if test "$HOME" = ""; then
9948         export HOME=""
9949     fi
9952 dnl By now enable_python should be "system", "internal" or "no"
9953 case $enable_python in
9954 system)
9955     SYSTEM_PYTHON=TRUE
9957     if test "x$ac_cv_header_Python_h" != "xyes"; then
9958        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9959     fi
9961     AC_LANG_PUSH(C)
9962     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9963     AC_MSG_CHECKING([for correct python library version])
9964        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9965 #include <Python.h>
9967 int main(int argc, char **argv) {
9968    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9969    else return 1;
9971        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9972     AC_LANG_POP(C)
9974     dnl FIXME Check if the Python library can be linked with, too?
9975     ;;
9977 internal)
9978     BUILD_TYPE="$BUILD_TYPE PYTHON"
9979     if test "$OS" = LINUX -o "$OS" = WNT ; then
9980         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9981     fi
9982     ;;
9984     DISABLE_PYTHON=TRUE
9985     SYSTEM_PYTHON=
9986     ;;
9988     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9989     ;;
9990 esac
9992 AC_SUBST(DISABLE_PYTHON)
9993 AC_SUBST(SYSTEM_PYTHON)
9994 AC_SUBST(PYTHON_CFLAGS)
9995 AC_SUBST(PYTHON_FOR_BUILD)
9996 AC_SUBST(PYTHON_LIBS)
9997 AC_SUBST(PYTHON_VERSION)
9998 AC_SUBST(PYTHON_VERSION_MAJOR)
9999 AC_SUBST(PYTHON_VERSION_MINOR)
10001 AC_MSG_CHECKING([whether to build LibreLogo])
10002 case "$enable_python" in
10003 no|disable)
10004     AC_MSG_RESULT([no; Python disabled])
10005     ;;
10007     if test "${enable_librelogo}" = "no"; then
10008         AC_MSG_RESULT([no])
10009     else
10010         AC_MSG_RESULT([yes])
10011         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10012         AC_DEFINE([ENABLE_LIBRELOGO],1)
10013     fi
10014     ;;
10015 esac
10016 AC_SUBST(ENABLE_LIBRELOGO)
10018 ENABLE_MARIADBC=
10019 MARIADBC_MAJOR=1
10020 MARIADBC_MINOR=0
10021 MARIADBC_MICRO=2
10022 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10023 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10024     ENABLE_MARIADBC=TRUE
10025     AC_MSG_RESULT([yes])
10026     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10027 else
10028     AC_MSG_RESULT([no])
10030 AC_SUBST(ENABLE_MARIADBC)
10031 AC_SUBST(MARIADBC_MAJOR)
10032 AC_SUBST(MARIADBC_MINOR)
10033 AC_SUBST(MARIADBC_MICRO)
10035 if test "$ENABLE_MARIADBC" = "TRUE"; then
10036     dnl ===================================================================
10037     dnl Check for system MariaDB
10038     dnl ===================================================================
10039     AC_MSG_CHECKING([which MariaDB to use])
10040     if test "$with_system_mariadb" = "yes"; then
10041         AC_MSG_RESULT([external])
10042         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10043         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10044         if test -z "$MARIADBCONFIG"; then
10045             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10046             if test -z "$MARIADBCONFIG"; then
10047                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10048                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10049             fi
10050         fi
10051         AC_MSG_CHECKING([MariaDB version])
10052         MARIADB_VERSION=`$MARIADBCONFIG --version`
10053         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10054         if test "$MARIADB_MAJOR" -ge "5"; then
10055             AC_MSG_RESULT([OK])
10056         else
10057             AC_MSG_ERROR([too old, use 5.0.x or later])
10058         fi
10059         AC_MSG_CHECKING([for MariaDB Client library])
10060         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10061         if test "$COM_IS_CLANG" = TRUE; then
10062             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10063         fi
10064         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10065         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10066         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10067         dnl linux32:
10068         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10069             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10070             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10071                 | sed -e 's|/lib64/|/lib/|')
10072         fi
10073         FilterLibs "${MARIADB_LIBS}"
10074         MARIADB_LIBS="${filteredlibs}"
10075         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10076         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10077         if test "$enable_bundle_mariadb" = "yes"; then
10078             AC_MSG_RESULT([yes])
10079             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10080             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10082 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10084 /g' | grep -E '(mysqlclient|mariadb)')
10085             if test "$_os" = "Darwin"; then
10086                 LIBMARIADB=${LIBMARIADB}.dylib
10087             elif test "$_os" = "WINNT"; then
10088                 LIBMARIADB=${LIBMARIADB}.dll
10089             else
10090                 LIBMARIADB=${LIBMARIADB}.so
10091             fi
10092             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10093             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10094             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10095                 AC_MSG_RESULT([found.])
10096                 PathFormat "$LIBMARIADB_PATH"
10097                 LIBMARIADB_PATH="$formatted_path"
10098             else
10099                 AC_MSG_ERROR([not found.])
10100             fi
10101         else
10102             AC_MSG_RESULT([no])
10103             BUNDLE_MARIADB_CONNECTOR_C=
10104         fi
10105     else
10106         AC_MSG_RESULT([internal])
10107         SYSTEM_MARIADB_CONNECTOR_C=
10108         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10109         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10110         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10111     fi
10113     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10114     AC_SUBST(MARIADB_CFLAGS)
10115     AC_SUBST(MARIADB_LIBS)
10116     AC_SUBST(LIBMARIADB)
10117     AC_SUBST(LIBMARIADB_PATH)
10118     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10121 dnl ===================================================================
10122 dnl Check for system hsqldb
10123 dnl ===================================================================
10124 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10125     AC_MSG_CHECKING([which hsqldb to use])
10126     if test "$with_system_hsqldb" = "yes"; then
10127         AC_MSG_RESULT([external])
10128         SYSTEM_HSQLDB=TRUE
10129         if test -z $HSQLDB_JAR; then
10130             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10131         fi
10132         if ! test -f $HSQLDB_JAR; then
10133                AC_MSG_ERROR(hsqldb.jar not found.)
10134         fi
10135         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10136         export HSQLDB_JAR
10137         if $PERL -e \
10138            'use Archive::Zip;
10139             my $file = "$ENV{'HSQLDB_JAR'}";
10140             my $zip = Archive::Zip->new( $file );
10141             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10142             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10143             {
10144                 push @l, split(/\n/, $mf);
10145                 foreach my $line (@l)
10146                 {
10147                     if ($line =~ m/Specification-Version:/)
10148                     {
10149                         ($t, $version) = split (/:/,$line);
10150                         $version =~ s/^\s//;
10151                         ($a, $b, $c, $d) = split (/\./,$version);
10152                         if ($c == "0" && $d > "8")
10153                         {
10154                             exit 0;
10155                         }
10156                         else
10157                         {
10158                             exit 1;
10159                         }
10160                     }
10161                 }
10162             }
10163             else
10164             {
10165                 exit 1;
10166             }'; then
10167             AC_MSG_RESULT([yes])
10168         else
10169             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10170         fi
10171     else
10172         AC_MSG_RESULT([internal])
10173         SYSTEM_HSQLDB=
10174         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10175         NEED_ANT=TRUE
10176     fi
10177 else
10178     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10179         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10180     fi
10182 AC_SUBST(SYSTEM_HSQLDB)
10183 AC_SUBST(HSQLDB_JAR)
10185 dnl ===================================================================
10186 dnl Check for PostgreSQL stuff
10187 dnl ===================================================================
10188 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10189 if test "x$enable_postgresql_sdbc" != "xno"; then
10190     AC_MSG_RESULT([yes])
10191     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10193     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10194         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10195     fi
10196     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10197         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10198     fi
10200     postgres_interface=""
10201     if test "$with_system_postgresql" = "yes"; then
10202         postgres_interface="external PostgreSQL"
10203         SYSTEM_POSTGRESQL=TRUE
10204         if test "$_os" = Darwin; then
10205             supp_path=''
10206             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10207                 pg_supp_path="$P_SEP$d$pg_supp_path"
10208             done
10209         fi
10210         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10211         if test -n "$PGCONFIG"; then
10212             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10213             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10214         else
10215             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10216               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10217               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10218             ],[
10219               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10220             ])
10221         fi
10222         FilterLibs "${POSTGRESQL_LIB}"
10223         POSTGRESQL_LIB="${filteredlibs}"
10224     else
10225         # if/when anything else than PostgreSQL uses Kerberos,
10226         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10227         WITH_KRB5=
10228         WITH_GSSAPI=
10229         case "$_os" in
10230         Darwin)
10231             # macOS has system MIT Kerberos 5 since 10.4
10232             if test "$with_krb5" != "no"; then
10233                 WITH_KRB5=TRUE
10234                 save_LIBS=$LIBS
10235                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10236                 # that the libraries where these functions are located on macOS will change, is it?
10237                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10238                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10239                 KRB5_LIBS=$LIBS
10240                 LIBS=$save_LIBS
10241                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10242                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10243                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10244                 LIBS=$save_LIBS
10245             fi
10246             if test "$with_gssapi" != "no"; then
10247                 WITH_GSSAPI=TRUE
10248                 save_LIBS=$LIBS
10249                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10250                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10251                 GSSAPI_LIBS=$LIBS
10252                 LIBS=$save_LIBS
10253             fi
10254             ;;
10255         WINNT)
10256             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10257                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10258             fi
10259             ;;
10260         Linux|GNU|*BSD|DragonFly)
10261             if test "$with_krb5" != "no"; then
10262                 WITH_KRB5=TRUE
10263                 save_LIBS=$LIBS
10264                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10265                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10266                 KRB5_LIBS=$LIBS
10267                 LIBS=$save_LIBS
10268                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10269                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10270                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10271                 LIBS=$save_LIBS
10272             fi
10273             if test "$with_gssapi" != "no"; then
10274                 WITH_GSSAPI=TRUE
10275                 save_LIBS=$LIBS
10276                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10277                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10278                 GSSAPI_LIBS=$LIBS
10279                 LIBS=$save_LIBS
10280             fi
10281             ;;
10282         *)
10283             if test "$with_krb5" = "yes"; then
10284                 WITH_KRB5=TRUE
10285                 save_LIBS=$LIBS
10286                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10287                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10288                 KRB5_LIBS=$LIBS
10289                 LIBS=$save_LIBS
10290                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10291                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10292                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10293                 LIBS=$save_LIBS
10294             fi
10295             if test "$with_gssapi" = "yes"; then
10296                 WITH_GSSAPI=TRUE
10297                 save_LIBS=$LIBS
10298                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10299                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10300                 LIBS=$save_LIBS
10301                 GSSAPI_LIBS=$LIBS
10302             fi
10303         esac
10305         if test -n "$with_libpq_path"; then
10306             SYSTEM_POSTGRESQL=TRUE
10307             postgres_interface="external libpq"
10308             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10309             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10310         else
10311             SYSTEM_POSTGRESQL=
10312             postgres_interface="internal"
10313             POSTGRESQL_LIB=""
10314             POSTGRESQL_INC="%OVERRIDE_ME%"
10315             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10316         fi
10317     fi
10319     AC_MSG_CHECKING([PostgreSQL C interface])
10320     AC_MSG_RESULT([$postgres_interface])
10322     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10323         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10324         save_CFLAGS=$CFLAGS
10325         save_CPPFLAGS=$CPPFLAGS
10326         save_LIBS=$LIBS
10327         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10328         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10329         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10330         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10331             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10332         CFLAGS=$save_CFLAGS
10333         CPPFLAGS=$save_CPPFLAGS
10334         LIBS=$save_LIBS
10335     fi
10336     BUILD_POSTGRESQL_SDBC=TRUE
10337 else
10338     AC_MSG_RESULT([no])
10340 AC_SUBST(WITH_KRB5)
10341 AC_SUBST(WITH_GSSAPI)
10342 AC_SUBST(GSSAPI_LIBS)
10343 AC_SUBST(KRB5_LIBS)
10344 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10345 AC_SUBST(SYSTEM_POSTGRESQL)
10346 AC_SUBST(POSTGRESQL_INC)
10347 AC_SUBST(POSTGRESQL_LIB)
10349 dnl ===================================================================
10350 dnl Check for Firebird stuff
10351 dnl ===================================================================
10352 ENABLE_FIREBIRD_SDBC=
10353 if test "$enable_firebird_sdbc" = "yes" ; then
10354     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10356     dnl ===================================================================
10357     dnl Check for system Firebird
10358     dnl ===================================================================
10359     AC_MSG_CHECKING([which Firebird to use])
10360     if test "$with_system_firebird" = "yes"; then
10361         AC_MSG_RESULT([external])
10362         SYSTEM_FIREBIRD=TRUE
10363         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10364         if test -z "$FIREBIRDCONFIG"; then
10365             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10366             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10367                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10368             ])
10369             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10370         else
10371             AC_MSG_NOTICE([fb_config found])
10372             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10373             AC_MSG_CHECKING([for Firebird Client library])
10374             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10375             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10376             FilterLibs "${FIREBIRD_LIBS}"
10377             FIREBIRD_LIBS="${filteredlibs}"
10378         fi
10379         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10380         AC_MSG_CHECKING([Firebird version])
10381         if test -n "${FIREBIRD_VERSION}"; then
10382             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10383             if test "$FIREBIRD_MAJOR" -ge "3"; then
10384                 AC_MSG_RESULT([OK])
10385             else
10386                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10387             fi
10388         else
10389             save_CFLAGS="${CFLAGS}"
10390             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10391             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10392 #if defined(FB_API_VER) && FB_API_VER == 30
10393 int fb_api_is_30(void) { return 0; }
10394 #else
10395 #error "Wrong Firebird API version"
10396 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10397             CFLAGS="$save_CFLAGS"
10398         fi
10399         ENABLE_FIREBIRD_SDBC=TRUE
10400         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10401     elif test "$enable_database_connectivity" = no; then
10402         AC_MSG_RESULT([none])
10403     elif test "$cross_compiling" = "yes"; then
10404         AC_MSG_RESULT([none])
10405     else
10406         dnl Embedded Firebird has version 3.0
10407         dnl We need libatomic_ops for any non X86/X64 system
10408         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10409             dnl ===================================================================
10410             dnl Check for system libatomic_ops
10411             dnl ===================================================================
10412             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10413             if test "$with_system_libatomic_ops" = "yes"; then
10414                 SYSTEM_LIBATOMIC_OPS=TRUE
10415                 AC_CHECK_HEADERS(atomic_ops.h, [],
10416                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10417             else
10418                 SYSTEM_LIBATOMIC_OPS=
10419                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10420                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10421                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10422             fi
10423         fi
10425         AC_MSG_RESULT([internal])
10426         SYSTEM_FIREBIRD=
10427         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10428         FIREBIRD_LIBS="-lfbclient"
10430         if test "$with_system_libtommath" = "yes"; then
10431             SYSTEM_LIBTOMMATH=TRUE
10432             dnl check for tommath presence
10433             save_LIBS=$LIBS
10434             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10435             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10436             LIBS=$save_LIBS
10437         else
10438             SYSTEM_LIBTOMMATH=
10439             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10440             LIBTOMMATH_LIBS="-ltommath"
10441             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10442         fi
10444         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10445         ENABLE_FIREBIRD_SDBC=TRUE
10446         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10447     fi
10449 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10450 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10451 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10452 AC_SUBST(LIBATOMIC_OPS_LIBS)
10453 AC_SUBST(SYSTEM_FIREBIRD)
10454 AC_SUBST(FIREBIRD_CFLAGS)
10455 AC_SUBST(FIREBIRD_LIBS)
10456 AC_SUBST(SYSTEM_LIBTOMMATH)
10457 AC_SUBST(LIBTOMMATH_CFLAGS)
10458 AC_SUBST(LIBTOMMATH_LIBS)
10460 dnl ===================================================================
10461 dnl Check for system curl
10462 dnl ===================================================================
10463 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10465 dnl ===================================================================
10466 dnl Check for system boost
10467 dnl ===================================================================
10468 AC_MSG_CHECKING([which boost to use])
10469 if test "$with_system_boost" = "yes"; then
10470     AC_MSG_RESULT([external])
10471     SYSTEM_BOOST=TRUE
10472     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10473     AX_BOOST_DATE_TIME
10474     AX_BOOST_FILESYSTEM
10475     AX_BOOST_IOSTREAMS
10476     AX_BOOST_LOCALE
10477     AC_LANG_PUSH([C++])
10478     save_CXXFLAGS=$CXXFLAGS
10479     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10480     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10481        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10482     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10483        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10484     CXXFLAGS=$save_CXXFLAGS
10485     AC_LANG_POP([C++])
10486     # this is in m4/ax_boost_base.m4
10487     FilterLibs "${BOOST_LDFLAGS}"
10488     BOOST_LDFLAGS="${filteredlibs}"
10489 else
10490     AC_MSG_RESULT([internal])
10491     BUILD_TYPE="$BUILD_TYPE BOOST"
10492     SYSTEM_BOOST=
10493     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10494         # use warning-suppressing wrapper headers
10495         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10496     else
10497         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10498     fi
10500 AC_SUBST(SYSTEM_BOOST)
10502 dnl ===================================================================
10503 dnl Check for system mdds
10504 dnl ===================================================================
10505 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10506 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10508 dnl ===================================================================
10509 dnl Check for system dragonbox
10510 dnl ===================================================================
10511 AC_MSG_CHECKING([which dragonbox to use])
10512 if test "$with_system_dragonbox" = "yes"; then
10513     AC_MSG_RESULT([external])
10514     SYSTEM_DRAGONBOX=TRUE
10515     AC_LANG_PUSH([C++])
10516     save_CPPFLAGS=$CPPFLAGS
10517     # This is where upstream installs to, unfortunately no .pc or so...
10518     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10519     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10520     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10521        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10522     AC_LANG_POP([C++])
10523     CPPFLAGS=$save_CPPFLAGS
10524 else
10525     AC_MSG_RESULT([internal])
10526     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10527     SYSTEM_DRAGONBOX=
10529 AC_SUBST([SYSTEM_DRAGONBOX])
10530 AC_SUBST([DRAGONBOX_CFLAGS])
10532 dnl ===================================================================
10533 dnl Check for system libfixmath
10534 dnl ===================================================================
10535 AC_MSG_CHECKING([which libfixmath to use])
10536 if test "$with_system_libfixmath" = "yes"; then
10537     AC_MSG_RESULT([external])
10538     SYSTEM_LIBFIXMATH=TRUE
10539     AC_LANG_PUSH([C++])
10540     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10541        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10542     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10543     AC_LANG_POP([C++])
10544 else
10545     AC_MSG_RESULT([internal])
10546     SYSTEM_LIBFIXMATH=
10548 AC_SUBST([SYSTEM_LIBFIXMATH])
10550 dnl ===================================================================
10551 dnl Check for system glm
10552 dnl ===================================================================
10553 AC_MSG_CHECKING([which glm to use])
10554 if test "$with_system_glm" = "yes"; then
10555     AC_MSG_RESULT([external])
10556     SYSTEM_GLM=TRUE
10557     AC_LANG_PUSH([C++])
10558     AC_CHECK_HEADER([glm/glm.hpp], [],
10559        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10560     AC_LANG_POP([C++])
10561 else
10562     AC_MSG_RESULT([internal])
10563     BUILD_TYPE="$BUILD_TYPE GLM"
10564     SYSTEM_GLM=
10565     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10567 AC_SUBST([GLM_CFLAGS])
10568 AC_SUBST([SYSTEM_GLM])
10570 dnl ===================================================================
10571 dnl Check for system odbc
10572 dnl ===================================================================
10573 AC_MSG_CHECKING([which odbc headers to use])
10574 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
10575     AC_MSG_RESULT([external])
10576     SYSTEM_ODBC_HEADERS=TRUE
10578     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10579         save_CPPFLAGS=$CPPFLAGS
10580         find_winsdk
10581         PathFormat "$winsdktest"
10582         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"
10583         AC_CHECK_HEADER(sqlext.h, [],
10584             [AC_MSG_ERROR(odbc not found. install odbc)],
10585             [#include <windows.h>])
10586         CPPFLAGS=$save_CPPFLAGS
10587     else
10588         AC_CHECK_HEADER(sqlext.h, [],
10589             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10590     fi
10591 elif test "$enable_database_connectivity" = no; then
10592     AC_MSG_RESULT([none])
10593 else
10594     AC_MSG_RESULT([internal])
10595     SYSTEM_ODBC_HEADERS=
10597 AC_SUBST(SYSTEM_ODBC_HEADERS)
10599 dnl ===================================================================
10600 dnl Check for system NSS
10601 dnl ===================================================================
10602 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10603     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10604     AC_DEFINE(HAVE_FEATURE_NSS)
10605     ENABLE_NSS=TRUE
10606 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10607     with_tls=openssl
10609 AC_SUBST(ENABLE_NSS)
10611 dnl ===================================================================
10612 dnl Enable LDAP support
10613 dnl ===================================================================
10615 if test "$test_openldap" = yes; then
10616     AC_MSG_CHECKING([whether to enable LDAP support])
10617     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10618         AC_MSG_RESULT([yes])
10619         ENABLE_LDAP=TRUE
10620     else
10621         if test "$enable_ldap" != "yes"; then
10622             AC_MSG_RESULT([no])
10623         else
10624             AC_MSG_RESULT([no (needs NSS or system openldap)])
10625         fi
10626     fi
10628 dnl ===================================================================
10629 dnl Check for system openldap
10630 dnl ===================================================================
10632     if test "$ENABLE_LDAP" = TRUE; then
10633         AC_MSG_CHECKING([which openldap library to use])
10634         if test "$with_system_openldap" = yes; then
10635             AC_MSG_RESULT([external])
10636             SYSTEM_OPENLDAP=TRUE
10637             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10638             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10639             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10640         else
10641             AC_MSG_RESULT([internal])
10642             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10643         fi
10644     fi
10647 AC_SUBST(ENABLE_LDAP)
10648 AC_SUBST(SYSTEM_OPENLDAP)
10650 dnl ===================================================================
10651 dnl Check for TLS/SSL and cryptographic implementation to use
10652 dnl ===================================================================
10653 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10654 if test -n "$with_tls"; then
10655     case $with_tls in
10656     openssl)
10657         AC_DEFINE(USE_TLS_OPENSSL)
10658         TLS=OPENSSL
10659         AC_MSG_RESULT([$TLS])
10661         if test "$enable_openssl" != "yes"; then
10662             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10663         fi
10665         # warn that OpenSSL has been selected but not all TLS code has this option
10666         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10667         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10668         ;;
10669     nss)
10670         AC_DEFINE(USE_TLS_NSS)
10671         TLS=NSS
10672         AC_MSG_RESULT([$TLS])
10673         ;;
10674     no)
10675         AC_MSG_RESULT([none])
10676         AC_MSG_WARN([Skipping TLS/SSL])
10677         ;;
10678     *)
10679         AC_MSG_RESULT([])
10680         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10681 openssl - OpenSSL
10682 nss - Mozilla's Network Security Services (NSS)
10683     ])
10684         ;;
10685     esac
10686 else
10687     # default to using NSS, it results in smaller oox lib
10688     AC_DEFINE(USE_TLS_NSS)
10689     TLS=NSS
10690     AC_MSG_RESULT([$TLS])
10692 AC_SUBST(TLS)
10694 dnl ===================================================================
10695 dnl Check for system sane
10696 dnl ===================================================================
10697 AC_MSG_CHECKING([which sane header to use])
10698 if test "$with_system_sane" = "yes"; then
10699     AC_MSG_RESULT([external])
10700     AC_CHECK_HEADER(sane/sane.h, [],
10701       [AC_MSG_ERROR(sane not found. install sane)], [])
10702 else
10703     AC_MSG_RESULT([internal])
10704     BUILD_TYPE="$BUILD_TYPE SANE"
10707 dnl ===================================================================
10708 dnl Check for system icu
10709 dnl ===================================================================
10710 ICU_MAJOR=72
10711 ICU_MINOR=1
10712 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10713 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10714 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10715 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10716 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10717 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10718 if test "$SYSTEM_ICU" = TRUE; then
10719     AC_LANG_PUSH([C++])
10720     AC_MSG_CHECKING([for unicode/rbbi.h])
10721     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10722     AC_LANG_POP([C++])
10724     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10725     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10726     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10728     if test "$ICU_MAJOR" -ge 50; then
10729         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10730         ICU_MINOR=
10731     fi
10733     if test "$CROSS_COMPILING" != TRUE; then
10734         # using the system icu tools can lead to version confusion, use the
10735         # ones from the build environment when cross-compiling
10736         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10737         if test -z "$SYSTEM_GENBRK"; then
10738             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10739         fi
10740         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10741         if test -z "$SYSTEM_GENCCODE"; then
10742             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10743         fi
10744         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10745         if test -z "$SYSTEM_GENCMN"; then
10746             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10747         fi
10748         if test "$ICU_MAJOR" -lt 49; then
10749             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10750             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10751             ICU_RECLASSIFIED_HEBREW_LETTER=
10752         fi
10753     fi
10755 if test "$ICU_MAJOR" -ge "59"; then
10756     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10757     # with -std=c++11 but not all external libraries can be built with that,
10758     # for those use a bit-compatible typedef uint16_t UChar; see
10759     # icu/source/common/unicode/umachine.h
10760     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10761 else
10762     ICU_UCHAR_TYPE=""
10764 AC_SUBST(SYSTEM_GENBRK)
10765 AC_SUBST(SYSTEM_GENCCODE)
10766 AC_SUBST(SYSTEM_GENCMN)
10767 AC_SUBST(ICU_MAJOR)
10768 AC_SUBST(ICU_MINOR)
10769 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10770 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10771 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10772 AC_SUBST(ICU_UCHAR_TYPE)
10774 dnl ==================================================================
10775 dnl Breakpad
10776 dnl ==================================================================
10777 DEFAULT_CRASHDUMP_VALUE="true"
10778 AC_MSG_CHECKING([whether to enable breakpad])
10779 if test "$enable_breakpad" != yes; then
10780     AC_MSG_RESULT([no])
10781 else
10782     AC_MSG_RESULT([yes])
10783     ENABLE_BREAKPAD="TRUE"
10784     AC_DEFINE(ENABLE_BREAKPAD)
10785     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10786     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10788     AC_MSG_CHECKING([for disable crash dump])
10789     if test "$enable_crashdump" = no; then
10790         DEFAULT_CRASHDUMP_VALUE="false"
10791         AC_MSG_RESULT([yes])
10792     else
10793        AC_MSG_RESULT([no])
10794     fi
10796     AC_MSG_CHECKING([for crashreport config])
10797     if test "$with_symbol_config" = "no"; then
10798         BREAKPAD_SYMBOL_CONFIG="invalid"
10799         AC_MSG_RESULT([no])
10800     else
10801         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10802         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10803         AC_MSG_RESULT([yes])
10804     fi
10805     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10807 AC_SUBST(ENABLE_BREAKPAD)
10808 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10810 dnl ===================================================================
10811 dnl Orcus
10812 dnl ===================================================================
10813 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.18.0])
10814 if test "$with_system_orcus" != "yes"; then
10815     if test "$SYSTEM_BOOST" = "TRUE"; then
10816         dnl Link with Boost.System
10817         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10818         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10819         dnl in documentation has no effect.
10820         AX_BOOST_SYSTEM
10821     fi
10823 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10824 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10825 AC_SUBST([BOOST_SYSTEM_LIB])
10826 AC_SUBST(SYSTEM_LIBORCUS)
10828 dnl ===================================================================
10829 dnl HarfBuzz
10830 dnl ===================================================================
10831 harfbuzz_required_version=5.1.0
10833 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10834 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10835 case "$_os" in
10836     Linux)
10837         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10838         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10839         ;;
10840     *)
10841         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10842         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10843         ;;
10844 esac
10845 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10846 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10848 if test "$COM" = "MSC"; then # override the above
10849     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10850     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10853 if test "$with_system_harfbuzz" = "yes"; then
10854     if test "$with_system_graphite" = "no"; then
10855         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10856     fi
10857     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10858     save_LIBS="$LIBS"
10859     save_CFLAGS="$CFLAGS"
10860     LIBS="$LIBS $HARFBUZZ_LIBS"
10861     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10862     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10863     LIBS="$save_LIBS"
10864     CFLAGS="$save_CFLAGS"
10865 else
10866     if test "$with_system_graphite" = "yes"; then
10867         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10868     fi
10871 if test "$USING_X11" = TRUE; then
10872     AC_PATH_X
10873     AC_PATH_XTRA
10874     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10876     if test -z "$x_includes"; then
10877         x_includes="default_x_includes"
10878     fi
10879     if test -z "$x_libraries"; then
10880         x_libraries="default_x_libraries"
10881     fi
10882     CFLAGS="$CFLAGS $X_CFLAGS"
10883     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10884     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10885 else
10886     x_includes="no_x_includes"
10887     x_libraries="no_x_libraries"
10890 if test "$USING_X11" = TRUE; then
10891     dnl ===================================================================
10892     dnl Check for extension headers
10893     dnl ===================================================================
10894     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10895      [#include <X11/extensions/shape.h>])
10897     # vcl needs ICE and SM
10898     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10899     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10900         [AC_MSG_ERROR(ICE library not found)])
10901     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10902     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10903         [AC_MSG_ERROR(SM library not found)])
10906 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10907     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10908     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10911 dnl ===================================================================
10912 dnl Check for system Xrender
10913 dnl ===================================================================
10914 AC_MSG_CHECKING([whether to use Xrender])
10915 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10916     AC_MSG_RESULT([yes])
10917     PKG_CHECK_MODULES(XRENDER, xrender)
10918     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10919     FilterLibs "${XRENDER_LIBS}"
10920     XRENDER_LIBS="${filteredlibs}"
10921     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10922       [AC_MSG_ERROR(libXrender not found or functional)], [])
10923     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10924       [AC_MSG_ERROR(Xrender not found. install X)], [])
10925 else
10926     AC_MSG_RESULT([no])
10928 AC_SUBST(XRENDER_CFLAGS)
10929 AC_SUBST(XRENDER_LIBS)
10931 dnl ===================================================================
10932 dnl Check for XRandr
10933 dnl ===================================================================
10934 AC_MSG_CHECKING([whether to enable RandR support])
10935 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10936     AC_MSG_RESULT([yes])
10937     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10938     if test "$ENABLE_RANDR" != "TRUE"; then
10939         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10940                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10941         XRANDR_CFLAGS=" "
10942         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10943           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10944         XRANDR_LIBS="-lXrandr "
10945         ENABLE_RANDR="TRUE"
10946     fi
10947     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10948     FilterLibs "${XRANDR_LIBS}"
10949     XRANDR_LIBS="${filteredlibs}"
10950 else
10951     ENABLE_RANDR=""
10952     AC_MSG_RESULT([no])
10954 AC_SUBST(XRANDR_CFLAGS)
10955 AC_SUBST(XRANDR_LIBS)
10956 AC_SUBST(ENABLE_RANDR)
10958 if test -z "$with_webdav"; then
10959     with_webdav=$test_webdav
10962 AC_MSG_CHECKING([for WebDAV support])
10963 case "$with_webdav" in
10965     AC_MSG_RESULT([no])
10966     WITH_WEBDAV=""
10967     ;;
10969     AC_MSG_RESULT([yes])
10970     # curl is already mandatory (almost) and checked elsewhere
10971     if test "$enable_curl" = "no"; then
10972         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
10973     fi
10974     WITH_WEBDAV=TRUE
10975     ;;
10976 esac
10977 AC_SUBST(WITH_WEBDAV)
10979 dnl ===================================================================
10980 dnl Check for disabling cve_tests
10981 dnl ===================================================================
10982 AC_MSG_CHECKING([whether to execute CVE tests])
10983 # If not explicitly enabled or disabled, default
10984 if test -z "$enable_cve_tests"; then
10985     case "$OS" in
10986     WNT)
10987         # Default cves off for Windows with its wild and wonderful
10988         # variety of AV software kicking in and panicking
10989         enable_cve_tests=no
10990         ;;
10991     *)
10992         # otherwise yes
10993         enable_cve_tests=yes
10994         ;;
10995     esac
10997 if test "$enable_cve_tests" = "no"; then
10998     AC_MSG_RESULT([no])
10999     DISABLE_CVE_TESTS=TRUE
11000     AC_SUBST(DISABLE_CVE_TESTS)
11001 else
11002     AC_MSG_RESULT([yes])
11005 dnl ===================================================================
11006 dnl Check for system openssl
11007 dnl ===================================================================
11008 ENABLE_OPENSSL=
11009 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11010 if test "$enable_openssl" = "yes"; then
11011     AC_MSG_RESULT([no])
11012     ENABLE_OPENSSL=TRUE
11013     if test "$_os" = Darwin ; then
11014         # OpenSSL is deprecated when building for 10.7 or later.
11015         #
11016         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11017         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11019         with_system_openssl=no
11020         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11021     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11022             && test "$with_system_openssl" != "no"; then
11023         with_system_openssl=yes
11024         SYSTEM_OPENSSL=TRUE
11025         OPENSSL_CFLAGS=
11026         OPENSSL_LIBS="-lssl -lcrypto"
11027     else
11028         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11029     fi
11030     if test "$with_system_openssl" = "yes"; then
11031         AC_MSG_CHECKING([whether openssl supports SHA512])
11032         AC_LANG_PUSH([C])
11033         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11034             SHA512_CTX context;
11035 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11036         AC_LANG_POP(C)
11037     fi
11038 else
11039     AC_MSG_RESULT([yes])
11041     # warn that although OpenSSL is disabled, system libraries may depend on it
11042     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11043     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11046 AC_SUBST([ENABLE_OPENSSL])
11048 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11049     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11050         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11051         enable_cipher_openssl_backend=no
11052     else
11053         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11054     fi
11056 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11057 ENABLE_CIPHER_OPENSSL_BACKEND=
11058 if test "$enable_cipher_openssl_backend" = yes; then
11059     AC_MSG_RESULT([yes])
11060     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11061 else
11062     AC_MSG_RESULT([no])
11064 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11066 dnl ===================================================================
11067 dnl Select the crypto backends used by LO
11068 dnl ===================================================================
11070 if test "$build_crypto" = yes; then
11071     if test "$OS" = WNT; then
11072         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11073         AC_DEFINE([USE_CRYPTO_MSCAPI])
11074     elif test "$ENABLE_NSS" = TRUE; then
11075         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11076         AC_DEFINE([USE_CRYPTO_NSS])
11077     fi
11080 dnl ===================================================================
11081 dnl Check for system redland
11082 dnl ===================================================================
11083 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11084 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11085 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11086 if test "$with_system_redland" = "yes"; then
11087     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11088             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11089 else
11090     RAPTOR_MAJOR="0"
11091     RASQAL_MAJOR="3"
11092     REDLAND_MAJOR="0"
11094 AC_SUBST(RAPTOR_MAJOR)
11095 AC_SUBST(RASQAL_MAJOR)
11096 AC_SUBST(REDLAND_MAJOR)
11098 dnl ===================================================================
11099 dnl Check for system hunspell
11100 dnl ===================================================================
11101 AC_MSG_CHECKING([which libhunspell to use])
11102 if test "$with_system_hunspell" = "yes"; then
11103     AC_MSG_RESULT([external])
11104     SYSTEM_HUNSPELL=TRUE
11105     AC_LANG_PUSH([C++])
11106     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11107     if test "$HUNSPELL_PC" != "TRUE"; then
11108         AC_CHECK_HEADER(hunspell.hxx, [],
11109             [
11110             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11111             [AC_MSG_ERROR(hunspell headers not found.)], [])
11112             ], [])
11113         AC_CHECK_LIB([hunspell], [main], [:],
11114            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11115         HUNSPELL_LIBS=-lhunspell
11116     fi
11117     AC_LANG_POP([C++])
11118     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11119     FilterLibs "${HUNSPELL_LIBS}"
11120     HUNSPELL_LIBS="${filteredlibs}"
11121 else
11122     AC_MSG_RESULT([internal])
11123     SYSTEM_HUNSPELL=
11124     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11125     if test "$COM" = "MSC"; then
11126         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11127     else
11128         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11129     fi
11130     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11132 AC_SUBST(SYSTEM_HUNSPELL)
11133 AC_SUBST(HUNSPELL_CFLAGS)
11134 AC_SUBST(HUNSPELL_LIBS)
11136 dnl ===================================================================
11137 dnl Check for system zxing
11138 dnl ===================================================================
11139 AC_MSG_CHECKING([whether to use zxing])
11140 if test "$enable_zxing" = "no"; then
11141     AC_MSG_RESULT([no])
11142     ENABLE_ZXING=
11143     SYSTEM_ZXING=
11144 else
11145     AC_MSG_RESULT([yes])
11146     ENABLE_ZXING=TRUE
11147     AC_MSG_CHECKING([which libzxing to use])
11148     if test "$with_system_zxing" = "yes"; then
11149         AC_MSG_RESULT([external])
11150         SYSTEM_ZXING=TRUE
11151         ZXING_CFLAGS=
11152         AC_LANG_PUSH([C++])
11153         save_CXXFLAGS=$CXXFLAGS
11154         save_IFS=$IFS
11155         IFS=$P_SEP
11156         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11157             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11158             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11159             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11160             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11161             dnl unsetting IFS."):
11162             IFS=$save_IFS
11163             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11164             dnl ignore them here:
11165             if test -z "$i"; then
11166                 continue
11167             fi
11168             dnl TODO: White space in $i would cause problems:
11169             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11170             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11171                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11172         done
11173         CXXFLAGS=$save_CXXFLAGS
11174         if test -z "$ZXING_CFLAGS"; then
11175             AC_MSG_ERROR(zxing headers not found.)
11176         fi
11177         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11178             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11179             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11180         AC_LANG_POP([C++])
11181         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11182         FilterLibs "${ZXING_LIBS}"
11183         ZXING_LIBS="${filteredlibs}"
11184     else
11185         AC_MSG_RESULT([internal])
11186         SYSTEM_ZXING=
11187         BUILD_TYPE="$BUILD_TYPE ZXING"
11188     fi
11189     if test "$ENABLE_ZXING" = TRUE; then
11190         AC_DEFINE(ENABLE_ZXING)
11191     fi
11193 AC_SUBST(SYSTEM_ZXING)
11194 AC_SUBST(ENABLE_ZXING)
11195 AC_SUBST(ZXING_CFLAGS)
11196 AC_SUBST(ZXING_LIBS)
11198 dnl ===================================================================
11199 dnl Check for system box2d
11200 dnl ===================================================================
11201 AC_MSG_CHECKING([which box2d to use])
11202 if test "$with_system_box2d" = "yes"; then
11203     AC_MSG_RESULT([external])
11204     SYSTEM_BOX2D=TRUE
11205     AC_LANG_PUSH([C++])
11206     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11207         [BOX2D_H_FOUND='FALSE'])
11208     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11209         _BOX2D_LIB=box2d
11210         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11211     else
11212         # fail this. there's no other alternative to check when we are here.
11213         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11214             [AC_MSG_ERROR(box2d headers not found.)])
11215         _BOX2D_LIB=Box2D
11216         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11217     fi
11218     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11219         [ AC_MSG_ERROR(box2d library not found.) ], [])
11220     BOX2D_LIBS=-l$_BOX2D_LIB
11221     AC_LANG_POP([C++])
11222     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11223     FilterLibs "${BOX2D_LIBS}"
11224     BOX2D_LIBS="${filteredlibs}"
11225 else
11226     AC_MSG_RESULT([internal])
11227     SYSTEM_BOX2D=
11228     BUILD_TYPE="$BUILD_TYPE BOX2D"
11230 AC_SUBST(SYSTEM_BOX2D)
11231 AC_SUBST(BOX2D_CFLAGS)
11232 AC_SUBST(BOX2D_LIBS)
11234 dnl ===================================================================
11235 dnl Checking for altlinuxhyph
11236 dnl ===================================================================
11237 AC_MSG_CHECKING([which altlinuxhyph to use])
11238 if test "$with_system_altlinuxhyph" = "yes"; then
11239     AC_MSG_RESULT([external])
11240     SYSTEM_HYPH=TRUE
11241     AC_CHECK_HEADER(hyphen.h, [],
11242        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11243     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11244        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11245        [#include <hyphen.h>])
11246     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11247         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11248     if test -z "$HYPHEN_LIB"; then
11249         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11250            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11251     fi
11252     if test -z "$HYPHEN_LIB"; then
11253         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11254            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11255     fi
11256 else
11257     AC_MSG_RESULT([internal])
11258     SYSTEM_HYPH=
11259     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11260     if test "$COM" = "MSC"; then
11261         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11262     else
11263         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11264     fi
11266 AC_SUBST(SYSTEM_HYPH)
11267 AC_SUBST(HYPHEN_LIB)
11269 dnl ===================================================================
11270 dnl Checking for mythes
11271 dnl ===================================================================
11272 AC_MSG_CHECKING([which mythes to use])
11273 if test "$with_system_mythes" = "yes"; then
11274     AC_MSG_RESULT([external])
11275     SYSTEM_MYTHES=TRUE
11276     AC_LANG_PUSH([C++])
11277     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11278     if test "$MYTHES_PKGCONFIG" = "no"; then
11279         AC_CHECK_HEADER(mythes.hxx, [],
11280             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11281         AC_CHECK_LIB([mythes-1.2], [main], [:],
11282             [ MYTHES_FOUND=no], [])
11283     if test "$MYTHES_FOUND" = "no"; then
11284         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11285                 [ MYTHES_FOUND=no], [])
11286     fi
11287     if test "$MYTHES_FOUND" = "no"; then
11288         AC_MSG_ERROR([mythes library not found!.])
11289     fi
11290     fi
11291     AC_LANG_POP([C++])
11292     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11293     FilterLibs "${MYTHES_LIBS}"
11294     MYTHES_LIBS="${filteredlibs}"
11295 else
11296     AC_MSG_RESULT([internal])
11297     SYSTEM_MYTHES=
11298     BUILD_TYPE="$BUILD_TYPE MYTHES"
11299     if test "$COM" = "MSC"; then
11300         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11301     else
11302         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11303     fi
11305 AC_SUBST(SYSTEM_MYTHES)
11306 AC_SUBST(MYTHES_CFLAGS)
11307 AC_SUBST(MYTHES_LIBS)
11309 dnl ===================================================================
11310 dnl How should we build the linear programming solver ?
11311 dnl ===================================================================
11313 ENABLE_COINMP=
11314 AC_MSG_CHECKING([whether to build with CoinMP])
11315 if test "$enable_coinmp" != "no"; then
11316     ENABLE_COINMP=TRUE
11317     AC_MSG_RESULT([yes])
11318     if test "$with_system_coinmp" = "yes"; then
11319         SYSTEM_COINMP=TRUE
11320         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11321         FilterLibs "${COINMP_LIBS}"
11322         COINMP_LIBS="${filteredlibs}"
11323     else
11324         BUILD_TYPE="$BUILD_TYPE COINMP"
11325     fi
11326 else
11327     AC_MSG_RESULT([no])
11329 AC_SUBST(ENABLE_COINMP)
11330 AC_SUBST(SYSTEM_COINMP)
11331 AC_SUBST(COINMP_CFLAGS)
11332 AC_SUBST(COINMP_LIBS)
11334 ENABLE_LPSOLVE=
11335 AC_MSG_CHECKING([whether to build with lpsolve])
11336 if test "$enable_lpsolve" != "no"; then
11337     ENABLE_LPSOLVE=TRUE
11338     AC_MSG_RESULT([yes])
11339 else
11340     AC_MSG_RESULT([no])
11342 AC_SUBST(ENABLE_LPSOLVE)
11344 if test "$ENABLE_LPSOLVE" = TRUE; then
11345     AC_MSG_CHECKING([which lpsolve to use])
11346     if test "$with_system_lpsolve" = "yes"; then
11347         AC_MSG_RESULT([external])
11348         SYSTEM_LPSOLVE=TRUE
11349         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11350            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11351         save_LIBS=$LIBS
11352         # some systems need this. Like Ubuntu...
11353         AC_CHECK_LIB(m, floor)
11354         AC_CHECK_LIB(dl, dlopen)
11355         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11356             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11357         LIBS=$save_LIBS
11358     else
11359         AC_MSG_RESULT([internal])
11360         SYSTEM_LPSOLVE=
11361         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11362     fi
11364 AC_SUBST(SYSTEM_LPSOLVE)
11366 dnl ===================================================================
11367 dnl Checking for libexttextcat
11368 dnl ===================================================================
11369 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11370 if test "$with_system_libexttextcat" = "yes"; then
11371     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11373 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11375 dnl ===================================================================
11376 dnl Checking for libnumbertext
11377 dnl ===================================================================
11378 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11379 if test "$with_system_libnumbertext" = "yes"; then
11380     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11381     SYSTEM_LIBNUMBERTEXT=YES
11382 else
11383     SYSTEM_LIBNUMBERTEXT=
11385 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11386 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11388 dnl ***************************************
11389 dnl testing libc version for Linux...
11390 dnl ***************************************
11391 if test "$_os" = "Linux"; then
11392     AC_MSG_CHECKING([whether the libc is recent enough])
11393     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11394     #include <features.h>
11395     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11396     #error glibc >= 2.1 is required
11397     #endif
11398     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11401 dnl =========================================
11402 dnl Check for uuidgen
11403 dnl =========================================
11404 if test "$_os" = "WINNT"; then
11405     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11406     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11407     UUIDGEN=uuidgen.exe
11408     AC_SUBST(UUIDGEN)
11409 else
11410     AC_PATH_PROG([UUIDGEN], [uuidgen])
11411     if test -z "$UUIDGEN"; then
11412         AC_MSG_WARN([uuid is needed for building installation sets])
11413     fi
11416 dnl ***************************************
11417 dnl Checking for bison and flex
11418 dnl ***************************************
11419 AC_PATH_PROG(BISON, bison)
11420 if test -z "$BISON"; then
11421     AC_MSG_ERROR([no bison found in \$PATH, install it])
11422 else
11423     AC_MSG_CHECKING([the bison version])
11424     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11425     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11426     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11427     dnl cause
11428     dnl
11429     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]
11430     dnl   typedef union YYSTYPE
11431     dnl           ~~~~~~^~~~~~~
11432     dnl
11433     dnl while at least 3.4.1 is know to be good:
11434     if test "$COMPILER_PLUGINS" = TRUE; then
11435         if test "$_bison_longver" -lt 2004; then
11436             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11437         fi
11438     else
11439         if test "$_bison_longver" -lt 2000; then
11440             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11441         fi
11442     fi
11444 AC_SUBST([BISON])
11446 AC_PATH_PROG(FLEX, flex)
11447 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11448     FLEX=`cygpath -m $FLEX`
11450 if test -z "$FLEX"; then
11451     AC_MSG_ERROR([no flex found in \$PATH, install it])
11452 else
11453     AC_MSG_CHECKING([the flex version])
11454     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11455     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11456         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11457     fi
11459 AC_SUBST([FLEX])
11461 AC_PATH_PROG(DIFF, diff)
11462 if test -z "$DIFF"; then
11463     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11465 AC_SUBST([DIFF])
11467 AC_PATH_PROG(UNIQ, uniq)
11468 if test -z "$UNIQ"; then
11469     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11471 AC_SUBST([UNIQ])
11473 dnl ***************************************
11474 dnl Checking for patch
11475 dnl ***************************************
11476 AC_PATH_PROG(PATCH, patch)
11477 if test -z "$PATCH"; then
11478     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11481 dnl On Solaris or macOS, check if --with-gnu-patch was used
11482 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11483     if test -z "$with_gnu_patch"; then
11484         GNUPATCH=$PATCH
11485     else
11486         if test -x "$with_gnu_patch"; then
11487             GNUPATCH=$with_gnu_patch
11488         else
11489             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11490         fi
11491     fi
11493     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11494     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11495         AC_MSG_RESULT([yes])
11496     else
11497         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11498             AC_MSG_RESULT([no, but accepted (Apple patch)])
11499             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11500         else
11501             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11502         fi
11503     fi
11504 else
11505     GNUPATCH=$PATCH
11508 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11509     GNUPATCH=`cygpath -m $GNUPATCH`
11512 dnl We also need to check for --with-gnu-cp
11514 if test -z "$with_gnu_cp"; then
11515     # check the place where the good stuff is hidden on Solaris...
11516     if test -x /usr/gnu/bin/cp; then
11517         GNUCP=/usr/gnu/bin/cp
11518     else
11519         AC_PATH_PROGS(GNUCP, gnucp cp)
11520     fi
11521     if test -z $GNUCP; then
11522         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11523     fi
11524 else
11525     if test -x "$with_gnu_cp"; then
11526         GNUCP=$with_gnu_cp
11527     else
11528         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11529     fi
11532 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11533     GNUCP=`cygpath -m $GNUCP`
11536 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11537 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11538     AC_MSG_RESULT([yes])
11539 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11540     AC_MSG_RESULT([yes])
11541 else
11542     case "$build_os" in
11543     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11544         x_GNUCP=[\#]
11545         GNUCP=''
11546         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11547         ;;
11548     *)
11549         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11550         ;;
11551     esac
11554 AC_SUBST(GNUPATCH)
11555 AC_SUBST(GNUCP)
11556 AC_SUBST(x_GNUCP)
11558 dnl ***************************************
11559 dnl testing assembler path
11560 dnl ***************************************
11561 ML_EXE=""
11562 if test "$_os" = "WINNT"; then
11563     case "$WIN_HOST_ARCH" in
11564     x86) assembler=ml.exe ;;
11565     x64) assembler=ml64.exe ;;
11566     arm64) assembler=armasm64.exe ;;
11567     esac
11569     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11570     if test -f "$MSVC_HOST_PATH/$assembler"; then
11571         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11572         AC_MSG_RESULT([$ML_EXE])
11573     else
11574         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11575     fi
11578 AC_SUBST(ML_EXE)
11580 dnl ===================================================================
11581 dnl We need zip and unzip
11582 dnl ===================================================================
11583 AC_PATH_PROG(ZIP, zip)
11584 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11585 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11586     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],,)
11589 AC_PATH_PROG(UNZIP, unzip)
11590 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11592 dnl ===================================================================
11593 dnl Zip must be a specific type for different build types.
11594 dnl ===================================================================
11595 if test $build_os = cygwin; then
11596     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11597         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11598     fi
11601 dnl ===================================================================
11602 dnl We need touch with -h option support.
11603 dnl ===================================================================
11604 AC_PATH_PROG(TOUCH, touch)
11605 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11606 touch "$WARNINGS_FILE"
11607 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11608     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],,)
11611 dnl ===================================================================
11612 dnl Check for system epoxy
11613 dnl ===================================================================
11614 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11615 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11617 dnl ===================================================================
11618 dnl Set vcl option: coordinate device in double or sal_Int32
11619 dnl ===================================================================
11621 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11622 if test "$enable_float_device_pixel" = yes; then
11623     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11624     AC_MSG_RESULT([double])
11625 else
11626     AC_MSG_RESULT([sal_Int32])
11629 dnl ===================================================================
11630 dnl Show which vclplugs will be built.
11631 dnl ===================================================================
11632 R=""
11634 libo_ENABLE_VCLPLUG([gen])
11635 libo_ENABLE_VCLPLUG([gtk3])
11636 libo_ENABLE_VCLPLUG([gtk3_kde5])
11637 libo_ENABLE_VCLPLUG([gtk4])
11638 libo_ENABLE_VCLPLUG([kf5])
11639 libo_ENABLE_VCLPLUG([qt5])
11640 libo_ENABLE_VCLPLUG([qt6])
11642 if test "$_os" = "WINNT"; then
11643     R="$R win"
11644 elif test "$_os" = "Darwin"; then
11645     R="$R osx"
11646 elif test "$_os" = "iOS"; then
11647     R="ios"
11648 elif test "$_os" = Android; then
11649     R="android"
11652 build_vcl_plugins="$R"
11653 if test -z "$build_vcl_plugins"; then
11654     build_vcl_plugins=" none"
11656 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11657 VCL_PLUGIN_INFO=$R
11658 AC_SUBST([VCL_PLUGIN_INFO])
11660 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11661     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11664 dnl ===================================================================
11665 dnl Check for GTK libraries
11666 dnl ===================================================================
11668 GTK3_CFLAGS=""
11669 GTK3_LIBS=""
11670 ENABLE_GTKTILEDVIEWER=""
11671 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11672     if test "$with_system_cairo" = no; then
11673         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.'
11674     fi
11675     : ${with_system_cairo:=yes}
11676     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)
11677     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11678     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11679     FilterLibs "${GTK3_LIBS}"
11680     GTK3_LIBS="${filteredlibs}"
11682     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11683     if test "$with_system_epoxy" != "yes"; then
11684         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11685         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11686                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11687     fi
11688 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11689     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11690     if test "$build_os" = "cygwin"; then
11691         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11692         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11693     fi
11695     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11696     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11697     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11698     FilterLibs "${GTK3_LIBS}"
11699     GTK3_LIBS="${filteredlibs}"
11700     ENABLE_GTKTILEDVIEWER="yes"
11702 AC_SUBST(GTK3_LIBS)
11703 AC_SUBST(GTK3_CFLAGS)
11704 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11706 GTK4_CFLAGS=""
11707 GTK4_LIBS=""
11708 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11709     if test "$with_system_cairo" = no; then
11710         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11711     fi
11712     : ${with_system_cairo:=yes}
11713     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11714     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11715     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11716     FilterLibs "${GTK4_LIBS}"
11717     GTK4_LIBS="${filteredlibs}"
11719     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11720     if test "$with_system_epoxy" != "yes"; then
11721         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11722         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11723                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11724     fi
11726 AC_SUBST(GTK4_LIBS)
11727 AC_SUBST(GTK4_CFLAGS)
11729 if test "$enable_introspection" = yes; then
11730     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11731         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11732     else
11733         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11734     fi
11737 dnl ===================================================================
11738 dnl check for dbus support
11739 dnl ===================================================================
11740 ENABLE_DBUS=""
11741 DBUS_CFLAGS=""
11742 DBUS_LIBS=""
11743 DBUS_GLIB_CFLAGS=""
11744 DBUS_GLIB_LIBS=""
11745 DBUS_HAVE_GLIB=""
11747 if test "$enable_dbus" = "no"; then
11748     test_dbus=no
11751 AC_MSG_CHECKING([whether to enable DBUS support])
11752 if test "$test_dbus" = "yes"; then
11753     ENABLE_DBUS="TRUE"
11754     AC_MSG_RESULT([yes])
11755     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11756     AC_DEFINE(ENABLE_DBUS)
11757     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11758     FilterLibs "${DBUS_LIBS}"
11759     DBUS_LIBS="${filteredlibs}"
11761     # Glib is needed for BluetoothServer
11762     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11763     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11764         [
11765             DBUS_HAVE_GLIB="TRUE"
11766             AC_DEFINE(DBUS_HAVE_GLIB,1)
11767         ],
11768         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11769     )
11770 else
11771     AC_MSG_RESULT([no])
11774 AC_SUBST(ENABLE_DBUS)
11775 AC_SUBST(DBUS_CFLAGS)
11776 AC_SUBST(DBUS_LIBS)
11777 AC_SUBST(DBUS_GLIB_CFLAGS)
11778 AC_SUBST(DBUS_GLIB_LIBS)
11779 AC_SUBST(DBUS_HAVE_GLIB)
11781 AC_MSG_CHECKING([whether to enable Impress remote control])
11782 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11783     AC_MSG_RESULT([yes])
11784     ENABLE_SDREMOTE=TRUE
11785     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11786         <true/>"
11787     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11789     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11790         # The Bluetooth code doesn't compile with macOS SDK 10.15
11791         if test "$enable_sdremote_bluetooth" = yes; then
11792             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11793         fi
11794         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11795         enable_sdremote_bluetooth=no
11796     fi
11797     # If not explicitly enabled or disabled, default
11798     if test -z "$enable_sdremote_bluetooth"; then
11799         case "$OS" in
11800         LINUX|MACOSX|WNT)
11801             # Default to yes for these
11802             enable_sdremote_bluetooth=yes
11803             ;;
11804         *)
11805             # otherwise no
11806             enable_sdremote_bluetooth=no
11807             ;;
11808         esac
11809     fi
11810     # $enable_sdremote_bluetooth is guaranteed non-empty now
11812     if test "$enable_sdremote_bluetooth" != "no"; then
11813         if test "$OS" = "LINUX"; then
11814             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11815                 AC_MSG_RESULT([yes])
11816                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11817                 dnl ===================================================================
11818                 dnl Check for system bluez
11819                 dnl ===================================================================
11820                 AC_MSG_CHECKING([which Bluetooth header to use])
11821                 if test "$with_system_bluez" = "yes"; then
11822                     AC_MSG_RESULT([external])
11823                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11824                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11825                     SYSTEM_BLUEZ=TRUE
11826                 else
11827                     AC_MSG_RESULT([internal])
11828                     SYSTEM_BLUEZ=
11829                 fi
11830             else
11831                 AC_MSG_RESULT([no, dbus disabled])
11832                 ENABLE_SDREMOTE_BLUETOOTH=
11833                 SYSTEM_BLUEZ=
11834             fi
11835         else
11836             AC_MSG_RESULT([yes])
11837             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11838             SYSTEM_BLUEZ=
11839             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11840         <key>com.apple.security.device.bluetooth</key>
11841         <true/>"
11842         fi
11843     else
11844         AC_MSG_RESULT([no])
11845         ENABLE_SDREMOTE_BLUETOOTH=
11846         SYSTEM_BLUEZ=
11847     fi
11848 else
11849     ENABLE_SDREMOTE=
11850     SYSTEM_BLUEZ=
11851     AC_MSG_RESULT([no])
11853 AC_SUBST(ENABLE_SDREMOTE)
11854 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11855 AC_SUBST(SDREMOTE_ENTITLEMENT)
11856 AC_SUBST(SYSTEM_BLUEZ)
11858 dnl ===================================================================
11859 dnl Check whether to enable GIO support
11860 dnl ===================================================================
11861 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11862     AC_MSG_CHECKING([whether to enable GIO support])
11863     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11864         dnl Need at least 2.26 for the dbus support.
11865         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11866                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11867         if test "$ENABLE_GIO" = "TRUE"; then
11868             AC_DEFINE(ENABLE_GIO)
11869             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11870             FilterLibs "${GIO_LIBS}"
11871             GIO_LIBS="${filteredlibs}"
11872         fi
11873     else
11874         AC_MSG_RESULT([no])
11875     fi
11877 AC_SUBST(ENABLE_GIO)
11878 AC_SUBST(GIO_CFLAGS)
11879 AC_SUBST(GIO_LIBS)
11882 dnl ===================================================================
11884 SPLIT_APP_MODULES=""
11885 if test "$enable_split_app_modules" = "yes"; then
11886     SPLIT_APP_MODULES="TRUE"
11888 AC_SUBST(SPLIT_APP_MODULES)
11890 SPLIT_OPT_FEATURES=""
11891 if test "$enable_split_opt_features" = "yes"; then
11892     SPLIT_OPT_FEATURES="TRUE"
11894 AC_SUBST(SPLIT_OPT_FEATURES)
11896 dnl ===================================================================
11897 dnl Check whether the GStreamer libraries are available.
11898 dnl ===================================================================
11900 ENABLE_GSTREAMER_1_0=""
11902 if test "$test_gstreamer_1_0" = yes; then
11904     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11905     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11906         ENABLE_GSTREAMER_1_0="TRUE"
11907         AC_MSG_RESULT([yes])
11908         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11909         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11910         FilterLibs "${GSTREAMER_1_0_LIBS}"
11911         GSTREAMER_1_0_LIBS="${filteredlibs}"
11912         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11913     else
11914         AC_MSG_RESULT([no])
11915     fi
11917 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11918 AC_SUBST(GSTREAMER_1_0_LIBS)
11919 AC_SUBST(ENABLE_GSTREAMER_1_0)
11921 ENABLE_OPENGL_TRANSITIONS=
11922 ENABLE_OPENGL_CANVAS=
11923 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11924    : # disable
11925 elif test "$_os" = "Darwin"; then
11926     # We use frameworks on macOS, no need for detail checks
11927     ENABLE_OPENGL_TRANSITIONS=TRUE
11928     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11929     ENABLE_OPENGL_CANVAS=TRUE
11930 elif test $_os = WINNT; then
11931     ENABLE_OPENGL_TRANSITIONS=TRUE
11932     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11933     ENABLE_OPENGL_CANVAS=TRUE
11934 else
11935     if test "$USING_X11" = TRUE; then
11936         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11937         ENABLE_OPENGL_TRANSITIONS=TRUE
11938         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11939         ENABLE_OPENGL_CANVAS=TRUE
11940     fi
11943 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11944 AC_SUBST(ENABLE_OPENGL_CANVAS)
11946 dnl =================================================
11947 dnl Check whether to build with OpenCL support.
11948 dnl =================================================
11950 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11951     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11952     # platform (optional at run-time, used through clew).
11953     BUILD_TYPE="$BUILD_TYPE OPENCL"
11954     AC_DEFINE(HAVE_FEATURE_OPENCL)
11957 dnl =================================================
11958 dnl Check whether to build with dconf support.
11959 dnl =================================================
11961 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11962     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11963         if test "$enable_dconf" = yes; then
11964             AC_MSG_ERROR([dconf not found])
11965         else
11966             enable_dconf=no
11967         fi])
11969 AC_MSG_CHECKING([whether to enable dconf])
11970 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11971     DCONF_CFLAGS=
11972     DCONF_LIBS=
11973     ENABLE_DCONF=
11974     AC_MSG_RESULT([no])
11975 else
11976     ENABLE_DCONF=TRUE
11977     AC_DEFINE(ENABLE_DCONF)
11978     AC_MSG_RESULT([yes])
11980 AC_SUBST([DCONF_CFLAGS])
11981 AC_SUBST([DCONF_LIBS])
11982 AC_SUBST([ENABLE_DCONF])
11984 # pdf import?
11985 AC_MSG_CHECKING([whether to build the PDF import feature])
11986 ENABLE_PDFIMPORT=
11987 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11988     AC_MSG_RESULT([yes])
11989     ENABLE_PDFIMPORT=TRUE
11990     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11991 else
11992     AC_MSG_RESULT([no])
11995 # Pdfium?
11996 AC_MSG_CHECKING([whether to build PDFium])
11997 ENABLE_PDFIUM=
11998 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11999     AC_MSG_RESULT([yes])
12000     ENABLE_PDFIUM=TRUE
12001     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12002 else
12003     AC_MSG_RESULT([no])
12005 AC_SUBST(ENABLE_PDFIUM)
12007 if test "$ENABLE_PDFIUM" = "TRUE"; then
12008     AC_MSG_CHECKING([which OpenJPEG library to use])
12009     if test "$with_system_openjpeg" = "yes"; then
12010         SYSTEM_OPENJPEG2=TRUE
12011         AC_MSG_RESULT([external])
12012         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12013         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12014         FilterLibs "${OPENJPEG2_LIBS}"
12015         OPENJPEG2_LIBS="${filteredlibs}"
12016     else
12017         SYSTEM_OPENJPEG2=FALSE
12018         AC_MSG_RESULT([internal])
12019     fi
12021     AC_MSG_CHECKING([which Abseil library to use])
12022     if test "$with_system_abseil" = "yes"; then
12023         AC_MSG_RESULT([external])
12024         SYSTEM_ABSEIL=TRUE
12025         AC_LANG_PUSH([C++])
12026         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12027                         [AC_MSG_ERROR(abseil headers not found.)], [])
12028         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12029                         [AC_MSG_ERROR(abseil headers not found.)], [])
12030         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12031                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12032         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12033                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12034         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12035         AC_LANG_POP([C++])
12036         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12037         FilterLibs "${ABSEIL_LIBS}"
12038         ABSEIL_LIBS="${filteredlibs}"
12039     else
12040         AC_MSG_RESULT([internal])
12041     fi
12043 AC_SUBST(SYSTEM_OPENJPEG2)
12044 AC_SUBST(SYSTEM_ABSEIL)
12045 AC_SUBST(ABSEIL_CFLAGS)
12046 AC_SUBST(ABSEIL_LIBS)
12048 dnl ===================================================================
12049 dnl Check for poppler
12050 dnl ===================================================================
12051 ENABLE_POPPLER=
12052 AC_MSG_CHECKING([whether to build Poppler])
12053 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12054     AC_MSG_RESULT([yes])
12055     ENABLE_POPPLER=TRUE
12056     AC_DEFINE(HAVE_FEATURE_POPPLER)
12057 else
12058     AC_MSG_RESULT([no])
12060 AC_SUBST(ENABLE_POPPLER)
12062 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12063     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12066 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12067     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12070 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12071     dnl ===================================================================
12072     dnl Check for system poppler
12073     dnl ===================================================================
12074     AC_MSG_CHECKING([which PDF import poppler to use])
12075     if test "$with_system_poppler" = "yes"; then
12076         AC_MSG_RESULT([external])
12077         SYSTEM_POPPLER=TRUE
12078         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12079         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12080         FilterLibs "${POPPLER_LIBS}"
12081         POPPLER_LIBS="${filteredlibs}"
12082     else
12083         AC_MSG_RESULT([internal])
12084         SYSTEM_POPPLER=
12085         BUILD_TYPE="$BUILD_TYPE POPPLER"
12086     fi
12087     AC_DEFINE([ENABLE_PDFIMPORT],1)
12089 AC_SUBST(ENABLE_PDFIMPORT)
12090 AC_SUBST(SYSTEM_POPPLER)
12091 AC_SUBST(POPPLER_CFLAGS)
12092 AC_SUBST(POPPLER_LIBS)
12094 # Skia?
12095 ENABLE_SKIA=
12096 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12097     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12098     if test "$SYSTEM_FREETYPE" = TRUE; then
12099         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12100             [skia_freetype_ok=yes],
12101             [skia_freetype_ok=no])
12102     else # internal is ok
12103         skia_freetype_ok=yes
12104     fi
12105     AC_MSG_CHECKING([whether to build Skia])
12106     if test "$skia_freetype_ok" = "yes"; then
12107         if test "$enable_skia" = "debug"; then
12108             AC_MSG_RESULT([yes (debug)])
12109             ENABLE_SKIA_DEBUG=TRUE
12110         else
12111             AC_MSG_RESULT([yes])
12112             ENABLE_SKIA_DEBUG=
12113         fi
12114         ENABLE_SKIA=TRUE
12115         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12116                 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12117         fi
12119         AC_DEFINE(HAVE_FEATURE_SKIA)
12120         BUILD_TYPE="$BUILD_TYPE SKIA"
12122         if test "$OS" = "MACOSX"; then
12123             AC_DEFINE(SK_SUPPORT_GPU,1)
12124             AC_DEFINE(SK_METAL,1)
12125             SKIA_GPU=METAL
12126             AC_SUBST(SKIA_GPU)
12127         else
12128             AC_DEFINE(SK_SUPPORT_GPU,1)
12129             AC_DEFINE(SK_VULKAN,1)
12130             SKIA_GPU=VULKAN
12131             AC_SUBST(SKIA_GPU)
12132         fi
12133     else
12134         AC_MSG_RESULT([no (freetype too old)])
12135         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12136     fi
12138 else
12139     AC_MSG_CHECKING([whether to build Skia])
12140     AC_MSG_RESULT([no])
12142 AC_SUBST(ENABLE_SKIA)
12143 AC_SUBST(ENABLE_SKIA_DEBUG)
12145 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12146 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12147 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12148 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12149 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12150 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12151 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12152 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12153 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12154 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12155 HAVE_LO_CLANG_DLLEXPORTINLINES=
12157 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12158     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12159         AC_MSG_CHECKING([for Clang])
12160         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12161     else
12162         if test "$_os" = "WINNT"; then
12163             AC_MSG_CHECKING([for clang-cl])
12164             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12165                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12166             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12167                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12168             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12169                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12170             fi
12171             if test -n "$LO_CLANG_CC"; then
12172                 dnl explicitly set -m32/-m64
12173                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12174                 LO_CLANG_CXX="$LO_CLANG_CC"
12175                 AC_MSG_RESULT([$LO_CLANG_CC])
12176             else
12177                 AC_MSG_RESULT([no])
12178             fi
12180             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12181             echo "#include <stdlib.h>" > conftest.c
12182             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12183                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12184             rm -f conftest.c conftest.obj
12185             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12186                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12187             else
12188                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12189             fi
12190         else
12191             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12192             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12193         fi
12194     fi
12195     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12196         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12197         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12198         if test "$clang2_ver" -lt 50002; then
12199             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12200             LO_CLANG_CC=
12201             LO_CLANG_CXX=
12202         fi
12203     fi
12204     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12205         save_CXX="$CXX"
12206         CXX="$LO_CLANG_CXX"
12207         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12208         AC_LANG_PUSH([C++])
12209         save_CXXFLAGS=$CXXFLAGS
12210         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12211         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12212                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12213                 AC_MSG_RESULT([yes])
12214             ], [AC_MSG_RESULT([no])])
12215         CXXFLAGS=$save_CXXFLAGS
12216         AC_LANG_POP([C++])
12217         CXX="$save_CXX"
12218         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12219             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.])
12220         fi
12221     fi
12222     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12223         # Skia is the default on Windows and Mac, so hard-require Clang.
12224         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12225         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12226             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12227         else
12228             AC_MSG_WARN([Clang compiler not found.])
12229         fi
12230     else
12232         save_CXX="$CXX"
12233         CXX="$LO_CLANG_CXX"
12234         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12235         flag_sse2=-msse2
12236         flag_ssse3=-mssse3
12237         flag_sse41=-msse4.1
12238         flag_sse42=-msse4.2
12239         flag_avx=-mavx
12240         flag_avx2=-mavx2
12241         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12242         flag_avx512f=-mavx512f
12243         flag_f16c=-mf16c
12244         flag_fma=-mfma
12246         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12247         AC_LANG_PUSH([C++])
12248         save_CXXFLAGS=$CXXFLAGS
12249         CXXFLAGS="$CXXFLAGS $flag_sse2"
12250         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12251             #include <emmintrin.h>
12252             int main () {
12253                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12254                 c = _mm_xor_si128 (a, b);
12255                 return 0;
12256             }
12257             ])],
12258             [can_compile_sse2=yes],
12259             [can_compile_sse2=no])
12260         AC_LANG_POP([C++])
12261         CXXFLAGS=$save_CXXFLAGS
12262         AC_MSG_RESULT([${can_compile_sse2}])
12263         if test "${can_compile_sse2}" = "yes" ; then
12264             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12265         fi
12267         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12268         AC_LANG_PUSH([C++])
12269         save_CXXFLAGS=$CXXFLAGS
12270         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12271         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12272             #include <tmmintrin.h>
12273             int main () {
12274                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12275                 c = _mm_maddubs_epi16 (a, b);
12276                 return 0;
12277             }
12278             ])],
12279             [can_compile_ssse3=yes],
12280             [can_compile_ssse3=no])
12281         AC_LANG_POP([C++])
12282         CXXFLAGS=$save_CXXFLAGS
12283         AC_MSG_RESULT([${can_compile_ssse3}])
12284         if test "${can_compile_ssse3}" = "yes" ; then
12285             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12286         fi
12288         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12289         AC_LANG_PUSH([C++])
12290         save_CXXFLAGS=$CXXFLAGS
12291         CXXFLAGS="$CXXFLAGS $flag_sse41"
12292         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12293             #include <smmintrin.h>
12294             int main () {
12295                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12296                 c = _mm_cmpeq_epi64 (a, b);
12297                 return 0;
12298             }
12299             ])],
12300             [can_compile_sse41=yes],
12301             [can_compile_sse41=no])
12302         AC_LANG_POP([C++])
12303         CXXFLAGS=$save_CXXFLAGS
12304         AC_MSG_RESULT([${can_compile_sse41}])
12305         if test "${can_compile_sse41}" = "yes" ; then
12306             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12307         fi
12309         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12310         AC_LANG_PUSH([C++])
12311         save_CXXFLAGS=$CXXFLAGS
12312         CXXFLAGS="$CXXFLAGS $flag_sse42"
12313         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12314             #include <nmmintrin.h>
12315             int main () {
12316                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12317                 c = _mm_cmpgt_epi64 (a, b);
12318                 return 0;
12319             }
12320             ])],
12321             [can_compile_sse42=yes],
12322             [can_compile_sse42=no])
12323         AC_LANG_POP([C++])
12324         CXXFLAGS=$save_CXXFLAGS
12325         AC_MSG_RESULT([${can_compile_sse42}])
12326         if test "${can_compile_sse42}" = "yes" ; then
12327             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12328         fi
12330         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12331         AC_LANG_PUSH([C++])
12332         save_CXXFLAGS=$CXXFLAGS
12333         CXXFLAGS="$CXXFLAGS $flag_avx"
12334         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12335             #include <immintrin.h>
12336             int main () {
12337                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12338                 c = _mm256_xor_ps(a, b);
12339                 return 0;
12340             }
12341             ])],
12342             [can_compile_avx=yes],
12343             [can_compile_avx=no])
12344         AC_LANG_POP([C++])
12345         CXXFLAGS=$save_CXXFLAGS
12346         AC_MSG_RESULT([${can_compile_avx}])
12347         if test "${can_compile_avx}" = "yes" ; then
12348             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12349         fi
12351         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12352         AC_LANG_PUSH([C++])
12353         save_CXXFLAGS=$CXXFLAGS
12354         CXXFLAGS="$CXXFLAGS $flag_avx2"
12355         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12356             #include <immintrin.h>
12357             int main () {
12358                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12359                 c = _mm256_maddubs_epi16(a, b);
12360                 return 0;
12361             }
12362             ])],
12363             [can_compile_avx2=yes],
12364             [can_compile_avx2=no])
12365         AC_LANG_POP([C++])
12366         CXXFLAGS=$save_CXXFLAGS
12367         AC_MSG_RESULT([${can_compile_avx2}])
12368         if test "${can_compile_avx2}" = "yes" ; then
12369             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12370         fi
12372         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12373         AC_LANG_PUSH([C++])
12374         save_CXXFLAGS=$CXXFLAGS
12375         CXXFLAGS="$CXXFLAGS $flag_avx512"
12376         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12377             #include <immintrin.h>
12378             int main () {
12379                 __m512i a = _mm512_loadu_si512(0);
12380                 __m512d v1 = _mm512_load_pd(0);
12381                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12382                 __m512d v2 = _mm512_abs_pd(v1);
12383                 return 0;
12384             }
12385             ])],
12386             [can_compile_avx512=yes],
12387             [can_compile_avx512=no])
12388         AC_LANG_POP([C++])
12389         CXXFLAGS=$save_CXXFLAGS
12390         AC_MSG_RESULT([${can_compile_avx512}])
12391         if test "${can_compile_avx512}" = "yes" ; then
12392             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12393             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12394         fi
12396         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12397         AC_LANG_PUSH([C++])
12398         save_CXXFLAGS=$CXXFLAGS
12399         CXXFLAGS="$CXXFLAGS $flag_f16c"
12400         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12401             #include <immintrin.h>
12402             int main () {
12403                 __m128i a = _mm_set1_epi32 (0);
12404                 __m128 c;
12405                 c = _mm_cvtph_ps(a);
12406                 return 0;
12407             }
12408             ])],
12409             [can_compile_f16c=yes],
12410             [can_compile_f16c=no])
12411         AC_LANG_POP([C++])
12412         CXXFLAGS=$save_CXXFLAGS
12413         AC_MSG_RESULT([${can_compile_f16c}])
12414         if test "${can_compile_f16c}" = "yes" ; then
12415             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12416         fi
12418         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12419         AC_LANG_PUSH([C++])
12420         save_CXXFLAGS=$CXXFLAGS
12421         CXXFLAGS="$CXXFLAGS $flag_fma"
12422         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12423             #include <immintrin.h>
12424             int main () {
12425                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12426                 d = _mm256_fmadd_ps(a, b, c);
12427                 return 0;
12428             }
12429             ])],
12430             [can_compile_fma=yes],
12431             [can_compile_fma=no])
12432         AC_LANG_POP([C++])
12433         CXXFLAGS=$save_CXXFLAGS
12434         AC_MSG_RESULT([${can_compile_fma}])
12435         if test "${can_compile_fma}" = "yes" ; then
12436             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12437         fi
12439         CXX="$save_CXX"
12440     fi
12443 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12445 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12446     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12447     AC_LANG_PUSH([C])
12448     save_CC="$CC"
12449     CC="$LO_CLANG_CC"
12450     save_CFLAGS=$CFLAGS
12451     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12452     dnl an empty program will do, we're checking the compiler flags
12453     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12454                       [use_ccache=yes], [use_ccache=no])
12455     CFLAGS=$save_CFLAGS
12456     CC=$save_CC
12457     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12458         AC_MSG_RESULT([yes])
12459     else
12460         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12461         AC_MSG_RESULT([no])
12462     fi
12463     AC_LANG_POP([C])
12465     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12466     AC_LANG_PUSH([C++])
12467     save_CXX="$CXX"
12468     CXX="$LO_CLANG_CXX"
12469     save_CXXFLAGS=$CXXFLAGS
12470     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12471     dnl an empty program will do, we're checking the compiler flags
12472     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12473                       [use_ccache=yes], [use_ccache=no])
12474     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12475         AC_MSG_RESULT([yes])
12476     else
12477         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12478         AC_MSG_RESULT([no])
12479     fi
12480     CXXFLAGS=$save_CXXFLAGS
12481     CXX=$save_CXX
12482     AC_LANG_POP([C++])
12485 AC_SUBST(LO_CLANG_CC)
12486 AC_SUBST(LO_CLANG_CXX)
12487 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12488 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12489 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12490 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12491 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12492 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12493 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12494 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12495 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12496 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12497 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12498 AC_SUBST(CLANG_USE_LD)
12499 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12501 SYSTEM_GPGMEPP=
12503 AC_MSG_CHECKING([whether to enable gpgmepp])
12504 if test "$enable_gpgmepp" = no; then
12505     AC_MSG_RESULT([no])
12506 elif test "$enable_mpl_subset" = "yes"; then
12507     AC_MSG_RESULT([no (MPL only])
12508 elif test "$enable_fuzzers" = "yes"; then
12509     AC_MSG_RESULT([no (oss-fuzz)])
12510 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12511     AC_MSG_RESULT([yes])
12512     dnl ===================================================================
12513     dnl Check for system gpgme
12514     dnl ===================================================================
12515     AC_MSG_CHECKING([which gpgmepp to use])
12516     if test "$with_system_gpgmepp" = "yes"; then
12517         AC_MSG_RESULT([external])
12518         SYSTEM_GPGMEPP=TRUE
12520         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12521         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12522             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12523         AC_CHECK_HEADER(gpgme.h, [],
12524             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12525         AC_CHECK_LIB(gpgmepp, main, [],
12526             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12527         GPGMEPP_LIBS=-lgpgmepp
12528     else
12529         AC_MSG_RESULT([internal])
12530         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12532         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12533         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12534         if test "$_os" != "WINNT"; then
12535             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12536             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12537         fi
12538     fi
12539     ENABLE_GPGMEPP=TRUE
12540     AC_DEFINE([HAVE_FEATURE_GPGME])
12541     AC_PATH_PROG(GPG, gpg)
12542     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12543     # so let's exclude that manually for the moment
12544     if test -n "$GPG" -a "$_os" != "WINNT"; then
12545         # make sure we not only have a working gpgme, but a full working
12546         # gpg installation to run OpenPGP signature verification
12547         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12548     fi
12549     if test "$_os" = "Linux"; then
12550       uid=`id -u`
12551       AC_MSG_CHECKING([for /run/user/$uid])
12552       if test -d /run/user/$uid; then
12553         AC_MSG_RESULT([yes])
12554         AC_PATH_PROG(GPGCONF, gpgconf)
12556         # Older versions of gpgconf are not working as expected, since
12557         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12558         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12559         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12560         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12561         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12562         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12563         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12564           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12565           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12566           if $GPGCONF --dump-options > /dev/null ; then
12567             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12568               AC_MSG_RESULT([yes])
12569               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12570               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12571             else
12572               AC_MSG_RESULT([no])
12573             fi
12574           else
12575             AC_MSG_RESULT([no. missing or broken gpgconf?])
12576           fi
12577         else
12578           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12579         fi
12580       else
12581         AC_MSG_RESULT([no])
12582      fi
12583    fi
12584 else
12585     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12587 AC_SUBST(ENABLE_GPGMEPP)
12588 AC_SUBST(SYSTEM_GPGMEPP)
12589 AC_SUBST(GPG_ERROR_CFLAGS)
12590 AC_SUBST(GPG_ERROR_LIBS)
12591 AC_SUBST(LIBASSUAN_CFLAGS)
12592 AC_SUBST(LIBASSUAN_LIBS)
12593 AC_SUBST(GPGMEPP_CFLAGS)
12594 AC_SUBST(GPGMEPP_LIBS)
12596 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12597 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12598     AC_MSG_RESULT([yes])
12599     ENABLE_MEDIAWIKI=TRUE
12600     BUILD_TYPE="$BUILD_TYPE XSLTML"
12601     if test  "x$with_java" = "xno"; then
12602         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12603     fi
12604 else
12605     AC_MSG_RESULT([no])
12606     ENABLE_MEDIAWIKI=
12607     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12609 AC_SUBST(ENABLE_MEDIAWIKI)
12611 AC_MSG_CHECKING([whether to build the Report Builder])
12612 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12613     AC_MSG_RESULT([yes])
12614     ENABLE_REPORTBUILDER=TRUE
12615     AC_MSG_CHECKING([which jfreereport libs to use])
12616     if test "$with_system_jfreereport" = "yes"; then
12617         SYSTEM_JFREEREPORT=TRUE
12618         AC_MSG_RESULT([external])
12619         if test -z $SAC_JAR; then
12620             SAC_JAR=/usr/share/java/sac.jar
12621         fi
12622         if ! test -f $SAC_JAR; then
12623              AC_MSG_ERROR(sac.jar not found.)
12624         fi
12626         if test -z $LIBXML_JAR; then
12627             if test -f /usr/share/java/libxml-1.0.0.jar; then
12628                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12629             elif test -f /usr/share/java/libxml.jar; then
12630                 LIBXML_JAR=/usr/share/java/libxml.jar
12631             else
12632                 AC_MSG_ERROR(libxml.jar replacement not found.)
12633             fi
12634         elif ! test -f $LIBXML_JAR; then
12635             AC_MSG_ERROR(libxml.jar not found.)
12636         fi
12638         if test -z $FLUTE_JAR; then
12639             if test -f /usr/share/java/flute-1.3.0.jar; then
12640                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12641             elif test -f /usr/share/java/flute.jar; then
12642                 FLUTE_JAR=/usr/share/java/flute.jar
12643             else
12644                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12645             fi
12646         elif ! test -f $FLUTE_JAR; then
12647             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12648         fi
12650         if test -z $JFREEREPORT_JAR; then
12651             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12652                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12653             elif test -f /usr/share/java/flow-engine.jar; then
12654                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12655             else
12656                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12657             fi
12658         elif ! test -f  $JFREEREPORT_JAR; then
12659                 AC_MSG_ERROR(jfreereport.jar not found.)
12660         fi
12662         if test -z $LIBLAYOUT_JAR; then
12663             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12664                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12665             elif test -f /usr/share/java/liblayout.jar; then
12666                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12667             else
12668                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12669             fi
12670         elif ! test -f $LIBLAYOUT_JAR; then
12671                 AC_MSG_ERROR(liblayout.jar not found.)
12672         fi
12674         if test -z $LIBLOADER_JAR; then
12675             if test -f /usr/share/java/libloader-1.0.0.jar; then
12676                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12677             elif test -f /usr/share/java/libloader.jar; then
12678                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12679             else
12680                 AC_MSG_ERROR(libloader.jar replacement not found.)
12681             fi
12682         elif ! test -f  $LIBLOADER_JAR; then
12683             AC_MSG_ERROR(libloader.jar not found.)
12684         fi
12686         if test -z $LIBFORMULA_JAR; then
12687             if test -f /usr/share/java/libformula-0.2.0.jar; then
12688                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12689             elif test -f /usr/share/java/libformula.jar; then
12690                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12691             else
12692                 AC_MSG_ERROR(libformula.jar replacement not found.)
12693             fi
12694         elif ! test -f $LIBFORMULA_JAR; then
12695                 AC_MSG_ERROR(libformula.jar not found.)
12696         fi
12698         if test -z $LIBREPOSITORY_JAR; then
12699             if test -f /usr/share/java/librepository-1.0.0.jar; then
12700                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12701             elif test -f /usr/share/java/librepository.jar; then
12702                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12703             else
12704                 AC_MSG_ERROR(librepository.jar replacement not found.)
12705             fi
12706         elif ! test -f $LIBREPOSITORY_JAR; then
12707             AC_MSG_ERROR(librepository.jar not found.)
12708         fi
12710         if test -z $LIBFONTS_JAR; then
12711             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12712                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12713             elif test -f /usr/share/java/libfonts.jar; then
12714                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12715             else
12716                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12717             fi
12718         elif ! test -f $LIBFONTS_JAR; then
12719                 AC_MSG_ERROR(libfonts.jar not found.)
12720         fi
12722         if test -z $LIBSERIALIZER_JAR; then
12723             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12724                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12725             elif test -f /usr/share/java/libserializer.jar; then
12726                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12727             else
12728                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12729             fi
12730         elif ! test -f $LIBSERIALIZER_JAR; then
12731                 AC_MSG_ERROR(libserializer.jar not found.)
12732         fi
12734         if test -z $LIBBASE_JAR; then
12735             if test -f /usr/share/java/libbase-1.0.0.jar; then
12736                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12737             elif test -f /usr/share/java/libbase.jar; then
12738                 LIBBASE_JAR=/usr/share/java/libbase.jar
12739             else
12740                 AC_MSG_ERROR(libbase.jar replacement not found.)
12741             fi
12742         elif ! test -f $LIBBASE_JAR; then
12743             AC_MSG_ERROR(libbase.jar not found.)
12744         fi
12746     else
12747         AC_MSG_RESULT([internal])
12748         SYSTEM_JFREEREPORT=
12749         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12750         NEED_ANT=TRUE
12751     fi
12752 else
12753     AC_MSG_RESULT([no])
12754     ENABLE_REPORTBUILDER=
12755     SYSTEM_JFREEREPORT=
12757 AC_SUBST(ENABLE_REPORTBUILDER)
12758 AC_SUBST(SYSTEM_JFREEREPORT)
12759 AC_SUBST(SAC_JAR)
12760 AC_SUBST(LIBXML_JAR)
12761 AC_SUBST(FLUTE_JAR)
12762 AC_SUBST(JFREEREPORT_JAR)
12763 AC_SUBST(LIBBASE_JAR)
12764 AC_SUBST(LIBLAYOUT_JAR)
12765 AC_SUBST(LIBLOADER_JAR)
12766 AC_SUBST(LIBFORMULA_JAR)
12767 AC_SUBST(LIBREPOSITORY_JAR)
12768 AC_SUBST(LIBFONTS_JAR)
12769 AC_SUBST(LIBSERIALIZER_JAR)
12771 # scripting provider for BeanShell?
12772 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12773 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12774     AC_MSG_RESULT([yes])
12775     ENABLE_SCRIPTING_BEANSHELL=TRUE
12777     dnl ===================================================================
12778     dnl Check for system beanshell
12779     dnl ===================================================================
12780     AC_MSG_CHECKING([which beanshell to use])
12781     if test "$with_system_beanshell" = "yes"; then
12782         AC_MSG_RESULT([external])
12783         SYSTEM_BSH=TRUE
12784         if test -z $BSH_JAR; then
12785             BSH_JAR=/usr/share/java/bsh.jar
12786         fi
12787         if ! test -f $BSH_JAR; then
12788             AC_MSG_ERROR(bsh.jar not found.)
12789         fi
12790     else
12791         AC_MSG_RESULT([internal])
12792         SYSTEM_BSH=
12793         BUILD_TYPE="$BUILD_TYPE BSH"
12794     fi
12795 else
12796     AC_MSG_RESULT([no])
12797     ENABLE_SCRIPTING_BEANSHELL=
12798     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12800 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12801 AC_SUBST(SYSTEM_BSH)
12802 AC_SUBST(BSH_JAR)
12804 # scripting provider for JavaScript?
12805 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12806 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12807     AC_MSG_RESULT([yes])
12808     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12810     dnl ===================================================================
12811     dnl Check for system rhino
12812     dnl ===================================================================
12813     AC_MSG_CHECKING([which rhino to use])
12814     if test "$with_system_rhino" = "yes"; then
12815         AC_MSG_RESULT([external])
12816         SYSTEM_RHINO=TRUE
12817         if test -z $RHINO_JAR; then
12818             RHINO_JAR=/usr/share/java/js.jar
12819         fi
12820         if ! test -f $RHINO_JAR; then
12821             AC_MSG_ERROR(js.jar not found.)
12822         fi
12823     else
12824         AC_MSG_RESULT([internal])
12825         SYSTEM_RHINO=
12826         BUILD_TYPE="$BUILD_TYPE RHINO"
12827         NEED_ANT=TRUE
12828     fi
12829 else
12830     AC_MSG_RESULT([no])
12831     ENABLE_SCRIPTING_JAVASCRIPT=
12832     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12834 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12835 AC_SUBST(SYSTEM_RHINO)
12836 AC_SUBST(RHINO_JAR)
12838 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12839 # paths should be added to library search path. So lets put all 64-bit
12840 # platforms there.
12841 supports_multilib=
12842 case "$host_cpu" in
12843 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12844     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12845         supports_multilib="yes"
12846     fi
12847     ;;
12849     ;;
12850 esac
12852 dnl ===================================================================
12853 dnl QT5 Integration
12854 dnl ===================================================================
12856 QT5_CFLAGS=""
12857 QT5_LIBS=""
12858 QMAKE5="qmake"
12859 MOC5="moc"
12860 QT5_GOBJECT_CFLAGS=""
12861 QT5_GOBJECT_LIBS=""
12862 QT5_HAVE_GOBJECT=""
12863 QT5_PLATFORMS_SRCDIR=""
12864 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12865         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12866         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12867 then
12868     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12869     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12871     if test -n "$supports_multilib"; then
12872         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12873     fi
12875     qt5_test_include="QtWidgets/qapplication.h"
12876     if test "$_os" = "Emscripten"; then
12877         qt5_test_library="libQt5Widgets.a"
12878     else
12879         qt5_test_library="libQt5Widgets.so"
12880     fi
12882     dnl Check for qmake5
12883     if test -n "$QT5DIR"; then
12884         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12885     else
12886         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12887     fi
12888     if test "$QMAKE5" = "no"; then
12889         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12890     else
12891         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12892         if test -z "$qmake5_test_ver"; then
12893             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12894         fi
12895         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12896         qt5_minimal_minor="6"
12897         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12898             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12899         else
12900             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12901         fi
12902     fi
12904     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12905     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12906     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12907     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12909     AC_MSG_CHECKING([for Qt5 headers])
12910     qt5_incdir="no"
12911     for inc_dir in $qt5_incdirs; do
12912         if test -r "$inc_dir/$qt5_test_include"; then
12913             qt5_incdir="$inc_dir"
12914             break
12915         fi
12916     done
12917     AC_MSG_RESULT([$qt5_incdir])
12918     if test "x$qt5_incdir" = "xno"; then
12919         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12920     fi
12921     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12922     AC_LANG_PUSH([C++])
12923     save_CPPFLAGS=$CPPFLAGS
12924     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12925     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12926         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12927     CPPFLAGS=$save_CPPFLAGS
12928     AC_LANG_POP([C++])
12930     AC_MSG_CHECKING([for Qt5 libraries])
12931     qt5_libdir="no"
12932     for lib_dir in $qt5_libdirs; do
12933         if test -r "$lib_dir/$qt5_test_library"; then
12934             qt5_libdir="$lib_dir"
12935             break
12936         fi
12937     done
12938     AC_MSG_RESULT([$qt5_libdir])
12939     if test "x$qt5_libdir" = "xno"; then
12940         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12941     fi
12943     if test "$_os" = "Emscripten"; then
12944         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12945             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12946         fi
12947         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12948             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12949         fi
12951         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12952         if ! test -x "$EMSDK_LLVM_NM"; then
12953             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12954         fi
12955         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12956             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12957         fi
12958         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12959         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12960             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
12961         fi
12962         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
12963             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
12964         fi
12965     fi
12967     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12968     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12969     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12970     if test "$_os" = "Emscripten"; then
12971         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12972     fi
12974     if test "$USING_X11" = TRUE; then
12975         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12976         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12977             QT5_HAVE_XCB_ICCCM=1
12978             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12979         ],[
12980             AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)])
12981             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12982         ])
12983         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12984         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12985         QT5_USING_X11=1
12986         AC_DEFINE(QT5_USING_X11)
12987     fi
12989     dnl Check for Meta Object Compiler
12991     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12992     if test "$MOC5" = "no"; then
12993         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12994 the root of your Qt installation by exporting QT5DIR before running "configure".])
12995     fi
12997     if test "$test_gstreamer_1_0" = yes; then
12998         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12999                 QT5_HAVE_GOBJECT=1
13000                 AC_DEFINE(QT5_HAVE_GOBJECT)
13001             ],
13002             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13003         )
13004     fi
13006 AC_SUBST(QT5_CFLAGS)
13007 AC_SUBST(QT5_LIBS)
13008 AC_SUBST(MOC5)
13009 AC_SUBST(QT5_GOBJECT_CFLAGS)
13010 AC_SUBST(QT5_GOBJECT_LIBS)
13011 AC_SUBST(QT5_HAVE_GOBJECT)
13012 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13014 dnl ===================================================================
13015 dnl QT6 Integration
13016 dnl ===================================================================
13018 QT6_CFLAGS=""
13019 QT6_LIBS=""
13020 QMAKE6="qmake"
13021 MOC6="moc"
13022 QT6_PLATFORMS_SRCDIR=""
13023 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13024 then
13025     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13026     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13028     if test -n "$supports_multilib"; then
13029         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13030     fi
13032     qt6_test_include="QtWidgets/qapplication.h"
13033     if test "$_os" = "Emscripten"; then
13034         qt6_test_library="libQt6Widgets.a"
13035     else
13036         qt6_test_library="libQt6Widgets.so"
13037     fi
13039     dnl Check for qmake6
13040     if test -n "$QT6DIR"; then
13041         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13042     else
13043         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13044     fi
13045     if test "$QMAKE6" = "no"; then
13046         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13047     else
13048         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13049         if test -z "$qmake6_test_ver"; then
13050             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13051         fi
13052         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13053     fi
13055     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13056     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13057     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13058     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13060     AC_MSG_CHECKING([for Qt6 headers])
13061     qt6_incdir="no"
13062     for inc_dir in $qt6_incdirs; do
13063         if test -r "$inc_dir/$qt6_test_include"; then
13064             qt6_incdir="$inc_dir"
13065             break
13066         fi
13067     done
13068     AC_MSG_RESULT([$qt6_incdir])
13069     if test "x$qt6_incdir" = "xno"; then
13070         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13071     fi
13072     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13073     AC_LANG_PUSH([C++])
13074     save_CPPFLAGS=$CPPFLAGS
13075     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13076     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13077         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13078     CPPFLAGS=$save_CPPFLAGS
13079     AC_LANG_POP([C++])
13081     AC_MSG_CHECKING([for Qt6 libraries])
13082     qt6_libdir="no"
13083     for lib_dir in $qt6_libdirs; do
13084         if test -r "$lib_dir/$qt6_test_library"; then
13085             qt6_libdir="$lib_dir"
13086             break
13087         fi
13088     done
13089     AC_MSG_RESULT([$qt6_libdir])
13090     if test "x$qt6_libdir" = "xno"; then
13091         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13092     fi
13094     if test "$_os" = "Emscripten"; then
13095         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13096             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13097         fi
13098         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13099             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13100         fi
13101     fi
13103     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13104     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13105     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13106     if test "$_os" = "Emscripten"; then
13107         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13108     fi
13110     if test "$USING_X11" = TRUE; then
13111         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13112         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13113         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13114         QT6_USING_X11=1
13115         AC_DEFINE(QT6_USING_X11)
13116     fi
13118     dnl Check for Meta Object Compiler
13120     for lib_dir in $qt6_libdirs; do
13121         if test -z "$qt6_libexec_dirs"; then
13122             qt6_libexec_dirs="$lib_dir/libexec"
13123         else
13124             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13125         fi
13126     done
13127     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])
13128     if test "$MOC6" = "no"; then
13129         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13130 the root of your Qt installation by exporting QT6DIR before running "configure".])
13131     else
13132         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13133         if test -z "$moc6_test_ver"; then
13134             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13135         fi
13136         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13137     fi
13139 AC_SUBST(QT6_CFLAGS)
13140 AC_SUBST(QT6_LIBS)
13141 AC_SUBST(MOC6)
13142 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13144 dnl ===================================================================
13145 dnl KF5 Integration
13146 dnl ===================================================================
13148 KF5_CFLAGS=""
13149 KF5_LIBS=""
13150 KF5_CONFIG="kf5-config"
13151 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13152         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13153 then
13154     if test "$OS" = "HAIKU"; then
13155         haiku_arch="`echo $RTL_ARCH | tr X x`"
13156         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13157         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13158     fi
13160     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13161     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13162     if test -n "$supports_multilib"; then
13163         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13164     fi
13166     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13167     kf5_test_library="libKF5KIOFileWidgets.so"
13168     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13170     dnl kf5 KDE4 support compatibility installed
13171     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13172     if test "$KF5_CONFIG" != "no"; then
13173         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13174         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13175     fi
13177     dnl Check for KF5 headers
13178     AC_MSG_CHECKING([for KF5 headers])
13179     kf5_incdir="no"
13180     for kf5_check in $kf5_incdirs; do
13181         if test -r "$kf5_check/$kf5_test_include"; then
13182             kf5_incdir="$kf5_check/KF5"
13183             break
13184         fi
13185     done
13186     AC_MSG_RESULT([$kf5_incdir])
13187     if test "x$kf5_incdir" = "xno"; then
13188         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13189     fi
13191     dnl Check for KF5 libraries
13192     AC_MSG_CHECKING([for KF5 libraries])
13193     kf5_libdir="no"
13194     for kf5_check in $kf5_libdirs; do
13195         if test -r "$kf5_check/$kf5_test_library"; then
13196             kf5_libdir="$kf5_check"
13197             break
13198         fi
13199     done
13201     AC_MSG_RESULT([$kf5_libdir])
13202     if test "x$kf5_libdir" = "xno"; then
13203         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13204     fi
13206     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"
13207     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13208     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13210     if test "$USING_X11" = TRUE; then
13211         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13212     fi
13214     AC_LANG_PUSH([C++])
13215     save_CXXFLAGS=$CXXFLAGS
13216     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13217     AC_MSG_CHECKING([whether KDE is >= 5.0])
13218        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13219 #include <kcoreaddons_version.h>
13221 int main(int argc, char **argv) {
13222        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13223        else return 1;
13225        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13226     CXXFLAGS=$save_CXXFLAGS
13227     AC_LANG_POP([C++])
13229 AC_SUBST(KF5_CFLAGS)
13230 AC_SUBST(KF5_LIBS)
13232 dnl ===================================================================
13233 dnl Test whether to include Evolution 2 support
13234 dnl ===================================================================
13235 AC_MSG_CHECKING([whether to enable evolution 2 support])
13236 if test "$enable_evolution2" = yes; then
13237     AC_MSG_RESULT([yes])
13238     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13239     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13240     FilterLibs "${GOBJECT_LIBS}"
13241     GOBJECT_LIBS="${filteredlibs}"
13242     ENABLE_EVOAB2="TRUE"
13243 else
13244     AC_MSG_RESULT([no])
13246 AC_SUBST(ENABLE_EVOAB2)
13247 AC_SUBST(GOBJECT_CFLAGS)
13248 AC_SUBST(GOBJECT_LIBS)
13250 dnl ===================================================================
13251 dnl Test which themes to include
13252 dnl ===================================================================
13253 AC_MSG_CHECKING([which themes to include])
13254 # if none given use default subset of available themes
13255 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13256     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"
13259 WITH_THEMES=""
13260 if test "x$with_theme" != "xno"; then
13261     for theme in $with_theme; do
13262         case $theme in
13263         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) real_theme="$theme" ;;
13264         default) real_theme=colibre ;;
13265         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13266         esac
13267         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13268     done
13270 AC_MSG_RESULT([$WITH_THEMES])
13271 AC_SUBST([WITH_THEMES])
13272 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13273 for theme in $with_theme; do
13274     case $theme in
13275     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13276     *) ;;
13277     esac
13278 done
13280 ###############################################################################
13281 # Extensions checking
13282 ###############################################################################
13283 AC_MSG_CHECKING([for extensions integration])
13284 if test "x$enable_extension_integration" != "xno"; then
13285     WITH_EXTENSION_INTEGRATION=TRUE
13286     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13287     AC_MSG_RESULT([yes, use integration])
13288 else
13289     WITH_EXTENSION_INTEGRATION=
13290     AC_MSG_RESULT([no, do not integrate])
13292 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13294 dnl Should any extra extensions be included?
13295 dnl There are standalone tests for each of these below.
13296 WITH_EXTRA_EXTENSIONS=
13297 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13299 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13300 if test "x$with_java" != "xno"; then
13301     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13304 AC_MSG_CHECKING([whether to build opens___.ttf])
13305 if test "$enable_build_opensymbol" = "yes"; then
13306     AC_MSG_RESULT([yes])
13307     AC_PATH_PROG(FONTFORGE, fontforge)
13308     if test -z "$FONTFORGE"; then
13309         AC_MSG_ERROR([fontforge not installed])
13310     fi
13311 else
13312     AC_MSG_RESULT([no])
13313     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13315 AC_SUBST(FONTFORGE)
13317 dnl ===================================================================
13318 dnl Test whether to include fonts
13319 dnl ===================================================================
13320 AC_MSG_CHECKING([whether to include third-party fonts])
13321 if test "$with_fonts" != "no"; then
13322     AC_MSG_RESULT([yes])
13323     WITH_FONTS=TRUE
13324     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13325     AC_DEFINE(HAVE_MORE_FONTS)
13326 else
13327     AC_MSG_RESULT([no])
13328     WITH_FONTS=
13329     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13331 AC_SUBST(WITH_FONTS)
13334 dnl ===================================================================
13335 dnl Test whether to enable online update service
13336 dnl ===================================================================
13337 AC_MSG_CHECKING([whether to enable online update])
13338 ENABLE_ONLINE_UPDATE=
13339 ENABLE_ONLINE_UPDATE_MAR=
13340 UPDATE_CONFIG=
13341 if test "$enable_online_update" = ""; then
13342     AC_MSG_RESULT([no])
13343 else
13344     if test "$enable_online_update" = "mar"; then
13345         AC_MSG_RESULT([yes - MAR-based online update])
13346         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13347         if test "$with_update_config" = ""; then
13348             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13349         fi
13350         UPDATE_CONFIG="$with_update_config"
13351         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13352     elif test "$enable_online_update" = "yes"; then
13353         AC_MSG_RESULT([yes])
13354         ENABLE_ONLINE_UPDATE="TRUE"
13355     else
13356         AC_MSG_RESULT([no])
13357     fi
13359 AC_SUBST(ENABLE_ONLINE_UPDATE)
13360 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13361 AC_SUBST(UPDATE_CONFIG)
13364 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13365 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13366     if test "x$with_privacy_policy_url" = "xundefined"; then
13367         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13368     fi
13370 AC_SUBST(PRIVACY_POLICY_URL)
13371 dnl ===================================================================
13372 dnl Test whether we need bzip2
13373 dnl ===================================================================
13374 SYSTEM_BZIP2=
13375 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13376     AC_MSG_CHECKING([whether to use system bzip2])
13377     if test "$with_system_bzip2" = yes; then
13378         SYSTEM_BZIP2=TRUE
13379         AC_MSG_RESULT([yes])
13380         PKG_CHECK_MODULES(BZIP2, bzip2)
13381         FilterLibs "${BZIP2_LIBS}"
13382         BZIP2_LIBS="${filteredlibs}"
13383     else
13384         AC_MSG_RESULT([no])
13385         BUILD_TYPE="$BUILD_TYPE BZIP2"
13386     fi
13388 AC_SUBST(SYSTEM_BZIP2)
13389 AC_SUBST(BZIP2_CFLAGS)
13390 AC_SUBST(BZIP2_LIBS)
13392 dnl ===================================================================
13393 dnl Test whether to enable extension update
13394 dnl ===================================================================
13395 AC_MSG_CHECKING([whether to enable extension update])
13396 ENABLE_EXTENSION_UPDATE=
13397 if test "x$enable_extension_update" = "xno"; then
13398     AC_MSG_RESULT([no])
13399 else
13400     AC_MSG_RESULT([yes])
13401     ENABLE_EXTENSION_UPDATE="TRUE"
13402     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13403     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13405 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13408 dnl ===================================================================
13409 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13410 dnl ===================================================================
13411 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13412 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13413     AC_MSG_RESULT([no])
13414     ENABLE_SILENT_MSI=
13415 else
13416     AC_MSG_RESULT([yes])
13417     ENABLE_SILENT_MSI=TRUE
13418     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13420 AC_SUBST(ENABLE_SILENT_MSI)
13422 AC_MSG_CHECKING([whether and how to use Xinerama])
13423 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13424     if test "$x_libraries" = "default_x_libraries"; then
13425         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13426         if test "x$XINERAMALIB" = x; then
13427            XINERAMALIB="/usr/lib"
13428         fi
13429     else
13430         XINERAMALIB="$x_libraries"
13431     fi
13432     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13433         # we have both versions, let the user decide but use the dynamic one
13434         # per default
13435         USE_XINERAMA=TRUE
13436         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13437             XINERAMA_LINK=dynamic
13438         else
13439             XINERAMA_LINK=static
13440         fi
13441     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13442         # we have only the dynamic version
13443         USE_XINERAMA=TRUE
13444         XINERAMA_LINK=dynamic
13445     elif test -e "$XINERAMALIB/libXinerama.a"; then
13446         # static version
13447         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13448             USE_XINERAMA=TRUE
13449             XINERAMA_LINK=static
13450         else
13451             USE_XINERAMA=
13452             XINERAMA_LINK=none
13453         fi
13454     else
13455         # no Xinerama
13456         USE_XINERAMA=
13457         XINERAMA_LINK=none
13458     fi
13459     if test "$USE_XINERAMA" = "TRUE"; then
13460         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13461         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13462             [AC_MSG_ERROR(Xinerama header not found.)], [])
13463         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13464         if test "x$XEXTLIB" = x; then
13465            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13466         fi
13467         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13468         if test "$_os" = "FreeBSD"; then
13469             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13470         fi
13471         if test "$_os" = "Linux"; then
13472             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13473         fi
13474         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13475             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13476     else
13477         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13478     fi
13479 else
13480     USE_XINERAMA=
13481     XINERAMA_LINK=none
13482     AC_MSG_RESULT([no])
13484 AC_SUBST(USE_XINERAMA)
13485 AC_SUBST(XINERAMA_LINK)
13487 dnl ===================================================================
13488 dnl Test whether to build cairo or rely on the system version
13489 dnl ===================================================================
13491 if test "$test_cairo" = "yes"; then
13492     AC_MSG_CHECKING([whether to use the system cairo])
13494     : ${with_system_cairo:=$with_system_libs}
13495     if test "$with_system_cairo" = "yes"; then
13496         SYSTEM_CAIRO=TRUE
13497         AC_MSG_RESULT([yes])
13499         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13500         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13501         FilterLibs "${CAIRO_LIBS}"
13502         CAIRO_LIBS="${filteredlibs}"
13504         if test "$test_xrender" = "yes"; then
13505             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13506             AC_LANG_PUSH([C])
13507             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13508 #ifdef PictStandardA8
13509 #else
13510       return fail;
13511 #endif
13512 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13514             AC_LANG_POP([C])
13515         fi
13516     else
13517         AC_MSG_RESULT([no])
13518         BUILD_TYPE="$BUILD_TYPE CAIRO"
13519     fi
13521     if test "$enable_cairo_canvas" != no; then
13522         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13523         ENABLE_CAIRO_CANVAS=TRUE
13524     fi
13527 AC_SUBST(CAIRO_CFLAGS)
13528 AC_SUBST(CAIRO_LIBS)
13529 AC_SUBST(ENABLE_CAIRO_CANVAS)
13530 AC_SUBST(SYSTEM_CAIRO)
13532 dnl ===================================================================
13533 dnl Test whether to use avahi
13534 dnl ===================================================================
13535 if test "$_os" = "WINNT"; then
13536     # Windows uses bundled mDNSResponder
13537     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13538 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13539     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13540                       [ENABLE_AVAHI="TRUE"])
13541     AC_DEFINE(HAVE_FEATURE_AVAHI)
13542     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13543     FilterLibs "${AVAHI_LIBS}"
13544     AVAHI_LIBS="${filteredlibs}"
13547 AC_SUBST(ENABLE_AVAHI)
13548 AC_SUBST(AVAHI_CFLAGS)
13549 AC_SUBST(AVAHI_LIBS)
13551 dnl ===================================================================
13552 dnl Test whether to use liblangtag
13553 dnl ===================================================================
13554 SYSTEM_LIBLANGTAG=
13555 AC_MSG_CHECKING([whether to use system liblangtag])
13556 if test "$with_system_liblangtag" = yes; then
13557     SYSTEM_LIBLANGTAG=TRUE
13558     AC_MSG_RESULT([yes])
13559     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13560     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13561     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13562     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13563     FilterLibs "${LIBLANGTAG_LIBS}"
13564     LIBLANGTAG_LIBS="${filteredlibs}"
13565 else
13566     SYSTEM_LIBLANGTAG=
13567     AC_MSG_RESULT([no])
13568     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13569     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13570     if test "$COM" = "MSC"; then
13571         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13572     else
13573         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13574     fi
13576 AC_SUBST(SYSTEM_LIBLANGTAG)
13577 AC_SUBST(LIBLANGTAG_CFLAGS)
13578 AC_SUBST(LIBLANGTAG_LIBS)
13580 dnl ===================================================================
13581 dnl Test whether to build libpng or rely on the system version
13582 dnl ===================================================================
13584 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13585 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13586 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13588 dnl ===================================================================
13589 dnl Test whether to build libtiff or rely on the system version
13590 dnl ===================================================================
13592 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13594 dnl ===================================================================
13595 dnl Test whether to build libwebp or rely on the system version
13596 dnl ===================================================================
13598 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13600 dnl ===================================================================
13601 dnl Check for runtime JVM search path
13602 dnl ===================================================================
13603 if test "$ENABLE_JAVA" != ""; then
13604     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13605     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13606         AC_MSG_RESULT([yes])
13607         if ! test -d "$with_jvm_path"; then
13608             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13609         fi
13610         if ! test -d "$with_jvm_path"jvm; then
13611             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13612         fi
13613         JVM_ONE_PATH_CHECK="$with_jvm_path"
13614         AC_SUBST(JVM_ONE_PATH_CHECK)
13615     else
13616         AC_MSG_RESULT([no])
13617     fi
13620 dnl ===================================================================
13621 dnl Test for the presence of Ant and that it works
13622 dnl ===================================================================
13624 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13625     ANT_HOME=; export ANT_HOME
13626     WITH_ANT_HOME=; export WITH_ANT_HOME
13627     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13628         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13629             if test "$_os" = "WINNT"; then
13630                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13631             else
13632                 with_ant_home="$LODE_HOME/opt/ant"
13633             fi
13634         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13635             with_ant_home="$LODE_HOME/opt/ant"
13636         fi
13637     fi
13638     if test -z "$with_ant_home"; then
13639         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13640     else
13641         if test "$_os" = "WINNT"; then
13642             # AC_PATH_PROGS needs unix path
13643             with_ant_home=`cygpath -u "$with_ant_home"`
13644         fi
13645         AbsolutePath "$with_ant_home"
13646         with_ant_home=$absolute_path
13647         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13648         WITH_ANT_HOME=$with_ant_home
13649         ANT_HOME=$with_ant_home
13650     fi
13652     if test -z "$ANT"; then
13653         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13654     else
13655         # resolve relative or absolute symlink
13656         while test -h "$ANT"; do
13657             a_cwd=`pwd`
13658             a_basename=`basename "$ANT"`
13659             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13660             cd "`dirname "$ANT"`"
13661             cd "`dirname "$a_script"`"
13662             ANT="`pwd`"/"`basename "$a_script"`"
13663             cd "$a_cwd"
13664         done
13666         AC_MSG_CHECKING([if $ANT works])
13667         mkdir -p conftest.dir
13668         a_cwd=$(pwd)
13669         cd conftest.dir
13670         cat > conftest.java << EOF
13671         public class conftest {
13672             int testmethod(int a, int b) {
13673                     return a + b;
13674             }
13675         }
13678         cat > conftest.xml << EOF
13679         <project name="conftest" default="conftest">
13680         <target name="conftest">
13681             <javac srcdir="." includes="conftest.java">
13682             </javac>
13683         </target>
13684         </project>
13687         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13688         if test $? = 0 -a -f ./conftest.class; then
13689             AC_MSG_RESULT([Ant works])
13690             if test -z "$WITH_ANT_HOME"; then
13691                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13692                 if test -z "$ANT_HOME"; then
13693                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13694                 fi
13695             else
13696                 ANT_HOME="$WITH_ANT_HOME"
13697             fi
13698         else
13699             echo "configure: Ant test failed" >&5
13700             cat conftest.java >&5
13701             cat conftest.xml >&5
13702             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13703         fi
13704         cd "$a_cwd"
13705         rm -fr conftest.dir
13706     fi
13707     if test -z "$ANT_HOME"; then
13708         ANT_HOME="NO_ANT_HOME"
13709     else
13710         PathFormat "$ANT_HOME"
13711         ANT_HOME="$formatted_path"
13712         PathFormat "$ANT"
13713         ANT="$formatted_path"
13714     fi
13716     dnl Checking for ant.jar
13717     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13718         AC_MSG_CHECKING([Ant lib directory])
13719         if test -f $ANT_HOME/lib/ant.jar; then
13720             ANT_LIB="$ANT_HOME/lib"
13721         else
13722             if test -f $ANT_HOME/ant.jar; then
13723                 ANT_LIB="$ANT_HOME"
13724             else
13725                 if test -f /usr/share/java/ant.jar; then
13726                     ANT_LIB=/usr/share/java
13727                 else
13728                     if test -f /usr/share/ant-core/lib/ant.jar; then
13729                         ANT_LIB=/usr/share/ant-core/lib
13730                     else
13731                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13732                             ANT_LIB="$ANT_HOME/lib/ant"
13733                         else
13734                             if test -f /usr/share/lib/ant/ant.jar; then
13735                                 ANT_LIB=/usr/share/lib/ant
13736                             else
13737                                 AC_MSG_ERROR([Ant libraries not found!])
13738                             fi
13739                         fi
13740                     fi
13741                 fi
13742             fi
13743         fi
13744         PathFormat "$ANT_LIB"
13745         ANT_LIB="$formatted_path"
13746         AC_MSG_RESULT([Ant lib directory found.])
13747     fi
13749     ant_minver=1.6.0
13750     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13752     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13753     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13754     ant_version_major=`echo $ant_version | cut -d. -f1`
13755     ant_version_minor=`echo $ant_version | cut -d. -f2`
13756     echo "configure: ant_version $ant_version " >&5
13757     echo "configure: ant_version_major $ant_version_major " >&5
13758     echo "configure: ant_version_minor $ant_version_minor " >&5
13759     if test "$ant_version_major" -ge "2"; then
13760         AC_MSG_RESULT([yes, $ant_version])
13761     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13762         AC_MSG_RESULT([yes, $ant_version])
13763     else
13764         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13765     fi
13767     rm -f conftest* core core.* *.core
13769 AC_SUBST(ANT)
13770 AC_SUBST(ANT_HOME)
13771 AC_SUBST(ANT_LIB)
13773 OOO_JUNIT_JAR=
13774 HAMCREST_JAR=
13775 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13776     AC_MSG_CHECKING([for JUnit 4])
13777     if test "$with_junit" = "yes"; then
13778         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13779             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13780         elif test -e /usr/share/java/junit4.jar; then
13781             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13782         else
13783            if test -e /usr/share/lib/java/junit.jar; then
13784               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13785            else
13786               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13787            fi
13788         fi
13789     else
13790         OOO_JUNIT_JAR=$with_junit
13791     fi
13792     if test "$_os" = "WINNT"; then
13793         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13794     fi
13795     printf 'import org.junit.Before;' > conftest.java
13796     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13797         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13798     else
13799         AC_MSG_ERROR(
13800 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13801  specify its pathname via --with-junit=..., or disable it via --without-junit])
13802     fi
13803     rm -f conftest.class conftest.java
13804     if test $OOO_JUNIT_JAR != ""; then
13805         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13806     fi
13808     AC_MSG_CHECKING([for included Hamcrest])
13809     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13810     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13811         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13812     else
13813         AC_MSG_RESULT([Not included])
13814         AC_MSG_CHECKING([for standalone hamcrest jar.])
13815         if test "$with_hamcrest" = "yes"; then
13816             if test -e /usr/share/lib/java/hamcrest.jar; then
13817                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13818             elif test -e /usr/share/java/hamcrest/core.jar; then
13819                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13820             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13821                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13822             else
13823                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13824             fi
13825         else
13826             HAMCREST_JAR=$with_hamcrest
13827         fi
13828         if test "$_os" = "WINNT"; then
13829             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13830         fi
13831         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13832             AC_MSG_RESULT([$HAMCREST_JAR])
13833         else
13834             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),
13835                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13836         fi
13837     fi
13838     rm -f conftest.class conftest.java
13840 AC_SUBST(OOO_JUNIT_JAR)
13841 AC_SUBST(HAMCREST_JAR)
13844 AC_SUBST(SCPDEFS)
13847 # check for wget and curl
13849 WGET=
13850 CURL=
13852 if test "$enable_fetch_external" != "no"; then
13854 CURL=`which curl 2>/dev/null`
13856 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13857     # wget new enough?
13858     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13859     if test $? -eq 0; then
13860         WGET=$i
13861         break
13862     fi
13863 done
13865 if test -z "$WGET" -a -z "$CURL"; then
13866     AC_MSG_ERROR([neither wget nor curl found!])
13871 AC_SUBST(WGET)
13872 AC_SUBST(CURL)
13875 # check for sha256sum
13877 SHA256SUM=
13879 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13880     eval "$i -a 256 --version" > /dev/null 2>&1
13881     ret=$?
13882     if test $ret -eq 0; then
13883         SHA256SUM="$i -a 256"
13884         break
13885     fi
13886 done
13888 if test -z "$SHA256SUM"; then
13889     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13890         eval "$i --version" > /dev/null 2>&1
13891         ret=$?
13892         if test $ret -eq 0; then
13893             SHA256SUM=$i
13894             break
13895         fi
13896     done
13899 if test -z "$SHA256SUM"; then
13900     AC_MSG_ERROR([no sha256sum found!])
13903 AC_SUBST(SHA256SUM)
13905 dnl ===================================================================
13906 dnl Dealing with l10n options
13907 dnl ===================================================================
13908 AC_MSG_CHECKING([which languages to be built])
13909 # get list of all languages
13910 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13911 # the sed command does the following:
13912 #   + if a line ends with a backslash, append the next line to it
13913 #   + adds " on the beginning of the value (after =)
13914 #   + adds " at the end of the value
13915 #   + removes en-US; we want to put it on the beginning
13916 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13917 [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)]
13918 ALL_LANGS="en-US $completelangiso"
13919 # check the configured localizations
13920 WITH_LANG="$with_lang"
13922 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13923 # (Norwegian is "nb" and "nn".)
13924 if test "$WITH_LANG" = "no"; then
13925     WITH_LANG=
13928 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13929     AC_MSG_RESULT([en-US])
13930 else
13931     AC_MSG_RESULT([$WITH_LANG])
13932     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13933     if test -z "$MSGFMT"; then
13934         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13935             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13936         elif test -x "/opt/lo/bin/msgfmt"; then
13937             MSGFMT="/opt/lo/bin/msgfmt"
13938         else
13939             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13940             if test -z "$MSGFMT"; then
13941                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13942             fi
13943         fi
13944     fi
13945     if test -z "$MSGUNIQ"; then
13946         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13947             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13948         elif test -x "/opt/lo/bin/msguniq"; then
13949             MSGUNIQ="/opt/lo/bin/msguniq"
13950         else
13951             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13952             if test -z "$MSGUNIQ"; then
13953                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13954             fi
13955         fi
13956     fi
13958 AC_SUBST(MSGFMT)
13959 AC_SUBST(MSGUNIQ)
13960 # check that the list is valid
13961 for lang in $WITH_LANG; do
13962     test "$lang" = "ALL" && continue
13963     # need to check for the exact string, so add space before and after the list of all languages
13964     for vl in $ALL_LANGS; do
13965         if test "$vl" = "$lang"; then
13966            break
13967         fi
13968     done
13969     if test "$vl" != "$lang"; then
13970         # if you're reading this - you prolly quoted your languages remove the quotes ...
13971         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13972     fi
13973 done
13974 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13975     echo $WITH_LANG | grep -q en-US
13976     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13978 # list with substituted ALL
13979 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13980 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13981 test "$WITH_LANG" = "en-US" && WITH_LANG=
13982 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13983     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13984     ALL_LANGS=`echo $ALL_LANGS qtz`
13986 AC_SUBST(ALL_LANGS)
13987 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13988 AC_SUBST(WITH_LANG)
13989 AC_SUBST(WITH_LANG_LIST)
13990 AC_SUBST(GIT_NEEDED_SUBMODULES)
13992 WITH_POOR_HELP_LOCALIZATIONS=
13993 if test -d "$SRC_ROOT/translations/source"; then
13994     for l in `ls -1 $SRC_ROOT/translations/source`; do
13995         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13996             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13997         fi
13998     done
14000 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14002 if test -n "$with_locales" -a "$with_locales" != ALL; then
14003     WITH_LOCALES="$with_locales"
14005     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14006     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14007     # config_host/config_locales.h.in
14008     for locale in $WITH_LOCALES; do
14009         lang=${locale%_*}
14011         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14013         case $lang in
14014         hi|mr*ne)
14015             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14016             ;;
14017         bg|ru)
14018             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14019             ;;
14020         esac
14021     done
14022 else
14023     AC_DEFINE(WITH_LOCALE_ALL)
14025 AC_SUBST(WITH_LOCALES)
14027 dnl git submodule update --reference
14028 dnl ===================================================================
14029 if test -n "${GIT_REFERENCE_SRC}"; then
14030     for repo in ${GIT_NEEDED_SUBMODULES}; do
14031         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14032             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14033         fi
14034     done
14036 AC_SUBST(GIT_REFERENCE_SRC)
14038 dnl git submodules linked dirs
14039 dnl ===================================================================
14040 if test -n "${GIT_LINK_SRC}"; then
14041     for repo in ${GIT_NEEDED_SUBMODULES}; do
14042         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14043             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14044         fi
14045     done
14047 AC_SUBST(GIT_LINK_SRC)
14049 dnl branding
14050 dnl ===================================================================
14051 AC_MSG_CHECKING([for alternative branding images directory])
14052 # initialize mapped arrays
14053 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14054 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14056 if test -z "$with_branding" -o "$with_branding" = "no"; then
14057     AC_MSG_RESULT([none])
14058     DEFAULT_BRAND_IMAGES="$brand_files"
14059 else
14060     if ! test -d $with_branding ; then
14061         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14062     else
14063         AC_MSG_RESULT([$with_branding])
14064         CUSTOM_BRAND_DIR="$with_branding"
14065         for lfile in $brand_files
14066         do
14067             if ! test -f $with_branding/$lfile ; then
14068                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14069                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14070             else
14071                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14072             fi
14073         done
14074         check_for_progress="yes"
14075     fi
14077 AC_SUBST([BRAND_INTRO_IMAGES])
14078 AC_SUBST([CUSTOM_BRAND_DIR])
14079 AC_SUBST([CUSTOM_BRAND_IMAGES])
14080 AC_SUBST([DEFAULT_BRAND_IMAGES])
14083 AC_MSG_CHECKING([for 'intro' progress settings])
14084 PROGRESSBARCOLOR=
14085 PROGRESSSIZE=
14086 PROGRESSPOSITION=
14087 PROGRESSFRAMECOLOR=
14088 PROGRESSTEXTCOLOR=
14089 PROGRESSTEXTBASELINE=
14091 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14092     source "$with_branding/progress.conf"
14093     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14094 else
14095     AC_MSG_RESULT([none])
14098 AC_SUBST(PROGRESSBARCOLOR)
14099 AC_SUBST(PROGRESSSIZE)
14100 AC_SUBST(PROGRESSPOSITION)
14101 AC_SUBST(PROGRESSFRAMECOLOR)
14102 AC_SUBST(PROGRESSTEXTCOLOR)
14103 AC_SUBST(PROGRESSTEXTBASELINE)
14106 dnl ===================================================================
14107 dnl Custom build version
14108 dnl ===================================================================
14109 AC_MSG_CHECKING([for extra build ID])
14110 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14111     EXTRA_BUILDID="$with_extra_buildid"
14113 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14114 if test -n "$EXTRA_BUILDID" ; then
14115     AC_MSG_RESULT([$EXTRA_BUILDID])
14116 else
14117     AC_MSG_RESULT([not set])
14119 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14121 OOO_VENDOR=
14122 AC_MSG_CHECKING([for vendor])
14123 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14124     OOO_VENDOR="$USERNAME"
14126     if test -z "$OOO_VENDOR"; then
14127         OOO_VENDOR="$USER"
14128     fi
14130     if test -z "$OOO_VENDOR"; then
14131         OOO_VENDOR="`id -u -n`"
14132     fi
14134     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14135 else
14136     OOO_VENDOR="$with_vendor"
14137     AC_MSG_RESULT([$OOO_VENDOR])
14139 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14140 AC_SUBST(OOO_VENDOR)
14142 if test "$_os" = "Android" ; then
14143     ANDROID_PACKAGE_NAME=
14144     AC_MSG_CHECKING([for Android package name])
14145     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14146         if test -n "$ENABLE_DEBUG"; then
14147             # Default to the package name that makes ndk-gdb happy.
14148             ANDROID_PACKAGE_NAME="org.libreoffice"
14149         else
14150             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14151         fi
14153         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14154     else
14155         ANDROID_PACKAGE_NAME="$with_android_package_name"
14156         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14157     fi
14158     AC_SUBST(ANDROID_PACKAGE_NAME)
14161 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14162 if test "$with_compat_oowrappers" = "yes"; then
14163     WITH_COMPAT_OOWRAPPERS=TRUE
14164     AC_MSG_RESULT(yes)
14165 else
14166     WITH_COMPAT_OOWRAPPERS=
14167     AC_MSG_RESULT(no)
14169 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14171 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14172 AC_MSG_CHECKING([for install dirname])
14173 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14174     INSTALLDIRNAME="$with_install_dirname"
14176 AC_MSG_RESULT([$INSTALLDIRNAME])
14177 AC_SUBST(INSTALLDIRNAME)
14179 AC_MSG_CHECKING([for prefix])
14180 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14181 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14182 PREFIXDIR="$prefix"
14183 AC_MSG_RESULT([$PREFIXDIR])
14184 AC_SUBST(PREFIXDIR)
14186 LIBDIR=[$(eval echo $(eval echo $libdir))]
14187 AC_SUBST(LIBDIR)
14189 DATADIR=[$(eval echo $(eval echo $datadir))]
14190 AC_SUBST(DATADIR)
14192 MANDIR=[$(eval echo $(eval echo $mandir))]
14193 AC_SUBST(MANDIR)
14195 DOCDIR=[$(eval echo $(eval echo $docdir))]
14196 AC_SUBST(DOCDIR)
14198 BINDIR=[$(eval echo $(eval echo $bindir))]
14199 AC_SUBST(BINDIR)
14201 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14202 AC_SUBST(INSTALLDIR)
14204 TESTINSTALLDIR="${BUILDDIR}/test-install"
14205 AC_SUBST(TESTINSTALLDIR)
14208 # ===================================================================
14209 # OAuth2 id and secrets
14210 # ===================================================================
14212 AC_MSG_CHECKING([for Google Drive client id and secret])
14213 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14214     AC_MSG_RESULT([not set])
14215     GDRIVE_CLIENT_ID="\"\""
14216     GDRIVE_CLIENT_SECRET="\"\""
14217 else
14218     AC_MSG_RESULT([set])
14219     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14220     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14222 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14223 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14225 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14226 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14227     AC_MSG_RESULT([not set])
14228     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14229     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14230 else
14231     AC_MSG_RESULT([set])
14232     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14233     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14235 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14236 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14238 AC_MSG_CHECKING([for OneDrive client id and secret])
14239 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14240     AC_MSG_RESULT([not set])
14241     ONEDRIVE_CLIENT_ID="\"\""
14242     ONEDRIVE_CLIENT_SECRET="\"\""
14243 else
14244     AC_MSG_RESULT([set])
14245     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14246     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14248 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14249 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14252 dnl ===================================================================
14253 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14254 dnl --enable-dependency-tracking configure option
14255 dnl ===================================================================
14256 AC_MSG_CHECKING([whether to enable dependency tracking])
14257 if test "$enable_dependency_tracking" = "no"; then
14258     nodep=TRUE
14259     AC_MSG_RESULT([no])
14260 else
14261     AC_MSG_RESULT([yes])
14263 AC_SUBST(nodep)
14265 dnl ===================================================================
14266 dnl Number of CPUs to use during the build
14267 dnl ===================================================================
14268 AC_MSG_CHECKING([for number of processors to use])
14269 # plain --with-parallelism is just the default
14270 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14271     if test "$with_parallelism" = "no"; then
14272         PARALLELISM=0
14273     else
14274         PARALLELISM=$with_parallelism
14275     fi
14276 else
14277     if test "$enable_icecream" = "yes"; then
14278         PARALLELISM="40"
14279     else
14280         case `uname -s` in
14282         Darwin|FreeBSD|NetBSD|OpenBSD)
14283             PARALLELISM=`sysctl -n hw.ncpu`
14284             ;;
14286         Linux)
14287             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14288         ;;
14289         # what else than above does profit here *and* has /proc?
14290         *)
14291             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14292             ;;
14293         esac
14295         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14296         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14297     fi
14300 if test $PARALLELISM -eq 0; then
14301     AC_MSG_RESULT([explicit make -j option needed])
14302 else
14303     AC_MSG_RESULT([$PARALLELISM])
14305 AC_SUBST(PARALLELISM)
14308 # Set up ILIB for MSVC build
14310 ILIB1=
14311 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14312     ILIB="."
14313     if test -n "$JAVA_HOME"; then
14314         ILIB="$ILIB;$JAVA_HOME/lib"
14315     fi
14316     ILIB1=-link
14317     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14318     ILIB="$ILIB;$formatted_path"
14319     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14320     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14321     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14322     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14323         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14324         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14325     fi
14326     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14327     ucrtlibpath_formatted=$formatted_path
14328     ILIB="$ILIB;$ucrtlibpath_formatted"
14329     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14330     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14331         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14332         ILIB="$ILIB;$formatted_path"
14333     else
14334         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14335         ILIB="$ILIB;$formatted_path"
14336     fi
14338     if test "$cross_compiling" != "yes"; then
14339         ILIB_FOR_BUILD="$ILIB"
14340     fi
14342 AC_SUBST(ILIB)
14343 AC_SUBST(ILIB_FOR_BUILD)
14345 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14346 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14347 dnl from consteval constructor initializing const variable",
14348 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14349 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14350 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14351 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14352 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14353 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14354 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14355 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14356 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14357 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14358 AC_LANG_PUSH([C++])
14359 save_CXX=$CXX
14360 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14361     CXX="env LIB=$ILIB $CXX"
14363 save_CXXFLAGS=$CXXFLAGS
14364 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14365 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14366         struct S {
14367             consteval S() { i = 1; }
14368             int i = 0;
14369         };
14370         S const s;
14372         struct S1 { consteval S1(int) {} };
14373         struct S2 {
14374             S1 x;
14375             S2(): x(0) {}
14376         };
14378         struct S3 {
14379             consteval S3() {}
14380             union {
14381                 int a;
14382                 unsigned b = 0;
14383             };
14384         };
14385         void f() { S3(); }
14387         struct S4 { consteval S4() = default; };
14388         void f4(bool b) { b ? S4() : S4(); }
14390         struct S5 {
14391             consteval S5() { c = 0; }
14392             char * f() { return &c; }
14393             union {
14394                 char c;
14395                 int i;
14396             };
14397         };
14398         auto s5 = S5().f();
14399     ], [
14400         return (s.i == 1) ? 0 : 1;
14401     ])], [
14402         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14403         AC_MSG_RESULT([yes])
14404     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14405 CXX=$save_CXX
14406 CXXFLAGS=$save_CXXFLAGS
14407 AC_LANG_POP([C++])
14409 # ===================================================================
14410 # Creating bigger shared library to link against
14411 # ===================================================================
14412 AC_MSG_CHECKING([whether to create huge library])
14413 MERGELIBS=
14415 if test $_os = iOS -o $_os = Android; then
14416     # Never any point in mergelibs for these as we build just static
14417     # libraries anyway...
14418     enable_mergelibs=no
14421 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14422     if test $_os != Linux -a $_os != WINNT; then
14423         add_warning "--enable-mergelibs is not tested for this platform"
14424     fi
14425     MERGELIBS="TRUE"
14426     AC_MSG_RESULT([yes])
14427     AC_DEFINE(ENABLE_MERGELIBS)
14428 else
14429     AC_MSG_RESULT([no])
14431 AC_SUBST([MERGELIBS])
14433 dnl ===================================================================
14434 dnl icerun is a wrapper that stops us spawning tens of processes
14435 dnl locally - for tools that can't be executed on the compile cluster
14436 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14437 dnl ===================================================================
14438 AC_MSG_CHECKING([whether to use icerun wrapper])
14439 ICECREAM_RUN=
14440 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14441     ICECREAM_RUN=icerun
14442     AC_MSG_RESULT([yes])
14443 else
14444     AC_MSG_RESULT([no])
14446 AC_SUBST(ICECREAM_RUN)
14448 dnl ===================================================================
14449 dnl Setup the ICECC_VERSION for the build the same way it was set for
14450 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14451 dnl ===================================================================
14452 x_ICECC_VERSION=[\#]
14453 if test -n "$ICECC_VERSION" ; then
14454     x_ICECC_VERSION=
14456 AC_SUBST(x_ICECC_VERSION)
14457 AC_SUBST(ICECC_VERSION)
14459 dnl ===================================================================
14461 AC_MSG_CHECKING([MPL subset])
14462 MPL_SUBSET=
14464 if test "$enable_mpl_subset" = "yes"; then
14465     warn_report=false
14466     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14467         warn_report=true
14468     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14469         warn_report=true
14470     fi
14471     if test "$warn_report" = "true"; then
14472         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14473     fi
14474     if test "x$enable_postgresql_sdbc" != "xno"; then
14475         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14476     fi
14477     if test "$enable_lotuswordpro" = "yes"; then
14478         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14479     fi
14480     if test -n "$ENABLE_POPPLER"; then
14481         if test "x$SYSTEM_POPPLER" = "x"; then
14482             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14483         fi
14484     fi
14485     # cf. m4/libo_check_extension.m4
14486     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14487         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14488     fi
14489     for theme in $WITH_THEMES; do
14490         case $theme in
14491         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14492             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14493         *) : ;;
14494         esac
14495     done
14497     ENABLE_OPENGL_TRANSITIONS=
14499     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14500         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14501     fi
14503     MPL_SUBSET="TRUE"
14504     AC_DEFINE(MPL_HAVE_SUBSET)
14505     AC_MSG_RESULT([only])
14506 else
14507     AC_MSG_RESULT([no restrictions])
14509 AC_SUBST(MPL_SUBSET)
14511 dnl ===================================================================
14513 AC_MSG_CHECKING([formula logger])
14514 ENABLE_FORMULA_LOGGER=
14516 if test "x$enable_formula_logger" = "xyes"; then
14517     AC_MSG_RESULT([yes])
14518     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14519     ENABLE_FORMULA_LOGGER=TRUE
14520 elif test -n "$ENABLE_DBGUTIL" ; then
14521     AC_MSG_RESULT([yes])
14522     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14523     ENABLE_FORMULA_LOGGER=TRUE
14524 else
14525     AC_MSG_RESULT([no])
14528 AC_SUBST(ENABLE_FORMULA_LOGGER)
14530 dnl ===================================================================
14531 dnl Checking for active Antivirus software.
14532 dnl ===================================================================
14534 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14535     AC_MSG_CHECKING([for active Antivirus software])
14536     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14537     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14538     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14539         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14540             AC_MSG_RESULT([found])
14541             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14542             echo $EICAR_STRING > $SRC_ROOT/eicar
14543             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14544             rm $SRC_ROOT/eicar
14545             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14546                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14547             fi
14548             echo $EICAR_STRING > $BUILDDIR/eicar
14549             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14550             rm $BUILDDIR/eicar
14551             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14552                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14553             fi
14554             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"
14555         else
14556             AC_MSG_RESULT([not found])
14557         fi
14558     else
14559         AC_MSG_RESULT([n/a])
14560     fi
14563 dnl ===================================================================
14564 dnl Setting up the environment.
14565 dnl ===================================================================
14566 AC_MSG_NOTICE([setting up the build environment variables...])
14568 AC_SUBST(COMPATH)
14570 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14571     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14572         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14573         ATL_INCLUDE="$COMPATH/atlmfc/include"
14574     elif test -d "$COMPATH/atlmfc/lib"; then
14575         ATL_LIB="$COMPATH/atlmfc/lib"
14576         ATL_INCLUDE="$COMPATH/atlmfc/include"
14577     else
14578         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14579         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14580     fi
14581     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14582     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14583     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14586 if test "$build_os" = "cygwin"; then
14587     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14588     PathFormat "/usr/bin/find.exe"
14589     FIND="$formatted_path"
14590     PathFormat "/usr/bin/sort.exe"
14591     SORT="$formatted_path"
14592     PathFormat "/usr/bin/grep.exe"
14593     WIN_GREP="$formatted_path"
14594     PathFormat "/usr/bin/ls.exe"
14595     WIN_LS="$formatted_path"
14596     PathFormat "/usr/bin/touch.exe"
14597     WIN_TOUCH="$formatted_path"
14598 else
14599     FIND=find
14600     SORT=sort
14603 AC_SUBST(ATL_INCLUDE)
14604 AC_SUBST(ATL_LIB)
14605 AC_SUBST(FIND)
14606 AC_SUBST(SORT)
14607 AC_SUBST(WIN_GREP)
14608 AC_SUBST(WIN_LS)
14609 AC_SUBST(WIN_TOUCH)
14611 AC_SUBST(BUILD_TYPE)
14613 AC_SUBST(SOLARINC)
14615 PathFormat "$PERL"
14616 PERL="$formatted_path"
14617 AC_SUBST(PERL)
14619 if test -n "$TMPDIR"; then
14620     TEMP_DIRECTORY="$TMPDIR"
14621 else
14622     TEMP_DIRECTORY="/tmp"
14624 if test "$build_os" = "cygwin"; then
14625     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14627 AC_SUBST(TEMP_DIRECTORY)
14629 # setup the PATH for the environment
14630 if test -n "$LO_PATH_FOR_BUILD"; then
14631     LO_PATH="$LO_PATH_FOR_BUILD"
14632     case "$host_os" in
14633     cygwin*|wsl*)
14634         pathmunge "$MSVC_HOST_PATH" "before"
14635         ;;
14636     esac
14637 else
14638     LO_PATH="$PATH"
14640     case "$host_os" in
14642     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14643         if test "$ENABLE_JAVA" != ""; then
14644             pathmunge "$JAVA_HOME/bin" "after"
14645         fi
14646         ;;
14648     cygwin*|wsl*)
14649         # Win32 make needs native paths
14650         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14651             LO_PATH=`cygpath -p -m "$PATH"`
14652         fi
14653         if test "$WIN_BUILD_ARCH" = "x64"; then
14654             # needed for msi packaging
14655             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14656         fi
14657         # .NET 4.6 and higher don't have bin directory
14658         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14659             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14660         fi
14661         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14662         pathmunge "$CSC_PATH" "before"
14663         pathmunge "$MIDL_PATH" "before"
14664         pathmunge "$AL_PATH" "before"
14665         pathmunge "$MSVC_MULTI_PATH" "before"
14666         pathmunge "$MSVC_BUILD_PATH" "before"
14667         if test -n "$MSBUILD_PATH" ; then
14668             pathmunge "$MSBUILD_PATH" "before"
14669         fi
14670         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14671         if test "$ENABLE_JAVA" != ""; then
14672             if test -d "$JAVA_HOME/jre/bin/client"; then
14673                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14674             fi
14675             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14676                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14677             fi
14678             pathmunge "$JAVA_HOME/bin" "before"
14679         fi
14680         pathmunge "$MSVC_HOST_PATH" "before"
14681         ;;
14683     solaris*)
14684         pathmunge "/usr/css/bin" "before"
14685         if test "$ENABLE_JAVA" != ""; then
14686             pathmunge "$JAVA_HOME/bin" "after"
14687         fi
14688         ;;
14689     esac
14692 AC_SUBST(LO_PATH)
14694 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14695 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14696     x_LO_ELFCHECK_ALLOWLIST=
14697 else
14698     x_LO_ELFCHECK_ALLOWLIST=[\#]
14700 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14701 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14703 libo_FUZZ_SUMMARY
14705 # Generate a configuration sha256 we can use for deps
14706 if test -f config_host.mk; then
14707     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14709 if test -f config_host_lang.mk; then
14710     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14713 CFLAGS=$my_original_CFLAGS
14714 CXXFLAGS=$my_original_CXXFLAGS
14715 CPPFLAGS=$my_original_CPPFLAGS
14717 AC_CONFIG_LINKS([include:include])
14719 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14720 # BUILD platform configuration] - otherwise breaks cross building
14721 AC_CONFIG_FILES([config_host.mk
14722                  config_host_lang.mk
14723                  Makefile
14724                  lo.xcent
14725                  bin/bffvalidator.sh
14726                  bin/odfvalidator.sh
14727                  bin/officeotron.sh
14728                  hardened_runtime.xcent
14729                  instsetoo_native/util/openoffice.lst
14730                  sysui/desktop/macosx/Info.plist
14731                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14733 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14734 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14735 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14736 AC_CONFIG_HEADERS([config_host/config_clang.h])
14737 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14738 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14739 AC_CONFIG_HEADERS([config_host/config_eot.h])
14740 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14741 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14742 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14743 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14744 AC_CONFIG_HEADERS([config_host/config_features.h])
14745 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14746 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14747 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14748 AC_CONFIG_HEADERS([config_host/config_folders.h])
14749 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14750 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14751 AC_CONFIG_HEADERS([config_host/config_gio.h])
14752 AC_CONFIG_HEADERS([config_host/config_global.h])
14753 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14754 AC_CONFIG_HEADERS([config_host/config_java.h])
14755 AC_CONFIG_HEADERS([config_host/config_langs.h])
14756 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14757 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14758 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14759 AC_CONFIG_HEADERS([config_host/config_locales.h])
14760 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14761 AC_CONFIG_HEADERS([config_host/config_oox.h])
14762 AC_CONFIG_HEADERS([config_host/config_options.h])
14763 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14764 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14765 AC_CONFIG_HEADERS([config_host/config_skia.h])
14766 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14767 AC_CONFIG_HEADERS([config_host/config_validation.h])
14768 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14769 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14770 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14771 AC_CONFIG_HEADERS([config_host/config_version.h])
14772 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14773 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14774 AC_CONFIG_HEADERS([config_host/config_python.h])
14775 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14776 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14777 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14778 AC_OUTPUT
14780 if test "$CROSS_COMPILING" = TRUE; then
14781     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14784 # touch the config timestamp file
14785 if test ! -f config_host.mk.stamp; then
14786     echo > config_host.mk.stamp
14787 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14788     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14789 else
14790     echo > config_host.mk.stamp
14793 # touch the config lang timestamp file
14794 if test ! -f config_host_lang.mk.stamp; then
14795     echo > config_host_lang.mk.stamp
14796 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14797     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14798 else
14799     echo > config_host_lang.mk.stamp
14803 if test \( "$STALE_MAKE" = "TRUE" \) \
14804         -a "$build_os" = "cygwin"; then
14806 cat << _EOS
14807 ****************************************************************************
14808 WARNING:
14809 Your make version is known to be horribly slow, and hard to debug
14810 problems with. To get a reasonably functional make please do:
14812 to install a pre-compiled binary make for Win32
14814  mkdir -p /opt/lo/bin
14815  cd /opt/lo/bin
14816  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14817  cp make-4.2.1-msvc.exe make
14818  chmod +x make
14820 to install from source:
14821 place yourself in a working directory of you choice.
14823  git clone git://git.savannah.gnu.org/make.git
14825  [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"]
14826  set PATH=%PATH%;C:\Cygwin\bin
14827  [or Cygwin64, if that is what you have]
14828  cd path-to-make-repo-you-cloned-above
14829  build_w32.bat --without-guile
14831 should result in a WinRel/gnumake.exe.
14832 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14834 Then re-run autogen.sh
14836 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14837 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14839 _EOS
14843 cat << _EOF
14844 ****************************************************************************
14846 To show information on various make targets and make flags, run:
14847 $GNUMAKE help
14849 To just build, run:
14850 $GNUMAKE
14852 _EOF
14854 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14855     cat << _EOF
14856 After the build has finished successfully, you can immediately run what you built using the command:
14857 _EOF
14859     if test $_os = Darwin; then
14860         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14861     else
14862         echo instdir/program/soffice
14863     fi
14864     cat << _EOF
14866 If you want to run the unit tests, run:
14867 $GNUMAKE check
14869 _EOF
14872 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14873     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14874     cat "$WARNINGS_FILE_FOR_BUILD"
14875     echo
14878 if test -s "$WARNINGS_FILE"; then
14879     echo "HOST config ($WARNINGS_FILE)"
14880     cat "$WARNINGS_FILE"
14883 # Remove unneeded emconfigure artifacts
14884 rm -f a.out a.wasm a.out.js a.out.wasm
14886 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: