Fix build
[LibreOffice.git] / configure.ac
blob88e75bf7ffa96d9b4b8a4ed0c6ca688eaad5e8de
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.4.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
208 have_WARNINGS="no"
209 add_warning()
211     if test "$have_WARNINGS" = "no"; then
212         echo "*************************************" > "$WARNINGS_FILE"
213         have_WARNINGS="yes"
214         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
217         else
218             COLORWARN="* WARNING :"
219         fi
220     fi
221     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
228 dnl from themselves
230 mac_sanitize_path()
232     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235     mac_git_path=`which git 2>/dev/null`
236     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237         mac_path="$mac_path:`dirname $mac_git_path`"
238     fi
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241     mac_gpg_path=`which gpg 2>/dev/null`
242     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243         mac_path="$mac_path:`dirname $mac_gpg_path`"
244     fi
245     PATH="$mac_path"
246     unset mac_path
247     unset mac_git_path
248     unset mac_gpg_path
251 echo "********************************************************************"
252 echo "*"
253 echo "*   Running ${PACKAGE_NAME} build configuration."
254 echo "*"
255 echo "********************************************************************"
256 echo ""
258 dnl ===================================================================
259 dnl checks build and host OSes
260 dnl do this before argument processing to allow for platform dependent defaults
261 dnl ===================================================================
263 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
264 # Linux on WSL) trust that.
265 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
266     ac_cv_host="x86_64-pc-wsl"
267     ac_cv_host_cpu="x86_64"
268     ac_cv_host_os="wsl"
269     ac_cv_build="$ac_cv_host"
270     ac_cv_build_cpu="$ac_cv_host_cpu"
271     ac_cv_build_os="$ac_cv_host_os"
273     # Emulation of Cygwin's cygpath command for WSL.
274     cygpath()
275     {
276         if test -n "$UNITTEST_WSL_CYGPATH"; then
277             echo -n cygpath "$@" "==> "
278         fi
280         # Cygwin's real cygpath has a plethora of options but we use only a few here.
281         local args="$@"
282         local opt
283         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
284         OPTIND=1
286         while getopts dmuwlsp opt; do
287             case "$opt" in
288                 \?)
289                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
290                     ;;
291                 ?)
292                     eval opt_$opt=yes
293                     ;;
294             esac
295         done
297         shift $((OPTIND-1))
299         if test $# -ne 1; then
300             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
301         fi
303         local input="$1"
305         local result
307         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
308             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
310             if test -n "$opt_u"; then
311                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
312             fi
314             case "$input" in
315                 /mnt/*)
316                     # A Windows file in WSL format
317                     input=$(wslpath -w "$input")
318                     ;;
319                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
320                     # Already in Windows format
321                     ;;
322                 /*)
323                     input=$(wslpath -w "$input")
324                     ;;
325                 *)
326                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
327                     ;;
328             esac
329             if test -n "$opt_d" -o -n "$opt_s"; then
330                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
331             fi
332             if test -n "$opt_m"; then
333                 input="${input//\\//}"
334             fi
335             echo "$input"
336         else
337             # Print Unix path
339             case "$input" in
340                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
341                     wslpath -u "$input"
342                     ;;
343                 /)
344                     echo "$input"
345                     ;;
346                 *)
347                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
348                     ;;
349             esac
350         fi
351     }
353     if test -n "$UNITTEST_WSL_CYGPATH"; then
354         BUILDDIR=.
356         # Nothing special with these file names, just arbitrary ones picked to test with
357         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
359         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
360         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
361         # At least on my machine for instance this file does have an 8.3 name
362         cygpath -d /mnt/c/windows/WindowsUpdate.log
363         # But for instance this one doesn't
364         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ws /mnt/c/windows/WindowsUpdate.log
366         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
367         cygpath -ms /mnt/c/windows/WindowsUpdate.log
369         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
370         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
372         exit 0
373     fi
376 AC_CANONICAL_HOST
377 AC_CANONICAL_BUILD
379 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
380     BUILDDIR=.
381     GREP=grep
383     # Use of PathFormat must be after AC_CANONICAL_BUILD above
384     PathFormat /
385     printf "$formatted_path , $formatted_path_unix\n"
387     PathFormat $PWD
388     printf "$formatted_path , $formatted_path_unix\n"
390     PathFormat "$PROGRAMFILESX86"
391     printf "$formatted_path , $formatted_path_unix\n"
393     exit 0
396 AC_MSG_CHECKING([for product name])
397 PRODUCTNAME="AC_PACKAGE_NAME"
398 if test -n "$with_product_name" -a "$with_product_name" != no; then
399     PRODUCTNAME="$with_product_name"
401 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
402     PRODUCTNAME="${PRODUCTNAME}Dev"
404 AC_MSG_RESULT([$PRODUCTNAME])
405 AC_SUBST(PRODUCTNAME)
406 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
407 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
409 dnl ===================================================================
410 dnl Our version is defined by the AC_INIT() at the top of this script.
411 dnl ===================================================================
413 AC_MSG_CHECKING([for package version])
414 if test -n "$with_package_version" -a "$with_package_version" != no; then
415     PACKAGE_VERSION="$with_package_version"
417 AC_MSG_RESULT([$PACKAGE_VERSION])
419 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
421 LIBO_VERSION_MAJOR=$1
422 LIBO_VERSION_MINOR=$2
423 LIBO_VERSION_MICRO=$3
424 LIBO_VERSION_PATCH=$4
426 LIBO_VERSION_SUFFIX=$5
428 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
429 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
430 # they get undoubled before actually passed to sed.
431 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
432 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
433 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
434 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
436 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
437 # three non-negative integers. Please find more information about CFBundleVersion at
438 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
440 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
441 # of at most three non-negative integers. Please find more information about
442 # CFBundleShortVersionString at
443 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
445 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
447 if test "$enable_macosx_sandbox" = yes; then
448     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
449     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
450 else
451     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
452     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
455 AC_SUBST(LIBO_VERSION_MAJOR)
456 AC_SUBST(LIBO_VERSION_MINOR)
457 AC_SUBST(LIBO_VERSION_MICRO)
458 AC_SUBST(LIBO_VERSION_PATCH)
459 AC_SUBST(LIBO_VERSION_SUFFIX)
460 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
461 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
462 AC_SUBST(MACOSX_BUNDLE_VERSION)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
466 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
467 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
469 LIBO_THIS_YEAR=`date +%Y`
470 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
472 dnl ===================================================================
473 dnl Product version
474 dnl ===================================================================
475 AC_MSG_CHECKING([for product version])
476 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
477 AC_MSG_RESULT([$PRODUCTVERSION])
478 AC_SUBST(PRODUCTVERSION)
480 AC_PROG_EGREP
481 # AC_PROG_EGREP doesn't set GREP on all systems as well
482 AC_PATH_PROG(GREP, grep)
484 BUILDDIR=`pwd`
485 cd $srcdir
486 SRC_ROOT=`pwd`
487 cd $BUILDDIR
488 x_Cygwin=[\#]
490 dnl ======================================
491 dnl Required GObject introspection version
492 dnl ======================================
493 INTROSPECTION_REQUIRED_VERSION=1.32.0
495 dnl ===================================================================
496 dnl Search all the common names for GNU Make
497 dnl ===================================================================
498 AC_MSG_CHECKING([for GNU Make])
500 # try to use our own make if it is available and GNUMAKE was not already defined
501 if test -z "$GNUMAKE"; then
502     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
503         GNUMAKE="$LODE_HOME/opt/bin/make"
504     elif test -x "/opt/lo/bin/make"; then
505         GNUMAKE="/opt/lo/bin/make"
506     fi
509 GNUMAKE_WIN_NATIVE=
510 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
511     if test -n "$a"; then
512         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
513         if test $? -eq 0;  then
514             if test "$build_os" = "cygwin"; then
515                 if test -n "$($a -v | grep 'Built for Windows')" ; then
516                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
517                     GNUMAKE_WIN_NATIVE="TRUE"
518                 else
519                     GNUMAKE=`which $a`
520                 fi
521             else
522                 GNUMAKE=`which $a`
523             fi
524             break
525         fi
526     fi
527 done
528 AC_MSG_RESULT($GNUMAKE)
529 if test -z "$GNUMAKE"; then
530     AC_MSG_ERROR([not found. install GNU Make.])
531 else
532     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
533         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
534     fi
537 win_short_path_for_make()
539     local short_path="$1"
540     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541         cygpath -sm "$short_path"
542     else
543         cygpath -u "$(cygpath -d "$short_path")"
544     fi
548 if test "$build_os" = "cygwin"; then
549     PathFormat "$SRC_ROOT"
550     SRC_ROOT="$formatted_path"
551     PathFormat "$BUILDDIR"
552     BUILDDIR="$formatted_path"
553     x_Cygwin=
554     AC_MSG_CHECKING(for explicit COMSPEC)
555     if test -z "$COMSPEC"; then
556         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
557     else
558         AC_MSG_RESULT([found: $COMSPEC])
559     fi
562 AC_SUBST(SRC_ROOT)
563 AC_SUBST(BUILDDIR)
564 AC_SUBST(x_Cygwin)
565 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
566 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
567 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
569 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
570     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
573 # need sed in os checks...
574 AC_PATH_PROGS(SED, sed)
575 if test -z "$SED"; then
576     AC_MSG_ERROR([install sed to run this script])
579 # Set the ENABLE_LTO variable
580 # ===================================================================
581 AC_MSG_CHECKING([whether to use link-time optimization])
582 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
583     ENABLE_LTO="TRUE"
584     AC_MSG_RESULT([yes])
585 else
586     ENABLE_LTO=""
587     AC_MSG_RESULT([no])
589 AC_SUBST(ENABLE_LTO)
591 AC_ARG_ENABLE(fuzz-options,
592     AS_HELP_STRING([--enable-fuzz-options],
593         [Randomly enable or disable each of those configurable options
594          that are supposed to be freely selectable without interdependencies,
595          or where bad interaction from interdependencies is automatically avoided.])
598 dnl ===================================================================
599 dnl When building for Android, --with-android-ndk,
600 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
601 dnl mandatory
602 dnl ===================================================================
604 AC_ARG_WITH(android-ndk,
605     AS_HELP_STRING([--with-android-ndk],
606         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
609 AC_ARG_WITH(android-ndk-toolchain-version,
610     AS_HELP_STRING([--with-android-ndk-toolchain-version],
611         [Specify which toolchain version to use, of those present in the
612         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
613         with_android_ndk_toolchain_version=clang5.0)
615 AC_ARG_WITH(android-sdk,
616     AS_HELP_STRING([--with-android-sdk],
617         [Specify location of the Android SDK. Mandatory when building for Android.]),
620 AC_ARG_WITH(android-api-level,
621     AS_HELP_STRING([--with-android-api-level],
622         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
625 ANDROID_NDK_HOME=
626 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
627     with_android_ndk="$SRC_ROOT/external/android-ndk"
629 if test -n "$with_android_ndk"; then
630     eval ANDROID_NDK_HOME=$with_android_ndk
632     # Set up a lot of pre-canned defaults
634     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
635         if test ! -f $ANDROID_NDK_HOME/source.properties; then
636             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
637         fi
638         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
639     else
640         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
641     fi
642     if test -z "$ANDROID_NDK_VERSION";  then
643         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
644     fi
645     case $ANDROID_NDK_VERSION in
646     r9*|r10*)
647         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
648         ;;
649     11.1.*|12.1.*|13.1.*|14.1.*)
650         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
651         ;;
652     16.*|17.*|18.*|19.*|20.*)
653         ;;
654     *)
655         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
656         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
657         ;;
658     esac
660     ANDROID_API_LEVEL=16
661     if test -n "$with_android_api_level" ; then
662         ANDROID_API_LEVEL="$with_android_api_level"
663     fi
665     android_cpu=$host_cpu
666     if test $host_cpu = arm; then
667         android_platform_prefix=arm-linux-androideabi
668         android_gnu_prefix=$android_platform_prefix
669         LLVM_TRIPLE=armv7a-linux-androideabi
670         ANDROID_APP_ABI=armeabi-v7a
671         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
672     elif test $host_cpu = aarch64; then
673         android_platform_prefix=aarch64-linux-android
674         android_gnu_prefix=$android_platform_prefix
675         LLVM_TRIPLE=$android_platform_prefix
676         # minimum android version that supports aarch64
677         if test "$ANDROID_API_LEVEL" -lt "21" ; then
678             ANDROID_API_LEVEL=21
679         fi
680         ANDROID_APP_ABI=arm64-v8a
681     elif test $host_cpu = x86_64; then
682         android_platform_prefix=x86_64-linux-android
683         android_gnu_prefix=$android_platform_prefix
684         LLVM_TRIPLE=$android_platform_prefix
685         # minimum android version that supports x86_64
686         ANDROID_API_LEVEL=21
687         ANDROID_APP_ABI=x86_64
688     else
689         # host_cpu is something like "i386" or "i686" I guess, NDK uses
690         # "x86" in some contexts
691         android_cpu=x86
692         android_platform_prefix=$android_cpu
693         android_gnu_prefix=i686-linux-android
694         LLVM_TRIPLE=$android_gnu_prefix
695         ANDROID_APP_ABI=x86
696     fi
698     case "$with_android_ndk_toolchain_version" in
699     clang5.0)
700         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
701         ;;
702     *)
703         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
704     esac
706     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
708     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
709     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
710     # manage to link the (app-specific) single huge .so that is built for the app in
711     # android/source/ if there is debug information in a significant part of the object files.
712     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
713     # all objects have been built with debug information.)
714     case $build_os in
715     linux-gnu*)
716         android_HOST_TAG=linux-x86_64
717         ;;
718     darwin*)
719         android_HOST_TAG=darwin-x86_64
720         ;;
721     *)
722         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
723         # ndk would also support windows and windows-x86_64
724         ;;
725     esac
726     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
727     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
728     dnl TODO: NSS build uses it...
729     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
730     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
732     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
733     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
734     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
735     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
736     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
738     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
739     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
740     if test "$ENABLE_LTO" = TRUE; then
741         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
742         # $CC and $CXX when building external libraries
743         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
744     fi
746     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
748     if test -z "$CC"; then
749         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
750         CC_BASE="clang"
751     fi
752     if test -z "$CXX"; then
753         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
754         CXX_BASE="clang++"
755     fi
757 AC_SUBST(ANDROID_NDK_HOME)
758 AC_SUBST(ANDROID_APP_ABI)
759 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
761 dnl ===================================================================
762 dnl --with-android-sdk
763 dnl ===================================================================
764 ANDROID_SDK_HOME=
765 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
766     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
768 if test -n "$with_android_sdk"; then
769     eval ANDROID_SDK_HOME=$with_android_sdk
770     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
772 AC_SUBST(ANDROID_SDK_HOME)
774 AC_ARG_ENABLE([android-lok],
775     AS_HELP_STRING([--enable-android-lok],
776         [The Android app from the android/ subdir needs several tweaks all
777          over the place that break the LOK when used in the Online-based
778          Android app.  This switch indicates that the intent of this build is
779          actually the Online-based, non-modified LOK.])
781 ENABLE_ANDROID_LOK=
782 if test -n "$ANDROID_NDK_HOME" ; then
783     if test "$enable_android_lok" = yes; then
784         ENABLE_ANDROID_LOK=TRUE
785         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
786         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
787     else
788         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
789     fi
791 AC_SUBST([ENABLE_ANDROID_LOK])
793 libo_FUZZ_ARG_ENABLE([android-editing],
794     AS_HELP_STRING([--enable-android-editing],
795         [Enable the experimental editing feature on Android.])
797 ENABLE_ANDROID_EDITING=
798 if test "$enable_android_editing" = yes; then
799     ENABLE_ANDROID_EDITING=TRUE
801 AC_SUBST([ENABLE_ANDROID_EDITING])
803 disable_database_connectivity_dependencies()
805     enable_evolution2=no
806     enable_firebird_sdbc=no
807     enable_mariadb_sdbc=no
808     enable_postgresql_sdbc=no
809     enable_report_builder=no
812 # ===================================================================
814 # Start initial platform setup
816 # The using_* variables reflect platform support and should not be
817 # changed after the "End initial platform setup" block.
818 # This is also true for most test_* variables.
819 # ===================================================================
820 build_crypto=yes
821 test_clucene=no
822 test_gdb_index=no
823 test_openldap=yes
824 test_split_debug=no
825 test_webdav=yes
827 # There is currently just iOS not using salplug, so this explicitly enables it.
828 # must: using_freetype_fontconfig
829 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
830 using_vclplug=yes
831 # must: using_x11
833 # Default values, as such probably valid just for Linux, set
834 # differently below just for Mac OSX, but at least better than
835 # hardcoding these as we used to do. Much of this is duplicated also
836 # in solenv for old build system and for gbuild, ideally we should
837 # perhaps define stuff like this only here in configure.ac?
839 LINKFLAGSSHL="-shared"
840 PICSWITCH="-fpic"
841 DLLPOST=".so"
843 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
845 INSTROOTBASESUFFIX=
846 INSTROOTCONTENTSUFFIX=
847 SDKDIRNAME=sdk
849 HOST_PLATFORM="$host"
851 host_cpu_for_clang="$host_cpu"
853 case "$host_os" in
855 solaris*)
856     using_freetype_fontconfig=yes
857     using_x11=yes
858     build_skia=yes
859     _os=SunOS
861     dnl ===========================================================
862     dnl Check whether we're using Solaris 10 - SPARC or Intel.
863     dnl ===========================================================
864     AC_MSG_CHECKING([the Solaris operating system release])
865     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
866     if test "$_os_release" -lt "10"; then
867         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
868     else
869         AC_MSG_RESULT([ok ($_os_release)])
870     fi
872     dnl Check whether we're using a SPARC or i386 processor
873     AC_MSG_CHECKING([the processor type])
874     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
875         AC_MSG_RESULT([ok ($host_cpu)])
876     else
877         AC_MSG_ERROR([only SPARC and i386 processors are supported])
878     fi
879     ;;
881 linux-gnu*|k*bsd*-gnu*|linux-musl*)
882     using_freetype_fontconfig=yes
883     using_x11=yes
884     build_skia=yes
885     test_gdb_index=yes
886     test_split_debug=yes
887     if test "$enable_fuzzers" = yes; then
888         test_system_freetype=no
889     fi
890     _os=Linux
891     ;;
893 gnu)
894     using_freetype_fontconfig=yes
895     using_x11=no
896     _os=GNU
897      ;;
899 cygwin*|wsl*)
900     # When building on Windows normally with MSVC under Cygwin,
901     # configure thinks that the host platform (the platform the
902     # built code will run on) is Cygwin, even if it obviously is
903     # Windows, which in Autoconf terminology is called
904     # "mingw32". (Which is misleading as MinGW is the name of the
905     # tool-chain, not an operating system.)
907     # Somewhat confusing, yes. But this configure script doesn't
908     # look at $host etc that much, it mostly uses its own $_os
909     # variable, set here in this case statement.
911     using_freetype_fontconfig=no
912     using_x11=no
913     test_openldap=no
914     test_eot=no
915     enable_pagein=no
916     build_skia=yes
917     _os=WINNT
919     DLLPOST=".dll"
920     LINKFLAGSNOUNDEFS=
922     if test "$host_cpu" = "aarch64"; then
923         build_skia=no
924         enable_gpgmepp=no
925         enable_coinmp=no
926         enable_firebird_sdbc=no
927     fi
928     ;;
930 darwin*|macos*) # macOS
931     using_freetype_fontconfig=no
932     using_x11=no
933     build_skia=yes
934     enable_pagein=no
935     test_eot=no
936     if test -n "$LODE_HOME" ; then
937         mac_sanitize_path
938         AC_MSG_NOTICE([sanitized the PATH to $PATH])
939     fi
940     _os=Darwin
941     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
942     INSTROOTCONTENTSUFFIX=/Contents
943     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
944     # See comment above the case "$host_os"
945     LINKFLAGSSHL="-dynamiclib -single_module"
947     # -fPIC is default
948     PICSWITCH=""
950     DLLPOST=".dylib"
952     # -undefined error is the default
953     LINKFLAGSNOUNDEFS=""
954     case "$host_cpu" in
955     aarch64|arm64)
956         case "$host_os" in
957         macos*)
958             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
959             # the "macos" part so be sure to use aarch64-apple-darwin for now.
960             HOST_PLATFORM=aarch64-apple-darwin
961             ;;
962         esac
964         # Apple's Clang uses "arm64"
965         host_cpu_for_clang=arm64
966     esac
969 ios*) # iOS
970     using_freetype_fontconfig=no
971     using_vclplug=no
972     using_x11=no
973     build_crypto=no
974     test_libcmis=no
975     test_openldap=no
976     test_webdav=no
977     if test -n "$LODE_HOME" ; then
978         mac_sanitize_path
979         AC_MSG_NOTICE([sanitized the PATH to $PATH])
980     fi
981     enable_gpgmepp=no
982     _os=iOS
983     enable_mpl_subset=yes
984     enable_lotuswordpro=no
985     disable_database_connectivity_dependencies
986     enable_coinmp=no
987     enable_lpsolve=no
988     enable_extension_integration=no
989     enable_scripting=no
990     enable_xmlhelp=no
991     with_ppds=no
992     if test "$enable_ios_simulator" = "yes"; then
993         host=x86_64-apple-darwin
994     fi
995     # See comment above the case "$host_os"
996     LINKFLAGSSHL="-dynamiclib -single_module"
998     # -fPIC is default
999     PICSWITCH=""
1001     DLLPOST=".dylib"
1003     # -undefined error is the default
1004     LINKFLAGSNOUNDEFS=""
1006     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1007     # part, so use aarch64-apple-darwin for now.
1008     HOST_PLATFORM=aarch64-apple-darwin
1010     # Apple's Clang uses "arm64"
1011     host_cpu_for_clang=arm64
1014 freebsd*)
1015     using_freetype_fontconfig=yes
1016     using_x11=yes
1017     build_skia=yes
1018     AC_MSG_CHECKING([the FreeBSD operating system release])
1019     if test -n "$with_os_version"; then
1020         OSVERSION="$with_os_version"
1021     else
1022         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1023     fi
1024     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1025     AC_MSG_CHECKING([which thread library to use])
1026     if test "$OSVERSION" -lt "500016"; then
1027         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1028         PTHREAD_LIBS="-pthread"
1029     elif test "$OSVERSION" -lt "502102"; then
1030         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1031         PTHREAD_LIBS="-lc_r"
1032     else
1033         PTHREAD_CFLAGS=""
1034         PTHREAD_LIBS="-pthread"
1035     fi
1036     AC_MSG_RESULT([$PTHREAD_LIBS])
1037     _os=FreeBSD
1038     ;;
1040 *netbsd*)
1041     using_freetype_fontconfig=yes
1042     using_x11=yes
1043     test_gtk3_kde5=no
1044     build_skia=yes
1045     PTHREAD_LIBS="-pthread -lpthread"
1046     _os=NetBSD
1047     ;;
1049 aix*)
1050     using_freetype_fontconfig=yes
1051     using_x11=yes
1052     test_randr=no
1053     test_gstreamer_1_0=no
1054     PTHREAD_LIBS=-pthread
1055     _os=AIX
1056     ;;
1058 openbsd*)
1059     using_freetype_fontconfig=yes
1060     using_x11=yes
1061     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1062     PTHREAD_LIBS="-pthread"
1063     _os=OpenBSD
1064     ;;
1066 dragonfly*)
1067     using_freetype_fontconfig=yes
1068     using_x11=yes
1069     build_skia=yes
1070     PTHREAD_LIBS="-pthread"
1071     _os=DragonFly
1072     ;;
1074 linux-android*)
1075     using_freetype_fontconfig=yes
1076     using_headless_plugin=no
1077     using_x11=no
1078     build_crypto=no
1079     test_openldap=no
1080     test_system_freetype=no
1081     test_webdav=no
1082     disable_database_connectivity_dependencies
1083     enable_lotuswordpro=no
1084     enable_mpl_subset=yes
1085     enable_cairo_canvas=no
1086     enable_coinmp=yes
1087     enable_lpsolve=no
1088     enable_odk=no
1089     enable_python=no
1090     enable_xmlhelp=no
1091     _os=Android
1093     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1094     ;;
1096 haiku*)
1097     using_freetype_fontconfig=yes
1098     using_x11=no
1099     test_gtk3=no
1100     test_gtk3_kde5=no
1101     test_kf5=yes
1102     enable_odk=no
1103     enable_coinmp=no
1104     enable_pdfium=no
1105     enable_sdremote=no
1106     enable_postgresql_sdbc=no
1107     enable_firebird_sdbc=no
1108     _os=Haiku
1109     ;;
1111 emscripten)
1112     using_freetype_fontconfig=yes
1113     using_x11=no
1114     test_openldap=no
1115     enable_compiler_plugins=no
1116     test_libcmis=no
1117     test_webdav=no
1118     enable_database_connectivity=no
1119     enable_lpsolve=no
1120     enable_scripting=no
1121     enable_xmlhelp=no
1122     with_system_zlib=no
1123     with_theme="breeze"
1124     _os=Emscripten
1125     ;;
1128     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1129     ;;
1130 esac
1132 AC_SUBST(HOST_PLATFORM)
1134 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1135     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1138 # Set defaults, if not set by platform
1139 test "${test_cups+set}" = set || test_cups="$using_x11"
1140 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1141 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1142 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1143 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1144 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1145 # don't handle test_qt5, so it can disable test_kf5 later
1146 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1147 test "${test_randr+set}" = set || test_randr="$using_x11"
1148 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1149 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1151 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1152 # Make sure fontconfig and freetype test both either system or not
1153 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1154 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1156 # convenience / platform overriding "fixes"
1157 # Don't sort!
1158 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1159 test "$test_kf5" = yes && test_qt5=yes
1160 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1161 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1162 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1164 # Keep in sync with the above $using_x11 depending test default list
1165 disable_x11_tests()
1167     test_cups=no
1168     test_dbus=no
1169     test_gstreamer_1_0=no
1170     test_gtk3_kde5=no
1171     test_gtk3=no
1172     test_gtk4=no
1173     test_kf5=no
1174     test_qt5=no
1175     test_qt6=no
1176     test_randr=no
1177     test_xrender=no
1180 test "$using_x11" = yes && USING_X11=TRUE
1182 if test "$using_freetype_fontconfig" = yes; then
1183     USE_HEADLESS_CODE=TRUE
1184     if test "$using_headless_plugin" = yes; then
1185         AC_DEFINE(ENABLE_HEADLESS)
1186         ENABLE_HEADLESS=TRUE
1187     fi
1188 else
1189     test_fontconfig=no
1190     test_freetype=no
1193 AC_SUBST(ENABLE_HEADLESS)
1194 AC_SUBST(USE_HEADLESS_CODE)
1196 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1197 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1198 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1199 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1201 # ===================================================================
1203 # End initial platform setup
1205 # ===================================================================
1207 if test "$_os" = "Android" ; then
1208     # Verify that the NDK and SDK options are proper
1209     if test -z "$with_android_ndk"; then
1210         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1211     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1212         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1213     fi
1215     if test -z "$ANDROID_SDK_HOME"; then
1216         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1217     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1218         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1219     fi
1221     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1222     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1223         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1224                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1225                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1226         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1227         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1228         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1229     fi
1230     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1231         AC_MSG_WARN([android support repository not found - install with
1232                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1233                      to allow the build to download the specified version of the android support libraries])
1234         add_warning "android support repository not found - install with"
1235         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1236         add_warning "to allow the build to download the specified version of the android support libraries"
1237     fi
1240 if test "$_os" = "AIX"; then
1241     AC_PATH_PROG(GAWK, gawk)
1242     if test -z "$GAWK"; then
1243         AC_MSG_ERROR([gawk not found in \$PATH])
1244     fi
1247 AC_SUBST(SDKDIRNAME)
1249 AC_SUBST(PTHREAD_CFLAGS)
1250 AC_SUBST(PTHREAD_LIBS)
1252 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1253 # By default use the ones specified by our build system,
1254 # but explicit override is possible.
1255 AC_MSG_CHECKING(for explicit AFLAGS)
1256 if test -n "$AFLAGS"; then
1257     AC_MSG_RESULT([$AFLAGS])
1258     x_AFLAGS=
1259 else
1260     AC_MSG_RESULT(no)
1261     x_AFLAGS=[\#]
1263 AC_MSG_CHECKING(for explicit CFLAGS)
1264 if test -n "$CFLAGS"; then
1265     AC_MSG_RESULT([$CFLAGS])
1266     x_CFLAGS=
1267 else
1268     AC_MSG_RESULT(no)
1269     x_CFLAGS=[\#]
1271 AC_MSG_CHECKING(for explicit CXXFLAGS)
1272 if test -n "$CXXFLAGS"; then
1273     AC_MSG_RESULT([$CXXFLAGS])
1274     x_CXXFLAGS=
1275 else
1276     AC_MSG_RESULT(no)
1277     x_CXXFLAGS=[\#]
1279 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1280 if test -n "$OBJCFLAGS"; then
1281     AC_MSG_RESULT([$OBJCFLAGS])
1282     x_OBJCFLAGS=
1283 else
1284     AC_MSG_RESULT(no)
1285     x_OBJCFLAGS=[\#]
1287 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1288 if test -n "$OBJCXXFLAGS"; then
1289     AC_MSG_RESULT([$OBJCXXFLAGS])
1290     x_OBJCXXFLAGS=
1291 else
1292     AC_MSG_RESULT(no)
1293     x_OBJCXXFLAGS=[\#]
1295 AC_MSG_CHECKING(for explicit LDFLAGS)
1296 if test -n "$LDFLAGS"; then
1297     AC_MSG_RESULT([$LDFLAGS])
1298     x_LDFLAGS=
1299 else
1300     AC_MSG_RESULT(no)
1301     x_LDFLAGS=[\#]
1303 AC_SUBST(AFLAGS)
1304 AC_SUBST(CFLAGS)
1305 AC_SUBST(CXXFLAGS)
1306 AC_SUBST(OBJCFLAGS)
1307 AC_SUBST(OBJCXXFLAGS)
1308 AC_SUBST(LDFLAGS)
1309 AC_SUBST(x_AFLAGS)
1310 AC_SUBST(x_CFLAGS)
1311 AC_SUBST(x_CXXFLAGS)
1312 AC_SUBST(x_OBJCFLAGS)
1313 AC_SUBST(x_OBJCXXFLAGS)
1314 AC_SUBST(x_LDFLAGS)
1316 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1317 my_original_CFLAGS=$CFLAGS
1318 my_original_CXXFLAGS=$CXXFLAGS
1319 my_original_CPPFLAGS=$CPPFLAGS
1321 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1322 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1323 dnl AC_PROG_CC internally.
1324 if test "$_os" != "WINNT"; then
1325     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1326     save_CFLAGS=$CFLAGS
1327     AC_PROG_CC
1328     CFLAGS=$save_CFLAGS
1329     if test -z "$CC_BASE"; then
1330         CC_BASE=`first_arg_basename "$CC"`
1331     fi
1334 if test "$_os" != "WINNT"; then
1335     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1336 else
1337     ENDIANNESS=little
1339 AC_SUBST(ENDIANNESS)
1341 if test $_os != "WINNT"; then
1342     save_LIBS="$LIBS"
1343     AC_SEARCH_LIBS([dlsym], [dl],
1344         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1345         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1346     LIBS="$save_LIBS"
1348 AC_SUBST(DLOPEN_LIBS)
1350 # Check for a (GNU) backtrace implementation
1351 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1352 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1353 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1354     save_LIBS="$LIBS"
1355     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1356         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1357         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1358     LIBS="$save_LIBS"
1360 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1361     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1364 dnl ===================================================================
1365 dnl Sanity checks for Emscripten SDK setup
1366 dnl ===================================================================
1368 if test "$_os" = "Emscripten"; then
1369     EMSCRIPTEN_ERROR=0
1370     if ! which emconfigure >/dev/null 2>&1; then
1371         AC_MSG_WARN([emconfigure must be in your \$PATH])
1372         EMSCRIPTEN_ERROR=1
1373     fi
1374     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1375         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1376         EMSCRIPTEN_ERROR=1
1377     fi
1378     if test $EMSCRIPTEN_ERROR -ne 0; then
1379         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1380     fi
1383 ###############################################################################
1384 # Extensions switches --enable/--disable
1385 ###############################################################################
1386 # By default these should be enabled unless having extra dependencies.
1387 # If there is extra dependency over configure options then the enable should
1388 # be automagic based on whether the requiring feature is enabled or not.
1389 # All this options change anything only with --enable-extension-integration.
1391 # The name of this option and its help string makes it sound as if
1392 # extensions are built anyway, just not integrated in the installer,
1393 # if you use --disable-extension-integration. Is that really the
1394 # case?
1396 AC_ARG_ENABLE(ios-simulator,
1397     AS_HELP_STRING([--enable-ios-simulator],
1398         [build for iOS simulator])
1401 libo_FUZZ_ARG_ENABLE(extension-integration,
1402     AS_HELP_STRING([--disable-extension-integration],
1403         [Disable integration of the built extensions in the installer of the
1404          product. Use this switch to disable the integration.])
1407 AC_ARG_ENABLE(avmedia,
1408     AS_HELP_STRING([--disable-avmedia],
1409         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1410 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1412 AC_ARG_ENABLE(database-connectivity,
1413     AS_HELP_STRING([--disable-database-connectivity],
1414         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1417 # This doesn't mean not building (or "integrating") extensions
1418 # (although it probably should; i.e. it should imply
1419 # --disable-extension-integration I guess), it means not supporting
1420 # any extension mechanism at all
1421 libo_FUZZ_ARG_ENABLE(extensions,
1422     AS_HELP_STRING([--disable-extensions],
1423         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1426 AC_ARG_ENABLE(scripting,
1427     AS_HELP_STRING([--disable-scripting],
1428         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1429 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1431 # This is mainly for Android and iOS, but could potentially be used in some
1432 # special case otherwise, too, so factored out as a separate setting
1434 AC_ARG_ENABLE(dynamic-loading,
1435     AS_HELP_STRING([--disable-dynamic-loading],
1436         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1439 libo_FUZZ_ARG_ENABLE(report-builder,
1440     AS_HELP_STRING([--disable-report-builder],
1441         [Disable the Report Builder.])
1444 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1445     AS_HELP_STRING([--enable-ext-wiki-publisher],
1446         [Enable the Wiki Publisher extension.])
1449 libo_FUZZ_ARG_ENABLE(lpsolve,
1450     AS_HELP_STRING([--disable-lpsolve],
1451         [Disable compilation of the lp solve solver ])
1453 libo_FUZZ_ARG_ENABLE(coinmp,
1454     AS_HELP_STRING([--disable-coinmp],
1455         [Disable compilation of the CoinMP solver ])
1458 libo_FUZZ_ARG_ENABLE(pdfimport,
1459     AS_HELP_STRING([--disable-pdfimport],
1460         [Disable building the PDF import feature.])
1463 libo_FUZZ_ARG_ENABLE(pdfium,
1464     AS_HELP_STRING([--disable-pdfium],
1465         [Disable building PDFium. Results in unsecure PDF signature verification.])
1468 libo_FUZZ_ARG_ENABLE(skia,
1469     AS_HELP_STRING([--disable-skia],
1470         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1473 ###############################################################################
1475 dnl ---------- *** ----------
1477 libo_FUZZ_ARG_ENABLE(mergelibs,
1478     AS_HELP_STRING([--enable-mergelibs],
1479         [Merge several of the smaller libraries into one big, "merged", one.])
1482 libo_FUZZ_ARG_ENABLE(breakpad,
1483     AS_HELP_STRING([--enable-breakpad],
1484         [Enables breakpad for crash reporting.])
1487 libo_FUZZ_ARG_ENABLE(crashdump,
1488     AS_HELP_STRING([--disable-crashdump],
1489         [Disable dump.ini and dump-file, when --enable-breakpad])
1492 AC_ARG_ENABLE(fetch-external,
1493     AS_HELP_STRING([--disable-fetch-external],
1494         [Disables fetching external tarballs from web sources.])
1497 AC_ARG_ENABLE(fuzzers,
1498     AS_HELP_STRING([--enable-fuzzers],
1499         [Enables building libfuzzer targets for fuzz testing.])
1502 libo_FUZZ_ARG_ENABLE(pch,
1503     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1504         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1505          Using 'system' will include only external headers, 'base' will add also headers
1506          from base modules, 'normal' will also add all headers except from the module built,
1507          'full' will use all suitable headers even from a module itself.])
1510 libo_FUZZ_ARG_ENABLE(epm,
1511     AS_HELP_STRING([--enable-epm],
1512         [LibreOffice includes self-packaging code, that requires epm, however epm is
1513          useless for large scale package building.])
1516 libo_FUZZ_ARG_ENABLE(odk,
1517     AS_HELP_STRING([--enable-odk],
1518         [Enable building the Office Development Kit, the part that extensions need to build against])
1521 AC_ARG_ENABLE(mpl-subset,
1522     AS_HELP_STRING([--enable-mpl-subset],
1523         [Don't compile any pieces which are not MPL or more liberally licensed])
1526 libo_FUZZ_ARG_ENABLE(evolution2,
1527     AS_HELP_STRING([--enable-evolution2],
1528         [Allows the built-in evolution 2 addressbook connectivity build to be
1529          enabled.])
1532 AC_ARG_ENABLE(avahi,
1533     AS_HELP_STRING([--enable-avahi],
1534         [Determines whether to use Avahi to advertise Impress to remote controls.])
1537 libo_FUZZ_ARG_ENABLE(werror,
1538     AS_HELP_STRING([--enable-werror],
1539         [Turn warnings to errors. (Has no effect in modules where the treating
1540          of warnings as errors is disabled explicitly.)]),
1543 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1544     AS_HELP_STRING([--enable-assert-always-abort],
1545         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1548 libo_FUZZ_ARG_ENABLE(dbgutil,
1549     AS_HELP_STRING([--enable-dbgutil],
1550         [Provide debugging support from --enable-debug and include additional debugging
1551          utilities such as object counting or more expensive checks.
1552          This is the recommended option for developers.
1553          Note that this makes the build ABI incompatible, it is not possible to mix object
1554          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1556 libo_FUZZ_ARG_ENABLE(debug,
1557     AS_HELP_STRING([--enable-debug],
1558         [Include debugging information, disable compiler optimization and inlining plus
1559          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1561 libo_FUZZ_ARG_ENABLE(split-debug,
1562     AS_HELP_STRING([--disable-split-debug],
1563         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1564          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1566 libo_FUZZ_ARG_ENABLE(gdb-index,
1567     AS_HELP_STRING([--disable-gdb-index],
1568         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1569          The feature requires the gold or lld linker.]))
1571 libo_FUZZ_ARG_ENABLE(sal-log,
1572     AS_HELP_STRING([--enable-sal-log],
1573         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1575 libo_FUZZ_ARG_ENABLE(symbols,
1576     AS_HELP_STRING([--enable-symbols],
1577         [Generate debug information.
1578          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1579          otherwise. It is possible to explicitly specify gbuild build targets
1580          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1581          everything in the directory; there is no ordering, more specific overrides
1582          more general, and disabling takes precedence).
1583          Example: --enable-symbols="all -sw/ -Library_sc".]))
1585 libo_FUZZ_ARG_ENABLE(optimized,
1586     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1587         [Whether to compile with optimization flags.
1588          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1589          otherwise. Using 'debug' will try to use only optimizations that should
1590          not interfere with debugging. For Emscripten we default to optimized (-O1)
1591          debug build, as otherwise binaries become too large.]))
1593 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1594     AS_HELP_STRING([--disable-runtime-optimizations],
1595         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1596          JVM JIT) that are known to interact badly with certain dynamic analysis
1597          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1598          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1599          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1601 AC_ARG_WITH(valgrind,
1602     AS_HELP_STRING([--with-valgrind],
1603         [Make availability of Valgrind headers a hard requirement.]))
1605 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1606     AS_HELP_STRING([--enable-compiler-plugins],
1607         [Enable compiler plugins that will perform additional checks during
1608          building. Enabled automatically by --enable-dbgutil.
1609          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1610 COMPILER_PLUGINS_DEBUG=
1611 if test "$enable_compiler_plugins" = debug; then
1612     enable_compiler_plugins=yes
1613     COMPILER_PLUGINS_DEBUG=TRUE
1616 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1617     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1618         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1619          relevant in the --disable-compiler-plugins case.]))
1621 libo_FUZZ_ARG_ENABLE(ooenv,
1622     AS_HELP_STRING([--enable-ooenv],
1623         [Enable ooenv for the instdir installation.]))
1625 AC_ARG_ENABLE(lto,
1626     AS_HELP_STRING([--enable-lto],
1627         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1628          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1629          linker.)]))
1631 AC_ARG_ENABLE(python,
1632     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1633         [Enables or disables Python support at run-time.
1634          Also specifies what Python to use at build-time.
1635          'fully-internal' even forces the internal version for uses of Python
1636          during the build.
1637          On macOS the only choices are
1638          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1639          ]))
1641 libo_FUZZ_ARG_ENABLE(gtk3,
1642     AS_HELP_STRING([--disable-gtk3],
1643         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1644 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1646 AC_ARG_ENABLE(gtk4,
1647     AS_HELP_STRING([--enable-gtk4],
1648         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1650 AC_ARG_ENABLE(introspection,
1651     AS_HELP_STRING([--enable-introspection],
1652         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1653          Linux distributions.)]))
1655 AC_ARG_ENABLE(split-app-modules,
1656     AS_HELP_STRING([--enable-split-app-modules],
1657         [Split file lists for app modules, e.g. base, calc.
1658          Has effect only with make distro-pack-install]),
1661 AC_ARG_ENABLE(split-opt-features,
1662     AS_HELP_STRING([--enable-split-opt-features],
1663         [Split file lists for some optional features, e.g. pyuno, testtool.
1664          Has effect only with make distro-pack-install]),
1667 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1668     AS_HELP_STRING([--disable-cairo-canvas],
1669         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1672 libo_FUZZ_ARG_ENABLE(dbus,
1673     AS_HELP_STRING([--disable-dbus],
1674         [Determines whether to enable features that depend on dbus.
1675          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1676 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1678 libo_FUZZ_ARG_ENABLE(sdremote,
1679     AS_HELP_STRING([--disable-sdremote],
1680         [Determines whether to enable Impress remote control (i.e. the server component).]),
1681 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1683 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1684     AS_HELP_STRING([--disable-sdremote-bluetooth],
1685         [Determines whether to build sdremote with bluetooth support.
1686          Requires dbus on Linux.]))
1688 libo_FUZZ_ARG_ENABLE(gio,
1689     AS_HELP_STRING([--disable-gio],
1690         [Determines whether to use the GIO support.]),
1691 ,test "${enable_gio+set}" = set || enable_gio=yes)
1693 AC_ARG_ENABLE(qt5,
1694     AS_HELP_STRING([--enable-qt5],
1695         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1696          available.]),
1699 AC_ARG_ENABLE(qt6,
1700     AS_HELP_STRING([--enable-qt6],
1701         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1702          available.]),
1705 AC_ARG_ENABLE(kf5,
1706     AS_HELP_STRING([--enable-kf5],
1707         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1708          KF5 are available.]),
1711 AC_ARG_ENABLE(gtk3_kde5,
1712     AS_HELP_STRING([--enable-gtk3-kde5],
1713         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1714          platforms where Gtk3, Qt5 and Plasma is available.]),
1717 AC_ARG_ENABLE(gui,
1718     AS_HELP_STRING([--disable-gui],
1719         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1720 ,enable_gui=yes)
1722 libo_FUZZ_ARG_ENABLE(randr,
1723     AS_HELP_STRING([--disable-randr],
1724         [Disable RandR support in the vcl project.]),
1725 ,test "${enable_randr+set}" = set || enable_randr=yes)
1727 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1728     AS_HELP_STRING([--disable-gstreamer-1-0],
1729         [Disable building with the gstreamer 1.0 avmedia backend.]),
1730 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1732 libo_FUZZ_ARG_ENABLE(cve-tests,
1733     AS_HELP_STRING([--disable-cve-tests],
1734         [Prevent CVE tests to be executed]),
1737 libo_FUZZ_ARG_ENABLE(chart-tests,
1738     AS_HELP_STRING([--enable-chart-tests],
1739         [Executes chart XShape tests. In a perfect world these tests would be
1740          stable and everyone could run them, in reality it is best to run them
1741          only on a few machines that are known to work and maintained by people
1742          who can judge if a test failure is a regression or not.]),
1745 AC_ARG_ENABLE(build-opensymbol,
1746     AS_HELP_STRING([--enable-build-opensymbol],
1747         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1748          fontforge installed.]),
1751 AC_ARG_ENABLE(dependency-tracking,
1752     AS_HELP_STRING([--enable-dependency-tracking],
1753         [Do not reject slow dependency extractors.])[
1754   --disable-dependency-tracking
1755                           Disables generation of dependency information.
1756                           Speed up one-time builds.],
1759 AC_ARG_ENABLE(icecream,
1760     AS_HELP_STRING([--enable-icecream],
1761         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1762          It defaults to /opt/icecream for the location of the icecream gcc/g++
1763          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1766 AC_ARG_ENABLE(ld,
1767     AS_HELP_STRING([--enable-ld=<linker>],
1768         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1769          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1770          If <linker> contains any ':', the part before the first ':' is used as the value of
1771          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1772          needed for Clang 12).]),
1775 libo_FUZZ_ARG_ENABLE(cups,
1776     AS_HELP_STRING([--disable-cups],
1777         [Do not build cups support.])
1780 AC_ARG_ENABLE(ccache,
1781     AS_HELP_STRING([--disable-ccache],
1782         [Do not try to use ccache automatically.
1783          By default we will try to detect if ccache is available; in that case if
1784          CC/CXX are not yet set, and --enable-icecream is not given, we
1785          attempt to use ccache. --disable-ccache disables ccache completely.
1786          Additionally ccache's depend mode is enabled if possible,
1787          use --enable-ccache=nodepend to enable ccache without depend mode.
1791 AC_ARG_ENABLE(z7-debug,
1792     AS_HELP_STRING([--enable-z7-debug],
1793         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1794          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1795          Enabled by default if ccache is detected.]))
1797 libo_FUZZ_ARG_ENABLE(online-update,
1798     AS_HELP_STRING([--enable-online-update],
1799         [Enable the online update service that will check for new versions of
1800          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1801          If the value is "mar", the experimental Mozilla-like update will be
1802          enabled instead of the traditional update mechanism.]),
1805 AC_ARG_WITH(update-config,
1806     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1807                    [Path to the update config ini file]))
1809 libo_FUZZ_ARG_ENABLE(extension-update,
1810     AS_HELP_STRING([--disable-extension-update],
1811         [Disable possibility to update installed extensions.]),
1814 libo_FUZZ_ARG_ENABLE(release-build,
1815     AS_HELP_STRING([--enable-release-build],
1816         [Enable release build. Note that the "release build" choice is orthogonal to
1817          whether symbols are present, debug info is generated, or optimization
1818          is done.
1819          See http://wiki.documentfoundation.org/Development/DevBuild]),
1822 AC_ARG_ENABLE(windows-build-signing,
1823     AS_HELP_STRING([--enable-windows-build-signing],
1824         [Enable signing of windows binaries (*.exe, *.dll)]),
1827 AC_ARG_ENABLE(silent-msi,
1828     AS_HELP_STRING([--enable-silent-msi],
1829         [Enable MSI with LIMITUI=1 (silent install).]),
1832 AC_ARG_ENABLE(macosx-code-signing,
1833     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1834         [Sign executables, dylibs, frameworks and the app bundle. If you
1835          don't provide an identity the first suitable certificate
1836          in your keychain is used.]),
1839 AC_ARG_ENABLE(macosx-package-signing,
1840     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1841         [Create a .pkg suitable for uploading to the Mac App Store and sign
1842          it. If you don't provide an identity the first suitable certificate
1843          in your keychain is used.]),
1846 AC_ARG_ENABLE(macosx-sandbox,
1847     AS_HELP_STRING([--enable-macosx-sandbox],
1848         [Make the app bundle run in a sandbox. Requires code signing.
1849          Is required by apps distributed in the Mac App Store, and implies
1850          adherence to App Store rules.]),
1853 AC_ARG_WITH(macosx-bundle-identifier,
1854     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1855         [Define the macOS bundle identifier. Default is the somewhat weird
1856          org.libreoffice.script ("script", huh?).]),
1857 ,with_macosx_bundle_identifier=org.libreoffice.script)
1859 AC_ARG_WITH(product-name,
1860     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1861         [Define the product name. Default is AC_PACKAGE_NAME.]),
1862 ,with_product_name=$PRODUCTNAME)
1864 libo_FUZZ_ARG_ENABLE(community-flavor,
1865     AS_HELP_STRING([--disable-community-flavor],
1866         [Disable the Community branding.]),
1869 AC_ARG_WITH(package-version,
1870     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1871         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1874 libo_FUZZ_ARG_ENABLE(readonly-installset,
1875     AS_HELP_STRING([--enable-readonly-installset],
1876         [Prevents any attempts by LibreOffice to write into its installation. That means
1877          at least that no "system-wide" extensions can be added. Partly experimental work in
1878          progress, probably not fully implemented. Always enabled for macOS.]),
1881 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1882     AS_HELP_STRING([--disable-mariadb-sdbc],
1883         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1886 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1887     AS_HELP_STRING([--disable-postgresql-sdbc],
1888         [Disable the build of the PostgreSQL-SDBC driver.])
1891 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1892     AS_HELP_STRING([--disable-lotuswordpro],
1893         [Disable the build of the Lotus Word Pro filter.]),
1894 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1896 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1897     AS_HELP_STRING([--disable-firebird-sdbc],
1898         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1899 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1901 AC_ARG_ENABLE(bogus-pkg-config,
1902     AS_HELP_STRING([--enable-bogus-pkg-config],
1903         [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.]),
1906 AC_ARG_ENABLE(openssl,
1907     AS_HELP_STRING([--disable-openssl],
1908         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1909          components will use NSS. Work in progress,
1910          use only if you are hacking on it.]),
1911 ,enable_openssl=yes)
1913 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1914     AS_HELP_STRING([--enable-cipher-openssl-backend],
1915         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1916          Requires --enable-openssl.]))
1918 AC_ARG_ENABLE(nss,
1919     AS_HELP_STRING([--disable-nss],
1920         [Disable using NSS. If disabled,
1921          components will use openssl. Work in progress,
1922          use only if you are hacking on it.]),
1923 ,enable_nss=yes)
1925 AC_ARG_ENABLE(library-bin-tar,
1926     AS_HELP_STRING([--enable-library-bin-tar],
1927         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1928         Some libraries can save their build result in a tarball
1929         stored in TARFILE_LOCATION. That binary tarball is
1930         uniquely identified by the source tarball,
1931         the content of the config_host.mk file and the content
1932         of the top-level directory in core for that library
1933         If this option is enabled, then if such a tarfile exist, it will be untarred
1934         instead of the source tarfile, and the build step will be skipped for that
1935         library.
1936         If a proper tarfile does not exist, then the normal source-based
1937         build is done for that library and a proper binary tarfile is created
1938         for the next time.]),
1941 AC_ARG_ENABLE(dconf,
1942     AS_HELP_STRING([--disable-dconf],
1943         [Disable the dconf configuration backend (enabled by default where
1944          available).]))
1946 libo_FUZZ_ARG_ENABLE(formula-logger,
1947     AS_HELP_STRING(
1948         [--enable-formula-logger],
1949         [Enable formula logger for logging formula calculation flow in Calc.]
1950     )
1953 AC_ARG_ENABLE(ldap,
1954     AS_HELP_STRING([--disable-ldap],
1955         [Disable LDAP support.]),
1956 ,enable_ldap=yes)
1958 AC_ARG_ENABLE(opencl,
1959     AS_HELP_STRING([--disable-opencl],
1960         [Disable OpenCL support.]),
1961 ,enable_opencl=yes)
1963 libo_FUZZ_ARG_ENABLE(librelogo,
1964     AS_HELP_STRING([--disable-librelogo],
1965         [Do not build LibreLogo.]),
1966 ,enable_librelogo=yes)
1968 AC_ARG_ENABLE(wasm-strip,
1969     AS_HELP_STRING([--enable-wasm-strip],
1970         [Strip the static build like for WASM/emscripten platform.]),
1971 ,enable_wasm_strip=yes)
1973 AC_ARG_ENABLE(xmlhelp,
1974     AS_HELP_STRING([--disable-xmlhelp],
1975         [Disable XML help support]),
1976 ,enable_xmlhelp=yes)
1978 AC_ARG_ENABLE(customtarget-components,
1979     AS_HELP_STRING([--enable-customtarget-components],
1980         [This is WIP and probably just works together with --enable-wasm-strip.]))
1982 dnl ===================================================================
1983 dnl Optional Packages (--with/without-)
1984 dnl ===================================================================
1986 AC_ARG_WITH(gcc-home,
1987     AS_HELP_STRING([--with-gcc-home],
1988         [Specify the location of gcc/g++ manually. This can be used in conjunction
1989          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1990          non-default path.]),
1993 AC_ARG_WITH(gnu-patch,
1994     AS_HELP_STRING([--with-gnu-patch],
1995         [Specify location of GNU patch on Solaris or FreeBSD.]),
1998 AC_ARG_WITH(build-platform-configure-options,
1999     AS_HELP_STRING([--with-build-platform-configure-options],
2000         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2003 AC_ARG_WITH(gnu-cp,
2004     AS_HELP_STRING([--with-gnu-cp],
2005         [Specify location of GNU cp on Solaris or FreeBSD.]),
2008 AC_ARG_WITH(external-tar,
2009     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2010         [Specify an absolute path of where to find (and store) tarfiles.]),
2011     TARFILE_LOCATION=$withval ,
2014 AC_ARG_WITH(referenced-git,
2015     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2016         [Specify another checkout directory to reference. This makes use of
2017                  git submodule update --reference, and saves a lot of diskspace
2018                  when having multiple trees side-by-side.]),
2019     GIT_REFERENCE_SRC=$withval ,
2022 AC_ARG_WITH(linked-git,
2023     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2024         [Specify a directory where the repositories of submodules are located.
2025          This uses a method similar to git-new-workdir to get submodules.]),
2026     GIT_LINK_SRC=$withval ,
2029 AC_ARG_WITH(galleries,
2030     AS_HELP_STRING([--with-galleries],
2031         [Specify how galleries should be built. It is possible either to
2032          build these internally from source ("build"),
2033          or to disable them ("no")]),
2036 AC_ARG_WITH(theme,
2037     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2038         [Choose which themes to include. By default those themes with an '*' are included.
2039          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2040          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2043 libo_FUZZ_ARG_WITH(helppack-integration,
2044     AS_HELP_STRING([--without-helppack-integration],
2045         [It will not integrate the helppacks to the installer
2046          of the product. Please use this switch to use the online help
2047          or separate help packages.]),
2050 libo_FUZZ_ARG_WITH(fonts,
2051     AS_HELP_STRING([--without-fonts],
2052         [LibreOffice includes some third-party fonts to provide a reliable basis for
2053          help content, templates, samples, etc. When these fonts are already
2054          known to be available on the system then you should use this option.]),
2057 AC_ARG_WITH(epm,
2058     AS_HELP_STRING([--with-epm],
2059         [Decides which epm to use. Default is to use the one from the system if
2060          one is built. When either this is not there or you say =internal epm
2061          will be built.]),
2064 AC_ARG_WITH(package-format,
2065     AS_HELP_STRING([--with-package-format],
2066         [Specify package format(s) for LibreOffice installation sets. The
2067          implicit --without-package-format leads to no installation sets being
2068          generated. Possible values: aix, archive, bsd, deb, dmg,
2069          installed, msi, pkg, and rpm.
2070          Example: --with-package-format='deb rpm']),
2073 AC_ARG_WITH(tls,
2074     AS_HELP_STRING([--with-tls],
2075         [Decides which TLS/SSL and cryptographic implementations to use for
2076          LibreOffice's code. Notice that this doesn't apply for depending
2077          libraries like "curl", for example. Default is to use NSS
2078          although OpenSSL is also possible. Notice that selecting NSS restricts
2079          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2080          restrict by now the usage of NSS in LO's code. Possible values:
2081          openssl, nss. Example: --with-tls="nss"]),
2084 AC_ARG_WITH(system-libs,
2085     AS_HELP_STRING([--with-system-libs],
2086         [Use libraries already on system -- enables all --with-system-* flags.]),
2089 AC_ARG_WITH(system-bzip2,
2090     AS_HELP_STRING([--with-system-bzip2],
2091         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2092     [with_system_bzip2="$with_system_libs"])
2094 AC_ARG_WITH(system-headers,
2095     AS_HELP_STRING([--with-system-headers],
2096         [Use headers already on system -- enables all --with-system-* flags for
2097          external packages whose headers are the only entities used i.e.
2098          boost/odbc/sane-header(s).]),,
2099     [with_system_headers="$with_system_libs"])
2101 AC_ARG_WITH(system-jars,
2102     AS_HELP_STRING([--without-system-jars],
2103         [When building with --with-system-libs, also the needed jars are expected
2104          on the system. Use this to disable that]),,
2105     [with_system_jars="$with_system_libs"])
2107 AC_ARG_WITH(system-cairo,
2108     AS_HELP_STRING([--with-system-cairo],
2109         [Use cairo libraries already on system.  Happens automatically for
2110          (implicit) --enable-gtk3.]))
2112 AC_ARG_WITH(system-epoxy,
2113     AS_HELP_STRING([--with-system-epoxy],
2114         [Use epoxy libraries already on system.  Happens automatically for
2115          (implicit) --enable-gtk3.]),,
2116        [with_system_epoxy="$with_system_libs"])
2118 AC_ARG_WITH(myspell-dicts,
2119     AS_HELP_STRING([--with-myspell-dicts],
2120         [Adds myspell dictionaries to the LibreOffice installation set]),
2123 AC_ARG_WITH(system-dicts,
2124     AS_HELP_STRING([--without-system-dicts],
2125         [Do not use dictionaries from system paths.]),
2128 AC_ARG_WITH(external-dict-dir,
2129     AS_HELP_STRING([--with-external-dict-dir],
2130         [Specify external dictionary dir.]),
2133 AC_ARG_WITH(external-hyph-dir,
2134     AS_HELP_STRING([--with-external-hyph-dir],
2135         [Specify external hyphenation pattern dir.]),
2138 AC_ARG_WITH(external-thes-dir,
2139     AS_HELP_STRING([--with-external-thes-dir],
2140         [Specify external thesaurus dir.]),
2143 AC_ARG_WITH(system-zlib,
2144     AS_HELP_STRING([--with-system-zlib],
2145         [Use zlib already on system.]),,
2146     [with_system_zlib=auto])
2148 AC_ARG_WITH(system-jpeg,
2149     AS_HELP_STRING([--with-system-jpeg],
2150         [Use jpeg already on system.]),,
2151     [with_system_jpeg="$with_system_libs"])
2153 AC_ARG_WITH(system-expat,
2154     AS_HELP_STRING([--with-system-expat],
2155         [Use expat already on system.]),,
2156     [with_system_expat="$with_system_libs"])
2158 AC_ARG_WITH(system-libxml,
2159     AS_HELP_STRING([--with-system-libxml],
2160         [Use libxml/libxslt already on system.]),,
2161     [with_system_libxml=auto])
2163 AC_ARG_WITH(system-icu,
2164     AS_HELP_STRING([--with-system-icu],
2165         [Use icu already on system.]),,
2166     [with_system_icu="$with_system_libs"])
2168 AC_ARG_WITH(system-ucpp,
2169     AS_HELP_STRING([--with-system-ucpp],
2170         [Use ucpp already on system.]),,
2171     [])
2173 AC_ARG_WITH(system-openldap,
2174     AS_HELP_STRING([--with-system-openldap],
2175         [Use the OpenLDAP LDAP SDK already on system.]),,
2176     [with_system_openldap="$with_system_libs"])
2178 libo_FUZZ_ARG_ENABLE(poppler,
2179     AS_HELP_STRING([--disable-poppler],
2180         [Disable building Poppler.])
2183 AC_ARG_WITH(system-poppler,
2184     AS_HELP_STRING([--with-system-poppler],
2185         [Use system poppler (only needed for PDF import).]),,
2186     [with_system_poppler="$with_system_libs"])
2188 AC_ARG_WITH(system-abseil,
2189     AS_HELP_STRING([--with-system-abseil],
2190         [Use the abseil libraries already on system.]),,
2191     [with_system_abseil="$with_system_libs"])
2193 AC_ARG_WITH(system-openjpeg,
2194     AS_HELP_STRING([--with-system-openjpeg],
2195         [Use the OpenJPEG library already on system.]),,
2196     [with_system_openjpeg="$with_system_libs"])
2198 libo_FUZZ_ARG_ENABLE(gpgmepp,
2199     AS_HELP_STRING([--disable-gpgmepp],
2200         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2203 AC_ARG_WITH(system-gpgmepp,
2204     AS_HELP_STRING([--with-system-gpgmepp],
2205         [Use gpgmepp already on system]),,
2206     [with_system_gpgmepp="$with_system_libs"])
2208 AC_ARG_WITH(system-mariadb,
2209     AS_HELP_STRING([--with-system-mariadb],
2210         [Use MariaDB/MySQL libraries already on system.]),,
2211     [with_system_mariadb="$with_system_libs"])
2213 AC_ARG_ENABLE(bundle-mariadb,
2214     AS_HELP_STRING([--enable-bundle-mariadb],
2215         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2218 AC_ARG_WITH(system-postgresql,
2219     AS_HELP_STRING([--with-system-postgresql],
2220         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2221          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2222     [with_system_postgresql="$with_system_libs"])
2224 AC_ARG_WITH(libpq-path,
2225     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2226         [Use this PostgreSQL C interface (libpq) installation for building
2227          the PostgreSQL-SDBC extension.]),
2230 AC_ARG_WITH(system-firebird,
2231     AS_HELP_STRING([--with-system-firebird],
2232         [Use Firebird libraries already on system, for building the Firebird-SDBC
2233          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2234     [with_system_firebird="$with_system_libs"])
2236 AC_ARG_WITH(system-libtommath,
2237             AS_HELP_STRING([--with-system-libtommath],
2238                            [Use libtommath already on system]),,
2239             [with_system_libtommath="$with_system_libs"])
2241 AC_ARG_WITH(system-hsqldb,
2242     AS_HELP_STRING([--with-system-hsqldb],
2243         [Use hsqldb already on system.]))
2245 AC_ARG_WITH(hsqldb-jar,
2246     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2247         [Specify path to jarfile manually.]),
2248     HSQLDB_JAR=$withval)
2250 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2251     AS_HELP_STRING([--disable-scripting-beanshell],
2252         [Disable support for scripts in BeanShell.]),
2256 AC_ARG_WITH(system-beanshell,
2257     AS_HELP_STRING([--with-system-beanshell],
2258         [Use beanshell already on system.]),,
2259     [with_system_beanshell="$with_system_jars"])
2261 AC_ARG_WITH(beanshell-jar,
2262     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2263         [Specify path to jarfile manually.]),
2264     BSH_JAR=$withval)
2266 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2267     AS_HELP_STRING([--disable-scripting-javascript],
2268         [Disable support for scripts in JavaScript.]),
2272 AC_ARG_WITH(system-rhino,
2273     AS_HELP_STRING([--with-system-rhino],
2274         [Use rhino already on system.]),,)
2275 #    [with_system_rhino="$with_system_jars"])
2276 # Above is not used as we have different debug interface
2277 # patched into internal rhino. This code needs to be fixed
2278 # before we can enable it by default.
2280 AC_ARG_WITH(rhino-jar,
2281     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2282         [Specify path to jarfile manually.]),
2283     RHINO_JAR=$withval)
2285 AC_ARG_WITH(system-jfreereport,
2286     AS_HELP_STRING([--with-system-jfreereport],
2287         [Use JFreeReport already on system.]),,
2288     [with_system_jfreereport="$with_system_jars"])
2290 AC_ARG_WITH(sac-jar,
2291     AS_HELP_STRING([--with-sac-jar=JARFILE],
2292         [Specify path to jarfile manually.]),
2293     SAC_JAR=$withval)
2295 AC_ARG_WITH(libxml-jar,
2296     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2297         [Specify path to jarfile manually.]),
2298     LIBXML_JAR=$withval)
2300 AC_ARG_WITH(flute-jar,
2301     AS_HELP_STRING([--with-flute-jar=JARFILE],
2302         [Specify path to jarfile manually.]),
2303     FLUTE_JAR=$withval)
2305 AC_ARG_WITH(jfreereport-jar,
2306     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2307         [Specify path to jarfile manually.]),
2308     JFREEREPORT_JAR=$withval)
2310 AC_ARG_WITH(liblayout-jar,
2311     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2312         [Specify path to jarfile manually.]),
2313     LIBLAYOUT_JAR=$withval)
2315 AC_ARG_WITH(libloader-jar,
2316     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2317         [Specify path to jarfile manually.]),
2318     LIBLOADER_JAR=$withval)
2320 AC_ARG_WITH(libformula-jar,
2321     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2322         [Specify path to jarfile manually.]),
2323     LIBFORMULA_JAR=$withval)
2325 AC_ARG_WITH(librepository-jar,
2326     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2327         [Specify path to jarfile manually.]),
2328     LIBREPOSITORY_JAR=$withval)
2330 AC_ARG_WITH(libfonts-jar,
2331     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2332         [Specify path to jarfile manually.]),
2333     LIBFONTS_JAR=$withval)
2335 AC_ARG_WITH(libserializer-jar,
2336     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2337         [Specify path to jarfile manually.]),
2338     LIBSERIALIZER_JAR=$withval)
2340 AC_ARG_WITH(libbase-jar,
2341     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2342         [Specify path to jarfile manually.]),
2343     LIBBASE_JAR=$withval)
2345 AC_ARG_WITH(system-odbc,
2346     AS_HELP_STRING([--with-system-odbc],
2347         [Use the odbc headers already on system.]),,
2348     [with_system_odbc="auto"])
2350 AC_ARG_WITH(system-sane,
2351     AS_HELP_STRING([--with-system-sane],
2352         [Use sane.h already on system.]),,
2353     [with_system_sane="$with_system_headers"])
2355 AC_ARG_WITH(system-bluez,
2356     AS_HELP_STRING([--with-system-bluez],
2357         [Use bluetooth.h already on system.]),,
2358     [with_system_bluez="$with_system_headers"])
2360 AC_ARG_WITH(system-boost,
2361     AS_HELP_STRING([--with-system-boost],
2362         [Use boost already on system.]),,
2363     [with_system_boost="$with_system_headers"])
2365 AC_ARG_WITH(system-cuckoo,
2366     AS_HELP_STRING([--with-system-cuckoo],
2367         [Use libcuckoo already on system.]),,
2368     [with_system_cuckoo="$with_system_headers"])
2370 AC_ARG_WITH(system-glm,
2371     AS_HELP_STRING([--with-system-glm],
2372         [Use glm already on system.]),,
2373     [with_system_glm="$with_system_headers"])
2375 AC_ARG_WITH(system-hunspell,
2376     AS_HELP_STRING([--with-system-hunspell],
2377         [Use libhunspell already on system.]),,
2378     [with_system_hunspell="$with_system_libs"])
2380 libo_FUZZ_ARG_ENABLE(zxing,
2381     AS_HELP_STRING([--disable-zxing],
2382        [Disable use of zxing external library.]))
2384 AC_ARG_WITH(system-zxing,
2385     AS_HELP_STRING([--with-system-zxing],
2386         [Use libzxing already on system.]),,
2387     [with_system_zxing="$with_system_libs"])
2389 AC_ARG_WITH(system-box2d,
2390     AS_HELP_STRING([--with-system-box2d],
2391         [Use box2d already on system.]),,
2392     [with_system_box2d="$with_system_libs"])
2394 AC_ARG_WITH(system-mythes,
2395     AS_HELP_STRING([--with-system-mythes],
2396         [Use mythes already on system.]),,
2397     [with_system_mythes="$with_system_libs"])
2399 AC_ARG_WITH(system-altlinuxhyph,
2400     AS_HELP_STRING([--with-system-altlinuxhyph],
2401         [Use ALTLinuxhyph already on system.]),,
2402     [with_system_altlinuxhyph="$with_system_libs"])
2404 AC_ARG_WITH(system-lpsolve,
2405     AS_HELP_STRING([--with-system-lpsolve],
2406         [Use lpsolve already on system.]),,
2407     [with_system_lpsolve="$with_system_libs"])
2409 AC_ARG_WITH(system-coinmp,
2410     AS_HELP_STRING([--with-system-coinmp],
2411         [Use CoinMP already on system.]),,
2412     [with_system_coinmp="$with_system_libs"])
2414 AC_ARG_WITH(system-liblangtag,
2415     AS_HELP_STRING([--with-system-liblangtag],
2416         [Use liblangtag library already on system.]),,
2417     [with_system_liblangtag="$with_system_libs"])
2419 AC_ARG_WITH(system-lockfile,
2420     AS_HELP_STRING([--with-system-lockfile[=file]],
2421         [Detect a system lockfile program or use the \$file argument.]))
2423 AC_ARG_WITH(webdav,
2424     AS_HELP_STRING([--without-webdav],
2425         [Disable WebDAV support in the UCB.]))
2427 AC_ARG_WITH(linker-hash-style,
2428     AS_HELP_STRING([--with-linker-hash-style],
2429         [Use linker with --hash-style=<style> when linking shared objects.
2430          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2431          if supported on the build system, and "sysv" otherwise.]))
2433 AC_ARG_WITH(jdk-home,
2434     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2435         [If you have installed JDK 9 or later on your system please supply the
2436          path here. Note that this is not the location of the java command but the
2437          location of the entire distribution. In case of cross-compiling, this
2438          is the JDK of the host os. Use --with-build-platform-configure-options
2439          to point to a different build platform JDK.]),
2442 AC_ARG_WITH(help,
2443     AS_HELP_STRING([--with-help],
2444         [Enable the build of help. There is a special parameter "common" that
2445          can be used to bundle only the common part, .e.g help-specific icons.
2446          This is useful when you build the helpcontent separately.])
2447     [
2448                           Usage:     --with-help    build the old local help
2449                                  --without-help     no local help (default)
2450                                  --with-help=html   build the new HTML local help
2451                                  --with-help=online build the new HTML online help
2452     ],
2455 AC_ARG_WITH(omindex,
2456    AS_HELP_STRING([--with-omindex],
2457         [Enable the support of xapian-omega index for online help.])
2458    [
2459                          Usage: --with-omindex=server prepare the pages for omindex
2460                                 but let xapian-omega be built in server.
2461                                 --with-omindex=noxap do not prepare online pages
2462                                 for xapian-omega
2463   ],
2466 libo_FUZZ_ARG_WITH(java,
2467     AS_HELP_STRING([--with-java=<java command>],
2468         [Specify the name of the Java interpreter command. Typically "java"
2469          which is the default.
2471          To build without support for Java components, applets, accessibility
2472          or the XML filters written in Java, use --without-java or --with-java=no.]),
2473     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2474     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2477 AC_ARG_WITH(jvm-path,
2478     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2479         [Use a specific JVM search path at runtime.
2480          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2483 AC_ARG_WITH(ant-home,
2484     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2485         [If you have installed Apache Ant on your system, please supply the path here.
2486          Note that this is not the location of the Ant binary but the location
2487          of the entire distribution.]),
2490 AC_ARG_WITH(symbol-config,
2491     AS_HELP_STRING([--with-symbol-config],
2492         [Configuration for the crashreport symbol upload]),
2493         [],
2494         [with_symbol_config=no])
2496 AC_ARG_WITH(export-validation,
2497     AS_HELP_STRING([--without-export-validation],
2498         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2499 ,with_export_validation=auto)
2501 AC_ARG_WITH(bffvalidator,
2502     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2503         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2504          Requires installed Microsoft Office Binary File Format Validator.
2505          Note: export-validation (--with-export-validation) is required to be turned on.
2506          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2507 ,with_bffvalidator=no)
2509 libo_FUZZ_ARG_WITH(junit,
2510     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2511         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2512          --without-junit disables those tests. Not relevant in the --without-java case.]),
2513 ,with_junit=yes)
2515 AC_ARG_WITH(hamcrest,
2516     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2517         [Specifies the hamcrest jar file to use for JUnit-based tests.
2518          --without-junit disables those tests. Not relevant in the --without-java case.]),
2519 ,with_hamcrest=yes)
2521 AC_ARG_WITH(perl-home,
2522     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2523         [If you have installed Perl 5 Distribution, on your system, please
2524          supply the path here. Note that this is not the location of the Perl
2525          binary but the location of the entire distribution.]),
2528 libo_FUZZ_ARG_WITH(doxygen,
2529     AS_HELP_STRING(
2530         [--with-doxygen=<absolute path to doxygen executable>],
2531         [Specifies the doxygen executable to use when generating ODK C/C++
2532          documentation. --without-doxygen disables generation of ODK C/C++
2533          documentation. Not relevant in the --disable-odk case.]),
2534 ,with_doxygen=yes)
2536 AC_ARG_WITH(visual-studio,
2537     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2538         [Specify which Visual Studio version to use in case several are
2539          installed. Currently 2019 (default) and 2022 are supported.]),
2542 AC_ARG_WITH(windows-sdk,
2543     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2544         [Specify which Windows SDK, or "Windows Kit", version to use
2545          in case the one that came with the selected Visual Studio
2546          is not what you want for some reason. Note that not all compiler/SDK
2547          combinations are supported. The intent is that this option should not
2548          be needed.]),
2551 AC_ARG_WITH(lang,
2552     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2553         [Use this option to build LibreOffice with additional UI language support.
2554          English (US) is always included by default.
2555          Separate multiple languages with space.
2556          For all languages, use --with-lang=ALL.]),
2559 AC_ARG_WITH(locales,
2560     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2561         [Use this option to limit the locale information built in.
2562          Separate multiple locales with space.
2563          Very experimental and might well break stuff.
2564          Just a desperate measure to shrink code and data size.
2565          By default all the locales available is included.
2566          Just works with --disable-dynloading. Defaults to "ALL".
2567          This option is completely unrelated to --with-lang.])
2568     [
2569                           Affects also our character encoding conversion
2570                           tables for encodings mainly targeted for a
2571                           particular locale, like EUC-CN and EUC-TW for
2572                           zh, ISO-2022-JP for ja.
2574                           Affects also our add-on break iterator data for
2575                           some languages.
2577                           For the default, all locales, don't use this switch at all.
2578                           Specifying just the language part of a locale means all matching
2579                           locales will be included.
2580     ],
2583 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2584 libo_FUZZ_ARG_WITH(krb5,
2585     AS_HELP_STRING([--with-krb5],
2586         [Enable MIT Kerberos 5 support in modules that support it.
2587          By default automatically enabled on platforms
2588          where a good system Kerberos 5 is available.]),
2591 libo_FUZZ_ARG_WITH(gssapi,
2592     AS_HELP_STRING([--with-gssapi],
2593         [Enable GSSAPI support in modules that support it.
2594          By default automatically enabled on platforms
2595          where a good system GSSAPI is available.]),
2598 AC_ARG_WITH(iwyu,
2599     AS_HELP_STRING([--with-iwyu],
2600         [Use given IWYU binary path to check unneeded includes instead of building.
2601          Use only if you are hacking on it.]),
2604 libo_FUZZ_ARG_WITH(lxml,
2605     AS_HELP_STRING([--without-lxml],
2606         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2607          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2608          report widget classes and ids.]),
2611 libo_FUZZ_ARG_WITH(latest-c++,
2612     AS_HELP_STRING([--with-latest-c++],
2613         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2614          published standard.]),,
2615         [with_latest_c__=no])
2617 dnl ===================================================================
2618 dnl Branding
2619 dnl ===================================================================
2621 AC_ARG_WITH(branding,
2622     AS_HELP_STRING([--with-branding=/path/to/images],
2623         [Use given path to retrieve branding images set.])
2624     [
2625                           Search for intro.png about.svg and logo.svg.
2626                           If any is missing, default ones will be used instead.
2628                           Search also progress.conf for progress
2629                           settings on intro screen :
2631                           PROGRESSBARCOLOR="255,255,255" Set color of
2632                           progress bar. Comma separated RGB decimal values.
2633                           PROGRESSSIZE="407,6" Set size of progress bar.
2634                           Comma separated decimal values (width, height).
2635                           PROGRESSPOSITION="61,317" Set position of progress
2636                           bar from left,top. Comma separated decimal values.
2637                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2638                           bar frame. Comma separated RGB decimal values.
2639                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2640                           bar text. Comma separated RGB decimal values.
2641                           PROGRESSTEXTBASELINE="287" Set vertical position of
2642                           progress bar text from top. Decimal value.
2644                           Default values will be used if not found.
2645     ],
2649 AC_ARG_WITH(extra-buildid,
2650     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2651         [Show addition build identification in about dialog.]),
2655 AC_ARG_WITH(vendor,
2656     AS_HELP_STRING([--with-vendor="John the Builder"],
2657         [Set vendor of the build.]),
2660 AC_ARG_WITH(privacy-policy-url,
2661     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2662         [The URL to your privacy policy (needed when
2663          enabling online-update or crashreporting via breakpad)]),
2664         [if test "x$with_privacy_policy_url" = "xyes"; then
2665             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2666          elif test "x$with_privacy_policy_url" = "xno"; then
2667             with_privacy_policy_url="undefined"
2668          fi]
2669 ,[with_privacy_policy_url="undefined"])
2671 AC_ARG_WITH(android-package-name,
2672     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2673         [Set Android package name of the build.]),
2676 AC_ARG_WITH(compat-oowrappers,
2677     AS_HELP_STRING([--with-compat-oowrappers],
2678         [Install oo* wrappers in parallel with
2679          lo* ones to keep backward compatibility.
2680          Has effect only with make distro-pack-install]),
2683 AC_ARG_WITH(os-version,
2684     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2685         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2688 AC_ARG_WITH(idlc-cpp,
2689     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2690         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2693 AC_ARG_WITH(parallelism,
2694     AS_HELP_STRING([--with-parallelism],
2695         [Number of jobs to run simultaneously during build. Parallel builds can
2696         save a lot of time on multi-cpu machines. Defaults to the number of
2697         CPUs on the machine, unless you configure --enable-icecream - then to
2698         40.]),
2701 AC_ARG_WITH(all-tarballs,
2702     AS_HELP_STRING([--with-all-tarballs],
2703         [Download all external tarballs unconditionally]))
2705 AC_ARG_WITH(gdrive-client-id,
2706     AS_HELP_STRING([--with-gdrive-client-id],
2707         [Provides the client id of the application for OAuth2 authentication
2708         on Google Drive. If either this or --with-gdrive-client-secret is
2709         empty, the feature will be disabled]),
2712 AC_ARG_WITH(gdrive-client-secret,
2713     AS_HELP_STRING([--with-gdrive-client-secret],
2714         [Provides the client secret of the application for OAuth2
2715         authentication on Google Drive. If either this or
2716         --with-gdrive-client-id is empty, the feature will be disabled]),
2719 AC_ARG_WITH(alfresco-cloud-client-id,
2720     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2721         [Provides the client id of the application for OAuth2 authentication
2722         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2723         empty, the feature will be disabled]),
2726 AC_ARG_WITH(alfresco-cloud-client-secret,
2727     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2728         [Provides the client secret of the application for OAuth2
2729         authentication on Alfresco Cloud. If either this or
2730         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2733 AC_ARG_WITH(onedrive-client-id,
2734     AS_HELP_STRING([--with-onedrive-client-id],
2735         [Provides the client id of the application for OAuth2 authentication
2736         on OneDrive. If either this or --with-onedrive-client-secret is
2737         empty, the feature will be disabled]),
2740 AC_ARG_WITH(onedrive-client-secret,
2741     AS_HELP_STRING([--with-onedrive-client-secret],
2742         [Provides the client secret of the application for OAuth2
2743         authentication on OneDrive. If either this or
2744         --with-onedrive-client-id is empty, the feature will be disabled]),
2746 dnl ===================================================================
2747 dnl Do we want to use pre-build binary tarball for recompile
2748 dnl ===================================================================
2750 if test "$enable_library_bin_tar" = "yes" ; then
2751     USE_LIBRARY_BIN_TAR=TRUE
2752 else
2753     USE_LIBRARY_BIN_TAR=
2755 AC_SUBST(USE_LIBRARY_BIN_TAR)
2757 dnl ===================================================================
2758 dnl Test whether build target is Release Build
2759 dnl ===================================================================
2760 AC_MSG_CHECKING([whether build target is Release Build])
2761 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2762     AC_MSG_RESULT([no])
2763     ENABLE_RELEASE_BUILD=
2764     GET_TASK_ALLOW_ENTITLEMENT='
2765         <!-- We want to be able to debug a hardened process when not building for release -->
2766         <key>com.apple.security.get-task-allow</key>
2767         <true/>'
2768 else
2769     AC_MSG_RESULT([yes])
2770     ENABLE_RELEASE_BUILD=TRUE
2771     GET_TASK_ALLOW_ENTITLEMENT=''
2773 AC_SUBST(ENABLE_RELEASE_BUILD)
2774 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2776 AC_MSG_CHECKING([whether to build a Community flavor])
2777 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2778     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2779     AC_MSG_RESULT([yes])
2780 else
2781     AC_MSG_RESULT([no])
2784 dnl ===================================================================
2785 dnl Test whether to sign Windows Build
2786 dnl ===================================================================
2787 AC_MSG_CHECKING([whether to sign windows build])
2788 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2789     AC_MSG_RESULT([yes])
2790     WINDOWS_BUILD_SIGNING="TRUE"
2791 else
2792     AC_MSG_RESULT([no])
2793     WINDOWS_BUILD_SIGNING="FALSE"
2795 AC_SUBST(WINDOWS_BUILD_SIGNING)
2797 dnl ===================================================================
2798 dnl MacOSX build and runtime environment options
2799 dnl ===================================================================
2801 AC_ARG_WITH(macosx-version-min-required,
2802     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2803         [set the minimum OS version needed to run the built LibreOffice])
2804     [
2805                           e. g.: --with-macosx-version-min-required=10.12
2806     ],
2809 AC_ARG_WITH(macosx-version-max-allowed,
2810     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2811         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2812     [
2813                           e. g.: --with-macosx-version-max-allowed=11.0
2814     ],
2818 dnl ===================================================================
2819 dnl options for stuff used during cross-compilation build
2820 dnl Not quite superseded by --with-build-platform-configure-options.
2821 dnl TODO: check, if the "force" option is still needed anywhere.
2822 dnl ===================================================================
2824 AC_ARG_WITH(system-icu-for-build,
2825     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2826         [Use icu already on system for build tools (cross-compilation only).]))
2828 dnl ===================================================================
2829 dnl Check for incompatible options set by fuzzing, and reset those
2830 dnl automatically to working combinations
2831 dnl ===================================================================
2833 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2834         "$enable_dbus" != "$enable_avahi"; then
2835     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2836     enable_avahi=$enable_dbus
2839 add_lopath_after ()
2841     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2842         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2843     fi
2846 add_lopath_before ()
2848     local IFS=${P_SEP}
2849     local path_cleanup
2850     local dir
2851     for dir in $LO_PATH ; do
2852         if test "$dir" != "$1" ; then
2853             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2854         fi
2855     done
2856     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2859 dnl ===================================================================
2860 dnl check for required programs (grep, awk, sed, bash)
2861 dnl ===================================================================
2863 pathmunge ()
2865     local new_path
2866     if test -n "$1"; then
2867         if test "$build_os" = "cygwin"; then
2868             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2869                 PathFormat "$1"
2870                 new_path=`cygpath -sm "$formatted_path"`
2871             else
2872                 PathFormat "$1"
2873                 new_path=`cygpath -u "$formatted_path"`
2874             fi
2875         else
2876             new_path="$1"
2877         fi
2878         if test "$2" = "after"; then
2879             add_lopath_after "$new_path"
2880         else
2881             add_lopath_before "$new_path"
2882         fi
2883     fi
2886 AC_PROG_AWK
2887 AC_PATH_PROG( AWK, $AWK)
2888 if test -z "$AWK"; then
2889     AC_MSG_ERROR([install awk to run this script])
2892 AC_PATH_PROG(BASH, bash)
2893 if test -z "$BASH"; then
2894     AC_MSG_ERROR([bash not found in \$PATH])
2896 AC_SUBST(BASH)
2898 AC_MSG_CHECKING([for GNU or BSD tar])
2899 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2900     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2901     if test $? -eq 0;  then
2902         GNUTAR=$a
2903         break
2904     fi
2905 done
2906 AC_MSG_RESULT($GNUTAR)
2907 if test -z "$GNUTAR"; then
2908     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2910 AC_SUBST(GNUTAR)
2912 AC_MSG_CHECKING([for tar's option to strip components])
2913 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2914 if test $? -eq 0; then
2915     STRIP_COMPONENTS="--strip-components"
2916 else
2917     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2918     if test $? -eq 0; then
2919         STRIP_COMPONENTS="--strip-path"
2920     else
2921         STRIP_COMPONENTS="unsupported"
2922     fi
2924 AC_MSG_RESULT($STRIP_COMPONENTS)
2925 if test x$STRIP_COMPONENTS = xunsupported; then
2926     AC_MSG_ERROR([you need a tar that is able to strip components.])
2928 AC_SUBST(STRIP_COMPONENTS)
2930 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2931 dnl desktop OSes from "mobile" ones.
2933 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2934 dnl In other words, that when building for an OS that is not a
2935 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2937 dnl Note the direction of the implication; there is no assumption that
2938 dnl cross-compiling would imply a non-desktop OS.
2940 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2941     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2942     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2943     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2946 ENABLE_CUSTOMTARGET_COMPONENTS=
2947 if test "$enable_customtarget_components" = yes; then
2948     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
2949     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
2950         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
2951     fi
2953 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
2955 # Whether to build "avmedia" functionality or not.
2957 if test "$enable_avmedia" = yes; then
2958     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2959     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2960 else
2961     test_gstreamer_1_0=no
2964 # Decide whether to build database connectivity stuff (including Base) or not.
2965 if test "$enable_database_connectivity" != no; then
2966     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2967     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2968 else
2969     if test "$_os" = iOS; then
2970         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2971     fi
2972     disable_database_connectivity_dependencies
2975 if test -z "$enable_extensions"; then
2976     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2977     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2978         enable_extensions=yes
2979     fi
2982 DISABLE_SCRIPTING=''
2983 if test "$enable_scripting" = yes; then
2984     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2985     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2986 else
2987     DISABLE_SCRIPTING='TRUE'
2988     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2991 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2992     # Disable dynamic_loading always for iOS and Android
2993     enable_dynamic_loading=no
2994 elif test -z "$enable_dynamic_loading"; then
2995     # Otherwise enable it unless specifically disabled
2996     enable_dynamic_loading=yes
2999 DISABLE_DYNLOADING=''
3000 if test "$enable_dynamic_loading" = yes; then
3001     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3002 else
3003     DISABLE_DYNLOADING='TRUE'
3005 AC_SUBST(DISABLE_DYNLOADING)
3007 if test "$enable_extensions" = yes; then
3008     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3009     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3010 else
3011     enable_extension_integration=no
3012     enable_extension_update=no
3015 # remember SYSBASE value
3016 AC_SUBST(SYSBASE)
3018 dnl ===================================================================
3019 dnl  Sort out various gallery compilation options
3020 dnl ===================================================================
3021 WITH_GALLERY_BUILD=TRUE
3022 AC_MSG_CHECKING([how to build and package galleries])
3023 if test -n "${with_galleries}"; then
3024     if test "$with_galleries" = "build"; then
3025         if test "$enable_database_connectivity" = no; then
3026             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3027         fi
3028         AC_MSG_RESULT([build from source images internally])
3029     elif test "$with_galleries" = "no"; then
3030         WITH_GALLERY_BUILD=
3031         AC_MSG_RESULT([disable non-internal gallery build])
3032     else
3033         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3034     fi
3035 else
3036     if test $_os != iOS -a $_os != Android; then
3037         AC_MSG_RESULT([internal src images for desktop])
3038     else
3039         WITH_GALLERY_BUILD=
3040         AC_MSG_RESULT([disable src image build])
3041     fi
3043 AC_SUBST(WITH_GALLERY_BUILD)
3045 dnl ===================================================================
3046 dnl  Checks if ccache is available
3047 dnl ===================================================================
3048 CCACHE_DEPEND_MODE=
3049 if test "$enable_ccache" = "no"; then
3050     CCACHE=""
3051 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3052     case "%$CC%$CXX%" in
3053     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3054     # assume that's good then
3055     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3056         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3057         CCACHE_DEPEND_MODE=1
3058         ;;
3059     *)
3060         # try to use our own ccache if it is available and CCACHE was not already defined
3061         if test -z "$CCACHE"; then
3062             if test "$_os" = "WINNT"; then
3063                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3064             fi
3065             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3066                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3067             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3068                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3069             fi
3070         fi
3071         AC_PATH_PROG([CCACHE],[ccache],[not found])
3072         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3073             CCACHE=`win_short_path_for_make "$CCACHE"`
3074             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3075             rm -f conftest.txt
3076             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3077             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3078             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3079                 AC_MSG_RESULT(yes)
3080             else
3081                 AC_MSG_RESULT(no)
3082                 CCACHE="not found"
3083             fi
3084             rm -f conftest.txt
3085         fi
3086         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3087             # on windows/VC perhaps sccache is around?
3088             case "%$CC%$CXX%" in
3089             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3090             # assume that's good then
3091             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3092                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3093                 CCACHE_DEPEND_MODE=1
3094                 SCCACHE=1
3095                 ;;
3096             *)
3097                 # for sharing code below, reuse CCACHE env var
3098                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3099                 if test "$CCACHE" != "not found"; then
3100                     CCACHE=`win_short_path_for_make "$CCACHE"`
3101                     SCCACHE=1
3102                     CCACHE_DEPEND_MODE=1
3103                 fi
3104                 ;;
3105             esac
3106         fi
3107         if test "$CCACHE" = "not found"; then
3108             CCACHE=""
3109         fi
3110         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3111             CCACHE_DEPEND_MODE=1
3112             # Need to check for ccache version: otherwise prevents
3113             # caching of the results (like "-x objective-c++" for Mac)
3114             if test $_os = Darwin -o $_os = iOS; then
3115                 # Check ccache version
3116                 AC_MSG_CHECKING([whether version of ccache is suitable])
3117                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3118                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3119                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3120                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3121                 else
3122                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3123                     CCACHE=""
3124                     CCACHE_DEPEND_MODE=
3125                 fi
3126             fi
3127         fi
3128         ;;
3129     esac
3130 else
3131     CCACHE=""
3133 if test "$enable_ccache" = "nodepend"; then
3134     CCACHE_DEPEND_MODE=""
3136 AC_SUBST(CCACHE_DEPEND_MODE)
3138 # sccache defaults are good enough
3139 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3140     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3141     # -p works with both 4.2 and 4.4
3142     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3143     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3144     if test "$ccache_size" = ""; then
3145         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3146         if test "$ccache_size" = ""; then
3147             ccache_size=0
3148         fi
3149         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3150         if test $ccache_size -lt 1024; then
3151             CCACHE=""
3152             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3153             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3154         else
3155             # warn that ccache may be too small for debug build
3156             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3157             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3158         fi
3159     else
3160         if test $ccache_size -lt 5; then
3161             #warn that ccache may be too small for debug build
3162             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3163             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3164         fi
3165     fi
3168 ENABLE_Z7_DEBUG=
3169 if test "$enable_z7_debug" != no; then
3170     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3171         ENABLE_Z7_DEBUG=TRUE
3172     fi
3173 else
3174     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3175     add_warning "ccache will not work with --disable-z7-debug"
3177 AC_SUBST(ENABLE_Z7_DEBUG)
3179 dnl ===================================================================
3180 dnl  Checks for C compiler,
3181 dnl  The check for the C++ compiler is later on.
3182 dnl ===================================================================
3183 if test "$_os" != "WINNT"; then
3184     GCC_HOME_SET="true"
3185     AC_MSG_CHECKING([gcc home])
3186     if test -z "$with_gcc_home"; then
3187         if test "$enable_icecream" = "yes"; then
3188             if test -d "/usr/lib/icecc/bin"; then
3189                 GCC_HOME="/usr/lib/icecc/"
3190             elif test -d "/usr/libexec/icecc/bin"; then
3191                 GCC_HOME="/usr/libexec/icecc/"
3192             elif test -d "/opt/icecream/bin"; then
3193                 GCC_HOME="/opt/icecream/"
3194             else
3195                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3197             fi
3198         else
3199             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3200             GCC_HOME_SET="false"
3201         fi
3202     else
3203         GCC_HOME="$with_gcc_home"
3204     fi
3205     AC_MSG_RESULT($GCC_HOME)
3206     AC_SUBST(GCC_HOME)
3208     if test "$GCC_HOME_SET" = "true"; then
3209         if test -z "$CC"; then
3210             CC="$GCC_HOME/bin/gcc"
3211             CC_BASE="gcc"
3212         fi
3213         if test -z "$CXX"; then
3214             CXX="$GCC_HOME/bin/g++"
3215             CXX_BASE="g++"
3216         fi
3217     fi
3220 COMPATH=`dirname "$CC"`
3221 if test "$COMPATH" = "."; then
3222     AC_PATH_PROGS(COMPATH, $CC)
3223     dnl double square bracket to get single because of M4 quote...
3224     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3226 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3228 dnl ===================================================================
3229 dnl Java support
3230 dnl ===================================================================
3231 AC_MSG_CHECKING([whether to build with Java support])
3232 if test "$with_java" != "no"; then
3233     if test "$DISABLE_SCRIPTING" = TRUE; then
3234         AC_MSG_RESULT([no, overridden by --disable-scripting])
3235         ENABLE_JAVA=""
3236         with_java=no
3237     else
3238         AC_MSG_RESULT([yes])
3239         ENABLE_JAVA="TRUE"
3240         AC_DEFINE(HAVE_FEATURE_JAVA)
3241     fi
3242 else
3243     AC_MSG_RESULT([no])
3244     ENABLE_JAVA=""
3247 AC_SUBST(ENABLE_JAVA)
3249 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3251 dnl ENABLE_JAVA="" indicate no Java support at all
3253 dnl ===================================================================
3254 dnl Check macOS SDK and compiler
3255 dnl ===================================================================
3257 if test $_os = Darwin; then
3259     # The SDK in the currently selected Xcode should be found.
3261     AC_MSG_CHECKING([what macOS SDK to use])
3262     for macosx_sdk in 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3263         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3264         if test -d "$MACOSX_SDK_PATH"; then
3265             break
3266         else
3267             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3268             if test -d "$MACOSX_SDK_PATH"; then
3269                 break
3270             fi
3271         fi
3272     done
3273     if test ! -d "$MACOSX_SDK_PATH"; then
3274         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3275     fi
3277     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3279     case $macosx_sdk in
3280     10.13)
3281         MACOSX_SDK_VERSION=101300
3282         ;;
3283     10.14)
3284         MACOSX_SDK_VERSION=101400
3285         ;;
3286     10.15)
3287         MACOSX_SDK_VERSION=101500
3288         ;;
3289     11.0)
3290         MACOSX_SDK_VERSION=110000
3291         ;;
3292     11.1)
3293         MACOSX_SDK_VERSION=110100
3294         ;;
3295     11.3)
3296         MACOSX_SDK_VERSION=110300
3297         ;;
3298     12.0)
3299         MACOSX_SDK_VERSION=120000
3300         ;;
3301     12.1)
3302         MACOSX_SDK_VERSION=120100
3303         ;;
3304     *)
3305         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3306         ;;
3307     esac
3309     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3310         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3311     fi
3313     if test "$with_macosx_version_min_required" = "" ; then
3314         if test "$host_cpu" = x86_64; then
3315             with_macosx_version_min_required="10.12";
3316         else
3317             with_macosx_version_min_required="11.0";
3318         fi
3319     fi
3321     if test "$with_macosx_version_max_allowed" = "" ; then
3322         with_macosx_version_max_allowed="$macosx_sdk"
3323     fi
3325     # export this so that "xcrun" invocations later return matching values
3326     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3327     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3328     export DEVELOPER_DIR
3329     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3330     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3332     AC_MSG_CHECKING([whether Xcode is new enough])
3333     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3334     my_xcode_ver2=${my_xcode_ver1#Xcode }
3335     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3336     if test "$my_xcode_ver3" -ge 1103; then
3337         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3338     else
3339         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3340     fi
3342     case "$with_macosx_version_min_required" in
3343     10.12)
3344         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3345         ;;
3346     10.13)
3347         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3348         ;;
3349     10.14)
3350         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3351         ;;
3352     10.15)
3353         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3354         ;;
3355     10.16)
3356         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3357         ;;
3358     11.0)
3359         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3360         ;;
3361     11.1)
3362         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3363         ;;
3364     11.3)
3365         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3366         ;;
3367     12.0)
3368         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3369         ;;
3370     12.1)
3371         MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3372         ;;
3373     *)
3374         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--12.1])
3375         ;;
3376     esac
3378     LIBTOOL=/usr/bin/libtool
3379     INSTALL_NAME_TOOL=install_name_tool
3380     if test -z "$save_CC"; then
3381         stdlib=-stdlib=libc++
3383         AC_MSG_CHECKING([what C compiler to use])
3384         CC="`xcrun -find clang`"
3385         CC_BASE=`first_arg_basename "$CC"`
3386         if test "$host_cpu" = x86_64; then
3387             CC+=" -target x86_64-apple-macos"
3388         else
3389             CC+=" -target arm64-apple-macos"
3390         fi
3391         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3392         AC_MSG_RESULT([$CC])
3394         AC_MSG_CHECKING([what C++ compiler to use])
3395         CXX="`xcrun -find clang++`"
3396         CXX_BASE=`first_arg_basename "$CXX"`
3397         if test "$host_cpu" = x86_64; then
3398             CXX+=" -target x86_64-apple-macos"
3399         else
3400             CXX+=" -target arm64-apple-macos"
3401         fi
3402         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3403         AC_MSG_RESULT([$CXX])
3405         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3406         AR=`xcrun -find ar`
3407         NM=`xcrun -find nm`
3408         STRIP=`xcrun -find strip`
3409         LIBTOOL=`xcrun -find libtool`
3410         RANLIB=`xcrun -find ranlib`
3411     fi
3413     case "$with_macosx_version_max_allowed" in
3414     10.12)
3415         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3416         ;;
3417     10.13)
3418         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3419         ;;
3420     10.14)
3421         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3422         ;;
3423     10.15)
3424         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3425         ;;
3426     11.0)
3427         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3428         ;;
3429     11.1)
3430         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3431         ;;
3432     11.3)
3433         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3434         ;;
3435     12.0)
3436         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3437         ;;
3438     12.1)
3439         MAC_OS_X_VERSION_MAX_ALLOWED="120100"
3440         ;;
3441     *)
3442         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.1])
3443         ;;
3444     esac
3446     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3447     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3448         AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED])
3449     else
3450         AC_MSG_RESULT([ok])
3451     fi
3453     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3454     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3455         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3456     else
3457         AC_MSG_RESULT([ok])
3458     fi
3459     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3460     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3462     AC_MSG_CHECKING([whether to do code signing])
3464     if test "$enable_macosx_code_signing" = yes; then
3465         # By default use the first suitable certificate (?).
3467         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3468         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3469         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3470         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3471         # "Developer ID Application" one.
3473         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3474         if test -n "$identity"; then
3475             MACOSX_CODESIGNING_IDENTITY=$identity
3476             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3477             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3478         else
3479             AC_MSG_ERROR([cannot determine identity to use])
3480         fi
3481     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3482         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3483         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3484         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3485     else
3486         AC_MSG_RESULT([no])
3487     fi
3489     AC_MSG_CHECKING([whether to create a Mac App Store package])
3491     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3492         AC_MSG_RESULT([no])
3493     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3494         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3495     elif test "$enable_macosx_package_signing" = yes; then
3496         # By default use the first suitable certificate.
3497         # It should be a "3rd Party Mac Developer Installer" one
3499         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3500         if test -n "$identity"; then
3501             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3502             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3503             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3504         else
3505             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3506         fi
3507     else
3508         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3509         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3510         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3511     fi
3513     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3514         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3515     fi
3517     AC_MSG_CHECKING([whether to sandbox the application])
3519     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3520         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3521     elif test "$enable_macosx_sandbox" = yes; then
3522         ENABLE_MACOSX_SANDBOX=TRUE
3523         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3524         AC_MSG_RESULT([yes])
3525     else
3526         AC_MSG_RESULT([no])
3527     fi
3529     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3530     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3531     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3533 AC_SUBST(MACOSX_SDK_PATH)
3534 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3535 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3536 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3537 AC_SUBST(INSTALL_NAME_TOOL)
3538 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3539 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3540 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3541 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3542 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3544 dnl ===================================================================
3545 dnl Check iOS SDK and compiler
3546 dnl ===================================================================
3548 if test $_os = iOS; then
3549     AC_MSG_CHECKING([what iOS SDK to use])
3550     current_sdk_ver=15.2
3551     older_sdk_vers="15.0 14.5"
3552     if test "$enable_ios_simulator" = "yes"; then
3553         platform=iPhoneSimulator
3554         versionmin=-mios-simulator-version-min=13.6
3555     else
3556         platform=iPhoneOS
3557         versionmin=-miphoneos-version-min=13.6
3558     fi
3559     xcode_developer=`xcode-select -print-path`
3561     for sdkver in $current_sdk_ver $older_sdk_vers; do
3562         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3563         if test -d $t; then
3564             sysroot=$t
3565             break
3566         fi
3567     done
3569     if test -z "$sysroot"; then
3570         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3571     fi
3573     AC_MSG_RESULT($sysroot)
3575     stdlib="-stdlib=libc++"
3577     AC_MSG_CHECKING([what C compiler to use])
3578     CC="`xcrun -find clang`"
3579     CC_BASE=`first_arg_basename "$CC"`
3580     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3581     AC_MSG_RESULT([$CC])
3583     AC_MSG_CHECKING([what C++ compiler to use])
3584     CXX="`xcrun -find clang++`"
3585     CXX_BASE=`first_arg_basename "$CXX"`
3586     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3587     AC_MSG_RESULT([$CXX])
3589     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3590     AR=`xcrun -find ar`
3591     NM=`xcrun -find nm`
3592     STRIP=`xcrun -find strip`
3593     LIBTOOL=`xcrun -find libtool`
3594     RANLIB=`xcrun -find ranlib`
3597 AC_MSG_CHECKING([whether to treat the installation as read-only])
3599 if test $_os = Darwin; then
3600     enable_readonly_installset=yes
3601 elif test "$enable_extensions" != yes; then
3602     enable_readonly_installset=yes
3604 if test "$enable_readonly_installset" = yes; then
3605     AC_MSG_RESULT([yes])
3606     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3607 else
3608     AC_MSG_RESULT([no])
3611 dnl ===================================================================
3612 dnl Structure of install set
3613 dnl ===================================================================
3615 if test $_os = Darwin; then
3616     LIBO_BIN_FOLDER=MacOS
3617     LIBO_ETC_FOLDER=Resources
3618     LIBO_LIBEXEC_FOLDER=MacOS
3619     LIBO_LIB_FOLDER=Frameworks
3620     LIBO_LIB_PYUNO_FOLDER=Resources
3621     LIBO_SHARE_FOLDER=Resources
3622     LIBO_SHARE_HELP_FOLDER=Resources/help
3623     LIBO_SHARE_JAVA_FOLDER=Resources/java
3624     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3625     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3626     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3627     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3628     LIBO_URE_BIN_FOLDER=MacOS
3629     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3630     LIBO_URE_LIB_FOLDER=Frameworks
3631     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3632     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3633 elif test $_os = WINNT; then
3634     LIBO_BIN_FOLDER=program
3635     LIBO_ETC_FOLDER=program
3636     LIBO_LIBEXEC_FOLDER=program
3637     LIBO_LIB_FOLDER=program
3638     LIBO_LIB_PYUNO_FOLDER=program
3639     LIBO_SHARE_FOLDER=share
3640     LIBO_SHARE_HELP_FOLDER=help
3641     LIBO_SHARE_JAVA_FOLDER=program/classes
3642     LIBO_SHARE_PRESETS_FOLDER=presets
3643     LIBO_SHARE_READMES_FOLDER=readmes
3644     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3645     LIBO_SHARE_SHELL_FOLDER=program/shell
3646     LIBO_URE_BIN_FOLDER=program
3647     LIBO_URE_ETC_FOLDER=program
3648     LIBO_URE_LIB_FOLDER=program
3649     LIBO_URE_MISC_FOLDER=program
3650     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3651 else
3652     LIBO_BIN_FOLDER=program
3653     LIBO_ETC_FOLDER=program
3654     LIBO_LIBEXEC_FOLDER=program
3655     LIBO_LIB_FOLDER=program
3656     LIBO_LIB_PYUNO_FOLDER=program
3657     LIBO_SHARE_FOLDER=share
3658     LIBO_SHARE_HELP_FOLDER=help
3659     LIBO_SHARE_JAVA_FOLDER=program/classes
3660     LIBO_SHARE_PRESETS_FOLDER=presets
3661     LIBO_SHARE_READMES_FOLDER=readmes
3662     if test "$enable_fuzzers" != yes; then
3663         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3664     else
3665         LIBO_SHARE_RESOURCE_FOLDER=resource
3666     fi
3667     LIBO_SHARE_SHELL_FOLDER=program/shell
3668     LIBO_URE_BIN_FOLDER=program
3669     LIBO_URE_ETC_FOLDER=program
3670     LIBO_URE_LIB_FOLDER=program
3671     LIBO_URE_MISC_FOLDER=program
3672     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3674 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3675 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3676 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3677 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3678 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3679 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3680 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3681 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3682 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3683 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3684 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3685 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3686 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3687 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3688 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3689 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3691 # Not all of them needed in config_host.mk, add more if need arises
3692 AC_SUBST(LIBO_BIN_FOLDER)
3693 AC_SUBST(LIBO_ETC_FOLDER)
3694 AC_SUBST(LIBO_LIB_FOLDER)
3695 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3696 AC_SUBST(LIBO_SHARE_FOLDER)
3697 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3698 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3699 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3700 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3701 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3702 AC_SUBST(LIBO_URE_BIN_FOLDER)
3703 AC_SUBST(LIBO_URE_ETC_FOLDER)
3704 AC_SUBST(LIBO_URE_LIB_FOLDER)
3705 AC_SUBST(LIBO_URE_MISC_FOLDER)
3706 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3708 dnl ===================================================================
3709 dnl Windows specific tests and stuff
3710 dnl ===================================================================
3712 reg_get_value()
3714     # Return value: $regvalue
3715     unset regvalue
3717     if test "$build_os" = "wsl"; then
3718         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3719         return
3720     fi
3722     local _regentry="/proc/registry${1}/${2}"
3723     if test -f "$_regentry"; then
3724         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3725         # Registry keys read via /proc/registry* are always \0 terminated!
3726         local _regvalue=$(tr -d '\0' < "$_regentry")
3727         if test $? -eq 0; then
3728             regvalue=$_regvalue
3729         fi
3730     fi
3733 # Get a value from the 32-bit side of the Registry
3734 reg_get_value_32()
3736     reg_get_value "32" "$1"
3739 # Get a value from the 64-bit side of the Registry
3740 reg_get_value_64()
3742     reg_get_value "64" "$1"
3745 case "$host_os" in
3746 cygwin*|wsl*)
3747     COM=MSC
3748     OS=WNT
3749     RTL_OS=Windows
3750     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3751         P_SEP=";"
3752     else
3753         P_SEP=:
3754     fi
3755     case "$host_cpu" in
3756     x86_64)
3757         CPUNAME=X86_64
3758         RTL_ARCH=X86_64
3759         PLATFORMID=windows_x86_64
3760         WINDOWS_X64=1
3761         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3762         WIN_HOST_ARCH="x64"
3763         WIN_MULTI_ARCH="x86"
3764         WIN_HOST_BITS=64
3765         ;;
3766     i*86)
3767         CPUNAME=INTEL
3768         RTL_ARCH=x86
3769         PLATFORMID=windows_x86
3770         WIN_HOST_ARCH="x86"
3771         WIN_HOST_BITS=32
3772         WIN_OTHER_ARCH="x64"
3773         ;;
3774     aarch64)
3775         CPUNAME=AARCH64
3776         RTL_ARCH=AARCH64
3777         PLATFORMID=windows_aarch64
3778         WINDOWS_X64=1
3779         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3780         WIN_HOST_ARCH="arm64"
3781         WIN_HOST_BITS=64
3782         with_ucrt_dir=no
3783         ;;
3784     *)
3785         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3786         ;;
3787     esac
3789     case "$build_cpu" in
3790     x86_64) WIN_BUILD_ARCH="x64" ;;
3791     i*86) WIN_BUILD_ARCH="x86" ;;
3792     aarch64) WIN_BUILD_ARCH="arm64" ;;
3793     *)
3794         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3795         ;;
3796     esac
3798     SCPDEFS="$SCPDEFS -D_MSC_VER"
3799     ;;
3800 esac
3802 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3803 # other-arch won't, but wouldn't break the build (x64 on x86).
3804 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3805     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3809 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3810     # To allow building Windows multi-arch releases without cross-tooling
3811     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3812         cross_compiling="yes"
3813     fi
3816 ENABLE_WASM_STRIP=''
3817 if test "$cross_compiling" = "yes"; then
3818     export CROSS_COMPILING=TRUE
3819     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3820         ENABLE_WASM_STRIP=TRUE
3821     fi
3822 else
3823     CROSS_COMPILING=
3824     BUILD_TYPE="$BUILD_TYPE NATIVE"
3826 AC_SUBST(CROSS_COMPILING)
3827 AC_SUBST(ENABLE_WASM_STRIP)
3829 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3830 # NOTE: must _not_ be used for bundled external libraries!
3831 ISYSTEM=
3832 if test "$GCC" = "yes"; then
3833     AC_MSG_CHECKING( for -isystem )
3834     save_CFLAGS=$CFLAGS
3835     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3836     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3837     CFLAGS=$save_CFLAGS
3838     if test -n "$ISYSTEM"; then
3839         AC_MSG_RESULT(yes)
3840     else
3841         AC_MSG_RESULT(no)
3842     fi
3844 if test -z "$ISYSTEM"; then
3845     # fall back to using -I
3846     ISYSTEM=-I
3848 AC_SUBST(ISYSTEM)
3850 dnl ===================================================================
3851 dnl  Check which Visual Studio compiler is used
3852 dnl ===================================================================
3854 map_vs_year_to_version()
3856     # Return value: $vsversion
3858     unset vsversion
3860     case $1 in
3861     2019)
3862         vsversion=16;;
3863     2022)
3864         vsversion=17;;
3865     *)
3866         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3867     esac
3870 vs_versions_to_check()
3872     # Args: $1 (optional) : versions to check, in the order of preference
3873     # Return value: $vsversions
3875     unset vsversions
3877     if test -n "$1"; then
3878         map_vs_year_to_version "$1"
3879         vsversions=$vsversion
3880     else
3881         # Default version is 2019
3882         vsversions="16"
3883     fi
3886 win_get_env_from_vsvars32bat()
3888     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3889     # Also seems to be located in another directory under the same name: vsvars32.bat
3890     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3891     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3892     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3893     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3894     local result
3895     if test "$build_os" = "wsl"; then
3896         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3897     else
3898         chmod +x $WRAPPERBATCHFILEPATH
3899         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3900     fi
3901     rm -f $WRAPPERBATCHFILEPATH
3902     printf '%s' "$result"
3905 find_ucrt()
3907     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3908     if test -n "$regvalue"; then
3909         PathFormat "$regvalue"
3910         UCRTSDKDIR=$formatted_path_unix
3911         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3912         UCRTVERSION=$regvalue
3913         # Rest if not exist
3914         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3915           UCRTSDKDIR=
3916         fi
3917     fi
3918     if test -z "$UCRTSDKDIR"; then
3919         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3920         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3921         if test -f "$ide_env_file"; then
3922             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3923             UCRTSDKDIR=$formatted_path
3924             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3925             dnl Hack needed at least by tml:
3926             if test "$UCRTVERSION" = 10.0.15063.0 \
3927                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3928                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3929             then
3930                 UCRTVERSION=10.0.14393.0
3931             fi
3932         else
3933           AC_MSG_ERROR([No UCRT found])
3934         fi
3935     fi
3938 find_msvc()
3940     # Find Visual C++
3941     # Args: $1 (optional) : The VS version year
3942     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3944     unset vctest vctoolset vcnumwithdot vcbuildnumber
3946     vs_versions_to_check "$1"
3947     if test "$build_os" = wsl; then
3948         vswhere="$PROGRAMFILESX86"
3949     else
3950         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3951     fi
3952     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3953     PathFormat "$vswhere"
3954     vswhere=$formatted_path_unix
3955     for ver in $vsversions; do
3956         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3957         if test -z "$vswhereoutput"; then
3958             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3959         fi
3960         # Fall back to all MS products (this includes VC++ Build Tools)
3961         if ! test -n "$vswhereoutput"; then
3962             AC_MSG_CHECKING([VC++ Build Tools and similar])
3963             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3964         fi
3965         if test -n "$vswhereoutput"; then
3966             PathFormat "$vswhereoutput"
3967             vctest=$formatted_path_unix
3968             break
3969         fi
3970     done
3972     if test -n "$vctest"; then
3973         vcnumwithdot="$ver.0"
3974         case "$vcnumwithdot" in
3975         16.0)
3976             vcyear=2019
3977             vctoolset=v142
3978             ;;
3979         17.0)
3980             vcyear=2022
3981             vctoolset=v143
3982             ;;
3983         esac
3984         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3986     fi
3989 test_cl_exe()
3991     AC_MSG_CHECKING([$1 compiler])
3993     CL_EXE_PATH="$2/cl.exe"
3995     if test ! -f "$CL_EXE_PATH"; then
3996         if test "$1" = "multi-arch"; then
3997             AC_MSG_WARN([no compiler (cl.exe) in $2])
3998             return 1
3999         else
4000             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4001         fi
4002     fi
4004     dnl ===========================================================
4005     dnl  Check for the corresponding mspdb*.dll
4006     dnl ===========================================================
4008     # MSVC 15.0 has libraries from 14.0?
4009     mspdbnum="140"
4011     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4012         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4013     fi
4015     # The compiles has to find its shared libraries
4016     OLD_PATH="$PATH"
4017     TEMP_PATH=`cygpath -d "$2"`
4018     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4020     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4021         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4022     fi
4024     PATH="$OLD_PATH"
4026     AC_MSG_RESULT([$CL_EXE_PATH])
4029 SOLARINC=
4030 MSBUILD_PATH=
4031 DEVENV=
4032 if test "$_os" = "WINNT"; then
4033     AC_MSG_CHECKING([Visual C++])
4034     find_msvc "$with_visual_studio"
4035     if test -z "$vctest"; then
4036         if test -n "$with_visual_studio"; then
4037             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4038         else
4039             AC_MSG_ERROR([no Visual Studio installation found])
4040         fi
4041     fi
4042     AC_MSG_RESULT([])
4044     VC_PRODUCT_DIR="$vctest/VC"
4045     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4047     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4048     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4049         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4050         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4051         if test $? -ne 0; then
4052             WIN_MULTI_ARCH=""
4053             WIN_OTHER_ARCH=""
4054         fi
4055     fi
4057     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4058         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4059         test_cl_exe "build" "$MSVC_BUILD_PATH"
4060     fi
4062     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4063         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4064         test_cl_exe "host" "$MSVC_HOST_PATH"
4065     else
4066         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4067     fi
4069     AC_MSG_CHECKING([for short pathname of VC product directory])
4070     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4071     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4073     UCRTSDKDIR=
4074     UCRTVERSION=
4076     AC_MSG_CHECKING([for UCRT location])
4077     find_ucrt
4078     # find_ucrt errors out if it doesn't find it
4079     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4080     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4081     ucrtincpath_formatted=$formatted_path
4082     # SOLARINC is used for external modules and must be set too.
4083     # And no, it's not sufficient to set SOLARINC only, as configure
4084     # itself doesn't honour it.
4085     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4086     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4087     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4088     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4090     AC_SUBST(UCRTSDKDIR)
4091     AC_SUBST(UCRTVERSION)
4093     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4094     # Find the proper version of MSBuild.exe to use based on the VS version
4095     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4096     if test -z "$regvalue" ; then
4097         if test "$WIN_BUILD_ARCH" != "x64"; then
4098             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4099         else
4100             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4101         fi
4102     fi
4103     if test -d "$regvalue" ; then
4104         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4105         AC_MSG_RESULT([$regvalue])
4106     else
4107         AC_MSG_ERROR([MSBuild.exe location not found])
4108     fi
4110     # Find the version of devenv.exe
4111     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4112     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4113     DEVENV_unix=$(cygpath -u "$DEVENV")
4114     if test ! -e "$DEVENV_unix"; then
4115         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4116     fi
4118     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4119     dnl needed when building CLR code:
4120     if test -z "$MSVC_CXX"; then
4121         # This gives us a posix path with 8.3 filename restrictions
4122         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4123     fi
4125     if test -z "$CC"; then
4126         CC=$MSVC_CXX
4127         CC_BASE=`first_arg_basename "$CC"`
4128     fi
4129     if test -z "$CXX"; then
4130         CXX=$MSVC_CXX
4131         CXX_BASE=`first_arg_basename "$CXX"`
4132     fi
4134     if test -n "$CC"; then
4135         # Remove /cl.exe from CC case insensitive
4136         AC_MSG_NOTICE([found Visual C++ $vcyear])
4138         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4139         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4141         PathFormat "$COMPATH"
4142         COMPATH=`win_short_path_for_make "$formatted_path"`
4144         VCVER=$vcnumwithdot
4145         VCTOOLSET=$vctoolset
4147         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4148         # are always "better", we list them in reverse chronological order.
4150         case "$vcnumwithdot" in
4151         16.0 | 17.0)
4152             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4153             ;;
4154         esac
4156         # The expectation is that --with-windows-sdk should not need to be used
4157         if test -n "$with_windows_sdk"; then
4158             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4159             *" "$with_windows_sdk" "*)
4160                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4161                 ;;
4162             *)
4163                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4164                 ;;
4165             esac
4166         fi
4168         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4169         ac_objext=obj
4170         ac_exeext=exe
4172     else
4173         AC_MSG_ERROR([Visual C++ not found after all, huh])
4174     fi
4176     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4177     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4178         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4179         // between Visual Studio versions and _MSC_VER:
4180         #if _MSC_VER < 1925
4181         #error
4182         #endif
4183     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4185     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4186     # version of the Explorer extension (and maybe other small
4187     # bits, too) needed when installing a 32-bit LibreOffice on a
4188     # 64-bit OS. The 64-bit Explorer extension is a feature that
4189     # has been present since long in OOo. Don't confuse it with
4190     # building LibreOffice itself as 64-bit code.
4192     BUILD_X64=
4193     CXX_X64_BINARY=
4195     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4196         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4197         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4198              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4199         then
4200             BUILD_X64=TRUE
4201             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4202             AC_MSG_RESULT([found])
4203         else
4204             AC_MSG_RESULT([not found])
4205             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4206         fi
4207     elif test "$WIN_HOST_ARCH" = "x64"; then
4208         CXX_X64_BINARY=$CXX
4209     fi
4210     AC_SUBST(BUILD_X64)
4212     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4213     AC_SUBST(CXX_X64_BINARY)
4215     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4216     # needed to support TWAIN scan on both 32- and 64-bit systems
4218     case "$WIN_HOST_ARCH" in
4219     x64)
4220         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4221         if test -n "$CXX_X86_BINARY"; then
4222             BUILD_X86=TRUE
4223             AC_MSG_RESULT([preset])
4224         elif test -n "$WIN_MULTI_ARCH"; then
4225             BUILD_X86=TRUE
4226             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4227             CXX_X86_BINARY+=" /arch:SSE"
4228             AC_MSG_RESULT([found])
4229         else
4230             AC_MSG_RESULT([not found])
4231             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4232         fi
4233         ;;
4234     x86)
4235         BUILD_X86=TRUE
4236         CXX_X86_BINARY=$MSVC_CXX
4237         ;;
4238     esac
4239     AC_SUBST(BUILD_X86)
4240     AC_SUBST(CXX_X86_BINARY)
4242 AC_SUBST(VCVER)
4243 AC_SUBST(VCTOOLSET)
4244 AC_SUBST(DEVENV)
4245 AC_SUBST(MSVC_CXX)
4247 COM_IS_CLANG=
4248 AC_MSG_CHECKING([whether the compiler is actually Clang])
4249 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4250     #ifndef __clang__
4251     you lose
4252     #endif
4253     int foo=42;
4254     ]])],
4255     [AC_MSG_RESULT([yes])
4256      COM_IS_CLANG=TRUE],
4257     [AC_MSG_RESULT([no])])
4258 AC_SUBST(COM_IS_CLANG)
4260 CLANGVER=
4261 if test "$COM_IS_CLANG" = TRUE; then
4262     AC_MSG_CHECKING([whether Clang is new enough])
4263     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4264         #if !defined __apple_build_version__
4265         #error
4266         #endif
4267         ]])],
4268         [my_apple_clang=yes],[my_apple_clang=])
4269     if test "$my_apple_clang" = yes; then
4270         AC_MSG_RESULT([assumed yes (Apple Clang)])
4271     elif test "$_os" = Emscripten; then
4272         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4273     else
4274         if test "$_os" = WINNT; then
4275             dnl In which case, assume clang-cl:
4276             my_args="/EP /TC"
4277         else
4278             my_args="-E -P"
4279         fi
4280         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4281         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4282         CLANGVER=`echo $clang_version \
4283             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4284         if test "$CLANGVER" -ge 50002; then
4285             AC_MSG_RESULT([yes ($clang_version)])
4286         else
4287             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4288         fi
4289         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4290         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4291     fi
4294 SHOWINCLUDES_PREFIX=
4295 if test "$_os" = WINNT; then
4296     dnl We need to guess the prefix of the -showIncludes output, it can be
4297     dnl localized
4298     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4299     echo "#include <stdlib.h>" > conftest.c
4300     SHOWINCLUDES_PREFIX=`$CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4301         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4302     rm -f conftest.c conftest.obj
4303     if test -z "$SHOWINCLUDES_PREFIX"; then
4304         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4305     else
4306         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4307     fi
4309 AC_SUBST(SHOWINCLUDES_PREFIX)
4312 # prefix C with ccache if needed
4314 if test "$CCACHE" != ""; then
4315     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4317     AC_LANG_PUSH([C])
4318     save_CFLAGS=$CFLAGS
4319     CFLAGS="$CFLAGS --ccache-skip -O2"
4320     # msvc does not fail on unknown options, check stdout
4321     if test "$COM" = MSC; then
4322         CFLAGS="$CFLAGS -nologo"
4323     fi
4324     save_ac_c_werror_flag=$ac_c_werror_flag
4325     ac_c_werror_flag=yes
4326     dnl an empty program will do, we're checking the compiler flags
4327     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4328                       [use_ccache=yes], [use_ccache=no])
4329     CFLAGS=$save_CFLAGS
4330     ac_c_werror_flag=$save_ac_c_werror_flag
4331     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4332         AC_MSG_RESULT([yes])
4333     else
4334         CC="$CCACHE $CC"
4335         CC_BASE="ccache $CC_BASE"
4336         AC_MSG_RESULT([no])
4337     fi
4338     AC_LANG_POP([C])
4341 # ===================================================================
4342 # check various GCC options that Clang does not support now but maybe
4343 # will somewhen in the future, check them even for GCC, so that the
4344 # flags are set
4345 # ===================================================================
4347 HAVE_GCC_GGDB2=
4348 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4349     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4350     save_CFLAGS=$CFLAGS
4351     CFLAGS="$CFLAGS -Werror -ggdb2"
4352     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4353     CFLAGS=$save_CFLAGS
4354     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4355         AC_MSG_RESULT([yes])
4356     else
4357         AC_MSG_RESULT([no])
4358     fi
4360     if test "$host_cpu" = "m68k"; then
4361         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4362         save_CFLAGS=$CFLAGS
4363         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4364         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4365         CFLAGS=$save_CFLAGS
4366         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4367             AC_MSG_RESULT([yes])
4368         else
4369             AC_MSG_ERROR([no])
4370         fi
4371     fi
4373 AC_SUBST(HAVE_GCC_GGDB2)
4375 dnl ===================================================================
4376 dnl  Test the gcc version
4377 dnl ===================================================================
4378 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4379     AC_MSG_CHECKING([the GCC version])
4380     _gcc_version=`$CC -dumpfullversion`
4381     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4382         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4383     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4385     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4387     if test "$gcc_full_version" -lt 70000; then
4388         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4389     fi
4390 else
4391     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4392     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4393     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4394     # (which reports itself as GCC 4.2.1).
4395     GCC_VERSION=
4397 AC_SUBST(GCC_VERSION)
4399 dnl Set the ENABLE_DBGUTIL variable
4400 dnl ===================================================================
4401 AC_MSG_CHECKING([whether to build with additional debug utilities])
4402 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4403     ENABLE_DBGUTIL="TRUE"
4404     # this is an extra var so it can have different default on different MSVC
4405     # versions (in case there are version specific problems with it)
4406     MSVC_USE_DEBUG_RUNTIME="TRUE"
4408     AC_MSG_RESULT([yes])
4409     # cppunit and graphite expose STL in public headers
4410     if test "$with_system_cppunit" = "yes"; then
4411         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4412     else
4413         with_system_cppunit=no
4414     fi
4415     if test "$with_system_graphite" = "yes"; then
4416         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4417     else
4418         with_system_graphite=no
4419     fi
4420     if test "$with_system_orcus" = "yes"; then
4421         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4422     else
4423         with_system_orcus=no
4424     fi
4425     if test "$with_system_libcmis" = "yes"; then
4426         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4427     else
4428         with_system_libcmis=no
4429     fi
4430     if test "$with_system_hunspell" = "yes"; then
4431         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4432     else
4433         with_system_hunspell=no
4434     fi
4435     if test "$with_system_gpgmepp" = "yes"; then
4436         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4437     else
4438         with_system_gpgmepp=no
4439     fi
4440     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4441     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4442     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4443     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4444     # of those two is using the system variant:
4445     if test "$with_system_libnumbertext" = "yes"; then
4446         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4447     else
4448         with_system_libnumbertext=no
4449     fi
4450     if test "$with_system_libwps" = "yes"; then
4451         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4452     else
4453         with_system_libwps=no
4454     fi
4455 else
4456     ENABLE_DBGUTIL=""
4457     MSVC_USE_DEBUG_RUNTIME=""
4458     AC_MSG_RESULT([no])
4460 AC_SUBST(ENABLE_DBGUTIL)
4461 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4463 dnl Set the ENABLE_DEBUG variable.
4464 dnl ===================================================================
4465 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4466     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4468 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4469     if test -z "$libo_fuzzed_enable_debug"; then
4470         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4471     else
4472         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4473         enable_debug=yes
4474     fi
4477 AC_MSG_CHECKING([whether to do a debug build])
4478 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4479     ENABLE_DEBUG="TRUE"
4480     if test -n "$ENABLE_DBGUTIL" ; then
4481         AC_MSG_RESULT([yes (dbgutil)])
4482     else
4483         AC_MSG_RESULT([yes])
4484     fi
4485 else
4486     ENABLE_DEBUG=""
4487     AC_MSG_RESULT([no])
4489 AC_SUBST(ENABLE_DEBUG)
4491 dnl ===================================================================
4492 dnl Select the linker to use (gold/lld/ld.bfd).
4493 dnl This is done only after compiler checks (need to know if Clang is
4494 dnl used, for different defaults) and after checking if a debug build
4495 dnl is wanted (non-debug builds get the default linker if not explicitly
4496 dnl specified otherwise).
4497 dnl All checks for linker features/options should come after this.
4498 dnl ===================================================================
4499 check_use_ld()
4501     use_ld=-fuse-ld=${1%%:*}
4502     use_ld_path=${1#*:}
4503     if test "$use_ld_path" != "$1"; then
4504         if test "$COM_IS_CLANG" = TRUE; then
4505             if test "$CLANGVER" -ge 120000; then
4506                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4507             else
4508                 use_ld="-fuse-ld=${use_ld_path}"
4509             fi
4510         else
4511             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4512             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4513             # pickup the alternative linker, when called by libtool for linking.
4514             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4515             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4516         fi
4517     fi
4518     use_ld_fail_if_error=$2
4519     use_ld_ok=
4520     AC_MSG_CHECKING([for $use_ld linker support])
4521     use_ld_ldflags_save="$LDFLAGS"
4522     LDFLAGS="$LDFLAGS $use_ld"
4523     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4524 #include <stdio.h>
4525         ],[
4526 printf ("hello world\n");
4527         ])], USE_LD=$use_ld, [])
4528     if test -n "$USE_LD"; then
4529         AC_MSG_RESULT( yes )
4530         use_ld_ok=yes
4531     else
4532         if test -n "$use_ld_fail_if_error"; then
4533             AC_MSG_ERROR( no )
4534         else
4535             AC_MSG_RESULT( no )
4536         fi
4537     fi
4538     if test -n "$use_ld_ok"; then
4539         dnl keep the value of LDFLAGS
4540         return 0
4541     fi
4542     LDFLAGS="$use_ld_ldflags_save"
4543     return 1
4545 USE_LD=
4546 if test "$enable_ld" != "no"; then
4547     if test "$GCC" = "yes"; then
4548         if test -n "$enable_ld"; then
4549             check_use_ld "$enable_ld" fail_if_error
4550         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4551             dnl non-debug builds default to the default linker
4552             true
4553         elif test -n "$COM_IS_CLANG"; then
4554             check_use_ld lld
4555             if test $? -ne 0; then
4556                 check_use_ld gold
4557             fi
4558         else
4559             # For gcc first try gold, new versions also support lld.
4560             check_use_ld gold
4561             if test $? -ne 0; then
4562                 check_use_ld lld
4563             fi
4564         fi
4565         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4566         rm conftest.out
4567         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4568         if test -z "$ld_used"; then
4569             ld_used="unknown"
4570         fi
4571         AC_MSG_CHECKING([for linker that is used])
4572         AC_MSG_RESULT([$ld_used])
4573         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4574             if echo "$ld_used" | grep -q "^GNU ld"; then
4575                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4576                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4577             fi
4578         fi
4579     else
4580         if test "$enable_ld" = "yes"; then
4581             AC_MSG_ERROR([--enable-ld not supported])
4582         fi
4583     fi
4585 AC_SUBST(USE_LD)
4587 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4588 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4589     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4590     bsymbolic_functions_ldflags_save=$LDFLAGS
4591     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4592     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4593 #include <stdio.h>
4594         ],[
4595 printf ("hello world\n");
4596         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4597     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4598         AC_MSG_RESULT( found )
4599     else
4600         AC_MSG_RESULT( not found )
4601     fi
4602     LDFLAGS=$bsymbolic_functions_ldflags_save
4604 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4606 LD_GC_SECTIONS=
4607 if test "$GCC" = "yes"; then
4608     for flag in "--gc-sections" "-dead_strip"; do
4609         AC_MSG_CHECKING([for $flag linker support])
4610         ldflags_save=$LDFLAGS
4611         LDFLAGS="$LDFLAGS -Wl,$flag"
4612         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4613 #include <stdio.h>
4614             ],[
4615 printf ("hello world\n");
4616             ])],[
4617             LD_GC_SECTIONS="-Wl,$flag"
4618             AC_MSG_RESULT( found )
4619             ], [
4620             AC_MSG_RESULT( not found )
4621             ])
4622         LDFLAGS=$ldflags_save
4623         if test -n "$LD_GC_SECTIONS"; then
4624             break
4625         fi
4626     done
4628 AC_SUBST(LD_GC_SECTIONS)
4630 HAVE_GSPLIT_DWARF=
4631 if test "$enable_split_debug" != no; then
4632     use_split_debug=
4633     if test -n "$ENABLE_LTO"; then
4634         true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4635     elif test "$enable_split_debug" = yes; then
4636         use_split_debug=1
4637     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4638     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4639         use_split_debug=1
4640     fi
4641     if test -n "$use_split_debug"; then
4642         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4643         save_CFLAGS=$CFLAGS
4644         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4645         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4646         CFLAGS=$save_CFLAGS
4647         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4648             AC_MSG_RESULT([yes])
4649         else
4650             if test "$enable_split_debug" = yes; then
4651                 AC_MSG_ERROR([no])
4652             else
4653                 AC_MSG_RESULT([no])
4654             fi
4655         fi
4656     fi
4657     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4658         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4659         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4660     fi
4662 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4664 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4665 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4666 save_CFLAGS=$CFLAGS
4667 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4668 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4669 CFLAGS=$save_CFLAGS
4670 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4671     AC_MSG_RESULT([yes])
4672 else
4673     AC_MSG_RESULT([no])
4675 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4677 ENABLE_GDB_INDEX=
4678 if test "$enable_gdb_index" != "no"; then
4679     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4680     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4681         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4682         save_CFLAGS=$CFLAGS
4683         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4684         have_ggnu_pubnames=
4685         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4686         if test "$have_ggnu_pubnames" != "TRUE"; then
4687             if test "$enable_gdb_index" = "yes"; then
4688                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4689             else
4690                 AC_MSG_RESULT( no )
4691             fi
4692         else
4693             AC_MSG_RESULT( yes )
4694             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4695             ldflags_save=$LDFLAGS
4696             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4697             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4698 #include <stdio.h>
4699                 ],[
4700 printf ("hello world\n");
4701                 ])], ENABLE_GDB_INDEX=TRUE, [])
4702             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4703                 AC_MSG_RESULT( yes )
4704             else
4705                 if test "$enable_gdb_index" = "yes"; then
4706                     AC_MSG_ERROR( no )
4707                 else
4708                     AC_MSG_RESULT( no )
4709                 fi
4710             fi
4711             LDFLAGS=$ldflags_save
4712         fi
4713         CFLAGS=$save_CFLAGS
4714         fi
4715     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4716         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4717         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4718     fi
4720 AC_SUBST(ENABLE_GDB_INDEX)
4722 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4723     enable_sal_log=yes
4725 if test "$enable_sal_log" = yes; then
4726     ENABLE_SAL_LOG=TRUE
4728 AC_SUBST(ENABLE_SAL_LOG)
4730 dnl Check for enable symbols option
4731 dnl ===================================================================
4732 AC_MSG_CHECKING([whether to generate debug information])
4733 if test -z "$enable_symbols"; then
4734     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4735         enable_symbols=yes
4736     else
4737         enable_symbols=no
4738     fi
4740 if test "$enable_symbols" = yes; then
4741     ENABLE_SYMBOLS_FOR=all
4742     AC_MSG_RESULT([yes])
4743 elif test "$enable_symbols" = no; then
4744     ENABLE_SYMBOLS_FOR=
4745     AC_MSG_RESULT([no])
4746 else
4747     # Selective debuginfo.
4748     ENABLE_SYMBOLS_FOR="$enable_symbols"
4749     AC_MSG_RESULT([for "$enable_symbols"])
4751 AC_SUBST(ENABLE_SYMBOLS_FOR)
4753 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4754     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4755     AC_MSG_CHECKING([whether enough memory is available for linking])
4756     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4757     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4758     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4759         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4760     else
4761         AC_MSG_RESULT([yes])
4762     fi
4765 ENABLE_OPTIMIZED=
4766 ENABLE_OPTIMIZED_DEBUG=
4767 AC_MSG_CHECKING([whether to compile with optimization flags])
4768 if test -z "$enable_optimized"; then
4769     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4770         enable_optimized=no
4771     else
4772         enable_optimized=yes
4773     fi
4775 if test "$enable_optimized" = yes; then
4776     ENABLE_OPTIMIZED=TRUE
4777     AC_MSG_RESULT([yes])
4778 elif test "$enable_optimized" = debug; then
4779     ENABLE_OPTIMIZED_DEBUG=TRUE
4780     AC_MSG_RESULT([yes (debug)])
4781     HAVE_GCC_OG=
4782     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4783         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4784         save_CFLAGS=$CFLAGS
4785         CFLAGS="$CFLAGS -Werror -Og"
4786         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4787         CFLAGS=$save_CFLAGS
4788         if test "$HAVE_GCC_OG" = "TRUE"; then
4789             AC_MSG_RESULT([yes])
4790         else
4791             AC_MSG_RESULT([no])
4792         fi
4793     fi
4794     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4795         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4796     fi
4797 else
4798     AC_MSG_RESULT([no])
4800 AC_SUBST(ENABLE_OPTIMIZED)
4801 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4804 # determine CPUNAME, OS, ...
4806 case "$host_os" in
4808 aix*)
4809     COM=GCC
4810     CPUNAME=POWERPC
4811     OS=AIX
4812     RTL_OS=AIX
4813     RTL_ARCH=PowerPC
4814     PLATFORMID=aix_powerpc
4815     P_SEP=:
4816     ;;
4818 cygwin*|wsl*)
4819     # Already handled
4820     ;;
4822 darwin*|macos*)
4823     COM=GCC
4824     OS=MACOSX
4825     RTL_OS=MacOSX
4826     P_SEP=:
4828     case "$host_cpu" in
4829     aarch64|arm64)
4830         if test "$enable_ios_simulator" = "yes"; then
4831             OS=iOS
4832         else
4833             CPUNAME=AARCH64
4834             RTL_ARCH=AARCH64
4835             PLATFORMID=macosx_aarch64
4836         fi
4837         ;;
4838     x86_64)
4839         if test "$enable_ios_simulator" = "yes"; then
4840             OS=iOS
4841         fi
4842         CPUNAME=X86_64
4843         RTL_ARCH=X86_64
4844         PLATFORMID=macosx_x86_64
4845         ;;
4846     *)
4847         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4848         ;;
4849     esac
4850     ;;
4852 ios*)
4853     COM=GCC
4854     OS=iOS
4855     RTL_OS=iOS
4856     P_SEP=:
4858     case "$host_cpu" in
4859     aarch64|arm64)
4860         if test "$enable_ios_simulator" = "yes"; then
4861             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4862         fi
4863         ;;
4864     *)
4865         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4866         ;;
4867     esac
4868     CPUNAME=AARCH64
4869     RTL_ARCH=AARCH64
4870     PLATFORMID=ios_arm64
4871     ;;
4873 dragonfly*)
4874     COM=GCC
4875     OS=DRAGONFLY
4876     RTL_OS=DragonFly
4877     P_SEP=:
4879     case "$host_cpu" in
4880     i*86)
4881         CPUNAME=INTEL
4882         RTL_ARCH=x86
4883         PLATFORMID=dragonfly_x86
4884         ;;
4885     x86_64)
4886         CPUNAME=X86_64
4887         RTL_ARCH=X86_64
4888         PLATFORMID=dragonfly_x86_64
4889         ;;
4890     *)
4891         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4892         ;;
4893     esac
4894     ;;
4896 freebsd*)
4897     COM=GCC
4898     RTL_OS=FreeBSD
4899     OS=FREEBSD
4900     P_SEP=:
4902     case "$host_cpu" in
4903     aarch64)
4904         CPUNAME=AARCH64
4905         PLATFORMID=freebsd_aarch64
4906         RTL_ARCH=AARCH64
4907         ;;
4908     i*86)
4909         CPUNAME=INTEL
4910         RTL_ARCH=x86
4911         PLATFORMID=freebsd_x86
4912         ;;
4913     x86_64|amd64)
4914         CPUNAME=X86_64
4915         RTL_ARCH=X86_64
4916         PLATFORMID=freebsd_x86_64
4917         ;;
4918     powerpc64)
4919         CPUNAME=POWERPC64
4920         RTL_ARCH=PowerPC_64
4921         PLATFORMID=freebsd_powerpc64
4922         ;;
4923     powerpc|powerpcspe)
4924         CPUNAME=POWERPC
4925         RTL_ARCH=PowerPC
4926         PLATFORMID=freebsd_powerpc
4927         ;;
4928     *)
4929         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4930         ;;
4931     esac
4932     ;;
4934 haiku*)
4935     COM=GCC
4936     GUIBASE=haiku
4937     RTL_OS=Haiku
4938     OS=HAIKU
4939     P_SEP=:
4941     case "$host_cpu" in
4942     i*86)
4943         CPUNAME=INTEL
4944         RTL_ARCH=x86
4945         PLATFORMID=haiku_x86
4946         ;;
4947     x86_64|amd64)
4948         CPUNAME=X86_64
4949         RTL_ARCH=X86_64
4950         PLATFORMID=haiku_x86_64
4951         ;;
4952     *)
4953         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4954         ;;
4955     esac
4956     ;;
4958 kfreebsd*)
4959     COM=GCC
4960     OS=LINUX
4961     RTL_OS=kFreeBSD
4962     P_SEP=:
4964     case "$host_cpu" in
4966     i*86)
4967         CPUNAME=INTEL
4968         RTL_ARCH=x86
4969         PLATFORMID=kfreebsd_x86
4970         ;;
4971     x86_64)
4972         CPUNAME=X86_64
4973         RTL_ARCH=X86_64
4974         PLATFORMID=kfreebsd_x86_64
4975         ;;
4976     *)
4977         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4978         ;;
4979     esac
4980     ;;
4982 linux-gnu*|linux-musl*)
4983     COM=GCC
4984     OS=LINUX
4985     RTL_OS=Linux
4986     P_SEP=:
4988     case "$host_cpu" in
4990     aarch64)
4991         CPUNAME=AARCH64
4992         PLATFORMID=linux_aarch64
4993         RTL_ARCH=AARCH64
4994         EPM_FLAGS="-a arm64"
4995         ;;
4996     alpha)
4997         CPUNAME=AXP
4998         RTL_ARCH=ALPHA
4999         PLATFORMID=linux_alpha
5000         ;;
5001     arm*)
5002         CPUNAME=ARM
5003         EPM_FLAGS="-a arm"
5004         RTL_ARCH=ARM_EABI
5005         PLATFORMID=linux_arm_eabi
5006         case "$host_cpu" in
5007         arm*-linux)
5008             RTL_ARCH=ARM_OABI
5009             PLATFORMID=linux_arm_oabi
5010             ;;
5011         esac
5012         ;;
5013     hppa)
5014         CPUNAME=HPPA
5015         RTL_ARCH=HPPA
5016         EPM_FLAGS="-a hppa"
5017         PLATFORMID=linux_hppa
5018         ;;
5019     i*86)
5020         CPUNAME=INTEL
5021         RTL_ARCH=x86
5022         PLATFORMID=linux_x86
5023         ;;
5024     ia64)
5025         CPUNAME=IA64
5026         RTL_ARCH=IA64
5027         PLATFORMID=linux_ia64
5028         ;;
5029     mips)
5030         CPUNAME=GODSON
5031         RTL_ARCH=MIPS_EB
5032         EPM_FLAGS="-a mips"
5033         PLATFORMID=linux_mips_eb
5034         ;;
5035     mips64)
5036         CPUNAME=GODSON64
5037         RTL_ARCH=MIPS64_EB
5038         EPM_FLAGS="-a mips64"
5039         PLATFORMID=linux_mips64_eb
5040         ;;
5041     mips64el)
5042         CPUNAME=GODSON64
5043         RTL_ARCH=MIPS64_EL
5044         EPM_FLAGS="-a mips64el"
5045         PLATFORMID=linux_mips64_el
5046         ;;
5047     mipsel)
5048         CPUNAME=GODSON
5049         RTL_ARCH=MIPS_EL
5050         EPM_FLAGS="-a mipsel"
5051         PLATFORMID=linux_mips_el
5052         ;;
5053     m68k)
5054         CPUNAME=M68K
5055         RTL_ARCH=M68K
5056         PLATFORMID=linux_m68k
5057         ;;
5058     powerpc)
5059         CPUNAME=POWERPC
5060         RTL_ARCH=PowerPC
5061         PLATFORMID=linux_powerpc
5062         ;;
5063     powerpc64)
5064         CPUNAME=POWERPC64
5065         RTL_ARCH=PowerPC_64
5066         PLATFORMID=linux_powerpc64
5067         ;;
5068     powerpc64le)
5069         CPUNAME=POWERPC64
5070         RTL_ARCH=PowerPC_64_LE
5071         PLATFORMID=linux_powerpc64_le
5072         ;;
5073     sparc)
5074         CPUNAME=SPARC
5075         RTL_ARCH=SPARC
5076         PLATFORMID=linux_sparc
5077         ;;
5078     sparc64)
5079         CPUNAME=SPARC64
5080         RTL_ARCH=SPARC64
5081         PLATFORMID=linux_sparc64
5082         ;;
5083     s390)
5084         CPUNAME=S390
5085         RTL_ARCH=S390
5086         PLATFORMID=linux_s390
5087         ;;
5088     s390x)
5089         CPUNAME=S390X
5090         RTL_ARCH=S390x
5091         PLATFORMID=linux_s390x
5092         ;;
5093     x86_64)
5094         CPUNAME=X86_64
5095         RTL_ARCH=X86_64
5096         PLATFORMID=linux_x86_64
5097         ;;
5098     *)
5099         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5100         ;;
5101     esac
5102     ;;
5104 linux-android*)
5105     COM=GCC
5106     OS=ANDROID
5107     RTL_OS=Android
5108     P_SEP=:
5110     case "$host_cpu" in
5112     arm|armel)
5113         CPUNAME=ARM
5114         RTL_ARCH=ARM_EABI
5115         PLATFORMID=android_arm_eabi
5116         ;;
5117     aarch64)
5118         CPUNAME=AARCH64
5119         RTL_ARCH=AARCH64
5120         PLATFORMID=android_aarch64
5121         ;;
5122     i*86)
5123         CPUNAME=INTEL
5124         RTL_ARCH=x86
5125         PLATFORMID=android_x86
5126         ;;
5127     x86_64)
5128         CPUNAME=X86_64
5129         RTL_ARCH=X86_64
5130         PLATFORMID=android_x86_64
5131         ;;
5132     *)
5133         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5134         ;;
5135     esac
5136     ;;
5138 *netbsd*)
5139     COM=GCC
5140     OS=NETBSD
5141     RTL_OS=NetBSD
5142     P_SEP=:
5144     case "$host_cpu" in
5145     i*86)
5146         CPUNAME=INTEL
5147         RTL_ARCH=x86
5148         PLATFORMID=netbsd_x86
5149         ;;
5150     powerpc)
5151         CPUNAME=POWERPC
5152         RTL_ARCH=PowerPC
5153         PLATFORMID=netbsd_powerpc
5154         ;;
5155     sparc)
5156         CPUNAME=SPARC
5157         RTL_ARCH=SPARC
5158         PLATFORMID=netbsd_sparc
5159         ;;
5160     x86_64)
5161         CPUNAME=X86_64
5162         RTL_ARCH=X86_64
5163         PLATFORMID=netbsd_x86_64
5164         ;;
5165     *)
5166         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5167         ;;
5168     esac
5169     ;;
5171 openbsd*)
5172     COM=GCC
5173     OS=OPENBSD
5174     RTL_OS=OpenBSD
5175     P_SEP=:
5177     case "$host_cpu" in
5178     i*86)
5179         CPUNAME=INTEL
5180         RTL_ARCH=x86
5181         PLATFORMID=openbsd_x86
5182         ;;
5183     x86_64)
5184         CPUNAME=X86_64
5185         RTL_ARCH=X86_64
5186         PLATFORMID=openbsd_x86_64
5187         ;;
5188     *)
5189         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5190         ;;
5191     esac
5192     SOLARINC="$SOLARINC -I/usr/local/include"
5193     ;;
5195 solaris*)
5196     COM=GCC
5197     OS=SOLARIS
5198     RTL_OS=Solaris
5199     P_SEP=:
5201     case "$host_cpu" in
5202     i*86)
5203         CPUNAME=INTEL
5204         RTL_ARCH=x86
5205         PLATFORMID=solaris_x86
5206         ;;
5207     sparc)
5208         CPUNAME=SPARC
5209         RTL_ARCH=SPARC
5210         PLATFORMID=solaris_sparc
5211         ;;
5212     sparc64)
5213         CPUNAME=SPARC64
5214         RTL_ARCH=SPARC64
5215         PLATFORMID=solaris_sparc64
5216         ;;
5217     *)
5218         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5219         ;;
5220     esac
5221     SOLARINC="$SOLARINC -I/usr/local/include"
5222     ;;
5224 emscripten*)
5225     COM=GCC
5226     OS=EMSCRIPTEN
5227     RTL_OS=Emscripten
5228     P_SEP=:
5230     case "$host_cpu" in
5231     wasm32|wasm64)
5232         ;;
5233     *)
5234         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5235         ;;
5236     esac
5237     CPUNAME=INTEL
5238     RTL_ARCH=x86
5239     PLATFORMID=linux_x86
5240     ;;
5243     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5244     ;;
5245 esac
5247 DISABLE_GUI=""
5248 if test "$enable_gui" = "no"; then
5249     if test "$using_x11" != yes; then
5250         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5251     fi
5252     USING_X11=
5253     DISABLE_GUI=TRUE
5254     test_epoxy=no
5255 else
5256     AC_DEFINE(HAVE_FEATURE_UI)
5258 AC_SUBST(DISABLE_GUI)
5260 if test "$with_x" = "no"; then
5261     USING_X11=
5264 if test "$using_x11" = yes; then
5265     if test "$USING_X11" = TRUE; then
5266         AC_DEFINE(USING_X11)
5267     else
5268         disable_x11_tests
5269     fi
5270 else
5271     if test "$USING_X11" = TRUE; then
5272         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5273     fi
5276 WORKDIR="${BUILDDIR}/workdir"
5277 INSTDIR="${BUILDDIR}/instdir"
5278 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5279 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5280 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5281 AC_SUBST(COM)
5282 AC_SUBST(CPUNAME)
5283 AC_SUBST(RTL_OS)
5284 AC_SUBST(RTL_ARCH)
5285 AC_SUBST(EPM_FLAGS)
5286 AC_SUBST(USING_X11)
5287 AC_SUBST([INSTDIR])
5288 AC_SUBST([INSTROOT])
5289 AC_SUBST([INSTROOTBASE])
5290 AC_SUBST(OS)
5291 AC_SUBST(P_SEP)
5292 AC_SUBST(WORKDIR)
5293 AC_SUBST(PLATFORMID)
5294 AC_SUBST(WINDOWS_X64)
5295 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5297 if test "$OS" = WNT -a "$COM" = MSC; then
5298     case "$CPUNAME" in
5299     INTEL) CPPU_ENV=msci ;;
5300     X86_64) CPPU_ENV=mscx ;;
5301     AARCH64) CPPU_ENV=msca ;;
5302     *)
5303         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5304         ;;
5305     esac
5306 else
5307     CPPU_ENV=gcc3
5309 AC_SUBST(CPPU_ENV)
5311 dnl ===================================================================
5312 dnl Test which package format to use
5313 dnl ===================================================================
5314 AC_MSG_CHECKING([which package format to use])
5315 if test -n "$with_package_format" -a "$with_package_format" != no; then
5316     for i in $with_package_format; do
5317         case "$i" in
5318         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5319             ;;
5320         *)
5321             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5322 aix - AIX software distribution
5323 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5324 deb - Debian software distribution
5325 pkg - Solaris software distribution
5326 rpm - RedHat software distribution
5328 LibreOffice additionally supports:
5329 archive - .tar.gz or .zip
5330 dmg - macOS .dmg
5331 installed - installation tree
5332 msi - Windows .msi
5333         ])
5334             ;;
5335         esac
5336     done
5337     # fakeroot is needed to ensure correct file ownerships/permissions
5338     # inside deb packages and tar archives created on Linux and Solaris.
5339     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5340         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5341         if test "$FAKEROOT" = "no"; then
5342             AC_MSG_ERROR(
5343                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5344         fi
5345     fi
5346     PKGFORMAT="$with_package_format"
5347     AC_MSG_RESULT([$PKGFORMAT])
5348 else
5349     PKGFORMAT=
5350     AC_MSG_RESULT([none])
5352 AC_SUBST(PKGFORMAT)
5354 dnl ===================================================================
5355 dnl handle help related options
5357 dnl If you change help related options, please update README.help
5358 dnl ===================================================================
5360 ENABLE_HTMLHELP=
5361 HELP_OMINDEX_PAGE=
5362 HELP_ONLINE=
5363 WITH_HELPPACKS=
5365 AC_MSG_CHECKING([which help to build])
5366 if test -n "$with_help" -a "$with_help" != "no"; then
5367     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5368     BUILD_TYPE="$BUILD_TYPE HELP"
5369     case "$with_help" in
5370     "html")
5371         ENABLE_HTMLHELP=TRUE
5372         WITH_HELPPACKS=TRUE
5373         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5374         AC_MSG_RESULT([HTML (local)])
5375         ;;
5376     "online")
5377         ENABLE_HTMLHELP=TRUE
5378         HELP_ONLINE=TRUE
5379         AC_MSG_RESULT([HTML (online)])
5380         ;;
5381     yes)
5382         WITH_HELPPACKS=TRUE
5383         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5384         AC_MSG_RESULT([XML (local)])
5385         ;;
5386     *)
5387         AC_MSG_ERROR([Unknown --with-help=$with_help])
5388         ;;
5389     esac
5390 else
5391     AC_MSG_RESULT([no])
5394 AC_MSG_CHECKING([if we need to build the help index tooling])
5395 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5396     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5397     test_clucene=yes
5398     AC_MSG_RESULT([yes])
5399 else
5400     AC_MSG_RESULT([no])
5403 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5404 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5405     if test "$HELP_ONLINE" != TRUE; then
5406         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5407     fi
5408     case "$with_omindex" in
5409     "server")
5410         HELP_OMINDEX_PAGE=TRUE
5411         AC_MSG_RESULT([SERVER])
5412         ;;
5413     "noxap")
5414         AC_MSG_RESULT([NOXAP])
5415         ;;
5416     *)
5417         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5418         ;;
5419     esac
5420 else
5421     AC_MSG_RESULT([no])
5424 AC_MSG_CHECKING([whether to include the XML-help support])
5425 if test "$enable_xmlhelp" = yes; then
5426     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5427     test_clucene=yes
5428     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5429     AC_MSG_RESULT([yes])
5430 else
5431     if test "$with_help" = yes; then
5432         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5433     fi
5434     AC_MSG_RESULT([no])
5437 dnl Test whether to integrate helppacks into the product's installer
5438 AC_MSG_CHECKING([for helppack integration])
5439 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5440     AC_MSG_RESULT([no integration])
5441 else
5442     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5443     AC_MSG_RESULT([integration])
5446 AC_SUBST([ENABLE_HTMLHELP])
5447 AC_SUBST([HELP_OMINDEX_PAGE])
5448 AC_SUBST([HELP_ONLINE])
5449 # WITH_HELPPACKS is used only in configure
5451 dnl ===================================================================
5452 dnl Set up a different compiler to produce tools to run on the build
5453 dnl machine when doing cross-compilation
5454 dnl ===================================================================
5456 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5457 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5458 if test "$cross_compiling" = "yes"; then
5459     AC_MSG_CHECKING([for BUILD platform configuration])
5460     echo
5461     rm -rf CONF-FOR-BUILD config_build.mk
5462     mkdir CONF-FOR-BUILD
5463     # Here must be listed all files needed when running the configure script. In particular, also
5464     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5465     # keep them in the same order as there.
5466     (cd $SRC_ROOT && tar cf - \
5467         config.guess \
5468         bin/get_config_variables \
5469         solenv/bin/getcompver.awk \
5470         solenv/inc/langlist.mk \
5471         download.lst \
5472         config_host.mk.in \
5473         config_host_lang.mk.in \
5474         Makefile.in \
5475         bin/bffvalidator.sh.in \
5476         bin/odfvalidator.sh.in \
5477         bin/officeotron.sh.in \
5478         hardened_runtime.xcent.in \
5479         instsetoo_native/util/openoffice.lst.in \
5480         config_host/*.in \
5481         sysui/desktop/macosx/Info.plist.in \
5482         .vscode/vs-code-template.code-workspace.in \
5483         solenv/lockfile/autoconf.h.in \
5484         ) \
5485     | (cd CONF-FOR-BUILD && tar xf -)
5486     cp configure CONF-FOR-BUILD
5487     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5488     (
5489     unset COM USING_X11 OS CPUNAME
5490     unset CC CXX SYSBASE CFLAGS
5491     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5492     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5493     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5494     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5495     if test -n "$CC_FOR_BUILD"; then
5496         export CC="$CC_FOR_BUILD"
5497         CC_BASE=`first_arg_basename "$CC"`
5498     fi
5499     if test -n "$CXX_FOR_BUILD"; then
5500         export CXX="$CXX_FOR_BUILD"
5501         CXX_BASE=`first_arg_basename "$CXX"`
5502     fi
5503     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5504     cd CONF-FOR-BUILD
5506     # Handle host configuration, which affects the cross-toolset too
5507     sub_conf_opts=""
5508     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5509     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5510     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5511     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5512     if test -n "$ENABLE_JAVA"; then
5513         case "$_os" in
5514         Android)
5515             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5516             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5517             ;;
5518         *)
5519             if test -z "$with_jdk_home"; then
5520                 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.])
5521             fi
5522             ;;
5523         esac
5524     else
5525         sub_conf_opts="$sub_conf_opts --disable-scripting"
5526     fi
5527     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5528     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5529     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5530     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5531     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5532     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5533     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5534     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5535     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5536     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5538     # Don't bother having configure look for stuff not needed for the build platform anyway
5539     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5540     sub_conf_defaults=" \
5541         --build="$build_alias" \
5542         --disable-cairo-canvas \
5543         --disable-cups \
5544         --disable-customtarget-components \
5545         --disable-firebird-sdbc \
5546         --disable-gpgmepp \
5547         --disable-gstreamer-1-0 \
5548         --disable-gtk3 \
5549         --disable-gtk4 \
5550         --disable-libcmis \
5551         --disable-mariadb-sdbc \
5552         --disable-nss \
5553         --disable-online-update \
5554         --disable-opencl \
5555         --disable-pdfimport \
5556         --disable-postgresql-sdbc \
5557         --disable-skia \
5558         --disable-xmlhelp \
5559         --enable-icecream="$enable_icecream" \
5560         --without-doxygen \
5561         --without-webdav \
5562         --without-x \
5563         --with-tls=openssl \
5565     # single quotes added for better readability in case of spaces
5566     echo "    Running CONF-FOR-BUILD/configure" \
5567         $sub_conf_defaults \
5568         --with-parallelism="'$with_parallelism'" \
5569         --with-theme="'$with_theme'" \
5570         $sub_conf_opts \
5571         $with_build_platform_configure_options \
5572         --srcdir=$srcdir
5574     ./configure \
5575         $sub_conf_defaults \
5576         --with-parallelism="$with_parallelism" \
5577         --with-theme="$with_theme" \
5578         $sub_conf_opts \
5579         $with_build_platform_configure_options \
5580         --srcdir=$srcdir \
5581         2>&1 | sed -e 's/^/    /'
5582     if test [${PIPESTATUS[0]}] -ne 0; then
5583         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5584     fi
5586     # filter permitted build targets
5587     PERMITTED_BUILD_TARGETS="
5588         AVMEDIA
5589         BOOST
5590         CAIRO
5591         CLUCENE
5592         CUCKOO
5593         CURL
5594         DBCONNECTIVITY
5595         DESKTOP
5596         DYNLOADING
5597         EPOXY
5598         EXPAT
5599         GLM
5600         GRAPHITE
5601         HARFBUZZ
5602         HELPTOOLS
5603         ICU
5604         LCMS2
5605         LIBJPEG_TURBO
5606         LIBLANGTAG
5607         LibO
5608         LIBFFI
5609         LIBPN
5610         LIBXML2
5611         LIBXSLT
5612         MDDS
5613         NATIVE
5614         OPENSSL
5615         ORCUS
5616         PYTHON
5617         SCRIPTING
5618         ZLIB
5620     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5621     # newlined lists, to use grep as a filter
5622     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5623     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5624     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5625     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5627     cp config_host.mk ../config_build.mk
5628     cp config_host_lang.mk ../config_build_lang.mk
5629     mv config.log ../config.Build.log
5630     mkdir -p ../config_build
5631     mv config_host/*.h ../config_build
5632     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5634     # all these will get a _FOR_BUILD postfix
5635     DIRECT_FOR_BUILD_SETTINGS="
5636         CC
5637         CPPU_ENV
5638         CXX
5639         ILIB
5640         JAVA_HOME
5641         JAVAIFLAGS
5642         JDK
5643         LIBO_BIN_FOLDER
5644         LIBO_LIB_FOLDER
5645         LIBO_URE_LIB_FOLDER
5646         LIBO_URE_MISC_FOLDER
5647         OS
5648         SDKDIRNAME
5649         SYSTEM_LIBXML
5650         SYSTEM_LIBXSLT
5652     # these overwrite host config with build config
5653     OVERWRITING_SETTINGS="
5654         ANT
5655         ANT_HOME
5656         ANT_LIB
5657         HSQLDB_USE_JDBC_4_1
5658         JAVA_CLASSPATH_NOT_SET
5659         JAVA_SOURCE_VER
5660         JAVA_TARGET_VER
5661         JAVACFLAGS
5662         JAVACOMPILER
5663         JAVADOC
5664         JAVADOCISGJDOC
5665         LOCKFILE
5667     # these need some special handling
5668     EXTRA_HANDLED_SETTINGS="
5669         INSTDIR
5670         INSTROOT
5671         PATH
5672         WORKDIR
5674     OLD_PATH=$PATH
5675     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5676     BUILD_PATH=$PATH
5677     PATH=$OLD_PATH
5679     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5680     echo "$line" >>build-config
5682     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5683         VV='$'$V
5684         VV=`eval "echo $VV"`
5685         if test -n "$VV"; then
5686             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5687             echo "$line" >>build-config
5688         fi
5689     done
5691     for V in $OVERWRITING_SETTINGS; do
5692         VV='$'$V
5693         VV=`eval "echo $VV"`
5694         if test -n "$VV"; then
5695             line=${V}='${'${V}:-$VV'}'
5696             echo "$line" >>build-config
5697         fi
5698     done
5700     for V in INSTDIR INSTROOT WORKDIR; do
5701         VV='$'$V
5702         VV=`eval "echo $VV"`
5703         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5704         if test -n "$VV"; then
5705             line="${V}_FOR_BUILD='$VV'"
5706             echo "$line" >>build-config
5707         fi
5708     done
5710     )
5711     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5712     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])
5713     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5714              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5716     eval `cat CONF-FOR-BUILD/build-config`
5718     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5720     rm -rf CONF-FOR-BUILD
5721 else
5722     OS_FOR_BUILD="$OS"
5723     CC_FOR_BUILD="$CC"
5724     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5725     CXX_FOR_BUILD="$CXX"
5726     INSTDIR_FOR_BUILD="$INSTDIR"
5727     INSTROOT_FOR_BUILD="$INSTROOT"
5728     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5729     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5730     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5731     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5732     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5733     WORKDIR_FOR_BUILD="$WORKDIR"
5735 AC_SUBST(OS_FOR_BUILD)
5736 AC_SUBST(INSTDIR_FOR_BUILD)
5737 AC_SUBST(INSTROOT_FOR_BUILD)
5738 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5739 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5740 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5741 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5742 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5743 AC_SUBST(WORKDIR_FOR_BUILD)
5744 AC_SUBST(CC_FOR_BUILD)
5745 AC_SUBST(CXX_FOR_BUILD)
5746 AC_SUBST(CPPU_ENV_FOR_BUILD)
5748 dnl ===================================================================
5749 dnl Check for lockfile deps
5750 dnl ===================================================================
5751 if test -z "$CROSS_COMPILING"; then
5752     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5753     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5754     AC_MSG_CHECKING([which lockfile binary to use])
5755     case "$with_system_lockfile" in
5756     yes)
5757         AC_MSG_RESULT([external])
5758         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5759         ;;
5760     no)
5761         AC_MSG_RESULT([internal])
5762         ;;
5763     *)
5764         if test -x "$with_system_lockfile"; then
5765             LOCKFILE="$with_system_lockfile"
5766         else
5767             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5768         fi
5769         AC_MSG_RESULT([$with_system_lockfile])
5770         ;;
5771     esac
5774 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5775     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5778 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5779 AC_CHECK_FUNCS([utime utimes])
5780 AC_SUBST(LOCKFILE)
5782 dnl ===================================================================
5783 dnl Check for syslog header
5784 dnl ===================================================================
5785 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5787 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5788 dnl ===================================================================
5789 AC_MSG_CHECKING([whether to turn warnings to errors])
5790 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5791     ENABLE_WERROR="TRUE"
5792     PYTHONWARNINGS="error"
5793     AC_MSG_RESULT([yes])
5794 else
5795     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5796         ENABLE_WERROR="TRUE"
5797         PYTHONWARNINGS="error"
5798         AC_MSG_RESULT([yes])
5799     else
5800         AC_MSG_RESULT([no])
5801     fi
5803 AC_SUBST(ENABLE_WERROR)
5804 AC_SUBST(PYTHONWARNINGS)
5806 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5807 dnl ===================================================================
5808 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5809 if test -z "$enable_assert_always_abort"; then
5810    if test "$ENABLE_DEBUG" = TRUE; then
5811        enable_assert_always_abort=yes
5812    else
5813        enable_assert_always_abort=no
5814    fi
5816 if test "$enable_assert_always_abort" = "yes"; then
5817     ASSERT_ALWAYS_ABORT="TRUE"
5818     AC_MSG_RESULT([yes])
5819 else
5820     ASSERT_ALWAYS_ABORT="FALSE"
5821     AC_MSG_RESULT([no])
5823 AC_SUBST(ASSERT_ALWAYS_ABORT)
5825 # Determine whether to use ooenv for the instdir installation
5826 # ===================================================================
5827 if test $_os != "WINNT" -a $_os != "Darwin"; then
5828     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5829     if test -z "$enable_ooenv"; then
5830         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5831             enable_ooenv=yes
5832         else
5833             enable_ooenv=no
5834         fi
5835     fi
5836     if test "$enable_ooenv" = "no"; then
5837         AC_MSG_RESULT([no])
5838     else
5839         ENABLE_OOENV="TRUE"
5840         AC_MSG_RESULT([yes])
5841     fi
5843 AC_SUBST(ENABLE_OOENV)
5845 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5846     if test "$enable_qt5" = "no"; then
5847         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5848     else
5849         enable_qt5=yes
5850     fi
5853 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
5854 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
5855     AC_MSG_RESULT([yes])
5856     ENABLE_PAGEIN=TRUE
5857     AC_DEFINE(HAVE_FEATURE_PAGEIN)
5858 else
5859     AC_MSG_RESULT([no])
5861 AC_SUBST(ENABLE_PAGEIN)
5863 dnl ===================================================================
5864 dnl check for cups support
5865 dnl ===================================================================
5867 AC_MSG_CHECKING([whether to enable CUPS support])
5868 if test "$test_cups" = yes -a "$enable_cups" != no; then
5869     ENABLE_CUPS=TRUE
5870     AC_MSG_RESULT([yes])
5872     AC_MSG_CHECKING([whether cups support is present])
5873     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5874     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5875     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5876         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5877     fi
5878 else
5879     AC_MSG_RESULT([no])
5882 AC_SUBST(ENABLE_CUPS)
5884 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
5886 dnl whether to find & fetch external tarballs?
5887 dnl ===================================================================
5888 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5889    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5890        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5891    else
5892        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5893    fi
5895 if test -z "$TARFILE_LOCATION"; then
5896     if test -d "$SRC_ROOT/src" ; then
5897         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5898         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5899     fi
5900     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5901 else
5902     AbsolutePath "$TARFILE_LOCATION"
5903     PathFormat "${absolute_path}"
5904     TARFILE_LOCATION="${formatted_path}"
5906 AC_SUBST(TARFILE_LOCATION)
5908 AC_MSG_CHECKING([whether we want to fetch tarballs])
5909 if test "$enable_fetch_external" != "no"; then
5910     if test "$with_all_tarballs" = "yes"; then
5911         AC_MSG_RESULT([yes, all of them])
5912         DO_FETCH_TARBALLS="ALL"
5913     else
5914         AC_MSG_RESULT([yes, if we use them])
5915         DO_FETCH_TARBALLS="TRUE"
5916     fi
5917 else
5918     AC_MSG_RESULT([no])
5919     DO_FETCH_TARBALLS=
5921 AC_SUBST(DO_FETCH_TARBALLS)
5923 dnl Test whether to include MySpell dictionaries
5924 dnl ===================================================================
5925 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5926 if test "$with_myspell_dicts" = "yes"; then
5927     AC_MSG_RESULT([yes])
5928     WITH_MYSPELL_DICTS=TRUE
5929     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5930     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5931 else
5932     AC_MSG_RESULT([no])
5933     WITH_MYSPELL_DICTS=
5935 AC_SUBST(WITH_MYSPELL_DICTS)
5937 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5938 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5939     if test "$with_system_dicts" = yes; then
5940         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5941     fi
5942     with_system_dicts=no
5945 AC_MSG_CHECKING([whether to use dicts from external paths])
5946 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5947     AC_MSG_RESULT([yes])
5948     SYSTEM_DICTS=TRUE
5949     AC_MSG_CHECKING([for spelling dictionary directory])
5950     if test -n "$with_external_dict_dir"; then
5951         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5952     else
5953         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5954         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5955             DICT_SYSTEM_DIR=file:///usr/share/myspell
5956         fi
5957     fi
5958     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5959     AC_MSG_CHECKING([for hyphenation patterns directory])
5960     if test -n "$with_external_hyph_dir"; then
5961         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5962     else
5963         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5964     fi
5965     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5966     AC_MSG_CHECKING([for thesaurus directory])
5967     if test -n "$with_external_thes_dir"; then
5968         THES_SYSTEM_DIR=file://$with_external_thes_dir
5969     else
5970         THES_SYSTEM_DIR=file:///usr/share/mythes
5971     fi
5972     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5973 else
5974     AC_MSG_RESULT([no])
5975     SYSTEM_DICTS=
5977 AC_SUBST(SYSTEM_DICTS)
5978 AC_SUBST(DICT_SYSTEM_DIR)
5979 AC_SUBST(HYPH_SYSTEM_DIR)
5980 AC_SUBST(THES_SYSTEM_DIR)
5982 dnl ===================================================================
5983 dnl Precompiled headers.
5984 ENABLE_PCH=""
5985 AC_MSG_CHECKING([whether to enable pch feature])
5986 if test -z "$enable_pch"; then
5987     if test "$_os" = "WINNT"; then
5988         # Enabled by default on Windows.
5989         enable_pch=yes
5990         # never use sccache on auto-enabled PCH builds, except if requested explicitly
5991         if test -z "$enable_ccache" -a "$SCCACHE"; then
5992             CCACHE=""
5993         fi
5994     else
5995         enable_pch=no
5996     fi
5998 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5999     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6001 if test "$enable_pch" = "system"; then
6002     ENABLE_PCH="1"
6003     AC_MSG_RESULT([yes (system headers)])
6004 elif test "$enable_pch" = "base"; then
6005     ENABLE_PCH="2"
6006     AC_MSG_RESULT([yes (system and base headers)])
6007 elif test "$enable_pch" = "normal"; then
6008     ENABLE_PCH="3"
6009     AC_MSG_RESULT([yes (normal)])
6010 elif test "$enable_pch" = "full"; then
6011     ENABLE_PCH="4"
6012     AC_MSG_RESULT([yes (full)])
6013 elif test "$enable_pch" = "yes"; then
6014     # Pick a suitable default.
6015     if test "$GCC" = "yes"; then
6016         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6017         # while making the PCHs larger and rebuilds more likely.
6018         ENABLE_PCH="2"
6019         AC_MSG_RESULT([yes (system and base headers)])
6020     else
6021         # With MSVC the highest level makes a significant difference,
6022         # and it was the default when there used to be no PCH levels.
6023         ENABLE_PCH="4"
6024         AC_MSG_RESULT([yes (full)])
6025     fi
6026 elif test "$enable_pch" = "no"; then
6027     AC_MSG_RESULT([no])
6028 else
6029     AC_MSG_ERROR([Unknown value for --enable-pch])
6031 AC_SUBST(ENABLE_PCH)
6032 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6033 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6034     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6035     if test "$CCACHE_BIN" != "not found"; then
6036         AC_MSG_CHECKING([ccache version])
6037         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6038         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6039         AC_MSG_RESULT([$CCACHE_VERSION])
6040         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6041         if test "$CCACHE_NUMVER" -gt "030701"; then
6042             AC_MSG_RESULT([yes])
6043         else
6044             AC_MSG_RESULT([no (not newer than 3.7.1)])
6045             CCACHE_DEPEND_MODE=
6046         fi
6047     fi
6050 PCH_INSTANTIATE_TEMPLATES=
6051 if test -n "$ENABLE_PCH"; then
6052     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6053     save_CFLAGS=$CFLAGS
6054     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6055     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6056     CFLAGS=$save_CFLAGS
6057     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6058         AC_MSG_RESULT(yes)
6059     else
6060         AC_MSG_RESULT(no)
6061     fi
6063 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6065 BUILDING_PCH_WITH_OBJ=
6066 if test -n "$ENABLE_PCH"; then
6067     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6068     save_CFLAGS=$CFLAGS
6069     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6070     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6071     CFLAGS=$save_CFLAGS
6072     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6073         AC_MSG_RESULT(yes)
6074     else
6075         AC_MSG_RESULT(no)
6076     fi
6078 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6080 PCH_CODEGEN=
6081 PCH_NO_CODEGEN=
6082 fpch_prefix=
6083 if test "$COM" = MSC; then
6084     fpch_prefix="-Xclang "
6086 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6087     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6088     save_CFLAGS=$CFLAGS
6089     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6090     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6091         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6092     CFLAGS=$save_CFLAGS
6093     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6094     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6095         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6096     CFLAGS=$save_CFLAGS
6097     if test -n "$PCH_CODEGEN"; then
6098         AC_MSG_RESULT(yes)
6099     else
6100         AC_MSG_RESULT(no)
6101     fi
6103 AC_SUBST(PCH_CODEGEN)
6104 AC_SUBST(PCH_NO_CODEGEN)
6105 PCH_DEBUGINFO=
6106 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6107     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6108     save_CFLAGS=$CFLAGS
6109     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6110     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6111     CFLAGS=$save_CFLAGS
6112     if test -n "$PCH_DEBUGINFO"; then
6113         AC_MSG_RESULT(yes)
6114     else
6115         AC_MSG_RESULT(no)
6116     fi
6118 AC_SUBST(PCH_DEBUGINFO)
6120 TAB=`printf '\t'`
6122 AC_MSG_CHECKING([the GNU Make version])
6123 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6124 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6125 if test "$_make_longver" -ge "038200"; then
6126     AC_MSG_RESULT([$GNUMAKE $_make_version])
6128 elif test "$_make_longver" -ge "038100"; then
6129     if test "$build_os" = "cygwin"; then
6130         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6131     fi
6132     AC_MSG_RESULT([$GNUMAKE $_make_version])
6134     dnl ===================================================================
6135     dnl Search all the common names for sha1sum
6136     dnl ===================================================================
6137     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6138     if test -z "$SHA1SUM"; then
6139         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6140     elif test "$SHA1SUM" = "openssl"; then
6141         SHA1SUM="openssl sha1"
6142     fi
6143     AC_MSG_CHECKING([for GNU Make bug 20033])
6144     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6145     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6146 A := \$(wildcard *.a)
6148 .PHONY: all
6149 all: \$(A:.a=.b)
6150 <TAB>@echo survived bug20033.
6152 .PHONY: setup
6153 setup:
6154 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6156 define d1
6157 @echo lala \$(1)
6158 @sleep 1
6159 endef
6161 define d2
6162 @echo tyty \$(1)
6163 @sleep 1
6164 endef
6166 %.b : %.a
6167 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6168 <TAB>\$(call d1,\$(CHECKSUM)),\
6169 <TAB>\$(call d2,\$(CHECKSUM)))
6171     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6172         no_parallelism_make="YES"
6173         AC_MSG_RESULT([yes, disable parallelism])
6174     else
6175         AC_MSG_RESULT([no, keep parallelism enabled])
6176     fi
6177     rm -rf $TESTGMAKEBUG20033
6178 else
6179     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6182 # find if gnumake support file function
6183 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6184 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6185 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6186     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6188 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6189 \$(file >test.txt,Success )
6191 .PHONY: all
6192 all:
6193 <TAB>@cat test.txt
6196 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6197 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6198     HAVE_GNUMAKE_FILE_FUNC=TRUE
6199     AC_MSG_RESULT([yes])
6200 else
6201     AC_MSG_RESULT([no])
6203 rm -rf $TESTGMAKEFILEFUNC
6204 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6206 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6207 STALE_MAKE=
6208 if test "$_make_ver_check" = ""; then
6209    STALE_MAKE=TRUE
6212 HAVE_LD_HASH_STYLE=FALSE
6213 WITH_LINKER_HASH_STYLE=
6214 AC_MSG_CHECKING([for --hash-style gcc linker support])
6215 if test "$GCC" = "yes"; then
6216     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6217         hash_styles="gnu sysv"
6218     elif test "$with_linker_hash_style" = "no"; then
6219         hash_styles=
6220     else
6221         hash_styles="$with_linker_hash_style"
6222     fi
6224     for hash_style in $hash_styles; do
6225         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6226         hash_style_ldflags_save=$LDFLAGS
6227         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6229         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6230             [
6231 #include <stdio.h>
6232             ],[
6233 printf ("");
6234             ])],
6235             [
6236                   HAVE_LD_HASH_STYLE=TRUE
6237                   WITH_LINKER_HASH_STYLE=$hash_style
6238             ],
6239             [HAVE_LD_HASH_STYLE=FALSE],
6240             [HAVE_LD_HASH_STYLE=FALSE])
6241         LDFLAGS=$hash_style_ldflags_save
6242     done
6244     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6245         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6246     else
6247         AC_MSG_RESULT( no )
6248     fi
6249     LDFLAGS=$hash_style_ldflags_save
6250 else
6251     AC_MSG_RESULT( no )
6253 AC_SUBST(HAVE_LD_HASH_STYLE)
6254 AC_SUBST(WITH_LINKER_HASH_STYLE)
6256 dnl ===================================================================
6257 dnl Check whether there's a Perl version available.
6258 dnl ===================================================================
6259 if test -z "$with_perl_home"; then
6260     AC_PATH_PROG(PERL, perl)
6261 else
6262     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6263     _perl_path="$with_perl_home/bin/perl"
6264     if test -x "$_perl_path"; then
6265         PERL=$_perl_path
6266     else
6267         AC_MSG_ERROR([$_perl_path not found])
6268     fi
6271 dnl ===================================================================
6272 dnl Testing for Perl version 5 or greater.
6273 dnl $] is the Perl version variable, it is returned as an integer
6274 dnl ===================================================================
6275 if test "$PERL"; then
6276     AC_MSG_CHECKING([the Perl version])
6277     ${PERL} -e "exit($]);"
6278     _perl_version=$?
6279     if test "$_perl_version" -lt 5; then
6280         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6281     fi
6282     AC_MSG_RESULT([Perl $_perl_version])
6283 else
6284     AC_MSG_ERROR([Perl not found, install Perl 5])
6287 dnl ===================================================================
6288 dnl Testing for required Perl modules
6289 dnl ===================================================================
6291 AC_MSG_CHECKING([for required Perl modules])
6292 perl_use_string="use Cwd ; use Digest::MD5"
6293 if test "$_os" = "WINNT"; then
6294     if test -n "$PKGFORMAT"; then
6295         for i in $PKGFORMAT; do
6296             case "$i" in
6297             msi)
6298                 # for getting fonts versions to use in MSI
6299                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6300                 ;;
6301             esac
6302         done
6303     fi
6305 if test "$with_system_hsqldb" = "yes"; then
6306     perl_use_string="$perl_use_string ; use Archive::Zip"
6308 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6309     # OpenSSL needs that to build
6310     perl_use_string="$perl_use_string ; use FindBin"
6312 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6313     AC_MSG_RESULT([all modules found])
6314 else
6315     AC_MSG_RESULT([failed to find some modules])
6316     # Find out which modules are missing.
6317     for i in $perl_use_string; do
6318         if test "$i" != "use" -a "$i" != ";"; then
6319             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6320                 missing_perl_modules="$missing_perl_modules $i"
6321             fi
6322         fi
6323     done
6324     AC_MSG_ERROR([
6325     The missing Perl modules are: $missing_perl_modules
6326     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6329 dnl ===================================================================
6330 dnl Check for pkg-config
6331 dnl ===================================================================
6332 if test "$_os" != "WINNT"; then
6333     PKG_PROG_PKG_CONFIG
6336 if test "$_os" != "WINNT"; then
6338     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6339     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6340     # explicitly. Or put /path/to/compiler in PATH yourself.
6342     # Use wrappers for LTO
6343     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6344         AC_CHECK_TOOL(AR,gcc-ar)
6345         AC_CHECK_TOOL(NM,gcc-nm)
6346         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6347     else
6348         AC_CHECK_TOOL(AR,ar)
6349         AC_CHECK_TOOL(NM,nm)
6350         AC_CHECK_TOOL(RANLIB,ranlib)
6351     fi
6352     AC_CHECK_TOOL(OBJDUMP,objdump)
6353     AC_CHECK_TOOL(READELF,readelf)
6354     AC_CHECK_TOOL(STRIP,strip)
6356 AC_SUBST(AR)
6357 AC_SUBST(LD)
6358 AC_SUBST(NM)
6359 AC_SUBST(OBJDUMP)
6360 AC_SUBST(PKG_CONFIG)
6361 AC_SUBST(PKG_CONFIG_PATH)
6362 AC_SUBST(PKG_CONFIG_LIBDIR)
6363 AC_SUBST(RANLIB)
6364 AC_SUBST(READELF)
6365 AC_SUBST(STRIP)
6367 dnl ===================================================================
6368 dnl pkg-config checks on macOS
6369 dnl ===================================================================
6371 if test $_os = Darwin; then
6372     AC_MSG_CHECKING([for bogus pkg-config])
6373     if test -n "$PKG_CONFIG"; then
6374         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6375             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6376         else
6377             if test "$enable_bogus_pkg_config" = "yes"; then
6378                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6379             else
6380                 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.])
6381             fi
6382         fi
6383     else
6384         AC_MSG_RESULT([no, good])
6385     fi
6388 find_csc()
6390     # Return value: $csctest
6392     unset csctest
6394     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6395     if test -n "$regvalue"; then
6396         csctest=$regvalue
6397         return
6398     fi
6401 find_al()
6403     # Return value: $altest
6405     unset altest
6407     # We need this check to detect 4.6.1 or above.
6408     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6409         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6410         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6411             altest=$regvalue
6412             return
6413         fi
6414     done
6416     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6417         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6418         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6419             altest=$regvalue
6420             return
6421         fi
6422     done
6425 find_dotnetsdk46()
6427     unset frametest
6429     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6430         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6431         if test -n "$regvalue"; then
6432             frametest=$regvalue
6433             return
6434         fi
6435     done
6438 find_winsdk_version()
6440     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6441     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6443     unset winsdktest winsdkbinsubdir winsdklibsubdir
6445     case "$1" in
6446     8.0|8.0A)
6447         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6448         if test -n "$regvalue"; then
6449             winsdktest=$regvalue
6450             winsdklibsubdir=win8
6451             return
6452         fi
6453         ;;
6454     8.1|8.1A)
6455         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6456         if test -n "$regvalue"; then
6457             winsdktest=$regvalue
6458             winsdklibsubdir=winv6.3
6459             return
6460         fi
6461         ;;
6462     10.0)
6463         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6464         if test -n "$regvalue"; then
6465             winsdktest=$regvalue
6466             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6467             if test -n "$regvalue"; then
6468                 winsdkbinsubdir="$regvalue".0
6469                 winsdklibsubdir=$winsdkbinsubdir
6470                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6471                 local tmppath_unix=$(cygpath -u "$tmppath")
6472                 # test exist the SDK path
6473                 if test -d "$tmppath_unix"; then
6474                    # when path is convertible to a short path then path is okay
6475                    cygpath -d "$tmppath" >/dev/null 2>&1
6476                    if test $? -ne 0; then
6477                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6478                    fi
6479                 else
6480                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6481                 fi
6482             fi
6483             return
6484         fi
6485         ;;
6486     esac
6489 find_winsdk()
6491     # Return value: From find_winsdk_version
6493     unset winsdktest
6495     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6496         find_winsdk_version $ver
6497         if test -n "$winsdktest"; then
6498             return
6499         fi
6500     done
6503 find_msms()
6505     # Return value: $msmdir
6507     AC_MSG_CHECKING([for MSVC merge modules directory])
6508     local my_msm_files
6509     local my_msm_dir
6511     dnl Order my_msm_files in increasing order. Then check the directories returned
6512     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6513     dnl the result will be the highest MSM version found in the highest directory.
6515     case "$VCVER" in
6516         16.0 | 17.0)
6517         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6518         ;;
6519     esac
6520     for f in $my_msm_files; do
6521         echo "$as_me:$LINENO: searching for $f" >&5
6522     done
6524     msmdir=
6525     case "$VCVER" in
6526     16.0 | 17.0)
6527         for f in ${my_msm_files}; do
6528             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6529                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6530                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6531                 if test -e "$my_msm_dir${f}"; then
6532                     msmdir=$my_msm_dir
6533                 fi
6534             done
6535         done
6536         ;;
6537     esac
6539     if test -n "$msmdir"; then
6540         msmdir=`cygpath -m "$msmdir"`
6541         AC_MSG_RESULT([$msmdir])
6542     else
6543         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6544             AC_MSG_FAILURE([not found])
6545         else
6546             AC_MSG_WARN([not found (check config.log)])
6547             add_warning "MSM none of ${my_msm_files} found"
6548         fi
6549     fi
6552 find_msvc_x64_dlls()
6554     # Return value: $msvcdllpath, $msvcdlls
6556     AC_MSG_CHECKING([for MSVC x64 DLL path])
6558     dnl Order crtver in increasing order. Then check the directories returned by
6559     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6560     dnl the result will be the highest CRT version found in the highest directory.
6562     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6563     case "$VCVER" in
6564     16.0 | 17.0)
6565         for crtver in 141 142 143; do
6566             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6567                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6568                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6569                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6570                 fi
6571             done
6572         done
6573         ;;
6574     esac
6575     AC_MSG_RESULT([$msvcdllpath])
6576     AC_MSG_CHECKING([for MSVC x64 DLLs])
6577     msvcdlls="msvcp140.dll vcruntime140.dll"
6578     for dll in $msvcdlls; do
6579         if ! test -f "$msvcdllpath/$dll"; then
6580             AC_MSG_FAILURE([missing $dll])
6581         fi
6582     done
6583     AC_MSG_RESULT([found all ($msvcdlls)])
6586 dnl =========================================
6587 dnl Check for the Windows  SDK.
6588 dnl =========================================
6589 if test "$_os" = "WINNT"; then
6590     AC_MSG_CHECKING([for Windows SDK])
6591     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6592         find_winsdk
6593         WINDOWS_SDK_HOME=$winsdktest
6595         # normalize if found
6596         if test -n "$WINDOWS_SDK_HOME"; then
6597             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6598             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6599         fi
6601         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6602     fi
6604     if test -n "$WINDOWS_SDK_HOME"; then
6605         # Remove a possible trailing backslash
6606         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6608         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6609              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6610              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6611             have_windows_sdk_headers=yes
6612         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6613              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6614              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6615             have_windows_sdk_headers=yes
6616         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6617              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6618              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6619             have_windows_sdk_headers=yes
6620         else
6621             have_windows_sdk_headers=no
6622         fi
6624         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6625             have_windows_sdk_libs=yes
6626         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6627             have_windows_sdk_libs=yes
6628         else
6629             have_windows_sdk_libs=no
6630         fi
6632         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6633             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6634 the  Windows SDK are installed.])
6635         fi
6636     fi
6638     if test -z "$WINDOWS_SDK_HOME"; then
6639         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6640     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6641         WINDOWS_SDK_VERSION=80
6642         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6643     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6644         WINDOWS_SDK_VERSION=81
6645         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6646     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6647         WINDOWS_SDK_VERSION=10
6648         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6649     else
6650         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6651     fi
6652     PathFormat "$WINDOWS_SDK_HOME"
6653     WINDOWS_SDK_HOME="$formatted_path"
6654     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6655     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6656         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6657         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6658             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6659         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6660             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6661         fi
6662     fi
6664     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6665     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6666     dnl but not in v8.0), so allow this to be overridden with a
6667     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6668     dnl and configuration error if no WiLangId.vbs is found would arguably be
6669     dnl better, but I do not know under which conditions exactly it is needed by
6670     dnl msiglobal.pm:
6671     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6672         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6673         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6674         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6675             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6676             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6677         fi
6678         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6679             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6680             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6681         fi
6682         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6683             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6684             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6685         fi
6686     fi
6687     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6688         if test -n "$with_package_format" -a "$with_package_format" != no; then
6689             for i in "$with_package_format"; do
6690                 if test "$i" = "msi"; then
6691                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6692                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6693                     fi
6694                 fi
6695             done
6696         fi
6697     fi
6699 AC_SUBST(WINDOWS_SDK_HOME)
6700 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6701 AC_SUBST(WINDOWS_SDK_VERSION)
6702 AC_SUBST(WINDOWS_SDK_WILANGID)
6704 if test "$build_os" = "cygwin"; then
6705     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6706     dnl dir, it also determines that dir's path w/o an arch segment if any,
6707     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6708     AC_MSG_CHECKING([for midl.exe])
6710     find_winsdk
6711     if test -n "$winsdkbinsubdir" \
6712         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6713     then
6714         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6715         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6716     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6717         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6718         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6719     elif test -f "$winsdktest/Bin/midl.exe"; then
6720         MIDL_PATH=$winsdktest/Bin
6721         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6722     fi
6723     if test ! -f "$MIDL_PATH/midl.exe"; then
6724         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6725     else
6726         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6727     fi
6729     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6730     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6732     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6733          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6734          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6735          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6736     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6737          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6738          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6739          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6740     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6741          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6742          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6743          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6744     else
6745         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6746     fi
6748     dnl Check csc.exe
6749     AC_MSG_CHECKING([for csc.exe])
6750     find_csc
6751     if test -f "$csctest/csc.exe"; then
6752         CSC_PATH="$csctest"
6753     fi
6754     if test ! -f "$CSC_PATH/csc.exe"; then
6755         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6756     else
6757         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6758     fi
6760     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6762     dnl Check al.exe
6763     AC_MSG_CHECKING([for al.exe])
6764     find_winsdk
6765     if test -n "$winsdkbinsubdir" \
6766         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6767     then
6768         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6769     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6770         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6771     elif test -f "$winsdktest/Bin/al.exe"; then
6772         AL_PATH="$winsdktest/Bin"
6773     fi
6775     if test -z "$AL_PATH"; then
6776         find_al
6777         if test -f "$altest/bin/al.exe"; then
6778             AL_PATH="$altest/bin"
6779         elif test -f "$altest/al.exe"; then
6780             AL_PATH="$altest"
6781         fi
6782     fi
6783     if test ! -f "$AL_PATH/al.exe"; then
6784         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6785     else
6786         AC_MSG_RESULT([$AL_PATH/al.exe])
6787     fi
6789     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6791     dnl Check mscoree.lib / .NET Framework dir
6792     AC_MSG_CHECKING(.NET Framework)
6793     find_dotnetsdk46
6794     PathFormat "$frametest"
6795     frametest="$formatted_path"
6796     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6797         DOTNET_FRAMEWORK_HOME="$frametest"
6798     else
6799         find_winsdk
6800         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6801             DOTNET_FRAMEWORK_HOME="$winsdktest"
6802         fi
6803     fi
6804     if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6805         AC_MSG_ERROR([mscoree.lib not found])
6806     fi
6807     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6809     PathFormat "$MIDL_PATH"
6810     MIDL_PATH="$formatted_path"
6812     PathFormat "$AL_PATH"
6813     AL_PATH="$formatted_path"
6815     PathFormat "$DOTNET_FRAMEWORK_HOME"
6816     DOTNET_FRAMEWORK_HOME="$formatted_path"
6818     PathFormat "$CSC_PATH"
6819     CSC_PATH="$formatted_path"
6822 dnl ===================================================================
6823 dnl Testing for C++ compiler and version...
6824 dnl ===================================================================
6826 if test "$_os" != "WINNT"; then
6827     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6828     save_CXXFLAGS=$CXXFLAGS
6829     AC_PROG_CXX
6830     CXXFLAGS=$save_CXXFLAGS
6831     if test -z "$CXX_BASE"; then
6832         CXX_BASE=`first_arg_basename "$CXX"`
6833     fi
6836 dnl check for GNU C++ compiler version
6837 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6838     AC_MSG_CHECKING([the GNU C++ compiler version])
6840     _gpp_version=`$CXX -dumpversion`
6841     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6843     if test "$_gpp_majmin" -lt "700"; then
6844         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6845     else
6846         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6847     fi
6849     dnl see https://code.google.com/p/android/issues/detail?id=41770
6850         glibcxx_threads=no
6851         AC_LANG_PUSH([C++])
6852         AC_REQUIRE_CPP
6853         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6854         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6855             #include <bits/c++config.h>]],[[
6856             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6857             && !defined(_GLIBCXX__PTHREADS) \
6858             && !defined(_GLIBCXX_HAS_GTHREADS)
6859             choke me
6860             #endif
6861         ]])],[AC_MSG_RESULT([yes])
6862         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6863         AC_LANG_POP([C++])
6864         if test $glibcxx_threads = yes; then
6865             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6866         fi
6868 AC_SUBST(BOOST_CXXFLAGS)
6871 # prefx CXX with ccache if needed
6873 if test "$CCACHE" != ""; then
6874     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6875     AC_LANG_PUSH([C++])
6876     save_CXXFLAGS=$CXXFLAGS
6877     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6878     # msvc does not fail on unknown options, check stdout
6879     if test "$COM" = MSC; then
6880         CXXFLAGS="$CXXFLAGS -nologo"
6881     fi
6882     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6883     ac_cxx_werror_flag=yes
6884     dnl an empty program will do, we're checking the compiler flags
6885     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6886                       [use_ccache=yes], [use_ccache=no])
6887     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6888         AC_MSG_RESULT([yes])
6889     else
6890         CXX="$CCACHE $CXX"
6891         CXX_BASE="ccache $CXX_BASE"
6892         AC_MSG_RESULT([no])
6893     fi
6894     CXXFLAGS=$save_CXXFLAGS
6895     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6896     AC_LANG_POP([C++])
6899 dnl ===================================================================
6900 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6901 dnl ===================================================================
6903 if test "$_os" != "WINNT"; then
6904     AC_PROG_CXXCPP
6906     dnl Check whether there's a C pre-processor.
6907     AC_PROG_CPP
6911 dnl ===================================================================
6912 dnl Find integral type sizes and alignments
6913 dnl ===================================================================
6915 if test "$_os" != "WINNT"; then
6917     AC_CHECK_SIZEOF(long)
6918     AC_CHECK_SIZEOF(short)
6919     AC_CHECK_SIZEOF(int)
6920     AC_CHECK_SIZEOF(long long)
6921     AC_CHECK_SIZEOF(double)
6922     AC_CHECK_SIZEOF(void*)
6923     AC_CHECK_SIZEOF(size_t)
6925     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6926     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6927     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6928     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6929     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6930     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6932     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6933     m4_pattern_allow([AC_CHECK_ALIGNOF])
6934     m4_ifdef([AC_CHECK_ALIGNOF],
6935         [
6936             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6937             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6938             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6939             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6940         ],
6941         [
6942             case "$_os-$host_cpu" in
6943             Linux-i686)
6944                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6945                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6946                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6947                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6948                 ;;
6949             Linux-x86_64)
6950                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6951                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6952                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6953                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6954                 ;;
6955             *)
6956                 if test -z "$ac_cv_alignof_short" -o \
6957                         -z "$ac_cv_alignof_int" -o \
6958                         -z "$ac_cv_alignof_long" -o \
6959                         -z "$ac_cv_alignof_double"; then
6960                    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.])
6961                 fi
6962                 ;;
6963             esac
6964         ])
6966     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6967     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6968     if test $ac_cv_sizeof_long -eq 8; then
6969         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6970     elif test $ac_cv_sizeof_double -eq 8; then
6971         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6972     else
6973         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6974     fi
6976     dnl Check for large file support
6977     AC_SYS_LARGEFILE
6978     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6979         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6980     fi
6981     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6982         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6983     fi
6984 else
6985     # Hardcode for MSVC
6986     SAL_TYPES_SIZEOFSHORT=2
6987     SAL_TYPES_SIZEOFINT=4
6988     SAL_TYPES_SIZEOFLONG=4
6989     SAL_TYPES_SIZEOFLONGLONG=8
6990     if test $WIN_HOST_BITS -eq 32; then
6991         SAL_TYPES_SIZEOFPOINTER=4
6992         SIZEOF_SIZE_T=4
6993     else
6994         SAL_TYPES_SIZEOFPOINTER=8
6995         SIZEOF_SIZE_T=8
6996     fi
6997     SAL_TYPES_ALIGNMENT2=2
6998     SAL_TYPES_ALIGNMENT4=4
6999     SAL_TYPES_ALIGNMENT8=8
7000     LFS_CFLAGS=''
7002 AC_SUBST(LFS_CFLAGS)
7003 AC_SUBST(SIZEOF_SIZE_T)
7005 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7006 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7007 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7008 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7009 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7010 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7011 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7012 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7014 dnl ===================================================================
7015 dnl Check whether to enable runtime optimizations
7016 dnl ===================================================================
7017 ENABLE_RUNTIME_OPTIMIZATIONS=
7018 AC_MSG_CHECKING([whether to enable runtime optimizations])
7019 if test -z "$enable_runtime_optimizations"; then
7020     for i in $CC; do
7021         case $i in
7022         -fsanitize=*)
7023             enable_runtime_optimizations=no
7024             break
7025             ;;
7026         esac
7027     done
7029 if test "$enable_runtime_optimizations" != no; then
7030     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7031     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7032     AC_MSG_RESULT([yes])
7033 else
7034     AC_MSG_RESULT([no])
7036 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7038 dnl ===================================================================
7039 dnl Check if valgrind headers are available
7040 dnl ===================================================================
7041 ENABLE_VALGRIND=
7042 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7043     prev_cppflags=$CPPFLAGS
7044     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7045     # or where does it come from?
7046     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7047     AC_CHECK_HEADER([valgrind/valgrind.h],
7048         [ENABLE_VALGRIND=TRUE])
7049     CPPFLAGS=$prev_cppflags
7051 AC_SUBST([ENABLE_VALGRIND])
7052 if test -z "$ENABLE_VALGRIND"; then
7053     if test "$with_valgrind" = yes; then
7054         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7055     fi
7056     VALGRIND_CFLAGS=
7058 AC_SUBST([VALGRIND_CFLAGS])
7061 dnl ===================================================================
7062 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7063 dnl ===================================================================
7065 # We need at least the sys/sdt.h include header.
7066 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7067 if test "$SDT_H_FOUND" = "TRUE"; then
7068     # Found sys/sdt.h header, now make sure the c++ compiler works.
7069     # Old g++ versions had problems with probes in constructors/destructors.
7070     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7071     AC_LANG_PUSH([C++])
7072     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7073     #include <sys/sdt.h>
7074     class ProbeClass
7075     {
7076     private:
7077       int& ref;
7078       const char *name;
7080     public:
7081       ProbeClass(int& v, const char *n) : ref(v), name(n)
7082       {
7083         DTRACE_PROBE2(_test_, cons, name, ref);
7084       }
7086       void method(int min)
7087       {
7088         DTRACE_PROBE3(_test_, meth, name, ref, min);
7089         ref -= min;
7090       }
7092       ~ProbeClass()
7093       {
7094         DTRACE_PROBE2(_test_, dest, name, ref);
7095       }
7096     };
7097     ]],[[
7098     int i = 64;
7099     DTRACE_PROBE1(_test_, call, i);
7100     ProbeClass inst = ProbeClass(i, "call");
7101     inst.method(24);
7102     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7103           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7104     AC_LANG_POP([C++])
7106 AC_CONFIG_HEADERS([config_host/config_probes.h])
7108 dnl ===================================================================
7109 dnl GCC features
7110 dnl ===================================================================
7111 HAVE_GCC_STACK_CLASH_PROTECTION=
7112 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7113     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7114     save_CFLAGS=$CFLAGS
7115     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7116     AC_LINK_IFELSE(
7117         [AC_LANG_PROGRAM(, [[return 0;]])],
7118         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7119         [AC_MSG_RESULT([no])])
7120     CFLAGS=$save_CFLAGS
7122     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7123     save_CFLAGS=$CFLAGS
7124     CFLAGS="$CFLAGS -Werror -mno-avx"
7125     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7126     CFLAGS=$save_CFLAGS
7127     if test "$HAVE_GCC_AVX" = "TRUE"; then
7128         AC_MSG_RESULT([yes])
7129     else
7130         AC_MSG_RESULT([no])
7131     fi
7133     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7134     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7135     int v = 0;
7136     if (__sync_add_and_fetch(&v, 1) != 1 ||
7137         __sync_sub_and_fetch(&v, 1) != 0)
7138         return 1;
7139     __sync_synchronize();
7140     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7141         v != 1)
7142         return 1;
7143     return 0;
7144 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7145     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7146         AC_MSG_RESULT([yes])
7147         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7148     else
7149         AC_MSG_RESULT([no])
7150     fi
7152     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7153     AC_LANG_PUSH([C++])
7154     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7155             #include <cstddef>
7156             #include <cxxabi.h>
7157             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7158         ])], [
7159             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7160             AC_MSG_RESULT([yes])
7161         ], [AC_MSG_RESULT([no])])
7162     AC_LANG_POP([C++])
7164     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7165     AC_LANG_PUSH([C++])
7166     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7167             #include <cstddef>
7168             #include <cxxabi.h>
7169             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7170         ])], [
7171             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7172             AC_MSG_RESULT([yes])
7173         ], [AC_MSG_RESULT([no])])
7174     AC_LANG_POP([C++])
7176     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7177     AC_LANG_PUSH([C++])
7178     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7179             #include <cxxabi.h>
7180             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7181         ])], [
7182             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7183             AC_MSG_RESULT([yes])
7184         ], [AC_MSG_RESULT([no])])
7185     AC_LANG_POP([C++])
7187     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7188     AC_LANG_PUSH([C++])
7189     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7190             #include <cstddef>
7191             #include <cxxabi.h>
7192             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7193         ])], [
7194             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7195             AC_MSG_RESULT([yes])
7196         ], [AC_MSG_RESULT([no])])
7197     AC_LANG_POP([C++])
7199     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7200     AC_LANG_PUSH([C++])
7201     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7202             #include <cstddef>
7203             #include <cxxabi.h>
7204             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7205         ])], [
7206             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7207             AC_MSG_RESULT([yes])
7208         ], [AC_MSG_RESULT([no])])
7209     AC_LANG_POP([C++])
7211     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7212     AC_LANG_PUSH([C++])
7213     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7214             #include <cxxabi.h>
7215             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7216         ])], [
7217             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7218             AC_MSG_RESULT([yes])
7219         ], [AC_MSG_RESULT([no])])
7220     AC_LANG_POP([C++])
7222     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7223     AC_LANG_PUSH([C++])
7224     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7225             #include <cxxabi.h>
7226             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7227         ])], [
7228             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7229             AC_MSG_RESULT([yes])
7230         ], [AC_MSG_RESULT([no])])
7231     AC_LANG_POP([C++])
7233     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7234     AC_LANG_PUSH([C++])
7235     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7236             #include <cxxabi.h>
7237             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7238         ])], [
7239             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7240             AC_MSG_RESULT([yes])
7241         ], [AC_MSG_RESULT([no])])
7242     AC_LANG_POP([C++])
7244     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7245     AC_LANG_PUSH([C++])
7246     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7247             #include <cstddef>
7248             #include <cxxabi.h>
7249             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7250         ])], [
7251             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7252             AC_MSG_RESULT([yes])
7253         ], [AC_MSG_RESULT([no])])
7254     AC_LANG_POP([C++])
7256     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7257     AC_LANG_PUSH([C++])
7258     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7259             #include <cstddef>
7260             #include <cxxabi.h>
7261             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7262         ])], [
7263             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7264             AC_MSG_RESULT([yes])
7265         ], [AC_MSG_RESULT([no])])
7266     AC_LANG_POP([C++])
7269 AC_SUBST(HAVE_GCC_AVX)
7270 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7271 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7273 dnl ===================================================================
7274 dnl Identify the C++ library
7275 dnl ===================================================================
7277 AC_MSG_CHECKING([what the C++ library is])
7278 HAVE_LIBSTDCPP=
7279 AC_LANG_PUSH([C++])
7280 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7281 #include <utility>
7282 #ifndef __GLIBCXX__
7283 foo bar
7284 #endif
7285 ]])],
7286     [CPP_LIBRARY=GLIBCXX
7287      cpp_library_name="GNU libstdc++"
7288      HAVE_LIBSTDCPP=TRUE
7289     ],
7290     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7291 #include <utility>
7292 #ifndef _LIBCPP_VERSION
7293 foo bar
7294 #endif
7295 ]])],
7296     [CPP_LIBRARY=LIBCPP
7297      cpp_library_name="LLVM libc++"
7298      AC_DEFINE([HAVE_LIBCXX])
7299     ],
7300     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7301 #include <utility>
7302 #ifndef _MSC_VER
7303 foo bar
7304 #endif
7305 ]])],
7306     [CPP_LIBRARY=MSVCRT
7307      cpp_library_name="Microsoft"
7308     ],
7309     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7310 AC_MSG_RESULT([$cpp_library_name])
7311 AC_LANG_POP([C++])
7312 AC_SUBST([HAVE_LIBSTDCPP])
7314 dnl ===================================================================
7315 dnl Check for gperf
7316 dnl ===================================================================
7317 AC_PATH_PROG(GPERF, gperf)
7318 if test -z "$GPERF"; then
7319     AC_MSG_ERROR([gperf not found but needed. Install it.])
7321 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7322     GPERF=`cygpath -m $GPERF`
7324 AC_MSG_CHECKING([whether gperf is new enough])
7325 my_gperf_ver1=$($GPERF --version | head -n 1)
7326 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7327 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7328 if test "$my_gperf_ver3" -ge 301; then
7329     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7330 else
7331     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7333 AC_SUBST(GPERF)
7335 dnl ===================================================================
7336 dnl Check for system libcmis
7337 dnl ===================================================================
7338 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7340 dnl ===================================================================
7341 dnl C++11
7342 dnl ===================================================================
7344 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7345 CXXFLAGS_CXX11=
7346 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7347     if test "$with_latest_c__" = yes; then
7348         CXXFLAGS_CXX11=-std:c++latest
7349     else
7350         CXXFLAGS_CXX11=-std:c++17
7351     fi
7352     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7353 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7354     my_flags='-std=c++17 -std=c++1z'
7355     if test "$with_latest_c__" = yes; then
7356         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7357     fi
7358     for flag in $my_flags; do
7359         if test "$COM" = MSC; then
7360             flag="-Xclang $flag"
7361         fi
7362         save_CXXFLAGS=$CXXFLAGS
7363         CXXFLAGS="$CXXFLAGS $flag -Werror"
7364         if test "$SYSTEM_LIBCMIS" = TRUE; then
7365             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7366         fi
7367         AC_LANG_PUSH([C++])
7368         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7369             #include <algorithm>
7370             #include <functional>
7371             #include <vector>
7373             #if defined SYSTEM_LIBCMIS
7374             // See ucb/source/ucp/cmis/auth_provider.hxx:
7375             #if !defined __clang__
7376             #pragma GCC diagnostic push
7377             #pragma GCC diagnostic ignored "-Wdeprecated"
7378             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7379             #endif
7380             #include <libcmis/libcmis.hxx>
7381             #if !defined __clang__
7382             #pragma GCC diagnostic pop
7383             #endif
7384             #endif
7386             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7387                 std::sort(v.begin(), v.end(), fn);
7388             }
7389             ]])],[CXXFLAGS_CXX11=$flag])
7390         AC_LANG_POP([C++])
7391         CXXFLAGS=$save_CXXFLAGS
7392         if test -n "$CXXFLAGS_CXX11"; then
7393             break
7394         fi
7395     done
7397 if test -n "$CXXFLAGS_CXX11"; then
7398     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7399 else
7400     AC_MSG_ERROR(no)
7402 AC_SUBST(CXXFLAGS_CXX11)
7404 if test "$GCC" = "yes"; then
7405     save_CXXFLAGS=$CXXFLAGS
7406     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7407     CHECK_L_ATOMIC
7408     CXXFLAGS=$save_CXXFLAGS
7409     AC_SUBST(ATOMIC_LIB)
7412 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7413 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7414 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7415 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7416 dnl again towards 4.7.2:
7417 if test $CPP_LIBRARY = GLIBCXX; then
7418     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7419     AC_LANG_PUSH([C++])
7420     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7421 #include <list>
7422 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7423     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7424     //   GCC 4.7.0: 20120322
7425     //   GCC 4.7.1: 20120614
7426     // and using a range check is not possible as the mapping between
7427     // __GLIBCXX__ values and GCC versions is not monotonic
7428 /* ok */
7429 #else
7430 abi broken
7431 #endif
7432         ]])], [AC_MSG_RESULT(no, ok)],
7433         [AC_MSG_ERROR(yes)])
7434     AC_LANG_POP([C++])
7437 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7438 save_CXXFLAGS=$CXXFLAGS
7439 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7440 AC_LANG_PUSH([C++])
7442 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7443 #include <stddef.h>
7445 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7447 namespace
7449         struct b
7450         {
7451                 int i;
7452                 int j;
7453         };
7455 ]], [[
7456 struct a
7458         int i;
7459         int j;
7461 a thinga[]={{0,0}, {1,1}};
7462 b thingb[]={{0,0}, {1,1}};
7463 size_t i = sizeof(sal_n_array_size(thinga));
7464 size_t j = sizeof(sal_n_array_size(thingb));
7465 return !(i != 0 && j != 0);
7467     ], [ AC_MSG_RESULT(yes) ],
7468     [ AC_MSG_ERROR(no)])
7469 AC_LANG_POP([C++])
7470 CXXFLAGS=$save_CXXFLAGS
7472 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7473 if test "$GCC" = yes; then
7474     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7475     AC_LANG_PUSH([C++])
7476     save_CXXFLAGS=$CXXFLAGS
7477     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7478     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7479     CXXFLAGS=$save_CXXFLAGS
7480     AC_LANG_POP([C++])
7481     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7482         AC_MSG_RESULT([yes])
7483     else
7484         AC_MSG_RESULT([no])
7485     fi
7487 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7489 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7490 AC_LANG_PUSH([C++])
7491 save_CXXFLAGS=$CXXFLAGS
7492 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7493 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7494         #include <algorithm>
7495         #include <initializer_list>
7496         #include <vector>
7497         template<typename T> class S {
7498         private:
7499             std::vector<T> v_;
7500         public:
7501             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7502         };
7503         constinit S<int> s{3, 2, 1};
7504     ])], [
7505         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7506         AC_MSG_RESULT([yes])
7507     ], [AC_MSG_RESULT([no])])
7508 CXXFLAGS=$save_CXXFLAGS
7509 AC_LANG_POP([C++])
7511 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7512 AC_LANG_PUSH([C++])
7513 save_CXXFLAGS=$CXXFLAGS
7514 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7515 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7516         #include <span>
7517         #include <type_traits>
7518         // Don't check size_type directly, as it was called index_type before P1872R0:
7519         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7520     ])], [
7521         AC_DEFINE([HAVE_CPP_SPAN],[1])
7522         AC_MSG_RESULT([yes])
7523     ], [AC_MSG_RESULT([no])])
7524 CXXFLAGS=$save_CXXFLAGS
7525 AC_LANG_POP([C++])
7527 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7528 AC_LANG_PUSH([C++])
7529 save_CXXFLAGS=$CXXFLAGS
7530 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7531 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7532         struct S1 { S1(S1 &&); };
7533         struct S2: S1 {};
7534         S1 f(S2 s) { return s; }
7535     ])], [
7536         AC_DEFINE([HAVE_P1155R3],[1])
7537         AC_MSG_RESULT([yes])
7538     ], [AC_MSG_RESULT([no])])
7539 CXXFLAGS=$save_CXXFLAGS
7540 AC_LANG_POP([C++])
7542 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7543 HAVE_CXX20_ATOMIC_REF=
7544 AC_LANG_PUSH([C++])
7545 save_CXXFLAGS=$CXXFLAGS
7546 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7547 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7548         #include <atomic>
7549         int x;
7550         std::atomic_ref<int> y(x);
7551     ])], [
7552         HAVE_CXX20_ATOMIC_REF=TRUE
7553         AC_MSG_RESULT([yes])
7554     ], [AC_MSG_RESULT([no])])
7555 CXXFLAGS=$save_CXXFLAGS
7556 AC_LANG_POP([C++])
7557 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7559 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7560 dnl which is included in -Wextra anyway):
7561 HAVE_WDEPRECATED_COPY_DTOR=
7562 if test "$GCC" = yes; then
7563     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7564     AC_LANG_PUSH([C++])
7565     save_CXXFLAGS=$CXXFLAGS
7566     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7567     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7568             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7569             AC_MSG_RESULT([yes])
7570         ], [AC_MSG_RESULT([no])])
7571     CXXFLAGS=$save_CXXFLAGS
7572     AC_LANG_POP([C++])
7574 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7576 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7577 dnl uninitialized warning for code like
7579 dnl   OString f();
7580 dnl   boost::optional<OString> * g(bool b) {
7581 dnl       boost::optional<OString> o;
7582 dnl       if (b) o = f();
7583 dnl       return new boost::optional<OString>(o);
7584 dnl   }
7586 dnl (as is e.g. present, in a slightly more elaborate form, in
7587 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7588 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7589 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7590 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7591     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7592     AC_LANG_PUSH([C++])
7593     save_CXXFLAGS=$CXXFLAGS
7594     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7595     if test "$ENABLE_OPTIMIZED" = TRUE; then
7596         CXXFLAGS="$CXXFLAGS -O2"
7597     else
7598         CXXFLAGS="$CXXFLAGS -O0"
7599     fi
7600     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7601             #include <new>
7602             void f1(int);
7603             struct S1 {
7604                 ~S1() { f1(n); }
7605                 int n = 0;
7606             };
7607             struct S2 {
7608                 S2() {}
7609                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7610                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7611                 void set(S1 s) {
7612                     new (stg) S1(s);
7613                     init = true;
7614                 }
7615                 bool init = false;
7616                 char stg[sizeof (S1)];
7617             } ;
7618             S1 f2();
7619             S2 * f3(bool b) {
7620                 S2 o;
7621                 if (b) o.set(f2());
7622                 return new S2(o);
7623             }
7624         ]])], [AC_MSG_RESULT([no])], [
7625             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7626             AC_MSG_RESULT([yes])
7627         ])
7628     CXXFLAGS=$save_CXXFLAGS
7629     AC_LANG_POP([C++])
7631 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7633 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7634 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7635 dnl hits us e.g. with GCC 10 and --enable-optimized at
7637 dnl   In file included from include/rtl/string.hxx:49,
7638 dnl                    from include/rtl/ustring.hxx:43,
7639 dnl                    from include/osl/file.hxx:35,
7640 dnl                    from include/codemaker/global.hxx:28,
7641 dnl                    from include/codemaker/options.hxx:23,
7642 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7643 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7644 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,
7645 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,
7646 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,
7647 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7648 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7649 dnl      78 |         memcpy( buffer, data, length );
7650 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7651 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7652 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7653     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7654     AC_LANG_PUSH([C++])
7655     save_CXXFLAGS=$CXXFLAGS
7656     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7657     if test "$ENABLE_OPTIMIZED" = TRUE; then
7658         CXXFLAGS="$CXXFLAGS -O2"
7659     else
7660         CXXFLAGS="$CXXFLAGS -O0"
7661     fi
7662     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7663     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7664             void fill(char const * begin, char const * end, char c);
7665             struct q {
7666                 char ids[4];
7667                 char username[6];
7668             };
7669             void test(q & c) {
7670                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7671                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7672             }
7673         ]])], [AC_MSG_RESULT([no])], [
7674             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7675             AC_MSG_RESULT([yes])
7676         ])
7677     CXXFLAGS=$save_CXXFLAGS
7678     AC_LANG_POP([C++])
7680 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7682 HAVE_DLLEXPORTINLINES=
7683 if test "$_os" = "WINNT"; then
7684     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7685     AC_LANG_PUSH([C++])
7686     save_CXXFLAGS=$CXXFLAGS
7687     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7688     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7689             HAVE_DLLEXPORTINLINES=TRUE
7690             AC_MSG_RESULT([yes])
7691         ], [AC_MSG_RESULT([no])])
7692     CXXFLAGS=$save_CXXFLAGS
7693     AC_LANG_POP([C++])
7695 AC_SUBST([HAVE_DLLEXPORTINLINES])
7697 dnl ===================================================================
7698 dnl CPU Intrinsics support - SSE, AVX
7699 dnl ===================================================================
7701 CXXFLAGS_INTRINSICS_SSE2=
7702 CXXFLAGS_INTRINSICS_SSSE3=
7703 CXXFLAGS_INTRINSICS_SSE41=
7704 CXXFLAGS_INTRINSICS_SSE42=
7705 CXXFLAGS_INTRINSICS_AVX=
7706 CXXFLAGS_INTRINSICS_AVX2=
7707 CXXFLAGS_INTRINSICS_AVX512=
7708 CXXFLAGS_INTRINSICS_AVX512F=
7709 CXXFLAGS_INTRINSICS_F16C=
7710 CXXFLAGS_INTRINSICS_FMA=
7712 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7713     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7714     flag_sse2=-msse2
7715     flag_ssse3=-mssse3
7716     flag_sse41=-msse4.1
7717     flag_sse42=-msse4.2
7718     flag_avx=-mavx
7719     flag_avx2=-mavx2
7720     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7721     flag_avx512f=-mavx512f
7722     flag_f16c=-mf16c
7723     flag_fma=-mfma
7724 else
7725     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7726     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7727     # SSE2 seems to be SSE2+.
7728     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7729     # is not empty (and can be tested in gbuild).
7730     flag_sse2=-arch:SSE2
7731     flag_ssse3=-arch:SSE2
7732     flag_sse41=-arch:SSE2
7733     flag_sse42=-arch:SSE2
7734     flag_avx=-arch:AVX
7735     flag_avx2=-arch:AVX2
7736     flag_avx512=-arch:AVX512
7737     flag_avx512f=-arch:AVX512
7738     # These are part of -arch:AVX2
7739     flag_f16c=-arch:AVX2
7740     flag_fma=-arch:AVX2
7743 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7744 AC_LANG_PUSH([C++])
7745 save_CXXFLAGS=$CXXFLAGS
7746 CXXFLAGS="$CXXFLAGS $flag_sse2"
7747 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7748     #include <emmintrin.h>
7749     int main () {
7750         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7751         c = _mm_xor_si128 (a, b);
7752         return 0;
7753     }
7754     ])],
7755     [can_compile_sse2=yes],
7756     [can_compile_sse2=no])
7757 AC_LANG_POP([C++])
7758 CXXFLAGS=$save_CXXFLAGS
7759 AC_MSG_RESULT([${can_compile_sse2}])
7760 if test "${can_compile_sse2}" = "yes" ; then
7761     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7764 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7765 AC_LANG_PUSH([C++])
7766 save_CXXFLAGS=$CXXFLAGS
7767 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7768 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7769     #include <tmmintrin.h>
7770     int main () {
7771         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7772         c = _mm_maddubs_epi16 (a, b);
7773         return 0;
7774     }
7775     ])],
7776     [can_compile_ssse3=yes],
7777     [can_compile_ssse3=no])
7778 AC_LANG_POP([C++])
7779 CXXFLAGS=$save_CXXFLAGS
7780 AC_MSG_RESULT([${can_compile_ssse3}])
7781 if test "${can_compile_ssse3}" = "yes" ; then
7782     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7785 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7786 AC_LANG_PUSH([C++])
7787 save_CXXFLAGS=$CXXFLAGS
7788 CXXFLAGS="$CXXFLAGS $flag_sse41"
7789 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7790     #include <smmintrin.h>
7791     int main () {
7792         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7793         c = _mm_cmpeq_epi64 (a, b);
7794         return 0;
7795     }
7796     ])],
7797     [can_compile_sse41=yes],
7798     [can_compile_sse41=no])
7799 AC_LANG_POP([C++])
7800 CXXFLAGS=$save_CXXFLAGS
7801 AC_MSG_RESULT([${can_compile_sse41}])
7802 if test "${can_compile_sse41}" = "yes" ; then
7803     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7806 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7807 AC_LANG_PUSH([C++])
7808 save_CXXFLAGS=$CXXFLAGS
7809 CXXFLAGS="$CXXFLAGS $flag_sse42"
7810 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7811     #include <nmmintrin.h>
7812     int main () {
7813         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7814         c = _mm_cmpgt_epi64 (a, b);
7815         return 0;
7816     }
7817     ])],
7818     [can_compile_sse42=yes],
7819     [can_compile_sse42=no])
7820 AC_LANG_POP([C++])
7821 CXXFLAGS=$save_CXXFLAGS
7822 AC_MSG_RESULT([${can_compile_sse42}])
7823 if test "${can_compile_sse42}" = "yes" ; then
7824     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7827 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7828 AC_LANG_PUSH([C++])
7829 save_CXXFLAGS=$CXXFLAGS
7830 CXXFLAGS="$CXXFLAGS $flag_avx"
7831 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7832     #include <immintrin.h>
7833     int main () {
7834         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7835         c = _mm256_xor_ps(a, b);
7836         return 0;
7837     }
7838     ])],
7839     [can_compile_avx=yes],
7840     [can_compile_avx=no])
7841 AC_LANG_POP([C++])
7842 CXXFLAGS=$save_CXXFLAGS
7843 AC_MSG_RESULT([${can_compile_avx}])
7844 if test "${can_compile_avx}" = "yes" ; then
7845     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7848 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7849 AC_LANG_PUSH([C++])
7850 save_CXXFLAGS=$CXXFLAGS
7851 CXXFLAGS="$CXXFLAGS $flag_avx2"
7852 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7853     #include <immintrin.h>
7854     int main () {
7855         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7856         c = _mm256_maddubs_epi16(a, b);
7857         return 0;
7858     }
7859     ])],
7860     [can_compile_avx2=yes],
7861     [can_compile_avx2=no])
7862 AC_LANG_POP([C++])
7863 CXXFLAGS=$save_CXXFLAGS
7864 AC_MSG_RESULT([${can_compile_avx2}])
7865 if test "${can_compile_avx2}" = "yes" ; then
7866     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7869 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7870 AC_LANG_PUSH([C++])
7871 save_CXXFLAGS=$CXXFLAGS
7872 CXXFLAGS="$CXXFLAGS $flag_avx512"
7873 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7874     #include <immintrin.h>
7875     int main () {
7876         __m512i a = _mm512_loadu_si512(0);
7877         __m512d v1 = _mm512_load_pd(0);
7878         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7879         __m512d v2 = _mm512_abs_pd(v1);
7880         return 0;
7881     }
7882     ])],
7883     [can_compile_avx512=yes],
7884     [can_compile_avx512=no])
7885 AC_LANG_POP([C++])
7886 CXXFLAGS=$save_CXXFLAGS
7887 AC_MSG_RESULT([${can_compile_avx512}])
7888 if test "${can_compile_avx512}" = "yes" ; then
7889     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7890     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7893 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7894 AC_LANG_PUSH([C++])
7895 save_CXXFLAGS=$CXXFLAGS
7896 CXXFLAGS="$CXXFLAGS $flag_f16c"
7897 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7898     #include <immintrin.h>
7899     int main () {
7900         __m128i a = _mm_set1_epi32 (0);
7901         __m128 c;
7902         c = _mm_cvtph_ps(a);
7903         return 0;
7904     }
7905     ])],
7906     [can_compile_f16c=yes],
7907     [can_compile_f16c=no])
7908 AC_LANG_POP([C++])
7909 CXXFLAGS=$save_CXXFLAGS
7910 AC_MSG_RESULT([${can_compile_f16c}])
7911 if test "${can_compile_f16c}" = "yes" ; then
7912     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7915 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7916 AC_LANG_PUSH([C++])
7917 save_CXXFLAGS=$CXXFLAGS
7918 CXXFLAGS="$CXXFLAGS $flag_fma"
7919 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7920     #include <immintrin.h>
7921     int main () {
7922         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7923         d = _mm256_fmadd_ps(a, b, c);
7924         return 0;
7925     }
7926     ])],
7927     [can_compile_fma=yes],
7928     [can_compile_fma=no])
7929 AC_LANG_POP([C++])
7930 CXXFLAGS=$save_CXXFLAGS
7931 AC_MSG_RESULT([${can_compile_fma}])
7932 if test "${can_compile_fma}" = "yes" ; then
7933     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7936 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7937 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7938 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7939 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7940 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7941 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7942 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7943 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7944 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7945 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7947 dnl ===================================================================
7948 dnl system stl sanity tests
7949 dnl ===================================================================
7950 if test "$_os" != "WINNT"; then
7952     AC_LANG_PUSH([C++])
7954     save_CPPFLAGS="$CPPFLAGS"
7955     if test -n "$MACOSX_SDK_PATH"; then
7956         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7957     fi
7959     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7960     # only.
7961     if test "$CPP_LIBRARY" = GLIBCXX; then
7962         dnl gcc#19664, gcc#22482, rhbz#162935
7963         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7964         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7965         AC_MSG_RESULT([$stlvisok])
7966         if test "$stlvisok" = "no"; then
7967             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7968         fi
7969     fi
7971     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7972     # when we don't make any dynamic libraries?
7973     if test "$DISABLE_DYNLOADING" = ""; then
7974         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7975         cat > conftestlib1.cc <<_ACEOF
7976 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7977 struct S2: S1<int> { virtual ~S2(); };
7978 S2::~S2() {}
7979 _ACEOF
7980         cat > conftestlib2.cc <<_ACEOF
7981 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7982 struct S2: S1<int> { virtual ~S2(); };
7983 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7984 _ACEOF
7985         gccvisinlineshiddenok=yes
7986         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7987             gccvisinlineshiddenok=no
7988         else
7989             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7990             dnl known to not work with -z defs (unsetting which makes the test
7991             dnl moot, though):
7992             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7993             if test "$COM_IS_CLANG" = TRUE; then
7994                 for i in $CXX $CXXFLAGS; do
7995                     case $i in
7996                     -fsanitize=*)
7997                         my_linkflagsnoundefs=
7998                         break
7999                         ;;
8000                     esac
8001                 done
8002             fi
8003             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8004                 gccvisinlineshiddenok=no
8005             fi
8006         fi
8008         rm -fr libconftest*
8009         AC_MSG_RESULT([$gccvisinlineshiddenok])
8010         if test "$gccvisinlineshiddenok" = "no"; then
8011             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8012         fi
8013     fi
8015    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8016     cat >visibility.cxx <<_ACEOF
8017 #pragma GCC visibility push(hidden)
8018 struct __attribute__ ((visibility ("default"))) TestStruct {
8019   static void Init();
8021 __attribute__ ((visibility ("default"))) void TestFunc() {
8022   TestStruct::Init();
8024 _ACEOF
8025     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8026         gccvisbroken=yes
8027     else
8028         case "$host_cpu" in
8029         i?86|x86_64)
8030             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8031                 gccvisbroken=no
8032             else
8033                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8034                     gccvisbroken=no
8035                 else
8036                     gccvisbroken=yes
8037                 fi
8038             fi
8039             ;;
8040         *)
8041             gccvisbroken=no
8042             ;;
8043         esac
8044     fi
8045     rm -f visibility.s visibility.cxx
8047     AC_MSG_RESULT([$gccvisbroken])
8048     if test "$gccvisbroken" = "yes"; then
8049         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8050     fi
8052     CPPFLAGS="$save_CPPFLAGS"
8054     AC_MSG_CHECKING([if CET endbranch is recognized])
8055 cat > endbr.s <<_ACEOF
8056 endbr32
8057 _ACEOF
8058     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8059     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8060         AC_MSG_RESULT([yes])
8061         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8062     else
8063         AC_MSG_RESULT([no])
8064     fi
8065     rm -f endbr.s endbr.o
8066     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8068     AC_LANG_POP([C++])
8071 dnl ===================================================================
8072 dnl  Clang++ tests
8073 dnl ===================================================================
8075 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8076 if test "$GCC" = "yes"; then
8077     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8078     AC_LANG_PUSH([C++])
8079     save_CXXFLAGS=$CXXFLAGS
8080     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8081     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8082     CXXFLAGS=$save_CXXFLAGS
8083     AC_LANG_POP([C++])
8084     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8085         AC_MSG_RESULT([yes])
8086     else
8087         AC_MSG_RESULT([no])
8088     fi
8090 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8092 dnl ===================================================================
8093 dnl Compiler plugins
8094 dnl ===================================================================
8096 COMPILER_PLUGINS=
8097 # currently only Clang
8099 if test "$COM_IS_CLANG" != "TRUE"; then
8100     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8101         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8102         enable_compiler_plugins=no
8103     fi
8106 COMPILER_PLUGINS_COM_IS_CLANG=
8107 if test "$COM_IS_CLANG" = "TRUE"; then
8108     if test -n "$enable_compiler_plugins"; then
8109         compiler_plugins="$enable_compiler_plugins"
8110     elif test -n "$ENABLE_DBGUTIL"; then
8111         compiler_plugins=test
8112     else
8113         compiler_plugins=no
8114     fi
8115     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8116         if test "$CLANGVER" -lt 50002; then
8117             if test "$compiler_plugins" = yes; then
8118                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8119             else
8120                 compiler_plugins=no
8121             fi
8122         fi
8123     fi
8124     if test "$compiler_plugins" != "no"; then
8125         dnl The prefix where Clang resides, override to where Clang resides if
8126         dnl using a source build:
8127         if test -z "$CLANGDIR"; then
8128             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8129         fi
8130         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8131         if test -z "$COMPILER_PLUGINS_CXX"; then
8132             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8133         fi
8134         clangbindir=$CLANGDIR/bin
8135         if test "$build_os" = "cygwin"; then
8136             clangbindir=$(cygpath -u "$clangbindir")
8137         fi
8138         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8139         if test -n "$LLVM_CONFIG"; then
8140             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8141             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8142             if test -z "$CLANGLIBDIR"; then
8143                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8144             fi
8145             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8146             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8147             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8148             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8149                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8150             fi
8151             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8152             clangobjdir=$($LLVM_CONFIG --obj-root)
8153             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8154                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8155             fi
8156         fi
8157         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8158         AC_LANG_PUSH([C++])
8159         save_CXX=$CXX
8160         save_CXXCPP=$CXXCPP
8161         save_CPPFLAGS=$CPPFLAGS
8162         save_CXXFLAGS=$CXXFLAGS
8163         save_LDFLAGS=$LDFLAGS
8164         save_LIBS=$LIBS
8165         CXX=$COMPILER_PLUGINS_CXX
8166         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8167         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8168         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8169         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8170             [COMPILER_PLUGINS=TRUE],
8171             [
8172             if test "$compiler_plugins" = "yes"; then
8173                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8174             else
8175                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8176                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8177             fi
8178             ])
8179         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8180         dnl comment in compilerplugins/Makefile-clang.mk:
8181         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8182             LDFLAGS=""
8183             AC_MSG_CHECKING([for clang libraries to use])
8184             if test -z "$CLANGTOOLLIBS"; then
8185                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8186  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8187                 AC_LINK_IFELSE([
8188                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8189                         [[ clang::FullSourceLoc().dump(); ]])
8190                 ],[CLANGTOOLLIBS="$LIBS"],[])
8191             fi
8192             if test -z "$CLANGTOOLLIBS"; then
8193                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8194                 AC_LINK_IFELSE([
8195                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8196                         [[ clang::FullSourceLoc().dump(); ]])
8197                 ],[CLANGTOOLLIBS="$LIBS"],[])
8198             fi
8199             AC_MSG_RESULT([$CLANGTOOLLIBS])
8200             if test -z "$CLANGTOOLLIBS"; then
8201                 if test "$compiler_plugins" = "yes"; then
8202                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8203                 else
8204                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8205                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8206                 fi
8207                 COMPILER_PLUGINS=
8208             fi
8209             if test -n "$COMPILER_PLUGINS"; then
8210                 if test -z "$CLANGSYSINCLUDE"; then
8211                     if test -n "$LLVM_CONFIG"; then
8212                         # Path to the clang system headers (no idea if there's a better way to get it).
8213                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8214                     fi
8215                 fi
8216             fi
8217         fi
8218         CXX=$save_CXX
8219         CXXCPP=$save_CXXCPP
8220         CPPFLAGS=$save_CPPFLAGS
8221         CXXFLAGS=$save_CXXFLAGS
8222         LDFLAGS=$save_LDFLAGS
8223         LIBS="$save_LIBS"
8224         AC_LANG_POP([C++])
8226         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8227         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8228             #ifndef __clang__
8229             you lose
8230             #endif
8231             int foo=42;
8232             ]])],
8233             [AC_MSG_RESULT([yes])
8234              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8235             [AC_MSG_RESULT([no])])
8236         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8237     fi
8238 else
8239     if test "$enable_compiler_plugins" = "yes"; then
8240         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8241     fi
8243 COMPILER_PLUGINS_ANALYZER_PCH=
8244 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8245     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8247 AC_SUBST(COMPILER_PLUGINS)
8248 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8249 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8250 AC_SUBST(COMPILER_PLUGINS_CXX)
8251 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8252 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8253 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8254 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8255 AC_SUBST(CLANGDIR)
8256 AC_SUBST(CLANGLIBDIR)
8257 AC_SUBST(CLANGTOOLLIBS)
8258 AC_SUBST(CLANGSYSINCLUDE)
8260 # Plugin to help linker.
8261 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8262 # This makes --enable-lto build with clang work.
8263 AC_SUBST(LD_PLUGIN)
8265 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8266 AC_SUBST(HAVE_POSIX_FALLOCATE)
8268 JITC_PROCESSOR_TYPE=""
8269 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8270     # IBMs JDK needs this...
8271     JITC_PROCESSOR_TYPE=6
8272     export JITC_PROCESSOR_TYPE
8274 AC_SUBST([JITC_PROCESSOR_TYPE])
8276 # Misc Windows Stuff
8277 AC_ARG_WITH(ucrt-dir,
8278     AS_HELP_STRING([--with-ucrt-dir],
8279         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8280         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8281         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8282             Windows6.1-KB2999226-x64.msu
8283             Windows6.1-KB2999226-x86.msu
8284             Windows8.1-KB2999226-x64.msu
8285             Windows8.1-KB2999226-x86.msu
8286             Windows8-RT-KB2999226-x64.msu
8287             Windows8-RT-KB2999226-x86.msu
8288         A zip archive including those files is available from Microsoft site:
8289         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8292 UCRT_REDISTDIR="$with_ucrt_dir"
8293 if test $_os = "WINNT"; then
8294     find_msvc_x64_dlls
8295     for i in $PKGFORMAT; do
8296         if test "$i" = msi; then
8297             find_msms
8298             break
8299         fi
8300     done
8301     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8302     MSVC_DLLS="$msvcdlls"
8303     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8304     # MSVC 15.3 changed it to VC141
8305     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8306         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8307     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8308         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8309     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8310         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8311     else
8312         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8313     fi
8315     if test "$UCRT_REDISTDIR" = "no"; then
8316         dnl explicitly disabled
8317         UCRT_REDISTDIR=""
8318     else
8319         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8320                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8321                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8322                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8323                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8324                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8325             UCRT_REDISTDIR=""
8326             if test -n "$PKGFORMAT"; then
8327                for i in $PKGFORMAT; do
8328                    case "$i" in
8329                    msi)
8330                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8331                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8332                        ;;
8333                    esac
8334                done
8335             fi
8336         fi
8337     fi
8340 AC_SUBST(UCRT_REDISTDIR)
8341 AC_SUBST(MSVC_DLL_PATH)
8342 AC_SUBST(MSVC_DLLS)
8343 AC_SUBST(MSM_PATH)
8346 dnl ===================================================================
8347 dnl Checks for Java
8348 dnl ===================================================================
8349 if test "$ENABLE_JAVA" != ""; then
8351     # Windows-specific tests
8352     if test "$build_os" = "cygwin"; then
8353         if test -z "$with_jdk_home"; then
8354             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8355             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8356             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8357             if test -n "$regvalue"; then
8358                 ver=$regvalue
8359                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8360                 with_jdk_home=$regvalue
8361             fi
8362             howfound="found automatically"
8363         else
8364             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8365             howfound="you passed"
8366         fi
8368         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8369             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])
8370         fi
8371     fi
8373     # 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.
8374     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8375     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8376         with_jdk_home=`/usr/libexec/java_home`
8377     fi
8379     JAVA_HOME=; export JAVA_HOME
8380     if test -z "$with_jdk_home"; then
8381         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8382     else
8383         _java_path="$with_jdk_home/bin/$with_java"
8384         dnl Check if there is a Java interpreter at all.
8385         if test -x "$_java_path"; then
8386             JAVAINTERPRETER=$_java_path
8387         else
8388             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8389         fi
8390     fi
8392     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8393     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8394     dnl loaded by java to run JunitTests:
8395     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8396         shortjdkhome=`cygpath -d "$with_jdk_home"`
8397         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
8398             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8399             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8400         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
8401             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8402             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8403         fi
8405         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8406             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8407         fi
8408         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8409     elif test "$cross_compiling" != "yes"; then
8410         case $CPUNAME in
8411             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8412                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8413                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8414                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8415                 fi
8416                 ;;
8417             *) # assumption: everything else 32-bit
8418                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8419                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8420                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8421                 fi
8422                 ;;
8423         esac
8424     fi
8427 dnl ===================================================================
8428 dnl Checks for JDK.
8429 dnl ===================================================================
8431 # Whether all the complexity here actually is needed any more or not, no idea.
8433 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8434     _gij_longver=0
8435     AC_MSG_CHECKING([the installed JDK])
8436     if test -n "$JAVAINTERPRETER"; then
8437         dnl java -version sends output to stderr!
8438         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8439             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8440         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8441             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8442         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8443             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8444         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8445             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8446         else
8447             JDK=sun
8449             dnl Sun JDK specific tests
8450             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8451             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8453             if test "$_jdk_ver" -lt 10900; then
8454                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8455             fi
8456             if test "$_jdk_ver" -gt 10900; then
8457                 JAVA_CLASSPATH_NOT_SET=TRUE
8458             fi
8460             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8461             if test "$_os" = "WINNT"; then
8462                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8463             fi
8464             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8466             # set to limit VM usage for JunitTests
8467             JAVAIFLAGS=-Xmx64M
8468             # set to limit VM usage for javac
8469             JAVACFLAGS=-J-Xmx128M
8470         fi
8471     else
8472         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8473     fi
8474 else
8475     if test -z "$ENABLE_JAVA"; then
8476         dnl Java disabled
8477         JAVA_HOME=
8478         export JAVA_HOME
8479     elif test "$cross_compiling" = "yes"; then
8480         # Just assume compatibility of build and host JDK
8481         JDK=$JDK_FOR_BUILD
8482         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8483     fi
8486 dnl ===================================================================
8487 dnl Checks for javac
8488 dnl ===================================================================
8489 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8490     javacompiler="javac"
8491     : ${JAVA_SOURCE_VER=8}
8492     : ${JAVA_TARGET_VER=8}
8493     if test -z "$with_jdk_home"; then
8494         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8495     else
8496         _javac_path="$with_jdk_home/bin/$javacompiler"
8497         dnl Check if there is a Java compiler at all.
8498         if test -x "$_javac_path"; then
8499             JAVACOMPILER=$_javac_path
8500         fi
8501     fi
8502     if test -z "$JAVACOMPILER"; then
8503         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8504     fi
8505     if test "$build_os" = "cygwin"; then
8506         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8507             JAVACOMPILER="${JAVACOMPILER}.exe"
8508         fi
8509         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8510     fi
8513 dnl ===================================================================
8514 dnl Checks for javadoc
8515 dnl ===================================================================
8516 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8517     if test -z "$with_jdk_home"; then
8518         AC_PATH_PROG(JAVADOC, javadoc)
8519     else
8520         _javadoc_path="$with_jdk_home/bin/javadoc"
8521         dnl Check if there is a javadoc at all.
8522         if test -x "$_javadoc_path"; then
8523             JAVADOC=$_javadoc_path
8524         else
8525             AC_PATH_PROG(JAVADOC, javadoc)
8526         fi
8527     fi
8528     if test -z "$JAVADOC"; then
8529         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8530     fi
8531     if test "$build_os" = "cygwin"; then
8532         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8533             JAVADOC="${JAVADOC}.exe"
8534         fi
8535         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8536     fi
8538     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8539     JAVADOCISGJDOC="yes"
8540     fi
8542 AC_SUBST(JAVADOC)
8543 AC_SUBST(JAVADOCISGJDOC)
8545 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8546     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8547     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8548         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8549            # try to recover first by looking whether we have an alternative
8550            # system as in Debian or newer SuSEs where following /usr/bin/javac
8551            # over /etc/alternatives/javac leads to the right bindir where we
8552            # just need to strip a bit away to get a valid JAVA_HOME
8553            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8554         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8555             # maybe only one level of symlink (e.g. on Mac)
8556             JAVA_HOME=$(readlink $JAVACOMPILER)
8557             if test "$(dirname $JAVA_HOME)" = "."; then
8558                 # we've got no path to trim back
8559                 JAVA_HOME=""
8560             fi
8561         else
8562             # else warn
8563             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8564             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8565             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8566             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8567         fi
8568         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8569         if test "$JAVA_HOME" != "/usr"; then
8570             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8571                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8572                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8573                 dnl Tiger already returns a JDK path...
8574                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8575             else
8576                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8577                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8578                 dnl that checks which version to run
8579                 if test -f "$JAVA_HOME"; then
8580                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8581                 fi
8582             fi
8583         fi
8584     fi
8585     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8587     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8588     if test -z "$JAVA_HOME"; then
8589         if test "x$with_jdk_home" = "x"; then
8590             cat > findhome.java <<_ACEOF
8591 [import java.io.File;
8593 class findhome
8595     public static void main(String args[])
8596     {
8597         String jrelocation = System.getProperty("java.home");
8598         File jre = new File(jrelocation);
8599         System.out.println(jre.getParent());
8600     }
8602 _ACEOF
8603             AC_MSG_CHECKING([if javac works])
8604             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8605             AC_TRY_EVAL(javac_cmd)
8606             if test $? = 0 -a -f ./findhome.class; then
8607                 AC_MSG_RESULT([javac works])
8608             else
8609                 echo "configure: javac test failed" >&5
8610                 cat findhome.java >&5
8611                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8612             fi
8613             AC_MSG_CHECKING([if gij knows its java.home])
8614             JAVA_HOME=`$JAVAINTERPRETER findhome`
8615             if test $? = 0 -a "$JAVA_HOME" != ""; then
8616                 AC_MSG_RESULT([$JAVA_HOME])
8617             else
8618                 echo "configure: java test failed" >&5
8619                 cat findhome.java >&5
8620                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8621             fi
8622             # clean-up after ourselves
8623             rm -f ./findhome.java ./findhome.class
8624         else
8625             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8626         fi
8627     fi
8629     # now check if $JAVA_HOME is really valid
8630     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8631         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8632             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8633             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8634             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8635             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8636             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8637             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8638         fi
8639     fi
8640     PathFormat "$JAVA_HOME"
8641     JAVA_HOME="$formatted_path"
8644 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8645     "$_os" != Darwin
8646 then
8647     AC_MSG_CHECKING([for JAWT lib])
8648     if test "$_os" = WINNT; then
8649         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8650         JAWTLIB=jawt.lib
8651     else
8652         case "$host_cpu" in
8653         arm*)
8654             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8655             JAVA_ARCH=$my_java_arch
8656             ;;
8657         i*86)
8658             my_java_arch=i386
8659             ;;
8660         m68k)
8661             my_java_arch=m68k
8662             ;;
8663         powerpc)
8664             my_java_arch=ppc
8665             ;;
8666         powerpc64)
8667             my_java_arch=ppc64
8668             ;;
8669         powerpc64le)
8670             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8671             JAVA_ARCH=$my_java_arch
8672             ;;
8673         sparc64)
8674             my_java_arch=sparcv9
8675             ;;
8676         x86_64)
8677             my_java_arch=amd64
8678             ;;
8679         *)
8680             my_java_arch=$host_cpu
8681             ;;
8682         esac
8683         # This is where JDK9 puts the library
8684         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8685             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8686         else
8687             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8688         fi
8689         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8690     fi
8691     AC_MSG_RESULT([$JAWTLIB])
8693 AC_SUBST(JAWTLIB)
8695 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8696     case "$host_os" in
8698     aix*)
8699         JAVAINC="-I$JAVA_HOME/include"
8700         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8701         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8702         ;;
8704     cygwin*|wsl*)
8705         JAVAINC="-I$JAVA_HOME/include/win32"
8706         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8707         ;;
8709     darwin*|macos*)
8710         if test -d "$JAVA_HOME/include/darwin"; then
8711             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8712         else
8713             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8714         fi
8715         ;;
8717     dragonfly*)
8718         JAVAINC="-I$JAVA_HOME/include"
8719         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8720         ;;
8722     freebsd*)
8723         JAVAINC="-I$JAVA_HOME/include"
8724         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8725         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8726         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8727         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8728         ;;
8730     k*bsd*-gnu*)
8731         JAVAINC="-I$JAVA_HOME/include"
8732         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8733         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8734         ;;
8736     linux-gnu*)
8737         JAVAINC="-I$JAVA_HOME/include"
8738         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8739         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8740         ;;
8742     *netbsd*)
8743         JAVAINC="-I$JAVA_HOME/include"
8744         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8745         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8746        ;;
8748     openbsd*)
8749         JAVAINC="-I$JAVA_HOME/include"
8750         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8751         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8752         ;;
8754     solaris*)
8755         JAVAINC="-I$JAVA_HOME/include"
8756         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8757         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8758         ;;
8759     esac
8761 SOLARINC="$SOLARINC $JAVAINC"
8763 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8764     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8765     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8766     JDK_FOR_BUILD=$JDK
8769 AC_SUBST(JAVACFLAGS)
8770 AC_SUBST(JAVACOMPILER)
8771 AC_SUBST(JAVAINTERPRETER)
8772 AC_SUBST(JAVAIFLAGS)
8773 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8774 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8775 AC_SUBST(JAVA_HOME)
8776 AC_SUBST(JAVA_HOME_FOR_BUILD)
8777 AC_SUBST(JDK)
8778 AC_SUBST(JDK_FOR_BUILD)
8779 AC_SUBST(JAVA_SOURCE_VER)
8780 AC_SUBST(JAVA_TARGET_VER)
8783 dnl ===================================================================
8784 dnl Export file validation
8785 dnl ===================================================================
8786 AC_MSG_CHECKING([whether to enable export file validation])
8787 if test "$with_export_validation" != "no"; then
8788     if test -z "$ENABLE_JAVA"; then
8789         if test "$with_export_validation" = "yes"; then
8790             AC_MSG_ERROR([requested, but Java is disabled])
8791         else
8792             AC_MSG_RESULT([no, as Java is disabled])
8793         fi
8794     elif ! test -d "${SRC_ROOT}/schema"; then
8795         if test "$with_export_validation" = "yes"; then
8796             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8797         else
8798             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8799         fi
8800     else
8801         AC_MSG_RESULT([yes])
8802         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8804         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8805         if test -z "$ODFVALIDATOR"; then
8806             # remember to download the ODF toolkit with validator later
8807             AC_MSG_NOTICE([no odfvalidator found, will download it])
8808             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8809             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8811             # and fetch name of odfvalidator jar name from download.lst
8812             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8813             AC_SUBST(ODFVALIDATOR_JAR)
8815             if test -z "$ODFVALIDATOR_JAR"; then
8816                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8817             fi
8818         fi
8819         if test "$build_os" = "cygwin"; then
8820             # In case of Cygwin it will be executed from Windows,
8821             # so we need to run bash and absolute path to validator
8822             # so instead of "odfvalidator" it will be
8823             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8824             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8825         else
8826             ODFVALIDATOR="sh $ODFVALIDATOR"
8827         fi
8828         AC_SUBST(ODFVALIDATOR)
8831         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8832         if test -z "$OFFICEOTRON"; then
8833             # remember to download the officeotron with validator later
8834             AC_MSG_NOTICE([no officeotron found, will download it])
8835             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8836             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8838             # and fetch name of officeotron jar name from download.lst
8839             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8840             AC_SUBST(OFFICEOTRON_JAR)
8842             if test -z "$OFFICEOTRON_JAR"; then
8843                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8844             fi
8845         else
8846             # check version of existing officeotron
8847             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8848             if test 0"$OFFICEOTRON_VER" -lt 704; then
8849                 AC_MSG_ERROR([officeotron too old])
8850             fi
8851         fi
8852         if test "$build_os" = "cygwin"; then
8853             # In case of Cygwin it will be executed from Windows,
8854             # so we need to run bash and absolute path to validator
8855             # so instead of "odfvalidator" it will be
8856             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8857             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8858         else
8859             OFFICEOTRON="sh $OFFICEOTRON"
8860         fi
8861     fi
8862     AC_SUBST(OFFICEOTRON)
8863 else
8864     AC_MSG_RESULT([no])
8867 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8868 if test "$with_bffvalidator" != "no"; then
8869     AC_DEFINE(HAVE_BFFVALIDATOR)
8871     if test "$with_export_validation" = "no"; then
8872         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8873     fi
8875     if test "$with_bffvalidator" = "yes"; then
8876         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8877     else
8878         BFFVALIDATOR="$with_bffvalidator"
8879     fi
8881     if test "$build_os" = "cygwin"; then
8882         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8883             AC_MSG_RESULT($BFFVALIDATOR)
8884         else
8885             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8886         fi
8887     elif test -n "$BFFVALIDATOR"; then
8888         # We are not in Cygwin but need to run Windows binary with wine
8889         AC_PATH_PROGS(WINE, wine)
8891         # so swap in a shell wrapper that converts paths transparently
8892         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8893         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8894         AC_SUBST(BFFVALIDATOR_EXE)
8895         AC_MSG_RESULT($BFFVALIDATOR)
8896     else
8897         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8898     fi
8899     AC_SUBST(BFFVALIDATOR)
8900 else
8901     AC_MSG_RESULT([no])
8904 dnl ===================================================================
8905 dnl Check for C preprocessor to use
8906 dnl ===================================================================
8907 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8908 SYSTEM_UCPP_IS_GCC=
8909 if test -n "$with_idlc_cpp"; then
8910     AC_MSG_RESULT([$with_idlc_cpp])
8911     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8912     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8913     # ucpp will accept -v (to output version), warn about the others as unknown
8914     # and return 1 (due to -v)
8915     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8916     # and return 0 (due to --version ) if all options are supported
8917     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8918     if test $? -eq 0;  then
8919         SYSTEM_UCPP_IS_GCC=TRUE
8920         AC_MSG_RESULT([yes])
8921     else
8922         AC_MSG_RESULT([no])
8923     fi
8924 else
8925     AC_MSG_RESULT([ucpp])
8926     AC_MSG_CHECKING([which ucpp to use])
8927     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8928         AC_MSG_RESULT([external])
8929         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8930     else
8931         AC_MSG_RESULT([internal])
8932         BUILD_TYPE="$BUILD_TYPE UCPP"
8933     fi
8935 AC_SUBST(SYSTEM_UCPP)
8936 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8938 dnl ===================================================================
8939 dnl Check for epm (not needed for Windows)
8940 dnl ===================================================================
8941 AC_MSG_CHECKING([whether to enable EPM for packing])
8942 if test "$enable_epm" = "yes"; then
8943     AC_MSG_RESULT([yes])
8944     if test "$_os" != "WINNT"; then
8945         if test $_os = Darwin; then
8946             EPM=internal
8947         elif test -n "$with_epm"; then
8948             EPM=$with_epm
8949         else
8950             AC_PATH_PROG(EPM, epm, no)
8951         fi
8952         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8953             AC_MSG_NOTICE([EPM will be built.])
8954             BUILD_TYPE="$BUILD_TYPE EPM"
8955             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8956         else
8957             # Gentoo has some epm which is something different...
8958             AC_MSG_CHECKING([whether the found epm is the right epm])
8959             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8960                 AC_MSG_RESULT([yes])
8961             else
8962                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8963             fi
8964             AC_MSG_CHECKING([epm version])
8965             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8966             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8967                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8968                 AC_MSG_RESULT([OK, >= 3.7])
8969             else
8970                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8971                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8972             fi
8973         fi
8974     fi
8976     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8977         AC_MSG_CHECKING([for rpm])
8978         for a in "$RPM" rpmbuild rpm; do
8979             $a --usage >/dev/null 2> /dev/null
8980             if test $? -eq 0; then
8981                 RPM=$a
8982                 break
8983             else
8984                 $a --version >/dev/null 2> /dev/null
8985                 if test $? -eq 0; then
8986                     RPM=$a
8987                     break
8988                 fi
8989             fi
8990         done
8991         if test -z "$RPM"; then
8992             AC_MSG_ERROR([not found])
8993         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8994             RPM_PATH=`which $RPM`
8995             AC_MSG_RESULT([$RPM_PATH])
8996             SCPDEFS="$SCPDEFS -DWITH_RPM"
8997         else
8998             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8999         fi
9000     fi
9001     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9002         AC_PATH_PROG(DPKG, dpkg, no)
9003         if test "$DPKG" = "no"; then
9004             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9005         fi
9006     fi
9007     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9008        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9009         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9010             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9011                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9012                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9013                     AC_MSG_RESULT([yes])
9014                 else
9015                     AC_MSG_RESULT([no])
9016                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9017                         _pt="rpm"
9018                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9019                         add_warning "the rpms will need to be installed with --nodeps"
9020                     else
9021                         _pt="pkg"
9022                     fi
9023                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9024                     add_warning "the ${_pt}s will not be relocatable"
9025                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9026                                  relocation will work, you need to patch your epm with the
9027                                  patch in epm/epm-3.7.patch or build with
9028                                  --with-epm=internal which will build a suitable epm])
9029                 fi
9030             fi
9031         fi
9032     fi
9033     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9034         AC_PATH_PROG(PKGMK, pkgmk, no)
9035         if test "$PKGMK" = "no"; then
9036             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9037         fi
9038     fi
9039     AC_SUBST(RPM)
9040     AC_SUBST(DPKG)
9041     AC_SUBST(PKGMK)
9042 else
9043     for i in $PKGFORMAT; do
9044         case "$i" in
9045         aix | bsd | deb | pkg | rpm | native | portable)
9046             AC_MSG_ERROR(
9047                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9048             ;;
9049         esac
9050     done
9051     AC_MSG_RESULT([no])
9052     EPM=NO
9054 AC_SUBST(EPM)
9056 ENABLE_LWP=
9057 if test "$enable_lotuswordpro" = "yes"; then
9058     ENABLE_LWP="TRUE"
9060 AC_SUBST(ENABLE_LWP)
9062 dnl ===================================================================
9063 dnl Check for building ODK
9064 dnl ===================================================================
9065 AC_MSG_CHECKING([whether to build the ODK])
9066 if test "$enable_odk" = yes; then
9067     if test "$DISABLE_DYNLOADING" = TRUE; then
9068         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9069     fi
9070     AC_MSG_RESULT([yes])
9071     BUILD_TYPE="$BUILD_TYPE ODK"
9072 else
9073     AC_MSG_RESULT([no])
9076 if test "$enable_odk" != yes; then
9077     unset DOXYGEN
9078 else
9079     if test "$with_doxygen" = no; then
9080         AC_MSG_CHECKING([for doxygen])
9081         unset DOXYGEN
9082         AC_MSG_RESULT([no])
9083     else
9084         if test "$with_doxygen" = yes; then
9085             AC_PATH_PROG([DOXYGEN], [doxygen])
9086             if test -z "$DOXYGEN"; then
9087                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9088             fi
9089             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9090                 if ! dot -V 2>/dev/null; then
9091                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9092                 fi
9093             fi
9094         else
9095             AC_MSG_CHECKING([for doxygen])
9096             DOXYGEN=$with_doxygen
9097             AC_MSG_RESULT([$DOXYGEN])
9098         fi
9099         if test -n "$DOXYGEN"; then
9100             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9101             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9102             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9103                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9104             fi
9105         fi
9106     fi
9108 AC_SUBST([DOXYGEN])
9110 dnl ==================================================================
9111 dnl libfuzzer
9112 dnl ==================================================================
9113 AC_MSG_CHECKING([whether to enable fuzzers])
9114 if test "$enable_fuzzers" != yes; then
9115     AC_MSG_RESULT([no])
9116 else
9117     if test -z $LIB_FUZZING_ENGINE; then
9118       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9119     fi
9120     AC_MSG_RESULT([yes])
9121     ENABLE_FUZZERS="TRUE"
9122     AC_DEFINE([ENABLE_FUZZERS],1)
9123     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9125 AC_SUBST(LIB_FUZZING_ENGINE)
9127 dnl ===================================================================
9128 dnl Check for system zlib
9129 dnl ===================================================================
9130 if test "$with_system_zlib" = "auto"; then
9131     case "$_os" in
9132     WINNT)
9133         with_system_zlib="$with_system_libs"
9134         ;;
9135     *)
9136         if test "$enable_fuzzers" != "yes"; then
9137             with_system_zlib=yes
9138         else
9139             with_system_zlib=no
9140         fi
9141         ;;
9142     esac
9145 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9146 dnl and has no pkg-config for it at least on some tinderboxes,
9147 dnl so leaving that out for now
9148 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9149 AC_MSG_CHECKING([which zlib to use])
9150 if test "$with_system_zlib" = "yes"; then
9151     AC_MSG_RESULT([external])
9152     SYSTEM_ZLIB=TRUE
9153     AC_CHECK_HEADER(zlib.h, [],
9154         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9155     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9156         [AC_MSG_ERROR(zlib not found or functional)], [])
9157 else
9158     AC_MSG_RESULT([internal])
9159     SYSTEM_ZLIB=
9160     BUILD_TYPE="$BUILD_TYPE ZLIB"
9161     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9162     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9164 AC_SUBST(ZLIB_CFLAGS)
9165 AC_SUBST(ZLIB_LIBS)
9166 AC_SUBST(SYSTEM_ZLIB)
9168 dnl ===================================================================
9169 dnl Check for system jpeg
9170 dnl ===================================================================
9171 AC_MSG_CHECKING([which libjpeg to use])
9172 if test "$with_system_jpeg" = "yes"; then
9173     AC_MSG_RESULT([external])
9174     SYSTEM_LIBJPEG=TRUE
9175     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9176         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9177     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9178         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9179 else
9180     SYSTEM_LIBJPEG=
9181     AC_MSG_RESULT([internal, libjpeg-turbo])
9182     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9184     case "$host_cpu" in
9185     x86_64 | amd64 | i*86 | x86 | ia32)
9186         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9187         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9188             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9189                 NASM="$LODE_HOME/opt/bin/nasm"
9190             elif test -x "/opt/lo/bin/nasm"; then
9191                 NASM="/opt/lo/bin/nasm"
9192             fi
9193         fi
9195         if test -n "$NASM"; then
9196             AC_MSG_CHECKING([for object file format of host system])
9197             case "$host_os" in
9198               cygwin* | mingw* | pw32* | wsl*)
9199                 case "$host_cpu" in
9200                   x86_64)
9201                     objfmt='Win64-COFF'
9202                     ;;
9203                   *)
9204                     objfmt='Win32-COFF'
9205                     ;;
9206                 esac
9207               ;;
9208               msdosdjgpp* | go32*)
9209                 objfmt='COFF'
9210               ;;
9211               os2-emx*) # not tested
9212                 objfmt='MSOMF' # obj
9213               ;;
9214               linux*coff* | linux*oldld*)
9215                 objfmt='COFF' # ???
9216               ;;
9217               linux*aout*)
9218                 objfmt='a.out'
9219               ;;
9220               linux*)
9221                 case "$host_cpu" in
9222                   x86_64)
9223                     objfmt='ELF64'
9224                     ;;
9225                   *)
9226                     objfmt='ELF'
9227                     ;;
9228                 esac
9229               ;;
9230               kfreebsd* | freebsd* | netbsd* | openbsd*)
9231                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9232                   objfmt='BSD-a.out'
9233                 else
9234                   case "$host_cpu" in
9235                     x86_64 | amd64)
9236                       objfmt='ELF64'
9237                       ;;
9238                     *)
9239                       objfmt='ELF'
9240                       ;;
9241                   esac
9242                 fi
9243               ;;
9244               solaris* | sunos* | sysv* | sco*)
9245                 case "$host_cpu" in
9246                   x86_64)
9247                     objfmt='ELF64'
9248                     ;;
9249                   *)
9250                     objfmt='ELF'
9251                     ;;
9252                 esac
9253               ;;
9254               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9255                 case "$host_cpu" in
9256                   x86_64)
9257                     objfmt='Mach-O64'
9258                     ;;
9259                   *)
9260                     objfmt='Mach-O'
9261                     ;;
9262                 esac
9263               ;;
9264               *)
9265                 objfmt='ELF ?'
9266               ;;
9267             esac
9269             AC_MSG_RESULT([$objfmt])
9270             if test "$objfmt" = 'ELF ?'; then
9271               objfmt='ELF'
9272               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9273             fi
9275             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9276             case "$objfmt" in
9277               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9278               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9279               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9280               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9281               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9282               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9283               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9284               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9285               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9286               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9287               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9288             esac
9289             AC_MSG_RESULT([$NAFLAGS])
9291             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9292             cat > conftest.asm << EOF
9293             [%line __oline__ "configure"
9294                     section .text
9295                     global  _main,main
9296             _main:
9297             main:   xor     eax,eax
9298                     ret
9299             ]
9301             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9302             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9303               AC_MSG_RESULT(yes)
9304             else
9305               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9306               cat conftest.asm >&AS_MESSAGE_LOG_FD
9307               rm -rf conftest*
9308               AC_MSG_RESULT(no)
9309               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9310               NASM=""
9311             fi
9313         fi
9315         if test -z "$NASM"; then
9316 cat << _EOS
9317 ****************************************************************************
9318 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9319 To get one please:
9321 _EOS
9322             if test "$build_os" = "cygwin"; then
9323 cat << _EOS
9324 install a pre-compiled binary for Win32
9326 mkdir -p /opt/lo/bin
9327 cd /opt/lo/bin
9328 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9329 chmod +x nasm
9331 or get and install one from http://www.nasm.us/
9333 Then re-run autogen.sh
9335 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9336 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9338 _EOS
9339             else
9340 cat << _EOS
9341 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9343 _EOS
9344             fi
9345             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9346             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9347         fi
9348       ;;
9349     esac
9352 AC_SUBST(NASM)
9353 AC_SUBST(NAFLAGS)
9354 AC_SUBST(LIBJPEG_CFLAGS)
9355 AC_SUBST(LIBJPEG_LIBS)
9356 AC_SUBST(SYSTEM_LIBJPEG)
9358 dnl ===================================================================
9359 dnl Check for system clucene
9360 dnl ===================================================================
9361 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9362 if test "$SYSTEM_CLUCENE" = TRUE; then
9363     AC_LANG_PUSH([C++])
9364     save_CXXFLAGS=$CXXFLAGS
9365     save_CPPFLAGS=$CPPFLAGS
9366     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9367     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9368     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9369     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9370     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9371                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9372     CXXFLAGS=$save_CXXFLAGS
9373     CPPFLAGS=$save_CPPFLAGS
9374     AC_LANG_POP([C++])
9375     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9378 dnl ===================================================================
9379 dnl Check for system expat
9380 dnl ===================================================================
9381 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9383 dnl ===================================================================
9384 dnl Check for system xmlsec
9385 dnl ===================================================================
9386 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9388 libo_CHECK_SYSTEM_MODULE([eot],[LIBEOT],[libeot >= 0.01],disabled)
9390 dnl ===================================================================
9391 dnl Check for DLP libs
9392 dnl ===================================================================
9393 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9394 AS_IF([test "$COM" = "MSC"],
9395       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9396       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9398 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9399 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9401 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9403 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9405 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9406 AS_IF([test "$COM" = "MSC"],
9407       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9408       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9410 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9411 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9413 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9415 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9416 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9418 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9420 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9422 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9424 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9425 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9427 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9428 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9430 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9432 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9433 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9435 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9437 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9439 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9441 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9443 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9444 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9446 dnl ===================================================================
9447 dnl Check for system lcms2
9448 dnl ===================================================================
9449 if test "$with_system_lcms2" != "yes"; then
9450     SYSTEM_LCMS2=
9452 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9453 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9454 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9455 if test "$GCC" = "yes"; then
9456     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9458 if test "$COM" = "MSC"; then # override the above
9459     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9462 dnl ===================================================================
9463 dnl Check for system cppunit
9464 dnl ===================================================================
9465 if test "$_os" != "Android" ; then
9466     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9469 dnl ===================================================================
9470 dnl Check whether freetype is available
9472 dnl FreeType has 3 different kinds of versions
9473 dnl * release, like 2.4.10
9474 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9475 dnl * soname
9476 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9478 dnl 9.9.3 is 2.2.0
9479 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9480 dnl ===================================================================
9481 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9482 if test "x$ac_config_site_64bit_host" = xYES; then
9483     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9484 else
9485     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9487 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9489 # ===================================================================
9490 # Check for system libxslt
9491 # to prevent incompatibilities between internal libxml2 and external libxslt,
9492 # or vice versa, use with_system_libxml here
9493 # ===================================================================
9494 if test "$with_system_libxml" = "auto"; then
9495     case "$_os" in
9496     WINNT|iOS|Android)
9497         with_system_libxml="$with_system_libs"
9498         ;;
9499     Emscripten)
9500         with_system_libxml=no
9501         ;;
9502     *)
9503         if test "$enable_fuzzers" != "yes"; then
9504             with_system_libxml=yes
9505         else
9506             with_system_libxml=no
9507         fi
9508         ;;
9509     esac
9512 AC_MSG_CHECKING([which libxslt to use])
9513 if test "$with_system_libxml" = "yes"; then
9514     AC_MSG_RESULT([external])
9515     SYSTEM_LIBXSLT=TRUE
9516     if test "$_os" = "Darwin"; then
9517         dnl make sure to use SDK path
9518         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9519         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9520         dnl omit -L/usr/lib
9521         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9522         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9523     else
9524         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9525         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9526         FilterLibs "${LIBXSLT_LIBS}"
9527         LIBXSLT_LIBS="${filteredlibs}"
9528         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9529         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9530         FilterLibs "${LIBEXSLT_LIBS}"
9531         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9532     fi
9534     dnl Check for xsltproc
9535     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9536     if test "$XSLTPROC" = "no"; then
9537         AC_MSG_ERROR([xsltproc is required])
9538     fi
9539 else
9540     AC_MSG_RESULT([internal])
9541     SYSTEM_LIBXSLT=
9542     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9544 AC_SUBST(SYSTEM_LIBXSLT)
9545 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9546     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9548 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9550 AC_SUBST(LIBEXSLT_CFLAGS)
9551 AC_SUBST(LIBEXSLT_LIBS)
9552 AC_SUBST(LIBXSLT_CFLAGS)
9553 AC_SUBST(LIBXSLT_LIBS)
9554 AC_SUBST(XSLTPROC)
9556 # ===================================================================
9557 # Check for system libxml
9558 # ===================================================================
9559 AC_MSG_CHECKING([which libxml to use])
9560 if test "$with_system_libxml" = "yes"; then
9561     AC_MSG_RESULT([external])
9562     SYSTEM_LIBXML=TRUE
9563     if test "$_os" = "Darwin"; then
9564         dnl make sure to use SDK path
9565         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9566         dnl omit -L/usr/lib
9567         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9568     elif test $_os = iOS; then
9569         dnl make sure to use SDK path
9570         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9571         LIBXML_CFLAGS="-I$usr/include/libxml2"
9572         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9573     else
9574         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9575         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9576         FilterLibs "${LIBXML_LIBS}"
9577         LIBXML_LIBS="${filteredlibs}"
9578     fi
9580     dnl Check for xmllint
9581     AC_PATH_PROG(XMLLINT, xmllint, no)
9582     if test "$XMLLINT" = "no"; then
9583         AC_MSG_ERROR([xmllint is required])
9584     fi
9585 else
9586     AC_MSG_RESULT([internal])
9587     SYSTEM_LIBXML=
9588     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9589     if test "$COM" = "MSC"; then
9590         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9591     fi
9592     if test "$COM" = "MSC"; then
9593         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9594     else
9595         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9596         if test "$DISABLE_DYNLOADING" = TRUE; then
9597             LIBXML_LIBS="$LIBXML_LIBS -lm"
9598         fi
9599     fi
9600     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9602 AC_SUBST(SYSTEM_LIBXML)
9603 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9604     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9606 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9607 AC_SUBST(LIBXML_CFLAGS)
9608 AC_SUBST(LIBXML_LIBS)
9609 AC_SUBST(XMLLINT)
9611 # =====================================================================
9612 # Checking for a Python interpreter with version >= 3.3.
9613 # Optionally user can pass an option to configure, i. e.
9614 # ./configure PYTHON=/usr/bin/python
9615 # =====================================================================
9616 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9617     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9618     # unless PYTHON is defined as above which allows 'system'
9619     enable_python=internal
9621 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9622     if test -n "$PYTHON"; then
9623         PYTHON_FOR_BUILD=$PYTHON
9624     else
9625         # This allows a lack of system python with no error, we use internal one in that case.
9626         AM_PATH_PYTHON([3.3],, [:])
9627         # Clean PYTHON_VERSION checked below if cross-compiling
9628         PYTHON_VERSION=""
9629         if test "$PYTHON" != ":"; then
9630             PYTHON_FOR_BUILD=$PYTHON
9631         fi
9632     fi
9635 # Checks for Python to use for Pyuno
9636 AC_MSG_CHECKING([which Python to use for Pyuno])
9637 case "$enable_python" in
9638 no|disable)
9639     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9640         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9641         # requirement from the choice whether to include Python stuff in the installer, but why
9642         # bother?
9643         AC_MSG_ERROR([Python is required at build time.])
9644     fi
9645     enable_python=no
9646     AC_MSG_RESULT([none])
9647     ;;
9648 ""|yes|auto)
9649     if test "$DISABLE_SCRIPTING" = TRUE; then
9650         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9651             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9652         fi
9653         AC_MSG_RESULT([none, overridden by --disable-scripting])
9654         enable_python=no
9655     elif test $build_os = cygwin; then
9656         dnl When building on Windows we don't attempt to use any installed
9657         dnl "system"  Python.
9658         AC_MSG_RESULT([fully internal])
9659         enable_python=internal
9660     elif test "$cross_compiling" = yes; then
9661         AC_MSG_RESULT([system])
9662         enable_python=system
9663     else
9664         # Unset variables set by the above AM_PATH_PYTHON so that
9665         # we actually do check anew.
9666         AC_MSG_RESULT([])
9667         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
9668         AM_PATH_PYTHON([3.3],, [:])
9669         AC_MSG_CHECKING([which Python to use for Pyuno])
9670         if test "$PYTHON" = ":"; then
9671             if test -z "$PYTHON_FOR_BUILD"; then
9672                 AC_MSG_RESULT([fully internal])
9673             else
9674                 AC_MSG_RESULT([internal])
9675             fi
9676             enable_python=internal
9677         else
9678             AC_MSG_RESULT([system])
9679             enable_python=system
9680         fi
9681     fi
9682     ;;
9683 internal)
9684     AC_MSG_RESULT([internal])
9685     ;;
9686 fully-internal)
9687     AC_MSG_RESULT([fully internal])
9688     enable_python=internal
9689     ;;
9690 system)
9691     AC_MSG_RESULT([system])
9692     if test "$_os" = Darwin -a -z "$PYTHON"; then
9693         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9694     fi
9695     ;;
9697     AC_MSG_ERROR([Incorrect --enable-python option])
9698     ;;
9699 esac
9701 if test $enable_python != no; then
9702     BUILD_TYPE="$BUILD_TYPE PYUNO"
9705 if test $enable_python = system; then
9706     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9707         # Fallback: Accept these in the environment, or as set above
9708         # for MacOSX.
9709         :
9710     elif test "$cross_compiling" != yes; then
9711         # Unset variables set by the above AM_PATH_PYTHON so that
9712         # we actually do check anew.
9713         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
9714         # This causes an error if no python command is found
9715         AM_PATH_PYTHON([3.3])
9716         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9717         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9718         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9719         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9720         if test -z "$PKG_CONFIG"; then
9721             PYTHON_CFLAGS="-I$python_include"
9722             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9723         elif $PKG_CONFIG --exists python-$python_version-embed; then
9724             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9725             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9726         elif $PKG_CONFIG --exists python-$python_version; then
9727             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9728             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9729         else
9730             PYTHON_CFLAGS="-I$python_include"
9731             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9732         fi
9733         FilterLibs "${PYTHON_LIBS}"
9734         PYTHON_LIBS="${filteredlibs}"
9735     else
9736         dnl How to find out the cross-compilation Python installation path?
9737         AC_MSG_CHECKING([for python version])
9738         AS_IF([test -n "$PYTHON_VERSION"],
9739               [AC_MSG_RESULT([$PYTHON_VERSION])],
9740               [AC_MSG_RESULT([not found])
9741                AC_MSG_ERROR([no usable python found])])
9742         test -n "$PYTHON_CFLAGS" && break
9743     fi
9745     dnl Check if the headers really work
9746     save_CPPFLAGS="$CPPFLAGS"
9747     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9748     AC_CHECK_HEADER(Python.h)
9749     CPPFLAGS="$save_CPPFLAGS"
9751     # let the PYTHON_FOR_BUILD match the same python installation that
9752     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9753     # better for PythonTests.
9754     PYTHON_FOR_BUILD=$PYTHON
9757 if test "$with_lxml" != no; then
9758     if test -z "$PYTHON_FOR_BUILD"; then
9759         case $build_os in
9760             cygwin)
9761                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9762                 ;;
9763             *)
9764                 if test "$cross_compiling" != yes ; then
9765                     BUILD_TYPE="$BUILD_TYPE LXML"
9766                 fi
9767                 ;;
9768         esac
9769     else
9770         AC_MSG_CHECKING([for python lxml])
9771         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9772             AC_MSG_RESULT([yes])
9773         else
9774             case $build_os in
9775                 cygwin)
9776                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9777                     ;;
9778                 *)
9779                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9780                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9781                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9782                         else
9783                             BUILD_TYPE="$BUILD_TYPE LXML"
9784                             AC_MSG_RESULT([no, using internal lxml])
9785                         fi
9786                     else
9787                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9788                     fi
9789                     ;;
9790             esac
9791         fi
9792     fi
9795 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9796     SYSTEM_PYTHON=
9797     PYTHON_VERSION_MAJOR=3
9798     PYTHON_VERSION_MINOR=8
9799     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9800     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9801         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9802     fi
9803     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9805     # Embedded Python dies without Home set
9806     if test "$HOME" = ""; then
9807         export HOME=""
9808     fi
9811 dnl By now enable_python should be "system", "internal" or "no"
9812 case $enable_python in
9813 system)
9814     SYSTEM_PYTHON=TRUE
9816     if test "x$ac_cv_header_Python_h" != "xyes"; then
9817        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9818     fi
9820     AC_LANG_PUSH(C)
9821     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9822     AC_MSG_CHECKING([for correct python library version])
9823        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9824 #include <Python.h>
9826 int main(int argc, char **argv) {
9827    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9828    else return 1;
9830        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9831     AC_LANG_POP(C)
9833     dnl FIXME Check if the Python library can be linked with, too?
9834     ;;
9836 internal)
9837     BUILD_TYPE="$BUILD_TYPE PYTHON"
9838     if test "$OS" = LINUX -o "$OS" = WNT ; then
9839         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9840     fi
9841     ;;
9843     DISABLE_PYTHON=TRUE
9844     SYSTEM_PYTHON=
9845     ;;
9847     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9848     ;;
9849 esac
9851 AC_SUBST(DISABLE_PYTHON)
9852 AC_SUBST(SYSTEM_PYTHON)
9853 AC_SUBST(PYTHON_CFLAGS)
9854 AC_SUBST(PYTHON_FOR_BUILD)
9855 AC_SUBST(PYTHON_LIBS)
9856 AC_SUBST(PYTHON_VERSION)
9857 AC_SUBST(PYTHON_VERSION_MAJOR)
9858 AC_SUBST(PYTHON_VERSION_MINOR)
9860 AC_MSG_CHECKING([whether to build LibreLogo])
9861 case "$enable_python" in
9862 no|disable)
9863     AC_MSG_RESULT([no; Python disabled])
9864     ;;
9866     if test "${enable_librelogo}" = "no"; then
9867         AC_MSG_RESULT([no])
9868     else
9869         AC_MSG_RESULT([yes])
9870         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9871         AC_DEFINE([ENABLE_LIBRELOGO],1)
9872     fi
9873     ;;
9874 esac
9875 AC_SUBST(ENABLE_LIBRELOGO)
9877 ENABLE_MARIADBC=
9878 MARIADBC_MAJOR=1
9879 MARIADBC_MINOR=0
9880 MARIADBC_MICRO=2
9881 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9882 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9883     ENABLE_MARIADBC=TRUE
9884     AC_MSG_RESULT([yes])
9885     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9886 else
9887     AC_MSG_RESULT([no])
9889 AC_SUBST(ENABLE_MARIADBC)
9890 AC_SUBST(MARIADBC_MAJOR)
9891 AC_SUBST(MARIADBC_MINOR)
9892 AC_SUBST(MARIADBC_MICRO)
9894 if test "$ENABLE_MARIADBC" = "TRUE"; then
9895     dnl ===================================================================
9896     dnl Check for system MariaDB
9897     dnl ===================================================================
9898     AC_MSG_CHECKING([which MariaDB to use])
9899     if test "$with_system_mariadb" = "yes"; then
9900         AC_MSG_RESULT([external])
9901         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9902         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9903         if test -z "$MARIADBCONFIG"; then
9904             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9905             if test -z "$MARIADBCONFIG"; then
9906                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9907                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9908             fi
9909         fi
9910         AC_MSG_CHECKING([MariaDB version])
9911         MARIADB_VERSION=`$MARIADBCONFIG --version`
9912         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9913         if test "$MARIADB_MAJOR" -ge "5"; then
9914             AC_MSG_RESULT([OK])
9915         else
9916             AC_MSG_ERROR([too old, use 5.0.x or later])
9917         fi
9918         AC_MSG_CHECKING([for MariaDB Client library])
9919         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9920         if test "$COM_IS_CLANG" = TRUE; then
9921             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9922         fi
9923         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9924         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9925         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9926         dnl linux32:
9927         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9928             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9929             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9930                 | sed -e 's|/lib64/|/lib/|')
9931         fi
9932         FilterLibs "${MARIADB_LIBS}"
9933         MARIADB_LIBS="${filteredlibs}"
9934         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9935         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9936         if test "$enable_bundle_mariadb" = "yes"; then
9937             AC_MSG_RESULT([yes])
9938             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9939             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9941 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9943 /g' | grep -E '(mysqlclient|mariadb)')
9944             if test "$_os" = "Darwin"; then
9945                 LIBMARIADB=${LIBMARIADB}.dylib
9946             elif test "$_os" = "WINNT"; then
9947                 LIBMARIADB=${LIBMARIADB}.dll
9948             else
9949                 LIBMARIADB=${LIBMARIADB}.so
9950             fi
9951             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9952             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9953             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9954                 AC_MSG_RESULT([found.])
9955                 PathFormat "$LIBMARIADB_PATH"
9956                 LIBMARIADB_PATH="$formatted_path"
9957             else
9958                 AC_MSG_ERROR([not found.])
9959             fi
9960         else
9961             AC_MSG_RESULT([no])
9962             BUNDLE_MARIADB_CONNECTOR_C=
9963         fi
9964     else
9965         AC_MSG_RESULT([internal])
9966         SYSTEM_MARIADB_CONNECTOR_C=
9967         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9968         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9969         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9970     fi
9972     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9973     AC_SUBST(MARIADB_CFLAGS)
9974     AC_SUBST(MARIADB_LIBS)
9975     AC_SUBST(LIBMARIADB)
9976     AC_SUBST(LIBMARIADB_PATH)
9977     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9980 dnl ===================================================================
9981 dnl Check for system hsqldb
9982 dnl ===================================================================
9983 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9984     HSQLDB_USE_JDBC_4_1=
9985     AC_MSG_CHECKING([which hsqldb to use])
9986     if test "$with_system_hsqldb" = "yes"; then
9987         AC_MSG_RESULT([external])
9988         SYSTEM_HSQLDB=TRUE
9989         if test -z $HSQLDB_JAR; then
9990             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9991         fi
9992         if ! test -f $HSQLDB_JAR; then
9993                AC_MSG_ERROR(hsqldb.jar not found.)
9994         fi
9995         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9996         export HSQLDB_JAR
9997         if $PERL -e \
9998            'use Archive::Zip;
9999             my $file = "$ENV{'HSQLDB_JAR'}";
10000             my $zip = Archive::Zip->new( $file );
10001             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10002             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10003             {
10004                 push @l, split(/\n/, $mf);
10005                 foreach my $line (@l)
10006                 {
10007                     if ($line =~ m/Specification-Version:/)
10008                     {
10009                         ($t, $version) = split (/:/,$line);
10010                         $version =~ s/^\s//;
10011                         ($a, $b, $c, $d) = split (/\./,$version);
10012                         if ($c == "0" && $d > "8")
10013                         {
10014                             exit 0;
10015                         }
10016                         else
10017                         {
10018                             exit 1;
10019                         }
10020                     }
10021                 }
10022             }
10023             else
10024             {
10025                 exit 1;
10026             }'; then
10027             AC_MSG_RESULT([yes])
10028         else
10029             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10030         fi
10031     else
10032         AC_MSG_RESULT([internal])
10033         SYSTEM_HSQLDB=
10034         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10035         NEED_ANT=TRUE
10036         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
10037         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
10038         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
10039             AC_MSG_RESULT([yes])
10040             HSQLDB_USE_JDBC_4_1=TRUE
10041         else
10042             AC_MSG_RESULT([no])
10043         fi
10044     fi
10045 else
10046     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10047         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10048     fi
10050 AC_SUBST(SYSTEM_HSQLDB)
10051 AC_SUBST(HSQLDB_JAR)
10052 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10054 dnl ===================================================================
10055 dnl Check for PostgreSQL stuff
10056 dnl ===================================================================
10057 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10058 if test "x$enable_postgresql_sdbc" != "xno"; then
10059     AC_MSG_RESULT([yes])
10060     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10062     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10063         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10064     fi
10065     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10066         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10067     fi
10069     postgres_interface=""
10070     if test "$with_system_postgresql" = "yes"; then
10071         postgres_interface="external PostgreSQL"
10072         SYSTEM_POSTGRESQL=TRUE
10073         if test "$_os" = Darwin; then
10074             supp_path=''
10075             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10076                 pg_supp_path="$P_SEP$d$pg_supp_path"
10077             done
10078         fi
10079         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10080         if test -n "$PGCONFIG"; then
10081             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10082             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10083         else
10084             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10085               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10086               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10087             ],[
10088               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10089             ])
10090         fi
10091         FilterLibs "${POSTGRESQL_LIB}"
10092         POSTGRESQL_LIB="${filteredlibs}"
10093     else
10094         # if/when anything else than PostgreSQL uses Kerberos,
10095         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10096         WITH_KRB5=
10097         WITH_GSSAPI=
10098         case "$_os" in
10099         Darwin)
10100             # macOS has system MIT Kerberos 5 since 10.4
10101             if test "$with_krb5" != "no"; then
10102                 WITH_KRB5=TRUE
10103                 save_LIBS=$LIBS
10104                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10105                 # that the libraries where these functions are located on macOS will change, is it?
10106                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10107                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10108                 KRB5_LIBS=$LIBS
10109                 LIBS=$save_LIBS
10110                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10111                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10112                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10113                 LIBS=$save_LIBS
10114             fi
10115             if test "$with_gssapi" != "no"; then
10116                 WITH_GSSAPI=TRUE
10117                 save_LIBS=$LIBS
10118                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10119                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10120                 GSSAPI_LIBS=$LIBS
10121                 LIBS=$save_LIBS
10122             fi
10123             ;;
10124         WINNT)
10125             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10126                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10127             fi
10128             ;;
10129         Linux|GNU|*BSD|DragonFly)
10130             if test "$with_krb5" != "no"; then
10131                 WITH_KRB5=TRUE
10132                 save_LIBS=$LIBS
10133                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10134                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10135                 KRB5_LIBS=$LIBS
10136                 LIBS=$save_LIBS
10137                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10138                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10139                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10140                 LIBS=$save_LIBS
10141             fi
10142             if test "$with_gssapi" != "no"; then
10143                 WITH_GSSAPI=TRUE
10144                 save_LIBS=$LIBS
10145                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10146                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10147                 GSSAPI_LIBS=$LIBS
10148                 LIBS=$save_LIBS
10149             fi
10150             ;;
10151         *)
10152             if test "$with_krb5" = "yes"; then
10153                 WITH_KRB5=TRUE
10154                 save_LIBS=$LIBS
10155                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10156                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10157                 KRB5_LIBS=$LIBS
10158                 LIBS=$save_LIBS
10159                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10160                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10161                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10162                 LIBS=$save_LIBS
10163             fi
10164             if test "$with_gssapi" = "yes"; then
10165                 WITH_GSSAPI=TRUE
10166                 save_LIBS=$LIBS
10167                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10168                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10169                 LIBS=$save_LIBS
10170                 GSSAPI_LIBS=$LIBS
10171             fi
10172         esac
10174         if test -n "$with_libpq_path"; then
10175             SYSTEM_POSTGRESQL=TRUE
10176             postgres_interface="external libpq"
10177             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10178             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10179         else
10180             SYSTEM_POSTGRESQL=
10181             postgres_interface="internal"
10182             POSTGRESQL_LIB=""
10183             POSTGRESQL_INC="%OVERRIDE_ME%"
10184             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10185         fi
10186     fi
10188     AC_MSG_CHECKING([PostgreSQL C interface])
10189     AC_MSG_RESULT([$postgres_interface])
10191     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10192         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10193         save_CFLAGS=$CFLAGS
10194         save_CPPFLAGS=$CPPFLAGS
10195         save_LIBS=$LIBS
10196         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10197         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10198         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10199         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10200             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10201         CFLAGS=$save_CFLAGS
10202         CPPFLAGS=$save_CPPFLAGS
10203         LIBS=$save_LIBS
10204     fi
10205     BUILD_POSTGRESQL_SDBC=TRUE
10206 else
10207     AC_MSG_RESULT([no])
10209 AC_SUBST(WITH_KRB5)
10210 AC_SUBST(WITH_GSSAPI)
10211 AC_SUBST(GSSAPI_LIBS)
10212 AC_SUBST(KRB5_LIBS)
10213 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10214 AC_SUBST(SYSTEM_POSTGRESQL)
10215 AC_SUBST(POSTGRESQL_INC)
10216 AC_SUBST(POSTGRESQL_LIB)
10218 dnl ===================================================================
10219 dnl Check for Firebird stuff
10220 dnl ===================================================================
10221 ENABLE_FIREBIRD_SDBC=
10222 if test "$enable_firebird_sdbc" = "yes" ; then
10223     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10225     dnl ===================================================================
10226     dnl Check for system Firebird
10227     dnl ===================================================================
10228     AC_MSG_CHECKING([which Firebird to use])
10229     if test "$with_system_firebird" = "yes"; then
10230         AC_MSG_RESULT([external])
10231         SYSTEM_FIREBIRD=TRUE
10232         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10233         if test -z "$FIREBIRDCONFIG"; then
10234             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10235             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10236                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10237             ])
10238             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10239         else
10240             AC_MSG_NOTICE([fb_config found])
10241             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10242             AC_MSG_CHECKING([for Firebird Client library])
10243             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10244             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10245             FilterLibs "${FIREBIRD_LIBS}"
10246             FIREBIRD_LIBS="${filteredlibs}"
10247         fi
10248         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10249         AC_MSG_CHECKING([Firebird version])
10250         if test -n "${FIREBIRD_VERSION}"; then
10251             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10252             if test "$FIREBIRD_MAJOR" -ge "3"; then
10253                 AC_MSG_RESULT([OK])
10254             else
10255                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10256             fi
10257         else
10258             save_CFLAGS="${CFLAGS}"
10259             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10260             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10261 #if defined(FB_API_VER) && FB_API_VER == 30
10262 int fb_api_is_30(void) { return 0; }
10263 #else
10264 #error "Wrong Firebird API version"
10265 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10266             CFLAGS="$save_CFLAGS"
10267         fi
10268         ENABLE_FIREBIRD_SDBC=TRUE
10269         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10270     elif test "$enable_database_connectivity" = no; then
10271         AC_MSG_RESULT([none])
10272     elif test "$cross_compiling" = "yes"; then
10273         AC_MSG_RESULT([none])
10274     else
10275         dnl Embedded Firebird has version 3.0
10276         dnl We need libatomic_ops for any non X86/X64 system
10277         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10278             dnl ===================================================================
10279             dnl Check for system libatomic_ops
10280             dnl ===================================================================
10281             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10282             if test "$with_system_libatomic_ops" = "yes"; then
10283                 SYSTEM_LIBATOMIC_OPS=TRUE
10284                 AC_CHECK_HEADERS(atomic_ops.h, [],
10285                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10286             else
10287                 SYSTEM_LIBATOMIC_OPS=
10288                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10289                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10290                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10291             fi
10292         fi
10294         AC_MSG_RESULT([internal])
10295         SYSTEM_FIREBIRD=
10296         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10297         FIREBIRD_LIBS="-lfbclient"
10299         if test "$with_system_libtommath" = "yes"; then
10300             SYSTEM_LIBTOMMATH=TRUE
10301             dnl check for tommath presence
10302             save_LIBS=$LIBS
10303             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10304             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10305             LIBS=$save_LIBS
10306         else
10307             SYSTEM_LIBTOMMATH=
10308             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10309             LIBTOMMATH_LIBS="-ltommath"
10310             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10311         fi
10313         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10314         ENABLE_FIREBIRD_SDBC=TRUE
10315         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10316     fi
10318 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10319 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10320 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10321 AC_SUBST(LIBATOMIC_OPS_LIBS)
10322 AC_SUBST(SYSTEM_FIREBIRD)
10323 AC_SUBST(FIREBIRD_CFLAGS)
10324 AC_SUBST(FIREBIRD_LIBS)
10325 AC_SUBST(SYSTEM_LIBTOMMATH)
10326 AC_SUBST(LIBTOMMATH_CFLAGS)
10327 AC_SUBST(LIBTOMMATH_LIBS)
10329 dnl ===================================================================
10330 dnl Check for system curl
10331 dnl ===================================================================
10332 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10334 dnl ===================================================================
10335 dnl Check for system boost
10336 dnl ===================================================================
10337 AC_MSG_CHECKING([which boost to use])
10338 if test "$with_system_boost" = "yes"; then
10339     AC_MSG_RESULT([external])
10340     SYSTEM_BOOST=TRUE
10341     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10342     AX_BOOST_DATE_TIME
10343     AX_BOOST_FILESYSTEM
10344     AX_BOOST_IOSTREAMS
10345     AX_BOOST_LOCALE
10346     AC_LANG_PUSH([C++])
10347     save_CXXFLAGS=$CXXFLAGS
10348     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10349     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10350        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10351     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10352        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10353     CXXFLAGS=$save_CXXFLAGS
10354     AC_LANG_POP([C++])
10355     # this is in m4/ax_boost_base.m4
10356     FilterLibs "${BOOST_LDFLAGS}"
10357     BOOST_LDFLAGS="${filteredlibs}"
10358 else
10359     AC_MSG_RESULT([internal])
10360     BUILD_TYPE="$BUILD_TYPE BOOST"
10361     SYSTEM_BOOST=
10362     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10363         # use warning-suppressing wrapper headers
10364         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10365     else
10366         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10367     fi
10369 AC_SUBST(SYSTEM_BOOST)
10371 dnl ===================================================================
10372 dnl Check for system mdds
10373 dnl ===================================================================
10374 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10375 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10377 dnl ===================================================================
10378 dnl Check for system cuckoo
10379 dnl ===================================================================
10380 AC_MSG_CHECKING([which cuckoo to use])
10381 if test "$with_system_cuckoo" = "yes"; then
10382     AC_MSG_RESULT([external])
10383     SYSTEM_CUCKOO=TRUE
10384     AC_LANG_PUSH([C++])
10385     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10386        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10387     AC_LANG_POP([C++])
10388 else
10389     AC_MSG_RESULT([internal])
10390     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10391     SYSTEM_CUCKOO=
10393 AC_SUBST([SYSTEM_CUCKOO])
10395 dnl ===================================================================
10396 dnl Check for system glm
10397 dnl ===================================================================
10398 AC_MSG_CHECKING([which glm to use])
10399 if test "$with_system_glm" = "yes"; then
10400     AC_MSG_RESULT([external])
10401     SYSTEM_GLM=TRUE
10402     AC_LANG_PUSH([C++])
10403     AC_CHECK_HEADER([glm/glm.hpp], [],
10404        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10405     AC_LANG_POP([C++])
10406 else
10407     AC_MSG_RESULT([internal])
10408     BUILD_TYPE="$BUILD_TYPE GLM"
10409     SYSTEM_GLM=
10410     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10412 AC_SUBST([GLM_CFLAGS])
10413 AC_SUBST([SYSTEM_GLM])
10415 dnl ===================================================================
10416 dnl Check for system odbc
10417 dnl ===================================================================
10418 AC_MSG_CHECKING([which odbc headers to use])
10419 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
10420     AC_MSG_RESULT([external])
10421     SYSTEM_ODBC_HEADERS=TRUE
10423     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10424         save_CPPFLAGS=$CPPFLAGS
10425         find_winsdk
10426         PathFormat "$winsdktest"
10427         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"
10428         AC_CHECK_HEADER(sqlext.h, [],
10429             [AC_MSG_ERROR(odbc not found. install odbc)],
10430             [#include <windows.h>])
10431         CPPFLAGS=$save_CPPFLAGS
10432     else
10433         AC_CHECK_HEADER(sqlext.h, [],
10434             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10435     fi
10436 elif test "$enable_database_connectivity" = no; then
10437     AC_MSG_RESULT([none])
10438 else
10439     AC_MSG_RESULT([internal])
10440     SYSTEM_ODBC_HEADERS=
10442 AC_SUBST(SYSTEM_ODBC_HEADERS)
10444 dnl ===================================================================
10445 dnl Check for system NSS
10446 dnl ===================================================================
10447 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10448     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10449     AC_DEFINE(HAVE_FEATURE_NSS)
10450     ENABLE_NSS=TRUE
10451 elif test $_os != iOS ; then
10452     with_tls=openssl
10454 AC_SUBST(ENABLE_NSS)
10456 dnl ===================================================================
10457 dnl Enable LDAP support
10458 dnl ===================================================================
10460 if test "$test_openldap" = yes; then
10461     AC_MSG_CHECKING([whether to enable LDAP support])
10462     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10463         AC_MSG_RESULT([yes])
10464         ENABLE_LDAP=TRUE
10465     else
10466         if test "$enable_ldap" != "yes"; then
10467             AC_MSG_RESULT([no])
10468         else
10469             AC_MSG_RESULT([no (needs NSS or system openldap)])
10470         fi
10471     fi
10473 dnl ===================================================================
10474 dnl Check for system openldap
10475 dnl ===================================================================
10477     if test "$ENABLE_LDAP" = TRUE; then
10478         AC_MSG_CHECKING([which openldap library to use])
10479         if test "$with_system_openldap" = yes; then
10480             AC_MSG_RESULT([external])
10481             SYSTEM_OPENLDAP=TRUE
10482             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10483             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10484             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10485         else
10486             AC_MSG_RESULT([internal])
10487             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10488         fi
10489     fi
10492 AC_SUBST(ENABLE_LDAP)
10493 AC_SUBST(SYSTEM_OPENLDAP)
10495 dnl ===================================================================
10496 dnl Check for TLS/SSL and cryptographic implementation to use
10497 dnl ===================================================================
10498 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10499 if test -n "$with_tls"; then
10500     case $with_tls in
10501     openssl)
10502         AC_DEFINE(USE_TLS_OPENSSL)
10503         TLS=OPENSSL
10504         AC_MSG_RESULT([$TLS])
10506         if test "$enable_openssl" != "yes"; then
10507             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10508         fi
10510         # warn that OpenSSL has been selected but not all TLS code has this option
10511         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10512         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10513         ;;
10514     nss)
10515         AC_DEFINE(USE_TLS_NSS)
10516         TLS=NSS
10517         AC_MSG_RESULT([$TLS])
10518         ;;
10519     no)
10520         AC_MSG_RESULT([none])
10521         AC_MSG_WARN([Skipping TLS/SSL])
10522         ;;
10523     *)
10524         AC_MSG_RESULT([])
10525         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10526 openssl - OpenSSL
10527 nss - Mozilla's Network Security Services (NSS)
10528     ])
10529         ;;
10530     esac
10531 else
10532     # default to using NSS, it results in smaller oox lib
10533     AC_DEFINE(USE_TLS_NSS)
10534     TLS=NSS
10535     AC_MSG_RESULT([$TLS])
10537 AC_SUBST(TLS)
10539 dnl ===================================================================
10540 dnl Check for system sane
10541 dnl ===================================================================
10542 AC_MSG_CHECKING([which sane header to use])
10543 if test "$with_system_sane" = "yes"; then
10544     AC_MSG_RESULT([external])
10545     AC_CHECK_HEADER(sane/sane.h, [],
10546       [AC_MSG_ERROR(sane not found. install sane)], [])
10547 else
10548     AC_MSG_RESULT([internal])
10549     BUILD_TYPE="$BUILD_TYPE SANE"
10552 dnl ===================================================================
10553 dnl Check for system icu
10554 dnl ===================================================================
10555 SYSTEM_GENBRK=
10556 SYSTEM_GENCCODE=
10557 SYSTEM_GENCMN=
10559 ICU_MAJOR=70
10560 ICU_MINOR=1
10561 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10562 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10563 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10564 AC_MSG_CHECKING([which icu to use])
10565 if test "$with_system_icu" = "yes"; then
10566     AC_MSG_RESULT([external])
10567     SYSTEM_ICU=TRUE
10568     AC_LANG_PUSH([C++])
10569     AC_MSG_CHECKING([for unicode/rbbi.h])
10570     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10571     AC_LANG_POP([C++])
10573     if test "$cross_compiling" != "yes"; then
10574         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10575         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10576         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10577         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10578     fi
10580     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10581         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10582         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10583         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10584         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10585         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10586             AC_MSG_RESULT([yes])
10587         else
10588             AC_MSG_RESULT([no])
10589             if test "$with_system_icu_for_build" != "force"; then
10590                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10591 You can use --with-system-icu-for-build=force to use it anyway.])
10592             fi
10593         fi
10594     fi
10596     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10597         # using the system icu tools can lead to version confusion, use the
10598         # ones from the build environment when cross-compiling
10599         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10600         if test -z "$SYSTEM_GENBRK"; then
10601             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10602         fi
10603         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10604         if test -z "$SYSTEM_GENCCODE"; then
10605             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10606         fi
10607         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10608         if test -z "$SYSTEM_GENCMN"; then
10609             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10610         fi
10611         if test "$ICU_MAJOR" -ge "49"; then
10612             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10613             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10614             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10615         else
10616             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10617             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10618             ICU_RECLASSIFIED_HEBREW_LETTER=
10619         fi
10620     fi
10622     if test "$cross_compiling" = "yes"; then
10623         if test "$ICU_MAJOR" -ge "50"; then
10624             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10625             ICU_MINOR=""
10626         fi
10627     fi
10628 else
10629     AC_MSG_RESULT([internal])
10630     SYSTEM_ICU=
10631     BUILD_TYPE="$BUILD_TYPE ICU"
10632     # surprisingly set these only for "internal" (to be used by various other
10633     # external libs): the system icu-config is quite unhelpful and spits out
10634     # dozens of weird flags and also default path -I/usr/include
10635     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10636     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10638 if test "$ICU_MAJOR" -ge "59"; then
10639     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10640     # with -std=c++11 but not all external libraries can be built with that,
10641     # for those use a bit-compatible typedef uint16_t UChar; see
10642     # icu/source/common/unicode/umachine.h
10643     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10644 else
10645     ICU_UCHAR_TYPE=""
10647 AC_SUBST(SYSTEM_ICU)
10648 AC_SUBST(SYSTEM_GENBRK)
10649 AC_SUBST(SYSTEM_GENCCODE)
10650 AC_SUBST(SYSTEM_GENCMN)
10651 AC_SUBST(ICU_MAJOR)
10652 AC_SUBST(ICU_MINOR)
10653 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10654 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10655 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10656 AC_SUBST(ICU_CFLAGS)
10657 AC_SUBST(ICU_LIBS)
10658 AC_SUBST(ICU_UCHAR_TYPE)
10660 dnl ==================================================================
10661 dnl Breakpad
10662 dnl ==================================================================
10663 DEFAULT_CRASHDUMP_VALUE="true"
10664 AC_MSG_CHECKING([whether to enable breakpad])
10665 if test "$enable_breakpad" != yes; then
10666     AC_MSG_RESULT([no])
10667 else
10668     AC_MSG_RESULT([yes])
10669     ENABLE_BREAKPAD="TRUE"
10670     AC_DEFINE(ENABLE_BREAKPAD)
10671     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10672     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10674     AC_MSG_CHECKING([for disable crash dump])
10675     if test "$enable_crashdump" = no; then
10676         DEFAULT_CRASHDUMP_VALUE="false"
10677         AC_MSG_RESULT([yes])
10678     else
10679        AC_MSG_RESULT([no])
10680     fi
10682     AC_MSG_CHECKING([for crashreport config])
10683     if test "$with_symbol_config" = "no"; then
10684         BREAKPAD_SYMBOL_CONFIG="invalid"
10685         AC_MSG_RESULT([no])
10686     else
10687         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10688         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10689         AC_MSG_RESULT([yes])
10690     fi
10691     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10693 AC_SUBST(ENABLE_BREAKPAD)
10694 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10696 dnl ===================================================================
10697 dnl Orcus
10698 dnl ===================================================================
10699 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10700 if test "$with_system_orcus" != "yes"; then
10701     if test "$SYSTEM_BOOST" = "TRUE"; then
10702         dnl Link with Boost.System
10703         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10704         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10705         dnl in documentation has no effect.
10706         AX_BOOST_SYSTEM
10707     fi
10709 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10710 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10711 AC_SUBST([BOOST_SYSTEM_LIB])
10712 AC_SUBST(SYSTEM_LIBORCUS)
10714 dnl ===================================================================
10715 dnl HarfBuzz
10716 dnl ===================================================================
10718 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10719 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10720 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10722 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10723 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10724 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10726 if test "$COM" = "MSC"; then # override the above
10727     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10728     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10731 if test "$with_system_harfbuzz" = "yes"; then
10732     if test "$with_system_graphite" = "no"; then
10733         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10734     fi
10735     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10736     save_LIBS="$LIBS"
10737     save_CFLAGS="$CFLAGS"
10738     LIBS="$LIBS $HARFBUZZ_LIBS"
10739     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10740     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10741     LIBS="$save_LIBS"
10742     CFLAGS="$save_CFLAGS"
10743 else
10744     if test "$with_system_graphite" = "yes"; then
10745         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10746     fi
10749 if test "$USING_X11" = TRUE; then
10750     AC_PATH_X
10751     AC_PATH_XTRA
10752     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10754     if test -z "$x_includes"; then
10755         x_includes="default_x_includes"
10756     fi
10757     if test -z "$x_libraries"; then
10758         x_libraries="default_x_libraries"
10759     fi
10760     CFLAGS="$CFLAGS $X_CFLAGS"
10761     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10762     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10763 else
10764     x_includes="no_x_includes"
10765     x_libraries="no_x_libraries"
10768 if test "$USING_X11" = TRUE; then
10769     dnl ===================================================================
10770     dnl Check for extension headers
10771     dnl ===================================================================
10772     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10773      [#include <X11/extensions/shape.h>])
10775     # vcl needs ICE and SM
10776     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10777     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10778         [AC_MSG_ERROR(ICE library not found)])
10779     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10780     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10781         [AC_MSG_ERROR(SM library not found)])
10784 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10785     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10786     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10789 dnl ===================================================================
10790 dnl Check for system Xrender
10791 dnl ===================================================================
10792 AC_MSG_CHECKING([whether to use Xrender])
10793 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10794     AC_MSG_RESULT([yes])
10795     PKG_CHECK_MODULES(XRENDER, xrender)
10796     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10797     FilterLibs "${XRENDER_LIBS}"
10798     XRENDER_LIBS="${filteredlibs}"
10799     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10800       [AC_MSG_ERROR(libXrender not found or functional)], [])
10801     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10802       [AC_MSG_ERROR(Xrender not found. install X)], [])
10803 else
10804     AC_MSG_RESULT([no])
10806 AC_SUBST(XRENDER_CFLAGS)
10807 AC_SUBST(XRENDER_LIBS)
10809 dnl ===================================================================
10810 dnl Check for XRandr
10811 dnl ===================================================================
10812 AC_MSG_CHECKING([whether to enable RandR support])
10813 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10814     AC_MSG_RESULT([yes])
10815     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10816     if test "$ENABLE_RANDR" != "TRUE"; then
10817         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10818                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10819         XRANDR_CFLAGS=" "
10820         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10821           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10822         XRANDR_LIBS="-lXrandr "
10823         ENABLE_RANDR="TRUE"
10824     fi
10825     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10826     FilterLibs "${XRANDR_LIBS}"
10827     XRANDR_LIBS="${filteredlibs}"
10828 else
10829     ENABLE_RANDR=""
10830     AC_MSG_RESULT([no])
10832 AC_SUBST(XRANDR_CFLAGS)
10833 AC_SUBST(XRANDR_LIBS)
10834 AC_SUBST(ENABLE_RANDR)
10836 if test -z "$with_webdav"; then
10837     with_webdav=$test_webdav
10840 AC_MSG_CHECKING([for WebDAV support])
10841 case "$with_webdav" in
10843     AC_MSG_RESULT([no])
10844     WITH_WEBDAV=""
10845     ;;
10847     AC_MSG_RESULT([yes])
10848     # curl is already mandatory (almost) and checked elsewhere
10849     if test "$enable_curl" = "no"; then
10850         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
10851     fi
10852     WITH_WEBDAV=TRUE
10853     ;;
10854 esac
10855 AC_SUBST(WITH_WEBDAV)
10857 dnl ===================================================================
10858 dnl Check for disabling cve_tests
10859 dnl ===================================================================
10860 AC_MSG_CHECKING([whether to execute CVE tests])
10861 # If not explicitly enabled or disabled, default
10862 if test -z "$enable_cve_tests"; then
10863     case "$OS" in
10864     WNT)
10865         # Default cves off for Windows with its wild and wonderful
10866         # variety of AV software kicking in and panicking
10867         enable_cve_tests=no
10868         ;;
10869     *)
10870         # otherwise yes
10871         enable_cve_tests=yes
10872         ;;
10873     esac
10875 if test "$enable_cve_tests" = "no"; then
10876     AC_MSG_RESULT([no])
10877     DISABLE_CVE_TESTS=TRUE
10878     AC_SUBST(DISABLE_CVE_TESTS)
10879 else
10880     AC_MSG_RESULT([yes])
10883 dnl ===================================================================
10884 dnl Check for enabling chart XShape tests
10885 dnl ===================================================================
10886 AC_MSG_CHECKING([whether to execute chart XShape tests])
10887 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10888     AC_MSG_RESULT([yes])
10889     ENABLE_CHART_TESTS=TRUE
10890     AC_SUBST(ENABLE_CHART_TESTS)
10891 else
10892     AC_MSG_RESULT([no])
10895 dnl ===================================================================
10896 dnl Check for system openssl
10897 dnl ===================================================================
10898 ENABLE_OPENSSL=
10899 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10900 if test "$enable_openssl" = "yes"; then
10901     AC_MSG_RESULT([no])
10902     ENABLE_OPENSSL=TRUE
10903     if test "$_os" = Darwin ; then
10904         # OpenSSL is deprecated when building for 10.7 or later.
10905         #
10906         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10907         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10909         with_system_openssl=no
10910         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10911     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10912             && test "$with_system_openssl" != "no"; then
10913         with_system_openssl=yes
10914         SYSTEM_OPENSSL=TRUE
10915         OPENSSL_CFLAGS=
10916         OPENSSL_LIBS="-lssl -lcrypto"
10917     else
10918         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10919     fi
10920     if test "$with_system_openssl" = "yes"; then
10921         AC_MSG_CHECKING([whether openssl supports SHA512])
10922         AC_LANG_PUSH([C])
10923         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10924             SHA512_CTX context;
10925 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10926         AC_LANG_POP(C)
10927     fi
10928 else
10929     AC_MSG_RESULT([yes])
10931     # warn that although OpenSSL is disabled, system libraries may depend on it
10932     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10933     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10936 AC_SUBST([ENABLE_OPENSSL])
10938 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10939     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10940         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10941         enable_cipher_openssl_backend=no
10942     else
10943         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10944     fi
10946 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10947 ENABLE_CIPHER_OPENSSL_BACKEND=
10948 if test "$enable_cipher_openssl_backend" = yes; then
10949     AC_MSG_RESULT([yes])
10950     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10951 else
10952     AC_MSG_RESULT([no])
10954 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10956 dnl ===================================================================
10957 dnl Select the crypto backends used by LO
10958 dnl ===================================================================
10960 if test "$build_crypto" = yes; then
10961     if test "$OS" = WNT; then
10962         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10963         AC_DEFINE([USE_CRYPTO_MSCAPI])
10964     elif test "$ENABLE_NSS" = TRUE; then
10965         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10966         AC_DEFINE([USE_CRYPTO_NSS])
10967     fi
10970 dnl ===================================================================
10971 dnl Check for system redland
10972 dnl ===================================================================
10973 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10974 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10975 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10976 if test "$with_system_redland" = "yes"; then
10977     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10978             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10979 else
10980     RAPTOR_MAJOR="0"
10981     RASQAL_MAJOR="3"
10982     REDLAND_MAJOR="0"
10984 AC_SUBST(RAPTOR_MAJOR)
10985 AC_SUBST(RASQAL_MAJOR)
10986 AC_SUBST(REDLAND_MAJOR)
10988 dnl ===================================================================
10989 dnl Check for system hunspell
10990 dnl ===================================================================
10991 AC_MSG_CHECKING([which libhunspell to use])
10992 if test "$with_system_hunspell" = "yes"; then
10993     AC_MSG_RESULT([external])
10994     SYSTEM_HUNSPELL=TRUE
10995     AC_LANG_PUSH([C++])
10996     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10997     if test "$HUNSPELL_PC" != "TRUE"; then
10998         AC_CHECK_HEADER(hunspell.hxx, [],
10999             [
11000             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11001             [AC_MSG_ERROR(hunspell headers not found.)], [])
11002             ], [])
11003         AC_CHECK_LIB([hunspell], [main], [:],
11004            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11005         HUNSPELL_LIBS=-lhunspell
11006     fi
11007     AC_LANG_POP([C++])
11008     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11009     FilterLibs "${HUNSPELL_LIBS}"
11010     HUNSPELL_LIBS="${filteredlibs}"
11011 else
11012     AC_MSG_RESULT([internal])
11013     SYSTEM_HUNSPELL=
11014     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11015     if test "$COM" = "MSC"; then
11016         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11017     else
11018         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11019     fi
11020     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11022 AC_SUBST(SYSTEM_HUNSPELL)
11023 AC_SUBST(HUNSPELL_CFLAGS)
11024 AC_SUBST(HUNSPELL_LIBS)
11026 dnl ===================================================================
11027 dnl Check for system zxing
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([whether to use zxing])
11030 if test "$enable_zxing" = "no"; then
11031     AC_MSG_RESULT([no])
11032     ENABLE_ZXING=
11033     SYSTEM_ZXING=
11034 else
11035     AC_MSG_RESULT([yes])
11036     ENABLE_ZXING=TRUE
11037     AC_MSG_CHECKING([which libzxing to use])
11038     if test "$with_system_zxing" = "yes"; then
11039         AC_MSG_RESULT([external])
11040         SYSTEM_ZXING=TRUE
11041         AC_LANG_PUSH([C++])
11042         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11043             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11044         ZXING_CFLAGS=-I/usr/include/ZXing
11045         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11046             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11047             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11048         AC_LANG_POP([C++])
11049         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11050         FilterLibs "${ZXING_LIBS}"
11051         ZXING_LIBS="${filteredlibs}"
11052     else
11053         AC_MSG_RESULT([internal])
11054         SYSTEM_ZXING=
11055         BUILD_TYPE="$BUILD_TYPE ZXING"
11056     fi
11057     if test "$ENABLE_ZXING" = TRUE; then
11058         AC_DEFINE(ENABLE_ZXING)
11059     fi
11061 AC_SUBST(SYSTEM_ZXING)
11062 AC_SUBST(ENABLE_ZXING)
11063 AC_SUBST(ZXING_CFLAGS)
11064 AC_SUBST(ZXING_LIBS)
11066 dnl ===================================================================
11067 dnl Check for system box2d
11068 dnl ===================================================================
11069 AC_MSG_CHECKING([which box2d to use])
11070 if test "$with_system_box2d" = "yes"; then
11071     AC_MSG_RESULT([external])
11072     SYSTEM_BOX2D=TRUE
11073     AC_LANG_PUSH([C++])
11074     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11075         [BOX2D_H_FOUND='FALSE'])
11076     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11077         _BOX2D_LIB=box2d
11078         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11079     else
11080         # fail this. there's no other alternative to check when we are here.
11081         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11082             [AC_MSG_ERROR(box2d headers not found.)])
11083         _BOX2D_LIB=Box2D
11084         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11085     fi
11086     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11087         [ AC_MSG_ERROR(box2d library not found.) ], [])
11088     BOX2D_LIBS=-l$_BOX2D_LIB
11089     AC_LANG_POP([C++])
11090     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11091     FilterLibs "${BOX2D_LIBS}"
11092     BOX2D_LIBS="${filteredlibs}"
11093 else
11094     AC_MSG_RESULT([internal])
11095     SYSTEM_BOX2D=
11096     BUILD_TYPE="$BUILD_TYPE BOX2D"
11098 AC_SUBST(SYSTEM_BOX2D)
11099 AC_SUBST(BOX2D_CFLAGS)
11100 AC_SUBST(BOX2D_LIBS)
11102 dnl ===================================================================
11103 dnl Checking for altlinuxhyph
11104 dnl ===================================================================
11105 AC_MSG_CHECKING([which altlinuxhyph to use])
11106 if test "$with_system_altlinuxhyph" = "yes"; then
11107     AC_MSG_RESULT([external])
11108     SYSTEM_HYPH=TRUE
11109     AC_CHECK_HEADER(hyphen.h, [],
11110        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11111     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11112        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11113        [#include <hyphen.h>])
11114     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11115         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11116     if test -z "$HYPHEN_LIB"; then
11117         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11118            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11119     fi
11120     if test -z "$HYPHEN_LIB"; then
11121         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11122            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11123     fi
11124 else
11125     AC_MSG_RESULT([internal])
11126     SYSTEM_HYPH=
11127     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11128     if test "$COM" = "MSC"; then
11129         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11130     else
11131         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11132     fi
11134 AC_SUBST(SYSTEM_HYPH)
11135 AC_SUBST(HYPHEN_LIB)
11137 dnl ===================================================================
11138 dnl Checking for mythes
11139 dnl ===================================================================
11140 AC_MSG_CHECKING([which mythes to use])
11141 if test "$with_system_mythes" = "yes"; then
11142     AC_MSG_RESULT([external])
11143     SYSTEM_MYTHES=TRUE
11144     AC_LANG_PUSH([C++])
11145     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11146     if test "$MYTHES_PKGCONFIG" = "no"; then
11147         AC_CHECK_HEADER(mythes.hxx, [],
11148             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11149         AC_CHECK_LIB([mythes-1.2], [main], [:],
11150             [ MYTHES_FOUND=no], [])
11151     if test "$MYTHES_FOUND" = "no"; then
11152         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11153                 [ MYTHES_FOUND=no], [])
11154     fi
11155     if test "$MYTHES_FOUND" = "no"; then
11156         AC_MSG_ERROR([mythes library not found!.])
11157     fi
11158     fi
11159     AC_LANG_POP([C++])
11160     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11161     FilterLibs "${MYTHES_LIBS}"
11162     MYTHES_LIBS="${filteredlibs}"
11163 else
11164     AC_MSG_RESULT([internal])
11165     SYSTEM_MYTHES=
11166     BUILD_TYPE="$BUILD_TYPE MYTHES"
11167     if test "$COM" = "MSC"; then
11168         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11169     else
11170         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11171     fi
11173 AC_SUBST(SYSTEM_MYTHES)
11174 AC_SUBST(MYTHES_CFLAGS)
11175 AC_SUBST(MYTHES_LIBS)
11177 dnl ===================================================================
11178 dnl How should we build the linear programming solver ?
11179 dnl ===================================================================
11181 ENABLE_COINMP=
11182 AC_MSG_CHECKING([whether to build with CoinMP])
11183 if test "$enable_coinmp" != "no"; then
11184     ENABLE_COINMP=TRUE
11185     AC_MSG_RESULT([yes])
11186     if test "$with_system_coinmp" = "yes"; then
11187         SYSTEM_COINMP=TRUE
11188         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11189         FilterLibs "${COINMP_LIBS}"
11190         COINMP_LIBS="${filteredlibs}"
11191     else
11192         BUILD_TYPE="$BUILD_TYPE COINMP"
11193     fi
11194 else
11195     AC_MSG_RESULT([no])
11197 AC_SUBST(ENABLE_COINMP)
11198 AC_SUBST(SYSTEM_COINMP)
11199 AC_SUBST(COINMP_CFLAGS)
11200 AC_SUBST(COINMP_LIBS)
11202 ENABLE_LPSOLVE=
11203 AC_MSG_CHECKING([whether to build with lpsolve])
11204 if test "$enable_lpsolve" != "no"; then
11205     ENABLE_LPSOLVE=TRUE
11206     AC_MSG_RESULT([yes])
11207 else
11208     AC_MSG_RESULT([no])
11210 AC_SUBST(ENABLE_LPSOLVE)
11212 if test "$ENABLE_LPSOLVE" = TRUE; then
11213     AC_MSG_CHECKING([which lpsolve to use])
11214     if test "$with_system_lpsolve" = "yes"; then
11215         AC_MSG_RESULT([external])
11216         SYSTEM_LPSOLVE=TRUE
11217         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11218            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11219         save_LIBS=$LIBS
11220         # some systems need this. Like Ubuntu...
11221         AC_CHECK_LIB(m, floor)
11222         AC_CHECK_LIB(dl, dlopen)
11223         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11224             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11225         LIBS=$save_LIBS
11226     else
11227         AC_MSG_RESULT([internal])
11228         SYSTEM_LPSOLVE=
11229         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11230     fi
11232 AC_SUBST(SYSTEM_LPSOLVE)
11234 dnl ===================================================================
11235 dnl Checking for libexttextcat
11236 dnl ===================================================================
11237 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11238 if test "$with_system_libexttextcat" = "yes"; then
11239     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11241 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11243 dnl ===================================================================
11244 dnl Checking for libnumbertext
11245 dnl ===================================================================
11246 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11247 if test "$with_system_libnumbertext" = "yes"; then
11248     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11249     SYSTEM_LIBNUMBERTEXT=YES
11250 else
11251     SYSTEM_LIBNUMBERTEXT=
11252     AC_LANG_PUSH([C++])
11253     save_CPPFLAGS=$CPPFLAGS
11254     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11255     AC_CHECK_HEADERS([codecvt regex])
11256     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11257             [ LIBNUMBERTEXT_CFLAGS=''
11258               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11259                            Enable libnumbertext fallback (missing number to number name conversion).])
11260             ])
11261     CPPFLAGS=$save_CPPFLAGS
11262     AC_LANG_POP([C++])
11264 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11265 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11266 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11268 dnl ***************************************
11269 dnl testing libc version for Linux...
11270 dnl ***************************************
11271 if test "$_os" = "Linux"; then
11272     AC_MSG_CHECKING([whether the libc is recent enough])
11273     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11274     #include <features.h>
11275     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11276     #error glibc >= 2.1 is required
11277     #endif
11278     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11281 dnl =========================================
11282 dnl Check for uuidgen
11283 dnl =========================================
11284 if test "$_os" = "WINNT"; then
11285     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11286     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11287     UUIDGEN=uuidgen.exe
11288     AC_SUBST(UUIDGEN)
11289 else
11290     AC_PATH_PROG([UUIDGEN], [uuidgen])
11291     if test -z "$UUIDGEN"; then
11292         AC_MSG_WARN([uuid is needed for building installation sets])
11293     fi
11296 dnl ***************************************
11297 dnl Checking for bison and flex
11298 dnl ***************************************
11299 AC_PATH_PROG(BISON, bison)
11300 if test -z "$BISON"; then
11301     AC_MSG_ERROR([no bison found in \$PATH, install it])
11302 else
11303     AC_MSG_CHECKING([the bison version])
11304     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11305     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11306     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11307     dnl cause
11308     dnl
11309     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]
11310     dnl   typedef union YYSTYPE
11311     dnl           ~~~~~~^~~~~~~
11312     dnl
11313     dnl while at least 3.4.1 is know to be good:
11314     if test "$COMPILER_PLUGINS" = TRUE; then
11315         if test "$_bison_longver" -lt 2004; then
11316             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11317         fi
11318     else
11319         if test "$_bison_longver" -lt 2000; then
11320             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11321         fi
11322     fi
11324 AC_SUBST([BISON])
11326 AC_PATH_PROG(FLEX, flex)
11327 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11328     FLEX=`cygpath -m $FLEX`
11330 if test -z "$FLEX"; then
11331     AC_MSG_ERROR([no flex found in \$PATH, install it])
11332 else
11333     AC_MSG_CHECKING([the flex version])
11334     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11335     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11336         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11337     fi
11339 AC_SUBST([FLEX])
11340 dnl ***************************************
11341 dnl Checking for patch
11342 dnl ***************************************
11343 AC_PATH_PROG(PATCH, patch)
11344 if test -z "$PATCH"; then
11345     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11348 dnl On Solaris or macOS, check if --with-gnu-patch was used
11349 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11350     if test -z "$with_gnu_patch"; then
11351         GNUPATCH=$PATCH
11352     else
11353         if test -x "$with_gnu_patch"; then
11354             GNUPATCH=$with_gnu_patch
11355         else
11356             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11357         fi
11358     fi
11360     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11361     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11362         AC_MSG_RESULT([yes])
11363     else
11364         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11365     fi
11366 else
11367     GNUPATCH=$PATCH
11370 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11371     GNUPATCH=`cygpath -m $GNUPATCH`
11374 dnl We also need to check for --with-gnu-cp
11376 if test -z "$with_gnu_cp"; then
11377     # check the place where the good stuff is hidden on Solaris...
11378     if test -x /usr/gnu/bin/cp; then
11379         GNUCP=/usr/gnu/bin/cp
11380     else
11381         AC_PATH_PROGS(GNUCP, gnucp cp)
11382     fi
11383     if test -z $GNUCP; then
11384         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11385     fi
11386 else
11387     if test -x "$with_gnu_cp"; then
11388         GNUCP=$with_gnu_cp
11389     else
11390         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11391     fi
11394 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11395     GNUCP=`cygpath -m $GNUCP`
11398 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11399 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11400     AC_MSG_RESULT([yes])
11401 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11402     AC_MSG_RESULT([yes])
11403 else
11404     case "$build_os" in
11405     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11406         x_GNUCP=[\#]
11407         GNUCP=''
11408         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11409         ;;
11410     *)
11411         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11412         ;;
11413     esac
11416 AC_SUBST(GNUPATCH)
11417 AC_SUBST(GNUCP)
11418 AC_SUBST(x_GNUCP)
11420 dnl ***************************************
11421 dnl testing assembler path
11422 dnl ***************************************
11423 ML_EXE=""
11424 if test "$_os" = "WINNT"; then
11425     case "$WIN_HOST_ARCH" in
11426     x86) assembler=ml.exe ;;
11427     x64) assembler=ml64.exe ;;
11428     arm64) assembler=armasm64.exe ;;
11429     esac
11431     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11432     if test -f "$MSVC_HOST_PATH/$assembler"; then
11433         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11434         AC_MSG_RESULT([$ML_EXE])
11435     else
11436         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11437     fi
11440 AC_SUBST(ML_EXE)
11442 dnl ===================================================================
11443 dnl We need zip and unzip
11444 dnl ===================================================================
11445 AC_PATH_PROG(ZIP, zip)
11446 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11447 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11448     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],,)
11451 AC_PATH_PROG(UNZIP, unzip)
11452 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11454 dnl ===================================================================
11455 dnl Zip must be a specific type for different build types.
11456 dnl ===================================================================
11457 if test $build_os = cygwin; then
11458     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11459         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11460     fi
11463 dnl ===================================================================
11464 dnl We need touch with -h option support.
11465 dnl ===================================================================
11466 AC_PATH_PROG(TOUCH, touch)
11467 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11468 touch "$WARNINGS_FILE"
11469 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11470     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],,)
11473 dnl ===================================================================
11474 dnl Check for system epoxy
11475 dnl ===================================================================
11476 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11477 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11479 dnl ===================================================================
11480 dnl Set vcl option: coordinate device in double or sal_Int32
11481 dnl ===================================================================
11483 dnl disabled for now, we don't want subtle differences between OSs
11484 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11485 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11486 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11487 dnl     AC_MSG_RESULT([double])
11488 dnl else
11489 dnl     AC_MSG_RESULT([sal_Int32])
11490 dnl fi
11492 dnl ===================================================================
11493 dnl Show which vclplugs will be built.
11494 dnl ===================================================================
11495 R=""
11496 if test "$USING_X11" != TRUE; then
11497     enable_gtk3=no
11500 libo_ENABLE_VCLPLUG([gtk3])
11501 libo_ENABLE_VCLPLUG([gtk3_kde5])
11502 libo_ENABLE_VCLPLUG([gtk4])
11503 libo_ENABLE_VCLPLUG([qt5])
11504 libo_ENABLE_VCLPLUG([qt6])
11505 libo_ENABLE_VCLPLUG([kf5])
11507 if test "x$USING_X11" = "xyes"; then
11508     R="$R gen"
11511 if test "$_os" = "WINNT"; then
11512     R="$R win"
11513 elif test "$_os" = "Darwin"; then
11514     R="$R osx"
11515 elif test "$_os" = "iOS"; then
11516     R="ios"
11517 elif test "$_os" = Android; then
11518     R="android"
11521 build_vcl_plugins="$R"
11522 if test -z "$build_vcl_plugins"; then
11523     build_vcl_plugins=" none"
11525 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11526 VCL_PLUGIN_INFO=$R
11527 AC_SUBST([VCL_PLUGIN_INFO])
11529 dnl ===================================================================
11530 dnl Check for GTK libraries
11531 dnl ===================================================================
11533 GTK3_CFLAGS=""
11534 GTK3_LIBS=""
11535 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11536     if test "$with_system_cairo" = no; then
11537         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11538     fi
11539     : ${with_system_cairo:=yes}
11540     PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo)
11541     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11542     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11543     FilterLibs "${GTK3_LIBS}"
11544     GTK3_LIBS="${filteredlibs}"
11546     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11547     if test "$with_system_epoxy" != "yes"; then
11548         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11549         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11550                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11551     fi
11553 AC_SUBST(GTK3_LIBS)
11554 AC_SUBST(GTK3_CFLAGS)
11556 GTK4_CFLAGS=""
11557 GTK4_LIBS=""
11558 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11559     if test "$with_system_cairo" = no; then
11560         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11561     fi
11562     : ${with_system_cairo:=yes}
11563     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11564     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11565     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11566     FilterLibs "${GTK4_LIBS}"
11567     GTK4_LIBS="${filteredlibs}"
11569     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11570     if test "$with_system_epoxy" != "yes"; then
11571         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11572         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11573                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11574     fi
11576 AC_SUBST(GTK4_LIBS)
11577 AC_SUBST(GTK4_CFLAGS)
11579 if test "$enable_introspection" = yes; then
11580     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11581         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11582     else
11583         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11584     fi
11587 dnl ===================================================================
11588 dnl check for dbus support
11589 dnl ===================================================================
11590 ENABLE_DBUS=""
11591 DBUS_CFLAGS=""
11592 DBUS_LIBS=""
11593 DBUS_GLIB_CFLAGS=""
11594 DBUS_GLIB_LIBS=""
11595 DBUS_HAVE_GLIB=""
11597 if test "$enable_dbus" = "no"; then
11598     test_dbus=no
11601 AC_MSG_CHECKING([whether to enable DBUS support])
11602 if test "$test_dbus" = "yes"; then
11603     ENABLE_DBUS="TRUE"
11604     AC_MSG_RESULT([yes])
11605     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11606     AC_DEFINE(ENABLE_DBUS)
11607     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11608     FilterLibs "${DBUS_LIBS}"
11609     DBUS_LIBS="${filteredlibs}"
11611     # Glib is needed for BluetoothServer
11612     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11613     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11614         [
11615             DBUS_HAVE_GLIB="TRUE"
11616             AC_DEFINE(DBUS_HAVE_GLIB,1)
11617         ],
11618         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11619     )
11620 else
11621     AC_MSG_RESULT([no])
11624 AC_SUBST(ENABLE_DBUS)
11625 AC_SUBST(DBUS_CFLAGS)
11626 AC_SUBST(DBUS_LIBS)
11627 AC_SUBST(DBUS_GLIB_CFLAGS)
11628 AC_SUBST(DBUS_GLIB_LIBS)
11629 AC_SUBST(DBUS_HAVE_GLIB)
11631 AC_MSG_CHECKING([whether to enable Impress remote control])
11632 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11633     AC_MSG_RESULT([yes])
11634     ENABLE_SDREMOTE=TRUE
11635     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11637     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11638         # The Bluetooth code doesn't compile with macOS SDK 10.15
11639         if test "$enable_sdremote_bluetooth" = yes; then
11640             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11641         fi
11642         enable_sdremote_bluetooth=no
11643     fi
11644     # If not explicitly enabled or disabled, default
11645     if test -z "$enable_sdremote_bluetooth"; then
11646         case "$OS" in
11647         LINUX|MACOSX|WNT)
11648             # Default to yes for these
11649             enable_sdremote_bluetooth=yes
11650             ;;
11651         *)
11652             # otherwise no
11653             enable_sdremote_bluetooth=no
11654             ;;
11655         esac
11656     fi
11657     # $enable_sdremote_bluetooth is guaranteed non-empty now
11659     if test "$enable_sdremote_bluetooth" != "no"; then
11660         if test "$OS" = "LINUX"; then
11661             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11662                 AC_MSG_RESULT([yes])
11663                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11664                 dnl ===================================================================
11665                 dnl Check for system bluez
11666                 dnl ===================================================================
11667                 AC_MSG_CHECKING([which Bluetooth header to use])
11668                 if test "$with_system_bluez" = "yes"; then
11669                     AC_MSG_RESULT([external])
11670                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11671                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11672                     SYSTEM_BLUEZ=TRUE
11673                 else
11674                     AC_MSG_RESULT([internal])
11675                     SYSTEM_BLUEZ=
11676                 fi
11677             else
11678                 AC_MSG_RESULT([no, dbus disabled])
11679                 ENABLE_SDREMOTE_BLUETOOTH=
11680                 SYSTEM_BLUEZ=
11681             fi
11682         else
11683             AC_MSG_RESULT([yes])
11684             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11685             SYSTEM_BLUEZ=
11686         fi
11687     else
11688         AC_MSG_RESULT([no])
11689         ENABLE_SDREMOTE_BLUETOOTH=
11690         SYSTEM_BLUEZ=
11691     fi
11692 else
11693     ENABLE_SDREMOTE=
11694     SYSTEM_BLUEZ=
11695     AC_MSG_RESULT([no])
11697 AC_SUBST(ENABLE_SDREMOTE)
11698 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11699 AC_SUBST(SYSTEM_BLUEZ)
11701 dnl ===================================================================
11702 dnl Check whether to enable GIO support
11703 dnl ===================================================================
11704 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11705     AC_MSG_CHECKING([whether to enable GIO support])
11706     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11707         dnl Need at least 2.26 for the dbus support.
11708         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11709                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11710         if test "$ENABLE_GIO" = "TRUE"; then
11711             AC_DEFINE(ENABLE_GIO)
11712             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11713             FilterLibs "${GIO_LIBS}"
11714             GIO_LIBS="${filteredlibs}"
11715         fi
11716     else
11717         AC_MSG_RESULT([no])
11718     fi
11720 AC_SUBST(ENABLE_GIO)
11721 AC_SUBST(GIO_CFLAGS)
11722 AC_SUBST(GIO_LIBS)
11725 dnl ===================================================================
11727 SPLIT_APP_MODULES=""
11728 if test "$enable_split_app_modules" = "yes"; then
11729     SPLIT_APP_MODULES="TRUE"
11731 AC_SUBST(SPLIT_APP_MODULES)
11733 SPLIT_OPT_FEATURES=""
11734 if test "$enable_split_opt_features" = "yes"; then
11735     SPLIT_OPT_FEATURES="TRUE"
11737 AC_SUBST(SPLIT_OPT_FEATURES)
11739 dnl ===================================================================
11740 dnl Check whether the GStreamer libraries are available.
11741 dnl ===================================================================
11743 ENABLE_GSTREAMER_1_0=""
11745 if test "$test_gstreamer_1_0" = yes; then
11747     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11748     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11749         ENABLE_GSTREAMER_1_0="TRUE"
11750         AC_MSG_RESULT([yes])
11751         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11752         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11753         FilterLibs "${GSTREAMER_1_0_LIBS}"
11754         GSTREAMER_1_0_LIBS="${filteredlibs}"
11755         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11756     else
11757         AC_MSG_RESULT([no])
11758     fi
11760 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11761 AC_SUBST(GSTREAMER_1_0_LIBS)
11762 AC_SUBST(ENABLE_GSTREAMER_1_0)
11764 ENABLE_OPENGL_TRANSITIONS=
11765 ENABLE_OPENGL_CANVAS=
11766 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11767    : # disable
11768 elif test "$_os" = "Darwin"; then
11769     # We use frameworks on macOS, no need for detail checks
11770     ENABLE_OPENGL_TRANSITIONS=TRUE
11771     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11772     ENABLE_OPENGL_CANVAS=TRUE
11773 elif test $_os = WINNT; then
11774     ENABLE_OPENGL_TRANSITIONS=TRUE
11775     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11776     ENABLE_OPENGL_CANVAS=TRUE
11777 else
11778     if test "$USING_X11" = TRUE; then
11779         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11780         ENABLE_OPENGL_TRANSITIONS=TRUE
11781         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11782         ENABLE_OPENGL_CANVAS=TRUE
11783     fi
11786 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11787 AC_SUBST(ENABLE_OPENGL_CANVAS)
11789 dnl =================================================
11790 dnl Check whether to build with OpenCL support.
11791 dnl =================================================
11793 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11794     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11795     # platform (optional at run-time, used through clew).
11796     BUILD_TYPE="$BUILD_TYPE OPENCL"
11797     AC_DEFINE(HAVE_FEATURE_OPENCL)
11800 dnl =================================================
11801 dnl Check whether to build with dconf support.
11802 dnl =================================================
11804 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11805     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11806         if test "$enable_dconf" = yes; then
11807             AC_MSG_ERROR([dconf not found])
11808         else
11809             enable_dconf=no
11810         fi])
11812 AC_MSG_CHECKING([whether to enable dconf])
11813 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11814     DCONF_CFLAGS=
11815     DCONF_LIBS=
11816     ENABLE_DCONF=
11817     AC_MSG_RESULT([no])
11818 else
11819     ENABLE_DCONF=TRUE
11820     AC_DEFINE(ENABLE_DCONF)
11821     AC_MSG_RESULT([yes])
11823 AC_SUBST([DCONF_CFLAGS])
11824 AC_SUBST([DCONF_LIBS])
11825 AC_SUBST([ENABLE_DCONF])
11827 # pdf import?
11828 AC_MSG_CHECKING([whether to build the PDF import feature])
11829 ENABLE_PDFIMPORT=
11830 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11831     AC_MSG_RESULT([yes])
11832     ENABLE_PDFIMPORT=TRUE
11833     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11834 else
11835     AC_MSG_RESULT([no])
11838 # Pdfium?
11839 AC_MSG_CHECKING([whether to build PDFium])
11840 ENABLE_PDFIUM=
11841 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11842     AC_MSG_RESULT([yes])
11843     ENABLE_PDFIUM=TRUE
11844     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11845 else
11846     AC_MSG_RESULT([no])
11848 AC_SUBST(ENABLE_PDFIUM)
11850 if test "$ENABLE_PDFIUM" = "TRUE"; then
11851     AC_MSG_CHECKING([which OpenJPEG library to use])
11852     if test "$with_system_openjpeg" = "yes"; then
11853         SYSTEM_OPENJPEG2=TRUE
11854         AC_MSG_RESULT([external])
11855         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11856         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11857         FilterLibs "${OPENJPEG2_LIBS}"
11858         OPENJPEG2_LIBS="${filteredlibs}"
11859     else
11860         SYSTEM_OPENJPEG2=FALSE
11861         AC_MSG_RESULT([internal])
11862     fi
11864     AC_MSG_CHECKING([which Abseil library to use])
11865     if test "$with_system_abseil" = "yes"; then
11866         AC_MSG_RESULT([external])
11867         SYSTEM_ABSEIL=TRUE
11868         AC_LANG_PUSH([C++])
11869         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
11870                         [AC_MSG_ERROR(abseil headers not found.)], [])
11871         AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
11872                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
11873         AC_LANG_POP([C++])
11874         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11875         FilterLibs "${ABSEIL_LIBS}"
11876         ABSEIL_LIBS="${filteredlibs}"
11877     else
11878         AC_MSG_RESULT([internal])
11879     fi
11881 AC_SUBST(SYSTEM_OPENJPEG2)
11882 AC_SUBST(SYSTEM_ABSEIL)
11883 AC_SUBST(ABSEIL_CFLAGS)
11884 AC_SUBST(ABSEIL_LIBS)
11886 dnl ===================================================================
11887 dnl Check for poppler
11888 dnl ===================================================================
11889 ENABLE_POPPLER=
11890 AC_MSG_CHECKING([whether to build Poppler])
11891 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11892     AC_MSG_RESULT([yes])
11893     ENABLE_POPPLER=TRUE
11894     AC_DEFINE(HAVE_FEATURE_POPPLER)
11895 else
11896     AC_MSG_RESULT([no])
11898 AC_SUBST(ENABLE_POPPLER)
11900 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11901     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11904 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11905     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11908 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11909     dnl ===================================================================
11910     dnl Check for system poppler
11911     dnl ===================================================================
11912     AC_MSG_CHECKING([which PDF import poppler to use])
11913     if test "$with_system_poppler" = "yes"; then
11914         AC_MSG_RESULT([external])
11915         SYSTEM_POPPLER=TRUE
11916         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
11917         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11918         FilterLibs "${POPPLER_LIBS}"
11919         POPPLER_LIBS="${filteredlibs}"
11920     else
11921         AC_MSG_RESULT([internal])
11922         SYSTEM_POPPLER=
11923         BUILD_TYPE="$BUILD_TYPE POPPLER"
11924     fi
11925     AC_DEFINE([ENABLE_PDFIMPORT],1)
11927 AC_SUBST(ENABLE_PDFIMPORT)
11928 AC_SUBST(SYSTEM_POPPLER)
11929 AC_SUBST(POPPLER_CFLAGS)
11930 AC_SUBST(POPPLER_LIBS)
11932 # Skia?
11933 ENABLE_SKIA=
11934 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11935     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
11936     if test "$SYSTEM_FREETYPE" = TRUE; then
11937         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
11938             [skia_freetype_ok=yes],
11939             [skia_freetype_ok=no])
11940     else # internal is ok
11941         skia_freetype_ok=yes
11942     fi
11943     AC_MSG_CHECKING([whether to build Skia])
11944     if test "$skia_freetype_ok" = "yes"; then
11945         if test "$enable_skia" = "debug"; then
11946             AC_MSG_RESULT([yes (debug)])
11947             ENABLE_SKIA_DEBUG=TRUE
11948         else
11949             AC_MSG_RESULT([yes])
11950             ENABLE_SKIA_DEBUG=
11951         fi
11952         ENABLE_SKIA=TRUE
11953         AC_DEFINE(HAVE_FEATURE_SKIA)
11954         BUILD_TYPE="$BUILD_TYPE SKIA"
11956         if test "$OS" = "MACOSX"; then
11957             AC_DEFINE(SK_SUPPORT_GPU,1)
11958             AC_DEFINE(SK_METAL,1)
11959             SKIA_GPU=METAL
11960             AC_SUBST(SKIA_GPU)
11961         else
11962             AC_DEFINE(SK_SUPPORT_GPU,1)
11963             AC_DEFINE(SK_VULKAN,1)
11964             SKIA_GPU=VULKAN
11965             AC_SUBST(SKIA_GPU)
11966         fi
11968         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
11969             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
11970             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
11971         fi
11972     else
11973         AC_MSG_RESULT([no (freetype too old)])
11974         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
11975     fi
11977 else
11978     AC_MSG_CHECKING([whether to build Skia])
11979     AC_MSG_RESULT([no])
11981 AC_SUBST(ENABLE_SKIA)
11982 AC_SUBST(ENABLE_SKIA_DEBUG)
11984 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11985 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11986 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11987 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11988 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11989 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11990 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11991 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
11992 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11993 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11994 HAVE_LO_CLANG_DLLEXPORTINLINES=
11996 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
11997     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11998         AC_MSG_CHECKING([for Clang])
11999         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12000     else
12001         if test "$_os" = "WINNT"; then
12002             AC_MSG_CHECKING([for clang-cl])
12003             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12004                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12005             elif test -n "$PROGRAMFILES" -a -x "$PROGRAMFILES/LLVM/bin/clang-cl.exe"; then
12006                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12007             elif test -x "c:/Program Files/LLVM/bin/clang-cl.exe"; then
12008                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12009             fi
12010             if test -n "$LO_CLANG_CC"; then
12011                 dnl explicitly set -m32/-m64
12012                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12013                 LO_CLANG_CXX="$LO_CLANG_CC"
12014                 AC_MSG_RESULT([$LO_CLANG_CC])
12015             else
12016                 AC_MSG_RESULT([no])
12017             fi
12019             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12020             echo "#include <stdlib.h>" > conftest.c
12021             LO_CLANG_SHOWINCLUDES_PREFIX=`$LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12022                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12023             rm -f conftest.c conftest.obj
12024             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12025                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12026             else
12027                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12028             fi
12029         else
12030             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12031             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12032         fi
12033     fi
12034     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12035         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12036         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12037         if test "$clang2_ver" -lt 50002; then
12038             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12039             LO_CLANG_CC=
12040             LO_CLANG_CXX=
12041         fi
12042     fi
12043     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12044         save_CXX="$CXX"
12045         CXX="$LO_CLANG_CXX"
12046         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12047         AC_LANG_PUSH([C++])
12048         save_CXXFLAGS=$CXXFLAGS
12049         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12050         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12051                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12052                 AC_MSG_RESULT([yes])
12053             ], [AC_MSG_RESULT([no])])
12054         CXXFLAGS=$save_CXXFLAGS
12055         AC_LANG_POP([C++])
12056         CXX="$save_CXX"
12057         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12058             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.])
12059         fi
12060     fi
12061     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12062         # Skia is the default on Windows and Mac, so hard-require Clang.
12063         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12064         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12065             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12066         else
12067             AC_MSG_WARN([Clang compiler not found.])
12068         fi
12069     else
12071         save_CXX="$CXX"
12072         CXX="$LO_CLANG_CXX"
12073         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12074         flag_sse2=-msse2
12075         flag_ssse3=-mssse3
12076         flag_sse41=-msse4.1
12077         flag_sse42=-msse4.2
12078         flag_avx=-mavx
12079         flag_avx2=-mavx2
12080         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12081         flag_avx512f=-mavx512f
12082         flag_f16c=-mf16c
12083         flag_fma=-mfma
12085         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12086         AC_LANG_PUSH([C++])
12087         save_CXXFLAGS=$CXXFLAGS
12088         CXXFLAGS="$CXXFLAGS $flag_sse2"
12089         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12090             #include <emmintrin.h>
12091             int main () {
12092                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12093                 c = _mm_xor_si128 (a, b);
12094                 return 0;
12095             }
12096             ])],
12097             [can_compile_sse2=yes],
12098             [can_compile_sse2=no])
12099         AC_LANG_POP([C++])
12100         CXXFLAGS=$save_CXXFLAGS
12101         AC_MSG_RESULT([${can_compile_sse2}])
12102         if test "${can_compile_sse2}" = "yes" ; then
12103             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12104         fi
12106         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12107         AC_LANG_PUSH([C++])
12108         save_CXXFLAGS=$CXXFLAGS
12109         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12110         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12111             #include <tmmintrin.h>
12112             int main () {
12113                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12114                 c = _mm_maddubs_epi16 (a, b);
12115                 return 0;
12116             }
12117             ])],
12118             [can_compile_ssse3=yes],
12119             [can_compile_ssse3=no])
12120         AC_LANG_POP([C++])
12121         CXXFLAGS=$save_CXXFLAGS
12122         AC_MSG_RESULT([${can_compile_ssse3}])
12123         if test "${can_compile_ssse3}" = "yes" ; then
12124             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12125         fi
12127         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12128         AC_LANG_PUSH([C++])
12129         save_CXXFLAGS=$CXXFLAGS
12130         CXXFLAGS="$CXXFLAGS $flag_sse41"
12131         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12132             #include <smmintrin.h>
12133             int main () {
12134                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12135                 c = _mm_cmpeq_epi64 (a, b);
12136                 return 0;
12137             }
12138             ])],
12139             [can_compile_sse41=yes],
12140             [can_compile_sse41=no])
12141         AC_LANG_POP([C++])
12142         CXXFLAGS=$save_CXXFLAGS
12143         AC_MSG_RESULT([${can_compile_sse41}])
12144         if test "${can_compile_sse41}" = "yes" ; then
12145             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12146         fi
12148         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12149         AC_LANG_PUSH([C++])
12150         save_CXXFLAGS=$CXXFLAGS
12151         CXXFLAGS="$CXXFLAGS $flag_sse42"
12152         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12153             #include <nmmintrin.h>
12154             int main () {
12155                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12156                 c = _mm_cmpgt_epi64 (a, b);
12157                 return 0;
12158             }
12159             ])],
12160             [can_compile_sse42=yes],
12161             [can_compile_sse42=no])
12162         AC_LANG_POP([C++])
12163         CXXFLAGS=$save_CXXFLAGS
12164         AC_MSG_RESULT([${can_compile_sse42}])
12165         if test "${can_compile_sse42}" = "yes" ; then
12166             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12167         fi
12169         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12170         AC_LANG_PUSH([C++])
12171         save_CXXFLAGS=$CXXFLAGS
12172         CXXFLAGS="$CXXFLAGS $flag_avx"
12173         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12174             #include <immintrin.h>
12175             int main () {
12176                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12177                 c = _mm256_xor_ps(a, b);
12178                 return 0;
12179             }
12180             ])],
12181             [can_compile_avx=yes],
12182             [can_compile_avx=no])
12183         AC_LANG_POP([C++])
12184         CXXFLAGS=$save_CXXFLAGS
12185         AC_MSG_RESULT([${can_compile_avx}])
12186         if test "${can_compile_avx}" = "yes" ; then
12187             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12188         fi
12190         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12191         AC_LANG_PUSH([C++])
12192         save_CXXFLAGS=$CXXFLAGS
12193         CXXFLAGS="$CXXFLAGS $flag_avx2"
12194         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12195             #include <immintrin.h>
12196             int main () {
12197                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12198                 c = _mm256_maddubs_epi16(a, b);
12199                 return 0;
12200             }
12201             ])],
12202             [can_compile_avx2=yes],
12203             [can_compile_avx2=no])
12204         AC_LANG_POP([C++])
12205         CXXFLAGS=$save_CXXFLAGS
12206         AC_MSG_RESULT([${can_compile_avx2}])
12207         if test "${can_compile_avx2}" = "yes" ; then
12208             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12209         fi
12211         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12212         AC_LANG_PUSH([C++])
12213         save_CXXFLAGS=$CXXFLAGS
12214         CXXFLAGS="$CXXFLAGS $flag_avx512"
12215         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12216             #include <immintrin.h>
12217             int main () {
12218                 __m512i a = _mm512_loadu_si512(0);
12219                 __m512d v1 = _mm512_load_pd(0);
12220                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12221                 __m512d v2 = _mm512_abs_pd(v1);
12222                 return 0;
12223             }
12224             ])],
12225             [can_compile_avx512=yes],
12226             [can_compile_avx512=no])
12227         AC_LANG_POP([C++])
12228         CXXFLAGS=$save_CXXFLAGS
12229         AC_MSG_RESULT([${can_compile_avx512}])
12230         if test "${can_compile_avx512}" = "yes" ; then
12231             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12232             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12233         fi
12235         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12236         AC_LANG_PUSH([C++])
12237         save_CXXFLAGS=$CXXFLAGS
12238         CXXFLAGS="$CXXFLAGS $flag_f16c"
12239         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12240             #include <immintrin.h>
12241             int main () {
12242                 __m128i a = _mm_set1_epi32 (0);
12243                 __m128 c;
12244                 c = _mm_cvtph_ps(a);
12245                 return 0;
12246             }
12247             ])],
12248             [can_compile_f16c=yes],
12249             [can_compile_f16c=no])
12250         AC_LANG_POP([C++])
12251         CXXFLAGS=$save_CXXFLAGS
12252         AC_MSG_RESULT([${can_compile_f16c}])
12253         if test "${can_compile_f16c}" = "yes" ; then
12254             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12255         fi
12257         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12258         AC_LANG_PUSH([C++])
12259         save_CXXFLAGS=$CXXFLAGS
12260         CXXFLAGS="$CXXFLAGS $flag_fma"
12261         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12262             #include <immintrin.h>
12263             int main () {
12264                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12265                 d = _mm256_fmadd_ps(a, b, c);
12266                 return 0;
12267             }
12268             ])],
12269             [can_compile_fma=yes],
12270             [can_compile_fma=no])
12271         AC_LANG_POP([C++])
12272         CXXFLAGS=$save_CXXFLAGS
12273         AC_MSG_RESULT([${can_compile_fma}])
12274         if test "${can_compile_fma}" = "yes" ; then
12275             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12276         fi
12278         CXX="$save_CXX"
12279     fi
12282 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12284 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12285     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12286     AC_LANG_PUSH([C])
12287     save_CC="$CC"
12288     CC="$LO_CLANG_CC"
12289     save_CFLAGS=$CFLAGS
12290     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12291     dnl an empty program will do, we're checking the compiler flags
12292     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12293                       [use_ccache=yes], [use_ccache=no])
12294     CFLAGS=$save_CFLAGS
12295     CC=$save_CC
12296     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12297         AC_MSG_RESULT([yes])
12298     else
12299         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12300         AC_MSG_RESULT([no])
12301     fi
12302     AC_LANG_POP([C])
12304     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12305     AC_LANG_PUSH([C++])
12306     save_CXX="$CXX"
12307     CXX="$LO_CLANG_CXX"
12308     save_CXXFLAGS=$CXXFLAGS
12309     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12310     dnl an empty program will do, we're checking the compiler flags
12311     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12312                       [use_ccache=yes], [use_ccache=no])
12313     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12314         AC_MSG_RESULT([yes])
12315     else
12316         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12317         AC_MSG_RESULT([no])
12318     fi
12319     CXXFLAGS=$save_CXXFLAGS
12320     CXX=$save_CXX
12321     AC_LANG_POP([C++])
12324 AC_SUBST(LO_CLANG_CC)
12325 AC_SUBST(LO_CLANG_CXX)
12326 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12327 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12328 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12329 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12330 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12331 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12332 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12333 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12334 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12335 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12336 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12337 AC_SUBST(CLANG_USE_LD)
12338 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12340 SYSTEM_GPGMEPP=
12342 AC_MSG_CHECKING([whether to enable gpgmepp])
12343 if test "$enable_gpgmepp" = no; then
12344     AC_MSG_RESULT([no])
12345 elif test "$enable_mpl_subset" = "yes"; then
12346     AC_MSG_RESULT([no (MPL only])
12347 elif test "$enable_fuzzers" = "yes"; then
12348     AC_MSG_RESULT([no (oss-fuzz)])
12349 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12350     AC_MSG_RESULT([yes])
12351     dnl ===================================================================
12352     dnl Check for system gpgme
12353     dnl ===================================================================
12354     AC_MSG_CHECKING([which gpgmepp to use])
12355     if test "$with_system_gpgmepp" = "yes"; then
12356         AC_MSG_RESULT([external])
12357         SYSTEM_GPGMEPP=TRUE
12359         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12360         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12361             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12362         # progress_callback is the only func with plain C linkage
12363         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12364         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12365             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12366         AC_CHECK_HEADER(gpgme.h, [],
12367             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12368     else
12369         AC_MSG_RESULT([internal])
12370         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12372         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12373         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12374         if test "$_os" != "WINNT"; then
12375             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12376             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12377         fi
12378     fi
12379     ENABLE_GPGMEPP=TRUE
12380     AC_DEFINE([HAVE_FEATURE_GPGME])
12381     AC_PATH_PROG(GPG, gpg)
12382     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12383     # so let's exclude that manually for the moment
12384     if test -n "$GPG" -a "$_os" != "WINNT"; then
12385         # make sure we not only have a working gpgme, but a full working
12386         # gpg installation to run OpenPGP signature verification
12387         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12388     fi
12389     if test "$_os" = "Linux"; then
12390       uid=`id -u`
12391       AC_MSG_CHECKING([for /run/user/$uid])
12392       if test -d /run/user/$uid; then
12393         AC_MSG_RESULT([yes])
12394         AC_PATH_PROG(GPGCONF, gpgconf)
12396         # Older versions of gpgconf are not working as expected, since
12397         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12398         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12399         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12400         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12401         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12402         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12403         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12404           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12405           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12406           if $GPGCONF --dump-options > /dev/null ; then
12407             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12408               AC_MSG_RESULT([yes])
12409               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12410               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12411             else
12412               AC_MSG_RESULT([no])
12413             fi
12414           else
12415             AC_MSG_RESULT([no. missing or broken gpgconf?])
12416           fi
12417         else
12418           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12419         fi
12420       else
12421         AC_MSG_RESULT([no])
12422      fi
12423    fi
12424 else
12425     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12427 AC_SUBST(ENABLE_GPGMEPP)
12428 AC_SUBST(SYSTEM_GPGMEPP)
12429 AC_SUBST(GPG_ERROR_CFLAGS)
12430 AC_SUBST(GPG_ERROR_LIBS)
12431 AC_SUBST(LIBASSUAN_CFLAGS)
12432 AC_SUBST(LIBASSUAN_LIBS)
12433 AC_SUBST(GPGMEPP_CFLAGS)
12434 AC_SUBST(GPGMEPP_LIBS)
12436 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12437 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12438     AC_MSG_RESULT([yes])
12439     ENABLE_MEDIAWIKI=TRUE
12440     BUILD_TYPE="$BUILD_TYPE XSLTML"
12441     if test  "x$with_java" = "xno"; then
12442         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12443     fi
12444 else
12445     AC_MSG_RESULT([no])
12446     ENABLE_MEDIAWIKI=
12447     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12449 AC_SUBST(ENABLE_MEDIAWIKI)
12451 AC_MSG_CHECKING([whether to build the Report Builder])
12452 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12453     AC_MSG_RESULT([yes])
12454     ENABLE_REPORTBUILDER=TRUE
12455     AC_MSG_CHECKING([which jfreereport libs to use])
12456     if test "$with_system_jfreereport" = "yes"; then
12457         SYSTEM_JFREEREPORT=TRUE
12458         AC_MSG_RESULT([external])
12459         if test -z $SAC_JAR; then
12460             SAC_JAR=/usr/share/java/sac.jar
12461         fi
12462         if ! test -f $SAC_JAR; then
12463              AC_MSG_ERROR(sac.jar not found.)
12464         fi
12466         if test -z $LIBXML_JAR; then
12467             if test -f /usr/share/java/libxml-1.0.0.jar; then
12468                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12469             elif test -f /usr/share/java/libxml.jar; then
12470                 LIBXML_JAR=/usr/share/java/libxml.jar
12471             else
12472                 AC_MSG_ERROR(libxml.jar replacement not found.)
12473             fi
12474         elif ! test -f $LIBXML_JAR; then
12475             AC_MSG_ERROR(libxml.jar not found.)
12476         fi
12478         if test -z $FLUTE_JAR; then
12479             if test -f /usr/share/java/flute-1.3.0.jar; then
12480                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12481             elif test -f /usr/share/java/flute.jar; then
12482                 FLUTE_JAR=/usr/share/java/flute.jar
12483             else
12484                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12485             fi
12486         elif ! test -f $FLUTE_JAR; then
12487             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12488         fi
12490         if test -z $JFREEREPORT_JAR; then
12491             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12492                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12493             elif test -f /usr/share/java/flow-engine.jar; then
12494                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12495             else
12496                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12497             fi
12498         elif ! test -f  $JFREEREPORT_JAR; then
12499                 AC_MSG_ERROR(jfreereport.jar not found.)
12500         fi
12502         if test -z $LIBLAYOUT_JAR; then
12503             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12504                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12505             elif test -f /usr/share/java/liblayout.jar; then
12506                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12507             else
12508                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12509             fi
12510         elif ! test -f $LIBLAYOUT_JAR; then
12511                 AC_MSG_ERROR(liblayout.jar not found.)
12512         fi
12514         if test -z $LIBLOADER_JAR; then
12515             if test -f /usr/share/java/libloader-1.0.0.jar; then
12516                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12517             elif test -f /usr/share/java/libloader.jar; then
12518                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12519             else
12520                 AC_MSG_ERROR(libloader.jar replacement not found.)
12521             fi
12522         elif ! test -f  $LIBLOADER_JAR; then
12523             AC_MSG_ERROR(libloader.jar not found.)
12524         fi
12526         if test -z $LIBFORMULA_JAR; then
12527             if test -f /usr/share/java/libformula-0.2.0.jar; then
12528                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12529             elif test -f /usr/share/java/libformula.jar; then
12530                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12531             else
12532                 AC_MSG_ERROR(libformula.jar replacement not found.)
12533             fi
12534         elif ! test -f $LIBFORMULA_JAR; then
12535                 AC_MSG_ERROR(libformula.jar not found.)
12536         fi
12538         if test -z $LIBREPOSITORY_JAR; then
12539             if test -f /usr/share/java/librepository-1.0.0.jar; then
12540                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12541             elif test -f /usr/share/java/librepository.jar; then
12542                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12543             else
12544                 AC_MSG_ERROR(librepository.jar replacement not found.)
12545             fi
12546         elif ! test -f $LIBREPOSITORY_JAR; then
12547             AC_MSG_ERROR(librepository.jar not found.)
12548         fi
12550         if test -z $LIBFONTS_JAR; then
12551             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12552                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12553             elif test -f /usr/share/java/libfonts.jar; then
12554                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12555             else
12556                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12557             fi
12558         elif ! test -f $LIBFONTS_JAR; then
12559                 AC_MSG_ERROR(libfonts.jar not found.)
12560         fi
12562         if test -z $LIBSERIALIZER_JAR; then
12563             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12564                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12565             elif test -f /usr/share/java/libserializer.jar; then
12566                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12567             else
12568                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12569             fi
12570         elif ! test -f $LIBSERIALIZER_JAR; then
12571                 AC_MSG_ERROR(libserializer.jar not found.)
12572         fi
12574         if test -z $LIBBASE_JAR; then
12575             if test -f /usr/share/java/libbase-1.0.0.jar; then
12576                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12577             elif test -f /usr/share/java/libbase.jar; then
12578                 LIBBASE_JAR=/usr/share/java/libbase.jar
12579             else
12580                 AC_MSG_ERROR(libbase.jar replacement not found.)
12581             fi
12582         elif ! test -f $LIBBASE_JAR; then
12583             AC_MSG_ERROR(libbase.jar not found.)
12584         fi
12586     else
12587         AC_MSG_RESULT([internal])
12588         SYSTEM_JFREEREPORT=
12589         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12590         NEED_ANT=TRUE
12591     fi
12592 else
12593     AC_MSG_RESULT([no])
12594     ENABLE_REPORTBUILDER=
12595     SYSTEM_JFREEREPORT=
12597 AC_SUBST(ENABLE_REPORTBUILDER)
12598 AC_SUBST(SYSTEM_JFREEREPORT)
12599 AC_SUBST(SAC_JAR)
12600 AC_SUBST(LIBXML_JAR)
12601 AC_SUBST(FLUTE_JAR)
12602 AC_SUBST(JFREEREPORT_JAR)
12603 AC_SUBST(LIBBASE_JAR)
12604 AC_SUBST(LIBLAYOUT_JAR)
12605 AC_SUBST(LIBLOADER_JAR)
12606 AC_SUBST(LIBFORMULA_JAR)
12607 AC_SUBST(LIBREPOSITORY_JAR)
12608 AC_SUBST(LIBFONTS_JAR)
12609 AC_SUBST(LIBSERIALIZER_JAR)
12611 # scripting provider for BeanShell?
12612 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12613 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12614     AC_MSG_RESULT([yes])
12615     ENABLE_SCRIPTING_BEANSHELL=TRUE
12617     dnl ===================================================================
12618     dnl Check for system beanshell
12619     dnl ===================================================================
12620     AC_MSG_CHECKING([which beanshell to use])
12621     if test "$with_system_beanshell" = "yes"; then
12622         AC_MSG_RESULT([external])
12623         SYSTEM_BSH=TRUE
12624         if test -z $BSH_JAR; then
12625             BSH_JAR=/usr/share/java/bsh.jar
12626         fi
12627         if ! test -f $BSH_JAR; then
12628             AC_MSG_ERROR(bsh.jar not found.)
12629         fi
12630     else
12631         AC_MSG_RESULT([internal])
12632         SYSTEM_BSH=
12633         BUILD_TYPE="$BUILD_TYPE BSH"
12634     fi
12635 else
12636     AC_MSG_RESULT([no])
12637     ENABLE_SCRIPTING_BEANSHELL=
12638     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12640 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12641 AC_SUBST(SYSTEM_BSH)
12642 AC_SUBST(BSH_JAR)
12644 # scripting provider for JavaScript?
12645 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12646 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12647     AC_MSG_RESULT([yes])
12648     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12650     dnl ===================================================================
12651     dnl Check for system rhino
12652     dnl ===================================================================
12653     AC_MSG_CHECKING([which rhino to use])
12654     if test "$with_system_rhino" = "yes"; then
12655         AC_MSG_RESULT([external])
12656         SYSTEM_RHINO=TRUE
12657         if test -z $RHINO_JAR; then
12658             RHINO_JAR=/usr/share/java/js.jar
12659         fi
12660         if ! test -f $RHINO_JAR; then
12661             AC_MSG_ERROR(js.jar not found.)
12662         fi
12663     else
12664         AC_MSG_RESULT([internal])
12665         SYSTEM_RHINO=
12666         BUILD_TYPE="$BUILD_TYPE RHINO"
12667         NEED_ANT=TRUE
12668     fi
12669 else
12670     AC_MSG_RESULT([no])
12671     ENABLE_SCRIPTING_JAVASCRIPT=
12672     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12674 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12675 AC_SUBST(SYSTEM_RHINO)
12676 AC_SUBST(RHINO_JAR)
12678 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12679 # paths should be added to library search path. So lets put all 64-bit
12680 # platforms there.
12681 supports_multilib=
12682 case "$host_cpu" in
12683 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12684     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12685         supports_multilib="yes"
12686     fi
12687     ;;
12689     ;;
12690 esac
12692 dnl ===================================================================
12693 dnl QT5 Integration
12694 dnl ===================================================================
12696 QT5_CFLAGS=""
12697 QT5_LIBS=""
12698 QMAKE5="qmake"
12699 MOC5="moc"
12700 QT5_GOBJECT_CFLAGS=""
12701 QT5_GOBJECT_LIBS=""
12702 QT5_HAVE_GOBJECT=""
12703 QT5_PLATFORMS_SRCDIR=""
12704 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12705         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12706         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12707 then
12708     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12709     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12711     if test -n "$supports_multilib"; then
12712         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12713     fi
12715     qt5_test_include="QtWidgets/qapplication.h"
12716     if test "$_os" = "Emscripten"; then
12717         qt5_test_library="libQt5Widgets.a"
12718     else
12719         qt5_test_library="libQt5Widgets.so"
12720     fi
12722     dnl Check for qmake5
12723     if test -n "$QT5DIR"; then
12724         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12725     else
12726         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12727     fi
12728     if test "$QMAKE5" = "no"; then
12729         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12730     else
12731         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12732         if test -z "$qmake5_test_ver"; then
12733             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12734         fi
12735         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12736         qt5_minimal_minor="6"
12737         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12738             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12739         else
12740             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12741         fi
12742     fi
12744     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12745     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12746     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12747     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12749     AC_MSG_CHECKING([for Qt5 headers])
12750     qt5_incdir="no"
12751     for inc_dir in $qt5_incdirs; do
12752         if test -r "$inc_dir/$qt5_test_include"; then
12753             qt5_incdir="$inc_dir"
12754             break
12755         fi
12756     done
12757     AC_MSG_RESULT([$qt5_incdir])
12758     if test "x$qt5_incdir" = "xno"; then
12759         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12760     fi
12761     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12762     AC_LANG_PUSH([C++])
12763     save_CPPFLAGS=$CPPFLAGS
12764     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12765     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12766         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12767     CPPFLAGS=$save_CPPFLAGS
12768     AC_LANG_POP([C++])
12770     AC_MSG_CHECKING([for Qt5 libraries])
12771     qt5_libdir="no"
12772     for lib_dir in $qt5_libdirs; do
12773         if test -r "$lib_dir/$qt5_test_library"; then
12774             qt5_libdir="$lib_dir"
12775             break
12776         fi
12777     done
12778     AC_MSG_RESULT([$qt5_libdir])
12779     if test "x$qt5_libdir" = "xno"; then
12780         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12781     fi
12783     if test "$_os" = "Emscripten"; then
12784         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12785             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12786         fi
12787         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12788             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12789         fi
12790     fi
12792     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12793     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12794     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12795     if test "$_os" = "Emscripten"; then
12796         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12797     fi
12799     if test "$USING_X11" = TRUE; then
12800         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12801         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12802             QT5_HAVE_XCB_ICCCM=1
12803             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12804         ],[
12805             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)])
12806             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12807         ])
12808         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12809         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12810         QT5_USING_X11=1
12811         AC_DEFINE(QT5_USING_X11)
12812     fi
12814     dnl Check for Meta Object Compiler
12816     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12817     if test "$MOC5" = "no"; then
12818         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12819 the root of your Qt installation by exporting QT5DIR before running "configure".])
12820     fi
12822     if test "$test_gstreamer_1_0" = yes; then
12823         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12824                 QT5_HAVE_GOBJECT=1
12825                 AC_DEFINE(QT5_HAVE_GOBJECT)
12826             ],
12827             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12828         )
12829     fi
12831 AC_SUBST(QT5_CFLAGS)
12832 AC_SUBST(QT5_LIBS)
12833 AC_SUBST(MOC5)
12834 AC_SUBST(QT5_GOBJECT_CFLAGS)
12835 AC_SUBST(QT5_GOBJECT_LIBS)
12836 AC_SUBST(QT5_HAVE_GOBJECT)
12837 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12839 dnl ===================================================================
12840 dnl QT6 Integration
12841 dnl ===================================================================
12843 QT6_CFLAGS=""
12844 QT6_LIBS=""
12845 QMAKE6="qmake"
12846 MOC6="moc"
12847 QT6_PLATFORMS_SRCDIR=""
12848 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12849 then
12850     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12851     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12853     if test -n "$supports_multilib"; then
12854         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12855     fi
12857     qt6_test_include="QtWidgets/qapplication.h"
12858     if test "$_os" = "Emscripten"; then
12859         qt6_test_library="libQt6Widgets.a"
12860     else
12861         qt6_test_library="libQt6Widgets.so"
12862     fi
12864     dnl Check for qmake6
12865     if test -n "$QT6DIR"; then
12866         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12867     else
12868         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12869     fi
12870     if test "$QMAKE6" = "no"; then
12871         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12872     else
12873         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12874         if test -z "$qmake6_test_ver"; then
12875             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12876         fi
12877         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12878     fi
12880     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12881     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12882     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12883     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12885     AC_MSG_CHECKING([for Qt6 headers])
12886     qt6_incdir="no"
12887     for inc_dir in $qt6_incdirs; do
12888         if test -r "$inc_dir/$qt6_test_include"; then
12889             qt6_incdir="$inc_dir"
12890             break
12891         fi
12892     done
12893     AC_MSG_RESULT([$qt6_incdir])
12894     if test "x$qt6_incdir" = "xno"; then
12895         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12896     fi
12897     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12898     AC_LANG_PUSH([C++])
12899     save_CPPFLAGS=$CPPFLAGS
12900     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12901     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12902         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12903     CPPFLAGS=$save_CPPFLAGS
12904     AC_LANG_POP([C++])
12906     AC_MSG_CHECKING([for Qt6 libraries])
12907     qt6_libdir="no"
12908     for lib_dir in $qt6_libdirs; do
12909         if test -r "$lib_dir/$qt6_test_library"; then
12910             qt6_libdir="$lib_dir"
12911             break
12912         fi
12913     done
12914     AC_MSG_RESULT([$qt6_libdir])
12915     if test "x$qt6_libdir" = "xno"; then
12916         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12917     fi
12919     if test "$_os" = "Emscripten"; then
12920         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12921             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12922         fi
12923         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12924             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12925         fi
12926     fi
12928     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12929     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12930     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12931     if test "$_os" = "Emscripten"; then
12932         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12933     fi
12935     if test "$USING_X11" = TRUE; then
12936         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12937         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12938         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
12939         QT6_USING_X11=1
12940         AC_DEFINE(QT6_USING_X11)
12941     fi
12943     dnl Check for Meta Object Compiler
12945     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
12946     if test "$MOC6" = "no"; then
12947         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12948 the root of your Qt installation by exporting QT6DIR before running "configure".])
12949     fi
12951 AC_SUBST(QT6_CFLAGS)
12952 AC_SUBST(QT6_LIBS)
12953 AC_SUBST(MOC6)
12954 AC_SUBST(QT6_PLATFORMS_SRCDIR)
12956 dnl ===================================================================
12957 dnl KF5 Integration
12958 dnl ===================================================================
12960 KF5_CFLAGS=""
12961 KF5_LIBS=""
12962 KF5_CONFIG="kf5-config"
12963 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12964         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12965 then
12966     if test "$OS" = "HAIKU"; then
12967         haiku_arch="`echo $RTL_ARCH | tr X x`"
12968         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12969         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12970     fi
12972     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12973     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12974     if test -n "$supports_multilib"; then
12975         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12976     fi
12978     kf5_test_include="KF5/kcoreaddons_version.h"
12979     kf5_test_library="libKF5CoreAddons.so"
12980     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12982     dnl kf5 KDE4 support compatibility installed
12983     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12984     if test "$KF5_CONFIG" != "no"; then
12985         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12986         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12987     fi
12989     dnl Check for KF5 headers
12990     AC_MSG_CHECKING([for KF5 headers])
12991     kf5_incdir="no"
12992     for kf5_check in $kf5_incdirs; do
12993         if test -r "$kf5_check/$kf5_test_include"; then
12994             kf5_incdir="$kf5_check/KF5"
12995             break
12996         fi
12997     done
12998     AC_MSG_RESULT([$kf5_incdir])
12999     if test "x$kf5_incdir" = "xno"; then
13000         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13001     fi
13003     dnl Check for KF5 libraries
13004     AC_MSG_CHECKING([for KF5 libraries])
13005     kf5_libdir="no"
13006     for kf5_check in $kf5_libdirs; do
13007         if test -r "$kf5_check/$kf5_test_library"; then
13008             kf5_libdir="$kf5_check"
13009             break
13010         fi
13011     done
13013     AC_MSG_RESULT([$kf5_libdir])
13014     if test "x$kf5_libdir" = "xno"; then
13015         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13016     fi
13018     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"
13019     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13020     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13022     if test "$USING_X11" = TRUE; then
13023         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13024     fi
13026     AC_LANG_PUSH([C++])
13027     save_CXXFLAGS=$CXXFLAGS
13028     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13029     AC_MSG_CHECKING([whether KDE is >= 5.0])
13030        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13031 #include <kcoreaddons_version.h>
13033 int main(int argc, char **argv) {
13034        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13035        else return 1;
13037        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13038     CXXFLAGS=$save_CXXFLAGS
13039     AC_LANG_POP([C++])
13041 AC_SUBST(KF5_CFLAGS)
13042 AC_SUBST(KF5_LIBS)
13044 dnl ===================================================================
13045 dnl Test whether to include Evolution 2 support
13046 dnl ===================================================================
13047 AC_MSG_CHECKING([whether to enable evolution 2 support])
13048 if test "$enable_evolution2" = yes; then
13049     AC_MSG_RESULT([yes])
13050     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13051     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13052     FilterLibs "${GOBJECT_LIBS}"
13053     GOBJECT_LIBS="${filteredlibs}"
13054     ENABLE_EVOAB2="TRUE"
13055 else
13056     AC_MSG_RESULT([no])
13058 AC_SUBST(ENABLE_EVOAB2)
13059 AC_SUBST(GOBJECT_CFLAGS)
13060 AC_SUBST(GOBJECT_LIBS)
13062 dnl ===================================================================
13063 dnl Test which themes to include
13064 dnl ===================================================================
13065 AC_MSG_CHECKING([which themes to include])
13066 # if none given use default subset of available themes
13067 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13068     with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
13071 WITH_THEMES=""
13072 if test "x$with_theme" != "xno"; then
13073     for theme in $with_theme; do
13074         case $theme in
13075         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
13076         default) real_theme=colibre ;;
13077         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13078         esac
13079         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13080     done
13082 AC_MSG_RESULT([$WITH_THEMES])
13083 AC_SUBST([WITH_THEMES])
13084 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13085 for theme in $with_theme; do
13086     case $theme in
13087     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13088     *) ;;
13089     esac
13090 done
13092 ###############################################################################
13093 # Extensions checking
13094 ###############################################################################
13095 AC_MSG_CHECKING([for extensions integration])
13096 if test "x$enable_extension_integration" != "xno"; then
13097     WITH_EXTENSION_INTEGRATION=TRUE
13098     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13099     AC_MSG_RESULT([yes, use integration])
13100 else
13101     WITH_EXTENSION_INTEGRATION=
13102     AC_MSG_RESULT([no, do not integrate])
13104 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13106 dnl Should any extra extensions be included?
13107 dnl There are standalone tests for each of these below.
13108 WITH_EXTRA_EXTENSIONS=
13109 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13111 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13112 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13113 if test "x$with_java" != "xno"; then
13114     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13115     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13118 AC_MSG_CHECKING([whether to build opens___.ttf])
13119 if test "$enable_build_opensymbol" = "yes"; then
13120     AC_MSG_RESULT([yes])
13121     AC_PATH_PROG(FONTFORGE, fontforge)
13122     if test -z "$FONTFORGE"; then
13123         AC_MSG_ERROR([fontforge not installed])
13124     fi
13125 else
13126     AC_MSG_RESULT([no])
13127     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13129 AC_SUBST(FONTFORGE)
13131 dnl ===================================================================
13132 dnl Test whether to include fonts
13133 dnl ===================================================================
13134 AC_MSG_CHECKING([whether to include third-party fonts])
13135 if test "$with_fonts" != "no"; then
13136     AC_MSG_RESULT([yes])
13137     WITH_FONTS=TRUE
13138     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13139     AC_DEFINE(HAVE_MORE_FONTS)
13140 else
13141     AC_MSG_RESULT([no])
13142     WITH_FONTS=
13143     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13145 AC_SUBST(WITH_FONTS)
13148 dnl ===================================================================
13149 dnl Test whether to enable online update service
13150 dnl ===================================================================
13151 AC_MSG_CHECKING([whether to enable online update])
13152 ENABLE_ONLINE_UPDATE=
13153 ENABLE_ONLINE_UPDATE_MAR=
13154 UPDATE_CONFIG=
13155 if test "$enable_online_update" = ""; then
13156     AC_MSG_RESULT([no])
13157 else
13158     if test "$enable_online_update" = "mar"; then
13159         AC_MSG_RESULT([yes - MAR-based online update])
13160         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13161         if test "$with_update_config" = ""; then
13162             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13163         fi
13164         UPDATE_CONFIG="$with_update_config"
13165         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13166     elif test "$enable_online_update" = "yes"; then
13167         AC_MSG_RESULT([yes])
13168         ENABLE_ONLINE_UPDATE="TRUE"
13169     else
13170         AC_MSG_RESULT([no])
13171     fi
13173 AC_SUBST(ENABLE_ONLINE_UPDATE)
13174 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13175 AC_SUBST(UPDATE_CONFIG)
13178 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13179 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13180     if test "x$with_privacy_policy_url" = "xundefined"; then
13181         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13182     fi
13184 AC_SUBST(PRIVACY_POLICY_URL)
13185 dnl ===================================================================
13186 dnl Test whether we need bzip2
13187 dnl ===================================================================
13188 SYSTEM_BZIP2=
13189 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13190     AC_MSG_CHECKING([whether to use system bzip2])
13191     if test "$with_system_bzip2" = yes; then
13192         SYSTEM_BZIP2=TRUE
13193         AC_MSG_RESULT([yes])
13194         PKG_CHECK_MODULES(BZIP2, bzip2)
13195         FilterLibs "${BZIP2_LIBS}"
13196         BZIP2_LIBS="${filteredlibs}"
13197     else
13198         AC_MSG_RESULT([no])
13199         BUILD_TYPE="$BUILD_TYPE BZIP2"
13200     fi
13202 AC_SUBST(SYSTEM_BZIP2)
13203 AC_SUBST(BZIP2_CFLAGS)
13204 AC_SUBST(BZIP2_LIBS)
13206 dnl ===================================================================
13207 dnl Test whether to enable extension update
13208 dnl ===================================================================
13209 AC_MSG_CHECKING([whether to enable extension update])
13210 ENABLE_EXTENSION_UPDATE=
13211 if test "x$enable_extension_update" = "xno"; then
13212     AC_MSG_RESULT([no])
13213 else
13214     AC_MSG_RESULT([yes])
13215     ENABLE_EXTENSION_UPDATE="TRUE"
13216     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13217     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13219 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13222 dnl ===================================================================
13223 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13224 dnl ===================================================================
13225 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13226 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13227     AC_MSG_RESULT([no])
13228     ENABLE_SILENT_MSI=
13229 else
13230     AC_MSG_RESULT([yes])
13231     ENABLE_SILENT_MSI=TRUE
13232     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13234 AC_SUBST(ENABLE_SILENT_MSI)
13236 AC_MSG_CHECKING([whether and how to use Xinerama])
13237 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13238     if test "$x_libraries" = "default_x_libraries"; then
13239         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13240         if test "x$XINERAMALIB" = x; then
13241            XINERAMALIB="/usr/lib"
13242         fi
13243     else
13244         XINERAMALIB="$x_libraries"
13245     fi
13246     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13247         # we have both versions, let the user decide but use the dynamic one
13248         # per default
13249         USE_XINERAMA=TRUE
13250         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13251             XINERAMA_LINK=dynamic
13252         else
13253             XINERAMA_LINK=static
13254         fi
13255     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13256         # we have only the dynamic version
13257         USE_XINERAMA=TRUE
13258         XINERAMA_LINK=dynamic
13259     elif test -e "$XINERAMALIB/libXinerama.a"; then
13260         # static version
13261         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13262             USE_XINERAMA=TRUE
13263             XINERAMA_LINK=static
13264         else
13265             USE_XINERAMA=
13266             XINERAMA_LINK=none
13267         fi
13268     else
13269         # no Xinerama
13270         USE_XINERAMA=
13271         XINERAMA_LINK=none
13272     fi
13273     if test "$USE_XINERAMA" = "TRUE"; then
13274         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13275         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13276             [AC_MSG_ERROR(Xinerama header not found.)], [])
13277         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13278         if test "x$XEXTLIB" = x; then
13279            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13280         fi
13281         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13282         if test "$_os" = "FreeBSD"; then
13283             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13284         fi
13285         if test "$_os" = "Linux"; then
13286             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13287         fi
13288         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13289             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13290     else
13291         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13292     fi
13293 else
13294     USE_XINERAMA=
13295     XINERAMA_LINK=none
13296     AC_MSG_RESULT([no])
13298 AC_SUBST(USE_XINERAMA)
13299 AC_SUBST(XINERAMA_LINK)
13301 dnl ===================================================================
13302 dnl Test whether to build cairo or rely on the system version
13303 dnl ===================================================================
13305 if test "$test_cairo" = "yes"; then
13306     AC_MSG_CHECKING([whether to use the system cairo])
13308     : ${with_system_cairo:=$with_system_libs}
13309     if test "$with_system_cairo" = "yes"; then
13310         SYSTEM_CAIRO=TRUE
13311         AC_MSG_RESULT([yes])
13313         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13314         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13315         FilterLibs "${CAIRO_LIBS}"
13316         CAIRO_LIBS="${filteredlibs}"
13318         if test "$test_xrender" = "yes"; then
13319             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13320             AC_LANG_PUSH([C])
13321             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13322 #ifdef PictStandardA8
13323 #else
13324       return fail;
13325 #endif
13326 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13328             AC_LANG_POP([C])
13329         fi
13330     else
13331         AC_MSG_RESULT([no])
13332         BUILD_TYPE="$BUILD_TYPE CAIRO"
13333     fi
13335     if test "$enable_cairo_canvas" != no; then
13336         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13337         ENABLE_CAIRO_CANVAS=TRUE
13338     fi
13341 AC_SUBST(CAIRO_CFLAGS)
13342 AC_SUBST(CAIRO_LIBS)
13343 AC_SUBST(ENABLE_CAIRO_CANVAS)
13344 AC_SUBST(SYSTEM_CAIRO)
13346 dnl ===================================================================
13347 dnl Test whether to use avahi
13348 dnl ===================================================================
13349 if test "$_os" = "WINNT"; then
13350     # Windows uses bundled mDNSResponder
13351     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13352 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13353     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13354                       [ENABLE_AVAHI="TRUE"])
13355     AC_DEFINE(HAVE_FEATURE_AVAHI)
13356     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13357     FilterLibs "${AVAHI_LIBS}"
13358     AVAHI_LIBS="${filteredlibs}"
13361 AC_SUBST(ENABLE_AVAHI)
13362 AC_SUBST(AVAHI_CFLAGS)
13363 AC_SUBST(AVAHI_LIBS)
13365 dnl ===================================================================
13366 dnl Test whether to use liblangtag
13367 dnl ===================================================================
13368 SYSTEM_LIBLANGTAG=
13369 AC_MSG_CHECKING([whether to use system liblangtag])
13370 if test "$with_system_liblangtag" = yes; then
13371     SYSTEM_LIBLANGTAG=TRUE
13372     AC_MSG_RESULT([yes])
13373     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13374     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13375     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13376     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13377     FilterLibs "${LIBLANGTAG_LIBS}"
13378     LIBLANGTAG_LIBS="${filteredlibs}"
13379 else
13380     SYSTEM_LIBLANGTAG=
13381     AC_MSG_RESULT([no])
13382     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13383     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13384     if test "$COM" = "MSC"; then
13385         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13386     else
13387         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13388     fi
13390 AC_SUBST(SYSTEM_LIBLANGTAG)
13391 AC_SUBST(LIBLANGTAG_CFLAGS)
13392 AC_SUBST(LIBLANGTAG_LIBS)
13394 dnl ===================================================================
13395 dnl Test whether to build libpng or rely on the system version
13396 dnl ===================================================================
13398 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13399 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13400 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13402 dnl ===================================================================
13403 dnl Check for runtime JVM search path
13404 dnl ===================================================================
13405 if test "$ENABLE_JAVA" != ""; then
13406     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13407     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13408         AC_MSG_RESULT([yes])
13409         if ! test -d "$with_jvm_path"; then
13410             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13411         fi
13412         if ! test -d "$with_jvm_path"jvm; then
13413             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13414         fi
13415         JVM_ONE_PATH_CHECK="$with_jvm_path"
13416         AC_SUBST(JVM_ONE_PATH_CHECK)
13417     else
13418         AC_MSG_RESULT([no])
13419     fi
13422 dnl ===================================================================
13423 dnl Test for the presence of Ant and that it works
13424 dnl ===================================================================
13426 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13427     ANT_HOME=; export ANT_HOME
13428     WITH_ANT_HOME=; export WITH_ANT_HOME
13429     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13430         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13431             if test "$_os" = "WINNT"; then
13432                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13433             else
13434                 with_ant_home="$LODE_HOME/opt/ant"
13435             fi
13436         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13437             with_ant_home="$LODE_HOME/opt/ant"
13438         fi
13439     fi
13440     if test -z "$with_ant_home"; then
13441         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13442     else
13443         if test "$_os" = "WINNT"; then
13444             # AC_PATH_PROGS needs unix path
13445             with_ant_home=`cygpath -u "$with_ant_home"`
13446         fi
13447         AbsolutePath "$with_ant_home"
13448         with_ant_home=$absolute_path
13449         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13450         WITH_ANT_HOME=$with_ant_home
13451         ANT_HOME=$with_ant_home
13452     fi
13454     if test -z "$ANT"; then
13455         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13456     else
13457         # resolve relative or absolute symlink
13458         while test -h "$ANT"; do
13459             a_cwd=`pwd`
13460             a_basename=`basename "$ANT"`
13461             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13462             cd "`dirname "$ANT"`"
13463             cd "`dirname "$a_script"`"
13464             ANT="`pwd`"/"`basename "$a_script"`"
13465             cd "$a_cwd"
13466         done
13468         AC_MSG_CHECKING([if $ANT works])
13469         mkdir -p conftest.dir
13470         a_cwd=$(pwd)
13471         cd conftest.dir
13472         cat > conftest.java << EOF
13473         public class conftest {
13474             int testmethod(int a, int b) {
13475                     return a + b;
13476             }
13477         }
13480         cat > conftest.xml << EOF
13481         <project name="conftest" default="conftest">
13482         <target name="conftest">
13483             <javac srcdir="." includes="conftest.java">
13484             </javac>
13485         </target>
13486         </project>
13489         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13490         if test $? = 0 -a -f ./conftest.class; then
13491             AC_MSG_RESULT([Ant works])
13492             if test -z "$WITH_ANT_HOME"; then
13493                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13494                 if test -z "$ANT_HOME"; then
13495                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13496                 fi
13497             else
13498                 ANT_HOME="$WITH_ANT_HOME"
13499             fi
13500         else
13501             echo "configure: Ant test failed" >&5
13502             cat conftest.java >&5
13503             cat conftest.xml >&5
13504             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13505         fi
13506         cd "$a_cwd"
13507         rm -fr conftest.dir
13508     fi
13509     if test -z "$ANT_HOME"; then
13510         ANT_HOME="NO_ANT_HOME"
13511     else
13512         PathFormat "$ANT_HOME"
13513         ANT_HOME="$formatted_path"
13514         PathFormat "$ANT"
13515         ANT="$formatted_path"
13516     fi
13518     dnl Checking for ant.jar
13519     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13520         AC_MSG_CHECKING([Ant lib directory])
13521         if test -f $ANT_HOME/lib/ant.jar; then
13522             ANT_LIB="$ANT_HOME/lib"
13523         else
13524             if test -f $ANT_HOME/ant.jar; then
13525                 ANT_LIB="$ANT_HOME"
13526             else
13527                 if test -f /usr/share/java/ant.jar; then
13528                     ANT_LIB=/usr/share/java
13529                 else
13530                     if test -f /usr/share/ant-core/lib/ant.jar; then
13531                         ANT_LIB=/usr/share/ant-core/lib
13532                     else
13533                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13534                             ANT_LIB="$ANT_HOME/lib/ant"
13535                         else
13536                             if test -f /usr/share/lib/ant/ant.jar; then
13537                                 ANT_LIB=/usr/share/lib/ant
13538                             else
13539                                 AC_MSG_ERROR([Ant libraries not found!])
13540                             fi
13541                         fi
13542                     fi
13543                 fi
13544             fi
13545         fi
13546         PathFormat "$ANT_LIB"
13547         ANT_LIB="$formatted_path"
13548         AC_MSG_RESULT([Ant lib directory found.])
13549     fi
13551     ant_minver=1.6.0
13552     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13554     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13555     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13556     ant_version_major=`echo $ant_version | cut -d. -f1`
13557     ant_version_minor=`echo $ant_version | cut -d. -f2`
13558     echo "configure: ant_version $ant_version " >&5
13559     echo "configure: ant_version_major $ant_version_major " >&5
13560     echo "configure: ant_version_minor $ant_version_minor " >&5
13561     if test "$ant_version_major" -ge "2"; then
13562         AC_MSG_RESULT([yes, $ant_version])
13563     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13564         AC_MSG_RESULT([yes, $ant_version])
13565     else
13566         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13567     fi
13569     rm -f conftest* core core.* *.core
13571 AC_SUBST(ANT)
13572 AC_SUBST(ANT_HOME)
13573 AC_SUBST(ANT_LIB)
13575 OOO_JUNIT_JAR=
13576 HAMCREST_JAR=
13577 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13578     AC_MSG_CHECKING([for JUnit 4])
13579     if test "$with_junit" = "yes"; then
13580         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13581             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13582         elif test -e /usr/share/java/junit4.jar; then
13583             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13584         else
13585            if test -e /usr/share/lib/java/junit.jar; then
13586               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13587            else
13588               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13589            fi
13590         fi
13591     else
13592         OOO_JUNIT_JAR=$with_junit
13593     fi
13594     if test "$_os" = "WINNT"; then
13595         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13596     fi
13597     printf 'import org.junit.Before;' > conftest.java
13598     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13599         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13600     else
13601         AC_MSG_ERROR(
13602 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13603  specify its pathname via --with-junit=..., or disable it via --without-junit])
13604     fi
13605     rm -f conftest.class conftest.java
13606     if test $OOO_JUNIT_JAR != ""; then
13607         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13608     fi
13610     AC_MSG_CHECKING([for included Hamcrest])
13611     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13612     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13613         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13614     else
13615         AC_MSG_RESULT([Not included])
13616         AC_MSG_CHECKING([for standalone hamcrest jar.])
13617         if test "$with_hamcrest" = "yes"; then
13618             if test -e /usr/share/lib/java/hamcrest.jar; then
13619                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13620             elif test -e /usr/share/java/hamcrest/core.jar; then
13621                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13622             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13623                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13624             else
13625                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13626             fi
13627         else
13628             HAMCREST_JAR=$with_hamcrest
13629         fi
13630         if test "$_os" = "WINNT"; then
13631             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13632         fi
13633         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13634             AC_MSG_RESULT([$HAMCREST_JAR])
13635         else
13636             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),
13637                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13638         fi
13639     fi
13640     rm -f conftest.class conftest.java
13642 AC_SUBST(OOO_JUNIT_JAR)
13643 AC_SUBST(HAMCREST_JAR)
13646 AC_SUBST(SCPDEFS)
13649 # check for wget and curl
13651 WGET=
13652 CURL=
13654 if test "$enable_fetch_external" != "no"; then
13656 CURL=`which curl 2>/dev/null`
13658 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13659     # wget new enough?
13660     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13661     if test $? -eq 0; then
13662         WGET=$i
13663         break
13664     fi
13665 done
13667 if test -z "$WGET" -a -z "$CURL"; then
13668     AC_MSG_ERROR([neither wget nor curl found!])
13673 AC_SUBST(WGET)
13674 AC_SUBST(CURL)
13677 # check for sha256sum
13679 SHA256SUM=
13681 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13682     eval "$i -a 256 --version" > /dev/null 2>&1
13683     ret=$?
13684     if test $ret -eq 0; then
13685         SHA256SUM="$i -a 256"
13686         break
13687     fi
13688 done
13690 if test -z "$SHA256SUM"; then
13691     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13692         eval "$i --version" > /dev/null 2>&1
13693         ret=$?
13694         if test $ret -eq 0; then
13695             SHA256SUM=$i
13696             break
13697         fi
13698     done
13701 if test -z "$SHA256SUM"; then
13702     AC_MSG_ERROR([no sha256sum found!])
13705 AC_SUBST(SHA256SUM)
13707 dnl ===================================================================
13708 dnl Dealing with l10n options
13709 dnl ===================================================================
13710 AC_MSG_CHECKING([which languages to be built])
13711 # get list of all languages
13712 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13713 # the sed command does the following:
13714 #   + if a line ends with a backslash, append the next line to it
13715 #   + adds " on the beginning of the value (after =)
13716 #   + adds " at the end of the value
13717 #   + removes en-US; we want to put it on the beginning
13718 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13719 [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)]
13720 ALL_LANGS="en-US $completelangiso"
13721 # check the configured localizations
13722 WITH_LANG="$with_lang"
13724 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13725 # (Norwegian is "nb" and "nn".)
13726 if test "$WITH_LANG" = "no"; then
13727     WITH_LANG=
13730 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13731     AC_MSG_RESULT([en-US])
13732 else
13733     AC_MSG_RESULT([$WITH_LANG])
13734     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13735     if test -z "$MSGFMT"; then
13736         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13737             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13738         elif test -x "/opt/lo/bin/msgfmt"; then
13739             MSGFMT="/opt/lo/bin/msgfmt"
13740         else
13741             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13742             if test -z "$MSGFMT"; then
13743                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13744             fi
13745         fi
13746     fi
13747     if test -z "$MSGUNIQ"; then
13748         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13749             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13750         elif test -x "/opt/lo/bin/msguniq"; then
13751             MSGUNIQ="/opt/lo/bin/msguniq"
13752         else
13753             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13754             if test -z "$MSGUNIQ"; then
13755                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13756             fi
13757         fi
13758     fi
13760 AC_SUBST(MSGFMT)
13761 AC_SUBST(MSGUNIQ)
13762 # check that the list is valid
13763 for lang in $WITH_LANG; do
13764     test "$lang" = "ALL" && continue
13765     # need to check for the exact string, so add space before and after the list of all languages
13766     for vl in $ALL_LANGS; do
13767         if test "$vl" = "$lang"; then
13768            break
13769         fi
13770     done
13771     if test "$vl" != "$lang"; then
13772         # if you're reading this - you prolly quoted your languages remove the quotes ...
13773         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13774     fi
13775 done
13776 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13777     echo $WITH_LANG | grep -q en-US
13778     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13780 # list with substituted ALL
13781 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13782 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13783 test "$WITH_LANG" = "en-US" && WITH_LANG=
13784 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13785     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13786     ALL_LANGS=`echo $ALL_LANGS qtz`
13788 AC_SUBST(ALL_LANGS)
13789 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13790 AC_SUBST(WITH_LANG)
13791 AC_SUBST(WITH_LANG_LIST)
13792 AC_SUBST(GIT_NEEDED_SUBMODULES)
13794 WITH_POOR_HELP_LOCALIZATIONS=
13795 if test -d "$SRC_ROOT/translations/source"; then
13796     for l in `ls -1 $SRC_ROOT/translations/source`; do
13797         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13798             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13799         fi
13800     done
13802 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13804 if test -n "$with_locales" -a "$with_locales" != ALL; then
13805     WITH_LOCALES="$with_locales"
13807     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13808     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13809     # config_host/config_locales.h.in
13810     for locale in $WITH_LOCALES; do
13811         lang=${locale%_*}
13813         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13815         case $lang in
13816         hi|mr*ne)
13817             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13818             ;;
13819         bg|ru)
13820             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13821             ;;
13822         esac
13823     done
13824 else
13825     AC_DEFINE(WITH_LOCALE_ALL)
13827 AC_SUBST(WITH_LOCALES)
13829 dnl git submodule update --reference
13830 dnl ===================================================================
13831 if test -n "${GIT_REFERENCE_SRC}"; then
13832     for repo in ${GIT_NEEDED_SUBMODULES}; do
13833         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13834             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13835         fi
13836     done
13838 AC_SUBST(GIT_REFERENCE_SRC)
13840 dnl git submodules linked dirs
13841 dnl ===================================================================
13842 if test -n "${GIT_LINK_SRC}"; then
13843     for repo in ${GIT_NEEDED_SUBMODULES}; do
13844         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13845             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13846         fi
13847     done
13849 AC_SUBST(GIT_LINK_SRC)
13851 dnl branding
13852 dnl ===================================================================
13853 AC_MSG_CHECKING([for alternative branding images directory])
13854 # initialize mapped arrays
13855 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13856 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13858 if test -z "$with_branding" -o "$with_branding" = "no"; then
13859     AC_MSG_RESULT([none])
13860     DEFAULT_BRAND_IMAGES="$brand_files"
13861 else
13862     if ! test -d $with_branding ; then
13863         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13864     else
13865         AC_MSG_RESULT([$with_branding])
13866         CUSTOM_BRAND_DIR="$with_branding"
13867         for lfile in $brand_files
13868         do
13869             if ! test -f $with_branding/$lfile ; then
13870                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13871                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13872             else
13873                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13874             fi
13875         done
13876         check_for_progress="yes"
13877     fi
13879 AC_SUBST([BRAND_INTRO_IMAGES])
13880 AC_SUBST([CUSTOM_BRAND_DIR])
13881 AC_SUBST([CUSTOM_BRAND_IMAGES])
13882 AC_SUBST([DEFAULT_BRAND_IMAGES])
13885 AC_MSG_CHECKING([for 'intro' progress settings])
13886 PROGRESSBARCOLOR=
13887 PROGRESSSIZE=
13888 PROGRESSPOSITION=
13889 PROGRESSFRAMECOLOR=
13890 PROGRESSTEXTCOLOR=
13891 PROGRESSTEXTBASELINE=
13893 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13894     source "$with_branding/progress.conf"
13895     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13896 else
13897     AC_MSG_RESULT([none])
13900 AC_SUBST(PROGRESSBARCOLOR)
13901 AC_SUBST(PROGRESSSIZE)
13902 AC_SUBST(PROGRESSPOSITION)
13903 AC_SUBST(PROGRESSFRAMECOLOR)
13904 AC_SUBST(PROGRESSTEXTCOLOR)
13905 AC_SUBST(PROGRESSTEXTBASELINE)
13908 dnl ===================================================================
13909 dnl Custom build version
13910 dnl ===================================================================
13911 AC_MSG_CHECKING([for extra build ID])
13912 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13913     EXTRA_BUILDID="$with_extra_buildid"
13915 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13916 if test -n "$EXTRA_BUILDID" ; then
13917     AC_MSG_RESULT([$EXTRA_BUILDID])
13918 else
13919     AC_MSG_RESULT([not set])
13921 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13923 OOO_VENDOR=
13924 AC_MSG_CHECKING([for vendor])
13925 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13926     OOO_VENDOR="$USERNAME"
13928     if test -z "$OOO_VENDOR"; then
13929         OOO_VENDOR="$USER"
13930     fi
13932     if test -z "$OOO_VENDOR"; then
13933         OOO_VENDOR="`id -u -n`"
13934     fi
13936     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13937 else
13938     OOO_VENDOR="$with_vendor"
13939     AC_MSG_RESULT([$OOO_VENDOR])
13941 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13942 AC_SUBST(OOO_VENDOR)
13944 if test "$_os" = "Android" ; then
13945     ANDROID_PACKAGE_NAME=
13946     AC_MSG_CHECKING([for Android package name])
13947     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13948         if test -n "$ENABLE_DEBUG"; then
13949             # Default to the package name that makes ndk-gdb happy.
13950             ANDROID_PACKAGE_NAME="org.libreoffice"
13951         else
13952             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13953         fi
13955         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13956     else
13957         ANDROID_PACKAGE_NAME="$with_android_package_name"
13958         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13959     fi
13960     AC_SUBST(ANDROID_PACKAGE_NAME)
13963 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13964 if test "$with_compat_oowrappers" = "yes"; then
13965     WITH_COMPAT_OOWRAPPERS=TRUE
13966     AC_MSG_RESULT(yes)
13967 else
13968     WITH_COMPAT_OOWRAPPERS=
13969     AC_MSG_RESULT(no)
13971 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13973 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13974 AC_MSG_CHECKING([for install dirname])
13975 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13976     INSTALLDIRNAME="$with_install_dirname"
13978 AC_MSG_RESULT([$INSTALLDIRNAME])
13979 AC_SUBST(INSTALLDIRNAME)
13981 AC_MSG_CHECKING([for prefix])
13982 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13983 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13984 PREFIXDIR="$prefix"
13985 AC_MSG_RESULT([$PREFIXDIR])
13986 AC_SUBST(PREFIXDIR)
13988 LIBDIR=[$(eval echo $(eval echo $libdir))]
13989 AC_SUBST(LIBDIR)
13991 DATADIR=[$(eval echo $(eval echo $datadir))]
13992 AC_SUBST(DATADIR)
13994 MANDIR=[$(eval echo $(eval echo $mandir))]
13995 AC_SUBST(MANDIR)
13997 DOCDIR=[$(eval echo $(eval echo $docdir))]
13998 AC_SUBST(DOCDIR)
14000 BINDIR=[$(eval echo $(eval echo $bindir))]
14001 AC_SUBST(BINDIR)
14003 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14004 AC_SUBST(INSTALLDIR)
14006 TESTINSTALLDIR="${BUILDDIR}/test-install"
14007 AC_SUBST(TESTINSTALLDIR)
14010 # ===================================================================
14011 # OAuth2 id and secrets
14012 # ===================================================================
14014 AC_MSG_CHECKING([for Google Drive client id and secret])
14015 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14016     AC_MSG_RESULT([not set])
14017     GDRIVE_CLIENT_ID="\"\""
14018     GDRIVE_CLIENT_SECRET="\"\""
14019 else
14020     AC_MSG_RESULT([set])
14021     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14022     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14024 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14025 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14027 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14028 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14029     AC_MSG_RESULT([not set])
14030     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14031     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14032 else
14033     AC_MSG_RESULT([set])
14034     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14035     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14037 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14038 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14040 AC_MSG_CHECKING([for OneDrive client id and secret])
14041 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14042     AC_MSG_RESULT([not set])
14043     ONEDRIVE_CLIENT_ID="\"\""
14044     ONEDRIVE_CLIENT_SECRET="\"\""
14045 else
14046     AC_MSG_RESULT([set])
14047     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14048     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14050 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14051 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14054 dnl ===================================================================
14055 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14056 dnl --enable-dependency-tracking configure option
14057 dnl ===================================================================
14058 AC_MSG_CHECKING([whether to enable dependency tracking])
14059 if test "$enable_dependency_tracking" = "no"; then
14060     nodep=TRUE
14061     AC_MSG_RESULT([no])
14062 else
14063     AC_MSG_RESULT([yes])
14065 AC_SUBST(nodep)
14067 dnl ===================================================================
14068 dnl Number of CPUs to use during the build
14069 dnl ===================================================================
14070 AC_MSG_CHECKING([for number of processors to use])
14071 # plain --with-parallelism is just the default
14072 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14073     if test "$with_parallelism" = "no"; then
14074         PARALLELISM=0
14075     else
14076         PARALLELISM=$with_parallelism
14077     fi
14078 else
14079     if test "$enable_icecream" = "yes"; then
14080         PARALLELISM="40"
14081     else
14082         case `uname -s` in
14084         Darwin|FreeBSD|NetBSD|OpenBSD)
14085             PARALLELISM=`sysctl -n hw.ncpu`
14086             ;;
14088         Linux)
14089             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14090         ;;
14091         # what else than above does profit here *and* has /proc?
14092         *)
14093             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14094             ;;
14095         esac
14097         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14098         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14099     fi
14102 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14103     if test -z "$with_parallelism"; then
14104             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14105             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14106             PARALLELISM="1"
14107     else
14108         add_warning "make 3.81 is prone to crashes with parallelism > 1. Since --with-parallelism was explicitly given, it is honored, but do not complain when make segfaults on you."
14109     fi
14112 if test $PARALLELISM -eq 0; then
14113     AC_MSG_RESULT([explicit make -j option needed])
14114 else
14115     AC_MSG_RESULT([$PARALLELISM])
14117 AC_SUBST(PARALLELISM)
14119 IWYU_PATH="$with_iwyu"
14120 AC_SUBST(IWYU_PATH)
14121 if test ! -z "$IWYU_PATH"; then
14122     if test ! -f "$IWYU_PATH"; then
14123         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14124     fi
14128 # Set up ILIB for MSVC build
14130 ILIB1=
14131 if test "$build_os" = "cygwin"; then
14132     ILIB="."
14133     if test -n "$JAVA_HOME"; then
14134         ILIB="$ILIB;$JAVA_HOME/lib"
14135     fi
14136     ILIB1=-link
14137     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14138     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14139     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14140     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14141     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14142         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14143         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14144     fi
14145     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14146     ucrtlibpath_formatted=$formatted_path
14147     ILIB="$ILIB;$ucrtlibpath_formatted"
14148     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14149     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14150         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14151     else
14152         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14153     fi
14155     if test "$cross_compiling" != "yes"; then
14156         ILIB_FOR_BUILD="$ILIB"
14157     fi
14159 AC_SUBST(ILIB)
14160 AC_SUBST(ILIB_FOR_BUILD)
14162 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14163 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14164 dnl from consteval constructor initializing const variable",
14165 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14166 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14167 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14168 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14169 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14170 dnl constructor in ternary expression (/std:c++latest)":
14171 AC_LANG_PUSH([C++])
14172 save_CXX=$CXX
14173 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14174     CXX="env LIB=$ILIB $CXX"
14176 save_CXXFLAGS=$CXXFLAGS
14177 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14178 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14179         struct S {
14180             consteval S() { i = 1; }
14181             int i = 0;
14182         };
14183         S const s;
14185         struct S1 { consteval S1(int) {} };
14186         struct S2 {
14187             S1 x;
14188             S2(): x(0) {}
14189         };
14191         struct S3 {
14192             consteval S3() {}
14193             union {
14194                 int a;
14195                 unsigned b = 0;
14196             };
14197         };
14198         void f() { S3(); }
14200         struct S4 { consteval S4() = default; };
14201         void f4(bool b) { b ? S4() : S4(); }
14202     ], [
14203         return (s.i == 1) ? 0 : 1;
14204     ])], [
14205         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14206         AC_MSG_RESULT([yes])
14207     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14208 CXX=$save_CXX
14209 CXXFLAGS=$save_CXXFLAGS
14210 AC_LANG_POP([C++])
14212 # ===================================================================
14213 # Creating bigger shared library to link against
14214 # ===================================================================
14215 AC_MSG_CHECKING([whether to create huge library])
14216 MERGELIBS=
14218 if test $_os = iOS -o $_os = Android; then
14219     # Never any point in mergelibs for these as we build just static
14220     # libraries anyway...
14221     enable_mergelibs=no
14224 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14225     if test $_os != Linux -a $_os != WINNT; then
14226         add_warning "--enable-mergelibs is not tested for this platform"
14227     fi
14228     MERGELIBS="TRUE"
14229     AC_MSG_RESULT([yes])
14230     AC_DEFINE(ENABLE_MERGELIBS)
14231 else
14232     AC_MSG_RESULT([no])
14234 AC_SUBST([MERGELIBS])
14236 dnl ===================================================================
14237 dnl icerun is a wrapper that stops us spawning tens of processes
14238 dnl locally - for tools that can't be executed on the compile cluster
14239 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14240 dnl ===================================================================
14241 AC_MSG_CHECKING([whether to use icerun wrapper])
14242 ICECREAM_RUN=
14243 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14244     ICECREAM_RUN=icerun
14245     AC_MSG_RESULT([yes])
14246 else
14247     AC_MSG_RESULT([no])
14249 AC_SUBST(ICECREAM_RUN)
14251 dnl ===================================================================
14252 dnl Setup the ICECC_VERSION for the build the same way it was set for
14253 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14254 dnl ===================================================================
14255 x_ICECC_VERSION=[\#]
14256 if test -n "$ICECC_VERSION" ; then
14257     x_ICECC_VERSION=
14259 AC_SUBST(x_ICECC_VERSION)
14260 AC_SUBST(ICECC_VERSION)
14262 dnl ===================================================================
14264 AC_MSG_CHECKING([MPL subset])
14265 MPL_SUBSET=
14267 if test "$enable_mpl_subset" = "yes"; then
14268     warn_report=false
14269     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14270         warn_report=true
14271     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14272         warn_report=true
14273     fi
14274     if test "$warn_report" = "true"; then
14275         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14276     fi
14277     if test "x$enable_postgresql_sdbc" != "xno"; then
14278         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14279     fi
14280     if test "$enable_lotuswordpro" = "yes"; then
14281         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14282     fi
14283     if test -n "$ENABLE_POPPLER"; then
14284         if test "x$SYSTEM_POPPLER" = "x"; then
14285             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14286         fi
14287     fi
14288     # cf. m4/libo_check_extension.m4
14289     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14290         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14291     fi
14292     for theme in $WITH_THEMES; do
14293         case $theme in
14294         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14295             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14296         *) : ;;
14297         esac
14298     done
14300     ENABLE_OPENGL_TRANSITIONS=
14302     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14303         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14304     fi
14306     MPL_SUBSET="TRUE"
14307     AC_DEFINE(MPL_HAVE_SUBSET)
14308     AC_MSG_RESULT([only])
14309 else
14310     AC_MSG_RESULT([no restrictions])
14312 AC_SUBST(MPL_SUBSET)
14314 dnl ===================================================================
14316 AC_MSG_CHECKING([formula logger])
14317 ENABLE_FORMULA_LOGGER=
14319 if test "x$enable_formula_logger" = "xyes"; then
14320     AC_MSG_RESULT([yes])
14321     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14322     ENABLE_FORMULA_LOGGER=TRUE
14323 elif test -n "$ENABLE_DBGUTIL" ; then
14324     AC_MSG_RESULT([yes])
14325     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14326     ENABLE_FORMULA_LOGGER=TRUE
14327 else
14328     AC_MSG_RESULT([no])
14331 AC_SUBST(ENABLE_FORMULA_LOGGER)
14333 dnl ===================================================================
14334 dnl Checking for active Antivirus software.
14335 dnl ===================================================================
14337 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14338     AC_MSG_CHECKING([for active Antivirus software])
14339     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14340     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14341         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14342             AC_MSG_RESULT([found])
14343             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14344             echo $EICAR_STRING > $SRC_ROOT/eicar
14345             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14346             rm $SRC_ROOT/eicar
14347             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14348                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14349             fi
14350             echo $EICAR_STRING > $BUILDDIR/eicar
14351             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14352             rm $BUILDDIR/eicar
14353             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14354                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14355             fi
14356             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"
14357         else
14358             AC_MSG_RESULT([not found])
14359         fi
14360     else
14361         AC_MSG_RESULT([n/a])
14362     fi
14365 dnl ===================================================================
14366 dnl Setting up the environment.
14367 dnl ===================================================================
14368 AC_MSG_NOTICE([setting up the build environment variables...])
14370 AC_SUBST(COMPATH)
14372 if test "$build_os" = "cygwin"; then
14373     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14374         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14375         ATL_INCLUDE="$COMPATH/atlmfc/include"
14376     elif test -d "$COMPATH/atlmfc/lib"; then
14377         ATL_LIB="$COMPATH/atlmfc/lib"
14378         ATL_INCLUDE="$COMPATH/atlmfc/include"
14379     else
14380         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14381         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14382     fi
14383     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14384     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14385     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14387     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14388     PathFormat "/usr/bin/find.exe"
14389     FIND="$formatted_path"
14390     PathFormat "/usr/bin/sort.exe"
14391     SORT="$formatted_path"
14392     PathFormat "/usr/bin/grep.exe"
14393     WIN_GREP="$formatted_path"
14394     PathFormat "/usr/bin/ls.exe"
14395     WIN_LS="$formatted_path"
14396     PathFormat "/usr/bin/touch.exe"
14397     WIN_TOUCH="$formatted_path"
14398 else
14399     FIND=find
14400     SORT=sort
14403 AC_SUBST(ATL_INCLUDE)
14404 AC_SUBST(ATL_LIB)
14405 AC_SUBST(FIND)
14406 AC_SUBST(SORT)
14407 AC_SUBST(WIN_GREP)
14408 AC_SUBST(WIN_LS)
14409 AC_SUBST(WIN_TOUCH)
14411 AC_SUBST(BUILD_TYPE)
14413 AC_SUBST(SOLARINC)
14415 PathFormat "$PERL"
14416 PERL="$formatted_path"
14417 AC_SUBST(PERL)
14419 if test -n "$TMPDIR"; then
14420     TEMP_DIRECTORY="$TMPDIR"
14421 else
14422     TEMP_DIRECTORY="/tmp"
14424 if test "$build_os" = "cygwin"; then
14425     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14427 AC_SUBST(TEMP_DIRECTORY)
14429 # setup the PATH for the environment
14430 if test -n "$LO_PATH_FOR_BUILD"; then
14431     LO_PATH="$LO_PATH_FOR_BUILD"
14432     case "$host_os" in
14433     cygwin*|wsl*)
14434         pathmunge "$MSVC_HOST_PATH" "before"
14435         ;;
14436     esac
14437 else
14438     LO_PATH="$PATH"
14440     case "$host_os" in
14442     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14443         if test "$ENABLE_JAVA" != ""; then
14444             pathmunge "$JAVA_HOME/bin" "after"
14445         fi
14446         ;;
14448     cygwin*|wsl*)
14449         # Win32 make needs native paths
14450         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14451             LO_PATH=`cygpath -p -m "$PATH"`
14452         fi
14453         if test "$WIN_BUILD_ARCH" = "x64"; then
14454             # needed for msi packaging
14455             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14456         fi
14457         # .NET 4.6 and higher don't have bin directory
14458         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14459             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14460         fi
14461         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14462         pathmunge "$CSC_PATH" "before"
14463         pathmunge "$MIDL_PATH" "before"
14464         pathmunge "$AL_PATH" "before"
14465         pathmunge "$MSVC_MULTI_PATH" "before"
14466         pathmunge "$MSVC_BUILD_PATH" "before"
14467         if test -n "$MSBUILD_PATH" ; then
14468             pathmunge "$MSBUILD_PATH" "before"
14469         fi
14470         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14471         if test "$ENABLE_JAVA" != ""; then
14472             if test -d "$JAVA_HOME/jre/bin/client"; then
14473                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14474             fi
14475             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14476                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14477             fi
14478             pathmunge "$JAVA_HOME/bin" "before"
14479         fi
14480         pathmunge "$MSVC_HOST_PATH" "before"
14481         ;;
14483     solaris*)
14484         pathmunge "/usr/css/bin" "before"
14485         if test "$ENABLE_JAVA" != ""; then
14486             pathmunge "$JAVA_HOME/bin" "after"
14487         fi
14488         ;;
14489     esac
14492 AC_SUBST(LO_PATH)
14494 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14495 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14496     x_LO_ELFCHECK_ALLOWLIST=
14497 else
14498     x_LO_ELFCHECK_ALLOWLIST=[\#]
14500 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14501 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14503 libo_FUZZ_SUMMARY
14505 # Generate a configuration sha256 we can use for deps
14506 if test -f config_host.mk; then
14507     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14509 if test -f config_host_lang.mk; then
14510     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14513 CFLAGS=$my_original_CFLAGS
14514 CXXFLAGS=$my_original_CXXFLAGS
14515 CPPFLAGS=$my_original_CPPFLAGS
14517 AC_CONFIG_LINKS([include:include])
14519 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14520 # BUILD platform configuration] - otherwise breaks cross building
14521 AC_CONFIG_FILES([config_host.mk
14522                  config_host_lang.mk
14523                  Makefile
14524                  bin/bffvalidator.sh
14525                  bin/odfvalidator.sh
14526                  bin/officeotron.sh
14527                  hardened_runtime.xcent
14528                  instsetoo_native/util/openoffice.lst
14529                  sysui/desktop/macosx/Info.plist
14530                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14531 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14532 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14533 AC_CONFIG_HEADERS([config_host/config_clang.h])
14534 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14535 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14536 AC_CONFIG_HEADERS([config_host/config_eot.h])
14537 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14538 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14539 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14540 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14541 AC_CONFIG_HEADERS([config_host/config_features.h])
14542 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14543 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14544 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14545 AC_CONFIG_HEADERS([config_host/config_folders.h])
14546 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14547 AC_CONFIG_HEADERS([config_host/config_gio.h])
14548 AC_CONFIG_HEADERS([config_host/config_global.h])
14549 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14550 AC_CONFIG_HEADERS([config_host/config_java.h])
14551 AC_CONFIG_HEADERS([config_host/config_langs.h])
14552 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14553 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14554 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14555 AC_CONFIG_HEADERS([config_host/config_locales.h])
14556 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14557 AC_CONFIG_HEADERS([config_host/config_oox.h])
14558 AC_CONFIG_HEADERS([config_host/config_options.h])
14559 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14560 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14561 AC_CONFIG_HEADERS([config_host/config_skia.h])
14562 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14563 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14564 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14565 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14566 AC_CONFIG_HEADERS([config_host/config_version.h])
14567 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14568 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14569 AC_CONFIG_HEADERS([config_host/config_python.h])
14570 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14571 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14572 AC_OUTPUT
14574 if test "$CROSS_COMPILING" = TRUE; then
14575     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14578 # touch the config timestamp file
14579 if test ! -f config_host.mk.stamp; then
14580     echo > config_host.mk.stamp
14581 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14582     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14583 else
14584     echo > config_host.mk.stamp
14587 # touch the config lang timestamp file
14588 if test ! -f config_host_lang.mk.stamp; then
14589     echo > config_host_lang.mk.stamp
14590 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14591     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14592 else
14593     echo > config_host_lang.mk.stamp
14597 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14598         -a "$build_os" = "cygwin"; then
14600 cat << _EOS
14601 ****************************************************************************
14602 WARNING:
14603 Your make version is known to be horribly slow, and hard to debug
14604 problems with. To get a reasonably functional make please do:
14606 to install a pre-compiled binary make for Win32
14608  mkdir -p /opt/lo/bin
14609  cd /opt/lo/bin
14610  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14611  cp make-4.2.1-msvc.exe make
14612  chmod +x make
14614 to install from source:
14615 place yourself in a working directory of you choice.
14617  git clone git://git.savannah.gnu.org/make.git
14619  [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"]
14620  set PATH=%PATH%;C:\Cygwin\bin
14621  [or Cygwin64, if that is what you have]
14622  cd path-to-make-repo-you-cloned-above
14623  build_w32.bat --without-guile
14625 should result in a WinRel/gnumake.exe.
14626 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14628 Then re-run autogen.sh
14630 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14631 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14633 _EOS
14634 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14635     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14640 cat << _EOF
14641 ****************************************************************************
14643 To build, run:
14644 $GNUMAKE
14646 To view some help, run:
14647 $GNUMAKE help
14649 _EOF
14651 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14652     cat << _EOF
14653 After the build has finished successfully, you can immediately run what you built using the command:
14654 _EOF
14656     if test $_os = Darwin; then
14657         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14658     else
14659         echo instdir/program/soffice
14660     fi
14661     cat << _EOF
14663 If you want to run the smoketest, run:
14664 $GNUMAKE check
14666 _EOF
14669 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14670     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14671     cat "$WARNINGS_FILE_FOR_BUILD"
14672     echo
14675 if test -s "$WARNINGS_FILE"; then
14676     echo "HOST config ($WARNINGS_FILE)"
14677     cat "$WARNINGS_FILE"
14680 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: