tdf#156437: Fix missing name inside embedded Type 1 font in PDF
[LibreOffice.git] / configure.ac
blobb399b34ff23bae958a94d497f50510f769e5e605
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.1.0+],[],[],[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(wix,
1897     AS_HELP_STRING([--enable-wix],
1898         [Build Windows installer using WiX.]),
1901 AC_ARG_ENABLE(macosx-code-signing,
1902     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1903         [Sign executables, dylibs, frameworks and the app bundle. If you
1904          don't provide an identity the first suitable certificate
1905          in your keychain is used.]),
1908 AC_ARG_ENABLE(macosx-package-signing,
1909     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1910         [Create a .pkg suitable for uploading to the Mac App Store and sign
1911          it. If you don't provide an identity the first suitable certificate
1912          in your keychain is used.]),
1915 AC_ARG_ENABLE(macosx-sandbox,
1916     AS_HELP_STRING([--enable-macosx-sandbox],
1917         [Make the app bundle run in a sandbox. Requires code signing.
1918          Is required by apps distributed in the Mac App Store, and implies
1919          adherence to App Store rules.]),
1922 AC_ARG_WITH(macosx-bundle-identifier,
1923     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1924         [Define the macOS bundle identifier. Default is the somewhat weird
1925          org.libreoffice.script ("script", huh?).]),
1926 ,with_macosx_bundle_identifier=org.libreoffice.script)
1928 AC_ARG_WITH(macosx-provisioning-profile,
1929     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1930         [Specify the path to a provisioning profile to use]),
1933 AC_ARG_WITH(product-name,
1934     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1935         [Define the product name. Default is AC_PACKAGE_NAME.]),
1936 ,with_product_name=$PRODUCTNAME)
1938 libo_FUZZ_ARG_ENABLE(community-flavor,
1939     AS_HELP_STRING([--disable-community-flavor],
1940         [Disable the Community branding.]),
1943 AC_ARG_WITH(package-version,
1944     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1945         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1948 libo_FUZZ_ARG_ENABLE(readonly-installset,
1949     AS_HELP_STRING([--enable-readonly-installset],
1950         [Prevents any attempts by LibreOffice to write into its installation. That means
1951          at least that no "system-wide" extensions can be added. Partly experimental work in
1952          progress, probably not fully implemented. Always enabled for macOS.]),
1955 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1956     AS_HELP_STRING([--disable-mariadb-sdbc],
1957         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1960 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1961     AS_HELP_STRING([--disable-postgresql-sdbc],
1962         [Disable the build of the PostgreSQL-SDBC driver.])
1965 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1966     AS_HELP_STRING([--disable-lotuswordpro],
1967         [Disable the build of the Lotus Word Pro filter.]),
1968 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1970 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1971     AS_HELP_STRING([--disable-firebird-sdbc],
1972         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1973 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1975 AC_ARG_ENABLE(bogus-pkg-config,
1976     AS_HELP_STRING([--enable-bogus-pkg-config],
1977         [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.]),
1980 AC_ARG_ENABLE(openssl,
1981     AS_HELP_STRING([--disable-openssl],
1982         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1983          components will use NSS. Work in progress,
1984          use only if you are hacking on it.]),
1985 ,enable_openssl=yes)
1987 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1988     AS_HELP_STRING([--enable-cipher-openssl-backend],
1989         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1990          Requires --enable-openssl.]))
1992 AC_ARG_ENABLE(nss,
1993     AS_HELP_STRING([--disable-nss],
1994         [Disable using NSS. If disabled,
1995          components will use openssl. Work in progress,
1996          use only if you are hacking on it.]),
1997 ,enable_nss=yes)
1999 AC_ARG_ENABLE(library-bin-tar,
2000     AS_HELP_STRING([--enable-library-bin-tar],
2001         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2002         Some libraries can save their build result in a tarball
2003         stored in TARFILE_LOCATION. That binary tarball is
2004         uniquely identified by the source tarball,
2005         the content of the config_host.mk file and the content
2006         of the top-level directory in core for that library
2007         If this option is enabled, then if such a tarfile exist, it will be untarred
2008         instead of the source tarfile, and the build step will be skipped for that
2009         library.
2010         If a proper tarfile does not exist, then the normal source-based
2011         build is done for that library and a proper binary tarfile is created
2012         for the next time.]),
2015 AC_ARG_ENABLE(dconf,
2016     AS_HELP_STRING([--disable-dconf],
2017         [Disable the dconf configuration backend (enabled by default where
2018          available).]))
2020 libo_FUZZ_ARG_ENABLE(formula-logger,
2021     AS_HELP_STRING(
2022         [--enable-formula-logger],
2023         [Enable formula logger for logging formula calculation flow in Calc.]
2024     )
2027 AC_ARG_ENABLE(ldap,
2028     AS_HELP_STRING([--disable-ldap],
2029         [Disable LDAP support.]),
2030 ,enable_ldap=yes)
2032 AC_ARG_ENABLE(opencl,
2033     AS_HELP_STRING([--disable-opencl],
2034         [Disable OpenCL support.]),
2035 ,enable_opencl=yes)
2037 libo_FUZZ_ARG_ENABLE(librelogo,
2038     AS_HELP_STRING([--disable-librelogo],
2039         [Do not build LibreLogo.]),
2040 ,enable_librelogo=yes)
2042 AC_ARG_ENABLE(wasm-strip,
2043     AS_HELP_STRING([--enable-wasm-strip],
2044         [Strip the static build like for WASM/emscripten platform.]),
2047 AC_ARG_WITH(main-module,
2048     AS_HELP_STRING([--with-main-module=<writer/calc>],
2049         [Specify which main module to build for wasm.
2050         Default value is 'writer'.]),
2053 AC_ARG_ENABLE(wasm-exceptions,
2054     AS_HELP_STRING([--enable-wasm-exceptions],
2055         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2056         matter of fact, this is currently not finished by any implementation)
2057         (see https://webassembly.org/roadmap/ for the current state]),
2060 AC_ARG_ENABLE(xmlhelp,
2061     AS_HELP_STRING([--disable-xmlhelp],
2062         [Disable XML help support]),
2063 ,enable_xmlhelp=yes)
2065 AC_ARG_ENABLE(customtarget-components,
2066     AS_HELP_STRING([--enable-customtarget-components],
2067         [Generates the static UNO object constructor mapping from the build.]))
2069 AC_ARG_ENABLE(float_device_pixel,
2070     AS_HELP_STRING([--enable-float-device-pixel],
2071                    [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2074 dnl ===================================================================
2075 dnl Optional Packages (--with/without-)
2076 dnl ===================================================================
2078 AC_ARG_WITH(gcc-home,
2079     AS_HELP_STRING([--with-gcc-home],
2080         [Specify the location of gcc/g++ manually. This can be used in conjunction
2081          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2082          non-default path.]),
2085 AC_ARG_WITH(gnu-patch,
2086     AS_HELP_STRING([--with-gnu-patch],
2087         [Specify location of GNU patch on Solaris or FreeBSD.]),
2090 AC_ARG_WITH(build-platform-configure-options,
2091     AS_HELP_STRING([--with-build-platform-configure-options],
2092         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2095 AC_ARG_WITH(gnu-cp,
2096     AS_HELP_STRING([--with-gnu-cp],
2097         [Specify location of GNU cp on Solaris or FreeBSD.]),
2100 AC_ARG_WITH(external-tar,
2101     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2102         [Specify an absolute path of where to find (and store) tarfiles.]),
2103     TARFILE_LOCATION=$withval ,
2106 AC_ARG_WITH(referenced-git,
2107     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2108         [Specify another checkout directory to reference. This makes use of
2109                  git submodule update --reference, and saves a lot of diskspace
2110                  when having multiple trees side-by-side.]),
2111     GIT_REFERENCE_SRC=$withval ,
2114 AC_ARG_WITH(linked-git,
2115     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2116         [Specify a directory where the repositories of submodules are located.
2117          This uses a method similar to git-new-workdir to get submodules.]),
2118     GIT_LINK_SRC=$withval ,
2121 AC_ARG_WITH(galleries,
2122     AS_HELP_STRING([--with-galleries],
2123         [Specify how galleries should be built. It is possible either to
2124          build these internally from source ("build"),
2125          or to disable them ("no")]),
2128 AC_ARG_WITH(theme,
2129     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2130         [Choose which themes to include. By default those themes with an '*' are included.
2131          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2132          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2133          *elementary, *elementary_svg,
2134          *karasa_jaga, *karasa_jaga_svg,
2135          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2136          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2139 libo_FUZZ_ARG_WITH(helppack-integration,
2140     AS_HELP_STRING([--without-helppack-integration],
2141         [It will not integrate the helppacks to the installer
2142          of the product. Please use this switch to use the online help
2143          or separate help packages.]),
2146 libo_FUZZ_ARG_WITH(fonts,
2147     AS_HELP_STRING([--without-fonts],
2148         [LibreOffice includes some third-party fonts to provide a reliable basis for
2149          help content, templates, samples, etc. When these fonts are already
2150          known to be available on the system then you should use this option.]),
2153 AC_ARG_WITH(epm,
2154     AS_HELP_STRING([--with-epm],
2155         [Decides which epm to use. Default is to use the one from the system if
2156          one is built. When either this is not there or you say =internal epm
2157          will be built.]),
2160 AC_ARG_WITH(package-format,
2161     AS_HELP_STRING([--with-package-format],
2162         [Specify package format(s) for LibreOffice installation sets. The
2163          implicit --without-package-format leads to no installation sets being
2164          generated. Possible values: archive, bsd, deb, dmg,
2165          installed, msi, pkg, and rpm.
2166          Example: --with-package-format='deb rpm']),
2169 AC_ARG_WITH(tls,
2170     AS_HELP_STRING([--with-tls],
2171         [Decides which TLS/SSL and cryptographic implementations to use for
2172          LibreOffice's code. Default is to use NSS although OpenSSL is also
2173          possible. Notice that selecting NSS restricts the usage of OpenSSL
2174          in LO's code but selecting OpenSSL doesn't restrict by now the
2175          usage of NSS in LO's code. Possible values: openssl, nss.
2176          Example: --with-tls="nss"]),
2179 AC_ARG_WITH(system-libs,
2180     AS_HELP_STRING([--with-system-libs],
2181         [Use libraries already on system -- enables all --with-system-* flags.]),
2184 AC_ARG_WITH(system-bzip2,
2185     AS_HELP_STRING([--with-system-bzip2],
2186         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2187     [with_system_bzip2="$with_system_libs"])
2189 AC_ARG_WITH(system-headers,
2190     AS_HELP_STRING([--with-system-headers],
2191         [Use headers already on system -- enables all --with-system-* flags for
2192          external packages whose headers are the only entities used i.e.
2193          boost/odbc/sane-header(s).]),,
2194     [with_system_headers="$with_system_libs"])
2196 AC_ARG_WITH(system-jars,
2197     AS_HELP_STRING([--without-system-jars],
2198         [When building with --with-system-libs, also the needed jars are expected
2199          on the system. Use this to disable that]),,
2200     [with_system_jars="$with_system_libs"])
2202 AC_ARG_WITH(system-cairo,
2203     AS_HELP_STRING([--with-system-cairo],
2204         [Use cairo libraries already on system.  Happens automatically for
2205          (implicit) --enable-gtk3.]))
2207 AC_ARG_WITH(system-epoxy,
2208     AS_HELP_STRING([--with-system-epoxy],
2209         [Use epoxy libraries already on system.  Happens automatically for
2210          (implicit) --enable-gtk3.]),,
2211        [with_system_epoxy="$with_system_libs"])
2213 AC_ARG_WITH(myspell-dicts,
2214     AS_HELP_STRING([--with-myspell-dicts],
2215         [Adds myspell dictionaries to the LibreOffice installation set]),
2218 AC_ARG_WITH(system-dicts,
2219     AS_HELP_STRING([--without-system-dicts],
2220         [Do not use dictionaries from system paths.]),
2223 AC_ARG_WITH(external-dict-dir,
2224     AS_HELP_STRING([--with-external-dict-dir],
2225         [Specify external dictionary dir.]),
2228 AC_ARG_WITH(external-hyph-dir,
2229     AS_HELP_STRING([--with-external-hyph-dir],
2230         [Specify external hyphenation pattern dir.]),
2233 AC_ARG_WITH(external-thes-dir,
2234     AS_HELP_STRING([--with-external-thes-dir],
2235         [Specify external thesaurus dir.]),
2238 AC_ARG_WITH(system-zlib,
2239     AS_HELP_STRING([--with-system-zlib],
2240         [Use zlib already on system.]),,
2241     [with_system_zlib=auto])
2243 AC_ARG_WITH(system-jpeg,
2244     AS_HELP_STRING([--with-system-jpeg],
2245         [Use jpeg already on system.]),,
2246     [with_system_jpeg="$with_system_libs"])
2248 AC_ARG_WITH(system-expat,
2249     AS_HELP_STRING([--with-system-expat],
2250         [Use expat already on system.]),,
2251     [with_system_expat="$with_system_libs"])
2253 AC_ARG_WITH(system-libxml,
2254     AS_HELP_STRING([--with-system-libxml],
2255         [Use libxml/libxslt already on system.]),,
2256     [with_system_libxml=auto])
2258 AC_ARG_WITH(system-openldap,
2259     AS_HELP_STRING([--with-system-openldap],
2260         [Use the OpenLDAP LDAP SDK already on system.]),,
2261     [with_system_openldap="$with_system_libs"])
2263 libo_FUZZ_ARG_ENABLE(poppler,
2264     AS_HELP_STRING([--disable-poppler],
2265         [Disable building Poppler.])
2268 AC_ARG_WITH(system-poppler,
2269     AS_HELP_STRING([--with-system-poppler],
2270         [Use system poppler (only needed for PDF import).]),,
2271     [with_system_poppler="$with_system_libs"])
2273 AC_ARG_WITH(system-abseil,
2274     AS_HELP_STRING([--with-system-abseil],
2275         [Use the abseil libraries already on system.]),,
2276     [with_system_abseil="$with_system_libs"])
2278 AC_ARG_WITH(system-openjpeg,
2279     AS_HELP_STRING([--with-system-openjpeg],
2280         [Use the OpenJPEG library already on system.]),,
2281     [with_system_openjpeg="$with_system_libs"])
2283 libo_FUZZ_ARG_ENABLE(gpgmepp,
2284     AS_HELP_STRING([--disable-gpgmepp],
2285         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2288 AC_ARG_WITH(system-gpgmepp,
2289     AS_HELP_STRING([--with-system-gpgmepp],
2290         [Use gpgmepp already on system]),,
2291     [with_system_gpgmepp="$with_system_libs"])
2293 AC_ARG_WITH(system-mariadb,
2294     AS_HELP_STRING([--with-system-mariadb],
2295         [Use MariaDB/MySQL libraries already on system.]),,
2296     [with_system_mariadb="$with_system_libs"])
2298 AC_ARG_ENABLE(bundle-mariadb,
2299     AS_HELP_STRING([--enable-bundle-mariadb],
2300         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2303 AC_ARG_WITH(system-postgresql,
2304     AS_HELP_STRING([--with-system-postgresql],
2305         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2306          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2307     [with_system_postgresql="$with_system_libs"])
2309 AC_ARG_WITH(libpq-path,
2310     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2311         [Use this PostgreSQL C interface (libpq) installation for building
2312          the PostgreSQL-SDBC extension.]),
2315 AC_ARG_WITH(system-firebird,
2316     AS_HELP_STRING([--with-system-firebird],
2317         [Use Firebird libraries already on system, for building the Firebird-SDBC
2318          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2319     [with_system_firebird="$with_system_libs"])
2321 AC_ARG_WITH(system-libtommath,
2322             AS_HELP_STRING([--with-system-libtommath],
2323                            [Use libtommath already on system]),,
2324             [with_system_libtommath="$with_system_libs"])
2326 AC_ARG_WITH(system-hsqldb,
2327     AS_HELP_STRING([--with-system-hsqldb],
2328         [Use hsqldb already on system.]))
2330 AC_ARG_WITH(hsqldb-jar,
2331     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2332         [Specify path to jarfile manually.]),
2333     HSQLDB_JAR=$withval)
2335 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2336     AS_HELP_STRING([--disable-scripting-beanshell],
2337         [Disable support for scripts in BeanShell.]),
2341 AC_ARG_WITH(system-beanshell,
2342     AS_HELP_STRING([--with-system-beanshell],
2343         [Use beanshell already on system.]),,
2344     [with_system_beanshell="$with_system_jars"])
2346 AC_ARG_WITH(beanshell-jar,
2347     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2348         [Specify path to jarfile manually.]),
2349     BSH_JAR=$withval)
2351 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2352     AS_HELP_STRING([--disable-scripting-javascript],
2353         [Disable support for scripts in JavaScript.]),
2357 AC_ARG_WITH(system-rhino,
2358     AS_HELP_STRING([--with-system-rhino],
2359         [Use rhino already on system.]),,)
2360 #    [with_system_rhino="$with_system_jars"])
2361 # Above is not used as we have different debug interface
2362 # patched into internal rhino. This code needs to be fixed
2363 # before we can enable it by default.
2365 AC_ARG_WITH(rhino-jar,
2366     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2367         [Specify path to jarfile manually.]),
2368     RHINO_JAR=$withval)
2370 AC_ARG_WITH(system-jfreereport,
2371     AS_HELP_STRING([--with-system-jfreereport],
2372         [Use JFreeReport already on system.]),,
2373     [with_system_jfreereport="$with_system_jars"])
2375 AC_ARG_WITH(sac-jar,
2376     AS_HELP_STRING([--with-sac-jar=JARFILE],
2377         [Specify path to jarfile manually.]),
2378     SAC_JAR=$withval)
2380 AC_ARG_WITH(libxml-jar,
2381     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2382         [Specify path to jarfile manually.]),
2383     LIBXML_JAR=$withval)
2385 AC_ARG_WITH(flute-jar,
2386     AS_HELP_STRING([--with-flute-jar=JARFILE],
2387         [Specify path to jarfile manually.]),
2388     FLUTE_JAR=$withval)
2390 AC_ARG_WITH(jfreereport-jar,
2391     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2392         [Specify path to jarfile manually.]),
2393     JFREEREPORT_JAR=$withval)
2395 AC_ARG_WITH(liblayout-jar,
2396     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2397         [Specify path to jarfile manually.]),
2398     LIBLAYOUT_JAR=$withval)
2400 AC_ARG_WITH(libloader-jar,
2401     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2402         [Specify path to jarfile manually.]),
2403     LIBLOADER_JAR=$withval)
2405 AC_ARG_WITH(libformula-jar,
2406     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2407         [Specify path to jarfile manually.]),
2408     LIBFORMULA_JAR=$withval)
2410 AC_ARG_WITH(librepository-jar,
2411     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2412         [Specify path to jarfile manually.]),
2413     LIBREPOSITORY_JAR=$withval)
2415 AC_ARG_WITH(libfonts-jar,
2416     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2417         [Specify path to jarfile manually.]),
2418     LIBFONTS_JAR=$withval)
2420 AC_ARG_WITH(libserializer-jar,
2421     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2422         [Specify path to jarfile manually.]),
2423     LIBSERIALIZER_JAR=$withval)
2425 AC_ARG_WITH(libbase-jar,
2426     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2427         [Specify path to jarfile manually.]),
2428     LIBBASE_JAR=$withval)
2430 AC_ARG_WITH(system-odbc,
2431     AS_HELP_STRING([--with-system-odbc],
2432         [Use the odbc headers already on system.]),,
2433     [with_system_odbc="auto"])
2435 AC_ARG_WITH(system-sane,
2436     AS_HELP_STRING([--with-system-sane],
2437         [Use sane.h already on system.]),,
2438     [with_system_sane="$with_system_headers"])
2440 AC_ARG_WITH(system-bluez,
2441     AS_HELP_STRING([--with-system-bluez],
2442         [Use bluetooth.h already on system.]),,
2443     [with_system_bluez="$with_system_headers"])
2445 AC_ARG_WITH(system-boost,
2446     AS_HELP_STRING([--with-system-boost],
2447         [Use boost already on system.]),,
2448     [with_system_boost="$with_system_headers"])
2450 AC_ARG_WITH(system-dragonbox,
2451     AS_HELP_STRING([--with-system-dragonbox],
2452         [Use dragonbox already on system.]),,
2453     [with_system_dragonbox="$with_system_headers"])
2455 AC_ARG_WITH(system-frozen,
2456     AS_HELP_STRING([--with-system-frozen],
2457         [Use frozen already on system.]),,
2458     [with_system_frozen="$with_system_headers"])
2460 AC_ARG_WITH(system-libfixmath,
2461     AS_HELP_STRING([--with-system-libfixmath],
2462         [Use libfixmath already on system.]),,
2463     [with_system_libfixmath="$with_system_libs"])
2465 AC_ARG_WITH(system-glm,
2466     AS_HELP_STRING([--with-system-glm],
2467         [Use glm already on system.]),,
2468     [with_system_glm="$with_system_headers"])
2470 AC_ARG_WITH(system-hunspell,
2471     AS_HELP_STRING([--with-system-hunspell],
2472         [Use libhunspell already on system.]),,
2473     [with_system_hunspell="$with_system_libs"])
2475 libo_FUZZ_ARG_ENABLE(zxing,
2476     AS_HELP_STRING([--disable-zxing],
2477        [Disable use of zxing external library.]))
2479 AC_ARG_WITH(system-zxing,
2480     AS_HELP_STRING([--with-system-zxing],
2481         [Use libzxing already on system.]),,
2482     [with_system_zxing="$with_system_libs"])
2484 AC_ARG_WITH(system-box2d,
2485     AS_HELP_STRING([--with-system-box2d],
2486         [Use box2d already on system.]),,
2487     [with_system_box2d="$with_system_libs"])
2489 AC_ARG_WITH(system-mythes,
2490     AS_HELP_STRING([--with-system-mythes],
2491         [Use mythes already on system.]),,
2492     [with_system_mythes="$with_system_libs"])
2494 AC_ARG_WITH(system-altlinuxhyph,
2495     AS_HELP_STRING([--with-system-altlinuxhyph],
2496         [Use ALTLinuxhyph already on system.]),,
2497     [with_system_altlinuxhyph="$with_system_libs"])
2499 AC_ARG_WITH(system-lpsolve,
2500     AS_HELP_STRING([--with-system-lpsolve],
2501         [Use lpsolve already on system.]),,
2502     [with_system_lpsolve="$with_system_libs"])
2504 AC_ARG_WITH(system-coinmp,
2505     AS_HELP_STRING([--with-system-coinmp],
2506         [Use CoinMP already on system.]),,
2507     [with_system_coinmp="$with_system_libs"])
2509 AC_ARG_WITH(system-liblangtag,
2510     AS_HELP_STRING([--with-system-liblangtag],
2511         [Use liblangtag library already on system.]),,
2512     [with_system_liblangtag="$with_system_libs"])
2514 AC_ARG_WITH(system-lockfile,
2515     AS_HELP_STRING([--with-system-lockfile[=file]],
2516         [Detect a system lockfile program or use the \$file argument.]))
2518 AC_ARG_WITH(webdav,
2519     AS_HELP_STRING([--without-webdav],
2520         [Disable WebDAV support in the UCB.]))
2522 AC_ARG_WITH(linker-hash-style,
2523     AS_HELP_STRING([--with-linker-hash-style],
2524         [Use linker with --hash-style=<style> when linking shared objects.
2525          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2526          if supported on the build system, and "sysv" otherwise.]))
2528 AC_ARG_WITH(jdk-home,
2529     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2530         [If you have installed JDK 9 or later on your system please supply the
2531          path here. Note that this is not the location of the java command but the
2532          location of the entire distribution. In case of cross-compiling, this
2533          is the JDK of the host os. Use --with-build-platform-configure-options
2534          to point to a different build platform JDK.]),
2537 AC_ARG_WITH(help,
2538     AS_HELP_STRING([--with-help],
2539         [Enable the build of help. There is a special parameter "common" that
2540          can be used to bundle only the common part, .e.g help-specific icons.
2541          This is useful when you build the helpcontent separately.])
2542     [
2543                           Usage:     --with-help    build the old local help
2544                                  --without-help     no local help (default)
2545                                  --with-help=html   build the new HTML local help
2546                                  --with-help=online build the new HTML online help
2547     ],
2550 AC_ARG_WITH(omindex,
2551    AS_HELP_STRING([--with-omindex],
2552         [Enable the support of xapian-omega index for online help.])
2553    [
2554                          Usage: --with-omindex=server prepare the pages for omindex
2555                                 but let xapian-omega be built in server.
2556                                 --with-omindex=noxap do not prepare online pages
2557                                 for xapian-omega
2558   ],
2561 libo_FUZZ_ARG_WITH(java,
2562     AS_HELP_STRING([--with-java=<java command>],
2563         [Specify the name of the Java interpreter command. Typically "java"
2564          which is the default.
2566          To build without support for Java components, applets, accessibility
2567          or the XML filters written in Java, use --without-java or --with-java=no.]),
2568     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2569     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2572 AC_ARG_WITH(jvm-path,
2573     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2574         [Use a specific JVM search path at runtime.
2575          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2578 AC_ARG_WITH(ant-home,
2579     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2580         [If you have installed Apache Ant on your system, please supply the path here.
2581          Note that this is not the location of the Ant binary but the location
2582          of the entire distribution.]),
2585 AC_ARG_WITH(symbol-config,
2586     AS_HELP_STRING([--with-symbol-config],
2587         [Configuration for the crashreport symbol upload]),
2588         [],
2589         [with_symbol_config=no])
2591 AC_ARG_WITH(export-validation,
2592     AS_HELP_STRING([--without-export-validation],
2593         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2594 ,with_export_validation=auto)
2596 AC_ARG_WITH(bffvalidator,
2597     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2598         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2599          Requires installed Microsoft Office Binary File Format Validator.
2600          Note: export-validation (--with-export-validation) is required to be turned on.
2601          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2602 ,with_bffvalidator=no)
2604 libo_FUZZ_ARG_WITH(junit,
2605     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2606         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2607          --without-junit disables those tests. Not relevant in the --without-java case.]),
2608 ,with_junit=yes)
2610 AC_ARG_WITH(hamcrest,
2611     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2612         [Specifies the hamcrest jar file to use for JUnit-based tests.
2613          --without-junit disables those tests. Not relevant in the --without-java case.]),
2614 ,with_hamcrest=yes)
2616 AC_ARG_WITH(perl-home,
2617     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2618         [If you have installed Perl 5 Distribution, on your system, please
2619          supply the path here. Note that this is not the location of the Perl
2620          binary but the location of the entire distribution.]),
2623 libo_FUZZ_ARG_WITH(doxygen,
2624     AS_HELP_STRING(
2625         [--with-doxygen=<absolute path to doxygen executable>],
2626         [Specifies the doxygen executable to use when generating ODK C/C++
2627          documentation. --without-doxygen disables generation of ODK C/C++
2628          documentation. Not relevant in the --disable-odk case.]),
2629 ,with_doxygen=yes)
2631 AC_ARG_WITH(visual-studio,
2632     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2633         [Specify which Visual Studio version to use in case several are
2634          installed. Currently 2019 (default) and 2022 are supported.]),
2637 AC_ARG_WITH(windows-sdk,
2638     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2639         [Specify which Windows SDK, or "Windows Kit", version to use
2640          in case the one that came with the selected Visual Studio
2641          is not what you want for some reason. Note that not all compiler/SDK
2642          combinations are supported. The intent is that this option should not
2643          be needed.]),
2646 AC_ARG_WITH(lang,
2647     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2648         [Use this option to build LibreOffice with additional UI language support.
2649          English (US) is always included by default.
2650          Separate multiple languages with space.
2651          For all languages, use --with-lang=ALL.]),
2654 AC_ARG_WITH(locales,
2655     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2656         [Use this option to limit the locale information built in.
2657          Separate multiple locales with space.
2658          Very experimental and might well break stuff.
2659          Just a desperate measure to shrink code and data size.
2660          By default all the locales available is included.
2661          Just works with --disable-dynloading. Defaults to "ALL".
2662          This option is completely unrelated to --with-lang.])
2663     [
2664                           Affects also our character encoding conversion
2665                           tables for encodings mainly targeted for a
2666                           particular locale, like EUC-CN and EUC-TW for
2667                           zh, ISO-2022-JP for ja.
2669                           Affects also our add-on break iterator data for
2670                           some languages.
2672                           For the default, all locales, don't use this switch at all.
2673                           Specifying just the language part of a locale means all matching
2674                           locales will be included.
2675     ],
2678 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2679 libo_FUZZ_ARG_WITH(krb5,
2680     AS_HELP_STRING([--with-krb5],
2681         [Enable MIT Kerberos 5 support in modules that support it.
2682          By default automatically enabled on platforms
2683          where a good system Kerberos 5 is available.]),
2686 libo_FUZZ_ARG_WITH(gssapi,
2687     AS_HELP_STRING([--with-gssapi],
2688         [Enable GSSAPI support in modules that support it.
2689          By default automatically enabled on platforms
2690          where a good system GSSAPI is available.]),
2693 libo_FUZZ_ARG_WITH(lxml,
2694     AS_HELP_STRING([--without-lxml],
2695         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2696          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2697          report widget classes and ids.]),
2700 libo_FUZZ_ARG_WITH(latest-c++,
2701     AS_HELP_STRING([--with-latest-c++],
2702         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2703          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2704         [with_latest_c__=no])
2706 AC_ARG_WITH(gtk3-build,
2707     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2708         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2709          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2711 dnl ===================================================================
2712 dnl Branding
2713 dnl ===================================================================
2715 AC_ARG_WITH(branding,
2716     AS_HELP_STRING([--with-branding=/path/to/images],
2717         [Use given path to retrieve branding images set.])
2718     [
2719                           Search for intro.png about.svg and logo.svg.
2720                           If any is missing, default ones will be used instead.
2722                           Search also progress.conf for progress
2723                           settings on intro screen :
2725                           PROGRESSBARCOLOR="255,255,255" Set color of
2726                           progress bar. Comma separated RGB decimal values.
2727                           PROGRESSSIZE="407,6" Set size of progress bar.
2728                           Comma separated decimal values (width, height).
2729                           PROGRESSPOSITION="61,317" Set position of progress
2730                           bar from left,top. Comma separated decimal values.
2731                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2732                           bar frame. Comma separated RGB decimal values.
2733                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2734                           bar text. Comma separated RGB decimal values.
2735                           PROGRESSTEXTBASELINE="287" Set vertical position of
2736                           progress bar text from top. Decimal value.
2738                           Default values will be used if not found.
2739     ],
2743 AC_ARG_WITH(extra-buildid,
2744     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2745         [Show addition build identification in about dialog.]),
2749 AC_ARG_WITH(vendor,
2750     AS_HELP_STRING([--with-vendor="John the Builder"],
2751         [Set vendor of the build.]),
2754 AC_ARG_WITH(privacy-policy-url,
2755     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2756         [The URL to your privacy policy (needed when
2757          enabling online-update or crashreporting via breakpad)]),
2758         [if test "x$with_privacy_policy_url" = "xyes"; then
2759             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2760          elif test "x$with_privacy_policy_url" = "xno"; then
2761             with_privacy_policy_url="undefined"
2762          fi]
2763 ,[with_privacy_policy_url="undefined"])
2765 AC_ARG_WITH(android-package-name,
2766     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2767         [Set Android package name of the build.]),
2770 AC_ARG_WITH(compat-oowrappers,
2771     AS_HELP_STRING([--with-compat-oowrappers],
2772         [Install oo* wrappers in parallel with
2773          lo* ones to keep backward compatibility.
2774          Has effect only with make distro-pack-install]),
2777 AC_ARG_WITH(os-version,
2778     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2779         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2782 AC_ARG_WITH(parallelism,
2783     AS_HELP_STRING([--with-parallelism],
2784         [Number of jobs to run simultaneously during build. Parallel builds can
2785         save a lot of time on multi-cpu machines. Defaults to the number of
2786         CPUs on the machine, unless you configure --enable-icecream - then to
2787         40.]),
2790 AC_ARG_WITH(all-tarballs,
2791     AS_HELP_STRING([--with-all-tarballs],
2792         [Download all external tarballs unconditionally]))
2794 AC_ARG_WITH(gdrive-client-id,
2795     AS_HELP_STRING([--with-gdrive-client-id],
2796         [Provides the client id of the application for OAuth2 authentication
2797         on Google Drive. If either this or --with-gdrive-client-secret is
2798         empty, the feature will be disabled]),
2801 AC_ARG_WITH(gdrive-client-secret,
2802     AS_HELP_STRING([--with-gdrive-client-secret],
2803         [Provides the client secret of the application for OAuth2
2804         authentication on Google Drive. If either this or
2805         --with-gdrive-client-id is empty, the feature will be disabled]),
2808 AC_ARG_WITH(alfresco-cloud-client-id,
2809     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2810         [Provides the client id of the application for OAuth2 authentication
2811         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2812         empty, the feature will be disabled]),
2815 AC_ARG_WITH(alfresco-cloud-client-secret,
2816     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2817         [Provides the client secret of the application for OAuth2
2818         authentication on Alfresco Cloud. If either this or
2819         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2822 AC_ARG_WITH(onedrive-client-id,
2823     AS_HELP_STRING([--with-onedrive-client-id],
2824         [Provides the client id of the application for OAuth2 authentication
2825         on OneDrive. If either this or --with-onedrive-client-secret is
2826         empty, the feature will be disabled]),
2829 AC_ARG_WITH(onedrive-client-secret,
2830     AS_HELP_STRING([--with-onedrive-client-secret],
2831         [Provides the client secret of the application for OAuth2
2832         authentication on OneDrive. If either this or
2833         --with-onedrive-client-id is empty, the feature will be disabled]),
2836 dnl Check for coredumpctl support to present information about crashing test processes:
2837 AC_ARG_WITH(coredumpctl,
2838     AS_HELP_STRING([--with-coredumpctl],
2839         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2840         processes.]))
2842 dnl ===================================================================
2843 dnl Do we want to use pre-build binary tarball for recompile
2844 dnl ===================================================================
2846 if test "$enable_library_bin_tar" = "yes" ; then
2847     USE_LIBRARY_BIN_TAR=TRUE
2848 else
2849     USE_LIBRARY_BIN_TAR=
2851 AC_SUBST(USE_LIBRARY_BIN_TAR)
2853 dnl ===================================================================
2854 dnl Test whether build target is Release Build
2855 dnl ===================================================================
2856 AC_MSG_CHECKING([whether build target is Release Build])
2857 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2858     AC_MSG_RESULT([no])
2859     ENABLE_RELEASE_BUILD=
2860     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2861     dnl the newlines and then complains about spaces.
2862     GET_TASK_ALLOW_ENTITLEMENT='<!-- We want to be able to debug a hardened process when not building for release --><key>com.apple.security.get-task-allow</key><true/>'
2863 else
2864     AC_MSG_RESULT([yes])
2865     ENABLE_RELEASE_BUILD=TRUE
2866     GET_TASK_ALLOW_ENTITLEMENT=
2868 AC_SUBST(ENABLE_RELEASE_BUILD)
2869 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2871 AC_MSG_CHECKING([whether to build a Community flavor])
2872 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2873     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2874     AC_MSG_RESULT([yes])
2875 else
2876     AC_MSG_RESULT([no])
2879 dnl ===================================================================
2880 dnl Test whether to sign Windows Build
2881 dnl ===================================================================
2882 AC_MSG_CHECKING([whether to sign windows build])
2883 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2884     AC_MSG_RESULT([yes])
2885     WINDOWS_BUILD_SIGNING="TRUE"
2886 else
2887     AC_MSG_RESULT([no])
2888     WINDOWS_BUILD_SIGNING="FALSE"
2890 AC_SUBST(WINDOWS_BUILD_SIGNING)
2892 dnl ===================================================================
2893 dnl MacOSX build and runtime environment options
2894 dnl ===================================================================
2896 AC_ARG_WITH(macosx-version-min-required,
2897     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2898         [set the minimum OS version needed to run the built LibreOffice])
2899     [
2900                           e. g.: --with-macosx-version-min-required=10.15
2901     ],
2904 dnl ===================================================================
2905 dnl Check for incompatible options set by fuzzing, and reset those
2906 dnl automatically to working combinations
2907 dnl ===================================================================
2909 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2910         "$enable_dbus" != "$enable_avahi"; then
2911     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2912     enable_avahi=$enable_dbus
2915 add_lopath_after ()
2917     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2918         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2919     fi
2922 add_lopath_before ()
2924     local IFS=${P_SEP}
2925     local path_cleanup
2926     local dir
2927     for dir in $LO_PATH ; do
2928         if test "$dir" != "$1" ; then
2929             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2930         fi
2931     done
2932     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2935 dnl ===================================================================
2936 dnl check for required programs (grep, awk, sed, bash)
2937 dnl ===================================================================
2939 pathmunge ()
2941     local new_path
2942     if test -n "$1"; then
2943         if test "$build_os" = "cygwin"; then
2944             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2945                 PathFormat "$1"
2946                 new_path=`cygpath -sm "$formatted_path"`
2947             else
2948                 PathFormat "$1"
2949                 new_path=`cygpath -u "$formatted_path"`
2950             fi
2951         else
2952             new_path="$1"
2953         fi
2954         if test "$2" = "after"; then
2955             add_lopath_after "$new_path"
2956         else
2957             add_lopath_before "$new_path"
2958         fi
2959     fi
2962 AC_PROG_AWK
2963 AC_PATH_PROG( AWK, $AWK)
2964 if test -z "$AWK"; then
2965     AC_MSG_ERROR([install awk to run this script])
2968 AC_PATH_PROG(BASH, bash)
2969 if test -z "$BASH"; then
2970     AC_MSG_ERROR([bash not found in \$PATH])
2972 AC_SUBST(BASH)
2974 # prefer parallel compression tools, if available
2975 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2976 if test -z "$COMPRESSIONTOOL"; then
2977     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2978     if test -z "$COMPRESSIONTOOL"; then
2979         AC_MSG_ERROR([gzip not found in \$PATH])
2980     fi
2982 AC_SUBST(COMPRESSIONTOOL)
2984 AC_MSG_CHECKING([for GNU or BSD tar])
2985 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2986     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
2987     if test $? -eq 0;  then
2988         GNUTAR=$a
2989         break
2990     fi
2991 done
2992 AC_MSG_RESULT($GNUTAR)
2993 if test -z "$GNUTAR"; then
2994     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2996 AC_SUBST(GNUTAR)
2998 AC_MSG_CHECKING([for tar's option to strip components])
2999 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3000 if test $? -eq 0; then
3001     STRIP_COMPONENTS="--strip-components"
3002 else
3003     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3004     if test $? -eq 0; then
3005         STRIP_COMPONENTS="--strip-path"
3006     else
3007         STRIP_COMPONENTS="unsupported"
3008     fi
3010 AC_MSG_RESULT($STRIP_COMPONENTS)
3011 if test x$STRIP_COMPONENTS = xunsupported; then
3012     AC_MSG_ERROR([you need a tar that is able to strip components.])
3014 AC_SUBST(STRIP_COMPONENTS)
3016 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3017 dnl desktop OSes from "mobile" ones.
3019 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3020 dnl In other words, that when building for an OS that is not a
3021 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3023 dnl Note the direction of the implication; there is no assumption that
3024 dnl cross-compiling would imply a non-desktop OS.
3026 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3027     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3028     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3029     if test "$_os" != Emscripten; then
3030         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3031     fi
3034 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3035 # also work with the default gtk3 plugin.
3036 if test "$enable_wasm_strip" = "yes"; then
3037     enable_avmedia=no
3038     enable_cmis=no
3039     enable_coinmp=no
3040     enable_cups=no
3041     test "$_os" = Emscripten && enable_curl=no
3042     enable_database_connectivity=no
3043     enable_dbus=no
3044     enable_dconf=no
3045     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3046     enable_extension_integration=no
3047     enable_extensions=no
3048     enable_extension_update=no
3049     enable_gio=no
3050     enable_gpgmepp=no
3051     enable_ldap=no
3052     enable_lotuswordpro=no
3053     enable_lpsolve=no
3054     enable_nss=no
3055     enable_odk=no
3056     enable_online_update=no
3057     enable_opencl=no
3058     enable_pdfimport=no
3059     enable_randr=no
3060     enable_report_builder=no
3061     enable_scripting=no
3062     enable_sdremote_bluetooth=no
3063     enable_skia=no
3064     enable_xmlhelp=no
3065     enable_zxing=no
3066     test_libepubgen=no
3067     test_libcdr=no
3068     test_libcmis=no
3069     test_libetonyek=no
3070     test_libfreehand=no
3071     test_libmspub=no
3072     test_libpagemaker=no
3073     test_libqxp=no
3074     test_libvisio=no
3075     test_libzmf=no
3076     test_webdav=no
3077     with_galleries=no
3078     with_webdav=no
3079     with_x=no
3081     test "${with_fonts+set}" = set || with_fonts=yes
3082     test "${with_locales+set}" = set || with_locales=en
3084     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3085     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3086     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3087     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3088 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3089     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3090     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3091     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3092     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3093 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3094     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3095     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3096     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3097     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3098     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3099     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3100     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3101     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3104 EMSCRIPTEN_NEH_MAJOR=3
3105 EMSCRIPTEN_NEH_MINOR=1
3106 EMSCRIPTEN_NEH_TINY=3
3107 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3109 if test "$enable_wasm_exceptions" = yes; then
3110     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3111     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3112     if test $? -ne 0; then
3113         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3114     else
3115         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3116     fi
3117     ENABLE_WASM_EXCEPTIONS=TRUE
3119 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3121 # Whether to build "avmedia" functionality or not.
3123 if test "$enable_avmedia" = yes; then
3124     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3125     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3126 else
3127     test_gstreamer_1_0=no
3130 # Decide whether to build database connectivity stuff (including Base) or not.
3131 if test "$enable_database_connectivity" != no; then
3132     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3133     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3134 else
3135     if test "$_os" = iOS; then
3136         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3137     fi
3138     disable_database_connectivity_dependencies
3141 if test -z "$enable_extensions"; then
3142     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3143     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3144         enable_extensions=yes
3145     fi
3148 DISABLE_SCRIPTING=''
3149 if test "$enable_scripting" = yes; then
3150     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3151     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3152 else
3153     DISABLE_SCRIPTING='TRUE'
3154     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3157 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3158     # Disable dynamic_loading always for iOS and Android
3159     enable_dynamic_loading=no
3160 elif test -z "$enable_dynamic_loading"; then
3161     # Otherwise enable it unless specifically disabled
3162     enable_dynamic_loading=yes
3165 DISABLE_DYNLOADING=''
3166 if test "$enable_dynamic_loading" = yes; then
3167     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3168 else
3169     DISABLE_DYNLOADING='TRUE'
3170     if test $_os != iOS -a $_os != Android; then
3171         enable_database_connectivity=no
3172         enable_nss=no
3173         enable_odk=no
3174         enable_python=no
3175         enable_skia=no
3176         with_java=no
3177     fi
3179 AC_SUBST(DISABLE_DYNLOADING)
3181 ENABLE_CUSTOMTARGET_COMPONENTS=
3182 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3183     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3184     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3185         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3186     fi
3188 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3190 if test "$enable_extensions" = yes; then
3191     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3192     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3193 else
3194     enable_extension_integration=no
3195     enable_extension_update=no
3198 # remember SYSBASE value
3199 AC_SUBST(SYSBASE)
3201 dnl ===================================================================
3202 dnl  Sort out various gallery compilation options
3203 dnl ===================================================================
3204 WITH_GALLERY_BUILD=TRUE
3205 AC_MSG_CHECKING([how to build and package galleries])
3206 if test -n "${with_galleries}"; then
3207     if test "$with_galleries" = "build"; then
3208         if test "$enable_database_connectivity" = no; then
3209             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3210         fi
3211         AC_MSG_RESULT([build from source images internally])
3212     elif test "$with_galleries" = "no"; then
3213         WITH_GALLERY_BUILD=
3214         AC_MSG_RESULT([disable non-internal gallery build])
3215     else
3216         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3217     fi
3218 else
3219     if test $_os != iOS -a $_os != Android; then
3220         AC_MSG_RESULT([internal src images for desktop])
3221     else
3222         WITH_GALLERY_BUILD=
3223         AC_MSG_RESULT([disable src image build])
3224     fi
3226 AC_SUBST(WITH_GALLERY_BUILD)
3228 dnl ===================================================================
3229 dnl  Checks if ccache is available
3230 dnl ===================================================================
3231 CCACHE_DEPEND_MODE=
3232 if test "$enable_ccache" = "no"; then
3233     CCACHE=""
3234 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3235     case "%$CC%$CXX%" in
3236     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3237     # assume that's good then
3238     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3239         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3240         CCACHE_DEPEND_MODE=1
3241         ;;
3242     *)
3243         # try to use our own ccache if it is available and CCACHE was not already defined
3244         if test -z "$CCACHE"; then
3245             if test "$_os" = "WINNT"; then
3246                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3247             fi
3248             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3249                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3250             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3251                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3252             fi
3253         fi
3254         AC_PATH_PROG([CCACHE],[ccache],[not found])
3255         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3256             CCACHE=`win_short_path_for_make "$CCACHE"`
3257             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3258             rm -f conftest.txt
3259             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3260             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3261             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3262                 AC_MSG_RESULT(yes)
3263             else
3264                 AC_MSG_RESULT(no)
3265                 CCACHE="not found"
3266             fi
3267             rm -f conftest.txt
3268         fi
3269         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3270             # on windows/VC perhaps sccache is around?
3271             case "%$CC%$CXX%" in
3272             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3273             # assume that's good then
3274             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3275                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3276                 CCACHE_DEPEND_MODE=1
3277                 SCCACHE=1
3278                 ;;
3279             *)
3280                 # for sharing code below, reuse CCACHE env var
3281                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3282                 if test "$CCACHE" != "not found"; then
3283                     CCACHE=`win_short_path_for_make "$CCACHE"`
3284                     SCCACHE=1
3285                     CCACHE_DEPEND_MODE=1
3286                 fi
3287                 ;;
3288             esac
3289         fi
3290         if test "$CCACHE" = "not found"; then
3291             CCACHE=""
3292         fi
3293         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3294             CCACHE_DEPEND_MODE=1
3295             # Need to check for ccache version: otherwise prevents
3296             # caching of the results (like "-x objective-c++" for Mac)
3297             if test $_os = Darwin -o $_os = iOS; then
3298                 # Check ccache version
3299                 AC_MSG_CHECKING([whether version of ccache is suitable])
3300                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3301                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3302                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3303                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3304                 else
3305                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3306                     CCACHE=""
3307                     CCACHE_DEPEND_MODE=
3308                 fi
3309             fi
3310         fi
3311         ;;
3312     esac
3313 else
3314     CCACHE=""
3316 if test "$enable_ccache" = "nodepend"; then
3317     CCACHE_DEPEND_MODE=""
3319 AC_SUBST(CCACHE_DEPEND_MODE)
3321 # sccache defaults are good enough
3322 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3323     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3324     # or (...) max_size = 20.0 G
3325     # -p works with both 4.2 and 4.4
3326     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3327     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3328     if test "$ccache_size" = ""; then
3329         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3330         if test "$ccache_size" = ""; then
3331             ccache_size=0
3332         fi
3333         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3334         if test $ccache_size -lt 1024; then
3335             CCACHE=""
3336             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3337             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3338         else
3339             # warn that ccache may be too small for debug build
3340             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3341             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3342         fi
3343     else
3344         if test $ccache_size -lt 5; then
3345             #warn that ccache may be too small for debug build
3346             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3347             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3348         fi
3349     fi
3352 ENABLE_Z7_DEBUG=
3353 if test "$enable_z7_debug" != no; then
3354     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3355         ENABLE_Z7_DEBUG=TRUE
3356     fi
3357 else
3358     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3359     add_warning "ccache will not work with --disable-z7-debug"
3361 AC_SUBST(ENABLE_Z7_DEBUG)
3363 dnl ===================================================================
3364 dnl  Checks for C compiler,
3365 dnl  The check for the C++ compiler is later on.
3366 dnl ===================================================================
3367 if test "$_os" != "WINNT"; then
3368     GCC_HOME_SET="true"
3369     AC_MSG_CHECKING([gcc home])
3370     if test -z "$with_gcc_home"; then
3371         if test "$enable_icecream" = "yes"; then
3372             if test -d "/usr/lib/icecc/bin"; then
3373                 GCC_HOME="/usr/lib/icecc/"
3374             elif test -d "/usr/libexec/icecc/bin"; then
3375                 GCC_HOME="/usr/libexec/icecc/"
3376             elif test -d "/opt/icecream/bin"; then
3377                 GCC_HOME="/opt/icecream/"
3378             else
3379                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3381             fi
3382         else
3383             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3384             GCC_HOME_SET="false"
3385         fi
3386     else
3387         GCC_HOME="$with_gcc_home"
3388     fi
3389     AC_MSG_RESULT($GCC_HOME)
3390     AC_SUBST(GCC_HOME)
3392     if test "$GCC_HOME_SET" = "true"; then
3393         if test -z "$CC"; then
3394             CC="$GCC_HOME/bin/gcc"
3395             CC_BASE="gcc"
3396         fi
3397         if test -z "$CXX"; then
3398             CXX="$GCC_HOME/bin/g++"
3399             CXX_BASE="g++"
3400         fi
3401     fi
3404 COMPATH=`dirname "$CC"`
3405 if test "$COMPATH" = "."; then
3406     AC_PATH_PROGS(COMPATH, $CC)
3407     dnl double square bracket to get single because of M4 quote...
3408     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3410 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3412 dnl ===================================================================
3413 dnl Java support
3414 dnl ===================================================================
3415 AC_MSG_CHECKING([whether to build with Java support])
3416 if test "$with_java" != "no"; then
3417     if test "$DISABLE_SCRIPTING" = TRUE; then
3418         AC_MSG_RESULT([no, overridden by --disable-scripting])
3419         ENABLE_JAVA=""
3420         with_java=no
3421     else
3422         AC_MSG_RESULT([yes])
3423         ENABLE_JAVA="TRUE"
3424         AC_DEFINE(HAVE_FEATURE_JAVA)
3425     fi
3426 else
3427     AC_MSG_RESULT([no])
3428     ENABLE_JAVA=""
3431 AC_SUBST(ENABLE_JAVA)
3433 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3435 dnl ENABLE_JAVA="" indicate no Java support at all
3437 dnl ===================================================================
3438 dnl Check macOS SDK and compiler
3439 dnl ===================================================================
3441 if test $_os = Darwin; then
3443     # The SDK in the currently selected Xcode should be found.
3445     AC_MSG_CHECKING([what macOS SDK to use])
3446     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3447     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3448     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3449     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3450     # problems that existed in the PPC days with target versions not being respected or random
3451     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3452     # SDK version is enough, no need to do both...
3453     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3454     if test ! -d "$MACOSX_SDK_PATH"; then
3455         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3456     fi
3457     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3458     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3459     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3460     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3461     # 10.10.2 is 101002
3462     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3463     # correct version in case such an old SDK is specified, it will be rejected later anyway
3464     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3465     if test $MACOSX_SDK_VERSION -lt 101500; then
3466         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3467     fi
3468     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3469         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3470     fi
3471     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3473     AC_MSG_CHECKING([what minimum version of macOS to require])
3474     if test "$with_macosx_version_min_required" = "" ; then
3475         if test "$host_cpu" = x86_64; then
3476             with_macosx_version_min_required="10.15";
3477         else
3478             with_macosx_version_min_required="11.0";
3479         fi
3480     fi
3481     # see same notes about MACOSX_SDK_VERSION above
3482     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3483     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3484         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3485     fi
3486     AC_MSG_RESULT([$with_macosx_version_min_required])
3488     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3489     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3490         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3491     else
3492         AC_MSG_RESULT([yes])
3493     fi
3495     # export this so that "xcrun" invocations later return matching values
3496     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3497     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3498     export DEVELOPER_DIR
3499     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3500     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3502     AC_MSG_CHECKING([whether Xcode is new enough])
3503     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3504     my_xcode_ver2=${my_xcode_ver1#Xcode }
3505     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3506     if test "$my_xcode_ver3" -ge 1205; then
3507         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3508     else
3509         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3510     fi
3512     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3513     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3515     LIBTOOL=/usr/bin/libtool
3516     INSTALL_NAME_TOOL=install_name_tool
3517     if test -z "$save_CC"; then
3518         stdlib=-stdlib=libc++
3520         AC_MSG_CHECKING([what C compiler to use])
3521         CC="`xcrun -find clang`"
3522         CC_BASE=`first_arg_basename "$CC"`
3523         if test "$host_cpu" = x86_64; then
3524             CC+=" -target x86_64-apple-macos"
3525         else
3526             CC+=" -target arm64-apple-macos"
3527         fi
3528         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3529         AC_MSG_RESULT([$CC])
3531         AC_MSG_CHECKING([what C++ compiler to use])
3532         CXX="`xcrun -find clang++`"
3533         CXX_BASE=`first_arg_basename "$CXX"`
3534         if test "$host_cpu" = x86_64; then
3535             CXX+=" -target x86_64-apple-macos"
3536         else
3537             CXX+=" -target arm64-apple-macos"
3538         fi
3539         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3540         AC_MSG_RESULT([$CXX])
3542         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3543         AR=`xcrun -find ar`
3544         NM=`xcrun -find nm`
3545         STRIP=`xcrun -find strip`
3546         LIBTOOL=`xcrun -find libtool`
3547         RANLIB=`xcrun -find ranlib`
3548     fi
3550     AC_MSG_CHECKING([whether to do code signing])
3552     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3553         AC_MSG_RESULT([no])
3554     else
3555         if test "$enable_macosx_code_signing" = yes; then
3556             # By default use the first suitable certificate (?).
3558             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3559             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3560             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3561             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3562             # "Developer ID Application" one.
3563             identity="Developer ID Application:"
3564         else
3565             identity=$enable_macosx_code_signing
3566         fi
3567         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3568         if test -n "$identity"; then
3569             MACOSX_CODESIGNING_IDENTITY=$identity
3570             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3571             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3572         else
3573             AC_MSG_ERROR([cannot determine identity to use])
3574         fi
3575     fi
3577     AC_MSG_CHECKING([whether to create a Mac App Store package])
3579     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3580         AC_MSG_RESULT([no])
3581     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3582         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3583     else
3584         if test "$enable_macosx_package_signing" = yes; then
3585             # By default use the first suitable certificate.
3586             # It should be a "3rd Party Mac Developer Installer" one
3587             identity="3rd Party Mac Developer Installer:"
3588         else
3589             identity=$enable_macosx_package_signing
3590         fi
3591         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3592         if test -n "$identity"; then
3593             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3594             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3595             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3596         else
3597             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3598         fi
3599     fi
3601     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3602         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3603     fi
3605     AC_MSG_CHECKING([whether to sandbox the application])
3607     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3608         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3609     elif test "$enable_macosx_sandbox" = yes; then
3610         ENABLE_MACOSX_SANDBOX=TRUE
3611         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3612         AC_MSG_RESULT([yes])
3613     else
3614         AC_MSG_RESULT([no])
3615     fi
3617     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3618     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3619     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3621     if test -n "$with_macosx_provisioning_profile" ; then
3622         if test ! -f "$with_macosx_provisioning_profile"; then
3623             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3624         else
3625             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3626             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3627                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3628                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3629                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3630         fi
3631     fi
3633 AC_SUBST(MACOSX_SDK_PATH)
3634 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3635 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3636 AC_SUBST(INSTALL_NAME_TOOL)
3637 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3638 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3639 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3640 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3641 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3642 AC_SUBST(MACOSX_PROVISIONING_INFO)
3643 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3644 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3645 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3647 dnl ===================================================================
3648 dnl Check iOS SDK and compiler
3649 dnl ===================================================================
3651 if test $_os = iOS; then
3652     AC_MSG_CHECKING([what iOS SDK to use])
3654     if test "$enable_ios_simulator" = "yes"; then
3655         platformlc=iphonesimulator
3656         versionmin=-mios-simulator-version-min=14.5
3657     else
3658         platformlc=iphoneos
3659         versionmin=-miphoneos-version-min=14.5
3660     fi
3662     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3664     if ! test -d "$sysroot"; then
3665         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3666     fi
3668     AC_MSG_RESULT($sysroot)
3670     stdlib="-stdlib=libc++"
3672     AC_MSG_CHECKING([what C compiler to use])
3673     CC="`xcrun -find clang`"
3674     CC_BASE=`first_arg_basename "$CC"`
3675     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3676     AC_MSG_RESULT([$CC])
3678     AC_MSG_CHECKING([what C++ compiler to use])
3679     CXX="`xcrun -find clang++`"
3680     CXX_BASE=`first_arg_basename "$CXX"`
3681     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3682     AC_MSG_RESULT([$CXX])
3684     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3685     AR=`xcrun -find ar`
3686     NM=`xcrun -find nm`
3687     STRIP=`xcrun -find strip`
3688     LIBTOOL=`xcrun -find libtool`
3689     RANLIB=`xcrun -find ranlib`
3692 AC_MSG_CHECKING([whether to treat the installation as read-only])
3694 if test $_os = Darwin; then
3695     enable_readonly_installset=yes
3696 elif test "$enable_extensions" != yes; then
3697     enable_readonly_installset=yes
3699 if test "$enable_readonly_installset" = yes; then
3700     AC_MSG_RESULT([yes])
3701     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3702 else
3703     AC_MSG_RESULT([no])
3706 dnl ===================================================================
3707 dnl Structure of install set
3708 dnl ===================================================================
3710 if test $_os = Darwin; then
3711     LIBO_BIN_FOLDER=MacOS
3712     LIBO_ETC_FOLDER=Resources
3713     LIBO_LIBEXEC_FOLDER=MacOS
3714     LIBO_LIB_FOLDER=Frameworks
3715     LIBO_LIB_PYUNO_FOLDER=Resources
3716     LIBO_SHARE_FOLDER=Resources
3717     LIBO_SHARE_HELP_FOLDER=Resources/help
3718     LIBO_SHARE_JAVA_FOLDER=Resources/java
3719     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3720     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3721     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3722     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3723     LIBO_URE_BIN_FOLDER=MacOS
3724     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3725     LIBO_URE_LIB_FOLDER=Frameworks
3726     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3727     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3728 elif test $_os = WINNT; then
3729     LIBO_BIN_FOLDER=program
3730     LIBO_ETC_FOLDER=program
3731     LIBO_LIBEXEC_FOLDER=program
3732     LIBO_LIB_FOLDER=program
3733     LIBO_LIB_PYUNO_FOLDER=program
3734     LIBO_SHARE_FOLDER=share
3735     LIBO_SHARE_HELP_FOLDER=help
3736     LIBO_SHARE_JAVA_FOLDER=program/classes
3737     LIBO_SHARE_PRESETS_FOLDER=presets
3738     LIBO_SHARE_READMES_FOLDER=readmes
3739     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3740     LIBO_SHARE_SHELL_FOLDER=program/shell
3741     LIBO_URE_BIN_FOLDER=program
3742     LIBO_URE_ETC_FOLDER=program
3743     LIBO_URE_LIB_FOLDER=program
3744     LIBO_URE_MISC_FOLDER=program
3745     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3746 else
3747     LIBO_BIN_FOLDER=program
3748     LIBO_ETC_FOLDER=program
3749     LIBO_LIBEXEC_FOLDER=program
3750     LIBO_LIB_FOLDER=program
3751     LIBO_LIB_PYUNO_FOLDER=program
3752     LIBO_SHARE_FOLDER=share
3753     LIBO_SHARE_HELP_FOLDER=help
3754     LIBO_SHARE_JAVA_FOLDER=program/classes
3755     LIBO_SHARE_PRESETS_FOLDER=presets
3756     LIBO_SHARE_READMES_FOLDER=readmes
3757     if test "$enable_fuzzers" != yes; then
3758         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3759     else
3760         LIBO_SHARE_RESOURCE_FOLDER=resource
3761     fi
3762     LIBO_SHARE_SHELL_FOLDER=program/shell
3763     LIBO_URE_BIN_FOLDER=program
3764     LIBO_URE_ETC_FOLDER=program
3765     LIBO_URE_LIB_FOLDER=program
3766     LIBO_URE_MISC_FOLDER=program
3767     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3769 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3770 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3771 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3772 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3773 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3774 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3775 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3776 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3777 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3778 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3779 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3780 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3781 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3782 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3783 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3784 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3786 # Not all of them needed in config_host.mk, add more if need arises
3787 AC_SUBST(LIBO_BIN_FOLDER)
3788 AC_SUBST(LIBO_ETC_FOLDER)
3789 AC_SUBST(LIBO_LIB_FOLDER)
3790 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3791 AC_SUBST(LIBO_SHARE_FOLDER)
3792 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3793 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3794 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3795 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3796 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3797 AC_SUBST(LIBO_URE_BIN_FOLDER)
3798 AC_SUBST(LIBO_URE_ETC_FOLDER)
3799 AC_SUBST(LIBO_URE_LIB_FOLDER)
3800 AC_SUBST(LIBO_URE_MISC_FOLDER)
3801 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3803 dnl ===================================================================
3804 dnl Windows specific tests and stuff
3805 dnl ===================================================================
3807 reg_get_value()
3809     # Return value: $regvalue
3810     unset regvalue
3812     if test "$build_os" = "wsl"; then
3813         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3814         return
3815     fi
3817     local _regentry="/proc/registry${1}/${2}"
3818     if test -f "$_regentry"; then
3819         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3820         # Registry keys read via /proc/registry* are always \0 terminated!
3821         local _regvalue=$(tr -d '\0' < "$_regentry")
3822         if test $? -eq 0; then
3823             regvalue=$_regvalue
3824         fi
3825     fi
3828 # Get a value from the 32-bit side of the Registry
3829 reg_get_value_32()
3831     reg_get_value "32" "$1"
3834 # Get a value from the 64-bit side of the Registry
3835 reg_get_value_64()
3837     reg_get_value "64" "$1"
3840 reg_list_values()
3842     # Return value: $reglist
3843     unset reglist
3845     if test "$build_os" = "wsl"; then
3846         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3847         return
3848     fi
3850     reglist=$(ls "/proc/registry${1}/${2}")
3853 # List values from the 32-bit side of the Registry
3854 reg_list_values_32()
3856     reg_list_values "32" "$1"
3859 # List values from the 64-bit side of the Registry
3860 reg_list_values_64()
3862     reg_list_values "64" "$1"
3865 case "$host_os" in
3866 cygwin*|wsl*)
3867     COM=MSC
3868     OS=WNT
3869     RTL_OS=Windows
3870     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3871         P_SEP=";"
3872     else
3873         P_SEP=:
3874     fi
3875     case "$host_cpu" in
3876     x86_64)
3877         CPUNAME=X86_64
3878         RTL_ARCH=X86_64
3879         PLATFORMID=windows_x86_64
3880         WINDOWS_X64=1
3881         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3882         WIN_HOST_ARCH="x64"
3883         WIN_MULTI_ARCH="x86"
3884         WIN_HOST_BITS=64
3885         ;;
3886     i*86)
3887         CPUNAME=INTEL
3888         RTL_ARCH=x86
3889         PLATFORMID=windows_x86
3890         WIN_HOST_ARCH="x86"
3891         WIN_HOST_BITS=32
3892         WIN_OTHER_ARCH="x64"
3893         ;;
3894     aarch64)
3895         CPUNAME=AARCH64
3896         RTL_ARCH=AARCH64
3897         PLATFORMID=windows_aarch64
3898         WINDOWS_X64=1
3899         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3900         WIN_HOST_ARCH="arm64"
3901         WIN_HOST_BITS=64
3902         with_ucrt_dir=no
3903         ;;
3904     *)
3905         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3906         ;;
3907     esac
3909     case "$build_cpu" in
3910     x86_64) WIN_BUILD_ARCH="x64" ;;
3911     i*86) WIN_BUILD_ARCH="x86" ;;
3912     aarch64) WIN_BUILD_ARCH="arm64" ;;
3913     *)
3914         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3915         ;;
3916     esac
3918     SCPDEFS="$SCPDEFS -D_MSC_VER"
3919     ;;
3920 esac
3922 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3923 # other-arch won't, but wouldn't break the build (x64 on x86).
3924 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3925     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3929 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3930     # To allow building Windows multi-arch releases without cross-tooling
3931     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3932         cross_compiling="yes"
3933     fi
3936 if test "$cross_compiling" = "yes"; then
3937     export CROSS_COMPILING=TRUE
3938     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3939         ENABLE_WASM_STRIP=TRUE
3940     fi
3941     if test "$_os" = "Emscripten"; then
3942         if test "$with_main_module" = "calc"; then
3943             ENABLE_WASM_STRIP_WRITER=TRUE
3944         elif test "$with_main_module" = "writer"; then
3945             ENABLE_WASM_STRIP_CALC=TRUE
3946         fi
3947     fi
3948 else
3949     CROSS_COMPILING=
3950     BUILD_TYPE="$BUILD_TYPE NATIVE"
3952 AC_SUBST(CROSS_COMPILING)
3953 AC_SUBST(ENABLE_WASM_STRIP)
3954 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3955 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3957 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3958 # NOTE: must _not_ be used for bundled external libraries!
3959 ISYSTEM=
3960 if test "$GCC" = "yes"; then
3961     AC_MSG_CHECKING( for -isystem )
3962     save_CFLAGS=$CFLAGS
3963     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3964     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3965     CFLAGS=$save_CFLAGS
3966     if test -n "$ISYSTEM"; then
3967         AC_MSG_RESULT(yes)
3968     else
3969         AC_MSG_RESULT(no)
3970     fi
3972 if test -z "$ISYSTEM"; then
3973     # fall back to using -I
3974     ISYSTEM=-I
3976 AC_SUBST(ISYSTEM)
3978 dnl ===================================================================
3979 dnl  Check which Visual Studio compiler is used
3980 dnl ===================================================================
3982 map_vs_year_to_version()
3984     # Return value: $vsversion
3986     unset vsversion
3988     case $1 in
3989     2019)
3990         vsversion=16;;
3991     2022)
3992         vsversion=17;;
3993     2022preview)
3994         vsversion=17.7;;
3995     *)
3996         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3997     esac
4000 vs_versions_to_check()
4002     # Args: $1 (optional) : versions to check, in the order of preference
4003     # Return value: $vsversions
4005     unset vsversions
4007     if test -n "$1"; then
4008         map_vs_year_to_version "$1"
4009         vsversions=$vsversion
4010     else
4011         # Default version is 2019
4012         vsversions="16"
4013     fi
4016 win_get_env_from_vsdevcmdbat()
4018     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4019     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4020     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4021     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4022     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4023     local result
4024     if test "$build_os" = "wsl"; then
4025         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4026     else
4027         chmod +x $WRAPPERBATCHFILEPATH
4028         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4029     fi
4030     rm -f $WRAPPERBATCHFILEPATH
4031     printf '%s' "$result"
4034 find_ucrt()
4036     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4037     if test -n "$regvalue"; then
4038         PathFormat "$regvalue"
4039         UCRTSDKDIR=$formatted_path_unix
4040         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4041         UCRTVERSION=$regvalue
4042         # Rest if not exist
4043         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4044           UCRTSDKDIR=
4045         fi
4046     fi
4047     if test -z "$UCRTSDKDIR"; then
4048         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4049         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4050         if test -f "$ide_env_file"; then
4051             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4052             UCRTSDKDIR=$formatted_path
4053             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4054             dnl Hack needed at least by tml:
4055             if test "$UCRTVERSION" = 10.0.15063.0 \
4056                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4057                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4058             then
4059                 UCRTVERSION=10.0.14393.0
4060             fi
4061         else
4062           AC_MSG_ERROR([No UCRT found])
4063         fi
4064     fi
4067 find_msvc()
4069     # Find Visual C++
4070     # Args: $1 (optional) : The VS version year
4071     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4073     unset vctest vctoolset vcnumwithdot vcbuildnumber
4075     vs_versions_to_check "$1"
4076     if test "$build_os" = wsl; then
4077         vswhere="$PROGRAMFILESX86"
4078         if test -z "$vswhere"; then
4079             vswhere="c:\\Program Files (x86)"
4080         fi
4081     else
4082         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4083     fi
4084     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4085     PathFormat "$vswhere"
4086     vswhere=$formatted_path_unix
4087     for ver in $vsversions; do
4088         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4089         if test -z "$vswhereoutput"; then
4090             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4091         fi
4092         # Fall back to all MS products (this includes VC++ Build Tools)
4093         if ! test -n "$vswhereoutput"; then
4094             AC_MSG_CHECKING([VC++ Build Tools and similar])
4095             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4096         fi
4097         if test -n "$vswhereoutput"; then
4098             PathFormat "$vswhereoutput"
4099             vctest=$formatted_path_unix
4100             break
4101         fi
4102     done
4104     if test -n "$vctest"; then
4105         vcnumwithdot="$ver"
4106         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4107             vcnumwithdot=$vcnumwithdot.0
4108         fi
4109         case "$vcnumwithdot" in
4110         16.0)
4111             vcyear=2019
4112             vctoolset=v142
4113             ;;
4114         17.0 | 17.7)
4115             vcyear=2022
4116             vctoolset=v143
4117             ;;
4118         esac
4119         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4121     fi
4124 test_cl_exe()
4126     AC_MSG_CHECKING([$1 compiler])
4128     CL_EXE_PATH="$2/cl.exe"
4130     if test ! -f "$CL_EXE_PATH"; then
4131         if test "$1" = "multi-arch"; then
4132             AC_MSG_WARN([no compiler (cl.exe) in $2])
4133             return 1
4134         else
4135             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4136         fi
4137     fi
4139     dnl ===========================================================
4140     dnl  Check for the corresponding mspdb*.dll
4141     dnl ===========================================================
4143     # MSVC 15.0 has libraries from 14.0?
4144     mspdbnum="140"
4146     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4147         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4148     fi
4150     # The compiles has to find its shared libraries
4151     OLD_PATH="$PATH"
4152     TEMP_PATH=`cygpath -d "$2"`
4153     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4155     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4156         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4157     fi
4159     PATH="$OLD_PATH"
4161     AC_MSG_RESULT([$CL_EXE_PATH])
4164 SOLARINC=
4165 MSBUILD_PATH=
4166 DEVENV=
4167 if test "$_os" = "WINNT"; then
4168     AC_MSG_CHECKING([Visual C++])
4169     find_msvc "$with_visual_studio"
4170     if test -z "$vctest"; then
4171         if test -n "$with_visual_studio"; then
4172             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4173         else
4174             AC_MSG_ERROR([no Visual Studio installation found])
4175         fi
4176     fi
4177     AC_MSG_RESULT([])
4179     VC_PRODUCT_DIR="$vctest/VC"
4180     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4182     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4183     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4184         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4185         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4186         if test $? -ne 0; then
4187             WIN_MULTI_ARCH=""
4188             WIN_OTHER_ARCH=""
4189         fi
4190     fi
4192     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4193         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4194         test_cl_exe "build" "$MSVC_BUILD_PATH"
4195     fi
4197     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4198         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4199         test_cl_exe "host" "$MSVC_HOST_PATH"
4200     else
4201         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4202     fi
4204     AC_MSG_CHECKING([for short pathname of VC product directory])
4205     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4206     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4208     UCRTSDKDIR=
4209     UCRTVERSION=
4211     AC_MSG_CHECKING([for UCRT location])
4212     find_ucrt
4213     # find_ucrt errors out if it doesn't find it
4214     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4215     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4216     ucrtincpath_formatted=$formatted_path
4217     # SOLARINC is used for external modules and must be set too.
4218     # And no, it's not sufficient to set SOLARINC only, as configure
4219     # itself doesn't honour it.
4220     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4221     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4222     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4223     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4225     AC_SUBST(UCRTSDKDIR)
4226     AC_SUBST(UCRTVERSION)
4228     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4229     # Find the proper version of MSBuild.exe to use based on the VS version
4230     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4231     if test -z "$regvalue" ; then
4232         if test "$WIN_BUILD_ARCH" != "x64"; then
4233             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4234         else
4235             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4236         fi
4237     fi
4238     if test -d "$regvalue" ; then
4239         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4240         AC_MSG_RESULT([$regvalue])
4241     else
4242         AC_MSG_ERROR([MSBuild.exe location not found])
4243     fi
4245     # Find the version of devenv.exe
4246     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4247     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4248     DEVENV_unix=$(cygpath -u "$DEVENV")
4249     if test ! -e "$DEVENV_unix"; then
4250         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4251     fi
4253     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4254     dnl needed when building CLR code:
4255     if test -z "$MSVC_CXX"; then
4256         # This gives us a posix path with 8.3 filename restrictions
4257         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4258     fi
4260     if test -z "$CC"; then
4261         CC=$MSVC_CXX
4262         CC_BASE=`first_arg_basename "$CC"`
4263     fi
4264     if test -z "$CXX"; then
4265         CXX=$MSVC_CXX
4266         CXX_BASE=`first_arg_basename "$CXX"`
4267     fi
4269     if test -n "$CC"; then
4270         # Remove /cl.exe from CC case insensitive
4271         AC_MSG_NOTICE([found Visual C++ $vcyear])
4273         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4274         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4276         PathFormat "$COMPATH"
4277         COMPATH=`win_short_path_for_make "$formatted_path"`
4279         VCVER=$vcnumwithdot
4280         VCTOOLSET=$vctoolset
4282         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4283         # are always "better", we list them in reverse chronological order.
4285         case "$vcnumwithdot" in
4286         16.0 | 17.0 | 17.7)
4287             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4288             ;;
4289         esac
4291         # The expectation is that --with-windows-sdk should not need to be used
4292         if test -n "$with_windows_sdk"; then
4293             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4294             *" "$with_windows_sdk" "*)
4295                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4296                 ;;
4297             *)
4298                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4299                 ;;
4300             esac
4301         fi
4303         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4304         ac_objext=obj
4305         ac_exeext=exe
4307     else
4308         AC_MSG_ERROR([Visual C++ not found after all, huh])
4309     fi
4311     # ERROR if VS version < 16.5
4312     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4313     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4314         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4315         // between Visual Studio versions and _MSC_VER:
4316         #if _MSC_VER < 1925
4317         #error
4318         #endif
4319     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4321     # WARN if VS version < 16.10
4322     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4323     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4324         #if _MSC_VER < 1929
4325         #error
4326         #endif
4327     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4329     if test $vs2019_recommended_version = yes; then
4330         AC_MSG_RESULT([yes])
4331     else
4332         AC_MSG_WARN([no])
4333         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."
4334     fi
4336     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4337     # version of the Explorer extension (and maybe other small
4338     # bits, too) needed when installing a 32-bit LibreOffice on a
4339     # 64-bit OS. The 64-bit Explorer extension is a feature that
4340     # has been present since long in OOo. Don't confuse it with
4341     # building LibreOffice itself as 64-bit code.
4343     BUILD_X64=
4344     CXX_X64_BINARY=
4346     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4347         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4348         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4349              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4350         then
4351             BUILD_X64=TRUE
4352             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4353             AC_MSG_RESULT([found])
4354         else
4355             AC_MSG_RESULT([not found])
4356             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4357         fi
4358     elif test "$WIN_HOST_ARCH" = "x64"; then
4359         CXX_X64_BINARY=$CXX
4360     fi
4361     AC_SUBST(BUILD_X64)
4363     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4364     AC_SUBST(CXX_X64_BINARY)
4366     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4367     # needed to support TWAIN scan on both 32- and 64-bit systems
4369     case "$WIN_HOST_ARCH" in
4370     x64)
4371         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4372         if test -n "$CXX_X86_BINARY"; then
4373             BUILD_X86=TRUE
4374             AC_MSG_RESULT([preset])
4375         elif test -n "$WIN_MULTI_ARCH"; then
4376             BUILD_X86=TRUE
4377             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4378             AC_MSG_RESULT([found])
4379         else
4380             AC_MSG_RESULT([not found])
4381             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4382         fi
4383         ;;
4384     x86)
4385         BUILD_X86=TRUE
4386         CXX_X86_BINARY=$MSVC_CXX
4387         ;;
4388     esac
4389     AC_SUBST(BUILD_X86)
4390     AC_SUBST(CXX_X86_BINARY)
4392 AC_SUBST(VCVER)
4393 AC_SUBST(VCTOOLSET)
4394 AC_SUBST(DEVENV)
4395 AC_SUBST(MSVC_CXX)
4397 COM_IS_CLANG=
4398 AC_MSG_CHECKING([whether the compiler is actually Clang])
4399 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4400     #ifndef __clang__
4401     you lose
4402     #endif
4403     int foo=42;
4404     ]])],
4405     [AC_MSG_RESULT([yes])
4406      COM_IS_CLANG=TRUE],
4407     [AC_MSG_RESULT([no])])
4408 AC_SUBST(COM_IS_CLANG)
4410 CLANGVER=
4411 if test "$COM_IS_CLANG" = TRUE; then
4412     AC_MSG_CHECKING([whether Clang is new enough])
4413     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4414         #if !defined __apple_build_version__
4415         #error
4416         #endif
4417         ]])],
4418         [my_apple_clang=yes],[my_apple_clang=])
4419     if test "$my_apple_clang" = yes; then
4420         AC_MSG_RESULT([assumed yes (Apple Clang)])
4421     elif test "$_os" = Emscripten; then
4422         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4423     else
4424         if test "$_os" = WINNT; then
4425             dnl In which case, assume clang-cl:
4426             my_args="/EP /TC"
4427         else
4428             my_args="-E -P"
4429         fi
4430         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4431         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4432         CLANGVER=`echo $clang_version \
4433             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4434         if test "$CLANGVER" -ge 80001; then
4435             AC_MSG_RESULT([yes ($clang_version)])
4436         else
4437             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4438         fi
4439         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4440         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4441     fi
4444 SHOWINCLUDES_PREFIX=
4445 if test "$_os" = WINNT; then
4446     dnl We need to guess the prefix of the -showIncludes output, it can be
4447     dnl localized
4448     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4449     echo "#include <stdlib.h>" > conftest.c
4450     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4451         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4452     rm -f conftest.c conftest.obj
4453     if test -z "$SHOWINCLUDES_PREFIX"; then
4454         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4455     else
4456         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4457     fi
4459 AC_SUBST(SHOWINCLUDES_PREFIX)
4462 # prefix C with ccache if needed
4464 if test "$CCACHE" != ""; then
4465     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4467     AC_LANG_PUSH([C])
4468     save_CFLAGS=$CFLAGS
4469     CFLAGS="$CFLAGS --ccache-skip -O2"
4470     # msvc does not fail on unknown options, check stdout
4471     if test "$COM" = MSC; then
4472         CFLAGS="$CFLAGS -nologo"
4473     fi
4474     save_ac_c_werror_flag=$ac_c_werror_flag
4475     ac_c_werror_flag=yes
4476     dnl an empty program will do, we're checking the compiler flags
4477     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4478                       [use_ccache=yes], [use_ccache=no])
4479     CFLAGS=$save_CFLAGS
4480     ac_c_werror_flag=$save_ac_c_werror_flag
4481     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4482         AC_MSG_RESULT([yes])
4483     else
4484         CC="$CCACHE $CC"
4485         CC_BASE="ccache $CC_BASE"
4486         AC_MSG_RESULT([no])
4487     fi
4488     AC_LANG_POP([C])
4491 # ===================================================================
4492 # check various GCC options that Clang does not support now but maybe
4493 # will somewhen in the future, check them even for GCC, so that the
4494 # flags are set
4495 # ===================================================================
4497 HAVE_GCC_GGDB2=
4498 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4499     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4500     save_CFLAGS=$CFLAGS
4501     CFLAGS="$CFLAGS -Werror -ggdb2"
4502     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4503     CFLAGS=$save_CFLAGS
4504     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4505         AC_MSG_RESULT([yes])
4506     else
4507         AC_MSG_RESULT([no])
4508     fi
4510     if test "$host_cpu" = "m68k"; then
4511         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4512         save_CFLAGS=$CFLAGS
4513         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4514         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4515         CFLAGS=$save_CFLAGS
4516         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4517             AC_MSG_RESULT([yes])
4518         else
4519             AC_MSG_ERROR([no])
4520         fi
4521     fi
4523 AC_SUBST(HAVE_GCC_GGDB2)
4525 dnl ===================================================================
4526 dnl  Test the gcc version
4527 dnl ===================================================================
4528 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4529     AC_MSG_CHECKING([the GCC version])
4530     _gcc_version=`$CC -dumpfullversion`
4531     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4532         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4533     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4535     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4537     if test "$gcc_full_version" -lt 70000; then
4538         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4539     fi
4540 else
4541     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4542     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4543     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4544     # (which reports itself as GCC 4.2.1).
4545     GCC_VERSION=
4547 AC_SUBST(GCC_VERSION)
4549 dnl Set the ENABLE_DBGUTIL variable
4550 dnl ===================================================================
4551 AC_MSG_CHECKING([whether to build with additional debug utilities])
4552 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4553     ENABLE_DBGUTIL="TRUE"
4554     # this is an extra var so it can have different default on different MSVC
4555     # versions (in case there are version specific problems with it)
4556     MSVC_USE_DEBUG_RUNTIME="TRUE"
4558     AC_MSG_RESULT([yes])
4559     # cppunit and graphite expose STL in public headers
4560     if test "$with_system_cppunit" = "yes"; then
4561         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4562     else
4563         with_system_cppunit=no
4564     fi
4565     if test "$with_system_graphite" = "yes"; then
4566         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4567     else
4568         with_system_graphite=no
4569     fi
4570     if test "$with_system_orcus" = "yes"; then
4571         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4572     else
4573         with_system_orcus=no
4574     fi
4575     if test "$with_system_libcmis" = "yes"; then
4576         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4577     else
4578         with_system_libcmis=no
4579     fi
4580     if test "$with_system_hunspell" = "yes"; then
4581         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4582     else
4583         with_system_hunspell=no
4584     fi
4585     if test "$with_system_gpgmepp" = "yes"; then
4586         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4587     else
4588         with_system_gpgmepp=no
4589     fi
4590     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4591     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4592     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4593     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4594     # of those two is using the system variant:
4595     if test "$with_system_libnumbertext" = "yes"; then
4596         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4597     else
4598         with_system_libnumbertext=no
4599     fi
4600     if test "$with_system_libwps" = "yes"; then
4601         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4602     else
4603         with_system_libwps=no
4604     fi
4605 else
4606     ENABLE_DBGUTIL=""
4607     MSVC_USE_DEBUG_RUNTIME=""
4608     AC_MSG_RESULT([no])
4610 AC_SUBST(ENABLE_DBGUTIL)
4611 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4613 dnl Set the ENABLE_DEBUG variable.
4614 dnl ===================================================================
4615 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4616     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4618 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4619     if test -z "$libo_fuzzed_enable_debug"; then
4620         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4621     else
4622         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4623         enable_debug=yes
4624     fi
4627 AC_MSG_CHECKING([whether to do a debug build])
4628 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4629     ENABLE_DEBUG="TRUE"
4630     if test -n "$ENABLE_DBGUTIL" ; then
4631         AC_MSG_RESULT([yes (dbgutil)])
4632     else
4633         AC_MSG_RESULT([yes])
4634     fi
4635 else
4636     ENABLE_DEBUG=""
4637     AC_MSG_RESULT([no])
4639 AC_SUBST(ENABLE_DEBUG)
4641 dnl ===================================================================
4642 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4643 dnl This is done only after compiler checks (need to know if Clang is
4644 dnl used, for different defaults) and after checking if a debug build
4645 dnl is wanted (non-debug builds get the default linker if not explicitly
4646 dnl specified otherwise).
4647 dnl All checks for linker features/options should come after this.
4648 dnl ===================================================================
4649 check_use_ld()
4651     use_ld=-fuse-ld=${1%%:*}
4652     use_ld_path=${1#*:}
4653     if test "$use_ld_path" != "$1"; then
4654         if test "$COM_IS_CLANG" = TRUE; then
4655             if test "$CLANGVER" -ge 120000; then
4656                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4657             else
4658                 use_ld="-fuse-ld=${use_ld_path}"
4659             fi
4660         else
4661             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4662             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4663             # pickup the alternative linker, when called by libtool for linking.
4664             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4665             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4666         fi
4667     fi
4668     use_ld_fail_if_error=$2
4669     use_ld_ok=
4670     AC_MSG_CHECKING([for $use_ld linker support])
4671     use_ld_ldflags_save="$LDFLAGS"
4672     LDFLAGS="$LDFLAGS $use_ld"
4673     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4674 #include <stdio.h>
4675         ],[
4676 printf ("hello world\n");
4677         ])], USE_LD=$use_ld, [])
4678     if test -n "$USE_LD"; then
4679         AC_MSG_RESULT( yes )
4680         use_ld_ok=yes
4681     else
4682         if test -n "$use_ld_fail_if_error"; then
4683             AC_MSG_ERROR( no )
4684         else
4685             AC_MSG_RESULT( no )
4686         fi
4687     fi
4688     if test -n "$use_ld_ok"; then
4689         dnl keep the value of LDFLAGS
4690         return 0
4691     fi
4692     LDFLAGS="$use_ld_ldflags_save"
4693     return 1
4695 USE_LD=
4696 if test "$enable_ld" != "no"; then
4697     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4698         if test -n "$enable_ld"; then
4699             check_use_ld "$enable_ld" fail_if_error
4700         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4701             dnl non-debug builds default to the default linker
4702             true
4703         elif test -n "$COM_IS_CLANG"; then
4704             check_use_ld lld
4705             if test $? -ne 0; then
4706                 check_use_ld gold
4707                 if test $? -ne 0; then
4708                     check_use_ld mold
4709                 fi
4710             fi
4711         else
4712             # For gcc first try gold, new versions also support lld/mold.
4713             check_use_ld gold
4714             if test $? -ne 0; then
4715                 check_use_ld lld
4716                 if test $? -ne 0; then
4717                     check_use_ld mold
4718                 fi
4719             fi
4720         fi
4721         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4722         rm conftest.out
4723         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4724         if test -z "$ld_used"; then
4725             ld_used="unknown"
4726         fi
4727         AC_MSG_CHECKING([for linker that is used])
4728         AC_MSG_RESULT([$ld_used])
4729         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4730             if echo "$ld_used" | grep -q "^GNU ld"; then
4731                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4732                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4733             fi
4734         fi
4735     else
4736         if test "$enable_ld" = "yes"; then
4737             AC_MSG_ERROR([--enable-ld not supported])
4738         fi
4739     fi
4741 AC_SUBST(USE_LD)
4742 AC_SUBST(LD)
4744 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4745 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4746     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4747     bsymbolic_functions_ldflags_save=$LDFLAGS
4748     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4749     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4750 #include <stdio.h>
4751         ],[
4752 printf ("hello world\n");
4753         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4754     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4755         AC_MSG_RESULT( found )
4756     else
4757         AC_MSG_RESULT( not found )
4758     fi
4759     LDFLAGS=$bsymbolic_functions_ldflags_save
4761 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4763 LD_GC_SECTIONS=
4764 if test "$GCC" = "yes"; then
4765     for flag in "--gc-sections" "-dead_strip"; do
4766         AC_MSG_CHECKING([for $flag linker support])
4767         ldflags_save=$LDFLAGS
4768         LDFLAGS="$LDFLAGS -Wl,$flag"
4769         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4770 #include <stdio.h>
4771             ],[
4772 printf ("hello world\n");
4773             ])],[
4774             LD_GC_SECTIONS="-Wl,$flag"
4775             AC_MSG_RESULT( found )
4776             ], [
4777             AC_MSG_RESULT( not found )
4778             ])
4779         LDFLAGS=$ldflags_save
4780         if test -n "$LD_GC_SECTIONS"; then
4781             break
4782         fi
4783     done
4785 AC_SUBST(LD_GC_SECTIONS)
4787 HAVE_EXTERNAL_DWARF=
4788 if test "$enable_split_debug" != no; then
4789     use_split_debug=
4790     if test -n "$ENABLE_LTO"; then
4791         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4792     elif test "$enable_split_debug" = yes; then
4793         use_split_debug=1
4794     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4795     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4796         use_split_debug=1
4797     fi
4798     if test -n "$use_split_debug"; then
4799         if test "$_os" = "Emscripten"; then
4800             TEST_CC_FLAG=-gseparate-dwarf
4801         else
4802             TEST_CC_FLAG=-gsplit-dwarf
4803         fi
4804         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4805         save_CFLAGS=$CFLAGS
4806         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4807         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4808         CFLAGS=$save_CFLAGS
4809         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4810             AC_MSG_RESULT([yes])
4811         else
4812             if test "$enable_split_debug" = yes; then
4813                 AC_MSG_ERROR([no])
4814             else
4815                 AC_MSG_RESULT([no])
4816             fi
4817         fi
4818     fi
4819     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4820         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4821         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4822     fi
4824 AC_SUBST(HAVE_EXTERNAL_DWARF)
4826 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4827 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4828 save_CFLAGS=$CFLAGS
4829 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4830 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4831 CFLAGS=$save_CFLAGS
4832 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4833     AC_MSG_RESULT([yes])
4834 else
4835     AC_MSG_RESULT([no])
4837 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4839 ENABLE_GDB_INDEX=
4840 if test "$enable_gdb_index" != "no"; then
4841     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4842     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4843         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4844         save_CFLAGS=$CFLAGS
4845         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4846         have_ggnu_pubnames=
4847         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4848         if test "$have_ggnu_pubnames" != "TRUE"; then
4849             if test "$enable_gdb_index" = "yes"; then
4850                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4851             else
4852                 AC_MSG_RESULT( no )
4853             fi
4854         else
4855             AC_MSG_RESULT( yes )
4856             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4857             ldflags_save=$LDFLAGS
4858             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4859             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4860 #include <stdio.h>
4861                 ],[
4862 printf ("hello world\n");
4863                 ])], ENABLE_GDB_INDEX=TRUE, [])
4864             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4865                 AC_MSG_RESULT( yes )
4866             else
4867                 if test "$enable_gdb_index" = "yes"; then
4868                     AC_MSG_ERROR( no )
4869                 else
4870                     AC_MSG_RESULT( no )
4871                 fi
4872             fi
4873             LDFLAGS=$ldflags_save
4874         fi
4875         CFLAGS=$save_CFLAGS
4876         fi
4877     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4878         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4879         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4880     fi
4882 AC_SUBST(ENABLE_GDB_INDEX)
4884 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4885     enable_sal_log=yes
4887 if test "$enable_sal_log" = yes; then
4888     ENABLE_SAL_LOG=TRUE
4890 AC_SUBST(ENABLE_SAL_LOG)
4892 dnl Check for enable symbols option
4893 dnl ===================================================================
4894 AC_MSG_CHECKING([whether to generate debug information])
4895 if test -z "$enable_symbols"; then
4896     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4897         enable_symbols=yes
4898     else
4899         enable_symbols=no
4900     fi
4902 if test "$enable_symbols" = yes; then
4903     ENABLE_SYMBOLS_FOR=all
4904     AC_MSG_RESULT([yes])
4905 elif test "$enable_symbols" = no; then
4906     ENABLE_SYMBOLS_FOR=
4907     AC_MSG_RESULT([no])
4908 else
4909     # Selective debuginfo.
4910     ENABLE_SYMBOLS_FOR="$enable_symbols"
4911     AC_MSG_RESULT([for "$enable_symbols"])
4913 AC_SUBST(ENABLE_SYMBOLS_FOR)
4915 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4916     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4917     AC_MSG_CHECKING([whether enough memory is available for linking])
4918     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4919     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4920     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4921         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4922     else
4923         AC_MSG_RESULT([yes])
4924     fi
4927 ENABLE_OPTIMIZED=
4928 ENABLE_OPTIMIZED_DEBUG=
4929 AC_MSG_CHECKING([whether to compile with optimization flags])
4930 if test -z "$enable_optimized"; then
4931     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4932         enable_optimized=no
4933     else
4934         enable_optimized=yes
4935     fi
4937 if test "$enable_optimized" = yes; then
4938     ENABLE_OPTIMIZED=TRUE
4939     AC_MSG_RESULT([yes])
4940 elif test "$enable_optimized" = debug; then
4941     ENABLE_OPTIMIZED_DEBUG=TRUE
4942     AC_MSG_RESULT([yes (debug)])
4943     HAVE_GCC_OG=
4944     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4945         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4946         save_CFLAGS=$CFLAGS
4947         CFLAGS="$CFLAGS -Werror -Og"
4948         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4949         CFLAGS=$save_CFLAGS
4950         if test "$HAVE_GCC_OG" = "TRUE"; then
4951             AC_MSG_RESULT([yes])
4952         else
4953             AC_MSG_RESULT([no])
4954         fi
4955     fi
4956     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4957         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4958     fi
4959 else
4960     AC_MSG_RESULT([no])
4962 AC_SUBST(ENABLE_OPTIMIZED)
4963 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4966 # determine CPUNAME, OS, ...
4968 case "$host_os" in
4970 cygwin*|wsl*)
4971     # Already handled
4972     ;;
4974 darwin*)
4975     COM=GCC
4976     OS=MACOSX
4977     RTL_OS=MacOSX
4978     P_SEP=:
4980     case "$host_cpu" in
4981     aarch64|arm64)
4982         if test "$enable_ios_simulator" = "yes"; then
4983             OS=iOS
4984         else
4985             CPUNAME=AARCH64
4986             RTL_ARCH=AARCH64
4987             PLATFORMID=macosx_aarch64
4988         fi
4989         ;;
4990     x86_64)
4991         if test "$enable_ios_simulator" = "yes"; then
4992             OS=iOS
4993         fi
4994         CPUNAME=X86_64
4995         RTL_ARCH=X86_64
4996         PLATFORMID=macosx_x86_64
4997         ;;
4998     *)
4999         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5000         ;;
5001     esac
5002     ;;
5004 ios*)
5005     COM=GCC
5006     OS=iOS
5007     RTL_OS=iOS
5008     P_SEP=:
5010     case "$host_cpu" in
5011     aarch64|arm64)
5012         if test "$enable_ios_simulator" = "yes"; then
5013             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5014         fi
5015         ;;
5016     *)
5017         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5018         ;;
5019     esac
5020     CPUNAME=AARCH64
5021     RTL_ARCH=AARCH64
5022     PLATFORMID=ios_arm64
5023     ;;
5025 dragonfly*)
5026     COM=GCC
5027     OS=DRAGONFLY
5028     RTL_OS=DragonFly
5029     P_SEP=:
5031     case "$host_cpu" in
5032     i*86)
5033         CPUNAME=INTEL
5034         RTL_ARCH=x86
5035         PLATFORMID=dragonfly_x86
5036         ;;
5037     x86_64)
5038         CPUNAME=X86_64
5039         RTL_ARCH=X86_64
5040         PLATFORMID=dragonfly_x86_64
5041         ;;
5042     *)
5043         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5044         ;;
5045     esac
5046     ;;
5048 freebsd*)
5049     COM=GCC
5050     RTL_OS=FreeBSD
5051     OS=FREEBSD
5052     P_SEP=:
5054     case "$host_cpu" in
5055     aarch64)
5056         CPUNAME=AARCH64
5057         PLATFORMID=freebsd_aarch64
5058         RTL_ARCH=AARCH64
5059         ;;
5060     i*86)
5061         CPUNAME=INTEL
5062         RTL_ARCH=x86
5063         PLATFORMID=freebsd_x86
5064         ;;
5065     x86_64|amd64)
5066         CPUNAME=X86_64
5067         RTL_ARCH=X86_64
5068         PLATFORMID=freebsd_x86_64
5069         ;;
5070     powerpc64)
5071         CPUNAME=POWERPC64
5072         RTL_ARCH=PowerPC_64
5073         PLATFORMID=freebsd_powerpc64
5074         ;;
5075     powerpc|powerpcspe)
5076         CPUNAME=POWERPC
5077         RTL_ARCH=PowerPC
5078         PLATFORMID=freebsd_powerpc
5079         ;;
5080     *)
5081         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5082         ;;
5083     esac
5084     ;;
5086 haiku*)
5087     COM=GCC
5088     GUIBASE=haiku
5089     RTL_OS=Haiku
5090     OS=HAIKU
5091     P_SEP=:
5093     case "$host_cpu" in
5094     i*86)
5095         CPUNAME=INTEL
5096         RTL_ARCH=x86
5097         PLATFORMID=haiku_x86
5098         ;;
5099     x86_64|amd64)
5100         CPUNAME=X86_64
5101         RTL_ARCH=X86_64
5102         PLATFORMID=haiku_x86_64
5103         ;;
5104     *)
5105         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5106         ;;
5107     esac
5108     ;;
5110 kfreebsd*)
5111     COM=GCC
5112     OS=LINUX
5113     RTL_OS=kFreeBSD
5114     P_SEP=:
5116     case "$host_cpu" in
5118     i*86)
5119         CPUNAME=INTEL
5120         RTL_ARCH=x86
5121         PLATFORMID=kfreebsd_x86
5122         ;;
5123     x86_64)
5124         CPUNAME=X86_64
5125         RTL_ARCH=X86_64
5126         PLATFORMID=kfreebsd_x86_64
5127         ;;
5128     *)
5129         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5130         ;;
5131     esac
5132     ;;
5134 linux-gnu*|linux-musl*)
5135     COM=GCC
5136     OS=LINUX
5137     RTL_OS=Linux
5138     P_SEP=:
5140     case "$host_cpu" in
5142     aarch64)
5143         CPUNAME=AARCH64
5144         PLATFORMID=linux_aarch64
5145         RTL_ARCH=AARCH64
5146         EPM_FLAGS="-a arm64"
5147         ;;
5148     alpha)
5149         CPUNAME=AXP
5150         RTL_ARCH=ALPHA
5151         PLATFORMID=linux_alpha
5152         ;;
5153     arm*)
5154         CPUNAME=ARM
5155         EPM_FLAGS="-a arm"
5156         RTL_ARCH=ARM_EABI
5157         PLATFORMID=linux_arm_eabi
5158         case "$host_cpu" in
5159         arm*-linux)
5160             RTL_ARCH=ARM_OABI
5161             PLATFORMID=linux_arm_oabi
5162             ;;
5163         esac
5164         ;;
5165     hppa)
5166         CPUNAME=HPPA
5167         RTL_ARCH=HPPA
5168         EPM_FLAGS="-a hppa"
5169         PLATFORMID=linux_hppa
5170         ;;
5171     i*86)
5172         CPUNAME=INTEL
5173         RTL_ARCH=x86
5174         PLATFORMID=linux_x86
5175         ;;
5176     ia64)
5177         CPUNAME=IA64
5178         RTL_ARCH=IA64
5179         PLATFORMID=linux_ia64
5180         ;;
5181     mips)
5182         CPUNAME=MIPS
5183         RTL_ARCH=MIPS_EB
5184         EPM_FLAGS="-a mips"
5185         PLATFORMID=linux_mips_eb
5186         ;;
5187     mips64)
5188         CPUNAME=MIPS64
5189         RTL_ARCH=MIPS64_EB
5190         EPM_FLAGS="-a mips64"
5191         PLATFORMID=linux_mips64_eb
5192         ;;
5193     mips64el)
5194         CPUNAME=MIPS64
5195         RTL_ARCH=MIPS64_EL
5196         EPM_FLAGS="-a mips64el"
5197         PLATFORMID=linux_mips64_el
5198         ;;
5199     mipsel)
5200         CPUNAME=MIPS
5201         RTL_ARCH=MIPS_EL
5202         EPM_FLAGS="-a mipsel"
5203         PLATFORMID=linux_mips_el
5204         ;;
5205     riscv64)
5206         CPUNAME=RISCV64
5207         RTL_ARCH=RISCV64
5208         EPM_FLAGS="-a riscv64"
5209         PLATFORMID=linux_riscv64
5210         ;;
5211     m68k)
5212         CPUNAME=M68K
5213         RTL_ARCH=M68K
5214         PLATFORMID=linux_m68k
5215         ;;
5216     powerpc)
5217         CPUNAME=POWERPC
5218         RTL_ARCH=PowerPC
5219         PLATFORMID=linux_powerpc
5220         ;;
5221     powerpc64)
5222         CPUNAME=POWERPC64
5223         RTL_ARCH=PowerPC_64
5224         PLATFORMID=linux_powerpc64
5225         ;;
5226     powerpc64le)
5227         CPUNAME=POWERPC64
5228         RTL_ARCH=PowerPC_64_LE
5229         PLATFORMID=linux_powerpc64_le
5230         ;;
5231     sparc)
5232         CPUNAME=SPARC
5233         RTL_ARCH=SPARC
5234         PLATFORMID=linux_sparc
5235         ;;
5236     sparc64)
5237         CPUNAME=SPARC64
5238         RTL_ARCH=SPARC64
5239         PLATFORMID=linux_sparc64
5240         ;;
5241     s390x)
5242         CPUNAME=S390X
5243         RTL_ARCH=S390x
5244         PLATFORMID=linux_s390x
5245         ;;
5246     x86_64)
5247         CPUNAME=X86_64
5248         RTL_ARCH=X86_64
5249         PLATFORMID=linux_x86_64
5250         ;;
5251     loongarch64)
5252         CPUNAME=LOONGARCH64
5253         RTL_ARCH=LOONGARCH64
5254         PLATFORMID=linux_loongarch64
5255         ;;
5256     *)
5257         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5258         ;;
5259     esac
5260     ;;
5262 linux-android*)
5263     COM=GCC
5264     OS=ANDROID
5265     RTL_OS=Android
5266     P_SEP=:
5268     case "$host_cpu" in
5270     arm|armel)
5271         CPUNAME=ARM
5272         RTL_ARCH=ARM_EABI
5273         PLATFORMID=android_arm_eabi
5274         ;;
5275     aarch64)
5276         CPUNAME=AARCH64
5277         RTL_ARCH=AARCH64
5278         PLATFORMID=android_aarch64
5279         ;;
5280     i*86)
5281         CPUNAME=INTEL
5282         RTL_ARCH=x86
5283         PLATFORMID=android_x86
5284         ;;
5285     x86_64)
5286         CPUNAME=X86_64
5287         RTL_ARCH=X86_64
5288         PLATFORMID=android_x86_64
5289         ;;
5290     *)
5291         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5292         ;;
5293     esac
5294     ;;
5296 *netbsd*)
5297     COM=GCC
5298     OS=NETBSD
5299     RTL_OS=NetBSD
5300     P_SEP=:
5302     case "$host_cpu" in
5303     i*86)
5304         CPUNAME=INTEL
5305         RTL_ARCH=x86
5306         PLATFORMID=netbsd_x86
5307         ;;
5308     powerpc)
5309         CPUNAME=POWERPC
5310         RTL_ARCH=PowerPC
5311         PLATFORMID=netbsd_powerpc
5312         ;;
5313     sparc)
5314         CPUNAME=SPARC
5315         RTL_ARCH=SPARC
5316         PLATFORMID=netbsd_sparc
5317         ;;
5318     x86_64)
5319         CPUNAME=X86_64
5320         RTL_ARCH=X86_64
5321         PLATFORMID=netbsd_x86_64
5322         ;;
5323     *)
5324         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5325         ;;
5326     esac
5327     ;;
5329 openbsd*)
5330     COM=GCC
5331     OS=OPENBSD
5332     RTL_OS=OpenBSD
5333     P_SEP=:
5335     case "$host_cpu" in
5336     i*86)
5337         CPUNAME=INTEL
5338         RTL_ARCH=x86
5339         PLATFORMID=openbsd_x86
5340         ;;
5341     x86_64)
5342         CPUNAME=X86_64
5343         RTL_ARCH=X86_64
5344         PLATFORMID=openbsd_x86_64
5345         ;;
5346     *)
5347         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5348         ;;
5349     esac
5350     SOLARINC="$SOLARINC -I/usr/local/include"
5351     ;;
5353 solaris*)
5354     COM=GCC
5355     OS=SOLARIS
5356     RTL_OS=Solaris
5357     P_SEP=:
5359     case "$host_cpu" in
5360     i*86)
5361         CPUNAME=INTEL
5362         RTL_ARCH=x86
5363         PLATFORMID=solaris_x86
5364         ;;
5365     sparc)
5366         CPUNAME=SPARC
5367         RTL_ARCH=SPARC
5368         PLATFORMID=solaris_sparc
5369         ;;
5370     sparc64)
5371         CPUNAME=SPARC64
5372         RTL_ARCH=SPARC64
5373         PLATFORMID=solaris_sparc64
5374         ;;
5375     *)
5376         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5377         ;;
5378     esac
5379     SOLARINC="$SOLARINC -I/usr/local/include"
5380     ;;
5382 emscripten*)
5383     COM=GCC
5384     OS=EMSCRIPTEN
5385     RTL_OS=Emscripten
5386     P_SEP=:
5388     case "$host_cpu" in
5389     wasm32|wasm64)
5390         ;;
5391     *)
5392         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5393         ;;
5394     esac
5395     CPUNAME=INTEL
5396     RTL_ARCH=x86
5397     PLATFORMID=linux_x86
5398     ;;
5401     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5402     ;;
5403 esac
5405 DISABLE_GUI=""
5406 if test "$enable_gui" = "no"; then
5407     if test "$using_x11" != yes; then
5408         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5409     fi
5410     USING_X11=
5411     DISABLE_GUI=TRUE
5412     test_epoxy=no
5413 else
5414     AC_DEFINE(HAVE_FEATURE_UI)
5416 AC_SUBST(DISABLE_GUI)
5418 if test "$with_x" = "no"; then
5419     USING_X11=
5422 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5423     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5426 if test "$using_x11" = yes; then
5427     if test "$USING_X11" = TRUE; then
5428         AC_DEFINE(USING_X11)
5429     else
5430         disable_x11_tests
5431         if test "$DISABLE_DYNLOADING" = TRUE; then
5432             test_qt5=yes
5433         fi
5434     fi
5435 else
5436     if test "$USING_X11" = TRUE; then
5437         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5438     fi
5441 WORKDIR="${BUILDDIR}/workdir"
5442 INSTDIR="${BUILDDIR}/instdir"
5443 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5444 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5445 AC_SUBST(COM)
5446 AC_SUBST(CPUNAME)
5447 AC_SUBST(RTL_OS)
5448 AC_SUBST(RTL_ARCH)
5449 AC_SUBST(EPM_FLAGS)
5450 AC_SUBST(USING_X11)
5451 AC_SUBST([INSTDIR])
5452 AC_SUBST([INSTROOT])
5453 AC_SUBST([INSTROOTBASE])
5454 AC_SUBST(OS)
5455 AC_SUBST(P_SEP)
5456 AC_SUBST(WORKDIR)
5457 AC_SUBST(PLATFORMID)
5458 AC_SUBST(WINDOWS_X64)
5459 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5460 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5462 if test "$OS" = WNT -a "$COM" = MSC; then
5463     case "$CPUNAME" in
5464     INTEL) CPPU_ENV=msci ;;
5465     X86_64) CPPU_ENV=mscx ;;
5466     AARCH64) CPPU_ENV=msca ;;
5467     *)
5468         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5469         ;;
5470     esac
5471 else
5472     CPPU_ENV=gcc3
5474 AC_SUBST(CPPU_ENV)
5476 dnl ===================================================================
5477 dnl Test which package format to use
5478 dnl ===================================================================
5479 AC_MSG_CHECKING([which package format to use])
5480 if test -n "$with_package_format" -a "$with_package_format" != no; then
5481     for i in $with_package_format; do
5482         case "$i" in
5483         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5484             ;;
5485         *)
5486             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5487 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5488 deb - Debian software distribution
5489 pkg - Solaris software distribution
5490 rpm - RedHat software distribution
5492 LibreOffice additionally supports:
5493 archive - .tar.gz or .zip
5494 dmg - macOS .dmg
5495 installed - installation tree
5496 msi - Windows .msi
5497         ])
5498             ;;
5499         esac
5500     done
5501     # fakeroot is needed to ensure correct file ownerships/permissions
5502     # inside deb packages and tar archives created on Linux and Solaris.
5503     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5504         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5505         if test "$FAKEROOT" = "no"; then
5506             AC_MSG_ERROR(
5507                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5508         fi
5509     fi
5510     PKGFORMAT="$with_package_format"
5511     AC_MSG_RESULT([$PKGFORMAT])
5512 else
5513     PKGFORMAT=
5514     AC_MSG_RESULT([none])
5516 AC_SUBST(PKGFORMAT)
5518 dnl ===================================================================
5519 dnl handle help related options
5521 dnl If you change help related options, please update README.help
5522 dnl ===================================================================
5524 ENABLE_HTMLHELP=
5525 HELP_OMINDEX_PAGE=
5526 HELP_ONLINE=
5527 WITH_HELPPACKS=
5529 AC_MSG_CHECKING([which help to build])
5530 if test -n "$with_help" -a "$with_help" != "no"; then
5531     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5532     BUILD_TYPE="$BUILD_TYPE HELP"
5533     case "$with_help" in
5534     "html")
5535         ENABLE_HTMLHELP=TRUE
5536         WITH_HELPPACKS=TRUE
5537         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5538         AC_MSG_RESULT([HTML (local)])
5539         ;;
5540     "online")
5541         ENABLE_HTMLHELP=TRUE
5542         HELP_ONLINE=TRUE
5543         AC_MSG_RESULT([HTML (online)])
5544         ;;
5545     yes)
5546         WITH_HELPPACKS=TRUE
5547         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5548         AC_MSG_RESULT([XML (local)])
5549         ;;
5550     *)
5551         AC_MSG_ERROR([Unknown --with-help=$with_help])
5552         ;;
5553     esac
5554 else
5555     AC_MSG_RESULT([no])
5558 AC_MSG_CHECKING([if we need to build the help index tooling])
5559 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5560     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5561     test_clucene=yes
5562     AC_MSG_RESULT([yes])
5563 else
5564     AC_MSG_RESULT([no])
5567 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5568 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5569     if test "$HELP_ONLINE" != TRUE; then
5570         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5571     fi
5572     case "$with_omindex" in
5573     "server")
5574         HELP_OMINDEX_PAGE=TRUE
5575         AC_MSG_RESULT([SERVER])
5576         ;;
5577     "noxap")
5578         AC_MSG_RESULT([NOXAP])
5579         ;;
5580     *)
5581         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5582         ;;
5583     esac
5584 else
5585     AC_MSG_RESULT([no])
5588 AC_MSG_CHECKING([whether to include the XML-help support])
5589 if test "$enable_xmlhelp" = yes; then
5590     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5591     test_clucene=yes
5592     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5593     AC_MSG_RESULT([yes])
5594 else
5595     if test "$with_help" = yes; then
5596         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5597     fi
5598     AC_MSG_RESULT([no])
5601 dnl Test whether to integrate helppacks into the product's installer
5602 AC_MSG_CHECKING([for helppack integration])
5603 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5604     AC_MSG_RESULT([no integration])
5605 else
5606     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5607     AC_MSG_RESULT([integration])
5610 AC_SUBST([ENABLE_HTMLHELP])
5611 AC_SUBST([HELP_OMINDEX_PAGE])
5612 AC_SUBST([HELP_ONLINE])
5613 # WITH_HELPPACKS is used only in configure
5615 dnl ===================================================================
5616 dnl Set up a different compiler to produce tools to run on the build
5617 dnl machine when doing cross-compilation
5618 dnl ===================================================================
5620 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5621 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5622 if test "$cross_compiling" = "yes"; then
5623     AC_MSG_CHECKING([for BUILD platform configuration])
5624     echo
5625     rm -rf CONF-FOR-BUILD config_build.mk
5626     mkdir CONF-FOR-BUILD
5627     # Here must be listed all files needed when running the configure script. In particular, also
5628     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5629     # keep them in the same order as there.
5630     (cd $SRC_ROOT && tar cf - \
5631         config.guess \
5632         bin/get_config_variables \
5633         solenv/bin/getcompver.awk \
5634         solenv/inc/langlist.mk \
5635         download.lst \
5636         config_host.mk.in \
5637         config_host_lang.mk.in \
5638         Makefile.in \
5639         lo.xcent.in \
5640         bin/bffvalidator.sh.in \
5641         bin/odfvalidator.sh.in \
5642         bin/officeotron.sh.in \
5643         hardened_runtime.xcent.in \
5644         instsetoo_native/util/openoffice.lst.in \
5645         config_host/*.in \
5646         sysui/desktop/macosx/Info.plist.in \
5647         .vscode/vs-code-template.code-workspace.in \
5648         solenv/lockfile/autoconf.h.in \
5649         ) \
5650     | (cd CONF-FOR-BUILD && tar xf -)
5651     cp configure CONF-FOR-BUILD
5652     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5653     (
5654     unset COM USING_X11 OS CPUNAME
5655     unset CC CXX SYSBASE CFLAGS
5656     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5657     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5658     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5659     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5660     if test -n "$CC_FOR_BUILD"; then
5661         export CC="$CC_FOR_BUILD"
5662         CC_BASE=`first_arg_basename "$CC"`
5663     fi
5664     if test -n "$CXX_FOR_BUILD"; then
5665         export CXX="$CXX_FOR_BUILD"
5666         CXX_BASE=`first_arg_basename "$CXX"`
5667     fi
5668     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5669     cd CONF-FOR-BUILD
5671     # Handle host configuration, which affects the cross-toolset too
5672     sub_conf_opts=""
5673     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5674     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5675     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5676     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5677     if test -n "$ENABLE_JAVA"; then
5678         case "$_os" in
5679         Android)
5680             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5681             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5682             ;;
5683         *)
5684             if test -z "$with_jdk_home"; then
5685                 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.])
5686             fi
5687             ;;
5688         esac
5689     else
5690         sub_conf_opts="$sub_conf_opts --without-java"
5691     fi
5692     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5693     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5694     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5695     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5696     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5697     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5698     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5699     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5700     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5701     if test "$_os" = "Emscripten"; then
5702         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5703         if test "${with_main_module+set}" = set; then
5704             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5705         else
5706             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5707         fi
5708     fi
5709     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5710     # when cross-compiling for aarch64, overriding the defaults below
5711     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5713     # Don't bother having configure look for stuff not needed for the build platform anyway
5714     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5715     sub_conf_defaults=" \
5716         --build="$build_alias" \
5717         --disable-cairo-canvas \
5718         --disable-cups \
5719         --disable-customtarget-components \
5720         --disable-firebird-sdbc \
5721         --disable-gpgmepp \
5722         --disable-gstreamer-1-0 \
5723         --disable-gtk3 \
5724         --disable-gtk4 \
5725         --disable-libcmis \
5726         --disable-mariadb-sdbc \
5727         --disable-nss \
5728         --disable-online-update \
5729         --disable-opencl \
5730         --disable-openssl \
5731         --disable-pdfimport \
5732         --disable-postgresql-sdbc \
5733         --disable-skia \
5734         --disable-xmlhelp \
5735         --enable-dynamic-loading \
5736         --enable-icecream="$enable_icecream" \
5737         --without-doxygen \
5738         --without-tls \
5739         --without-webdav \
5740         --without-x \
5742     # single quotes added for better readability in case of spaces
5743     echo "    Running CONF-FOR-BUILD/configure" \
5744         $sub_conf_defaults \
5745         --with-parallelism="'$with_parallelism'" \
5746         --with-theme="'$with_theme'" \
5747         --with-vendor="'$with_vendor'" \
5748         $sub_conf_opts \
5749         $with_build_platform_configure_options \
5750         --srcdir=$srcdir
5752     ./configure \
5753         $sub_conf_defaults \
5754         --with-parallelism="$with_parallelism" \
5755         --with-theme="$with_theme" \
5756         "--with-vendor=$with_vendor" \
5757         $sub_conf_opts \
5758         $with_build_platform_configure_options \
5759         --srcdir=$srcdir \
5760         2>&1 | sed -e 's/^/    /'
5761     if test [${PIPESTATUS[0]}] -ne 0; then
5762         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5763     fi
5765     # filter permitted build targets
5766     PERMITTED_BUILD_TARGETS="
5767         AVMEDIA
5768         BOOST
5769         CAIRO
5770         CLUCENE
5771         CURL
5772         DBCONNECTIVITY
5773         DESKTOP
5774         DRAGONBOX
5775         DYNLOADING
5776         EPOXY
5777         EXPAT
5778         FROZEN
5779         GLM
5780         GRAPHITE
5781         HARFBUZZ
5782         HELPTOOLS
5783         ICU
5784         LCMS2
5785         LIBJPEG_TURBO
5786         LIBLANGTAG
5787         LibO
5788         LIBFFI
5789         LIBPN
5790         LIBTIFF
5791         LIBWEBP
5792         LIBXML2
5793         LIBXSLT
5794         MDDS
5795         NATIVE
5796         OPENSSL
5797         ORCUS
5798         PYTHON
5799         SCRIPTING
5800         ZLIB
5802     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5803     # newlined lists, to use grep as a filter
5804     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5805     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5806     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5807     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5809     cp config_host.mk ../config_build.mk
5810     cp config_host_lang.mk ../config_build_lang.mk
5811     mv config.log ../config.Build.log
5812     mkdir -p ../config_build
5813     mv config_host/*.h ../config_build
5814     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5816     # all these will get a _FOR_BUILD postfix
5817     DIRECT_FOR_BUILD_SETTINGS="
5818         CC
5819         CPPU_ENV
5820         CXX
5821         ILIB
5822         JAVA_HOME
5823         JAVAIFLAGS
5824         JDK
5825         JDK_SECURITYMANAGER_DISALLOWED
5826         LIBO_BIN_FOLDER
5827         LIBO_LIB_FOLDER
5828         LIBO_URE_LIB_FOLDER
5829         LIBO_URE_MISC_FOLDER
5830         OS
5831         SDKDIRNAME
5832         SYSTEM_LIBXML
5833         SYSTEM_LIBXSLT
5835     # these overwrite host config with build config
5836     OVERWRITING_SETTINGS="
5837         ANT
5838         ANT_HOME
5839         ANT_LIB
5840         JAVA_CLASSPATH_NOT_SET
5841         JAVA_SOURCE_VER
5842         JAVA_TARGET_VER
5843         JAVACFLAGS
5844         JAVACOMPILER
5845         JAVADOC
5846         JAVADOCISGJDOC
5847         LOCKFILE
5848         SYSTEM_GENBRK
5849         SYSTEM_GENCCODE
5850         SYSTEM_GENCMN
5852     # these need some special handling
5853     EXTRA_HANDLED_SETTINGS="
5854         INSTDIR
5855         INSTROOT
5856         PATH
5857         WORKDIR
5859     OLD_PATH=$PATH
5860     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5861     BUILD_PATH=$PATH
5862     PATH=$OLD_PATH
5864     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5865     echo "$line" >>build-config
5867     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5868         VV='$'$V
5869         VV=`eval "echo $VV"`
5870         if test -n "$VV"; then
5871             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5872             echo "$line" >>build-config
5873         fi
5874     done
5876     for V in $OVERWRITING_SETTINGS; do
5877         VV='$'$V
5878         VV=`eval "echo $VV"`
5879         if test -n "$VV"; then
5880             line=${V}='${'${V}:-$VV'}'
5881             echo "$line" >>build-config
5882         fi
5883     done
5885     for V in INSTDIR INSTROOT WORKDIR; do
5886         VV='$'$V
5887         VV=`eval "echo $VV"`
5888         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5889         if test -n "$VV"; then
5890             line="${V}_FOR_BUILD='$VV'"
5891             echo "$line" >>build-config
5892         fi
5893     done
5895     )
5896     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5897     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])
5898     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5899              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5901     eval `cat CONF-FOR-BUILD/build-config`
5903     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5905     rm -rf CONF-FOR-BUILD
5906 else
5907     OS_FOR_BUILD="$OS"
5908     CC_FOR_BUILD="$CC"
5909     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5910     CXX_FOR_BUILD="$CXX"
5911     INSTDIR_FOR_BUILD="$INSTDIR"
5912     INSTROOT_FOR_BUILD="$INSTROOT"
5913     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5914     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5915     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5916     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5917     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5918     WORKDIR_FOR_BUILD="$WORKDIR"
5920 AC_SUBST(OS_FOR_BUILD)
5921 AC_SUBST(INSTDIR_FOR_BUILD)
5922 AC_SUBST(INSTROOT_FOR_BUILD)
5923 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5924 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5925 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5926 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5927 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5928 AC_SUBST(WORKDIR_FOR_BUILD)
5929 AC_SUBST(CC_FOR_BUILD)
5930 AC_SUBST(CXX_FOR_BUILD)
5931 AC_SUBST(CPPU_ENV_FOR_BUILD)
5933 dnl ===================================================================
5934 dnl Check for lockfile deps
5935 dnl ===================================================================
5936 if test -z "$CROSS_COMPILING"; then
5937     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5938     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5939     AC_MSG_CHECKING([which lockfile binary to use])
5940     case "$with_system_lockfile" in
5941     yes)
5942         AC_MSG_RESULT([external])
5943         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5944         ;;
5945     no)
5946         AC_MSG_RESULT([internal])
5947         ;;
5948     *)
5949         if test -x "$with_system_lockfile"; then
5950             LOCKFILE="$with_system_lockfile"
5951         else
5952             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5953         fi
5954         AC_MSG_RESULT([$with_system_lockfile])
5955         ;;
5956     esac
5959 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5960     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5963 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5964 AC_CHECK_FUNCS([utime utimes])
5965 AC_SUBST(LOCKFILE)
5967 dnl ===================================================================
5968 dnl Check for syslog header
5969 dnl ===================================================================
5970 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5972 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5973 dnl ===================================================================
5974 AC_MSG_CHECKING([whether to turn warnings to errors])
5975 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5976     ENABLE_WERROR="TRUE"
5977     PYTHONWARNINGS="error"
5978     AC_MSG_RESULT([yes])
5979 else
5980     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5981         ENABLE_WERROR="TRUE"
5982         PYTHONWARNINGS="error"
5983         AC_MSG_RESULT([yes])
5984     else
5985         AC_MSG_RESULT([no])
5986     fi
5988 AC_SUBST(ENABLE_WERROR)
5989 AC_SUBST(PYTHONWARNINGS)
5991 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5992 dnl ===================================================================
5993 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5994 if test -z "$enable_assert_always_abort"; then
5995    if test "$ENABLE_DEBUG" = TRUE; then
5996        enable_assert_always_abort=yes
5997    else
5998        enable_assert_always_abort=no
5999    fi
6001 if test "$enable_assert_always_abort" = "yes"; then
6002     ASSERT_ALWAYS_ABORT="TRUE"
6003     AC_MSG_RESULT([yes])
6004 else
6005     ASSERT_ALWAYS_ABORT="FALSE"
6006     AC_MSG_RESULT([no])
6008 AC_SUBST(ASSERT_ALWAYS_ABORT)
6010 # Determine whether to use ooenv for the instdir installation
6011 # ===================================================================
6012 if test $_os != "WINNT" -a $_os != "Darwin"; then
6013     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6014     if test -z "$enable_ooenv"; then
6015         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6016             enable_ooenv=yes
6017         else
6018             enable_ooenv=no
6019         fi
6020     fi
6021     if test "$enable_ooenv" = "no"; then
6022         AC_MSG_RESULT([no])
6023     else
6024         ENABLE_OOENV="TRUE"
6025         AC_MSG_RESULT([yes])
6026     fi
6028 AC_SUBST(ENABLE_OOENV)
6030 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6031     if test "$enable_qt5" = "no"; then
6032         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6033     else
6034         enable_qt5=yes
6035     fi
6038 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6039 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6040     AC_MSG_RESULT([yes])
6041     ENABLE_PAGEIN=TRUE
6042     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6043 else
6044     AC_MSG_RESULT([no])
6046 AC_SUBST(ENABLE_PAGEIN)
6048 dnl ===================================================================
6049 dnl check for cups support
6050 dnl ===================================================================
6052 AC_MSG_CHECKING([whether to enable CUPS support])
6053 if test "$test_cups" = yes -a "$enable_cups" != no; then
6054     ENABLE_CUPS=TRUE
6055     AC_MSG_RESULT([yes])
6057     AC_MSG_CHECKING([whether cups support is present])
6058     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6059     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6060     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6061         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6062     fi
6063 else
6064     AC_MSG_RESULT([no])
6067 AC_SUBST(ENABLE_CUPS)
6069 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6071 dnl whether to find & fetch external tarballs?
6072 dnl ===================================================================
6073 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6074    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6075        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6076    else
6077        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6078    fi
6080 if test -z "$TARFILE_LOCATION"; then
6081     if test -d "$SRC_ROOT/src" ; then
6082         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6083         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6084     fi
6085     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6086 else
6087     AbsolutePath "$TARFILE_LOCATION"
6088     PathFormat "${absolute_path}"
6089     TARFILE_LOCATION="${formatted_path_unix}"
6091 AC_SUBST(TARFILE_LOCATION)
6093 AC_MSG_CHECKING([whether we want to fetch tarballs])
6094 if test "$enable_fetch_external" != "no"; then
6095     if test "$with_all_tarballs" = "yes"; then
6096         AC_MSG_RESULT([yes, all of them])
6097         DO_FETCH_TARBALLS="ALL"
6098     else
6099         AC_MSG_RESULT([yes, if we use them])
6100         DO_FETCH_TARBALLS="TRUE"
6101     fi
6102 else
6103     AC_MSG_RESULT([no])
6104     DO_FETCH_TARBALLS=
6106 AC_SUBST(DO_FETCH_TARBALLS)
6108 dnl Test whether to include MySpell dictionaries
6109 dnl ===================================================================
6110 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6111 if test "$with_myspell_dicts" = "yes"; then
6112     AC_MSG_RESULT([yes])
6113     WITH_MYSPELL_DICTS=TRUE
6114     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6115     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6116 else
6117     AC_MSG_RESULT([no])
6118     WITH_MYSPELL_DICTS=
6120 AC_SUBST(WITH_MYSPELL_DICTS)
6122 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6123 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6124     if test "$with_system_dicts" = yes; then
6125         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6126     fi
6127     with_system_dicts=no
6130 AC_MSG_CHECKING([whether to use dicts from external paths])
6131 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6132     AC_MSG_RESULT([yes])
6133     SYSTEM_DICTS=TRUE
6134     AC_MSG_CHECKING([for spelling dictionary directory])
6135     if test -n "$with_external_dict_dir"; then
6136         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6137     else
6138         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6139         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6140             DICT_SYSTEM_DIR=file:///usr/share/myspell
6141         fi
6142     fi
6143     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6144     AC_MSG_CHECKING([for hyphenation patterns directory])
6145     if test -n "$with_external_hyph_dir"; then
6146         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6147     else
6148         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6149     fi
6150     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6151     AC_MSG_CHECKING([for thesaurus directory])
6152     if test -n "$with_external_thes_dir"; then
6153         THES_SYSTEM_DIR=file://$with_external_thes_dir
6154     else
6155         THES_SYSTEM_DIR=file:///usr/share/mythes
6156     fi
6157     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6158 else
6159     AC_MSG_RESULT([no])
6160     SYSTEM_DICTS=
6162 AC_SUBST(SYSTEM_DICTS)
6163 AC_SUBST(DICT_SYSTEM_DIR)
6164 AC_SUBST(HYPH_SYSTEM_DIR)
6165 AC_SUBST(THES_SYSTEM_DIR)
6167 dnl ===================================================================
6168 dnl Precompiled headers.
6169 ENABLE_PCH=""
6170 AC_MSG_CHECKING([whether to enable pch feature])
6171 if test -z "$enable_pch"; then
6172     if test "$_os" = "WINNT"; then
6173         # Enabled by default on Windows.
6174         enable_pch=yes
6175         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6176         if test -z "$enable_ccache" -a "$SCCACHE"; then
6177             CCACHE=""
6178         fi
6179     else
6180         enable_pch=no
6181     fi
6183 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6184     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6186 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6187     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6189 if test "$enable_pch" = "system"; then
6190     ENABLE_PCH="1"
6191     AC_MSG_RESULT([yes (system headers)])
6192 elif test "$enable_pch" = "base"; then
6193     ENABLE_PCH="2"
6194     AC_MSG_RESULT([yes (system and base headers)])
6195 elif test "$enable_pch" = "normal"; then
6196     ENABLE_PCH="3"
6197     AC_MSG_RESULT([yes (normal)])
6198 elif test "$enable_pch" = "full"; then
6199     ENABLE_PCH="4"
6200     AC_MSG_RESULT([yes (full)])
6201 elif test "$enable_pch" = "yes"; then
6202     # Pick a suitable default.
6203     if test "$GCC" = "yes"; then
6204         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6205         # while making the PCHs larger and rebuilds more likely.
6206         ENABLE_PCH="2"
6207         AC_MSG_RESULT([yes (system and base headers)])
6208     else
6209         # With MSVC the highest level makes a significant difference,
6210         # and it was the default when there used to be no PCH levels.
6211         ENABLE_PCH="4"
6212         AC_MSG_RESULT([yes (full)])
6213     fi
6214 elif test "$enable_pch" = "no"; then
6215     AC_MSG_RESULT([no])
6216 else
6217     AC_MSG_ERROR([Unknown value for --enable-pch])
6219 AC_SUBST(ENABLE_PCH)
6220 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6221 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6222     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6223     if test "$CCACHE_BIN" != "not found"; then
6224         AC_MSG_CHECKING([ccache version])
6225         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6226         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6227         AC_MSG_RESULT([$CCACHE_VERSION])
6228         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6229         if test "$CCACHE_NUMVER" -gt "030701"; then
6230             AC_MSG_RESULT([yes])
6231         else
6232             AC_MSG_RESULT([no (not newer than 3.7.1)])
6233             CCACHE_DEPEND_MODE=
6234         fi
6235     fi
6238 PCH_INSTANTIATE_TEMPLATES=
6239 if test -n "$ENABLE_PCH"; then
6240     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6241     save_CFLAGS=$CFLAGS
6242     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6243     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6244     CFLAGS=$save_CFLAGS
6245     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6246         AC_MSG_RESULT(yes)
6247     else
6248         AC_MSG_RESULT(no)
6249     fi
6251 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6253 BUILDING_PCH_WITH_OBJ=
6254 if test -n "$ENABLE_PCH"; then
6255     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6256     save_CFLAGS=$CFLAGS
6257     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6258     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6259     CFLAGS=$save_CFLAGS
6260     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6261         AC_MSG_RESULT(yes)
6262     else
6263         AC_MSG_RESULT(no)
6264     fi
6266 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6268 PCH_CODEGEN=
6269 PCH_NO_CODEGEN=
6270 fpch_prefix=
6271 if test "$COM" = MSC; then
6272     fpch_prefix="-Xclang "
6274 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6275     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6276     save_CFLAGS=$CFLAGS
6277     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6278     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6279         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6280     CFLAGS=$save_CFLAGS
6281     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6282     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6283         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6284     CFLAGS=$save_CFLAGS
6285     if test -n "$PCH_CODEGEN"; then
6286         AC_MSG_RESULT(yes)
6287     else
6288         AC_MSG_RESULT(no)
6289     fi
6291 AC_SUBST(PCH_CODEGEN)
6292 AC_SUBST(PCH_NO_CODEGEN)
6293 PCH_DEBUGINFO=
6294 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6295     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6296     save_CFLAGS=$CFLAGS
6297     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6298     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6299     CFLAGS=$save_CFLAGS
6300     if test -n "$PCH_DEBUGINFO"; then
6301         AC_MSG_RESULT(yes)
6302     else
6303         AC_MSG_RESULT(no)
6304     fi
6306 AC_SUBST(PCH_DEBUGINFO)
6308 TAB=`printf '\t'`
6310 AC_MSG_CHECKING([the GNU Make version])
6311 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6312 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6313 if test "$_make_longver" -ge "040000"; then
6314     AC_MSG_RESULT([$GNUMAKE $_make_version])
6315 else
6316     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6319 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6320 STALE_MAKE=
6321 if test "$_make_ver_check" = ""; then
6322    STALE_MAKE=TRUE
6325 HAVE_LD_HASH_STYLE=FALSE
6326 WITH_LINKER_HASH_STYLE=
6327 AC_MSG_CHECKING([for --hash-style gcc linker support])
6328 if test "$GCC" = "yes"; then
6329     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6330         hash_styles="gnu sysv"
6331     elif test "$with_linker_hash_style" = "no"; then
6332         hash_styles=
6333     else
6334         hash_styles="$with_linker_hash_style"
6335     fi
6337     for hash_style in $hash_styles; do
6338         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6339         hash_style_ldflags_save=$LDFLAGS
6340         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6342         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6343             [
6344 #include <stdio.h>
6345             ],[
6346 printf ("");
6347             ])],
6348             [
6349                   HAVE_LD_HASH_STYLE=TRUE
6350                   WITH_LINKER_HASH_STYLE=$hash_style
6351             ],
6352             [HAVE_LD_HASH_STYLE=FALSE],
6353             [HAVE_LD_HASH_STYLE=FALSE])
6354         LDFLAGS=$hash_style_ldflags_save
6355     done
6357     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6358         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6359     else
6360         AC_MSG_RESULT( no )
6361     fi
6362     LDFLAGS=$hash_style_ldflags_save
6363 else
6364     AC_MSG_RESULT( no )
6366 AC_SUBST(HAVE_LD_HASH_STYLE)
6367 AC_SUBST(WITH_LINKER_HASH_STYLE)
6369 dnl ===================================================================
6370 dnl Check whether there's a Perl version available.
6371 dnl ===================================================================
6372 if test -z "$with_perl_home"; then
6373     AC_PATH_PROG(PERL, perl)
6374 else
6375     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6376     _perl_path="$with_perl_home/bin/perl"
6377     if test -x "$_perl_path"; then
6378         PERL=$_perl_path
6379     else
6380         AC_MSG_ERROR([$_perl_path not found])
6381     fi
6384 dnl ===================================================================
6385 dnl Testing for Perl version 5 or greater.
6386 dnl $] is the Perl version variable, it is returned as an integer
6387 dnl ===================================================================
6388 if test "$PERL"; then
6389     AC_MSG_CHECKING([the Perl version])
6390     ${PERL} -e "exit($]);"
6391     _perl_version=$?
6392     if test "$_perl_version" -lt 5; then
6393         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6394     fi
6395     AC_MSG_RESULT([Perl $_perl_version])
6396 else
6397     AC_MSG_ERROR([Perl not found, install Perl 5])
6400 dnl ===================================================================
6401 dnl Testing for required Perl modules
6402 dnl ===================================================================
6404 AC_MSG_CHECKING([for required Perl modules])
6405 perl_use_string="use Cwd ; use Digest::MD5"
6406 if test "$_os" = "WINNT"; then
6407     if test -n "$PKGFORMAT"; then
6408         for i in $PKGFORMAT; do
6409             case "$i" in
6410             msi)
6411                 # for getting fonts versions to use in MSI
6412                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6413                 ;;
6414             esac
6415         done
6416     fi
6418 if test "$with_system_hsqldb" = "yes"; then
6419     perl_use_string="$perl_use_string ; use Archive::Zip"
6421 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6422     # OpenSSL needs that to build
6423     perl_use_string="$perl_use_string ; use FindBin"
6425 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6426     AC_MSG_RESULT([all modules found])
6427 else
6428     AC_MSG_RESULT([failed to find some modules])
6429     # Find out which modules are missing.
6430     for i in $perl_use_string; do
6431         if test "$i" != "use" -a "$i" != ";"; then
6432             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6433                 missing_perl_modules="$missing_perl_modules $i"
6434             fi
6435         fi
6436     done
6437     AC_MSG_ERROR([
6438     The missing Perl modules are: $missing_perl_modules
6439     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6442 dnl ===================================================================
6443 dnl Check for pkg-config
6444 dnl ===================================================================
6445 if test "$_os" != "WINNT"; then
6446     PKG_PROG_PKG_CONFIG
6448 AC_SUBST(PKG_CONFIG)
6449 AC_SUBST(PKG_CONFIG_PATH)
6450 AC_SUBST(PKG_CONFIG_LIBDIR)
6452 if test "$_os" != "WINNT"; then
6454     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6455     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6456     # explicitly. Or put /path/to/compiler in PATH yourself.
6458     toolprefix=gcc
6459     if test "$COM_IS_CLANG" = "TRUE"; then
6460         toolprefix=llvm
6461     fi
6462     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6463     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6464     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6465     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6466     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6467     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6469 AC_SUBST(AR)
6470 AC_SUBST(NM)
6471 AC_SUBST(OBJDUMP)
6472 AC_SUBST(RANLIB)
6473 AC_SUBST(READELF)
6474 AC_SUBST(STRIP)
6476 dnl ===================================================================
6477 dnl pkg-config checks on macOS
6478 dnl ===================================================================
6480 if test $_os = Darwin; then
6481     AC_MSG_CHECKING([for bogus pkg-config])
6482     if test -n "$PKG_CONFIG"; then
6483         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6484             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6485         else
6486             if test "$enable_bogus_pkg_config" = "yes"; then
6487                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6488             else
6489                 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.])
6490             fi
6491         fi
6492     else
6493         AC_MSG_RESULT([no, good])
6494     fi
6497 find_csc()
6499     # Return value: $csctest
6501     unset csctest
6503     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6504     if test -n "$regvalue"; then
6505         csctest=$regvalue
6506         return
6507     fi
6510 find_al()
6512     # Return value: $altest
6514     unset altest
6516     # We need this check to detect 4.6.1 or above.
6517     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6518         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6519         PathFormat "$regvalue"
6520         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6521             altest=$regvalue
6522             return
6523         fi
6524     done
6526     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6527     for x in $reglist; do
6528         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6529         PathFormat "$regvalue"
6530         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6531             altest=$regvalue
6532             return
6533         fi
6534     done
6537 find_dotnetsdk()
6539     unset frametest
6541     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
6542         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6543         if test -n "$regvalue"; then
6544             frametest=$regvalue
6545             return
6546         fi
6547     done
6548     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6551 find_winsdk_version()
6553     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6554     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6556     unset winsdktest winsdkbinsubdir winsdklibsubdir
6558     case "$1" in
6559     8.0|8.0A)
6560         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6561         if test -n "$regvalue"; then
6562             winsdktest=$regvalue
6563             winsdklibsubdir=win8
6564             return
6565         fi
6566         ;;
6567     8.1|8.1A)
6568         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6569         if test -n "$regvalue"; then
6570             winsdktest=$regvalue
6571             winsdklibsubdir=winv6.3
6572             return
6573         fi
6574         ;;
6575     10.0)
6576         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6577         if test -n "$regvalue"; then
6578             winsdktest=$regvalue
6579             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6580             if test -n "$regvalue"; then
6581                 winsdkbinsubdir="$regvalue".0
6582                 winsdklibsubdir=$winsdkbinsubdir
6583                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6584                 local tmppath_unix=$(cygpath -u "$tmppath")
6585                 # test exist the SDK path
6586                 if test -d "$tmppath_unix"; then
6587                    # when path is convertible to a short path then path is okay
6588                    cygpath -d "$tmppath" >/dev/null 2>&1
6589                    if test $? -ne 0; then
6590                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6591                    fi
6592                 else
6593                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6594                 fi
6595             fi
6596             return
6597         fi
6598         ;;
6599     esac
6602 find_winsdk()
6604     # Return value: From find_winsdk_version
6606     unset winsdktest
6608     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6609         find_winsdk_version $ver
6610         if test -n "$winsdktest"; then
6611             return
6612         fi
6613     done
6616 find_msms()
6618     # Return value: $msmdir
6619     local version="$1"
6621     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6622     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6623     local my_msm_dir
6625     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6627     msmdir=
6628     case "$VCVER" in
6629     16.0 | 17.0 | 17.7)
6630         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6631             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6632             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6633             if test -e "$my_msm_dir${my_msm_file}"; then
6634                 msmdir=$my_msm_dir
6635             fi
6636         done
6637         ;;
6638     esac
6640     if test -n "$msmdir"; then
6641         msmdir=`cygpath -m "$msmdir"`
6642         AC_MSG_RESULT([$msmdir])
6643     else
6644         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6645             AC_MSG_FAILURE([not found])
6646         else
6647             AC_MSG_WARN([not found (check config.log)])
6648             add_warning "MSM ${my_msm_file} not found"
6649         fi
6650     fi
6653 find_msvc_x64_dlls()
6655     # Return value: $msvcdllpath, $msvcdlls
6657     AC_MSG_CHECKING([for MSVC x64 DLL path])
6659     dnl Order crtver in increasing order. Then check the directories returned by
6660     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6661     dnl the result will be the highest CRT version found in the highest directory.
6663     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6664     case "$VCVER" in
6665     16.0 | 17.0 | 17.7)
6666         for crtver in 141 142 143; do
6667             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6668                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6669                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6670                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6671                 fi
6672             done
6673         done
6674         ;;
6675     esac
6676     AC_MSG_RESULT([$msvcdllpath])
6677     AC_MSG_CHECKING([for MSVC x64 DLLs])
6678     msvcdlls="msvcp140.dll vcruntime140.dll"
6679     for dll in $msvcdlls; do
6680         if ! test -f "$msvcdllpath/$dll"; then
6681             AC_MSG_FAILURE([missing $dll])
6682         fi
6683     done
6684     AC_MSG_RESULT([found all ($msvcdlls)])
6687 dnl =========================================
6688 dnl Check for the Windows  SDK.
6689 dnl =========================================
6690 if test "$_os" = "WINNT"; then
6691     AC_MSG_CHECKING([for Windows SDK])
6692     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6693         find_winsdk
6694         WINDOWS_SDK_HOME=$winsdktest
6696         # normalize if found
6697         if test -n "$WINDOWS_SDK_HOME"; then
6698             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6699             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6700         fi
6702         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6703     fi
6705     if test -n "$WINDOWS_SDK_HOME"; then
6706         # Remove a possible trailing backslash
6707         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6709         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6710              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6711              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6712             have_windows_sdk_headers=yes
6713         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6714              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6715              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6716             have_windows_sdk_headers=yes
6717         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6718              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6719              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6720             have_windows_sdk_headers=yes
6721         else
6722             have_windows_sdk_headers=no
6723         fi
6725         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6726             have_windows_sdk_libs=yes
6727         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6728             have_windows_sdk_libs=yes
6729         else
6730             have_windows_sdk_libs=no
6731         fi
6733         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6734             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6735 the  Windows SDK are installed.])
6736         fi
6737     fi
6739     if test -z "$WINDOWS_SDK_HOME"; then
6740         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6741     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6742         WINDOWS_SDK_VERSION=80
6743         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6744     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6745         WINDOWS_SDK_VERSION=81
6746         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6747     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6748         WINDOWS_SDK_VERSION=10
6749         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6750     else
6751         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6752     fi
6753     PathFormat "$WINDOWS_SDK_HOME"
6754     WINDOWS_SDK_HOME="$formatted_path"
6755     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6756     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6757         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6758         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6759             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6760         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6761             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6762         fi
6763     fi
6765     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6766     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6767     dnl but not in v8.0), so allow this to be overridden with a
6768     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6769     dnl and configuration error if no WiLangId.vbs is found would arguably be
6770     dnl better, but I do not know under which conditions exactly it is needed by
6771     dnl msiglobal.pm:
6772     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6773         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6774         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6775         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6776             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6777             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6778         fi
6779         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6780             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6781             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6782         fi
6783         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6784             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6785             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6786         fi
6787     fi
6788     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6789         if test -n "$with_package_format" -a "$with_package_format" != no; then
6790             for i in "$with_package_format"; do
6791                 if test "$i" = "msi"; then
6792                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6793                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6794                     fi
6795                 fi
6796             done
6797         fi
6798     fi
6800 AC_SUBST(WINDOWS_SDK_HOME)
6801 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6802 AC_SUBST(WINDOWS_SDK_VERSION)
6803 AC_SUBST(WINDOWS_SDK_WILANGID)
6805 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6806     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6807     dnl dir, it also determines that dir's path w/o an arch segment if any,
6808     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6809     AC_MSG_CHECKING([for midl.exe])
6811     find_winsdk
6812     PathFormat "$winsdktest"
6813     winsdktest_unix="$formatted_path_unix"
6815     if test -n "$winsdkbinsubdir" \
6816         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6817     then
6818         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6819         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6820     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6821         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6822         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6823     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6824         MIDL_PATH=$winsdktest/Bin
6825         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6826     fi
6827     PathFormat "$MIDL_PATH"
6828     if test ! -f "$formatted_path_unix/midl.exe"; then
6829         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6830     else
6831         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6832     fi
6834     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6835     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6837     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6838          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6839          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6840          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6841     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6842          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6843          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6844          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6845     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6846          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6847          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6848          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6849     else
6850         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6851     fi
6853     dnl Check csc.exe
6854     AC_MSG_CHECKING([for csc.exe])
6855     find_csc
6856     PathFormat "$csctest"
6857     csctest_unix="$formatted_path_unix"
6858     if test -f "$csctest_unix/csc.exe"; then
6859         CSC_PATH="$csctest"
6860     fi
6861     if test ! -f "$csctest_unix/csc.exe"; then
6862         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6863     else
6864         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6865     fi
6867     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6869     dnl Check al.exe
6870     AC_MSG_CHECKING([for al.exe])
6871     if test -n "$winsdkbinsubdir" \
6872         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6873     then
6874         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6875     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6876         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6877     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6878         AL_PATH="$winsdktest/Bin"
6879     fi
6881     if test -z "$AL_PATH"; then
6882         find_al
6883         PathFormat "$altest"
6884         altest_unix="$formatted_path_unix"
6885         if test -f "$altest_unix/bin/al.exe"; then
6886             AL_PATH="$altest/bin"
6887         elif test -f "$altest_unix/al.exe"; then
6888             AL_PATH="$altest"
6889         fi
6890     fi
6891     PathFormat "$AL_PATH"
6892     if test ! -f "$formatted_path_unix/al.exe"; then
6893         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6894     else
6895         AC_MSG_RESULT([$AL_PATH/al.exe])
6896     fi
6898     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6900     dnl Check mscoree.lib / .NET Framework dir
6901     AC_MSG_CHECKING(.NET Framework)
6902     find_dotnetsdk
6903     PathFormat "$frametest"
6904     frametest="$formatted_path_unix"
6905     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6906         DOTNET_FRAMEWORK_HOME="$frametest"
6907     else
6908         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6909             DOTNET_FRAMEWORK_HOME="$winsdktest"
6910         fi
6911     fi
6912     PathFormat "$DOTNET_FRAMEWORK_HOME"
6913     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
6914         AC_MSG_ERROR([mscoree.lib not found])
6915     fi
6916     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6918     PathFormat "$MIDL_PATH"
6919     MIDL_PATH="$formatted_path"
6921     PathFormat "$AL_PATH"
6922     AL_PATH="$formatted_path"
6924     PathFormat "$DOTNET_FRAMEWORK_HOME"
6925     DOTNET_FRAMEWORK_HOME="$formatted_path"
6927     PathFormat "$CSC_PATH"
6928     CSC_PATH="$formatted_path"
6931 dnl ===================================================================
6932 dnl Testing for C++ compiler and version...
6933 dnl ===================================================================
6935 if test "$_os" != "WINNT"; then
6936     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6937     save_CXXFLAGS=$CXXFLAGS
6938     AC_PROG_CXX
6939     CXXFLAGS=$save_CXXFLAGS
6940     if test -z "$CXX_BASE"; then
6941         CXX_BASE=`first_arg_basename "$CXX"`
6942     fi
6945 dnl check for GNU C++ compiler version
6946 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6947     AC_MSG_CHECKING([the GNU C++ compiler version])
6949     _gpp_version=`$CXX -dumpversion`
6950     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6952     if test "$_gpp_majmin" -lt "700"; then
6953         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6954     else
6955         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6956     fi
6958     dnl see https://issuetracker.google.com/issues/36962819
6959         glibcxx_threads=no
6960         AC_LANG_PUSH([C++])
6961         AC_REQUIRE_CPP
6962         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6963         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6964             #include <bits/c++config.h>]],[[
6965             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6966             && !defined(_GLIBCXX__PTHREADS) \
6967             && !defined(_GLIBCXX_HAS_GTHREADS)
6968             choke me
6969             #endif
6970         ]])],[AC_MSG_RESULT([yes])
6971         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6972         AC_LANG_POP([C++])
6973         if test $glibcxx_threads = yes; then
6974             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6975         fi
6977 AC_SUBST(BOOST_CXXFLAGS)
6980 # prefx CXX with ccache if needed
6982 if test "$CCACHE" != ""; then
6983     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6984     AC_LANG_PUSH([C++])
6985     save_CXXFLAGS=$CXXFLAGS
6986     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6987     # msvc does not fail on unknown options, check stdout
6988     if test "$COM" = MSC; then
6989         CXXFLAGS="$CXXFLAGS -nologo"
6990     fi
6991     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6992     ac_cxx_werror_flag=yes
6993     dnl an empty program will do, we're checking the compiler flags
6994     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6995                       [use_ccache=yes], [use_ccache=no])
6996     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6997         AC_MSG_RESULT([yes])
6998     else
6999         CXX="$CCACHE $CXX"
7000         CXX_BASE="ccache $CXX_BASE"
7001         AC_MSG_RESULT([no])
7002     fi
7003     CXXFLAGS=$save_CXXFLAGS
7004     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7005     AC_LANG_POP([C++])
7008 dnl ===================================================================
7009 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7010 dnl ===================================================================
7012 if test "$_os" != "WINNT"; then
7013     AC_PROG_CXXCPP
7015     dnl Check whether there's a C pre-processor.
7016     AC_PROG_CPP
7020 dnl ===================================================================
7021 dnl Find integral type sizes and alignments
7022 dnl ===================================================================
7024 if test "$_os" != "WINNT"; then
7026     AC_CHECK_SIZEOF(long)
7027     AC_CHECK_SIZEOF(short)
7028     AC_CHECK_SIZEOF(int)
7029     AC_CHECK_SIZEOF(long long)
7030     AC_CHECK_SIZEOF(double)
7031     AC_CHECK_SIZEOF(void*)
7032     AC_CHECK_SIZEOF(size_t)
7034     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7035     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7036     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7037     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7038     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7039     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7041     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7042     m4_pattern_allow([AC_CHECK_ALIGNOF])
7043     m4_ifdef([AC_CHECK_ALIGNOF],
7044         [
7045             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7046             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7047             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7048             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7049         ],
7050         [
7051             case "$_os-$host_cpu" in
7052             Linux-i686)
7053                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7054                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7055                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7056                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7057                 ;;
7058             Linux-x86_64)
7059                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7060                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7061                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7062                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7063                 ;;
7064             *)
7065                 if test -z "$ac_cv_alignof_short" -o \
7066                         -z "$ac_cv_alignof_int" -o \
7067                         -z "$ac_cv_alignof_long" -o \
7068                         -z "$ac_cv_alignof_double"; then
7069                    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.])
7070                 fi
7071                 ;;
7072             esac
7073         ])
7075     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7076     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7077     if test $ac_cv_sizeof_long -eq 8; then
7078         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7079     elif test $ac_cv_sizeof_double -eq 8; then
7080         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7081     else
7082         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7083     fi
7085     dnl Check for large file support
7086     AC_SYS_LARGEFILE
7087     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7088         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7089     fi
7090     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7091         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7092     fi
7093 else
7094     # Hardcode for MSVC
7095     SAL_TYPES_SIZEOFSHORT=2
7096     SAL_TYPES_SIZEOFINT=4
7097     SAL_TYPES_SIZEOFLONG=4
7098     SAL_TYPES_SIZEOFLONGLONG=8
7099     if test $WIN_HOST_BITS -eq 32; then
7100         SAL_TYPES_SIZEOFPOINTER=4
7101         SIZEOF_SIZE_T=4
7102     else
7103         SAL_TYPES_SIZEOFPOINTER=8
7104         SIZEOF_SIZE_T=8
7105     fi
7106     SAL_TYPES_ALIGNMENT2=2
7107     SAL_TYPES_ALIGNMENT4=4
7108     SAL_TYPES_ALIGNMENT8=8
7109     LFS_CFLAGS=''
7111 AC_SUBST(LFS_CFLAGS)
7112 AC_SUBST(SIZEOF_SIZE_T)
7114 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7115 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7116 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7117 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7118 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7119 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7120 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7121 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7123 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7124 AC_MSG_CHECKING([whether jumbo sheets are supported])
7125 if test "$_os" != "WINNT"; then
7126     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7127         AC_MSG_RESULT([yes])
7128         ENABLE_JUMBO_SHEETS=TRUE
7129         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7130     else
7131         AC_MSG_RESULT([no])
7132     fi
7133 else
7134     if test $WIN_HOST_BITS -gt 32; then
7135         # 64bit windows is special-cased for tools::Long because long is 32bit
7136         AC_MSG_RESULT([yes])
7137         ENABLE_JUMBO_SHEETS=TRUE
7138         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7139     else
7140         AC_MSG_RESULT([no])
7141     fi
7143 AC_SUBST(ENABLE_JUMBO_SHEETS)
7145 dnl ===================================================================
7146 dnl Check whether to enable runtime optimizations
7147 dnl ===================================================================
7148 ENABLE_RUNTIME_OPTIMIZATIONS=
7149 AC_MSG_CHECKING([whether to enable runtime optimizations])
7150 if test -z "$enable_runtime_optimizations"; then
7151     for i in $CC; do
7152         case $i in
7153         -fsanitize=*)
7154             enable_runtime_optimizations=no
7155             break
7156             ;;
7157         esac
7158     done
7160 if test "$enable_runtime_optimizations" != no; then
7161     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7162     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7163     AC_MSG_RESULT([yes])
7164 else
7165     AC_MSG_RESULT([no])
7167 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7169 dnl ===================================================================
7170 dnl Check if valgrind headers are available
7171 dnl ===================================================================
7172 ENABLE_VALGRIND=
7173 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7174     prev_cppflags=$CPPFLAGS
7175     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7176     # or where does it come from?
7177     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7178     AC_CHECK_HEADER([valgrind/valgrind.h],
7179         [ENABLE_VALGRIND=TRUE])
7180     CPPFLAGS=$prev_cppflags
7182 AC_SUBST([ENABLE_VALGRIND])
7183 if test -z "$ENABLE_VALGRIND"; then
7184     if test "$with_valgrind" = yes; then
7185         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7186     fi
7187     VALGRIND_CFLAGS=
7189 AC_SUBST([VALGRIND_CFLAGS])
7192 dnl ===================================================================
7193 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7194 dnl ===================================================================
7196 # We need at least the sys/sdt.h include header.
7197 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7198 if test "$SDT_H_FOUND" = "TRUE"; then
7199     # Found sys/sdt.h header, now make sure the c++ compiler works.
7200     # Old g++ versions had problems with probes in constructors/destructors.
7201     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7202     AC_LANG_PUSH([C++])
7203     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7204     #include <sys/sdt.h>
7205     class ProbeClass
7206     {
7207     private:
7208       int& ref;
7209       const char *name;
7211     public:
7212       ProbeClass(int& v, const char *n) : ref(v), name(n)
7213       {
7214         DTRACE_PROBE2(_test_, cons, name, ref);
7215       }
7217       void method(int min)
7218       {
7219         DTRACE_PROBE3(_test_, meth, name, ref, min);
7220         ref -= min;
7221       }
7223       ~ProbeClass()
7224       {
7225         DTRACE_PROBE2(_test_, dest, name, ref);
7226       }
7227     };
7228     ]],[[
7229     int i = 64;
7230     DTRACE_PROBE1(_test_, call, i);
7231     ProbeClass inst = ProbeClass(i, "call");
7232     inst.method(24);
7233     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7234           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7235     AC_LANG_POP([C++])
7237 AC_CONFIG_HEADERS([config_host/config_probes.h])
7239 dnl ===================================================================
7240 dnl GCC features
7241 dnl ===================================================================
7242 HAVE_GCC_STACK_CLASH_PROTECTION=
7243 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7244     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7245     save_CFLAGS=$CFLAGS
7246     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7247     AC_LINK_IFELSE(
7248         [AC_LANG_PROGRAM(, [[return 0;]])],
7249         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7250         [AC_MSG_RESULT([no])])
7251     CFLAGS=$save_CFLAGS
7253     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7254     save_CFLAGS=$CFLAGS
7255     CFLAGS="$CFLAGS -Werror -mno-avx"
7256     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7257     CFLAGS=$save_CFLAGS
7258     if test "$HAVE_GCC_AVX" = "TRUE"; then
7259         AC_MSG_RESULT([yes])
7260     else
7261         AC_MSG_RESULT([no])
7262     fi
7264     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7265     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7266     int v = 0;
7267     if (__sync_add_and_fetch(&v, 1) != 1 ||
7268         __sync_sub_and_fetch(&v, 1) != 0)
7269         return 1;
7270     __sync_synchronize();
7271     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7272         v != 1)
7273         return 1;
7274     return 0;
7275 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7276     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7277         AC_MSG_RESULT([yes])
7278         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7279     else
7280         AC_MSG_RESULT([no])
7281     fi
7283     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7284     AC_LANG_PUSH([C++])
7285     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7286             #include <cstddef>
7287             #include <cxxabi.h>
7288             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7289         ])], [
7290             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7291             AC_MSG_RESULT([yes])
7292         ], [AC_MSG_RESULT([no])])
7293     AC_LANG_POP([C++])
7295     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7296     AC_LANG_PUSH([C++])
7297     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7298             #include <cstddef>
7299             #include <cxxabi.h>
7300             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7301         ])], [
7302             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7303             AC_MSG_RESULT([yes])
7304         ], [AC_MSG_RESULT([no])])
7305     AC_LANG_POP([C++])
7307     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7308     AC_LANG_PUSH([C++])
7309     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7310             #include <cxxabi.h>
7311             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7312         ])], [
7313             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7314             AC_MSG_RESULT([yes])
7315         ], [AC_MSG_RESULT([no])])
7316     AC_LANG_POP([C++])
7318     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7319     AC_LANG_PUSH([C++])
7320     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7321             #include <cstddef>
7322             #include <cxxabi.h>
7323             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7324         ])], [
7325             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7326             AC_MSG_RESULT([yes])
7327         ], [AC_MSG_RESULT([no])])
7328     AC_LANG_POP([C++])
7330     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7331     AC_LANG_PUSH([C++])
7332     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7333             #include <cstddef>
7334             #include <cxxabi.h>
7335             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7336         ])], [
7337             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7338             AC_MSG_RESULT([yes])
7339         ], [AC_MSG_RESULT([no])])
7340     AC_LANG_POP([C++])
7342     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7343     AC_LANG_PUSH([C++])
7344     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7345             #include <cxxabi.h>
7346             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7347         ])], [
7348             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7349             AC_MSG_RESULT([yes])
7350         ], [AC_MSG_RESULT([no])])
7351     AC_LANG_POP([C++])
7353     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7354     AC_LANG_PUSH([C++])
7355     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7356             #include <cxxabi.h>
7357             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7358         ])], [
7359             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7360             AC_MSG_RESULT([yes])
7361         ], [AC_MSG_RESULT([no])])
7362     AC_LANG_POP([C++])
7364     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7365     AC_LANG_PUSH([C++])
7366     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7367             #include <cxxabi.h>
7368             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7369         ])], [
7370             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7371             AC_MSG_RESULT([yes])
7372         ], [AC_MSG_RESULT([no])])
7373     AC_LANG_POP([C++])
7375     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7376     AC_LANG_PUSH([C++])
7377     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7378             #include <cstddef>
7379             #include <cxxabi.h>
7380             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7381         ])], [
7382             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7383             AC_MSG_RESULT([yes])
7384         ], [AC_MSG_RESULT([no])])
7385     AC_LANG_POP([C++])
7387     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7388     AC_LANG_PUSH([C++])
7389     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7390             #include <cstddef>
7391             #include <cxxabi.h>
7392             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7393         ])], [
7394             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7395             AC_MSG_RESULT([yes])
7396         ], [AC_MSG_RESULT([no])])
7397     AC_LANG_POP([C++])
7400 AC_SUBST(HAVE_GCC_AVX)
7401 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7402 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7404 dnl ===================================================================
7405 dnl Identify the C++ library
7406 dnl ===================================================================
7408 AC_MSG_CHECKING([what the C++ library is])
7409 HAVE_LIBSTDCPP=
7410 HAVE_LIBCPP=
7411 AC_LANG_PUSH([C++])
7412 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7413 #include <utility>
7414 #ifndef __GLIBCXX__
7415 foo bar
7416 #endif
7417 ]])],
7418     [CPP_LIBRARY=GLIBCXX
7419      cpp_library_name="GNU libstdc++"
7420      HAVE_LIBSTDCPP=TRUE
7421     ],
7422     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7423 #include <utility>
7424 #ifndef _LIBCPP_VERSION
7425 foo bar
7426 #endif
7427 ]])],
7428     [CPP_LIBRARY=LIBCPP
7429      cpp_library_name="LLVM libc++"
7430      AC_DEFINE([HAVE_LIBCPP])
7431      HAVE_LIBCPP=TRUE
7432     ],
7433     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7434 #include <utility>
7435 #ifndef _MSC_VER
7436 foo bar
7437 #endif
7438 ]])],
7439     [CPP_LIBRARY=MSVCRT
7440      cpp_library_name="Microsoft"
7441     ],
7442     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7443 AC_MSG_RESULT([$cpp_library_name])
7444 AC_LANG_POP([C++])
7445 AC_SUBST([HAVE_LIBSTDCPP])
7446 AC_SUBST([HAVE_LIBCPP])
7448 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7449 then
7450     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7451     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7452     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7453     # although there will be backwards compatibility).
7454     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7455     # and there would be undefined references to debug functions.
7456     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7457     # So check if debug mode can be used and disable or downgrade it to assertions
7458     # if needed.
7459     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7460     AC_LANG_PUSH([C++])
7461     libcpp_debug_links=
7462     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7463 #define _LIBCPP_DEBUG 0 // only assertions
7464 #include <vector>
7465 int main()
7467     std::vector<int> v;
7468     v.push_back( 1 );
7469     return v[ 3 ];
7471 ]])], [libcpp_debug_links=1])
7472     if test -n "$libcpp_debug_links"; then
7473         # we can use at least assertions, check if debug mode works
7474         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7475 #define _LIBCPP_DEBUG 1 // debug mode
7476 #include <string>
7477 #include <vector>
7478 int foo(const std::vector<int>& v) { return *v.begin(); }
7479 int main()
7481     std::vector<int> v;
7482     v.push_back( 1 );
7483     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7484     return (foo(v) + s.size()) != 0 ? 0 : 1;
7486 ]])],
7487         [AC_MSG_RESULT(yes)
7488          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7489         ],
7490         [AC_MSG_RESULT(no, using only assertions)
7491          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7492         ]
7493         )
7494     else
7495         AC_MSG_RESULT(no)
7496     fi
7497     AC_LANG_POP([C++])
7499 AC_SUBST([LIBCPP_DEBUG])
7501 dnl ===================================================================
7502 dnl Check for gperf
7503 dnl ===================================================================
7504 AC_PATH_PROG(GPERF, gperf)
7505 if test -z "$GPERF"; then
7506     AC_MSG_ERROR([gperf not found but needed. Install it.])
7508 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7509     GPERF=`cygpath -m $GPERF`
7511 AC_MSG_CHECKING([whether gperf is new enough])
7512 my_gperf_ver1=$($GPERF --version | head -n 1)
7513 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7514 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7515 if test "$my_gperf_ver3" -ge 301; then
7516     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7517 else
7518     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7520 AC_SUBST(GPERF)
7522 dnl ===================================================================
7523 dnl Check for system libcmis
7524 dnl ===================================================================
7525 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7527 dnl ===================================================================
7528 dnl C++11
7529 dnl ===================================================================
7531 if test -z "${CXXFLAGS_CXX11+x}"; then
7532     AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7533     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7534         if test "$with_latest_c__" = yes; then
7535             CXXFLAGS_CXX11=-std:c++latest
7536         else
7537             CXXFLAGS_CXX11=-std:c++17
7538         fi
7539         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7540     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7541         my_flags='-std=c++17 -std=c++1z'
7542         if test "$with_latest_c__" = yes; then
7543             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7544         fi
7545         for flag in $my_flags; do
7546             if test "$COM" = MSC; then
7547                 flag="-Xclang $flag"
7548             fi
7549             save_CXXFLAGS=$CXXFLAGS
7550             CXXFLAGS="$CXXFLAGS $flag -Werror"
7551             if test "$SYSTEM_LIBCMIS" = TRUE; then
7552                 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7553             fi
7554             AC_LANG_PUSH([C++])
7555             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7556                 #include <algorithm>
7557                 #include <functional>
7558                 #include <vector>
7560                 #if defined SYSTEM_LIBCMIS
7561                 // See ucb/source/ucp/cmis/auth_provider.hxx:
7562                 #if !defined __clang__
7563                 #pragma GCC diagnostic push
7564                 #pragma GCC diagnostic ignored "-Wdeprecated"
7565                 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7566                 #endif
7567                 #include <libcmis/libcmis.hxx>
7568                 #if !defined __clang__
7569                 #pragma GCC diagnostic pop
7570                 #endif
7571                 #endif
7573                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7574                     std::sort(v.begin(), v.end(), fn);
7575                 }
7576                 ]])],[CXXFLAGS_CXX11=$flag])
7577             AC_LANG_POP([C++])
7578             CXXFLAGS=$save_CXXFLAGS
7579             if test -n "$CXXFLAGS_CXX11"; then
7580                 break
7581             fi
7582         done
7583     fi
7584     if test -n "$CXXFLAGS_CXX11"; then
7585         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7586     else
7587         AC_MSG_ERROR(no)
7588     fi
7590 AC_SUBST(CXXFLAGS_CXX11)
7592 if test "$GCC" = "yes"; then
7593     save_CXXFLAGS=$CXXFLAGS
7594     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7595     CHECK_L_ATOMIC
7596     CXXFLAGS=$save_CXXFLAGS
7597     AC_SUBST(ATOMIC_LIB)
7600 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7601 save_CXXFLAGS=$CXXFLAGS
7602 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7603 AC_LANG_PUSH([C++])
7605 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7606 #include <stddef.h>
7608 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7610 namespace
7612         struct b
7613         {
7614                 int i;
7615                 int j;
7616         };
7618 ]], [[
7619 struct a
7621         int i;
7622         int j;
7624 a thinga[]={{0,0}, {1,1}};
7625 b thingb[]={{0,0}, {1,1}};
7626 size_t i = sizeof(sal_n_array_size(thinga));
7627 size_t j = sizeof(sal_n_array_size(thingb));
7628 return !(i != 0 && j != 0);
7630     ], [ AC_MSG_RESULT(yes) ],
7631     [ AC_MSG_ERROR(no)])
7632 AC_LANG_POP([C++])
7633 CXXFLAGS=$save_CXXFLAGS
7635 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7636 if test "$GCC" = yes; then
7637     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7638     AC_LANG_PUSH([C++])
7639     save_CXXFLAGS=$CXXFLAGS
7640     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7641     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7642     CXXFLAGS=$save_CXXFLAGS
7643     AC_LANG_POP([C++])
7644     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7645         AC_MSG_RESULT([yes])
7646     else
7647         AC_MSG_RESULT([no])
7648     fi
7650 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7652 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7653 AC_LANG_PUSH([C++])
7654 save_CXXFLAGS=$CXXFLAGS
7655 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7656 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7657         #include <algorithm>
7658         #include <initializer_list>
7659         #include <vector>
7660         template<typename T> class S {
7661         private:
7662             std::vector<T> v_;
7663         public:
7664             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7665         };
7666         constinit S<int> s{3, 2, 1};
7667     ])], [
7668         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7669         AC_MSG_RESULT([yes])
7670     ], [AC_MSG_RESULT([no])])
7671 CXXFLAGS=$save_CXXFLAGS
7672 AC_LANG_POP([C++])
7674 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7675 AC_LANG_PUSH([C++])
7676 save_CXXFLAGS=$CXXFLAGS
7677 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7678 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7679         #include <span>
7680         #include <type_traits>
7681         // Don't check size_type directly, as it was called index_type before P1872R0:
7682         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7683     ])], [
7684         AC_DEFINE([HAVE_CPP_SPAN],[1])
7685         AC_MSG_RESULT([yes])
7686     ], [AC_MSG_RESULT([no])])
7687 CXXFLAGS=$save_CXXFLAGS
7688 AC_LANG_POP([C++])
7690 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7691 AC_LANG_PUSH([C++])
7692 save_CXXFLAGS=$CXXFLAGS
7693 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7694 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7695         struct S1 { S1(S1 &&); };
7696         struct S2: S1 {};
7697         S1 f(S2 s) { return s; }
7698     ])], [
7699         AC_DEFINE([HAVE_P1155R3],[1])
7700         AC_MSG_RESULT([yes])
7701     ], [AC_MSG_RESULT([no])])
7702 CXXFLAGS=$save_CXXFLAGS
7703 AC_LANG_POP([C++])
7705 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7706 HAVE_CXX20_ATOMIC_REF=
7707 AC_LANG_PUSH([C++])
7708 save_CXXFLAGS=$CXXFLAGS
7709 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7710 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7711         #include <atomic>
7712         int x;
7713         std::atomic_ref<int> y(x);
7714     ])], [
7715         HAVE_CXX20_ATOMIC_REF=TRUE
7716         AC_MSG_RESULT([yes])
7717     ], [AC_MSG_RESULT([no])])
7718 CXXFLAGS=$save_CXXFLAGS
7719 AC_LANG_POP([C++])
7720 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7722 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7723 dnl which is included in -Wextra anyway):
7724 HAVE_WDEPRECATED_COPY_DTOR=
7725 if test "$GCC" = yes; then
7726     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7727     AC_LANG_PUSH([C++])
7728     save_CXXFLAGS=$CXXFLAGS
7729     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7730     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7731             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7732             AC_MSG_RESULT([yes])
7733         ], [AC_MSG_RESULT([no])])
7734     CXXFLAGS=$save_CXXFLAGS
7735     AC_LANG_POP([C++])
7737 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7739 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7740 dnl uninitialized warning for code like
7742 dnl   OString f();
7743 dnl   boost::optional<OString> * g(bool b) {
7744 dnl       boost::optional<OString> o;
7745 dnl       if (b) o = f();
7746 dnl       return new boost::optional<OString>(o);
7747 dnl   }
7749 dnl (as is e.g. present, in a slightly more elaborate form, in
7750 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7751 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7752 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7753 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7754     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7755     AC_LANG_PUSH([C++])
7756     save_CXXFLAGS=$CXXFLAGS
7757     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7758     if test "$ENABLE_OPTIMIZED" = TRUE; then
7759         CXXFLAGS="$CXXFLAGS -O2"
7760     else
7761         CXXFLAGS="$CXXFLAGS -O0"
7762     fi
7763     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7764             #include <new>
7765             void f1(int);
7766             struct S1 {
7767                 ~S1() { f1(n); }
7768                 int n = 0;
7769             };
7770             struct S2 {
7771                 S2() {}
7772                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7773                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7774                 void set(S1 s) {
7775                     new (stg) S1(s);
7776                     init = true;
7777                 }
7778                 bool init = false;
7779                 char stg[sizeof (S1)];
7780             } ;
7781             S1 f2();
7782             S2 * f3(bool b) {
7783                 S2 o;
7784                 if (b) o.set(f2());
7785                 return new S2(o);
7786             }
7787         ]])], [AC_MSG_RESULT([no])], [
7788             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7789             AC_MSG_RESULT([yes])
7790         ])
7791     CXXFLAGS=$save_CXXFLAGS
7792     AC_LANG_POP([C++])
7794 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7796 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7797 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7798 dnl hits us e.g. with GCC 10 and --enable-optimized at
7800 dnl   In file included from include/rtl/string.hxx:49,
7801 dnl                    from include/rtl/ustring.hxx:43,
7802 dnl                    from include/osl/file.hxx:35,
7803 dnl                    from include/codemaker/global.hxx:28,
7804 dnl                    from include/codemaker/options.hxx:23,
7805 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7806 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7807 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,
7808 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,
7809 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,
7810 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7811 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7812 dnl      78 |         memcpy( buffer, data, length );
7813 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7814 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7815 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7816     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7817     AC_LANG_PUSH([C++])
7818     save_CXXFLAGS=$CXXFLAGS
7819     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7820     if test "$ENABLE_OPTIMIZED" = TRUE; then
7821         CXXFLAGS="$CXXFLAGS -O2"
7822     else
7823         CXXFLAGS="$CXXFLAGS -O0"
7824     fi
7825     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7826     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7827             void fill(char const * begin, char const * end, char c);
7828             struct q {
7829                 char ids[4];
7830                 char username[6];
7831             };
7832             void test(q & c) {
7833                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7834                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7835             }
7836         ]])], [AC_MSG_RESULT([no])], [
7837             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7838             AC_MSG_RESULT([yes])
7839         ])
7840     CXXFLAGS=$save_CXXFLAGS
7841     AC_LANG_POP([C++])
7843 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7845 HAVE_DLLEXPORTINLINES=
7846 if test "$_os" = "WINNT"; then
7847     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7848     AC_LANG_PUSH([C++])
7849     save_CXXFLAGS=$CXXFLAGS
7850     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7851     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7852             HAVE_DLLEXPORTINLINES=TRUE
7853             AC_MSG_RESULT([yes])
7854         ], [AC_MSG_RESULT([no])])
7855     CXXFLAGS=$save_CXXFLAGS
7856     AC_LANG_POP([C++])
7858 AC_SUBST([HAVE_DLLEXPORTINLINES])
7860 dnl ===================================================================
7861 dnl CPU Intrinsics support - SSE, AVX
7862 dnl ===================================================================
7864 CXXFLAGS_INTRINSICS_SSE2=
7865 CXXFLAGS_INTRINSICS_SSSE3=
7866 CXXFLAGS_INTRINSICS_SSE41=
7867 CXXFLAGS_INTRINSICS_SSE42=
7868 CXXFLAGS_INTRINSICS_AVX=
7869 CXXFLAGS_INTRINSICS_AVX2=
7870 CXXFLAGS_INTRINSICS_AVX512=
7871 CXXFLAGS_INTRINSICS_AVX512F=
7872 CXXFLAGS_INTRINSICS_F16C=
7873 CXXFLAGS_INTRINSICS_FMA=
7875 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7876     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7877     flag_sse2=-msse2
7878     flag_ssse3=-mssse3
7879     flag_sse41=-msse4.1
7880     flag_sse42=-msse4.2
7881     flag_avx=-mavx
7882     flag_avx2=-mavx2
7883     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7884     flag_avx512f=-mavx512f
7885     flag_f16c=-mf16c
7886     flag_fma=-mfma
7887 else
7888     # With MSVC using -arch is in fact not necessary for being able
7889     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7890     # even if compiled with -arch:AVX, the -arch option really only affects
7891     # instructions generated for C/C++ code.
7892     # So use the matching same (or lower) -arch options, but only in order
7893     # to generate the best matching instructions for the C++ code surrounding
7894     # the intrinsics.
7895     # SSE2 is the default for x86/x64, so no need to specify the option.
7896     flag_sse2=
7897     # No specific options for these, use the next lower.
7898     flag_ssse3="$flag_sse2"
7899     flag_sse41="$flag_sse2"
7900     flag_sse42="$flag_sse2"
7901     flag_avx=-arch:AVX
7902     flag_avx2=-arch:AVX2
7903     flag_avx512=-arch:AVX512
7904     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7905     flag_avx512f=-arch:AVX2
7906     # No MSVC options for these.
7907     flag_f16c="$flag_sse2"
7908     flag_fma="$flag_sse2"
7911 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7912 AC_LANG_PUSH([C++])
7913 save_CXXFLAGS=$CXXFLAGS
7914 CXXFLAGS="$CXXFLAGS $flag_sse2"
7915 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7916     #include <emmintrin.h>
7917     int main () {
7918         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7919         c = _mm_xor_si128 (a, b);
7920         return 0;
7921     }
7922     ])],
7923     [can_compile_sse2=yes],
7924     [can_compile_sse2=no])
7925 AC_LANG_POP([C++])
7926 CXXFLAGS=$save_CXXFLAGS
7927 AC_MSG_RESULT([${can_compile_sse2}])
7928 if test "${can_compile_sse2}" = "yes" ; then
7929     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7932 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7933 AC_LANG_PUSH([C++])
7934 save_CXXFLAGS=$CXXFLAGS
7935 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7936 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7937     #include <tmmintrin.h>
7938     int main () {
7939         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7940         c = _mm_maddubs_epi16 (a, b);
7941         return 0;
7942     }
7943     ])],
7944     [can_compile_ssse3=yes],
7945     [can_compile_ssse3=no])
7946 AC_LANG_POP([C++])
7947 CXXFLAGS=$save_CXXFLAGS
7948 AC_MSG_RESULT([${can_compile_ssse3}])
7949 if test "${can_compile_ssse3}" = "yes" ; then
7950     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7953 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7954 AC_LANG_PUSH([C++])
7955 save_CXXFLAGS=$CXXFLAGS
7956 CXXFLAGS="$CXXFLAGS $flag_sse41"
7957 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7958     #include <smmintrin.h>
7959     int main () {
7960         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7961         c = _mm_cmpeq_epi64 (a, b);
7962         return 0;
7963     }
7964     ])],
7965     [can_compile_sse41=yes],
7966     [can_compile_sse41=no])
7967 AC_LANG_POP([C++])
7968 CXXFLAGS=$save_CXXFLAGS
7969 AC_MSG_RESULT([${can_compile_sse41}])
7970 if test "${can_compile_sse41}" = "yes" ; then
7971     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7974 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7975 AC_LANG_PUSH([C++])
7976 save_CXXFLAGS=$CXXFLAGS
7977 CXXFLAGS="$CXXFLAGS $flag_sse42"
7978 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7979     #include <nmmintrin.h>
7980     int main () {
7981         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7982         c = _mm_cmpgt_epi64 (a, b);
7983         return 0;
7984     }
7985     ])],
7986     [can_compile_sse42=yes],
7987     [can_compile_sse42=no])
7988 AC_LANG_POP([C++])
7989 CXXFLAGS=$save_CXXFLAGS
7990 AC_MSG_RESULT([${can_compile_sse42}])
7991 if test "${can_compile_sse42}" = "yes" ; then
7992     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7995 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7996 AC_LANG_PUSH([C++])
7997 save_CXXFLAGS=$CXXFLAGS
7998 CXXFLAGS="$CXXFLAGS $flag_avx"
7999 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8000     #include <immintrin.h>
8001     int main () {
8002         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8003         c = _mm256_xor_ps(a, b);
8004         return 0;
8005     }
8006     ])],
8007     [can_compile_avx=yes],
8008     [can_compile_avx=no])
8009 AC_LANG_POP([C++])
8010 CXXFLAGS=$save_CXXFLAGS
8011 AC_MSG_RESULT([${can_compile_avx}])
8012 if test "${can_compile_avx}" = "yes" ; then
8013     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8016 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8017 AC_LANG_PUSH([C++])
8018 save_CXXFLAGS=$CXXFLAGS
8019 CXXFLAGS="$CXXFLAGS $flag_avx2"
8020 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8021     #include <immintrin.h>
8022     int main () {
8023         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8024         c = _mm256_maddubs_epi16(a, b);
8025         return 0;
8026     }
8027     ])],
8028     [can_compile_avx2=yes],
8029     [can_compile_avx2=no])
8030 AC_LANG_POP([C++])
8031 CXXFLAGS=$save_CXXFLAGS
8032 AC_MSG_RESULT([${can_compile_avx2}])
8033 if test "${can_compile_avx2}" = "yes" ; then
8034     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8037 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8038 AC_LANG_PUSH([C++])
8039 save_CXXFLAGS=$CXXFLAGS
8040 CXXFLAGS="$CXXFLAGS $flag_avx512"
8041 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8042     #include <immintrin.h>
8043     int main () {
8044         __m512i a = _mm512_loadu_si512(0);
8045         __m512d v1 = _mm512_load_pd(0);
8046         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8047         __m512d v2 = _mm512_abs_pd(v1);
8048         return 0;
8049     }
8050     ])],
8051     [can_compile_avx512=yes],
8052     [can_compile_avx512=no])
8053 AC_LANG_POP([C++])
8054 CXXFLAGS=$save_CXXFLAGS
8055 AC_MSG_RESULT([${can_compile_avx512}])
8056 if test "${can_compile_avx512}" = "yes" ; then
8057     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8058     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8061 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8062 AC_LANG_PUSH([C++])
8063 save_CXXFLAGS=$CXXFLAGS
8064 CXXFLAGS="$CXXFLAGS $flag_f16c"
8065 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8066     #include <immintrin.h>
8067     int main () {
8068         __m128i a = _mm_set1_epi32 (0);
8069         __m128 c;
8070         c = _mm_cvtph_ps(a);
8071         return 0;
8072     }
8073     ])],
8074     [can_compile_f16c=yes],
8075     [can_compile_f16c=no])
8076 AC_LANG_POP([C++])
8077 CXXFLAGS=$save_CXXFLAGS
8078 AC_MSG_RESULT([${can_compile_f16c}])
8079 if test "${can_compile_f16c}" = "yes" ; then
8080     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8083 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8084 AC_LANG_PUSH([C++])
8085 save_CXXFLAGS=$CXXFLAGS
8086 CXXFLAGS="$CXXFLAGS $flag_fma"
8087 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8088     #include <immintrin.h>
8089     int main () {
8090         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8091         d = _mm256_fmadd_ps(a, b, c);
8092         return 0;
8093     }
8094     ])],
8095     [can_compile_fma=yes],
8096     [can_compile_fma=no])
8097 AC_LANG_POP([C++])
8098 CXXFLAGS=$save_CXXFLAGS
8099 AC_MSG_RESULT([${can_compile_fma}])
8100 if test "${can_compile_fma}" = "yes" ; then
8101     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8104 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8105 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8106 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8107 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8108 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8109 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8110 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8111 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8112 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8113 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8115 dnl ===================================================================
8116 dnl system stl sanity tests
8117 dnl ===================================================================
8118 if test "$_os" != "WINNT"; then
8120     AC_LANG_PUSH([C++])
8122     save_CPPFLAGS="$CPPFLAGS"
8123     if test -n "$MACOSX_SDK_PATH"; then
8124         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8125     fi
8127     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8128     # only.
8129     if test "$CPP_LIBRARY" = GLIBCXX; then
8130         dnl gcc#19664, gcc#22482, rhbz#162935
8131         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8132         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8133         AC_MSG_RESULT([$stlvisok])
8134         if test "$stlvisok" = "no"; then
8135             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8136         fi
8137     fi
8139     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8140     # when we don't make any dynamic libraries?
8141     if test "$DISABLE_DYNLOADING" = ""; then
8142         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8143         cat > conftestlib1.cc <<_ACEOF
8144 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8145 struct S2: S1<int> { virtual ~S2(); };
8146 S2::~S2() {}
8147 _ACEOF
8148         cat > conftestlib2.cc <<_ACEOF
8149 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8150 struct S2: S1<int> { virtual ~S2(); };
8151 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8152 _ACEOF
8153         gccvisinlineshiddenok=yes
8154         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8155             gccvisinlineshiddenok=no
8156         else
8157             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8158             dnl known to not work with -z defs (unsetting which makes the test
8159             dnl moot, though):
8160             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8161             if test "$COM_IS_CLANG" = TRUE; then
8162                 for i in $CXX $CXXFLAGS; do
8163                     case $i in
8164                     -fsanitize=*)
8165                         my_linkflagsnoundefs=
8166                         break
8167                         ;;
8168                     esac
8169                 done
8170             fi
8171             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8172                 gccvisinlineshiddenok=no
8173             fi
8174         fi
8176         rm -fr libconftest*
8177         AC_MSG_RESULT([$gccvisinlineshiddenok])
8178         if test "$gccvisinlineshiddenok" = "no"; then
8179             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8180         fi
8181     fi
8183    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8184     cat >visibility.cxx <<_ACEOF
8185 #pragma GCC visibility push(hidden)
8186 struct __attribute__ ((visibility ("default"))) TestStruct {
8187   static void Init();
8189 __attribute__ ((visibility ("default"))) void TestFunc() {
8190   TestStruct::Init();
8192 _ACEOF
8193     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8194         gccvisbroken=yes
8195     else
8196         case "$host_cpu" in
8197         i?86|x86_64)
8198             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8199                 gccvisbroken=no
8200             else
8201                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8202                     gccvisbroken=no
8203                 else
8204                     gccvisbroken=yes
8205                 fi
8206             fi
8207             ;;
8208         *)
8209             gccvisbroken=no
8210             ;;
8211         esac
8212     fi
8213     rm -f visibility.s visibility.cxx
8215     AC_MSG_RESULT([$gccvisbroken])
8216     if test "$gccvisbroken" = "yes"; then
8217         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8218     fi
8220     CPPFLAGS="$save_CPPFLAGS"
8222     AC_MSG_CHECKING([if CET endbranch is recognized])
8223 cat > endbr.s <<_ACEOF
8224 endbr32
8225 _ACEOF
8226     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8227     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8228         AC_MSG_RESULT([yes])
8229         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8230     else
8231         AC_MSG_RESULT([no])
8232     fi
8233     rm -f endbr.s endbr.o
8234     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8236     AC_LANG_POP([C++])
8239 dnl ===================================================================
8240 dnl  Clang++ tests
8241 dnl ===================================================================
8243 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8244 if test "$GCC" = "yes"; then
8245     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8246     AC_LANG_PUSH([C++])
8247     save_CXXFLAGS=$CXXFLAGS
8248     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8249     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8250     CXXFLAGS=$save_CXXFLAGS
8251     AC_LANG_POP([C++])
8252     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8253         AC_MSG_RESULT([yes])
8254     else
8255         AC_MSG_RESULT([no])
8256     fi
8258 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8260 dnl ===================================================================
8261 dnl Compiler plugins
8262 dnl ===================================================================
8264 COMPILER_PLUGINS=
8265 # currently only Clang
8267 if test "$COM_IS_CLANG" != "TRUE"; then
8268     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8269         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8270         enable_compiler_plugins=no
8271     fi
8274 COMPILER_PLUGINS_COM_IS_CLANG=
8275 if test "$COM_IS_CLANG" = "TRUE"; then
8276     if test -n "$enable_compiler_plugins"; then
8277         compiler_plugins="$enable_compiler_plugins"
8278     elif test -n "$ENABLE_DBGUTIL"; then
8279         compiler_plugins=test
8280     else
8281         compiler_plugins=no
8282     fi
8283     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8284         if test "$CLANGVER" -lt 120001; then
8285             if test "$compiler_plugins" = yes; then
8286                 AC_MSG_ERROR(
8287                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8288             else
8289                 compiler_plugins=no
8290             fi
8291         fi
8292     fi
8293     if test "$compiler_plugins" != "no"; then
8294         dnl The prefix where Clang resides, override to where Clang resides if
8295         dnl using a source build:
8296         if test -z "$CLANGDIR"; then
8297             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8298         fi
8299         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8300         if test -z "$COMPILER_PLUGINS_CXX"; then
8301             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8302         fi
8303         clangbindir=$CLANGDIR/bin
8304         if test "$build_os" = "cygwin"; then
8305             clangbindir=$(cygpath -u "$clangbindir")
8306         fi
8307         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8308         if test -n "$LLVM_CONFIG"; then
8309             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8310             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8311             if test -z "$CLANGLIBDIR"; then
8312                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8313             fi
8314             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8315             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8316             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8317                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8318                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8319                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8320                 fi
8321             fi
8322             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8323             clangobjdir=$($LLVM_CONFIG --obj-root)
8324             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8325                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8326             fi
8327         fi
8328         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8329         AC_LANG_PUSH([C++])
8330         save_CXX=$CXX
8331         save_CXXCPP=$CXXCPP
8332         save_CPPFLAGS=$CPPFLAGS
8333         save_CXXFLAGS=$CXXFLAGS
8334         save_LDFLAGS=$LDFLAGS
8335         save_LIBS=$LIBS
8336         CXX=$COMPILER_PLUGINS_CXX
8337         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8338         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8339         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8340         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8341             [COMPILER_PLUGINS=TRUE],
8342             [
8343             if test "$compiler_plugins" = "yes"; then
8344                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8345             else
8346                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8347                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8348             fi
8349             ])
8350         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8351         dnl comment in compilerplugins/Makefile-clang.mk:
8352         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8353             LDFLAGS=""
8354             AC_MSG_CHECKING([for clang libraries to use])
8355             if test -z "$CLANGTOOLLIBS"; then
8356                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8357                 AC_LINK_IFELSE([
8358                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8359                         [[ clang::FullSourceLoc().dump(); ]])
8360                 ],[CLANGTOOLLIBS="$LIBS"],[])
8361             fi
8362             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8363             dnl list of individual -lclang* (but note that that list can become outdated over time,
8364             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8365             dnl needs to include -lclangSupport now"):
8366             if test -z "$CLANGTOOLLIBS"; then
8367                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8368  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8369                 AC_LINK_IFELSE([
8370                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8371                         [[ clang::FullSourceLoc().dump(); ]])
8372                 ],[CLANGTOOLLIBS="$LIBS"],[])
8373             fi
8374             AC_MSG_RESULT([$CLANGTOOLLIBS])
8375             if test -z "$CLANGTOOLLIBS"; then
8376                 if test "$compiler_plugins" = "yes"; then
8377                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8378                 else
8379                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8380                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8381                 fi
8382                 COMPILER_PLUGINS=
8383             fi
8384             if test -n "$COMPILER_PLUGINS"; then
8385                 if test -z "$CLANGSYSINCLUDE"; then
8386                     if test -n "$LLVM_CONFIG"; then
8387                         # Path to the clang system headers (no idea if there's a better way to get it).
8388                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8389                     fi
8390                 fi
8391             fi
8392         fi
8393         CXX=$save_CXX
8394         CXXCPP=$save_CXXCPP
8395         CPPFLAGS=$save_CPPFLAGS
8396         CXXFLAGS=$save_CXXFLAGS
8397         LDFLAGS=$save_LDFLAGS
8398         LIBS="$save_LIBS"
8399         AC_LANG_POP([C++])
8401         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8402         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8403             #ifndef __clang__
8404             you lose
8405             #endif
8406             int foo=42;
8407             ]])],
8408             [AC_MSG_RESULT([yes])
8409              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8410             [AC_MSG_RESULT([no])])
8411         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8412     fi
8413 else
8414     if test "$enable_compiler_plugins" = "yes"; then
8415         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8416     fi
8418 COMPILER_PLUGINS_ANALYZER_PCH=
8419 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8420     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8422 AC_SUBST(COMPILER_PLUGINS)
8423 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8424 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8425 AC_SUBST(COMPILER_PLUGINS_CXX)
8426 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8427 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8428 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8429 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8430 AC_SUBST(CLANGDIR)
8431 AC_SUBST(CLANGLIBDIR)
8432 AC_SUBST(CLANGTOOLLIBS)
8433 AC_SUBST(CLANGSYSINCLUDE)
8435 # Plugin to help linker.
8436 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8437 # This makes --enable-lto build with clang work.
8438 AC_SUBST(LD_PLUGIN)
8440 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8441 AC_SUBST(HAVE_POSIX_FALLOCATE)
8443 JITC_PROCESSOR_TYPE=""
8444 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8445     # IBMs JDK needs this...
8446     JITC_PROCESSOR_TYPE=6
8447     export JITC_PROCESSOR_TYPE
8449 AC_SUBST([JITC_PROCESSOR_TYPE])
8451 # Misc Windows Stuff
8452 AC_ARG_WITH(ucrt-dir,
8453     AS_HELP_STRING([--with-ucrt-dir],
8454         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8455         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8456         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8457             Windows6.1-KB2999226-x64.msu
8458             Windows6.1-KB2999226-x86.msu
8459             Windows8.1-KB2999226-x64.msu
8460             Windows8.1-KB2999226-x86.msu
8461             Windows8-RT-KB2999226-x64.msu
8462             Windows8-RT-KB2999226-x86.msu
8463         A zip archive including those files is available from Microsoft site:
8464         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8467 UCRT_REDISTDIR="$with_ucrt_dir"
8468 if test $_os = "WINNT"; then
8469     find_msvc_x64_dlls
8470     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8471     MSVC_DLLS="$msvcdlls"
8472     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8473         with_redist=143
8474     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8475         with_redist=142
8476     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8477         with_redist=141
8478     fi
8479     for i in $PKGFORMAT; do
8480         if test "$i" = msi; then
8481             find_msms "$with_redist"
8482             if test -n "$msmdir"; then
8483                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8484                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8485             fi
8486             break
8487         fi
8488     done
8490     if test "$UCRT_REDISTDIR" = "no"; then
8491         dnl explicitly disabled
8492         UCRT_REDISTDIR=""
8493     else
8494         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8495                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8496                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8497                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8498                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8499                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8500             UCRT_REDISTDIR=""
8501             if test -n "$PKGFORMAT"; then
8502                for i in $PKGFORMAT; do
8503                    case "$i" in
8504                    msi)
8505                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8506                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8507                        ;;
8508                    esac
8509                done
8510             fi
8511         fi
8512     fi
8515 AC_SUBST(UCRT_REDISTDIR)
8516 AC_SUBST(MSVC_DLL_PATH)
8517 AC_SUBST(MSVC_DLLS)
8518 AC_SUBST(MSM_PATH)
8521 dnl ===================================================================
8522 dnl Checks for Java
8523 dnl ===================================================================
8524 if test "$ENABLE_JAVA" != ""; then
8526     # Windows-specific tests
8527     if test "$build_os" = "cygwin"; then
8528         if test -z "$with_jdk_home"; then
8529             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8530             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8531             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8532             if test -n "$regvalue"; then
8533                 ver=$regvalue
8534                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8535                 with_jdk_home=$regvalue
8536             fi
8537             howfound="found automatically"
8538         else
8539             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8540             howfound="you passed"
8541         fi
8543         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8544             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])
8545         fi
8546     fi
8548     # 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.
8549     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8550     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8551         with_jdk_home=`/usr/libexec/java_home`
8552     fi
8554     JAVA_HOME=; export JAVA_HOME
8555     if test -z "$with_jdk_home"; then
8556         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8557     else
8558         _java_path="$with_jdk_home/bin/$with_java"
8559         dnl Check if there is a Java interpreter at all.
8560         if test -x "$_java_path"; then
8561             JAVAINTERPRETER=$_java_path
8562         else
8563             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8564         fi
8565     fi
8567     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8568     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8569     dnl loaded by java to run JunitTests:
8570     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8571         shortjdkhome=`cygpath -d "$with_jdk_home"`
8572         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
8573             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8574             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8575         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
8576             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8577             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8578         fi
8580         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8581             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8582         fi
8583         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8584     elif test "$cross_compiling" != "yes"; then
8585         case $CPUNAME in
8586             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8587                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8588                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8589                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8590                 fi
8591                 ;;
8592             *) # assumption: everything else 32-bit
8593                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8594                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8595                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8596                 fi
8597                 ;;
8598         esac
8599     fi
8602 dnl ===================================================================
8603 dnl Checks for JDK.
8604 dnl ===================================================================
8606 # Whether all the complexity here actually is needed any more or not, no idea.
8608 JDK_SECURITYMANAGER_DISALLOWED=
8609 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8610     _gij_longver=0
8611     AC_MSG_CHECKING([the installed JDK])
8612     if test -n "$JAVAINTERPRETER"; then
8613         dnl java -version sends output to stderr!
8614         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8615             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8616         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8617             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8618         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8619             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8620         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8621             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8622         else
8623             JDK=sun
8625             dnl Sun JDK specific tests
8626             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8627             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8629             if test "$_jdk_ver" -lt 10900; then
8630                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8631             fi
8632             if test "$_jdk_ver" -gt 10900; then
8633                 JAVA_CLASSPATH_NOT_SET=TRUE
8634             fi
8635             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8636             dnl completely removed in some Java version > 18 (see
8637             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8638             if test "$_jdk_ver" -ge 180000; then
8639                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8640             fi
8642             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8643             if test "$_os" = "WINNT"; then
8644                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8645             fi
8646             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8648             # set to limit VM usage for JunitTests
8649             JAVAIFLAGS=-Xmx64M
8650             # set to limit VM usage for javac
8651             JAVACFLAGS=-J-Xmx128M
8652         fi
8653     else
8654         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8655     fi
8656 else
8657     if test -z "$ENABLE_JAVA"; then
8658         dnl Java disabled
8659         JAVA_HOME=
8660         export JAVA_HOME
8661     elif test "$cross_compiling" = "yes"; then
8662         # Just assume compatibility of build and host JDK
8663         JDK=$JDK_FOR_BUILD
8664         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8665     fi
8668 dnl ===================================================================
8669 dnl Checks for javac
8670 dnl ===================================================================
8671 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8672     javacompiler="javac"
8673     : ${JAVA_SOURCE_VER=8}
8674     : ${JAVA_TARGET_VER=8}
8675     if test -z "$with_jdk_home"; then
8676         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8677     else
8678         _javac_path="$with_jdk_home/bin/$javacompiler"
8679         dnl Check if there is a Java compiler at all.
8680         if test -x "$_javac_path"; then
8681             JAVACOMPILER=$_javac_path
8682         fi
8683     fi
8684     if test -z "$JAVACOMPILER"; then
8685         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8686     fi
8687     if test "$build_os" = "cygwin"; then
8688         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8689             JAVACOMPILER="${JAVACOMPILER}.exe"
8690         fi
8691         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8692     fi
8695 dnl ===================================================================
8696 dnl Checks for javadoc
8697 dnl ===================================================================
8698 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8699     if test -z "$with_jdk_home"; then
8700         AC_PATH_PROG(JAVADOC, javadoc)
8701     else
8702         _javadoc_path="$with_jdk_home/bin/javadoc"
8703         dnl Check if there is a javadoc at all.
8704         if test -x "$_javadoc_path"; then
8705             JAVADOC=$_javadoc_path
8706         else
8707             AC_PATH_PROG(JAVADOC, javadoc)
8708         fi
8709     fi
8710     if test -z "$JAVADOC"; then
8711         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8712     fi
8713     if test "$build_os" = "cygwin"; then
8714         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8715             JAVADOC="${JAVADOC}.exe"
8716         fi
8717         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8718     fi
8720     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8721     JAVADOCISGJDOC="yes"
8722     fi
8724 AC_SUBST(JAVADOC)
8725 AC_SUBST(JAVADOCISGJDOC)
8727 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8728     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8729     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8730         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8731            # try to recover first by looking whether we have an alternative
8732            # system as in Debian or newer SuSEs where following /usr/bin/javac
8733            # over /etc/alternatives/javac leads to the right bindir where we
8734            # just need to strip a bit away to get a valid JAVA_HOME
8735            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8736         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8737             # maybe only one level of symlink (e.g. on Mac)
8738             JAVA_HOME=$(readlink $JAVACOMPILER)
8739             if test "$(dirname $JAVA_HOME)" = "."; then
8740                 # we've got no path to trim back
8741                 JAVA_HOME=""
8742             fi
8743         else
8744             # else warn
8745             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8746             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8747             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8748             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8749         fi
8750         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8751         if test "$JAVA_HOME" != "/usr"; then
8752             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8753                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8754                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8755                 dnl Tiger already returns a JDK path...
8756                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8757             else
8758                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8759                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8760                 dnl that checks which version to run
8761                 if test -f "$JAVA_HOME"; then
8762                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8763                 fi
8764             fi
8765         fi
8766     fi
8767     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8769     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8770     if test -z "$JAVA_HOME"; then
8771         if test "x$with_jdk_home" = "x"; then
8772             cat > findhome.java <<_ACEOF
8773 [import java.io.File;
8775 class findhome
8777     public static void main(String args[])
8778     {
8779         String jrelocation = System.getProperty("java.home");
8780         File jre = new File(jrelocation);
8781         System.out.println(jre.getParent());
8782     }
8784 _ACEOF
8785             AC_MSG_CHECKING([if javac works])
8786             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8787             AC_TRY_EVAL(javac_cmd)
8788             if test $? = 0 -a -f ./findhome.class; then
8789                 AC_MSG_RESULT([javac works])
8790             else
8791                 echo "configure: javac test failed" >&5
8792                 cat findhome.java >&5
8793                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8794             fi
8795             AC_MSG_CHECKING([if gij knows its java.home])
8796             JAVA_HOME=`$JAVAINTERPRETER findhome`
8797             if test $? = 0 -a "$JAVA_HOME" != ""; then
8798                 AC_MSG_RESULT([$JAVA_HOME])
8799             else
8800                 echo "configure: java test failed" >&5
8801                 cat findhome.java >&5
8802                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8803             fi
8804             # clean-up after ourselves
8805             rm -f ./findhome.java ./findhome.class
8806         else
8807             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8808         fi
8809     fi
8811     # now check if $JAVA_HOME is really valid
8812     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8813         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8814             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8815             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8816             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8817             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8818             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8819             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8820         fi
8821     fi
8822     PathFormat "$JAVA_HOME"
8823     JAVA_HOME="$formatted_path"
8826 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8827     "$_os" != Darwin
8828 then
8829     AC_MSG_CHECKING([for JAWT lib])
8830     if test "$_os" = WINNT; then
8831         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8832         JAWTLIB=jawt.lib
8833     else
8834         case "$host_cpu" in
8835         arm*)
8836             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8837             JAVA_ARCH=$my_java_arch
8838             ;;
8839         i*86)
8840             my_java_arch=i386
8841             ;;
8842         m68k)
8843             my_java_arch=m68k
8844             ;;
8845         powerpc)
8846             my_java_arch=ppc
8847             ;;
8848         powerpc64)
8849             my_java_arch=ppc64
8850             ;;
8851         powerpc64le)
8852             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8853             JAVA_ARCH=$my_java_arch
8854             ;;
8855         sparc64)
8856             my_java_arch=sparcv9
8857             ;;
8858         x86_64)
8859             my_java_arch=amd64
8860             ;;
8861         *)
8862             my_java_arch=$host_cpu
8863             ;;
8864         esac
8865         # This is where JDK9 puts the library
8866         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8867             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8868         else
8869             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8870         fi
8871         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8872     fi
8873     AC_MSG_RESULT([$JAWTLIB])
8875 AC_SUBST(JAWTLIB)
8877 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8878     case "$host_os" in
8880     cygwin*|wsl*)
8881         JAVAINC="-I$JAVA_HOME/include/win32"
8882         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8883         ;;
8885     darwin*)
8886         if test -d "$JAVA_HOME/include/darwin"; then
8887             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8888         else
8889             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8890         fi
8891         ;;
8893     dragonfly*)
8894         JAVAINC="-I$JAVA_HOME/include"
8895         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8896         ;;
8898     freebsd*)
8899         JAVAINC="-I$JAVA_HOME/include"
8900         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8901         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8902         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8903         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8904         ;;
8906     k*bsd*-gnu*)
8907         JAVAINC="-I$JAVA_HOME/include"
8908         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8909         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8910         ;;
8912     linux-gnu*)
8913         JAVAINC="-I$JAVA_HOME/include"
8914         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8915         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8916         ;;
8918     *netbsd*)
8919         JAVAINC="-I$JAVA_HOME/include"
8920         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8921         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8922        ;;
8924     openbsd*)
8925         JAVAINC="-I$JAVA_HOME/include"
8926         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8927         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8928         ;;
8930     solaris*)
8931         JAVAINC="-I$JAVA_HOME/include"
8932         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8933         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8934         ;;
8935     esac
8937 SOLARINC="$SOLARINC $JAVAINC"
8939 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8940     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8941     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8942     JDK_FOR_BUILD=$JDK
8943     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8946 AC_SUBST(JAVACFLAGS)
8947 AC_SUBST(JAVACOMPILER)
8948 AC_SUBST(JAVAINTERPRETER)
8949 AC_SUBST(JAVAIFLAGS)
8950 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8951 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8952 AC_SUBST(JAVA_HOME)
8953 AC_SUBST(JAVA_HOME_FOR_BUILD)
8954 AC_SUBST(JDK)
8955 AC_SUBST(JDK_FOR_BUILD)
8956 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8957 AC_SUBST(JAVA_SOURCE_VER)
8958 AC_SUBST(JAVA_TARGET_VER)
8961 dnl ===================================================================
8962 dnl Export file validation
8963 dnl ===================================================================
8964 AC_MSG_CHECKING([whether to enable export file validation])
8965 if test "$with_export_validation" != "no"; then
8966     if test -z "$ENABLE_JAVA"; then
8967         if test "$with_export_validation" = "yes"; then
8968             AC_MSG_ERROR([requested, but Java is disabled])
8969         else
8970             AC_MSG_RESULT([no, as Java is disabled])
8971         fi
8972     elif ! test -d "${SRC_ROOT}/schema"; then
8973         if test "$with_export_validation" = "yes"; then
8974             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8975         else
8976             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8977         fi
8978     else
8979         AC_MSG_RESULT([yes])
8980         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8982         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8983         if test -z "$ODFVALIDATOR"; then
8984             # remember to download the ODF toolkit with validator later
8985             AC_MSG_NOTICE([no odfvalidator found, will download it])
8986             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8987             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8989             # and fetch name of odfvalidator jar name from download.lst
8990             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8991             AC_SUBST(ODFVALIDATOR_JAR)
8993             if test -z "$ODFVALIDATOR_JAR"; then
8994                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8995             fi
8996         fi
8997         if test "$build_os" = "cygwin"; then
8998             # In case of Cygwin it will be executed from Windows,
8999             # so we need to run bash and absolute path to validator
9000             # so instead of "odfvalidator" it will be
9001             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9002             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9003         else
9004             ODFVALIDATOR="sh $ODFVALIDATOR"
9005         fi
9006         AC_SUBST(ODFVALIDATOR)
9009         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9010         if test -z "$OFFICEOTRON"; then
9011             # remember to download the officeotron with validator later
9012             AC_MSG_NOTICE([no officeotron found, will download it])
9013             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9014             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9016             # and fetch name of officeotron jar name from download.lst
9017             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9018             AC_SUBST(OFFICEOTRON_JAR)
9020             if test -z "$OFFICEOTRON_JAR"; then
9021                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9022             fi
9023         else
9024             # check version of existing officeotron
9025             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9026             if test 0"$OFFICEOTRON_VER" -lt 704; then
9027                 AC_MSG_ERROR([officeotron too old])
9028             fi
9029         fi
9030         if test "$build_os" = "cygwin"; then
9031             # In case of Cygwin it will be executed from Windows,
9032             # so we need to run bash and absolute path to validator
9033             # so instead of "odfvalidator" it will be
9034             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9035             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9036         else
9037             OFFICEOTRON="sh $OFFICEOTRON"
9038         fi
9039     fi
9040     AC_SUBST(OFFICEOTRON)
9041 else
9042     AC_MSG_RESULT([no])
9045 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9046 if test "$with_bffvalidator" != "no"; then
9047     AC_DEFINE(HAVE_BFFVALIDATOR)
9049     if test "$with_export_validation" = "no"; then
9050         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9051     fi
9053     if test "$with_bffvalidator" = "yes"; then
9054         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9055     else
9056         BFFVALIDATOR="$with_bffvalidator"
9057     fi
9059     if test "$build_os" = "cygwin"; then
9060         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9061             AC_MSG_RESULT($BFFVALIDATOR)
9062         else
9063             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9064         fi
9065     elif test -n "$BFFVALIDATOR"; then
9066         # We are not in Cygwin but need to run Windows binary with wine
9067         AC_PATH_PROGS(WINE, wine)
9069         # so swap in a shell wrapper that converts paths transparently
9070         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9071         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9072         AC_SUBST(BFFVALIDATOR_EXE)
9073         AC_MSG_RESULT($BFFVALIDATOR)
9074     else
9075         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9076     fi
9077     AC_SUBST(BFFVALIDATOR)
9078 else
9079     AC_MSG_RESULT([no])
9082 dnl ===================================================================
9083 dnl Check for epm (not needed for Windows)
9084 dnl ===================================================================
9085 AC_MSG_CHECKING([whether to enable EPM for packing])
9086 if test "$enable_epm" = "yes"; then
9087     AC_MSG_RESULT([yes])
9088     if test "$_os" != "WINNT"; then
9089         if test $_os = Darwin; then
9090             EPM=internal
9091         elif test -n "$with_epm"; then
9092             EPM=$with_epm
9093         else
9094             AC_PATH_PROG(EPM, epm, no)
9095         fi
9096         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9097             AC_MSG_NOTICE([EPM will be built.])
9098             BUILD_TYPE="$BUILD_TYPE EPM"
9099             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9100         else
9101             # Gentoo has some epm which is something different...
9102             AC_MSG_CHECKING([whether the found epm is the right epm])
9103             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9104                 AC_MSG_RESULT([yes])
9105             else
9106                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9107             fi
9108             AC_MSG_CHECKING([epm version])
9109             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9110             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9111                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9112                 AC_MSG_RESULT([OK, >= 3.7])
9113             else
9114                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9115                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9116             fi
9117         fi
9118     fi
9120     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9121         AC_MSG_CHECKING([for rpm])
9122         for a in "$RPM" rpmbuild rpm; do
9123             $a --usage >/dev/null 2> /dev/null
9124             if test $? -eq 0; then
9125                 RPM=$a
9126                 break
9127             else
9128                 $a --version >/dev/null 2> /dev/null
9129                 if test $? -eq 0; then
9130                     RPM=$a
9131                     break
9132                 fi
9133             fi
9134         done
9135         if test -z "$RPM"; then
9136             AC_MSG_ERROR([not found])
9137         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9138             RPM_PATH=`which $RPM`
9139             AC_MSG_RESULT([$RPM_PATH])
9140             SCPDEFS="$SCPDEFS -DWITH_RPM"
9141         else
9142             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9143         fi
9144     fi
9145     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9146         AC_PATH_PROG(DPKG, dpkg, no)
9147         if test "$DPKG" = "no"; then
9148             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9149         fi
9150     fi
9151     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9152        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9153         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9154             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9155                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9156                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9157                     AC_MSG_RESULT([yes])
9158                 else
9159                     AC_MSG_RESULT([no])
9160                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9161                         _pt="rpm"
9162                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9163                         add_warning "the rpms will need to be installed with --nodeps"
9164                     else
9165                         _pt="pkg"
9166                     fi
9167                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9168                     add_warning "the ${_pt}s will not be relocatable"
9169                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9170                                  relocation will work, you need to patch your epm with the
9171                                  patch in epm/epm-3.7.patch or build with
9172                                  --with-epm=internal which will build a suitable epm])
9173                 fi
9174             fi
9175         fi
9176     fi
9177     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9178         AC_PATH_PROG(PKGMK, pkgmk, no)
9179         if test "$PKGMK" = "no"; then
9180             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9181         fi
9182     fi
9183     AC_SUBST(RPM)
9184     AC_SUBST(DPKG)
9185     AC_SUBST(PKGMK)
9186 else
9187     for i in $PKGFORMAT; do
9188         case "$i" in
9189         bsd | deb | pkg | rpm | native | portable)
9190             AC_MSG_ERROR(
9191                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9192             ;;
9193         esac
9194     done
9195     AC_MSG_RESULT([no])
9196     EPM=NO
9198 AC_SUBST(EPM)
9200 ENABLE_LWP=
9201 if test "$enable_lotuswordpro" = "yes"; then
9202     ENABLE_LWP="TRUE"
9204 AC_SUBST(ENABLE_LWP)
9206 dnl ===================================================================
9207 dnl Check for building ODK
9208 dnl ===================================================================
9209 AC_MSG_CHECKING([whether to build the ODK])
9210 if test "$enable_odk" = yes; then
9211     if test "$DISABLE_DYNLOADING" = TRUE; then
9212         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9213     fi
9214     AC_MSG_RESULT([yes])
9215     BUILD_TYPE="$BUILD_TYPE ODK"
9216 else
9217     AC_MSG_RESULT([no])
9220 if test "$enable_odk" != yes; then
9221     unset DOXYGEN
9222 else
9223     if test "$with_doxygen" = no; then
9224         AC_MSG_CHECKING([for doxygen])
9225         unset DOXYGEN
9226         AC_MSG_RESULT([no])
9227     else
9228         if test "$with_doxygen" = yes; then
9229             AC_PATH_PROG([DOXYGEN], [doxygen])
9230             if test -z "$DOXYGEN"; then
9231                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9232             fi
9233             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9234                 if ! dot -V 2>/dev/null; then
9235                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9236                 fi
9237             fi
9238         else
9239             AC_MSG_CHECKING([for doxygen])
9240             DOXYGEN=$with_doxygen
9241             AC_MSG_RESULT([$DOXYGEN])
9242         fi
9243         if test -n "$DOXYGEN"; then
9244             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9245             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9246             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9247                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9248             fi
9249         fi
9250     fi
9252 AC_SUBST([DOXYGEN])
9254 dnl ==================================================================
9255 dnl libfuzzer
9256 dnl ==================================================================
9257 AC_MSG_CHECKING([whether to enable fuzzers])
9258 if test "$enable_fuzzers" != yes; then
9259     AC_MSG_RESULT([no])
9260 else
9261     if test -z $LIB_FUZZING_ENGINE; then
9262       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9263     fi
9264     AC_MSG_RESULT([yes])
9265     ENABLE_FUZZERS="TRUE"
9266     AC_DEFINE([ENABLE_FUZZERS],1)
9267     AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9268     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9270 AC_SUBST(LIB_FUZZING_ENGINE)
9272 dnl ===================================================================
9273 dnl Check for system zlib
9274 dnl ===================================================================
9275 if test "$with_system_zlib" = "auto"; then
9276     case "$_os" in
9277     WINNT)
9278         with_system_zlib="$with_system_libs"
9279         ;;
9280     *)
9281         if test "$enable_fuzzers" != "yes"; then
9282             with_system_zlib=yes
9283         else
9284             with_system_zlib=no
9285         fi
9286         ;;
9287     esac
9290 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9291 dnl and has no pkg-config for it at least on some tinderboxes,
9292 dnl so leaving that out for now
9293 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9294 AC_MSG_CHECKING([which zlib to use])
9295 if test "$with_system_zlib" = "yes"; then
9296     AC_MSG_RESULT([external])
9297     SYSTEM_ZLIB=TRUE
9298     AC_CHECK_HEADER(zlib.h, [],
9299         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9300     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9301         [AC_MSG_ERROR(zlib not found or functional)], [])
9302 else
9303     AC_MSG_RESULT([internal])
9304     SYSTEM_ZLIB=
9305     BUILD_TYPE="$BUILD_TYPE ZLIB"
9306     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9307     if test "$COM" = "MSC"; then
9308         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9309     else
9310         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9311     fi
9313 AC_SUBST(ZLIB_CFLAGS)
9314 AC_SUBST(ZLIB_LIBS)
9315 AC_SUBST(SYSTEM_ZLIB)
9317 dnl ===================================================================
9318 dnl Check for system jpeg
9319 dnl ===================================================================
9320 AC_MSG_CHECKING([which libjpeg to use])
9321 if test "$with_system_jpeg" = "yes"; then
9322     AC_MSG_RESULT([external])
9323     SYSTEM_LIBJPEG=TRUE
9324     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9325         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9326     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9327         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9328 else
9329     SYSTEM_LIBJPEG=
9330     AC_MSG_RESULT([internal, libjpeg-turbo])
9331     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9333     case "$host_cpu" in
9334     x86_64 | amd64 | i*86 | x86 | ia32)
9335         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9336         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9337             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9338                 NASM="$LODE_HOME/opt/bin/nasm"
9339             elif test -x "/opt/lo/bin/nasm"; then
9340                 NASM="/opt/lo/bin/nasm"
9341             fi
9342         fi
9344         if test -n "$NASM"; then
9345             AC_MSG_CHECKING([for object file format of host system])
9346             case "$host_os" in
9347               cygwin* | mingw* | pw32* | wsl*)
9348                 case "$host_cpu" in
9349                   x86_64)
9350                     objfmt='Win64-COFF'
9351                     ;;
9352                   *)
9353                     objfmt='Win32-COFF'
9354                     ;;
9355                 esac
9356               ;;
9357               msdosdjgpp* | go32*)
9358                 objfmt='COFF'
9359               ;;
9360               os2-emx*) # not tested
9361                 objfmt='MSOMF' # obj
9362               ;;
9363               linux*coff* | linux*oldld*)
9364                 objfmt='COFF' # ???
9365               ;;
9366               linux*aout*)
9367                 objfmt='a.out'
9368               ;;
9369               linux*)
9370                 case "$host_cpu" in
9371                   x86_64)
9372                     objfmt='ELF64'
9373                     ;;
9374                   *)
9375                     objfmt='ELF'
9376                     ;;
9377                 esac
9378               ;;
9379               kfreebsd* | freebsd* | netbsd* | openbsd*)
9380                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9381                   objfmt='BSD-a.out'
9382                 else
9383                   case "$host_cpu" in
9384                     x86_64 | amd64)
9385                       objfmt='ELF64'
9386                       ;;
9387                     *)
9388                       objfmt='ELF'
9389                       ;;
9390                   esac
9391                 fi
9392               ;;
9393               solaris* | sunos* | sysv* | sco*)
9394                 case "$host_cpu" in
9395                   x86_64)
9396                     objfmt='ELF64'
9397                     ;;
9398                   *)
9399                     objfmt='ELF'
9400                     ;;
9401                 esac
9402               ;;
9403               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9404                 case "$host_cpu" in
9405                   x86_64)
9406                     objfmt='Mach-O64'
9407                     ;;
9408                   *)
9409                     objfmt='Mach-O'
9410                     ;;
9411                 esac
9412               ;;
9413               *)
9414                 objfmt='ELF ?'
9415               ;;
9416             esac
9418             AC_MSG_RESULT([$objfmt])
9419             if test "$objfmt" = 'ELF ?'; then
9420               objfmt='ELF'
9421               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9422             fi
9424             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9425             case "$objfmt" in
9426               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9427               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9428               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9429               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9430               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9431               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9432               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9433               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9434               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9435               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9436               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9437             esac
9438             AC_MSG_RESULT([$NAFLAGS])
9440             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9441             cat > conftest.asm << EOF
9442             [%line __oline__ "configure"
9443                     section .text
9444                     global  _main,main
9445             _main:
9446             main:   xor     eax,eax
9447                     ret
9448             ]
9450             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9451             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9452               AC_MSG_RESULT(yes)
9453             else
9454               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9455               cat conftest.asm >&AS_MESSAGE_LOG_FD
9456               rm -rf conftest*
9457               AC_MSG_RESULT(no)
9458               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9459               NASM=""
9460             fi
9462         fi
9464         if test -z "$NASM"; then
9465 cat << _EOS
9466 ****************************************************************************
9467 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9468 To get one please:
9470 _EOS
9471             if test "$build_os" = "cygwin"; then
9472 cat << _EOS
9473 install a pre-compiled binary for Win32
9475 mkdir -p /opt/lo/bin
9476 cd /opt/lo/bin
9477 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9478 chmod +x nasm
9480 or get and install one from https://www.nasm.us/
9482 Then re-run autogen.sh
9484 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9485 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9487 _EOS
9488             else
9489 cat << _EOS
9490 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9492 _EOS
9493             fi
9494             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9495             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9496         fi
9497       ;;
9498     esac
9501 AC_SUBST(NASM)
9502 AC_SUBST(NAFLAGS)
9503 AC_SUBST(LIBJPEG_CFLAGS)
9504 AC_SUBST(LIBJPEG_LIBS)
9505 AC_SUBST(SYSTEM_LIBJPEG)
9507 dnl ===================================================================
9508 dnl Check for system clucene
9509 dnl ===================================================================
9510 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9511 if test "$SYSTEM_CLUCENE" = TRUE; then
9512     AC_LANG_PUSH([C++])
9513     save_CXXFLAGS=$CXXFLAGS
9514     save_CPPFLAGS=$CPPFLAGS
9515     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9516     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9517     dnl https://sourceforge.net/p/clucene/bugs/200/
9518     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9519     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9520                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9521     CXXFLAGS=$save_CXXFLAGS
9522     CPPFLAGS=$save_CPPFLAGS
9523     AC_LANG_POP([C++])
9524     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9527 dnl ===================================================================
9528 dnl Check for system expat
9529 dnl ===================================================================
9530 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9532 dnl ===================================================================
9533 dnl Check for system xmlsec
9534 dnl ===================================================================
9535 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9537 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9538 if test "$enable_eot" = "yes"; then
9539     ENABLE_EOT="TRUE"
9540     AC_DEFINE([ENABLE_EOT])
9541     AC_MSG_RESULT([yes])
9543     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9544 else
9545     ENABLE_EOT=
9546     AC_MSG_RESULT([no])
9548 AC_SUBST([ENABLE_EOT])
9550 dnl ===================================================================
9551 dnl Check for DLP libs
9552 dnl ===================================================================
9553 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9554 AS_IF([test "$COM" = "MSC"],
9555       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9556       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9558 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9559 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9561 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9563 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9565 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9566 AS_IF([test "$COM" = "MSC"],
9567       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9568       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9570 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9571 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9573 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9575 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9576 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9578 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9580 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9582 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9584 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9585 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9587 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9588 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9590 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9592 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9593 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9595 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9597 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9599 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9601 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9603 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9604 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9606 dnl ===================================================================
9607 dnl Check for system lcms2
9608 dnl ===================================================================
9609 if test "$with_system_lcms2" != "yes"; then
9610     SYSTEM_LCMS2=
9612 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9613 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9614 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9615 if test "$GCC" = "yes"; then
9616     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9618 if test "$COM" = "MSC"; then # override the above
9619     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9622 dnl ===================================================================
9623 dnl Check for system cppunit
9624 dnl ===================================================================
9625 if test "$_os" != "Android" ; then
9626     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9629 dnl ===================================================================
9630 dnl Check whether freetype is available
9632 dnl FreeType has 3 different kinds of versions
9633 dnl * release, like 2.4.10
9634 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9635 dnl * soname
9636 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9638 dnl 9.9.3 is 2.2.0
9639 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9640 dnl ===================================================================
9641 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9642 if test "x$ac_config_site_64bit_host" = xYES; then
9643     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9644 else
9645     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9647 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9649 # ===================================================================
9650 # Check for system libxslt
9651 # to prevent incompatibilities between internal libxml2 and external libxslt,
9652 # or vice versa, use with_system_libxml here
9653 # ===================================================================
9654 if test "$with_system_libxml" = "auto"; then
9655     case "$_os" in
9656     WINNT|iOS|Android)
9657         with_system_libxml="$with_system_libs"
9658         ;;
9659     Emscripten)
9660         with_system_libxml=no
9661         ;;
9662     *)
9663         if test "$enable_fuzzers" != "yes"; then
9664             with_system_libxml=yes
9665         else
9666             with_system_libxml=no
9667         fi
9668         ;;
9669     esac
9672 AC_MSG_CHECKING([which libxslt to use])
9673 if test "$with_system_libxml" = "yes"; then
9674     AC_MSG_RESULT([external])
9675     SYSTEM_LIBXSLT=TRUE
9676     if test "$_os" = "Darwin"; then
9677         dnl make sure to use SDK path
9678         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9679         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9680         dnl omit -L/usr/lib
9681         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9682         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9683     else
9684         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9685         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9686         FilterLibs "${LIBXSLT_LIBS}"
9687         LIBXSLT_LIBS="${filteredlibs}"
9688         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9689         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9690         FilterLibs "${LIBEXSLT_LIBS}"
9691         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9692     fi
9694     dnl Check for xsltproc
9695     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9696     if test "$XSLTPROC" = "no"; then
9697         AC_MSG_ERROR([xsltproc is required])
9698     fi
9699 else
9700     AC_MSG_RESULT([internal])
9701     SYSTEM_LIBXSLT=
9702     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9704 AC_SUBST(SYSTEM_LIBXSLT)
9705 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9706     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9708 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9710 AC_SUBST(LIBEXSLT_CFLAGS)
9711 AC_SUBST(LIBEXSLT_LIBS)
9712 AC_SUBST(LIBXSLT_CFLAGS)
9713 AC_SUBST(LIBXSLT_LIBS)
9714 AC_SUBST(XSLTPROC)
9716 # ===================================================================
9717 # Check for system libxml
9718 # ===================================================================
9719 AC_MSG_CHECKING([which libxml to use])
9720 if test "$with_system_libxml" = "yes"; then
9721     AC_MSG_RESULT([external])
9722     SYSTEM_LIBXML=TRUE
9723     if test "$_os" = "Darwin"; then
9724         dnl make sure to use SDK path
9725         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9726         dnl omit -L/usr/lib
9727         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9728     elif test $_os = iOS; then
9729         dnl make sure to use SDK path
9730         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9731         LIBXML_CFLAGS="-I$usr/include/libxml2"
9732         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9733     else
9734         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9735         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9736         FilterLibs "${LIBXML_LIBS}"
9737         LIBXML_LIBS="${filteredlibs}"
9738     fi
9740     dnl Check for xmllint
9741     AC_PATH_PROG(XMLLINT, xmllint, no)
9742     if test "$XMLLINT" = "no"; then
9743         AC_MSG_ERROR([xmllint is required])
9744     fi
9745 else
9746     AC_MSG_RESULT([internal])
9747     SYSTEM_LIBXML=
9748     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9749     if test "$COM" = "MSC"; then
9750         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9751     fi
9752     if test "$COM" = "MSC"; then
9753         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9754     else
9755         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9756         if test "$DISABLE_DYNLOADING" = TRUE; then
9757             LIBXML_LIBS="$LIBXML_LIBS -lm"
9758         fi
9759     fi
9760     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9762 AC_SUBST(SYSTEM_LIBXML)
9763 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9764     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9766 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9767 AC_SUBST(LIBXML_CFLAGS)
9768 AC_SUBST(LIBXML_LIBS)
9769 AC_SUBST(XMLLINT)
9771 # =====================================================================
9772 # Checking for a Python interpreter with version >= 3.3.
9773 # Optionally user can pass an option to configure, i. e.
9774 # ./configure PYTHON=/usr/bin/python
9775 # =====================================================================
9776 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9777     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9778     # unless PYTHON is defined as above which allows 'system'
9779     enable_python=internal
9781 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9782     if test -n "$PYTHON"; then
9783         PYTHON_FOR_BUILD=$PYTHON
9784     else
9785         # This allows a lack of system python with no error, we use internal one in that case.
9786         AM_PATH_PYTHON([3.3],, [:])
9787         # Clean PYTHON_VERSION checked below if cross-compiling
9788         PYTHON_VERSION=""
9789         if test "$PYTHON" != ":"; then
9790             PYTHON_FOR_BUILD=$PYTHON
9791         fi
9792     fi
9795 # Checks for Python to use for Pyuno
9796 AC_MSG_CHECKING([which Python to use for Pyuno])
9797 case "$enable_python" in
9798 no|disable)
9799     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9800         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9801         # requirement from the choice whether to include Python stuff in the installer, but why
9802         # bother?
9803         AC_MSG_ERROR([Python is required at build time.])
9804     fi
9805     enable_python=no
9806     AC_MSG_RESULT([none])
9807     ;;
9808 ""|yes|auto)
9809     if test "$DISABLE_SCRIPTING" = TRUE; then
9810         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9811             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9812         fi
9813         AC_MSG_RESULT([none, overridden by --disable-scripting])
9814         enable_python=no
9815     elif test $build_os = cygwin -o $build_os = wsl; then
9816         dnl When building on Windows we don't attempt to use any installed
9817         dnl "system"  Python.
9818         AC_MSG_RESULT([fully internal])
9819         enable_python=internal
9820     elif test "$cross_compiling" = yes; then
9821         AC_MSG_RESULT([system])
9822         enable_python=system
9823     else
9824         # Unset variables set by the above AM_PATH_PYTHON so that
9825         # we actually do check anew.
9826         AC_MSG_RESULT([])
9827         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
9828         AM_PATH_PYTHON([3.3],, [:])
9829         AC_MSG_CHECKING([which Python to use for Pyuno])
9830         if test "$PYTHON" = ":"; then
9831             if test -z "$PYTHON_FOR_BUILD"; then
9832                 AC_MSG_RESULT([fully internal])
9833             else
9834                 AC_MSG_RESULT([internal])
9835             fi
9836             enable_python=internal
9837         else
9838             AC_MSG_RESULT([system])
9839             enable_python=system
9840         fi
9841     fi
9842     ;;
9843 internal)
9844     AC_MSG_RESULT([internal])
9845     ;;
9846 fully-internal)
9847     AC_MSG_RESULT([fully internal])
9848     enable_python=internal
9849     ;;
9850 system)
9851     AC_MSG_RESULT([system])
9852     if test "$_os" = Darwin -a -z "$PYTHON"; then
9853         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9854     fi
9855     ;;
9857     AC_MSG_ERROR([Incorrect --enable-python option])
9858     ;;
9859 esac
9861 if test $enable_python != no; then
9862     BUILD_TYPE="$BUILD_TYPE PYUNO"
9865 if test $enable_python = system; then
9866     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9867         # Fallback: Accept these in the environment, or as set above
9868         # for MacOSX.
9869         :
9870     elif test "$cross_compiling" != yes; then
9871         # Unset variables set by the above AM_PATH_PYTHON so that
9872         # we actually do check anew.
9873         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
9874         # This causes an error if no python command is found
9875         AM_PATH_PYTHON([3.3])
9876         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9877         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9878         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9879         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9880         if test -z "$PKG_CONFIG"; then
9881             PYTHON_CFLAGS="-I$python_include"
9882             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9883         elif $PKG_CONFIG --exists python-$python_version-embed; then
9884             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9885             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9886         elif $PKG_CONFIG --exists python-$python_version; then
9887             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9888             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9889         else
9890             PYTHON_CFLAGS="-I$python_include"
9891             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9892         fi
9893         FilterLibs "${PYTHON_LIBS}"
9894         PYTHON_LIBS="${filteredlibs}"
9895     else
9896         dnl How to find out the cross-compilation Python installation path?
9897         AC_MSG_CHECKING([for python version])
9898         AS_IF([test -n "$PYTHON_VERSION"],
9899               [AC_MSG_RESULT([$PYTHON_VERSION])],
9900               [AC_MSG_RESULT([not found])
9901                AC_MSG_ERROR([no usable python found])])
9902         test -n "$PYTHON_CFLAGS" && break
9903     fi
9905     dnl Check if the headers really work
9906     save_CPPFLAGS="$CPPFLAGS"
9907     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9908     AC_CHECK_HEADER(Python.h)
9909     CPPFLAGS="$save_CPPFLAGS"
9911     # let the PYTHON_FOR_BUILD match the same python installation that
9912     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9913     # better for PythonTests.
9914     PYTHON_FOR_BUILD=$PYTHON
9917 if test "$with_lxml" != no; then
9918     if test -z "$PYTHON_FOR_BUILD"; then
9919         case $build_os in
9920             cygwin)
9921                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9922                 ;;
9923             *)
9924                 if test "$cross_compiling" != yes ; then
9925                     BUILD_TYPE="$BUILD_TYPE LXML"
9926                 fi
9927                 ;;
9928         esac
9929     else
9930         AC_MSG_CHECKING([for python lxml])
9931         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9932             AC_MSG_RESULT([yes])
9933         else
9934             case $build_os in
9935                 cygwin)
9936                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9937                     ;;
9938                 *)
9939                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9940                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9941                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9942                         else
9943                             BUILD_TYPE="$BUILD_TYPE LXML"
9944                             AC_MSG_RESULT([no, using internal lxml])
9945                         fi
9946                     else
9947                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9948                     fi
9949                     ;;
9950             esac
9951         fi
9952     fi
9955 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9956     SYSTEM_PYTHON=
9957     PYTHON_VERSION_MAJOR=3
9958     PYTHON_VERSION_MINOR=8
9959     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.17
9960     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9961         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9962     fi
9963     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9965     # Embedded Python dies without Home set
9966     if test "$HOME" = ""; then
9967         export HOME=""
9968     fi
9971 dnl By now enable_python should be "system", "internal" or "no"
9972 case $enable_python in
9973 system)
9974     SYSTEM_PYTHON=TRUE
9976     if test "x$ac_cv_header_Python_h" != "xyes"; then
9977        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9978     fi
9980     AC_LANG_PUSH(C)
9981     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9982     AC_MSG_CHECKING([for correct python library version])
9983        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9984 #include <Python.h>
9986 int main(int argc, char **argv) {
9987    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9988    else return 1;
9990        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9991     AC_LANG_POP(C)
9993     dnl FIXME Check if the Python library can be linked with, too?
9994     ;;
9996 internal)
9997     BUILD_TYPE="$BUILD_TYPE PYTHON"
9998     if test "$OS" = LINUX -o "$OS" = WNT ; then
9999         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10000     fi
10001     ;;
10003     DISABLE_PYTHON=TRUE
10004     SYSTEM_PYTHON=
10005     ;;
10007     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10008     ;;
10009 esac
10011 AC_SUBST(DISABLE_PYTHON)
10012 AC_SUBST(SYSTEM_PYTHON)
10013 AC_SUBST(PYTHON_CFLAGS)
10014 AC_SUBST(PYTHON_FOR_BUILD)
10015 AC_SUBST(PYTHON_LIBS)
10016 AC_SUBST(PYTHON_VERSION)
10017 AC_SUBST(PYTHON_VERSION_MAJOR)
10018 AC_SUBST(PYTHON_VERSION_MINOR)
10020 AC_MSG_CHECKING([whether to build LibreLogo])
10021 case "$enable_python" in
10022 no|disable)
10023     AC_MSG_RESULT([no; Python disabled])
10024     ;;
10026     if test "${enable_librelogo}" = "no"; then
10027         AC_MSG_RESULT([no])
10028     else
10029         AC_MSG_RESULT([yes])
10030         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10031         AC_DEFINE([ENABLE_LIBRELOGO],1)
10032     fi
10033     ;;
10034 esac
10035 AC_SUBST(ENABLE_LIBRELOGO)
10037 ENABLE_MARIADBC=
10038 MARIADBC_MAJOR=1
10039 MARIADBC_MINOR=0
10040 MARIADBC_MICRO=2
10041 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10042 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10043     ENABLE_MARIADBC=TRUE
10044     AC_MSG_RESULT([yes])
10045     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10046 else
10047     AC_MSG_RESULT([no])
10049 AC_SUBST(ENABLE_MARIADBC)
10050 AC_SUBST(MARIADBC_MAJOR)
10051 AC_SUBST(MARIADBC_MINOR)
10052 AC_SUBST(MARIADBC_MICRO)
10054 if test "$ENABLE_MARIADBC" = "TRUE"; then
10055     dnl ===================================================================
10056     dnl Check for system MariaDB
10057     dnl ===================================================================
10058     AC_MSG_CHECKING([which MariaDB to use])
10059     if test "$with_system_mariadb" = "yes"; then
10060         AC_MSG_RESULT([external])
10061         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10062         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10063         if test -z "$MARIADBCONFIG"; then
10064             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10065             if test -z "$MARIADBCONFIG"; then
10066                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10067                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10068             fi
10069         fi
10070         AC_MSG_CHECKING([MariaDB version])
10071         MARIADB_VERSION=`$MARIADBCONFIG --version`
10072         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10073         if test "$MARIADB_MAJOR" -ge "5"; then
10074             AC_MSG_RESULT([OK])
10075         else
10076             AC_MSG_ERROR([too old, use 5.0.x or later])
10077         fi
10078         AC_MSG_CHECKING([for MariaDB Client library])
10079         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10080         if test "$COM_IS_CLANG" = TRUE; then
10081             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10082         fi
10083         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10084         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10085         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10086         dnl linux32:
10087         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10088             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10089             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10090                 | sed -e 's|/lib64/|/lib/|')
10091         fi
10092         FilterLibs "${MARIADB_LIBS}"
10093         MARIADB_LIBS="${filteredlibs}"
10094         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10095         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10096         if test "$enable_bundle_mariadb" = "yes"; then
10097             AC_MSG_RESULT([yes])
10098             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10099             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10101 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10103 /g' | grep -E '(mysqlclient|mariadb)')
10104             if test "$_os" = "Darwin"; then
10105                 LIBMARIADB=${LIBMARIADB}.dylib
10106             elif test "$_os" = "WINNT"; then
10107                 LIBMARIADB=${LIBMARIADB}.dll
10108             else
10109                 LIBMARIADB=${LIBMARIADB}.so
10110             fi
10111             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10112             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10113             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10114                 AC_MSG_RESULT([found.])
10115                 PathFormat "$LIBMARIADB_PATH"
10116                 LIBMARIADB_PATH="$formatted_path"
10117             else
10118                 AC_MSG_ERROR([not found.])
10119             fi
10120         else
10121             AC_MSG_RESULT([no])
10122             BUNDLE_MARIADB_CONNECTOR_C=
10123         fi
10124     else
10125         AC_MSG_RESULT([internal])
10126         SYSTEM_MARIADB_CONNECTOR_C=
10127         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10128         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10129         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10130     fi
10132     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10133     AC_SUBST(MARIADB_CFLAGS)
10134     AC_SUBST(MARIADB_LIBS)
10135     AC_SUBST(LIBMARIADB)
10136     AC_SUBST(LIBMARIADB_PATH)
10137     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10140 dnl ===================================================================
10141 dnl Check for system hsqldb
10142 dnl ===================================================================
10143 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10144     AC_MSG_CHECKING([which hsqldb to use])
10145     if test "$with_system_hsqldb" = "yes"; then
10146         AC_MSG_RESULT([external])
10147         SYSTEM_HSQLDB=TRUE
10148         if test -z $HSQLDB_JAR; then
10149             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10150         fi
10151         if ! test -f $HSQLDB_JAR; then
10152                AC_MSG_ERROR(hsqldb.jar not found.)
10153         fi
10154         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10155         export HSQLDB_JAR
10156         if $PERL -e \
10157            'use Archive::Zip;
10158             my $file = "$ENV{'HSQLDB_JAR'}";
10159             my $zip = Archive::Zip->new( $file );
10160             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10161             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10162             {
10163                 push @l, split(/\n/, $mf);
10164                 foreach my $line (@l)
10165                 {
10166                     if ($line =~ m/Specification-Version:/)
10167                     {
10168                         ($t, $version) = split (/:/,$line);
10169                         $version =~ s/^\s//;
10170                         ($a, $b, $c, $d) = split (/\./,$version);
10171                         if ($c == "0" && $d > "8")
10172                         {
10173                             exit 0;
10174                         }
10175                         else
10176                         {
10177                             exit 1;
10178                         }
10179                     }
10180                 }
10181             }
10182             else
10183             {
10184                 exit 1;
10185             }'; then
10186             AC_MSG_RESULT([yes])
10187         else
10188             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10189         fi
10190     else
10191         AC_MSG_RESULT([internal])
10192         SYSTEM_HSQLDB=
10193         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10194         NEED_ANT=TRUE
10195     fi
10196 else
10197     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10198         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10199     fi
10201 AC_SUBST(SYSTEM_HSQLDB)
10202 AC_SUBST(HSQLDB_JAR)
10204 dnl ===================================================================
10205 dnl Check for PostgreSQL stuff
10206 dnl ===================================================================
10207 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10208 if test "x$enable_postgresql_sdbc" != "xno"; then
10209     AC_MSG_RESULT([yes])
10210     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10212     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10213         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10214     fi
10215     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10216         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10217     fi
10219     postgres_interface=""
10220     if test "$with_system_postgresql" = "yes"; then
10221         postgres_interface="external PostgreSQL"
10222         SYSTEM_POSTGRESQL=TRUE
10223         if test "$_os" = Darwin; then
10224             supp_path=''
10225             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10226                 pg_supp_path="$P_SEP$d$pg_supp_path"
10227             done
10228         fi
10229         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10230         if test -n "$PGCONFIG"; then
10231             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10232             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10233         else
10234             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10235               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10236               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10237             ],[
10238               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10239             ])
10240         fi
10241         FilterLibs "${POSTGRESQL_LIB}"
10242         POSTGRESQL_LIB="${filteredlibs}"
10243     else
10244         # if/when anything else than PostgreSQL uses Kerberos,
10245         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10246         WITH_KRB5=
10247         WITH_GSSAPI=
10248         case "$_os" in
10249         Darwin)
10250             # macOS has system MIT Kerberos 5 since 10.4
10251             if test "$with_krb5" != "no"; then
10252                 WITH_KRB5=TRUE
10253                 save_LIBS=$LIBS
10254                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10255                 # that the libraries where these functions are located on macOS will change, is it?
10256                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10257                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10258                 KRB5_LIBS=$LIBS
10259                 LIBS=$save_LIBS
10260                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10261                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10262                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10263                 LIBS=$save_LIBS
10264             fi
10265             if test "$with_gssapi" != "no"; then
10266                 WITH_GSSAPI=TRUE
10267                 save_LIBS=$LIBS
10268                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10269                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10270                 GSSAPI_LIBS=$LIBS
10271                 LIBS=$save_LIBS
10272             fi
10273             ;;
10274         WINNT)
10275             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10276                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10277             fi
10278             ;;
10279         Linux|GNU|*BSD|DragonFly)
10280             if test "$with_krb5" != "no"; then
10281                 WITH_KRB5=TRUE
10282                 save_LIBS=$LIBS
10283                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10284                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10285                 KRB5_LIBS=$LIBS
10286                 LIBS=$save_LIBS
10287                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10288                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10289                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10290                 LIBS=$save_LIBS
10291             fi
10292             if test "$with_gssapi" != "no"; then
10293                 WITH_GSSAPI=TRUE
10294                 save_LIBS=$LIBS
10295                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10296                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10297                 GSSAPI_LIBS=$LIBS
10298                 LIBS=$save_LIBS
10299             fi
10300             ;;
10301         *)
10302             if test "$with_krb5" = "yes"; then
10303                 WITH_KRB5=TRUE
10304                 save_LIBS=$LIBS
10305                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10306                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10307                 KRB5_LIBS=$LIBS
10308                 LIBS=$save_LIBS
10309                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10310                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10311                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10312                 LIBS=$save_LIBS
10313             fi
10314             if test "$with_gssapi" = "yes"; then
10315                 WITH_GSSAPI=TRUE
10316                 save_LIBS=$LIBS
10317                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10318                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10319                 LIBS=$save_LIBS
10320                 GSSAPI_LIBS=$LIBS
10321             fi
10322         esac
10324         if test -n "$with_libpq_path"; then
10325             SYSTEM_POSTGRESQL=TRUE
10326             postgres_interface="external libpq"
10327             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10328             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10329         else
10330             SYSTEM_POSTGRESQL=
10331             postgres_interface="internal"
10332             POSTGRESQL_LIB=""
10333             POSTGRESQL_INC="%OVERRIDE_ME%"
10334             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10335         fi
10336     fi
10338     AC_MSG_CHECKING([PostgreSQL C interface])
10339     AC_MSG_RESULT([$postgres_interface])
10341     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10342         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10343         save_CFLAGS=$CFLAGS
10344         save_CPPFLAGS=$CPPFLAGS
10345         save_LIBS=$LIBS
10346         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10347         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10348         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10349         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10350             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10351         CFLAGS=$save_CFLAGS
10352         CPPFLAGS=$save_CPPFLAGS
10353         LIBS=$save_LIBS
10354     fi
10355     BUILD_POSTGRESQL_SDBC=TRUE
10356 else
10357     AC_MSG_RESULT([no])
10359 AC_SUBST(WITH_KRB5)
10360 AC_SUBST(WITH_GSSAPI)
10361 AC_SUBST(GSSAPI_LIBS)
10362 AC_SUBST(KRB5_LIBS)
10363 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10364 AC_SUBST(SYSTEM_POSTGRESQL)
10365 AC_SUBST(POSTGRESQL_INC)
10366 AC_SUBST(POSTGRESQL_LIB)
10368 dnl ===================================================================
10369 dnl Check for Firebird stuff
10370 dnl ===================================================================
10371 ENABLE_FIREBIRD_SDBC=
10372 if test "$enable_firebird_sdbc" = "yes" ; then
10373     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10375     dnl ===================================================================
10376     dnl Check for system Firebird
10377     dnl ===================================================================
10378     AC_MSG_CHECKING([which Firebird to use])
10379     if test "$with_system_firebird" = "yes"; then
10380         AC_MSG_RESULT([external])
10381         SYSTEM_FIREBIRD=TRUE
10382         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10383         if test -z "$FIREBIRDCONFIG"; then
10384             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10385             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10386                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10387             ])
10388             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10389         else
10390             AC_MSG_NOTICE([fb_config found])
10391             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10392             AC_MSG_CHECKING([for Firebird Client library])
10393             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10394             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10395             FilterLibs "${FIREBIRD_LIBS}"
10396             FIREBIRD_LIBS="${filteredlibs}"
10397         fi
10398         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10399         AC_MSG_CHECKING([Firebird version])
10400         if test -n "${FIREBIRD_VERSION}"; then
10401             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10402             if test "$FIREBIRD_MAJOR" -ge "3"; then
10403                 AC_MSG_RESULT([OK])
10404             else
10405                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10406             fi
10407         else
10408             save_CFLAGS="${CFLAGS}"
10409             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10410             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10411 #if defined(FB_API_VER) && FB_API_VER == 30
10412 int fb_api_is_30(void) { return 0; }
10413 #else
10414 #error "Wrong Firebird API version"
10415 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10416             CFLAGS="$save_CFLAGS"
10417         fi
10418         ENABLE_FIREBIRD_SDBC=TRUE
10419         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10420     elif test "$enable_database_connectivity" = no; then
10421         AC_MSG_RESULT([none])
10422     elif test "$cross_compiling" = "yes"; then
10423         AC_MSG_RESULT([none])
10424     else
10425         dnl Embedded Firebird has version 3.0
10426         dnl We need libatomic_ops for any non X86/X64 system
10427         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10428             dnl ===================================================================
10429             dnl Check for system libatomic_ops
10430             dnl ===================================================================
10431             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10432             if test "$with_system_libatomic_ops" = "yes"; then
10433                 SYSTEM_LIBATOMIC_OPS=TRUE
10434                 AC_CHECK_HEADERS(atomic_ops.h, [],
10435                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10436             else
10437                 SYSTEM_LIBATOMIC_OPS=
10438                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10439                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10440                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10441             fi
10442         fi
10444         AC_MSG_RESULT([internal])
10445         SYSTEM_FIREBIRD=
10446         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10447         FIREBIRD_LIBS="-lfbclient"
10449         if test "$with_system_libtommath" = "yes"; then
10450             SYSTEM_LIBTOMMATH=TRUE
10451             dnl check for tommath presence
10452             save_LIBS=$LIBS
10453             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10454             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10455             LIBS=$save_LIBS
10456         else
10457             SYSTEM_LIBTOMMATH=
10458             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10459             LIBTOMMATH_LIBS="-ltommath"
10460             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10461         fi
10463         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10464         ENABLE_FIREBIRD_SDBC=TRUE
10465         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10466     fi
10468 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10469 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10470 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10471 AC_SUBST(LIBATOMIC_OPS_LIBS)
10472 AC_SUBST(SYSTEM_FIREBIRD)
10473 AC_SUBST(FIREBIRD_CFLAGS)
10474 AC_SUBST(FIREBIRD_LIBS)
10475 AC_SUBST(SYSTEM_LIBTOMMATH)
10476 AC_SUBST(LIBTOMMATH_CFLAGS)
10477 AC_SUBST(LIBTOMMATH_LIBS)
10479 dnl ===================================================================
10480 dnl Check for system curl
10481 dnl ===================================================================
10482 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10484 dnl ===================================================================
10485 dnl Check for system boost
10486 dnl ===================================================================
10487 AC_MSG_CHECKING([which boost to use])
10488 if test "$with_system_boost" = "yes"; then
10489     AC_MSG_RESULT([external])
10490     SYSTEM_BOOST=TRUE
10491     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10492     AX_BOOST_DATE_TIME
10493     AX_BOOST_FILESYSTEM
10494     AX_BOOST_IOSTREAMS
10495     AX_BOOST_LOCALE
10496     AC_LANG_PUSH([C++])
10497     save_CXXFLAGS=$CXXFLAGS
10498     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10499     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10500        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10501     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10502        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10503     CXXFLAGS=$save_CXXFLAGS
10504     AC_LANG_POP([C++])
10505     # this is in m4/ax_boost_base.m4
10506     FilterLibs "${BOOST_LDFLAGS}"
10507     BOOST_LDFLAGS="${filteredlibs}"
10508 else
10509     AC_MSG_RESULT([internal])
10510     BUILD_TYPE="$BUILD_TYPE BOOST"
10511     SYSTEM_BOOST=
10512     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10513         # use warning-suppressing wrapper headers
10514         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10515     else
10516         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10517     fi
10519 AC_SUBST(SYSTEM_BOOST)
10521 dnl ===================================================================
10522 dnl Check for system mdds
10523 dnl ===================================================================
10524 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10525 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10527 dnl ===================================================================
10528 dnl Check for system dragonbox
10529 dnl ===================================================================
10530 AC_MSG_CHECKING([which dragonbox to use])
10531 if test "$with_system_dragonbox" = "yes"; then
10532     AC_MSG_RESULT([external])
10533     SYSTEM_DRAGONBOX=TRUE
10534     AC_LANG_PUSH([C++])
10535     save_CPPFLAGS=$CPPFLAGS
10536     # This is where upstream installs to, unfortunately no .pc or so...
10537     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10538     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10539     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10540        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10541     AC_LANG_POP([C++])
10542     CPPFLAGS=$save_CPPFLAGS
10543 else
10544     AC_MSG_RESULT([internal])
10545     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10546     SYSTEM_DRAGONBOX=
10548 AC_SUBST([SYSTEM_DRAGONBOX])
10549 AC_SUBST([DRAGONBOX_CFLAGS])
10551 dnl ===================================================================
10552 dnl Check for system frozen
10553 dnl ===================================================================
10554 AC_MSG_CHECKING([which frozen to use])
10555 if test "$with_system_frozen" = "yes"; then
10556     AC_MSG_RESULT([external])
10557     SYSTEM_FROZEN=TRUE
10558     AC_LANG_PUSH([C++])
10559     save_CPPFLAGS=$CPPFLAGS
10560     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10561        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10562     AC_LANG_POP([C++])
10563     CPPFLAGS=$save_CPPFLAGS
10564 else
10565     AC_MSG_RESULT([internal])
10566     BUILD_TYPE="$BUILD_TYPE FROZEN"
10567     SYSTEM_FROZEN=
10569 AC_SUBST([SYSTEM_FROZEN])
10570 AC_SUBST([FROZEN_CFLAGS])
10572 dnl ===================================================================
10573 dnl Check for system libfixmath
10574 dnl ===================================================================
10575 AC_MSG_CHECKING([which libfixmath to use])
10576 if test "$with_system_libfixmath" = "yes"; then
10577     AC_MSG_RESULT([external])
10578     SYSTEM_LIBFIXMATH=TRUE
10579     AC_LANG_PUSH([C++])
10580     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10581        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10582     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10583     AC_LANG_POP([C++])
10584 else
10585     AC_MSG_RESULT([internal])
10586     SYSTEM_LIBFIXMATH=
10588 AC_SUBST([SYSTEM_LIBFIXMATH])
10590 dnl ===================================================================
10591 dnl Check for system glm
10592 dnl ===================================================================
10593 AC_MSG_CHECKING([which glm to use])
10594 if test "$with_system_glm" = "yes"; then
10595     AC_MSG_RESULT([external])
10596     SYSTEM_GLM=TRUE
10597     AC_LANG_PUSH([C++])
10598     AC_CHECK_HEADER([glm/glm.hpp], [],
10599        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10600     AC_LANG_POP([C++])
10601 else
10602     AC_MSG_RESULT([internal])
10603     BUILD_TYPE="$BUILD_TYPE GLM"
10604     SYSTEM_GLM=
10605     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10607 AC_SUBST([GLM_CFLAGS])
10608 AC_SUBST([SYSTEM_GLM])
10610 dnl ===================================================================
10611 dnl Check for system odbc
10612 dnl ===================================================================
10613 AC_MSG_CHECKING([which odbc headers to use])
10614 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
10615     AC_MSG_RESULT([external])
10616     SYSTEM_ODBC_HEADERS=TRUE
10618     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10619         save_CPPFLAGS=$CPPFLAGS
10620         find_winsdk
10621         PathFormat "$winsdktest"
10622         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"
10623         AC_CHECK_HEADER(sqlext.h, [],
10624             [AC_MSG_ERROR(odbc not found. install odbc)],
10625             [#include <windows.h>])
10626         CPPFLAGS=$save_CPPFLAGS
10627     else
10628         AC_CHECK_HEADER(sqlext.h, [],
10629             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10630     fi
10631 elif test "$enable_database_connectivity" = no; then
10632     AC_MSG_RESULT([none])
10633 else
10634     AC_MSG_RESULT([internal])
10635     SYSTEM_ODBC_HEADERS=
10637 AC_SUBST(SYSTEM_ODBC_HEADERS)
10639 dnl ===================================================================
10640 dnl Check for system NSS
10641 dnl ===================================================================
10642 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10643     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10644     AC_DEFINE(HAVE_FEATURE_NSS)
10645     ENABLE_NSS=TRUE
10646 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10647     with_tls=openssl
10649 AC_SUBST(ENABLE_NSS)
10651 dnl ===================================================================
10652 dnl Enable LDAP support
10653 dnl ===================================================================
10655 if test "$test_openldap" = yes; then
10656     AC_MSG_CHECKING([whether to enable LDAP support])
10657     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10658         AC_MSG_RESULT([yes])
10659         ENABLE_LDAP=TRUE
10660     else
10661         if test "$enable_ldap" != "yes"; then
10662             AC_MSG_RESULT([no])
10663         else
10664             AC_MSG_RESULT([no (needs NSS or system openldap)])
10665         fi
10666     fi
10668 dnl ===================================================================
10669 dnl Check for system openldap
10670 dnl ===================================================================
10672     if test "$ENABLE_LDAP" = TRUE; then
10673         AC_MSG_CHECKING([which openldap library to use])
10674         if test "$with_system_openldap" = yes; then
10675             AC_MSG_RESULT([external])
10676             SYSTEM_OPENLDAP=TRUE
10677             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10678             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10679             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10680         else
10681             AC_MSG_RESULT([internal])
10682             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10683         fi
10684     fi
10687 AC_SUBST(ENABLE_LDAP)
10688 AC_SUBST(SYSTEM_OPENLDAP)
10690 dnl ===================================================================
10691 dnl Check for TLS/SSL and cryptographic implementation to use
10692 dnl ===================================================================
10693 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10694 if test -n "$with_tls"; then
10695     case $with_tls in
10696     openssl)
10697         AC_DEFINE(USE_TLS_OPENSSL)
10698         TLS=OPENSSL
10699         AC_MSG_RESULT([$TLS])
10701         if test "$enable_openssl" != "yes"; then
10702             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10703         fi
10705         # warn that OpenSSL has been selected but not all TLS code has this option
10706         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10707         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10708         ;;
10709     nss)
10710         AC_DEFINE(USE_TLS_NSS)
10711         TLS=NSS
10712         AC_MSG_RESULT([$TLS])
10713         ;;
10714     no)
10715         AC_MSG_RESULT([none])
10716         AC_MSG_WARN([Skipping TLS/SSL])
10717         ;;
10718     *)
10719         AC_MSG_RESULT([])
10720         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10721 openssl - OpenSSL
10722 nss - Mozilla's Network Security Services (NSS)
10723     ])
10724         ;;
10725     esac
10726 else
10727     # default to using NSS, it results in smaller oox lib
10728     AC_DEFINE(USE_TLS_NSS)
10729     TLS=NSS
10730     AC_MSG_RESULT([$TLS])
10732 AC_SUBST(TLS)
10734 dnl ===================================================================
10735 dnl Check for system sane
10736 dnl ===================================================================
10737 AC_MSG_CHECKING([which sane header to use])
10738 if test "$with_system_sane" = "yes"; then
10739     AC_MSG_RESULT([external])
10740     AC_CHECK_HEADER(sane/sane.h, [],
10741       [AC_MSG_ERROR(sane not found. install sane)], [])
10742 else
10743     AC_MSG_RESULT([internal])
10744     BUILD_TYPE="$BUILD_TYPE SANE"
10747 dnl ===================================================================
10748 dnl Check for system icu
10749 dnl ===================================================================
10750 ICU_MAJOR=73
10751 ICU_MINOR=2
10752 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10753 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10754 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10755 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10756 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10757 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10758 if test "$SYSTEM_ICU" = TRUE; then
10759     AC_LANG_PUSH([C++])
10760     AC_MSG_CHECKING([for unicode/rbbi.h])
10761     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10762     AC_LANG_POP([C++])
10764     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10765     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10766     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10768     if test "$ICU_MAJOR" -ge 50; then
10769         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10770         ICU_MINOR=
10771     fi
10773     if test "$CROSS_COMPILING" != TRUE; then
10774         # using the system icu tools can lead to version confusion, use the
10775         # ones from the build environment when cross-compiling
10776         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10777         if test -z "$SYSTEM_GENBRK"; then
10778             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10779         fi
10780         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10781         if test -z "$SYSTEM_GENCCODE"; then
10782             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10783         fi
10784         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10785         if test -z "$SYSTEM_GENCMN"; then
10786             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10787         fi
10788         if test "$ICU_MAJOR" -lt 49; then
10789             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10790             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10791             ICU_RECLASSIFIED_HEBREW_LETTER=
10792         fi
10793     fi
10795 if test "$ICU_MAJOR" -ge "59"; then
10796     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10797     # with -std=c++11 but not all external libraries can be built with that,
10798     # for those use a bit-compatible typedef uint16_t UChar; see
10799     # icu/source/common/unicode/umachine.h
10800     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10801 else
10802     ICU_UCHAR_TYPE=""
10804 AC_SUBST(SYSTEM_GENBRK)
10805 AC_SUBST(SYSTEM_GENCCODE)
10806 AC_SUBST(SYSTEM_GENCMN)
10807 AC_SUBST(ICU_MAJOR)
10808 AC_SUBST(ICU_MINOR)
10809 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10810 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10811 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10812 AC_SUBST(ICU_UCHAR_TYPE)
10814 dnl ==================================================================
10815 dnl Breakpad
10816 dnl ==================================================================
10817 DEFAULT_CRASHDUMP_VALUE="true"
10818 AC_MSG_CHECKING([whether to enable breakpad])
10819 if test "$enable_breakpad" != yes; then
10820     AC_MSG_RESULT([no])
10821 else
10822     AC_MSG_RESULT([yes])
10823     ENABLE_BREAKPAD="TRUE"
10824     AC_DEFINE(ENABLE_BREAKPAD)
10825     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10826     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10828     AC_MSG_CHECKING([for disable crash dump])
10829     if test "$enable_crashdump" = no; then
10830         DEFAULT_CRASHDUMP_VALUE="false"
10831         AC_MSG_RESULT([yes])
10832     else
10833        AC_MSG_RESULT([no])
10834     fi
10836     AC_MSG_CHECKING([for crashreport config])
10837     if test "$with_symbol_config" = "no"; then
10838         BREAKPAD_SYMBOL_CONFIG="invalid"
10839         AC_MSG_RESULT([no])
10840     else
10841         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10842         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10843         AC_MSG_RESULT([yes])
10844     fi
10845     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10847 AC_SUBST(ENABLE_BREAKPAD)
10848 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10850 dnl ===================================================================
10851 dnl Orcus
10852 dnl ===================================================================
10853 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.18.0])
10854 if test "$with_system_orcus" != "yes"; then
10855     if test "$SYSTEM_BOOST" = "TRUE"; then
10856         dnl Link with Boost.System
10857         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10858         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10859         dnl in documentation has no effect.
10860         AX_BOOST_SYSTEM
10861     fi
10863 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10864 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10865 AC_SUBST([BOOST_SYSTEM_LIB])
10866 AC_SUBST(SYSTEM_LIBORCUS)
10868 dnl ===================================================================
10869 dnl HarfBuzz
10870 dnl ===================================================================
10871 harfbuzz_required_version=5.1.0
10873 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10874 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10875 case "$_os" in
10876     Linux)
10877         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10878         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10879         ;;
10880     *)
10881         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10882         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10883         ;;
10884 esac
10885 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10886 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10888 if test "$COM" = "MSC"; then # override the above
10889     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10890     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10893 if test "$with_system_harfbuzz" = "yes"; then
10894     if test "$with_system_graphite" = "no"; then
10895         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10896     fi
10897     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10898     save_LIBS="$LIBS"
10899     save_CFLAGS="$CFLAGS"
10900     LIBS="$LIBS $HARFBUZZ_LIBS"
10901     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10902     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10903     LIBS="$save_LIBS"
10904     CFLAGS="$save_CFLAGS"
10905 else
10906     if test "$with_system_graphite" = "yes"; then
10907         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10908     fi
10911 if test "$USING_X11" = TRUE; then
10912     AC_PATH_X
10913     AC_PATH_XTRA
10914     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10916     if test -z "$x_includes"; then
10917         x_includes="default_x_includes"
10918     fi
10919     if test -z "$x_libraries"; then
10920         x_libraries="default_x_libraries"
10921     fi
10922     CFLAGS="$CFLAGS $X_CFLAGS"
10923     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10924     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10925 else
10926     x_includes="no_x_includes"
10927     x_libraries="no_x_libraries"
10930 if test "$USING_X11" = TRUE; then
10931     dnl ===================================================================
10932     dnl Check for extension headers
10933     dnl ===================================================================
10934     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10935      [#include <X11/extensions/shape.h>])
10937     # vcl needs ICE and SM
10938     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10939     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10940         [AC_MSG_ERROR(ICE library not found)])
10941     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10942     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10943         [AC_MSG_ERROR(SM library not found)])
10946 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10947     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10948     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10951 dnl ===================================================================
10952 dnl Check for system Xrender
10953 dnl ===================================================================
10954 AC_MSG_CHECKING([whether to use Xrender])
10955 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10956     AC_MSG_RESULT([yes])
10957     PKG_CHECK_MODULES(XRENDER, xrender)
10958     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10959     FilterLibs "${XRENDER_LIBS}"
10960     XRENDER_LIBS="${filteredlibs}"
10961     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10962       [AC_MSG_ERROR(libXrender not found or functional)], [])
10963     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10964       [AC_MSG_ERROR(Xrender not found. install X)], [])
10965 else
10966     AC_MSG_RESULT([no])
10968 AC_SUBST(XRENDER_CFLAGS)
10969 AC_SUBST(XRENDER_LIBS)
10971 dnl ===================================================================
10972 dnl Check for XRandr
10973 dnl ===================================================================
10974 AC_MSG_CHECKING([whether to enable RandR support])
10975 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10976     AC_MSG_RESULT([yes])
10977     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10978     if test "$ENABLE_RANDR" != "TRUE"; then
10979         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10980                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10981         XRANDR_CFLAGS=" "
10982         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10983           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10984         XRANDR_LIBS="-lXrandr "
10985         ENABLE_RANDR="TRUE"
10986     fi
10987     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10988     FilterLibs "${XRANDR_LIBS}"
10989     XRANDR_LIBS="${filteredlibs}"
10990 else
10991     ENABLE_RANDR=""
10992     AC_MSG_RESULT([no])
10994 AC_SUBST(XRANDR_CFLAGS)
10995 AC_SUBST(XRANDR_LIBS)
10996 AC_SUBST(ENABLE_RANDR)
10998 if test -z "$with_webdav"; then
10999     with_webdav=$test_webdav
11002 AC_MSG_CHECKING([for WebDAV support])
11003 case "$with_webdav" in
11005     AC_MSG_RESULT([no])
11006     WITH_WEBDAV=""
11007     ;;
11009     AC_MSG_RESULT([yes])
11010     # curl is already mandatory (almost) and checked elsewhere
11011     if test "$enable_curl" = "no"; then
11012         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11013     fi
11014     WITH_WEBDAV=TRUE
11015     ;;
11016 esac
11017 AC_SUBST(WITH_WEBDAV)
11019 dnl ===================================================================
11020 dnl Check for disabling cve_tests
11021 dnl ===================================================================
11022 AC_MSG_CHECKING([whether to execute CVE tests])
11023 # If not explicitly enabled or disabled, default
11024 if test -z "$enable_cve_tests"; then
11025     case "$OS" in
11026     WNT)
11027         # Default cves off for Windows with its wild and wonderful
11028         # variety of AV software kicking in and panicking
11029         enable_cve_tests=no
11030         ;;
11031     *)
11032         # otherwise yes
11033         enable_cve_tests=yes
11034         ;;
11035     esac
11037 if test "$enable_cve_tests" = "no"; then
11038     AC_MSG_RESULT([no])
11039     DISABLE_CVE_TESTS=TRUE
11040     AC_SUBST(DISABLE_CVE_TESTS)
11041 else
11042     AC_MSG_RESULT([yes])
11045 dnl ===================================================================
11046 dnl Check for system openssl
11047 dnl ===================================================================
11048 ENABLE_OPENSSL=
11049 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11050 if test "$enable_openssl" = "yes"; then
11051     AC_MSG_RESULT([no])
11052     ENABLE_OPENSSL=TRUE
11053     if test "$_os" = Darwin ; then
11054         # OpenSSL is deprecated when building for 10.7 or later.
11055         #
11056         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11057         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11059         with_system_openssl=no
11060         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11061     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11062             && test "$with_system_openssl" != "no"; then
11063         with_system_openssl=yes
11064         SYSTEM_OPENSSL=TRUE
11065         OPENSSL_CFLAGS=
11066         OPENSSL_LIBS="-lssl -lcrypto"
11067     else
11068         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11069     fi
11070     if test "$with_system_openssl" = "yes"; then
11071         AC_MSG_CHECKING([whether openssl supports SHA512])
11072         AC_LANG_PUSH([C])
11073         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11074             SHA512_CTX context;
11075 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11076         AC_LANG_POP(C)
11077     fi
11078 else
11079     AC_MSG_RESULT([yes])
11081     # warn that although OpenSSL is disabled, system libraries may depend on it
11082     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11083     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11086 AC_SUBST([ENABLE_OPENSSL])
11088 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11089     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11090         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11091         enable_cipher_openssl_backend=no
11092     else
11093         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11094     fi
11096 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11097 ENABLE_CIPHER_OPENSSL_BACKEND=
11098 if test "$enable_cipher_openssl_backend" = yes; then
11099     AC_MSG_RESULT([yes])
11100     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11101 else
11102     AC_MSG_RESULT([no])
11104 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11106 dnl ===================================================================
11107 dnl Select the crypto backends used by LO
11108 dnl ===================================================================
11110 if test "$build_crypto" = yes; then
11111     if test "$OS" = WNT; then
11112         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11113         AC_DEFINE([USE_CRYPTO_MSCAPI])
11114     elif test "$ENABLE_NSS" = TRUE; then
11115         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11116         AC_DEFINE([USE_CRYPTO_NSS])
11117     fi
11120 dnl ===================================================================
11121 dnl Check for system redland
11122 dnl ===================================================================
11123 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11124 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11125 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11126 if test "$with_system_redland" = "yes"; then
11127     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11128             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11129 else
11130     RAPTOR_MAJOR="0"
11131     RASQAL_MAJOR="3"
11132     REDLAND_MAJOR="0"
11134 AC_SUBST(RAPTOR_MAJOR)
11135 AC_SUBST(RASQAL_MAJOR)
11136 AC_SUBST(REDLAND_MAJOR)
11138 dnl ===================================================================
11139 dnl Check for system hunspell
11140 dnl ===================================================================
11141 AC_MSG_CHECKING([which libhunspell to use])
11142 if test "$with_system_hunspell" = "yes"; then
11143     AC_MSG_RESULT([external])
11144     SYSTEM_HUNSPELL=TRUE
11145     AC_LANG_PUSH([C++])
11146     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11147     if test "$HUNSPELL_PC" != "TRUE"; then
11148         AC_CHECK_HEADER(hunspell.hxx, [],
11149             [
11150             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11151             [AC_MSG_ERROR(hunspell headers not found.)], [])
11152             ], [])
11153         AC_CHECK_LIB([hunspell], [main], [:],
11154            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11155         HUNSPELL_LIBS=-lhunspell
11156     fi
11157     AC_LANG_POP([C++])
11158     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11159     FilterLibs "${HUNSPELL_LIBS}"
11160     HUNSPELL_LIBS="${filteredlibs}"
11161 else
11162     AC_MSG_RESULT([internal])
11163     SYSTEM_HUNSPELL=
11164     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11165     if test "$COM" = "MSC"; then
11166         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11167     else
11168         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11169     fi
11170     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11172 AC_SUBST(SYSTEM_HUNSPELL)
11173 AC_SUBST(HUNSPELL_CFLAGS)
11174 AC_SUBST(HUNSPELL_LIBS)
11176 dnl ===================================================================
11177 dnl Check for system zxing
11178 dnl ===================================================================
11179 AC_MSG_CHECKING([whether to use zxing])
11180 if test "$enable_zxing" = "no"; then
11181     AC_MSG_RESULT([no])
11182     ENABLE_ZXING=
11183     SYSTEM_ZXING=
11184 else
11185     AC_MSG_RESULT([yes])
11186     ENABLE_ZXING=TRUE
11187     AC_MSG_CHECKING([which libzxing to use])
11188     if test "$with_system_zxing" = "yes"; then
11189         AC_MSG_RESULT([external])
11190         SYSTEM_ZXING=TRUE
11191         ZXING_CFLAGS=
11192         AC_LANG_PUSH([C++])
11193         save_CXXFLAGS=$CXXFLAGS
11194         save_IFS=$IFS
11195         IFS=$P_SEP
11196         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11197             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11198             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11199             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11200             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11201             dnl unsetting IFS."):
11202             IFS=$save_IFS
11203             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11204             dnl ignore them here:
11205             if test -z "$i"; then
11206                 continue
11207             fi
11208             dnl TODO: White space in $i would cause problems:
11209             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11210             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11211                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11212         done
11213         CXXFLAGS=$save_CXXFLAGS
11214         if test -z "$ZXING_CFLAGS"; then
11215             AC_MSG_ERROR(zxing headers not found.)
11216         fi
11217         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11218             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11219             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11220         AC_LANG_POP([C++])
11221         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11222         FilterLibs "${ZXING_LIBS}"
11223         ZXING_LIBS="${filteredlibs}"
11224     else
11225         AC_MSG_RESULT([internal])
11226         SYSTEM_ZXING=
11227         BUILD_TYPE="$BUILD_TYPE ZXING"
11228     fi
11229     if test "$ENABLE_ZXING" = TRUE; then
11230         AC_DEFINE(ENABLE_ZXING)
11231     fi
11233 AC_SUBST(SYSTEM_ZXING)
11234 AC_SUBST(ENABLE_ZXING)
11235 AC_SUBST(ZXING_CFLAGS)
11236 AC_SUBST(ZXING_LIBS)
11238 dnl ===================================================================
11239 dnl Check for system box2d
11240 dnl ===================================================================
11241 AC_MSG_CHECKING([which box2d to use])
11242 if test "$with_system_box2d" = "yes"; then
11243     AC_MSG_RESULT([external])
11244     SYSTEM_BOX2D=TRUE
11245     AC_LANG_PUSH([C++])
11246     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11247         [BOX2D_H_FOUND='FALSE'])
11248     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11249         _BOX2D_LIB=box2d
11250         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11251     else
11252         # fail this. there's no other alternative to check when we are here.
11253         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11254             [AC_MSG_ERROR(box2d headers not found.)])
11255         _BOX2D_LIB=Box2D
11256         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11257     fi
11258     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11259         [ AC_MSG_ERROR(box2d library not found.) ], [])
11260     BOX2D_LIBS=-l$_BOX2D_LIB
11261     AC_LANG_POP([C++])
11262     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11263     FilterLibs "${BOX2D_LIBS}"
11264     BOX2D_LIBS="${filteredlibs}"
11265 else
11266     AC_MSG_RESULT([internal])
11267     SYSTEM_BOX2D=
11268     BUILD_TYPE="$BUILD_TYPE BOX2D"
11270 AC_SUBST(SYSTEM_BOX2D)
11271 AC_SUBST(BOX2D_CFLAGS)
11272 AC_SUBST(BOX2D_LIBS)
11274 dnl ===================================================================
11275 dnl Checking for altlinuxhyph
11276 dnl ===================================================================
11277 AC_MSG_CHECKING([which altlinuxhyph to use])
11278 if test "$with_system_altlinuxhyph" = "yes"; then
11279     AC_MSG_RESULT([external])
11280     SYSTEM_HYPH=TRUE
11281     AC_CHECK_HEADER(hyphen.h, [],
11282        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11283     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11284        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11285        [#include <hyphen.h>])
11286     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11287         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11288     if test -z "$HYPHEN_LIB"; then
11289         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11290            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11291     fi
11292     if test -z "$HYPHEN_LIB"; then
11293         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11294            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11295     fi
11296 else
11297     AC_MSG_RESULT([internal])
11298     SYSTEM_HYPH=
11299     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11300     if test "$COM" = "MSC"; then
11301         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11302     else
11303         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11304     fi
11306 AC_SUBST(SYSTEM_HYPH)
11307 AC_SUBST(HYPHEN_LIB)
11309 dnl ===================================================================
11310 dnl Checking for mythes
11311 dnl ===================================================================
11312 AC_MSG_CHECKING([which mythes to use])
11313 if test "$with_system_mythes" = "yes"; then
11314     AC_MSG_RESULT([external])
11315     SYSTEM_MYTHES=TRUE
11316     AC_LANG_PUSH([C++])
11317     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11318     if test "$MYTHES_PKGCONFIG" = "no"; then
11319         AC_CHECK_HEADER(mythes.hxx, [],
11320             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11321         AC_CHECK_LIB([mythes-1.2], [main], [:],
11322             [ MYTHES_FOUND=no], [])
11323     if test "$MYTHES_FOUND" = "no"; then
11324         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11325                 [ MYTHES_FOUND=no], [])
11326     fi
11327     if test "$MYTHES_FOUND" = "no"; then
11328         AC_MSG_ERROR([mythes library not found!.])
11329     fi
11330     fi
11331     AC_LANG_POP([C++])
11332     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11333     FilterLibs "${MYTHES_LIBS}"
11334     MYTHES_LIBS="${filteredlibs}"
11335 else
11336     AC_MSG_RESULT([internal])
11337     SYSTEM_MYTHES=
11338     BUILD_TYPE="$BUILD_TYPE MYTHES"
11339     if test "$COM" = "MSC"; then
11340         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11341     else
11342         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11343     fi
11345 AC_SUBST(SYSTEM_MYTHES)
11346 AC_SUBST(MYTHES_CFLAGS)
11347 AC_SUBST(MYTHES_LIBS)
11349 dnl ===================================================================
11350 dnl How should we build the linear programming solver ?
11351 dnl ===================================================================
11353 ENABLE_COINMP=
11354 AC_MSG_CHECKING([whether to build with CoinMP])
11355 if test "$enable_coinmp" != "no"; then
11356     ENABLE_COINMP=TRUE
11357     AC_MSG_RESULT([yes])
11358     if test "$with_system_coinmp" = "yes"; then
11359         SYSTEM_COINMP=TRUE
11360         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11361         FilterLibs "${COINMP_LIBS}"
11362         COINMP_LIBS="${filteredlibs}"
11363     else
11364         BUILD_TYPE="$BUILD_TYPE COINMP"
11365     fi
11366 else
11367     AC_MSG_RESULT([no])
11369 AC_SUBST(ENABLE_COINMP)
11370 AC_SUBST(SYSTEM_COINMP)
11371 AC_SUBST(COINMP_CFLAGS)
11372 AC_SUBST(COINMP_LIBS)
11374 ENABLE_LPSOLVE=
11375 AC_MSG_CHECKING([whether to build with lpsolve])
11376 if test "$enable_lpsolve" != "no"; then
11377     ENABLE_LPSOLVE=TRUE
11378     AC_MSG_RESULT([yes])
11379 else
11380     AC_MSG_RESULT([no])
11382 AC_SUBST(ENABLE_LPSOLVE)
11384 if test "$ENABLE_LPSOLVE" = TRUE; then
11385     AC_MSG_CHECKING([which lpsolve to use])
11386     if test "$with_system_lpsolve" = "yes"; then
11387         AC_MSG_RESULT([external])
11388         SYSTEM_LPSOLVE=TRUE
11389         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11390            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11391         save_LIBS=$LIBS
11392         # some systems need this. Like Ubuntu...
11393         AC_CHECK_LIB(m, floor)
11394         AC_CHECK_LIB(dl, dlopen)
11395         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11396             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11397         LIBS=$save_LIBS
11398     else
11399         AC_MSG_RESULT([internal])
11400         SYSTEM_LPSOLVE=
11401         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11402     fi
11404 AC_SUBST(SYSTEM_LPSOLVE)
11406 dnl ===================================================================
11407 dnl Checking for libexttextcat
11408 dnl ===================================================================
11409 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11410 if test "$with_system_libexttextcat" = "yes"; then
11411     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11413 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11415 dnl ===================================================================
11416 dnl Checking for libnumbertext
11417 dnl ===================================================================
11418 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11419 if test "$with_system_libnumbertext" = "yes"; then
11420     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11421     SYSTEM_LIBNUMBERTEXT=YES
11422 else
11423     SYSTEM_LIBNUMBERTEXT=
11425 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11426 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11428 dnl ***************************************
11429 dnl testing libc version for Linux...
11430 dnl ***************************************
11431 if test "$_os" = "Linux"; then
11432     AC_MSG_CHECKING([whether the libc is recent enough])
11433     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11434     #include <features.h>
11435     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11436     #error glibc >= 2.1 is required
11437     #endif
11438     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11441 dnl =========================================
11442 dnl Check for uuidgen
11443 dnl =========================================
11444 if test "$_os" = "WINNT"; then
11445     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11446     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11447     UUIDGEN=uuidgen.exe
11448     AC_SUBST(UUIDGEN)
11449 else
11450     AC_PATH_PROG([UUIDGEN], [uuidgen])
11451     if test -z "$UUIDGEN"; then
11452         AC_MSG_WARN([uuid is needed for building installation sets])
11453     fi
11456 dnl ***************************************
11457 dnl Checking for bison and flex
11458 dnl ***************************************
11459 AC_PATH_PROG(BISON, bison)
11460 if test -z "$BISON"; then
11461     AC_MSG_ERROR([no bison found in \$PATH, install it])
11462 else
11463     AC_MSG_CHECKING([the bison version])
11464     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11465     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11466     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11467     dnl cause
11468     dnl
11469     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]
11470     dnl   typedef union YYSTYPE
11471     dnl           ~~~~~~^~~~~~~
11472     dnl
11473     dnl while at least 3.4.1 is know to be good:
11474     if test "$COMPILER_PLUGINS" = TRUE; then
11475         if test "$_bison_longver" -lt 2004; then
11476             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11477         fi
11478     else
11479         if test "$_bison_longver" -lt 2000; then
11480             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11481         fi
11482     fi
11484 AC_SUBST([BISON])
11486 AC_PATH_PROG(FLEX, flex)
11487 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11488     FLEX=`cygpath -m $FLEX`
11490 if test -z "$FLEX"; then
11491     AC_MSG_ERROR([no flex found in \$PATH, install it])
11492 else
11493     AC_MSG_CHECKING([the flex version])
11494     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11495     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11496         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11497     fi
11499 AC_SUBST([FLEX])
11501 AC_PATH_PROG(DIFF, diff)
11502 if test -z "$DIFF"; then
11503     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11505 AC_SUBST([DIFF])
11507 AC_PATH_PROG(UNIQ, uniq)
11508 if test -z "$UNIQ"; then
11509     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11511 AC_SUBST([UNIQ])
11513 dnl ***************************************
11514 dnl Checking for patch
11515 dnl ***************************************
11516 AC_PATH_PROG(PATCH, patch)
11517 if test -z "$PATCH"; then
11518     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11521 dnl On Solaris or macOS, check if --with-gnu-patch was used
11522 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11523     if test -z "$with_gnu_patch"; then
11524         GNUPATCH=$PATCH
11525     else
11526         if test -x "$with_gnu_patch"; then
11527             GNUPATCH=$with_gnu_patch
11528         else
11529             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11530         fi
11531     fi
11533     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11534     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11535         AC_MSG_RESULT([yes])
11536     else
11537         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11538             AC_MSG_RESULT([no, but accepted (Apple patch)])
11539             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11540         else
11541             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11542         fi
11543     fi
11544 else
11545     GNUPATCH=$PATCH
11548 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11549     GNUPATCH=`cygpath -m $GNUPATCH`
11552 dnl We also need to check for --with-gnu-cp
11554 if test -z "$with_gnu_cp"; then
11555     # check the place where the good stuff is hidden on Solaris...
11556     if test -x /usr/gnu/bin/cp; then
11557         GNUCP=/usr/gnu/bin/cp
11558     else
11559         AC_PATH_PROGS(GNUCP, gnucp cp)
11560     fi
11561     if test -z $GNUCP; then
11562         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11563     fi
11564 else
11565     if test -x "$with_gnu_cp"; then
11566         GNUCP=$with_gnu_cp
11567     else
11568         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11569     fi
11572 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11573     GNUCP=`cygpath -m $GNUCP`
11576 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11577 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11578     AC_MSG_RESULT([yes])
11579 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11580     AC_MSG_RESULT([yes])
11581 else
11582     case "$build_os" in
11583     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11584         x_GNUCP=[\#]
11585         GNUCP=''
11586         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11587         ;;
11588     *)
11589         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11590         ;;
11591     esac
11594 AC_SUBST(GNUPATCH)
11595 AC_SUBST(GNUCP)
11596 AC_SUBST(x_GNUCP)
11598 dnl ***************************************
11599 dnl testing assembler path
11600 dnl ***************************************
11601 ML_EXE=""
11602 if test "$_os" = "WINNT"; then
11603     case "$WIN_HOST_ARCH" in
11604     x86) assembler=ml.exe ;;
11605     x64) assembler=ml64.exe ;;
11606     arm64) assembler=armasm64.exe ;;
11607     esac
11609     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11610     if test -f "$MSVC_HOST_PATH/$assembler"; then
11611         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11612         AC_MSG_RESULT([$ML_EXE])
11613     else
11614         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11615     fi
11618 AC_SUBST(ML_EXE)
11620 dnl ===================================================================
11621 dnl We need zip and unzip
11622 dnl ===================================================================
11623 AC_PATH_PROG(ZIP, zip)
11624 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11625 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11626     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],,)
11629 AC_PATH_PROG(UNZIP, unzip)
11630 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11632 dnl ===================================================================
11633 dnl Zip must be a specific type for different build types.
11634 dnl ===================================================================
11635 if test $build_os = cygwin; then
11636     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11637         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11638     fi
11641 dnl ===================================================================
11642 dnl We need touch with -h option support.
11643 dnl ===================================================================
11644 AC_PATH_PROG(TOUCH, touch)
11645 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11646 touch "$WARNINGS_FILE"
11647 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11648     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],,)
11651 dnl ===================================================================
11652 dnl Check for system epoxy
11653 dnl ===================================================================
11654 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11655 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11657 dnl ===================================================================
11658 dnl Set vcl option: coordinate device in double or sal_Int32
11659 dnl ===================================================================
11661 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11662 if test "$enable_float_device_pixel" = yes; then
11663     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11664     AC_MSG_RESULT([double])
11665 else
11666     AC_MSG_RESULT([sal_Int32])
11669 dnl ===================================================================
11670 dnl Show which vclplugs will be built.
11671 dnl ===================================================================
11672 R=""
11674 libo_ENABLE_VCLPLUG([gen])
11675 libo_ENABLE_VCLPLUG([gtk3])
11676 libo_ENABLE_VCLPLUG([gtk3_kde5])
11677 libo_ENABLE_VCLPLUG([gtk4])
11678 libo_ENABLE_VCLPLUG([kf5])
11679 libo_ENABLE_VCLPLUG([qt5])
11680 libo_ENABLE_VCLPLUG([qt6])
11682 if test "$_os" = "WINNT"; then
11683     R="$R win"
11684 elif test "$_os" = "Darwin"; then
11685     R="$R osx"
11686 elif test "$_os" = "iOS"; then
11687     R="ios"
11688 elif test "$_os" = Android; then
11689     R="android"
11692 build_vcl_plugins="$R"
11693 if test -z "$build_vcl_plugins"; then
11694     build_vcl_plugins=" none"
11696 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11697 VCL_PLUGIN_INFO=$R
11698 AC_SUBST([VCL_PLUGIN_INFO])
11700 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11701     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11704 dnl ===================================================================
11705 dnl Check for GTK libraries
11706 dnl ===================================================================
11708 GTK3_CFLAGS=""
11709 GTK3_LIBS=""
11710 ENABLE_GTKTILEDVIEWER=""
11711 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11712     if test "$with_system_cairo" = no; then
11713         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.'
11714     fi
11715     : ${with_system_cairo:=yes}
11716     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)
11717     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11718     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11719     FilterLibs "${GTK3_LIBS}"
11720     GTK3_LIBS="${filteredlibs}"
11722     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11723     if test "$with_system_epoxy" != "yes"; then
11724         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11725         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11726                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11727     fi
11728 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11729     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11730     if test "$build_os" = "cygwin"; then
11731         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11732         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11733     fi
11735     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11736     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11737     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11738     FilterLibs "${GTK3_LIBS}"
11739     GTK3_LIBS="${filteredlibs}"
11740     ENABLE_GTKTILEDVIEWER="yes"
11742 AC_SUBST(GTK3_LIBS)
11743 AC_SUBST(GTK3_CFLAGS)
11744 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11746 GTK4_CFLAGS=""
11747 GTK4_LIBS=""
11748 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11749     if test "$with_system_cairo" = no; then
11750         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11751     fi
11752     : ${with_system_cairo:=yes}
11753     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11754     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11755     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11756     FilterLibs "${GTK4_LIBS}"
11757     GTK4_LIBS="${filteredlibs}"
11759     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11760     if test "$with_system_epoxy" != "yes"; then
11761         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11762         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11763                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11764     fi
11766 AC_SUBST(GTK4_LIBS)
11767 AC_SUBST(GTK4_CFLAGS)
11769 if test "$enable_introspection" = yes; then
11770     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11771         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11772     else
11773         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11774     fi
11777 dnl ===================================================================
11778 dnl check for dbus support
11779 dnl ===================================================================
11780 ENABLE_DBUS=""
11781 DBUS_CFLAGS=""
11782 DBUS_LIBS=""
11783 DBUS_GLIB_CFLAGS=""
11784 DBUS_GLIB_LIBS=""
11785 DBUS_HAVE_GLIB=""
11787 if test "$enable_dbus" = "no"; then
11788     test_dbus=no
11791 AC_MSG_CHECKING([whether to enable DBUS support])
11792 if test "$test_dbus" = "yes"; then
11793     ENABLE_DBUS="TRUE"
11794     AC_MSG_RESULT([yes])
11795     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11796     AC_DEFINE(ENABLE_DBUS)
11797     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11798     FilterLibs "${DBUS_LIBS}"
11799     DBUS_LIBS="${filteredlibs}"
11801     # Glib is needed for BluetoothServer
11802     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11803     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11804         [
11805             DBUS_HAVE_GLIB="TRUE"
11806             AC_DEFINE(DBUS_HAVE_GLIB,1)
11807         ],
11808         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11809     )
11810 else
11811     AC_MSG_RESULT([no])
11814 AC_SUBST(ENABLE_DBUS)
11815 AC_SUBST(DBUS_CFLAGS)
11816 AC_SUBST(DBUS_LIBS)
11817 AC_SUBST(DBUS_GLIB_CFLAGS)
11818 AC_SUBST(DBUS_GLIB_LIBS)
11819 AC_SUBST(DBUS_HAVE_GLIB)
11821 AC_MSG_CHECKING([whether to enable Impress remote control])
11822 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11823     AC_MSG_RESULT([yes])
11824     ENABLE_SDREMOTE=TRUE
11825     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11826         <true/>"
11827     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11829     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11830         # The Bluetooth code doesn't compile with macOS SDK 10.15
11831         if test "$enable_sdremote_bluetooth" = yes; then
11832             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11833         fi
11834         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11835         enable_sdremote_bluetooth=no
11836     fi
11837     # If not explicitly enabled or disabled, default
11838     if test -z "$enable_sdremote_bluetooth"; then
11839         case "$OS" in
11840         LINUX|MACOSX|WNT)
11841             # Default to yes for these
11842             enable_sdremote_bluetooth=yes
11843             ;;
11844         *)
11845             # otherwise no
11846             enable_sdremote_bluetooth=no
11847             ;;
11848         esac
11849     fi
11850     # $enable_sdremote_bluetooth is guaranteed non-empty now
11852     if test "$enable_sdremote_bluetooth" != "no"; then
11853         if test "$OS" = "LINUX"; then
11854             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11855                 AC_MSG_RESULT([yes])
11856                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11857                 dnl ===================================================================
11858                 dnl Check for system bluez
11859                 dnl ===================================================================
11860                 AC_MSG_CHECKING([which Bluetooth header to use])
11861                 if test "$with_system_bluez" = "yes"; then
11862                     AC_MSG_RESULT([external])
11863                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11864                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11865                     SYSTEM_BLUEZ=TRUE
11866                 else
11867                     AC_MSG_RESULT([internal])
11868                     SYSTEM_BLUEZ=
11869                 fi
11870             else
11871                 AC_MSG_RESULT([no, dbus disabled])
11872                 ENABLE_SDREMOTE_BLUETOOTH=
11873                 SYSTEM_BLUEZ=
11874             fi
11875         else
11876             AC_MSG_RESULT([yes])
11877             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11878             SYSTEM_BLUEZ=
11879             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11880         <key>com.apple.security.device.bluetooth</key>
11881         <true/>"
11882         fi
11883     else
11884         AC_MSG_RESULT([no])
11885         ENABLE_SDREMOTE_BLUETOOTH=
11886         SYSTEM_BLUEZ=
11887     fi
11888 else
11889     ENABLE_SDREMOTE=
11890     SYSTEM_BLUEZ=
11891     AC_MSG_RESULT([no])
11893 AC_SUBST(ENABLE_SDREMOTE)
11894 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11895 AC_SUBST(SDREMOTE_ENTITLEMENT)
11896 AC_SUBST(SYSTEM_BLUEZ)
11898 dnl ===================================================================
11899 dnl Check whether to enable GIO support
11900 dnl ===================================================================
11901 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11902     AC_MSG_CHECKING([whether to enable GIO support])
11903     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11904         dnl Need at least 2.26 for the dbus support.
11905         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11906                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11907         if test "$ENABLE_GIO" = "TRUE"; then
11908             AC_DEFINE(ENABLE_GIO)
11909             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11910             FilterLibs "${GIO_LIBS}"
11911             GIO_LIBS="${filteredlibs}"
11912         fi
11913     else
11914         AC_MSG_RESULT([no])
11915     fi
11917 AC_SUBST(ENABLE_GIO)
11918 AC_SUBST(GIO_CFLAGS)
11919 AC_SUBST(GIO_LIBS)
11922 dnl ===================================================================
11924 SPLIT_APP_MODULES=""
11925 if test "$enable_split_app_modules" = "yes"; then
11926     SPLIT_APP_MODULES="TRUE"
11928 AC_SUBST(SPLIT_APP_MODULES)
11930 SPLIT_OPT_FEATURES=""
11931 if test "$enable_split_opt_features" = "yes"; then
11932     SPLIT_OPT_FEATURES="TRUE"
11934 AC_SUBST(SPLIT_OPT_FEATURES)
11936 dnl ===================================================================
11937 dnl Check whether the GStreamer libraries are available.
11938 dnl ===================================================================
11940 ENABLE_GSTREAMER_1_0=""
11942 if test "$test_gstreamer_1_0" = yes; then
11944     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11945     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11946         ENABLE_GSTREAMER_1_0="TRUE"
11947         AC_MSG_RESULT([yes])
11948         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11949         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11950         FilterLibs "${GSTREAMER_1_0_LIBS}"
11951         GSTREAMER_1_0_LIBS="${filteredlibs}"
11952         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11953     else
11954         AC_MSG_RESULT([no])
11955     fi
11957 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11958 AC_SUBST(GSTREAMER_1_0_LIBS)
11959 AC_SUBST(ENABLE_GSTREAMER_1_0)
11961 ENABLE_OPENGL_TRANSITIONS=
11962 ENABLE_OPENGL_CANVAS=
11963 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11964    : # disable
11965 elif test "$_os" = "Darwin"; then
11966     # We use frameworks on macOS, no need for detail checks
11967     ENABLE_OPENGL_TRANSITIONS=TRUE
11968     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11969     ENABLE_OPENGL_CANVAS=TRUE
11970 elif test $_os = WINNT; then
11971     ENABLE_OPENGL_TRANSITIONS=TRUE
11972     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11973     ENABLE_OPENGL_CANVAS=TRUE
11974 else
11975     if test "$USING_X11" = TRUE; then
11976         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11977         ENABLE_OPENGL_TRANSITIONS=TRUE
11978         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11979         ENABLE_OPENGL_CANVAS=TRUE
11980     fi
11983 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11984 AC_SUBST(ENABLE_OPENGL_CANVAS)
11986 dnl =================================================
11987 dnl Check whether to build with OpenCL support.
11988 dnl =================================================
11990 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11991     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11992     # platform (optional at run-time, used through clew).
11993     BUILD_TYPE="$BUILD_TYPE OPENCL"
11994     AC_DEFINE(HAVE_FEATURE_OPENCL)
11997 dnl =================================================
11998 dnl Check whether to build with dconf support.
11999 dnl =================================================
12001 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12002     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12003         if test "$enable_dconf" = yes; then
12004             AC_MSG_ERROR([dconf not found])
12005         else
12006             enable_dconf=no
12007         fi])
12009 AC_MSG_CHECKING([whether to enable dconf])
12010 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12011     DCONF_CFLAGS=
12012     DCONF_LIBS=
12013     ENABLE_DCONF=
12014     AC_MSG_RESULT([no])
12015 else
12016     ENABLE_DCONF=TRUE
12017     AC_DEFINE(ENABLE_DCONF)
12018     AC_MSG_RESULT([yes])
12020 AC_SUBST([DCONF_CFLAGS])
12021 AC_SUBST([DCONF_LIBS])
12022 AC_SUBST([ENABLE_DCONF])
12024 # pdf import?
12025 AC_MSG_CHECKING([whether to build the PDF import feature])
12026 ENABLE_PDFIMPORT=
12027 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12028     AC_MSG_RESULT([yes])
12029     ENABLE_PDFIMPORT=TRUE
12030     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12031 else
12032     AC_MSG_RESULT([no])
12035 # Pdfium?
12036 AC_MSG_CHECKING([whether to build PDFium])
12037 ENABLE_PDFIUM=
12038 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12039     AC_MSG_RESULT([yes])
12040     ENABLE_PDFIUM=TRUE
12041     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12042 else
12043     AC_MSG_RESULT([no])
12045 AC_SUBST(ENABLE_PDFIUM)
12047 if test "$ENABLE_PDFIUM" = "TRUE"; then
12048     AC_MSG_CHECKING([which OpenJPEG library to use])
12049     if test "$with_system_openjpeg" = "yes"; then
12050         SYSTEM_OPENJPEG2=TRUE
12051         AC_MSG_RESULT([external])
12052         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12053         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12054         FilterLibs "${OPENJPEG2_LIBS}"
12055         OPENJPEG2_LIBS="${filteredlibs}"
12056     else
12057         SYSTEM_OPENJPEG2=FALSE
12058         AC_MSG_RESULT([internal])
12059     fi
12061     AC_MSG_CHECKING([which Abseil library to use])
12062     if test "$with_system_abseil" = "yes"; then
12063         AC_MSG_RESULT([external])
12064         SYSTEM_ABSEIL=TRUE
12065         AC_LANG_PUSH([C++])
12066         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12067                         [AC_MSG_ERROR(abseil headers not found.)], [])
12068         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12069                         [AC_MSG_ERROR(abseil headers not found.)], [])
12070         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12071                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12072         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12073                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12074         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12075         AC_LANG_POP([C++])
12076         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12077         FilterLibs "${ABSEIL_LIBS}"
12078         ABSEIL_LIBS="${filteredlibs}"
12079     else
12080         AC_MSG_RESULT([internal])
12081     fi
12083 AC_SUBST(SYSTEM_OPENJPEG2)
12084 AC_SUBST(SYSTEM_ABSEIL)
12085 AC_SUBST(ABSEIL_CFLAGS)
12086 AC_SUBST(ABSEIL_LIBS)
12088 dnl ===================================================================
12089 dnl Check for poppler
12090 dnl ===================================================================
12091 ENABLE_POPPLER=
12092 AC_MSG_CHECKING([whether to build Poppler])
12093 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12094     AC_MSG_RESULT([yes])
12095     ENABLE_POPPLER=TRUE
12096     AC_DEFINE(HAVE_FEATURE_POPPLER)
12097 else
12098     AC_MSG_RESULT([no])
12100 AC_SUBST(ENABLE_POPPLER)
12102 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12103     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12106 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12107     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12110 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12111     dnl ===================================================================
12112     dnl Check for system poppler
12113     dnl ===================================================================
12114     AC_MSG_CHECKING([which PDF import poppler to use])
12115     if test "$with_system_poppler" = "yes"; then
12116         AC_MSG_RESULT([external])
12117         SYSTEM_POPPLER=TRUE
12118         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12119         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12120         FilterLibs "${POPPLER_LIBS}"
12121         POPPLER_LIBS="${filteredlibs}"
12122     else
12123         AC_MSG_RESULT([internal])
12124         SYSTEM_POPPLER=
12125         BUILD_TYPE="$BUILD_TYPE POPPLER"
12126     fi
12127     AC_DEFINE([ENABLE_PDFIMPORT],1)
12129 AC_SUBST(ENABLE_PDFIMPORT)
12130 AC_SUBST(SYSTEM_POPPLER)
12131 AC_SUBST(POPPLER_CFLAGS)
12132 AC_SUBST(POPPLER_LIBS)
12134 # Skia?
12135 ENABLE_SKIA=
12136 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12137     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12138     if test "$SYSTEM_FREETYPE" = TRUE; then
12139         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12140             [skia_freetype_ok=yes],
12141             [skia_freetype_ok=no])
12142     else # internal is ok
12143         skia_freetype_ok=yes
12144     fi
12145     AC_MSG_CHECKING([whether to build Skia])
12146     if test "$skia_freetype_ok" = "yes"; then
12147         if test "$enable_skia" = "debug"; then
12148             AC_MSG_RESULT([yes (debug)])
12149             ENABLE_SKIA_DEBUG=TRUE
12150         else
12151             AC_MSG_RESULT([yes])
12152             ENABLE_SKIA_DEBUG=
12153         fi
12154         ENABLE_SKIA=TRUE
12155         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12156                 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12157         fi
12159         AC_DEFINE(HAVE_FEATURE_SKIA)
12160         BUILD_TYPE="$BUILD_TYPE SKIA"
12162         if test "$OS" = "MACOSX"; then
12163             AC_DEFINE(SK_SUPPORT_GPU,1)
12164             AC_DEFINE(SK_METAL,1)
12165             SKIA_GPU=METAL
12166             AC_SUBST(SKIA_GPU)
12167         else
12168             AC_DEFINE(SK_SUPPORT_GPU,1)
12169             AC_DEFINE(SK_VULKAN,1)
12170             SKIA_GPU=VULKAN
12171             AC_SUBST(SKIA_GPU)
12172         fi
12173     else
12174         AC_MSG_RESULT([no (freetype too old)])
12175         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12176     fi
12178 else
12179     AC_MSG_CHECKING([whether to build Skia])
12180     AC_MSG_RESULT([no])
12182 AC_SUBST(ENABLE_SKIA)
12183 AC_SUBST(ENABLE_SKIA_DEBUG)
12185 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12186 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12187 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12188 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12189 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12190 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12191 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12192 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12193 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12194 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12195 HAVE_LO_CLANG_DLLEXPORTINLINES=
12197 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12198     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12199         AC_MSG_CHECKING([for Clang])
12200         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12201     else
12202         if test "$_os" = "WINNT"; then
12203             AC_MSG_CHECKING([for clang-cl])
12204             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12205                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12206             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12207                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12208             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12209                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12210             fi
12211             if test -n "$LO_CLANG_CC"; then
12212                 dnl explicitly set -m32/-m64
12213                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12214                 LO_CLANG_CXX="$LO_CLANG_CC"
12215                 AC_MSG_RESULT([$LO_CLANG_CC])
12216             else
12217                 AC_MSG_RESULT([no])
12218             fi
12220             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12221             echo "#include <stdlib.h>" > conftest.c
12222             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12223                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12224             rm -f conftest.c conftest.obj
12225             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12226                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12227             else
12228                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12229             fi
12230         else
12231             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12232             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12233         fi
12234     fi
12235     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12236         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12237         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12238         if test "$clang2_ver" -lt 50002; then
12239             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12240             LO_CLANG_CC=
12241             LO_CLANG_CXX=
12242         fi
12243     fi
12244     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12245         save_CXX="$CXX"
12246         CXX="$LO_CLANG_CXX"
12247         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12248         AC_LANG_PUSH([C++])
12249         save_CXXFLAGS=$CXXFLAGS
12250         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12251         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12252                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12253                 AC_MSG_RESULT([yes])
12254             ], [AC_MSG_RESULT([no])])
12255         CXXFLAGS=$save_CXXFLAGS
12256         AC_LANG_POP([C++])
12257         CXX="$save_CXX"
12258         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12259             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.])
12260         fi
12261     fi
12262     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12263         # Skia is the default on Windows and Mac, so hard-require Clang.
12264         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12265         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12266             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12267         else
12268             AC_MSG_WARN([Clang compiler not found.])
12269         fi
12270     else
12272         save_CXX="$CXX"
12273         CXX="$LO_CLANG_CXX"
12274         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12275         flag_sse2=-msse2
12276         flag_ssse3=-mssse3
12277         flag_sse41=-msse4.1
12278         flag_sse42=-msse4.2
12279         flag_avx=-mavx
12280         flag_avx2=-mavx2
12281         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12282         flag_avx512f=-mavx512f
12283         flag_f16c=-mf16c
12284         flag_fma=-mfma
12286         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12287         AC_LANG_PUSH([C++])
12288         save_CXXFLAGS=$CXXFLAGS
12289         CXXFLAGS="$CXXFLAGS $flag_sse2"
12290         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12291             #include <emmintrin.h>
12292             int main () {
12293                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12294                 c = _mm_xor_si128 (a, b);
12295                 return 0;
12296             }
12297             ])],
12298             [can_compile_sse2=yes],
12299             [can_compile_sse2=no])
12300         AC_LANG_POP([C++])
12301         CXXFLAGS=$save_CXXFLAGS
12302         AC_MSG_RESULT([${can_compile_sse2}])
12303         if test "${can_compile_sse2}" = "yes" ; then
12304             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12305         fi
12307         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12308         AC_LANG_PUSH([C++])
12309         save_CXXFLAGS=$CXXFLAGS
12310         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12311         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12312             #include <tmmintrin.h>
12313             int main () {
12314                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12315                 c = _mm_maddubs_epi16 (a, b);
12316                 return 0;
12317             }
12318             ])],
12319             [can_compile_ssse3=yes],
12320             [can_compile_ssse3=no])
12321         AC_LANG_POP([C++])
12322         CXXFLAGS=$save_CXXFLAGS
12323         AC_MSG_RESULT([${can_compile_ssse3}])
12324         if test "${can_compile_ssse3}" = "yes" ; then
12325             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12326         fi
12328         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12329         AC_LANG_PUSH([C++])
12330         save_CXXFLAGS=$CXXFLAGS
12331         CXXFLAGS="$CXXFLAGS $flag_sse41"
12332         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12333             #include <smmintrin.h>
12334             int main () {
12335                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12336                 c = _mm_cmpeq_epi64 (a, b);
12337                 return 0;
12338             }
12339             ])],
12340             [can_compile_sse41=yes],
12341             [can_compile_sse41=no])
12342         AC_LANG_POP([C++])
12343         CXXFLAGS=$save_CXXFLAGS
12344         AC_MSG_RESULT([${can_compile_sse41}])
12345         if test "${can_compile_sse41}" = "yes" ; then
12346             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12347         fi
12349         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12350         AC_LANG_PUSH([C++])
12351         save_CXXFLAGS=$CXXFLAGS
12352         CXXFLAGS="$CXXFLAGS $flag_sse42"
12353         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12354             #include <nmmintrin.h>
12355             int main () {
12356                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12357                 c = _mm_cmpgt_epi64 (a, b);
12358                 return 0;
12359             }
12360             ])],
12361             [can_compile_sse42=yes],
12362             [can_compile_sse42=no])
12363         AC_LANG_POP([C++])
12364         CXXFLAGS=$save_CXXFLAGS
12365         AC_MSG_RESULT([${can_compile_sse42}])
12366         if test "${can_compile_sse42}" = "yes" ; then
12367             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12368         fi
12370         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12371         AC_LANG_PUSH([C++])
12372         save_CXXFLAGS=$CXXFLAGS
12373         CXXFLAGS="$CXXFLAGS $flag_avx"
12374         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12375             #include <immintrin.h>
12376             int main () {
12377                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12378                 c = _mm256_xor_ps(a, b);
12379                 return 0;
12380             }
12381             ])],
12382             [can_compile_avx=yes],
12383             [can_compile_avx=no])
12384         AC_LANG_POP([C++])
12385         CXXFLAGS=$save_CXXFLAGS
12386         AC_MSG_RESULT([${can_compile_avx}])
12387         if test "${can_compile_avx}" = "yes" ; then
12388             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12389         fi
12391         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12392         AC_LANG_PUSH([C++])
12393         save_CXXFLAGS=$CXXFLAGS
12394         CXXFLAGS="$CXXFLAGS $flag_avx2"
12395         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12396             #include <immintrin.h>
12397             int main () {
12398                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12399                 c = _mm256_maddubs_epi16(a, b);
12400                 return 0;
12401             }
12402             ])],
12403             [can_compile_avx2=yes],
12404             [can_compile_avx2=no])
12405         AC_LANG_POP([C++])
12406         CXXFLAGS=$save_CXXFLAGS
12407         AC_MSG_RESULT([${can_compile_avx2}])
12408         if test "${can_compile_avx2}" = "yes" ; then
12409             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12410         fi
12412         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12413         AC_LANG_PUSH([C++])
12414         save_CXXFLAGS=$CXXFLAGS
12415         CXXFLAGS="$CXXFLAGS $flag_avx512"
12416         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12417             #include <immintrin.h>
12418             int main () {
12419                 __m512i a = _mm512_loadu_si512(0);
12420                 __m512d v1 = _mm512_load_pd(0);
12421                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12422                 __m512d v2 = _mm512_abs_pd(v1);
12423                 return 0;
12424             }
12425             ])],
12426             [can_compile_avx512=yes],
12427             [can_compile_avx512=no])
12428         AC_LANG_POP([C++])
12429         CXXFLAGS=$save_CXXFLAGS
12430         AC_MSG_RESULT([${can_compile_avx512}])
12431         if test "${can_compile_avx512}" = "yes" ; then
12432             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12433             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12434         fi
12436         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12437         AC_LANG_PUSH([C++])
12438         save_CXXFLAGS=$CXXFLAGS
12439         CXXFLAGS="$CXXFLAGS $flag_f16c"
12440         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12441             #include <immintrin.h>
12442             int main () {
12443                 __m128i a = _mm_set1_epi32 (0);
12444                 __m128 c;
12445                 c = _mm_cvtph_ps(a);
12446                 return 0;
12447             }
12448             ])],
12449             [can_compile_f16c=yes],
12450             [can_compile_f16c=no])
12451         AC_LANG_POP([C++])
12452         CXXFLAGS=$save_CXXFLAGS
12453         AC_MSG_RESULT([${can_compile_f16c}])
12454         if test "${can_compile_f16c}" = "yes" ; then
12455             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12456         fi
12458         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12459         AC_LANG_PUSH([C++])
12460         save_CXXFLAGS=$CXXFLAGS
12461         CXXFLAGS="$CXXFLAGS $flag_fma"
12462         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12463             #include <immintrin.h>
12464             int main () {
12465                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12466                 d = _mm256_fmadd_ps(a, b, c);
12467                 return 0;
12468             }
12469             ])],
12470             [can_compile_fma=yes],
12471             [can_compile_fma=no])
12472         AC_LANG_POP([C++])
12473         CXXFLAGS=$save_CXXFLAGS
12474         AC_MSG_RESULT([${can_compile_fma}])
12475         if test "${can_compile_fma}" = "yes" ; then
12476             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12477         fi
12479         CXX="$save_CXX"
12480     fi
12483 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12485 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12486     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12487     AC_LANG_PUSH([C])
12488     save_CC="$CC"
12489     CC="$LO_CLANG_CC"
12490     save_CFLAGS=$CFLAGS
12491     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12492     dnl an empty program will do, we're checking the compiler flags
12493     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12494                       [use_ccache=yes], [use_ccache=no])
12495     CFLAGS=$save_CFLAGS
12496     CC=$save_CC
12497     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12498         AC_MSG_RESULT([yes])
12499     else
12500         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12501         AC_MSG_RESULT([no])
12502     fi
12503     AC_LANG_POP([C])
12505     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12506     AC_LANG_PUSH([C++])
12507     save_CXX="$CXX"
12508     CXX="$LO_CLANG_CXX"
12509     save_CXXFLAGS=$CXXFLAGS
12510     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12511     dnl an empty program will do, we're checking the compiler flags
12512     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12513                       [use_ccache=yes], [use_ccache=no])
12514     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12515         AC_MSG_RESULT([yes])
12516     else
12517         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12518         AC_MSG_RESULT([no])
12519     fi
12520     CXXFLAGS=$save_CXXFLAGS
12521     CXX=$save_CXX
12522     AC_LANG_POP([C++])
12525 AC_SUBST(LO_CLANG_CC)
12526 AC_SUBST(LO_CLANG_CXX)
12527 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12528 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12529 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12530 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12531 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12532 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12533 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12534 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12535 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12536 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12537 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12538 AC_SUBST(CLANG_USE_LD)
12539 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12541 SYSTEM_GPGMEPP=
12543 AC_MSG_CHECKING([whether to enable gpgmepp])
12544 if test "$enable_gpgmepp" = no; then
12545     AC_MSG_RESULT([no])
12546 elif test "$enable_mpl_subset" = "yes"; then
12547     AC_MSG_RESULT([no (MPL only])
12548 elif test "$enable_fuzzers" = "yes"; then
12549     AC_MSG_RESULT([no (oss-fuzz)])
12550 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12551     AC_MSG_RESULT([yes])
12552     dnl ===================================================================
12553     dnl Check for system gpgme
12554     dnl ===================================================================
12555     AC_MSG_CHECKING([which gpgmepp to use])
12556     if test "$with_system_gpgmepp" = "yes"; then
12557         AC_MSG_RESULT([external])
12558         SYSTEM_GPGMEPP=TRUE
12560         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12561         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12562             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12563         AC_CHECK_HEADER(gpgme.h, [],
12564             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12565         AC_CHECK_LIB(gpgmepp, main, [],
12566             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12567         GPGMEPP_LIBS=-lgpgmepp
12568     else
12569         AC_MSG_RESULT([internal])
12570         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12572         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12573         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12574         if test "$_os" != "WINNT"; then
12575             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12576             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12577         fi
12578     fi
12579     ENABLE_GPGMEPP=TRUE
12580     AC_DEFINE([HAVE_FEATURE_GPGME])
12581     AC_PATH_PROG(GPG, gpg)
12582     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12583     # so let's exclude that manually for the moment
12584     if test -n "$GPG" -a "$_os" != "WINNT"; then
12585         # make sure we not only have a working gpgme, but a full working
12586         # gpg installation to run OpenPGP signature verification
12587         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12588     fi
12589     if test "$_os" = "Linux"; then
12590       uid=`id -u`
12591       AC_MSG_CHECKING([for /run/user/$uid])
12592       if test -d /run/user/$uid; then
12593         AC_MSG_RESULT([yes])
12594         AC_PATH_PROG(GPGCONF, gpgconf)
12596         # Older versions of gpgconf are not working as expected, since
12597         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12598         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12599         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12600         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12601         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12602         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12603         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12604           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12605           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12606           if $GPGCONF --dump-options > /dev/null ; then
12607             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12608               AC_MSG_RESULT([yes])
12609               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12610               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12611             else
12612               AC_MSG_RESULT([no])
12613             fi
12614           else
12615             AC_MSG_RESULT([no. missing or broken gpgconf?])
12616           fi
12617         else
12618           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12619         fi
12620       else
12621         AC_MSG_RESULT([no])
12622      fi
12623    fi
12624 else
12625     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12627 AC_SUBST(ENABLE_GPGMEPP)
12628 AC_SUBST(SYSTEM_GPGMEPP)
12629 AC_SUBST(GPG_ERROR_CFLAGS)
12630 AC_SUBST(GPG_ERROR_LIBS)
12631 AC_SUBST(LIBASSUAN_CFLAGS)
12632 AC_SUBST(LIBASSUAN_LIBS)
12633 AC_SUBST(GPGMEPP_CFLAGS)
12634 AC_SUBST(GPGMEPP_LIBS)
12636 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12637 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12638     AC_MSG_RESULT([yes])
12639     ENABLE_MEDIAWIKI=TRUE
12640     BUILD_TYPE="$BUILD_TYPE XSLTML"
12641     if test  "x$with_java" = "xno"; then
12642         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12643     fi
12644 else
12645     AC_MSG_RESULT([no])
12646     ENABLE_MEDIAWIKI=
12647     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12649 AC_SUBST(ENABLE_MEDIAWIKI)
12651 AC_MSG_CHECKING([whether to build the Report Builder])
12652 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12653     AC_MSG_RESULT([yes])
12654     ENABLE_REPORTBUILDER=TRUE
12655     AC_MSG_CHECKING([which jfreereport libs to use])
12656     if test "$with_system_jfreereport" = "yes"; then
12657         SYSTEM_JFREEREPORT=TRUE
12658         AC_MSG_RESULT([external])
12659         if test -z $SAC_JAR; then
12660             SAC_JAR=/usr/share/java/sac.jar
12661         fi
12662         if ! test -f $SAC_JAR; then
12663              AC_MSG_ERROR(sac.jar not found.)
12664         fi
12666         if test -z $LIBXML_JAR; then
12667             if test -f /usr/share/java/libxml-1.0.0.jar; then
12668                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12669             elif test -f /usr/share/java/libxml.jar; then
12670                 LIBXML_JAR=/usr/share/java/libxml.jar
12671             else
12672                 AC_MSG_ERROR(libxml.jar replacement not found.)
12673             fi
12674         elif ! test -f $LIBXML_JAR; then
12675             AC_MSG_ERROR(libxml.jar not found.)
12676         fi
12678         if test -z $FLUTE_JAR; then
12679             if test -f /usr/share/java/flute-1.3.0.jar; then
12680                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12681             elif test -f /usr/share/java/flute.jar; then
12682                 FLUTE_JAR=/usr/share/java/flute.jar
12683             else
12684                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12685             fi
12686         elif ! test -f $FLUTE_JAR; then
12687             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12688         fi
12690         if test -z $JFREEREPORT_JAR; then
12691             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12692                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12693             elif test -f /usr/share/java/flow-engine.jar; then
12694                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12695             else
12696                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12697             fi
12698         elif ! test -f  $JFREEREPORT_JAR; then
12699                 AC_MSG_ERROR(jfreereport.jar not found.)
12700         fi
12702         if test -z $LIBLAYOUT_JAR; then
12703             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12704                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12705             elif test -f /usr/share/java/liblayout.jar; then
12706                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12707             else
12708                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12709             fi
12710         elif ! test -f $LIBLAYOUT_JAR; then
12711                 AC_MSG_ERROR(liblayout.jar not found.)
12712         fi
12714         if test -z $LIBLOADER_JAR; then
12715             if test -f /usr/share/java/libloader-1.0.0.jar; then
12716                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12717             elif test -f /usr/share/java/libloader.jar; then
12718                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12719             else
12720                 AC_MSG_ERROR(libloader.jar replacement not found.)
12721             fi
12722         elif ! test -f  $LIBLOADER_JAR; then
12723             AC_MSG_ERROR(libloader.jar not found.)
12724         fi
12726         if test -z $LIBFORMULA_JAR; then
12727             if test -f /usr/share/java/libformula-0.2.0.jar; then
12728                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12729             elif test -f /usr/share/java/libformula.jar; then
12730                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12731             else
12732                 AC_MSG_ERROR(libformula.jar replacement not found.)
12733             fi
12734         elif ! test -f $LIBFORMULA_JAR; then
12735                 AC_MSG_ERROR(libformula.jar not found.)
12736         fi
12738         if test -z $LIBREPOSITORY_JAR; then
12739             if test -f /usr/share/java/librepository-1.0.0.jar; then
12740                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12741             elif test -f /usr/share/java/librepository.jar; then
12742                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12743             else
12744                 AC_MSG_ERROR(librepository.jar replacement not found.)
12745             fi
12746         elif ! test -f $LIBREPOSITORY_JAR; then
12747             AC_MSG_ERROR(librepository.jar not found.)
12748         fi
12750         if test -z $LIBFONTS_JAR; then
12751             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12752                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12753             elif test -f /usr/share/java/libfonts.jar; then
12754                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12755             else
12756                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12757             fi
12758         elif ! test -f $LIBFONTS_JAR; then
12759                 AC_MSG_ERROR(libfonts.jar not found.)
12760         fi
12762         if test -z $LIBSERIALIZER_JAR; then
12763             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12764                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12765             elif test -f /usr/share/java/libserializer.jar; then
12766                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12767             else
12768                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12769             fi
12770         elif ! test -f $LIBSERIALIZER_JAR; then
12771                 AC_MSG_ERROR(libserializer.jar not found.)
12772         fi
12774         if test -z $LIBBASE_JAR; then
12775             if test -f /usr/share/java/libbase-1.0.0.jar; then
12776                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12777             elif test -f /usr/share/java/libbase.jar; then
12778                 LIBBASE_JAR=/usr/share/java/libbase.jar
12779             else
12780                 AC_MSG_ERROR(libbase.jar replacement not found.)
12781             fi
12782         elif ! test -f $LIBBASE_JAR; then
12783             AC_MSG_ERROR(libbase.jar not found.)
12784         fi
12786     else
12787         AC_MSG_RESULT([internal])
12788         SYSTEM_JFREEREPORT=
12789         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12790         NEED_ANT=TRUE
12791     fi
12792 else
12793     AC_MSG_RESULT([no])
12794     ENABLE_REPORTBUILDER=
12795     SYSTEM_JFREEREPORT=
12797 AC_SUBST(ENABLE_REPORTBUILDER)
12798 AC_SUBST(SYSTEM_JFREEREPORT)
12799 AC_SUBST(SAC_JAR)
12800 AC_SUBST(LIBXML_JAR)
12801 AC_SUBST(FLUTE_JAR)
12802 AC_SUBST(JFREEREPORT_JAR)
12803 AC_SUBST(LIBBASE_JAR)
12804 AC_SUBST(LIBLAYOUT_JAR)
12805 AC_SUBST(LIBLOADER_JAR)
12806 AC_SUBST(LIBFORMULA_JAR)
12807 AC_SUBST(LIBREPOSITORY_JAR)
12808 AC_SUBST(LIBFONTS_JAR)
12809 AC_SUBST(LIBSERIALIZER_JAR)
12811 # scripting provider for BeanShell?
12812 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12813 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12814     AC_MSG_RESULT([yes])
12815     ENABLE_SCRIPTING_BEANSHELL=TRUE
12817     dnl ===================================================================
12818     dnl Check for system beanshell
12819     dnl ===================================================================
12820     AC_MSG_CHECKING([which beanshell to use])
12821     if test "$with_system_beanshell" = "yes"; then
12822         AC_MSG_RESULT([external])
12823         SYSTEM_BSH=TRUE
12824         if test -z $BSH_JAR; then
12825             BSH_JAR=/usr/share/java/bsh.jar
12826         fi
12827         if ! test -f $BSH_JAR; then
12828             AC_MSG_ERROR(bsh.jar not found.)
12829         fi
12830     else
12831         AC_MSG_RESULT([internal])
12832         SYSTEM_BSH=
12833         BUILD_TYPE="$BUILD_TYPE BSH"
12834     fi
12835 else
12836     AC_MSG_RESULT([no])
12837     ENABLE_SCRIPTING_BEANSHELL=
12838     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12840 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12841 AC_SUBST(SYSTEM_BSH)
12842 AC_SUBST(BSH_JAR)
12844 # scripting provider for JavaScript?
12845 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12846 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12847     AC_MSG_RESULT([yes])
12848     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12850     dnl ===================================================================
12851     dnl Check for system rhino
12852     dnl ===================================================================
12853     AC_MSG_CHECKING([which rhino to use])
12854     if test "$with_system_rhino" = "yes"; then
12855         AC_MSG_RESULT([external])
12856         SYSTEM_RHINO=TRUE
12857         if test -z $RHINO_JAR; then
12858             RHINO_JAR=/usr/share/java/js.jar
12859         fi
12860         if ! test -f $RHINO_JAR; then
12861             AC_MSG_ERROR(js.jar not found.)
12862         fi
12863     else
12864         AC_MSG_RESULT([internal])
12865         SYSTEM_RHINO=
12866         BUILD_TYPE="$BUILD_TYPE RHINO"
12867         NEED_ANT=TRUE
12868     fi
12869 else
12870     AC_MSG_RESULT([no])
12871     ENABLE_SCRIPTING_JAVASCRIPT=
12872     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12874 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12875 AC_SUBST(SYSTEM_RHINO)
12876 AC_SUBST(RHINO_JAR)
12878 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12879 # paths should be added to library search path. So lets put all 64-bit
12880 # platforms there.
12881 supports_multilib=
12882 case "$host_cpu" in
12883 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12884     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12885         supports_multilib="yes"
12886     fi
12887     ;;
12889     ;;
12890 esac
12892 dnl ===================================================================
12893 dnl QT5 Integration
12894 dnl ===================================================================
12896 QT5_CFLAGS=""
12897 QT5_LIBS=""
12898 QMAKE5="qmake"
12899 MOC5="moc"
12900 QT5_GOBJECT_CFLAGS=""
12901 QT5_GOBJECT_LIBS=""
12902 QT5_HAVE_GOBJECT=""
12903 QT5_PLATFORMS_SRCDIR=""
12904 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12905         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12906         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12907 then
12908     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12909     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12911     if test -n "$supports_multilib"; then
12912         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12913     fi
12915     qt5_test_include="QtWidgets/qapplication.h"
12916     if test "$_os" = "Emscripten"; then
12917         qt5_test_library="libQt5Widgets.a"
12918     else
12919         qt5_test_library="libQt5Widgets.so"
12920     fi
12922     dnl Check for qmake5
12923     if test -n "$QT5DIR"; then
12924         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12925     else
12926         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12927     fi
12928     if test "$QMAKE5" = "no"; then
12929         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12930     else
12931         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12932         if test -z "$qmake5_test_ver"; then
12933             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12934         fi
12935         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12936         qt5_minimal_minor="6"
12937         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12938             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12939         else
12940             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12941         fi
12942     fi
12944     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12945     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12946     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12947     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12949     AC_MSG_CHECKING([for Qt5 headers])
12950     qt5_incdir="no"
12951     for inc_dir in $qt5_incdirs; do
12952         if test -r "$inc_dir/$qt5_test_include"; then
12953             qt5_incdir="$inc_dir"
12954             break
12955         fi
12956     done
12957     AC_MSG_RESULT([$qt5_incdir])
12958     if test "x$qt5_incdir" = "xno"; then
12959         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12960     fi
12961     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12962     AC_LANG_PUSH([C++])
12963     save_CPPFLAGS=$CPPFLAGS
12964     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12965     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12966         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12967     CPPFLAGS=$save_CPPFLAGS
12968     AC_LANG_POP([C++])
12970     AC_MSG_CHECKING([for Qt5 libraries])
12971     qt5_libdir="no"
12972     for lib_dir in $qt5_libdirs; do
12973         if test -r "$lib_dir/$qt5_test_library"; then
12974             qt5_libdir="$lib_dir"
12975             break
12976         fi
12977     done
12978     AC_MSG_RESULT([$qt5_libdir])
12979     if test "x$qt5_libdir" = "xno"; then
12980         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12981     fi
12983     if test "$_os" = "Emscripten"; then
12984         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12985             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12986         fi
12987         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12988             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12989         fi
12991         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12992         if ! test -x "$EMSDK_LLVM_NM"; then
12993             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12994         fi
12995         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12996             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12997         fi
12998         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12999         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13000             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13001         fi
13002         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13003             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13004         fi
13005     fi
13007     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13008     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13009     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13010     if test "$_os" = "Emscripten"; then
13011         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13012     fi
13014     if test "$USING_X11" = TRUE; then
13015         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13016         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13017             QT5_HAVE_XCB_ICCCM=1
13018             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13019         ],[
13020             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)])
13021             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13022         ])
13023         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13024         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13025         QT5_USING_X11=1
13026         AC_DEFINE(QT5_USING_X11)
13027     fi
13029     dnl Check for Meta Object Compiler
13031     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13032     if test "$MOC5" = "no"; then
13033         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13034 the root of your Qt installation by exporting QT5DIR before running "configure".])
13035     fi
13037     if test "$test_gstreamer_1_0" = yes; then
13038         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13039                 QT5_HAVE_GOBJECT=1
13040                 AC_DEFINE(QT5_HAVE_GOBJECT)
13041             ],
13042             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13043         )
13044     fi
13046 AC_SUBST(QT5_CFLAGS)
13047 AC_SUBST(QT5_LIBS)
13048 AC_SUBST(MOC5)
13049 AC_SUBST(QT5_GOBJECT_CFLAGS)
13050 AC_SUBST(QT5_GOBJECT_LIBS)
13051 AC_SUBST(QT5_HAVE_GOBJECT)
13052 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13054 dnl ===================================================================
13055 dnl QT6 Integration
13056 dnl ===================================================================
13058 QT6_CFLAGS=""
13059 QT6_LIBS=""
13060 QMAKE6="qmake"
13061 MOC6="moc"
13062 QT6_PLATFORMS_SRCDIR=""
13063 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13064 then
13065     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13066     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13068     if test -n "$supports_multilib"; then
13069         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13070     fi
13072     qt6_test_include="QtWidgets/qapplication.h"
13073     if test "$_os" = "Emscripten"; then
13074         qt6_test_library="libQt6Widgets.a"
13075     else
13076         qt6_test_library="libQt6Widgets.so"
13077     fi
13079     dnl Check for qmake6
13080     if test -n "$QT6DIR"; then
13081         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13082     else
13083         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13084     fi
13085     if test "$QMAKE6" = "no"; then
13086         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13087     else
13088         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13089         if test -z "$qmake6_test_ver"; then
13090             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13091         fi
13092         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13093     fi
13095     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13096     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13097     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13098     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13100     AC_MSG_CHECKING([for Qt6 headers])
13101     qt6_incdir="no"
13102     for inc_dir in $qt6_incdirs; do
13103         if test -r "$inc_dir/$qt6_test_include"; then
13104             qt6_incdir="$inc_dir"
13105             break
13106         fi
13107     done
13108     AC_MSG_RESULT([$qt6_incdir])
13109     if test "x$qt6_incdir" = "xno"; then
13110         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13111     fi
13112     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13113     AC_LANG_PUSH([C++])
13114     save_CPPFLAGS=$CPPFLAGS
13115     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13116     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13117         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13118     CPPFLAGS=$save_CPPFLAGS
13119     AC_LANG_POP([C++])
13121     AC_MSG_CHECKING([for Qt6 libraries])
13122     qt6_libdir="no"
13123     for lib_dir in $qt6_libdirs; do
13124         if test -r "$lib_dir/$qt6_test_library"; then
13125             qt6_libdir="$lib_dir"
13126             break
13127         fi
13128     done
13129     AC_MSG_RESULT([$qt6_libdir])
13130     if test "x$qt6_libdir" = "xno"; then
13131         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13132     fi
13134     if test "$_os" = "Emscripten"; then
13135         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13136             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13137         fi
13138         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13139             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13140         fi
13141     fi
13143     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13144     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13145     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13146     if test "$_os" = "Emscripten"; then
13147         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13148     fi
13150     if test "$USING_X11" = TRUE; then
13151         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13152         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13153         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13154         QT6_USING_X11=1
13155         AC_DEFINE(QT6_USING_X11)
13156     fi
13158     dnl Check for Meta Object Compiler
13160     for lib_dir in $qt6_libdirs; do
13161         if test -z "$qt6_libexec_dirs"; then
13162             qt6_libexec_dirs="$lib_dir/libexec"
13163         else
13164             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13165         fi
13166     done
13167     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])
13168     if test "$MOC6" = "no"; then
13169         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13170 the root of your Qt installation by exporting QT6DIR before running "configure".])
13171     else
13172         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13173         if test -z "$moc6_test_ver"; then
13174             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13175         fi
13176         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13177     fi
13179 AC_SUBST(QT6_CFLAGS)
13180 AC_SUBST(QT6_LIBS)
13181 AC_SUBST(MOC6)
13182 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13184 dnl ===================================================================
13185 dnl KF5 Integration
13186 dnl ===================================================================
13188 KF5_CFLAGS=""
13189 KF5_LIBS=""
13190 KF5_CONFIG="kf5-config"
13191 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13192         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13193 then
13194     if test "$OS" = "HAIKU"; then
13195         haiku_arch="`echo $RTL_ARCH | tr X x`"
13196         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13197         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13198     fi
13200     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13201     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13202     if test -n "$supports_multilib"; then
13203         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13204     fi
13206     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13207     kf5_test_library="libKF5KIOFileWidgets.so"
13208     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13210     dnl kf5 KDE4 support compatibility installed
13211     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13212     if test "$KF5_CONFIG" != "no"; then
13213         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13214         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13215     fi
13217     dnl Check for KF5 headers
13218     AC_MSG_CHECKING([for KF5 headers])
13219     kf5_incdir="no"
13220     for kf5_check in $kf5_incdirs; do
13221         if test -r "$kf5_check/$kf5_test_include"; then
13222             kf5_incdir="$kf5_check/KF5"
13223             break
13224         fi
13225     done
13226     AC_MSG_RESULT([$kf5_incdir])
13227     if test "x$kf5_incdir" = "xno"; then
13228         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13229     fi
13231     dnl Check for KF5 libraries
13232     AC_MSG_CHECKING([for KF5 libraries])
13233     kf5_libdir="no"
13234     for kf5_check in $kf5_libdirs; do
13235         if test -r "$kf5_check/$kf5_test_library"; then
13236             kf5_libdir="$kf5_check"
13237             break
13238         fi
13239     done
13241     AC_MSG_RESULT([$kf5_libdir])
13242     if test "x$kf5_libdir" = "xno"; then
13243         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13244     fi
13246     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"
13247     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13248     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13250     if test "$USING_X11" = TRUE; then
13251         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13252     fi
13254     AC_LANG_PUSH([C++])
13255     save_CXXFLAGS=$CXXFLAGS
13256     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13257     AC_MSG_CHECKING([whether KDE is >= 5.0])
13258        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13259 #include <kcoreaddons_version.h>
13261 int main(int argc, char **argv) {
13262        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13263        else return 1;
13265        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13266     CXXFLAGS=$save_CXXFLAGS
13267     AC_LANG_POP([C++])
13269 AC_SUBST(KF5_CFLAGS)
13270 AC_SUBST(KF5_LIBS)
13272 dnl ===================================================================
13273 dnl Test whether to include Evolution 2 support
13274 dnl ===================================================================
13275 AC_MSG_CHECKING([whether to enable evolution 2 support])
13276 if test "$enable_evolution2" = yes; then
13277     AC_MSG_RESULT([yes])
13278     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13279     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13280     FilterLibs "${GOBJECT_LIBS}"
13281     GOBJECT_LIBS="${filteredlibs}"
13282     ENABLE_EVOAB2="TRUE"
13283 else
13284     AC_MSG_RESULT([no])
13286 AC_SUBST(ENABLE_EVOAB2)
13287 AC_SUBST(GOBJECT_CFLAGS)
13288 AC_SUBST(GOBJECT_LIBS)
13290 dnl ===================================================================
13291 dnl Test which themes to include
13292 dnl ===================================================================
13293 AC_MSG_CHECKING([which themes to include])
13294 # if none given use default subset of available themes
13295 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13296     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"
13299 WITH_THEMES=""
13300 if test "x$with_theme" != "xno"; then
13301     for theme in $with_theme; do
13302         case $theme in
13303         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" ;;
13304         default) real_theme=colibre ;;
13305         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13306         esac
13307         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13308     done
13310 AC_MSG_RESULT([$WITH_THEMES])
13311 AC_SUBST([WITH_THEMES])
13312 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13313 for theme in $with_theme; do
13314     case $theme in
13315     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13316     *) ;;
13317     esac
13318 done
13320 ###############################################################################
13321 # Extensions checking
13322 ###############################################################################
13323 AC_MSG_CHECKING([for extensions integration])
13324 if test "x$enable_extension_integration" != "xno"; then
13325     WITH_EXTENSION_INTEGRATION=TRUE
13326     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13327     AC_MSG_RESULT([yes, use integration])
13328 else
13329     WITH_EXTENSION_INTEGRATION=
13330     AC_MSG_RESULT([no, do not integrate])
13332 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13334 dnl Should any extra extensions be included?
13335 dnl There are standalone tests for each of these below.
13336 WITH_EXTRA_EXTENSIONS=
13337 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13339 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13340 if test "x$with_java" != "xno"; then
13341     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13344 AC_MSG_CHECKING([whether to build opens___.ttf])
13345 if test "$enable_build_opensymbol" = "yes"; then
13346     AC_MSG_RESULT([yes])
13347     AC_PATH_PROG(FONTFORGE, fontforge)
13348     if test -z "$FONTFORGE"; then
13349         AC_MSG_ERROR([fontforge not installed])
13350     fi
13351 else
13352     AC_MSG_RESULT([no])
13353     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13355 AC_SUBST(FONTFORGE)
13357 dnl ===================================================================
13358 dnl Test whether to include fonts
13359 dnl ===================================================================
13360 AC_MSG_CHECKING([whether to include third-party fonts])
13361 if test "$with_fonts" != "no"; then
13362     AC_MSG_RESULT([yes])
13363     WITH_FONTS=TRUE
13364     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13365     AC_DEFINE(HAVE_MORE_FONTS)
13366 else
13367     AC_MSG_RESULT([no])
13368     WITH_FONTS=
13369     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13371 AC_SUBST(WITH_FONTS)
13374 dnl ===================================================================
13375 dnl Test whether to enable online update service
13376 dnl ===================================================================
13377 AC_MSG_CHECKING([whether to enable online update])
13378 ENABLE_ONLINE_UPDATE=
13379 ENABLE_ONLINE_UPDATE_MAR=
13380 UPDATE_CONFIG=
13381 if test "$enable_online_update" = ""; then
13382     AC_MSG_RESULT([no])
13383 else
13384     if test "$enable_online_update" = "mar"; then
13385         AC_MSG_RESULT([yes - MAR-based online update])
13386         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13387         if test "$with_update_config" = ""; then
13388             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13389         fi
13390         UPDATE_CONFIG="$with_update_config"
13391         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13392     elif test "$enable_online_update" = "yes"; then
13393         AC_MSG_RESULT([yes])
13394         ENABLE_ONLINE_UPDATE="TRUE"
13395     else
13396         AC_MSG_RESULT([no])
13397     fi
13399 AC_SUBST(ENABLE_ONLINE_UPDATE)
13400 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13401 AC_SUBST(UPDATE_CONFIG)
13404 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13405 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13406     if test "x$with_privacy_policy_url" = "xundefined"; then
13407         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13408     fi
13410 AC_SUBST(PRIVACY_POLICY_URL)
13411 dnl ===================================================================
13412 dnl Test whether we need bzip2
13413 dnl ===================================================================
13414 SYSTEM_BZIP2=
13415 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13416     AC_MSG_CHECKING([whether to use system bzip2])
13417     if test "$with_system_bzip2" = yes; then
13418         SYSTEM_BZIP2=TRUE
13419         AC_MSG_RESULT([yes])
13420         PKG_CHECK_MODULES(BZIP2, bzip2)
13421         FilterLibs "${BZIP2_LIBS}"
13422         BZIP2_LIBS="${filteredlibs}"
13423     else
13424         AC_MSG_RESULT([no])
13425         BUILD_TYPE="$BUILD_TYPE BZIP2"
13426     fi
13428 AC_SUBST(SYSTEM_BZIP2)
13429 AC_SUBST(BZIP2_CFLAGS)
13430 AC_SUBST(BZIP2_LIBS)
13432 dnl ===================================================================
13433 dnl Test whether to enable extension update
13434 dnl ===================================================================
13435 AC_MSG_CHECKING([whether to enable extension update])
13436 ENABLE_EXTENSION_UPDATE=
13437 if test "x$enable_extension_update" = "xno"; then
13438     AC_MSG_RESULT([no])
13439 else
13440     AC_MSG_RESULT([yes])
13441     ENABLE_EXTENSION_UPDATE="TRUE"
13442     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13443     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13445 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13448 dnl ===================================================================
13449 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13450 dnl ===================================================================
13451 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13452 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13453     AC_MSG_RESULT([no])
13454     ENABLE_SILENT_MSI=
13455 else
13456     AC_MSG_RESULT([yes])
13457     ENABLE_SILENT_MSI=TRUE
13458     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13460 AC_SUBST(ENABLE_SILENT_MSI)
13462 dnl ===================================================================
13463 dnl Check for WiX tools.
13464 dnl ===================================================================
13465 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13466     AC_MSG_RESULT([no])
13467     ENABLE_WIX=
13468 else
13469     AC_MSG_RESULT([yes])
13470     if ! which candle  >/dev/null 2>&1; then
13471       AC_MSG_ERROR([WiX requested but WiX toolset not found.])
13472     fi
13473     ENABLE_WIX=TRUE
13475 AC_SUBST(ENABLE_SILENT_MSI)
13477 AC_MSG_CHECKING([whether and how to use Xinerama])
13478 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13479     if test "$x_libraries" = "default_x_libraries"; then
13480         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13481         if test "x$XINERAMALIB" = x; then
13482            XINERAMALIB="/usr/lib"
13483         fi
13484     else
13485         XINERAMALIB="$x_libraries"
13486     fi
13487     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13488         # we have both versions, let the user decide but use the dynamic one
13489         # per default
13490         USE_XINERAMA=TRUE
13491         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13492             XINERAMA_LINK=dynamic
13493         else
13494             XINERAMA_LINK=static
13495         fi
13496     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13497         # we have only the dynamic version
13498         USE_XINERAMA=TRUE
13499         XINERAMA_LINK=dynamic
13500     elif test -e "$XINERAMALIB/libXinerama.a"; then
13501         # static version
13502         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13503             USE_XINERAMA=TRUE
13504             XINERAMA_LINK=static
13505         else
13506             USE_XINERAMA=
13507             XINERAMA_LINK=none
13508         fi
13509     else
13510         # no Xinerama
13511         USE_XINERAMA=
13512         XINERAMA_LINK=none
13513     fi
13514     if test "$USE_XINERAMA" = "TRUE"; then
13515         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13516         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13517             [AC_MSG_ERROR(Xinerama header not found.)], [])
13518         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13519         if test "x$XEXTLIB" = x; then
13520            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13521         fi
13522         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13523         if test "$_os" = "FreeBSD"; then
13524             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13525         fi
13526         if test "$_os" = "Linux"; then
13527             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13528         fi
13529         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13530             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13531     else
13532         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13533     fi
13534 else
13535     USE_XINERAMA=
13536     XINERAMA_LINK=none
13537     AC_MSG_RESULT([no])
13539 AC_SUBST(USE_XINERAMA)
13540 AC_SUBST(XINERAMA_LINK)
13542 dnl ===================================================================
13543 dnl Test whether to build cairo or rely on the system version
13544 dnl ===================================================================
13546 if test "$test_cairo" = "yes"; then
13547     AC_MSG_CHECKING([whether to use the system cairo])
13549     : ${with_system_cairo:=$with_system_libs}
13550     if test "$with_system_cairo" = "yes"; then
13551         SYSTEM_CAIRO=TRUE
13552         AC_MSG_RESULT([yes])
13554         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13555         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13556         FilterLibs "${CAIRO_LIBS}"
13557         CAIRO_LIBS="${filteredlibs}"
13559         if test "$test_xrender" = "yes"; then
13560             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13561             AC_LANG_PUSH([C])
13562             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13563 #ifdef PictStandardA8
13564 #else
13565       return fail;
13566 #endif
13567 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13569             AC_LANG_POP([C])
13570         fi
13571     else
13572         AC_MSG_RESULT([no])
13573         BUILD_TYPE="$BUILD_TYPE CAIRO"
13574     fi
13576     if test "$enable_cairo_canvas" != no; then
13577         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13578         ENABLE_CAIRO_CANVAS=TRUE
13579     fi
13582 AC_SUBST(CAIRO_CFLAGS)
13583 AC_SUBST(CAIRO_LIBS)
13584 AC_SUBST(ENABLE_CAIRO_CANVAS)
13585 AC_SUBST(SYSTEM_CAIRO)
13587 dnl ===================================================================
13588 dnl Test whether to use avahi
13589 dnl ===================================================================
13590 if test "$_os" = "WINNT"; then
13591     # Windows uses bundled mDNSResponder
13592     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13593 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13594     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13595                       [ENABLE_AVAHI="TRUE"])
13596     AC_DEFINE(HAVE_FEATURE_AVAHI)
13597     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13598     FilterLibs "${AVAHI_LIBS}"
13599     AVAHI_LIBS="${filteredlibs}"
13602 AC_SUBST(ENABLE_AVAHI)
13603 AC_SUBST(AVAHI_CFLAGS)
13604 AC_SUBST(AVAHI_LIBS)
13606 dnl ===================================================================
13607 dnl Test whether to use liblangtag
13608 dnl ===================================================================
13609 SYSTEM_LIBLANGTAG=
13610 AC_MSG_CHECKING([whether to use system liblangtag])
13611 if test "$with_system_liblangtag" = yes; then
13612     SYSTEM_LIBLANGTAG=TRUE
13613     AC_MSG_RESULT([yes])
13614     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13615     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13616     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13617     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13618     FilterLibs "${LIBLANGTAG_LIBS}"
13619     LIBLANGTAG_LIBS="${filteredlibs}"
13620 else
13621     SYSTEM_LIBLANGTAG=
13622     AC_MSG_RESULT([no])
13623     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13624     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13625     if test "$COM" = "MSC"; then
13626         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13627     else
13628         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13629     fi
13631 AC_SUBST(SYSTEM_LIBLANGTAG)
13632 AC_SUBST(LIBLANGTAG_CFLAGS)
13633 AC_SUBST(LIBLANGTAG_LIBS)
13635 dnl ===================================================================
13636 dnl Test whether to build libpng or rely on the system version
13637 dnl ===================================================================
13639 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13640 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13641 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13643 dnl ===================================================================
13644 dnl Test whether to build libtiff or rely on the system version
13645 dnl ===================================================================
13647 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13649 dnl ===================================================================
13650 dnl Test whether to build libwebp or rely on the system version
13651 dnl ===================================================================
13653 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13655 dnl ===================================================================
13656 dnl Check for runtime JVM search path
13657 dnl ===================================================================
13658 if test "$ENABLE_JAVA" != ""; then
13659     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13660     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13661         AC_MSG_RESULT([yes])
13662         if ! test -d "$with_jvm_path"; then
13663             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13664         fi
13665         if ! test -d "$with_jvm_path"jvm; then
13666             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13667         fi
13668         JVM_ONE_PATH_CHECK="$with_jvm_path"
13669         AC_SUBST(JVM_ONE_PATH_CHECK)
13670     else
13671         AC_MSG_RESULT([no])
13672     fi
13675 dnl ===================================================================
13676 dnl Test for the presence of Ant and that it works
13677 dnl ===================================================================
13679 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13680     ANT_HOME=; export ANT_HOME
13681     WITH_ANT_HOME=; export WITH_ANT_HOME
13682     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13683         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13684             if test "$_os" = "WINNT"; then
13685                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13686             else
13687                 with_ant_home="$LODE_HOME/opt/ant"
13688             fi
13689         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13690             with_ant_home="$LODE_HOME/opt/ant"
13691         fi
13692     fi
13693     if test -z "$with_ant_home"; then
13694         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13695     else
13696         if test "$_os" = "WINNT"; then
13697             # AC_PATH_PROGS needs unix path
13698             with_ant_home=`cygpath -u "$with_ant_home"`
13699         fi
13700         AbsolutePath "$with_ant_home"
13701         with_ant_home=$absolute_path
13702         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13703         WITH_ANT_HOME=$with_ant_home
13704         ANT_HOME=$with_ant_home
13705     fi
13707     if test -z "$ANT"; then
13708         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13709     else
13710         # resolve relative or absolute symlink
13711         while test -h "$ANT"; do
13712             a_cwd=`pwd`
13713             a_basename=`basename "$ANT"`
13714             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13715             cd "`dirname "$ANT"`"
13716             cd "`dirname "$a_script"`"
13717             ANT="`pwd`"/"`basename "$a_script"`"
13718             cd "$a_cwd"
13719         done
13721         AC_MSG_CHECKING([if $ANT works])
13722         mkdir -p conftest.dir
13723         a_cwd=$(pwd)
13724         cd conftest.dir
13725         cat > conftest.java << EOF
13726         public class conftest {
13727             int testmethod(int a, int b) {
13728                     return a + b;
13729             }
13730         }
13733         cat > conftest.xml << EOF
13734         <project name="conftest" default="conftest">
13735         <target name="conftest">
13736             <javac srcdir="." includes="conftest.java">
13737             </javac>
13738         </target>
13739         </project>
13742         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13743         if test $? = 0 -a -f ./conftest.class; then
13744             AC_MSG_RESULT([Ant works])
13745             if test -z "$WITH_ANT_HOME"; then
13746                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13747                 if test -z "$ANT_HOME"; then
13748                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13749                 fi
13750             else
13751                 ANT_HOME="$WITH_ANT_HOME"
13752             fi
13753         else
13754             echo "configure: Ant test failed" >&5
13755             cat conftest.java >&5
13756             cat conftest.xml >&5
13757             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13758         fi
13759         cd "$a_cwd"
13760         rm -fr conftest.dir
13761     fi
13762     if test -z "$ANT_HOME"; then
13763         ANT_HOME="NO_ANT_HOME"
13764     else
13765         PathFormat "$ANT_HOME"
13766         ANT_HOME="$formatted_path"
13767         PathFormat "$ANT"
13768         ANT="$formatted_path"
13769     fi
13771     dnl Checking for ant.jar
13772     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13773         AC_MSG_CHECKING([Ant lib directory])
13774         if test -f $ANT_HOME/lib/ant.jar; then
13775             ANT_LIB="$ANT_HOME/lib"
13776         else
13777             if test -f $ANT_HOME/ant.jar; then
13778                 ANT_LIB="$ANT_HOME"
13779             else
13780                 if test -f /usr/share/java/ant.jar; then
13781                     ANT_LIB=/usr/share/java
13782                 else
13783                     if test -f /usr/share/ant-core/lib/ant.jar; then
13784                         ANT_LIB=/usr/share/ant-core/lib
13785                     else
13786                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13787                             ANT_LIB="$ANT_HOME/lib/ant"
13788                         else
13789                             if test -f /usr/share/lib/ant/ant.jar; then
13790                                 ANT_LIB=/usr/share/lib/ant
13791                             else
13792                                 AC_MSG_ERROR([Ant libraries not found!])
13793                             fi
13794                         fi
13795                     fi
13796                 fi
13797             fi
13798         fi
13799         PathFormat "$ANT_LIB"
13800         ANT_LIB="$formatted_path"
13801         AC_MSG_RESULT([Ant lib directory found.])
13802     fi
13804     ant_minver=1.6.0
13805     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13807     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13808     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13809     ant_version_major=`echo $ant_version | cut -d. -f1`
13810     ant_version_minor=`echo $ant_version | cut -d. -f2`
13811     echo "configure: ant_version $ant_version " >&5
13812     echo "configure: ant_version_major $ant_version_major " >&5
13813     echo "configure: ant_version_minor $ant_version_minor " >&5
13814     if test "$ant_version_major" -ge "2"; then
13815         AC_MSG_RESULT([yes, $ant_version])
13816     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13817         AC_MSG_RESULT([yes, $ant_version])
13818     else
13819         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13820     fi
13822     rm -f conftest* core core.* *.core
13824 AC_SUBST(ANT)
13825 AC_SUBST(ANT_HOME)
13826 AC_SUBST(ANT_LIB)
13828 OOO_JUNIT_JAR=
13829 HAMCREST_JAR=
13830 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13831     AC_MSG_CHECKING([for JUnit 4])
13832     if test "$with_junit" = "yes"; then
13833         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13834             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13835         elif test -e /usr/share/java/junit4.jar; then
13836             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13837         else
13838            if test -e /usr/share/lib/java/junit.jar; then
13839               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13840            else
13841               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13842            fi
13843         fi
13844     else
13845         OOO_JUNIT_JAR=$with_junit
13846     fi
13847     if test "$_os" = "WINNT"; then
13848         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13849     fi
13850     printf 'import org.junit.Before;' > conftest.java
13851     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13852         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13853     else
13854         AC_MSG_ERROR(
13855 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13856  specify its pathname via --with-junit=..., or disable it via --without-junit])
13857     fi
13858     rm -f conftest.class conftest.java
13859     if test $OOO_JUNIT_JAR != ""; then
13860         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13861     fi
13863     AC_MSG_CHECKING([for included Hamcrest])
13864     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13865     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13866         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13867     else
13868         AC_MSG_RESULT([Not included])
13869         AC_MSG_CHECKING([for standalone hamcrest jar.])
13870         if test "$with_hamcrest" = "yes"; then
13871             if test -e /usr/share/lib/java/hamcrest.jar; then
13872                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13873             elif test -e /usr/share/java/hamcrest/core.jar; then
13874                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13875             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13876                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13877             else
13878                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13879             fi
13880         else
13881             HAMCREST_JAR=$with_hamcrest
13882         fi
13883         if test "$_os" = "WINNT"; then
13884             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13885         fi
13886         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13887             AC_MSG_RESULT([$HAMCREST_JAR])
13888         else
13889             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),
13890                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13891         fi
13892     fi
13893     rm -f conftest.class conftest.java
13895 AC_SUBST(OOO_JUNIT_JAR)
13896 AC_SUBST(HAMCREST_JAR)
13899 AC_SUBST(SCPDEFS)
13902 # check for wget and curl
13904 WGET=
13905 CURL=
13907 if test "$enable_fetch_external" != "no"; then
13909 CURL=`which curl 2>/dev/null`
13911 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13912     # wget new enough?
13913     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13914     if test $? -eq 0; then
13915         WGET=$i
13916         break
13917     fi
13918 done
13920 if test -z "$WGET" -a -z "$CURL"; then
13921     AC_MSG_ERROR([neither wget nor curl found!])
13926 AC_SUBST(WGET)
13927 AC_SUBST(CURL)
13930 # check for sha256sum
13932 SHA256SUM=
13934 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13935     eval "$i -a 256 --version" > /dev/null 2>&1
13936     ret=$?
13937     if test $ret -eq 0; then
13938         SHA256SUM="$i -a 256"
13939         break
13940     fi
13941 done
13943 if test -z "$SHA256SUM"; then
13944     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13945         eval "$i --version" > /dev/null 2>&1
13946         ret=$?
13947         if test $ret -eq 0; then
13948             SHA256SUM=$i
13949             break
13950         fi
13951     done
13954 if test -z "$SHA256SUM"; then
13955     AC_MSG_ERROR([no sha256sum found!])
13958 AC_SUBST(SHA256SUM)
13960 dnl ===================================================================
13961 dnl Dealing with l10n options
13962 dnl ===================================================================
13963 AC_MSG_CHECKING([which languages to be built])
13964 # get list of all languages
13965 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13966 # the sed command does the following:
13967 #   + if a line ends with a backslash, append the next line to it
13968 #   + adds " on the beginning of the value (after =)
13969 #   + adds " at the end of the value
13970 #   + removes en-US; we want to put it on the beginning
13971 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13972 [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)]
13973 ALL_LANGS="en-US $completelangiso"
13974 # check the configured localizations
13975 WITH_LANG="$with_lang"
13977 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13978 # (Norwegian is "nb" and "nn".)
13979 if test "$WITH_LANG" = "no"; then
13980     WITH_LANG=
13983 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13984     AC_MSG_RESULT([en-US])
13985 else
13986     AC_MSG_RESULT([$WITH_LANG])
13987     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13988     if test -z "$MSGFMT"; then
13989         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13990             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13991         elif test -x "/opt/lo/bin/msgfmt"; then
13992             MSGFMT="/opt/lo/bin/msgfmt"
13993         else
13994             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13995             if test -z "$MSGFMT"; then
13996                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13997             fi
13998         fi
13999     fi
14000     if test -z "$MSGUNIQ"; then
14001         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14002             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14003         elif test -x "/opt/lo/bin/msguniq"; then
14004             MSGUNIQ="/opt/lo/bin/msguniq"
14005         else
14006             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14007             if test -z "$MSGUNIQ"; then
14008                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14009             fi
14010         fi
14011     fi
14013 AC_SUBST(MSGFMT)
14014 AC_SUBST(MSGUNIQ)
14015 # check that the list is valid
14016 for lang in $WITH_LANG; do
14017     test "$lang" = "ALL" && continue
14018     # need to check for the exact string, so add space before and after the list of all languages
14019     for vl in $ALL_LANGS; do
14020         if test "$vl" = "$lang"; then
14021            break
14022         fi
14023     done
14024     if test "$vl" != "$lang"; then
14025         # if you're reading this - you prolly quoted your languages remove the quotes ...
14026         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14027     fi
14028 done
14029 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14030     echo $WITH_LANG | grep -q en-US
14031     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14033 # list with substituted ALL
14034 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14035 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14036 test "$WITH_LANG" = "en-US" && WITH_LANG=
14037 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14038     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14039     ALL_LANGS=`echo $ALL_LANGS qtz`
14041 AC_SUBST(ALL_LANGS)
14042 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14043 AC_SUBST(WITH_LANG)
14044 AC_SUBST(WITH_LANG_LIST)
14045 AC_SUBST(GIT_NEEDED_SUBMODULES)
14047 WITH_POOR_HELP_LOCALIZATIONS=
14048 if test -d "$SRC_ROOT/translations/source"; then
14049     for l in `ls -1 $SRC_ROOT/translations/source`; do
14050         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14051             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14052         fi
14053     done
14055 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14057 if test -n "$with_locales" -a "$with_locales" != ALL; then
14058     WITH_LOCALES="$with_locales"
14060     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14061     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14062     # config_host/config_locales.h.in
14063     for locale in $WITH_LOCALES; do
14064         lang=${locale%_*}
14066         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14068         case $lang in
14069         hi|mr*ne)
14070             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14071             ;;
14072         bg|ru)
14073             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14074             ;;
14075         esac
14076     done
14077 else
14078     AC_DEFINE(WITH_LOCALE_ALL)
14080 AC_SUBST(WITH_LOCALES)
14082 dnl git submodule update --reference
14083 dnl ===================================================================
14084 if test -n "${GIT_REFERENCE_SRC}"; then
14085     for repo in ${GIT_NEEDED_SUBMODULES}; do
14086         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14087             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14088         fi
14089     done
14091 AC_SUBST(GIT_REFERENCE_SRC)
14093 dnl git submodules linked dirs
14094 dnl ===================================================================
14095 if test -n "${GIT_LINK_SRC}"; then
14096     for repo in ${GIT_NEEDED_SUBMODULES}; do
14097         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14098             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14099         fi
14100     done
14102 AC_SUBST(GIT_LINK_SRC)
14104 dnl branding
14105 dnl ===================================================================
14106 AC_MSG_CHECKING([for alternative branding images directory])
14107 # initialize mapped arrays
14108 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14109 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14111 if test -z "$with_branding" -o "$with_branding" = "no"; then
14112     AC_MSG_RESULT([none])
14113     DEFAULT_BRAND_IMAGES="$brand_files"
14114 else
14115     if ! test -d $with_branding ; then
14116         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14117     else
14118         AC_MSG_RESULT([$with_branding])
14119         CUSTOM_BRAND_DIR="$with_branding"
14120         for lfile in $brand_files
14121         do
14122             if ! test -f $with_branding/$lfile ; then
14123                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14124                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14125             else
14126                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14127             fi
14128         done
14129         check_for_progress="yes"
14130     fi
14132 AC_SUBST([BRAND_INTRO_IMAGES])
14133 AC_SUBST([CUSTOM_BRAND_DIR])
14134 AC_SUBST([CUSTOM_BRAND_IMAGES])
14135 AC_SUBST([DEFAULT_BRAND_IMAGES])
14138 AC_MSG_CHECKING([for 'intro' progress settings])
14139 PROGRESSBARCOLOR=
14140 PROGRESSSIZE=
14141 PROGRESSPOSITION=
14142 PROGRESSFRAMECOLOR=
14143 PROGRESSTEXTCOLOR=
14144 PROGRESSTEXTBASELINE=
14146 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14147     source "$with_branding/progress.conf"
14148     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14149 else
14150     AC_MSG_RESULT([none])
14153 AC_SUBST(PROGRESSBARCOLOR)
14154 AC_SUBST(PROGRESSSIZE)
14155 AC_SUBST(PROGRESSPOSITION)
14156 AC_SUBST(PROGRESSFRAMECOLOR)
14157 AC_SUBST(PROGRESSTEXTCOLOR)
14158 AC_SUBST(PROGRESSTEXTBASELINE)
14161 dnl ===================================================================
14162 dnl Custom build version
14163 dnl ===================================================================
14164 AC_MSG_CHECKING([for extra build ID])
14165 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14166     EXTRA_BUILDID="$with_extra_buildid"
14168 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14169 if test -n "$EXTRA_BUILDID" ; then
14170     AC_MSG_RESULT([$EXTRA_BUILDID])
14171 else
14172     AC_MSG_RESULT([not set])
14174 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14176 OOO_VENDOR=
14177 AC_MSG_CHECKING([for vendor])
14178 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14179     OOO_VENDOR="$USERNAME"
14181     if test -z "$OOO_VENDOR"; then
14182         OOO_VENDOR="$USER"
14183     fi
14185     if test -z "$OOO_VENDOR"; then
14186         OOO_VENDOR="`id -u -n`"
14187     fi
14189     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14190 else
14191     OOO_VENDOR="$with_vendor"
14192     AC_MSG_RESULT([$OOO_VENDOR])
14194 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14195 AC_SUBST(OOO_VENDOR)
14197 if test "$_os" = "Android" ; then
14198     ANDROID_PACKAGE_NAME=
14199     AC_MSG_CHECKING([for Android package name])
14200     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14201         if test -n "$ENABLE_DEBUG"; then
14202             # Default to the package name that makes ndk-gdb happy.
14203             ANDROID_PACKAGE_NAME="org.libreoffice"
14204         else
14205             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14206         fi
14208         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14209     else
14210         ANDROID_PACKAGE_NAME="$with_android_package_name"
14211         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14212     fi
14213     AC_SUBST(ANDROID_PACKAGE_NAME)
14216 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14217 if test "$with_compat_oowrappers" = "yes"; then
14218     WITH_COMPAT_OOWRAPPERS=TRUE
14219     AC_MSG_RESULT(yes)
14220 else
14221     WITH_COMPAT_OOWRAPPERS=
14222     AC_MSG_RESULT(no)
14224 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14226 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14227 AC_MSG_CHECKING([for install dirname])
14228 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14229     INSTALLDIRNAME="$with_install_dirname"
14231 AC_MSG_RESULT([$INSTALLDIRNAME])
14232 AC_SUBST(INSTALLDIRNAME)
14234 AC_MSG_CHECKING([for prefix])
14235 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14236 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14237 PREFIXDIR="$prefix"
14238 AC_MSG_RESULT([$PREFIXDIR])
14239 AC_SUBST(PREFIXDIR)
14241 LIBDIR=[$(eval echo $(eval echo $libdir))]
14242 AC_SUBST(LIBDIR)
14244 DATADIR=[$(eval echo $(eval echo $datadir))]
14245 AC_SUBST(DATADIR)
14247 MANDIR=[$(eval echo $(eval echo $mandir))]
14248 AC_SUBST(MANDIR)
14250 DOCDIR=[$(eval echo $(eval echo $docdir))]
14251 AC_SUBST(DOCDIR)
14253 BINDIR=[$(eval echo $(eval echo $bindir))]
14254 AC_SUBST(BINDIR)
14256 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14257 AC_SUBST(INSTALLDIR)
14259 TESTINSTALLDIR="${BUILDDIR}/test-install"
14260 AC_SUBST(TESTINSTALLDIR)
14263 # ===================================================================
14264 # OAuth2 id and secrets
14265 # ===================================================================
14267 AC_MSG_CHECKING([for Google Drive client id and secret])
14268 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14269     AC_MSG_RESULT([not set])
14270     GDRIVE_CLIENT_ID="\"\""
14271     GDRIVE_CLIENT_SECRET="\"\""
14272 else
14273     AC_MSG_RESULT([set])
14274     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14275     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14277 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14278 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14280 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14281 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14282     AC_MSG_RESULT([not set])
14283     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14284     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14285 else
14286     AC_MSG_RESULT([set])
14287     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14288     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14290 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14291 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14293 AC_MSG_CHECKING([for OneDrive client id and secret])
14294 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14295     AC_MSG_RESULT([not set])
14296     ONEDRIVE_CLIENT_ID="\"\""
14297     ONEDRIVE_CLIENT_SECRET="\"\""
14298 else
14299     AC_MSG_RESULT([set])
14300     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14301     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14303 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14304 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14307 dnl ===================================================================
14308 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14309 dnl --enable-dependency-tracking configure option
14310 dnl ===================================================================
14311 AC_MSG_CHECKING([whether to enable dependency tracking])
14312 if test "$enable_dependency_tracking" = "no"; then
14313     nodep=TRUE
14314     AC_MSG_RESULT([no])
14315 else
14316     AC_MSG_RESULT([yes])
14318 AC_SUBST(nodep)
14320 dnl ===================================================================
14321 dnl Number of CPUs to use during the build
14322 dnl ===================================================================
14323 AC_MSG_CHECKING([for number of processors to use])
14324 # plain --with-parallelism is just the default
14325 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14326     if test "$with_parallelism" = "no"; then
14327         PARALLELISM=0
14328     else
14329         PARALLELISM=$with_parallelism
14330     fi
14331 else
14332     if test "$enable_icecream" = "yes"; then
14333         PARALLELISM="40"
14334     else
14335         case `uname -s` in
14337         Darwin|FreeBSD|NetBSD|OpenBSD)
14338             PARALLELISM=`sysctl -n hw.ncpu`
14339             ;;
14341         Linux)
14342             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14343         ;;
14344         # what else than above does profit here *and* has /proc?
14345         *)
14346             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14347             ;;
14348         esac
14350         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14351         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14352     fi
14355 if test $PARALLELISM -eq 0; then
14356     AC_MSG_RESULT([explicit make -j option needed])
14357 else
14358     AC_MSG_RESULT([$PARALLELISM])
14360 AC_SUBST(PARALLELISM)
14363 # Set up ILIB for MSVC build
14365 ILIB1=
14366 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14367     ILIB="."
14368     if test -n "$JAVA_HOME"; then
14369         ILIB="$ILIB;$JAVA_HOME/lib"
14370     fi
14371     ILIB1=-link
14372     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14373     ILIB="$ILIB;$formatted_path"
14374     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14375     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14376     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14377     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14378         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14379         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14380     fi
14381     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14382     ucrtlibpath_formatted=$formatted_path
14383     ILIB="$ILIB;$ucrtlibpath_formatted"
14384     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14385     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14386         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14387         ILIB="$ILIB;$formatted_path"
14388     else
14389         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14390         ILIB="$ILIB;$formatted_path"
14391     fi
14393     if test "$cross_compiling" != "yes"; then
14394         ILIB_FOR_BUILD="$ILIB"
14395     fi
14397 AC_SUBST(ILIB)
14398 AC_SUBST(ILIB_FOR_BUILD)
14400 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14401 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14402 dnl from consteval constructor initializing const variable",
14403 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14404 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14405 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14406 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14407 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14408 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14409 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14410 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14411 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14412 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14413 AC_LANG_PUSH([C++])
14414 save_CXX=$CXX
14415 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14416     CXX="env LIB=$ILIB $CXX"
14418 save_CXXFLAGS=$CXXFLAGS
14419 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14420 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14421         struct S {
14422             consteval S() { i = 1; }
14423             int i = 0;
14424         };
14425         S const s;
14427         struct S1 { consteval S1(int) {} };
14428         struct S2 {
14429             S1 x;
14430             S2(): x(0) {}
14431         };
14433         struct S3 {
14434             consteval S3() {}
14435             union {
14436                 int a;
14437                 unsigned b = 0;
14438             };
14439         };
14440         void f() { S3(); }
14442         struct S4 { consteval S4() = default; };
14443         void f4(bool b) { b ? S4() : S4(); }
14445         struct S5 {
14446             consteval S5() { c = 0; }
14447             char * f() { return &c; }
14448             union {
14449                 char c;
14450                 int i;
14451             };
14452         };
14453         auto s5 = S5().f();
14454     ], [
14455         return (s.i == 1) ? 0 : 1;
14456     ])], [
14457         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14458         AC_MSG_RESULT([yes])
14459     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14460 CXX=$save_CXX
14461 CXXFLAGS=$save_CXXFLAGS
14462 AC_LANG_POP([C++])
14464 # ===================================================================
14465 # Creating bigger shared library to link against
14466 # ===================================================================
14467 AC_MSG_CHECKING([whether to create huge library])
14468 MERGELIBS=
14470 if test $_os = iOS -o $_os = Android; then
14471     # Never any point in mergelibs for these as we build just static
14472     # libraries anyway...
14473     enable_mergelibs=no
14476 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14477     if test $_os != Linux -a $_os != WINNT; then
14478         add_warning "--enable-mergelibs is not tested for this platform"
14479     fi
14480     MERGELIBS="TRUE"
14481     AC_MSG_RESULT([yes])
14482     AC_DEFINE(ENABLE_MERGELIBS)
14483 else
14484     AC_MSG_RESULT([no])
14486 AC_SUBST([MERGELIBS])
14488 dnl ===================================================================
14489 dnl icerun is a wrapper that stops us spawning tens of processes
14490 dnl locally - for tools that can't be executed on the compile cluster
14491 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14492 dnl ===================================================================
14493 AC_MSG_CHECKING([whether to use icerun wrapper])
14494 ICECREAM_RUN=
14495 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14496     ICECREAM_RUN=icerun
14497     AC_MSG_RESULT([yes])
14498 else
14499     AC_MSG_RESULT([no])
14501 AC_SUBST(ICECREAM_RUN)
14503 dnl ===================================================================
14504 dnl Setup the ICECC_VERSION for the build the same way it was set for
14505 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14506 dnl ===================================================================
14507 x_ICECC_VERSION=[\#]
14508 if test -n "$ICECC_VERSION" ; then
14509     x_ICECC_VERSION=
14511 AC_SUBST(x_ICECC_VERSION)
14512 AC_SUBST(ICECC_VERSION)
14514 dnl ===================================================================
14516 AC_MSG_CHECKING([MPL subset])
14517 MPL_SUBSET=
14519 if test "$enable_mpl_subset" = "yes"; then
14520     warn_report=false
14521     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14522         warn_report=true
14523     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14524         warn_report=true
14525     fi
14526     if test "$warn_report" = "true"; then
14527         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14528     fi
14529     if test "x$enable_postgresql_sdbc" != "xno"; then
14530         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14531     fi
14532     if test "$enable_lotuswordpro" = "yes"; then
14533         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14534     fi
14535     if test -n "$ENABLE_POPPLER"; then
14536         if test "x$SYSTEM_POPPLER" = "x"; then
14537             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14538         fi
14539     fi
14540     # cf. m4/libo_check_extension.m4
14541     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14542         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14543     fi
14544     for theme in $WITH_THEMES; do
14545         case $theme in
14546         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14547             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14548         *) : ;;
14549         esac
14550     done
14552     ENABLE_OPENGL_TRANSITIONS=
14554     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14555         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14556     fi
14558     MPL_SUBSET="TRUE"
14559     AC_DEFINE(MPL_HAVE_SUBSET)
14560     AC_MSG_RESULT([only])
14561 else
14562     AC_MSG_RESULT([no restrictions])
14564 AC_SUBST(MPL_SUBSET)
14566 dnl ===================================================================
14568 AC_MSG_CHECKING([formula logger])
14569 ENABLE_FORMULA_LOGGER=
14571 if test "x$enable_formula_logger" = "xyes"; then
14572     AC_MSG_RESULT([yes])
14573     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14574     ENABLE_FORMULA_LOGGER=TRUE
14575 elif test -n "$ENABLE_DBGUTIL" ; then
14576     AC_MSG_RESULT([yes])
14577     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14578     ENABLE_FORMULA_LOGGER=TRUE
14579 else
14580     AC_MSG_RESULT([no])
14583 AC_SUBST(ENABLE_FORMULA_LOGGER)
14585 dnl ===================================================================
14586 dnl Checking for active Antivirus software.
14587 dnl ===================================================================
14589 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14590     AC_MSG_CHECKING([for active Antivirus software])
14591     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14592     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14593     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14594         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14595             AC_MSG_RESULT([found])
14596             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14597             echo $EICAR_STRING > $SRC_ROOT/eicar
14598             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14599             rm $SRC_ROOT/eicar
14600             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14601                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14602             fi
14603             echo $EICAR_STRING > $BUILDDIR/eicar
14604             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14605             rm $BUILDDIR/eicar
14606             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14607                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14608             fi
14609             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"
14610         else
14611             AC_MSG_RESULT([not found])
14612         fi
14613     else
14614         AC_MSG_RESULT([n/a])
14615     fi
14618 dnl ===================================================================
14620 AC_MSG_CHECKING([for coredumpctl support])
14621 if test -z "$with_coredumpctl" && test $_os != Linux; then
14622     with_coredumpctl=no
14624 if test "$with_coredumpctl" = no; then
14625     WITH_COREDUMPCTL=
14626 else
14627     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14628     AC_PATH_PROG(JQ, jq)
14629     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14630     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14631     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14632         || test -z "$SYSTEMD_RUN"
14633     then
14634         if test -z "$with_coredumpctl"; then
14635             WITH_COREDUMPCTL=
14636         else
14637             if test -z "$COREDUMPCTL"; then
14638                 AC_MSG_ERROR([coredumpctl not found])
14639             fi
14640             if test -z "$JQ"; then
14641                 AC_MSG_ERROR([jq not found])
14642             fi
14643             if test -z "$SYSTEMD_ESCAPE"; then
14644                 AC_MSG_ERROR([systemd-escape not found])
14645             fi
14646             if test -z "$SYSTEMD_RUN"; then
14647                 AC_MSG_ERROR([systemd-run not found])
14648             fi
14649         fi
14650     else
14651         WITH_COREDUMPCTL=TRUE
14652     fi
14654 if test -z "$WITH_COREDUMPCTL"; then
14655     AC_MSG_RESULT([no])
14656 else
14657     AC_MSG_RESULT([yes])
14659 AC_SUBST(COREDUMPCTL)
14660 AC_SUBST(JQ)
14661 AC_SUBST(SYSTEMD_ESCAPE)
14662 AC_SUBST(SYSTEMD_RUN)
14663 AC_SUBST(WITH_COREDUMPCTL)
14665 dnl ===================================================================
14666 dnl Setting up the environment.
14667 dnl ===================================================================
14668 AC_MSG_NOTICE([setting up the build environment variables...])
14670 AC_SUBST(COMPATH)
14672 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14673     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14674         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14675         ATL_INCLUDE="$COMPATH/atlmfc/include"
14676     elif test -d "$COMPATH/atlmfc/lib"; then
14677         ATL_LIB="$COMPATH/atlmfc/lib"
14678         ATL_INCLUDE="$COMPATH/atlmfc/include"
14679     else
14680         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14681         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14682     fi
14683     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14684     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14685     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14688 if test "$build_os" = "cygwin"; then
14689     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14690     PathFormat "/usr/bin/find.exe"
14691     FIND="$formatted_path"
14692     PathFormat "/usr/bin/sort.exe"
14693     SORT="$formatted_path"
14694     PathFormat "/usr/bin/grep.exe"
14695     WIN_GREP="$formatted_path"
14696     PathFormat "/usr/bin/ls.exe"
14697     WIN_LS="$formatted_path"
14698     PathFormat "/usr/bin/touch.exe"
14699     WIN_TOUCH="$formatted_path"
14700 else
14701     FIND=find
14702     SORT=sort
14705 AC_SUBST(ATL_INCLUDE)
14706 AC_SUBST(ATL_LIB)
14707 AC_SUBST(FIND)
14708 AC_SUBST(SORT)
14709 AC_SUBST(WIN_GREP)
14710 AC_SUBST(WIN_LS)
14711 AC_SUBST(WIN_TOUCH)
14713 AC_SUBST(BUILD_TYPE)
14715 AC_SUBST(SOLARINC)
14717 PathFormat "$PERL"
14718 PERL="$formatted_path"
14719 AC_SUBST(PERL)
14721 if test -n "$TMPDIR"; then
14722     TEMP_DIRECTORY="$TMPDIR"
14723 else
14724     TEMP_DIRECTORY="/tmp"
14726 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
14727 if test "$build_os" = "cygwin"; then
14728     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14729     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
14731 AC_SUBST(TEMP_DIRECTORY)
14732 AC_SUBST(CYGWIN_BASH)
14734 # setup the PATH for the environment
14735 if test -n "$LO_PATH_FOR_BUILD"; then
14736     LO_PATH="$LO_PATH_FOR_BUILD"
14737     case "$host_os" in
14738     cygwin*|wsl*)
14739         pathmunge "$MSVC_HOST_PATH" "before"
14740         ;;
14741     esac
14742 else
14743     LO_PATH="$PATH"
14745     case "$host_os" in
14747     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14748         if test "$ENABLE_JAVA" != ""; then
14749             pathmunge "$JAVA_HOME/bin" "after"
14750         fi
14751         ;;
14753     cygwin*|wsl*)
14754         # Win32 make needs native paths
14755         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14756             LO_PATH=`cygpath -p -m "$PATH"`
14757         fi
14758         if test "$WIN_BUILD_ARCH" = "x64"; then
14759             # needed for msi packaging
14760             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14761         fi
14762         if test "$WIN_BUILD_ARCH" = "arm64"; then
14763             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
14764             # the x86 ones probably would work just as well...
14765             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
14766         fi
14767         # .NET 4.6 and higher don't have bin directory
14768         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14769             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14770         fi
14771         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14772         pathmunge "$CSC_PATH" "before"
14773         pathmunge "$MIDL_PATH" "before"
14774         pathmunge "$AL_PATH" "before"
14775         pathmunge "$MSVC_MULTI_PATH" "before"
14776         pathmunge "$MSVC_BUILD_PATH" "before"
14777         if test -n "$MSBUILD_PATH" ; then
14778             pathmunge "$MSBUILD_PATH" "before"
14779         fi
14780         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14781         if test "$ENABLE_JAVA" != ""; then
14782             if test -d "$JAVA_HOME/jre/bin/client"; then
14783                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14784             fi
14785             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14786                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14787             fi
14788             pathmunge "$JAVA_HOME/bin" "before"
14789         fi
14790         pathmunge "$MSVC_HOST_PATH" "before"
14791         ;;
14793     solaris*)
14794         pathmunge "/usr/css/bin" "before"
14795         if test "$ENABLE_JAVA" != ""; then
14796             pathmunge "$JAVA_HOME/bin" "after"
14797         fi
14798         ;;
14799     esac
14802 AC_SUBST(LO_PATH)
14804 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14805 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14806     x_LO_ELFCHECK_ALLOWLIST=
14807 else
14808     x_LO_ELFCHECK_ALLOWLIST=[\#]
14810 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14811 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14813 libo_FUZZ_SUMMARY
14815 # Generate a configuration sha256 we can use for deps
14816 if test -f config_host.mk; then
14817     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14819 if test -f config_host_lang.mk; then
14820     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14823 CFLAGS=$my_original_CFLAGS
14824 CXXFLAGS=$my_original_CXXFLAGS
14825 CPPFLAGS=$my_original_CPPFLAGS
14827 AC_CONFIG_LINKS([include:include])
14829 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14830 # BUILD platform configuration] - otherwise breaks cross building
14831 AC_CONFIG_FILES([config_host.mk
14832                  config_host_lang.mk
14833                  Makefile
14834                  lo.xcent
14835                  bin/bffvalidator.sh
14836                  bin/odfvalidator.sh
14837                  bin/officeotron.sh
14838                  hardened_runtime.xcent
14839                  instsetoo_native/util/openoffice.lst
14840                  sysui/desktop/macosx/Info.plist
14841                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14843 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14844 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14845 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14846 AC_CONFIG_HEADERS([config_host/config_clang.h])
14847 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14848 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14849 AC_CONFIG_HEADERS([config_host/config_eot.h])
14850 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14851 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14852 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14853 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14854 AC_CONFIG_HEADERS([config_host/config_features.h])
14855 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14856 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14857 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14858 AC_CONFIG_HEADERS([config_host/config_folders.h])
14859 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14860 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14861 AC_CONFIG_HEADERS([config_host/config_gio.h])
14862 AC_CONFIG_HEADERS([config_host/config_global.h])
14863 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14864 AC_CONFIG_HEADERS([config_host/config_java.h])
14865 AC_CONFIG_HEADERS([config_host/config_langs.h])
14866 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14867 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14868 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14869 AC_CONFIG_HEADERS([config_host/config_locales.h])
14870 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14871 AC_CONFIG_HEADERS([config_host/config_oox.h])
14872 AC_CONFIG_HEADERS([config_host/config_options.h])
14873 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14874 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14875 AC_CONFIG_HEADERS([config_host/config_skia.h])
14876 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14877 AC_CONFIG_HEADERS([config_host/config_validation.h])
14878 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14879 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14880 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14881 AC_CONFIG_HEADERS([config_host/config_version.h])
14882 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14883 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14884 AC_CONFIG_HEADERS([config_host/config_python.h])
14885 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14886 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14887 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14888 AC_OUTPUT
14890 if test "$CROSS_COMPILING" = TRUE; then
14891     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14894 # touch the config timestamp file
14895 if test ! -f config_host.mk.stamp; then
14896     echo > config_host.mk.stamp
14897 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14898     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14899 else
14900     echo > config_host.mk.stamp
14903 # touch the config lang timestamp file
14904 if test ! -f config_host_lang.mk.stamp; then
14905     echo > config_host_lang.mk.stamp
14906 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14907     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14908 else
14909     echo > config_host_lang.mk.stamp
14913 if test \( "$STALE_MAKE" = "TRUE" \) \
14914         -a "$build_os" = "cygwin"; then
14916 cat << _EOS
14917 ****************************************************************************
14918 WARNING:
14919 Your make version is known to be horribly slow, and hard to debug
14920 problems with. To get a reasonably functional make please do:
14922 to install a pre-compiled binary make for Win32
14924  mkdir -p /opt/lo/bin
14925  cd /opt/lo/bin
14926  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14927  cp make-4.2.1-msvc.exe make
14928  chmod +x make
14930 to install from source:
14931 place yourself in a working directory of you choice.
14933  git clone git://git.savannah.gnu.org/make.git
14935  [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"]
14936  set PATH=%PATH%;C:\Cygwin\bin
14937  [or Cygwin64, if that is what you have]
14938  cd path-to-make-repo-you-cloned-above
14939  build_w32.bat --without-guile
14941 should result in a WinRel/gnumake.exe.
14942 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14944 Then re-run autogen.sh
14946 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14947 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14949 _EOS
14953 cat << _EOF
14954 ****************************************************************************
14956 To show information on various make targets and make flags, run:
14957 $GNUMAKE help
14959 To just build, run:
14960 $GNUMAKE
14962 _EOF
14964 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14965     cat << _EOF
14966 After the build has finished successfully, you can immediately run what you built using the command:
14967 _EOF
14969     if test $_os = Darwin; then
14970         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14971     else
14972         echo instdir/program/soffice
14973     fi
14974     cat << _EOF
14976 If you want to run the unit tests, run:
14977 $GNUMAKE check
14979 _EOF
14982 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14983     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14984     cat "$WARNINGS_FILE_FOR_BUILD"
14985     echo
14988 if test -s "$WARNINGS_FILE"; then
14989     echo "HOST config ($WARNINGS_FILE)"
14990     cat "$WARNINGS_FILE"
14993 # Remove unneeded emconfigure artifacts
14994 rm -f a.out a.wasm a.out.js a.out.wasm
14996 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: