ofz#41081 divide by zero
[LibreOffice.git] / configure.ac
blob7ebeeaf6e62fab8c47a966016fedff62ab12f6f8
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.3.0.0.alpha1+],[],[],[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_cmis=yes
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     build_skia=yes
915     _os=WINNT
917     DLLPOST=".dll"
918     LINKFLAGSNOUNDEFS=
920     if test "$host_cpu" = "aarch64"; then
921         build_skia=no
922         enable_gpgmepp=no
923         enable_coinmp=no
924         enable_firebird_sdbc=no
925     fi
926     ;;
928 darwin*|macos*) # macOS
929     using_freetype_fontconfig=no
930     using_x11=no
931     build_skia=yes
932     if test -n "$LODE_HOME" ; then
933         mac_sanitize_path
934         AC_MSG_NOTICE([sanitized the PATH to $PATH])
935     fi
936     _os=Darwin
937     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
938     INSTROOTCONTENTSUFFIX=/Contents
939     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
940     # See comment above the case "$host_os"
941     LINKFLAGSSHL="-dynamiclib -single_module"
943     # -fPIC is default
944     PICSWITCH=""
946     DLLPOST=".dylib"
948     # -undefined error is the default
949     LINKFLAGSNOUNDEFS=""
950     case "$host_cpu" in
951     aarch64|arm64)
952         case "$host_os" in
953         macos*)
954             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
955             # the "macos" part so be sure to use aarch64-apple-darwin for now.
956             HOST_PLATFORM=aarch64-apple-darwin
957             ;;
958         esac
960         # Apple's Clang uses "arm64"
961         host_cpu_for_clang=arm64
962     esac
965 ios*) # iOS
966     using_freetype_fontconfig=no
967     using_vclplug=no
968     using_x11=no
969     build_crypto=no
970     test_cmis=no
971     test_openldap=no
972     test_webdav=no
973     if test -n "$LODE_HOME" ; then
974         mac_sanitize_path
975         AC_MSG_NOTICE([sanitized the PATH to $PATH])
976     fi
977     enable_gpgmepp=no
978     _os=iOS
979     enable_mpl_subset=yes
980     enable_lotuswordpro=no
981     disable_database_connectivity_dependencies
982     enable_coinmp=no
983     enable_lpsolve=no
984     enable_extension_integration=no
985     enable_xmlhelp=no
986     with_ppds=no
987     if test "$enable_ios_simulator" = "yes"; then
988         host=x86_64-apple-darwin
989     fi
990     # See comment above the case "$host_os"
991     LINKFLAGSSHL="-dynamiclib -single_module"
993     # -fPIC is default
994     PICSWITCH=""
996     DLLPOST=".dylib"
998     # -undefined error is the default
999     LINKFLAGSNOUNDEFS=""
1001     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1002     # part, so use aarch64-apple-darwin for now.
1003     HOST_PLATFORM=aarch64-apple-darwin
1005     # Apple's Clang uses "arm64"
1006     host_cpu_for_clang=arm64
1009 freebsd*)
1010     using_freetype_fontconfig=yes
1011     using_x11=yes
1012     build_skia=yes
1013     AC_MSG_CHECKING([the FreeBSD operating system release])
1014     if test -n "$with_os_version"; then
1015         OSVERSION="$with_os_version"
1016     else
1017         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1018     fi
1019     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1020     AC_MSG_CHECKING([which thread library to use])
1021     if test "$OSVERSION" -lt "500016"; then
1022         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1023         PTHREAD_LIBS="-pthread"
1024     elif test "$OSVERSION" -lt "502102"; then
1025         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1026         PTHREAD_LIBS="-lc_r"
1027     else
1028         PTHREAD_CFLAGS=""
1029         PTHREAD_LIBS="-pthread"
1030     fi
1031     AC_MSG_RESULT([$PTHREAD_LIBS])
1032     _os=FreeBSD
1033     ;;
1035 *netbsd*)
1036     using_freetype_fontconfig=yes
1037     using_x11=yes
1038     test_gtk3_kde5=no
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     using_freetype_fontconfig=yes
1046     using_x11=yes
1047     test_randr=no
1048     test_gstreamer_1_0=no
1049     PTHREAD_LIBS=-pthread
1050     _os=AIX
1051     ;;
1053 openbsd*)
1054     using_freetype_fontconfig=yes
1055     using_x11=yes
1056     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057     PTHREAD_LIBS="-pthread"
1058     _os=OpenBSD
1059     ;;
1061 dragonfly*)
1062     using_freetype_fontconfig=yes
1063     using_x11=yes
1064     build_skia=yes
1065     PTHREAD_LIBS="-pthread"
1066     _os=DragonFly
1067     ;;
1069 linux-android*)
1070     using_freetype_fontconfig=yes
1071     using_headless_plugin=no
1072     using_x11=no
1073     build_crypto=no
1074     test_openldap=no
1075     test_system_freetype=no
1076     test_webdav=no
1077     disable_database_connectivity_dependencies
1078     enable_lotuswordpro=no
1079     enable_mpl_subset=yes
1080     enable_cairo_canvas=no
1081     enable_coinmp=yes
1082     enable_lpsolve=no
1083     enable_odk=no
1084     enable_python=no
1085     enable_xmlhelp=no
1086     _os=Android
1088     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1089     ;;
1091 haiku*)
1092     using_freetype_fontconfig=yes
1093     using_x11=no
1094     test_gtk3_kde5=no
1095     test_kf5=yes
1096     enable_odk=no
1097     enable_coinmp=no
1098     enable_pdfium=no
1099     enable_sdremote=no
1100     enable_postgresql_sdbc=no
1101     enable_firebird_sdbc=no
1102     _os=Haiku
1103     ;;
1105 emscripten)
1106     using_freetype_fontconfig=yes
1107     using_x11=no
1108     test_openldap=no
1109     enable_compiler_plugins=no
1110     test_cmis=no
1111     test_webdav=no
1112     enable_database_connectivity=no
1113     enable_lpsolve=no
1114     enable_xmlhelp=no
1115     with_system_zlib=no
1116     with_theme="breeze"
1117     _os=Emscripten
1118     ;;
1121     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1122     ;;
1123 esac
1125 AC_SUBST(HOST_PLATFORM)
1127 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1128     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1131 # Set defaults, if not set by platform
1132 test "${test_cups+set}" = set || test_cups="$using_x11"
1133 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1134 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1135 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1136 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1137 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1138 # don't handle test_qt5, so it can disable test_kf5 later
1139 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1140 test "${test_randr+set}" = set || test_randr="$using_x11"
1141 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1142 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1144 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1145 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1146 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1148 # convenience / platform overriding "fixes"
1149 # Don't sort!
1150 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1151 test "$test_kf5" = yes && test_qt5=yes
1152 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1153 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1154 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1156 # Keep in sync with the above $using_x11 depending test default list
1157 disable_x11_tests()
1159     test_cups=no
1160     test_dbus=no
1161     test_gstreamer_1_0=no
1162     test_gtk3_kde5=no
1163     test_gtk3=no
1164     test_gtk4=no
1165     test_kf5=no
1166     test_qt5=no
1167     test_qt6=no
1168     test_randr=no
1169     test_xrender=no
1172 test "$using_x11" = yes && USING_X11=TRUE
1174 if test "$using_freetype_fontconfig" = yes; then
1175     if test "$using_headless_plugin" = yes; then
1176         AC_DEFINE(ENABLE_HEADLESS)
1177         ENABLE_HEADLESS=TRUE
1178     fi
1181 AC_SUBST(ENABLE_HEADLESS)
1183 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1184 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1185 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1186 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1188 # ===================================================================
1190 # End initial platform setup
1192 # ===================================================================
1194 if test "$_os" = "Android" ; then
1195     # Verify that the NDK and SDK options are proper
1196     if test -z "$with_android_ndk"; then
1197         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1198     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1199         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1200     fi
1202     if test -z "$ANDROID_SDK_HOME"; then
1203         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1204     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1205         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1206     fi
1208     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1209     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1210         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1211                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1212                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1213         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1214         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1215         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1216     fi
1217     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1218         AC_MSG_WARN([android support repository not found - install with
1219                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1220                      to allow the build to download the specified version of the android support libraries])
1221         add_warning "android support repository not found - install with"
1222         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1223         add_warning "to allow the build to download the specified version of the android support libraries"
1224     fi
1227 if test "$_os" = "AIX"; then
1228     AC_PATH_PROG(GAWK, gawk)
1229     if test -z "$GAWK"; then
1230         AC_MSG_ERROR([gawk not found in \$PATH])
1231     fi
1234 AC_SUBST(SDKDIRNAME)
1236 AC_SUBST(PTHREAD_CFLAGS)
1237 AC_SUBST(PTHREAD_LIBS)
1239 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1240 # By default use the ones specified by our build system,
1241 # but explicit override is possible.
1242 AC_MSG_CHECKING(for explicit AFLAGS)
1243 if test -n "$AFLAGS"; then
1244     AC_MSG_RESULT([$AFLAGS])
1245     x_AFLAGS=
1246 else
1247     AC_MSG_RESULT(no)
1248     x_AFLAGS=[\#]
1250 AC_MSG_CHECKING(for explicit CFLAGS)
1251 if test -n "$CFLAGS"; then
1252     AC_MSG_RESULT([$CFLAGS])
1253     x_CFLAGS=
1254 else
1255     AC_MSG_RESULT(no)
1256     x_CFLAGS=[\#]
1258 AC_MSG_CHECKING(for explicit CXXFLAGS)
1259 if test -n "$CXXFLAGS"; then
1260     AC_MSG_RESULT([$CXXFLAGS])
1261     x_CXXFLAGS=
1262 else
1263     AC_MSG_RESULT(no)
1264     x_CXXFLAGS=[\#]
1266 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1267 if test -n "$OBJCFLAGS"; then
1268     AC_MSG_RESULT([$OBJCFLAGS])
1269     x_OBJCFLAGS=
1270 else
1271     AC_MSG_RESULT(no)
1272     x_OBJCFLAGS=[\#]
1274 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1275 if test -n "$OBJCXXFLAGS"; then
1276     AC_MSG_RESULT([$OBJCXXFLAGS])
1277     x_OBJCXXFLAGS=
1278 else
1279     AC_MSG_RESULT(no)
1280     x_OBJCXXFLAGS=[\#]
1282 AC_MSG_CHECKING(for explicit LDFLAGS)
1283 if test -n "$LDFLAGS"; then
1284     AC_MSG_RESULT([$LDFLAGS])
1285     x_LDFLAGS=
1286 else
1287     AC_MSG_RESULT(no)
1288     x_LDFLAGS=[\#]
1290 AC_SUBST(AFLAGS)
1291 AC_SUBST(CFLAGS)
1292 AC_SUBST(CXXFLAGS)
1293 AC_SUBST(OBJCFLAGS)
1294 AC_SUBST(OBJCXXFLAGS)
1295 AC_SUBST(LDFLAGS)
1296 AC_SUBST(x_AFLAGS)
1297 AC_SUBST(x_CFLAGS)
1298 AC_SUBST(x_CXXFLAGS)
1299 AC_SUBST(x_OBJCFLAGS)
1300 AC_SUBST(x_OBJCXXFLAGS)
1301 AC_SUBST(x_LDFLAGS)
1303 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1304 my_original_CFLAGS=$CFLAGS
1305 my_original_CXXFLAGS=$CXXFLAGS
1306 my_original_CPPFLAGS=$CPPFLAGS
1308 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1309 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1310 dnl AC_PROG_CC internally.
1311 if test "$_os" != "WINNT"; then
1312     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1313     save_CFLAGS=$CFLAGS
1314     AC_PROG_CC
1315     CFLAGS=$save_CFLAGS
1316     if test -z "$CC_BASE"; then
1317         CC_BASE=`first_arg_basename "$CC"`
1318     fi
1321 if test "$_os" != "WINNT"; then
1322     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1323 else
1324     ENDIANNESS=little
1326 AC_SUBST(ENDIANNESS)
1328 if test $_os != "WINNT"; then
1329     save_LIBS="$LIBS"
1330     AC_SEARCH_LIBS([dlsym], [dl],
1331         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1332         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1333     LIBS="$save_LIBS"
1335 AC_SUBST(DLOPEN_LIBS)
1337 dnl ===================================================================
1338 dnl Sanity checks for Emscripten SDK setup
1339 dnl ===================================================================
1341 if test "$_os" = "Emscripten"; then
1342     EMSCRIPTEN_ERROR=0
1343     if ! which emconfigure >/dev/null 2>&1; then
1344         AC_MSG_WARN([emconfigure must be in your \$PATH])
1345         EMSCRIPTEN_ERROR=1
1346     fi
1347     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1348         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1349         EMSCRIPTEN_ERROR=1
1350     fi
1351     if test $EMSCRIPTEN_ERROR -ne 0; then
1352         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1353     fi
1356 ###############################################################################
1357 # Extensions switches --enable/--disable
1358 ###############################################################################
1359 # By default these should be enabled unless having extra dependencies.
1360 # If there is extra dependency over configure options then the enable should
1361 # be automagic based on whether the requiring feature is enabled or not.
1362 # All this options change anything only with --enable-extension-integration.
1364 # The name of this option and its help string makes it sound as if
1365 # extensions are built anyway, just not integrated in the installer,
1366 # if you use --disable-extension-integration. Is that really the
1367 # case?
1369 AC_ARG_ENABLE(ios-simulator,
1370     AS_HELP_STRING([--enable-ios-simulator],
1371         [build for iOS simulator])
1374 libo_FUZZ_ARG_ENABLE(extension-integration,
1375     AS_HELP_STRING([--disable-extension-integration],
1376         [Disable integration of the built extensions in the installer of the
1377          product. Use this switch to disable the integration.])
1380 AC_ARG_ENABLE(avmedia,
1381     AS_HELP_STRING([--disable-avmedia],
1382         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1385 AC_ARG_ENABLE(database-connectivity,
1386     AS_HELP_STRING([--disable-database-connectivity],
1387         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1390 # This doesn't mean not building (or "integrating") extensions
1391 # (although it probably should; i.e. it should imply
1392 # --disable-extension-integration I guess), it means not supporting
1393 # any extension mechanism at all
1394 libo_FUZZ_ARG_ENABLE(extensions,
1395     AS_HELP_STRING([--disable-extensions],
1396         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(scripting,
1400     AS_HELP_STRING([--disable-scripting],
1401         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1404 # This is mainly for Android and iOS, but could potentially be used in some
1405 # special case otherwise, too, so factored out as a separate setting
1407 AC_ARG_ENABLE(dynamic-loading,
1408     AS_HELP_STRING([--disable-dynamic-loading],
1409         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1412 libo_FUZZ_ARG_ENABLE(report-builder,
1413     AS_HELP_STRING([--disable-report-builder],
1414         [Disable the Report Builder.])
1417 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1418     AS_HELP_STRING([--enable-ext-wiki-publisher],
1419         [Enable the Wiki Publisher extension.])
1422 libo_FUZZ_ARG_ENABLE(lpsolve,
1423     AS_HELP_STRING([--disable-lpsolve],
1424         [Disable compilation of the lp solve solver ])
1426 libo_FUZZ_ARG_ENABLE(coinmp,
1427     AS_HELP_STRING([--disable-coinmp],
1428         [Disable compilation of the CoinMP solver ])
1431 libo_FUZZ_ARG_ENABLE(pdfimport,
1432     AS_HELP_STRING([--disable-pdfimport],
1433         [Disable building the PDF import feature.])
1436 libo_FUZZ_ARG_ENABLE(pdfium,
1437     AS_HELP_STRING([--disable-pdfium],
1438         [Disable building PDFium. Results in unsecure PDF signature verification.])
1441 libo_FUZZ_ARG_ENABLE(skia,
1442     AS_HELP_STRING([--disable-skia],
1443         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1446 ###############################################################################
1448 dnl ---------- *** ----------
1450 libo_FUZZ_ARG_ENABLE(mergelibs,
1451     AS_HELP_STRING([--enable-mergelibs],
1452         [Merge several of the smaller libraries into one big, "merged", one.])
1455 libo_FUZZ_ARG_ENABLE(breakpad,
1456     AS_HELP_STRING([--enable-breakpad],
1457         [Enables breakpad for crash reporting.])
1460 libo_FUZZ_ARG_ENABLE(crashdump,
1461     AS_HELP_STRING([--disable-crashdump],
1462         [Disable dump.ini and dump-file, when --enable-breakpad])
1465 AC_ARG_ENABLE(fetch-external,
1466     AS_HELP_STRING([--disable-fetch-external],
1467         [Disables fetching external tarballs from web sources.])
1470 AC_ARG_ENABLE(fuzzers,
1471     AS_HELP_STRING([--enable-fuzzers],
1472         [Enables building libfuzzer targets for fuzz testing.])
1475 libo_FUZZ_ARG_ENABLE(pch,
1476     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1477         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1478          Using 'system' will include only external headers, 'base' will add also headers
1479          from base modules, 'normal' will also add all headers except from the module built,
1480          'full' will use all suitable headers even from a module itself.])
1483 libo_FUZZ_ARG_ENABLE(epm,
1484     AS_HELP_STRING([--enable-epm],
1485         [LibreOffice includes self-packaging code, that requires epm, however epm is
1486          useless for large scale package building.])
1489 libo_FUZZ_ARG_ENABLE(odk,
1490     AS_HELP_STRING([--enable-odk],
1491         [Enable building the Office Development Kit, the part that extensions need to build against])
1494 AC_ARG_ENABLE(mpl-subset,
1495     AS_HELP_STRING([--enable-mpl-subset],
1496         [Don't compile any pieces which are not MPL or more liberally licensed])
1499 libo_FUZZ_ARG_ENABLE(evolution2,
1500     AS_HELP_STRING([--enable-evolution2],
1501         [Allows the built-in evolution 2 addressbook connectivity build to be
1502          enabled.])
1505 AC_ARG_ENABLE(avahi,
1506     AS_HELP_STRING([--enable-avahi],
1507         [Determines whether to use Avahi to advertise Impress to remote controls.])
1510 libo_FUZZ_ARG_ENABLE(werror,
1511     AS_HELP_STRING([--enable-werror],
1512         [Turn warnings to errors. (Has no effect in modules where the treating
1513          of warnings as errors is disabled explicitly.)]),
1516 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1517     AS_HELP_STRING([--enable-assert-always-abort],
1518         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1521 libo_FUZZ_ARG_ENABLE(dbgutil,
1522     AS_HELP_STRING([--enable-dbgutil],
1523         [Provide debugging support from --enable-debug and include additional debugging
1524          utilities such as object counting or more expensive checks.
1525          This is the recommended option for developers.
1526          Note that this makes the build ABI incompatible, it is not possible to mix object
1527          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1529 libo_FUZZ_ARG_ENABLE(debug,
1530     AS_HELP_STRING([--enable-debug],
1531         [Include debugging information, disable compiler optimization and inlining plus
1532          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1534 libo_FUZZ_ARG_ENABLE(split-debug,
1535     AS_HELP_STRING([--disable-split-debug],
1536         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1537          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1539 libo_FUZZ_ARG_ENABLE(gdb-index,
1540     AS_HELP_STRING([--disable-gdb-index],
1541         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1542          The feature requires the gold or lld linker.]))
1544 libo_FUZZ_ARG_ENABLE(sal-log,
1545     AS_HELP_STRING([--enable-sal-log],
1546         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1548 libo_FUZZ_ARG_ENABLE(symbols,
1549     AS_HELP_STRING([--enable-symbols],
1550         [Generate debug information.
1551          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1552          otherwise. It is possible to explicitly specify gbuild build targets
1553          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1554          everything in the directory; there is no ordering, more specific overrides
1555          more general, and disabling takes precedence).
1556          Example: --enable-symbols="all -sw/ -Library_sc".]))
1558 libo_FUZZ_ARG_ENABLE(optimized,
1559     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1560         [Whether to compile with optimization flags.
1561          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1562          otherwise. Using 'debug' will try to use only optimizations that should
1563          not interfere with debugging. For Emscripten we default to optimized (-O1)
1564          debug build, as otherwise binaries become too large.]))
1566 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1567     AS_HELP_STRING([--disable-runtime-optimizations],
1568         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1569          JVM JIT) that are known to interact badly with certain dynamic analysis
1570          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1571          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1572          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1574 AC_ARG_WITH(valgrind,
1575     AS_HELP_STRING([--with-valgrind],
1576         [Make availability of Valgrind headers a hard requirement.]))
1578 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1579     AS_HELP_STRING([--enable-compiler-plugins],
1580         [Enable compiler plugins that will perform additional checks during
1581          building. Enabled automatically by --enable-dbgutil.
1582          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1583 COMPILER_PLUGINS_DEBUG=
1584 if test "$enable_compiler_plugins" = debug; then
1585     enable_compiler_plugins=yes
1586     COMPILER_PLUGINS_DEBUG=TRUE
1589 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1590     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1591         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1592          relevant in the --disable-compiler-plugins case.]))
1594 libo_FUZZ_ARG_ENABLE(ooenv,
1595     AS_HELP_STRING([--enable-ooenv],
1596         [Enable ooenv for the instdir installation.]))
1598 AC_ARG_ENABLE(lto,
1599     AS_HELP_STRING([--enable-lto],
1600         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1601          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1602          linker.)]))
1604 AC_ARG_ENABLE(python,
1605     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1606         [Enables or disables Python support at run-time.
1607          Also specifies what Python to use at build-time.
1608          'fully-internal' even forces the internal version for uses of Python
1609          during the build.
1610          On macOS the only choices are
1611          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1612          ]))
1614 libo_FUZZ_ARG_ENABLE(gtk3,
1615     AS_HELP_STRING([--disable-gtk3],
1616         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1617 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1619 AC_ARG_ENABLE(gtk4,
1620     AS_HELP_STRING([--enable-gtk4],
1621         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1623 AC_ARG_ENABLE(introspection,
1624     AS_HELP_STRING([--enable-introspection],
1625         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1626          Linux distributions.)]))
1628 AC_ARG_ENABLE(split-app-modules,
1629     AS_HELP_STRING([--enable-split-app-modules],
1630         [Split file lists for app modules, e.g. base, calc.
1631          Has effect only with make distro-pack-install]),
1634 AC_ARG_ENABLE(split-opt-features,
1635     AS_HELP_STRING([--enable-split-opt-features],
1636         [Split file lists for some optional features, e.g. pyuno, testtool.
1637          Has effect only with make distro-pack-install]),
1640 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1641     AS_HELP_STRING([--disable-cairo-canvas],
1642         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1645 libo_FUZZ_ARG_ENABLE(dbus,
1646     AS_HELP_STRING([--disable-dbus],
1647         [Determines whether to enable features that depend on dbus.
1648          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1649 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1651 libo_FUZZ_ARG_ENABLE(sdremote,
1652     AS_HELP_STRING([--disable-sdremote],
1653         [Determines whether to enable Impress remote control (i.e. the server component).]),
1654 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1656 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1657     AS_HELP_STRING([--disable-sdremote-bluetooth],
1658         [Determines whether to build sdremote with bluetooth support.
1659          Requires dbus on Linux.]))
1661 libo_FUZZ_ARG_ENABLE(gio,
1662     AS_HELP_STRING([--disable-gio],
1663         [Determines whether to use the GIO support.]),
1664 ,test "${enable_gio+set}" = set || enable_gio=yes)
1666 AC_ARG_ENABLE(qt5,
1667     AS_HELP_STRING([--enable-qt5],
1668         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1669          available.]),
1672 AC_ARG_ENABLE(qt6,
1673     AS_HELP_STRING([--enable-qt6],
1674         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1675          available.]),
1678 AC_ARG_ENABLE(kf5,
1679     AS_HELP_STRING([--enable-kf5],
1680         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1681          KF5 are available.]),
1684 AC_ARG_ENABLE(gtk3_kde5,
1685     AS_HELP_STRING([--enable-gtk3-kde5],
1686         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1687          platforms where Gtk3, Qt5 and Plasma is available.]),
1690 AC_ARG_ENABLE(gui,
1691     AS_HELP_STRING([--disable-gui],
1692         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1693 ,enable_gui=yes)
1695 libo_FUZZ_ARG_ENABLE(randr,
1696     AS_HELP_STRING([--disable-randr],
1697         [Disable RandR support in the vcl project.]),
1698 ,test "${enable_randr+set}" = set || enable_randr=yes)
1700 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1701     AS_HELP_STRING([--disable-gstreamer-1-0],
1702         [Disable building with the gstreamer 1.0 avmedia backend.]),
1703 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1705 libo_FUZZ_ARG_ENABLE([eot],
1706     [AS_HELP_STRING([--enable-eot],
1707         [Enable support for Embedded OpenType fonts.])],
1708 ,test "${enable_eot+set}" = set || enable_eot=no)
1710 libo_FUZZ_ARG_ENABLE(cve-tests,
1711     AS_HELP_STRING([--disable-cve-tests],
1712         [Prevent CVE tests to be executed]),
1715 libo_FUZZ_ARG_ENABLE(chart-tests,
1716     AS_HELP_STRING([--enable-chart-tests],
1717         [Executes chart XShape tests. In a perfect world these tests would be
1718          stable and everyone could run them, in reality it is best to run them
1719          only on a few machines that are known to work and maintained by people
1720          who can judge if a test failure is a regression or not.]),
1723 AC_ARG_ENABLE(build-opensymbol,
1724     AS_HELP_STRING([--enable-build-opensymbol],
1725         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1726          fontforge installed.]),
1729 AC_ARG_ENABLE(dependency-tracking,
1730     AS_HELP_STRING([--enable-dependency-tracking],
1731         [Do not reject slow dependency extractors.])[
1732   --disable-dependency-tracking
1733                           Disables generation of dependency information.
1734                           Speed up one-time builds.],
1737 AC_ARG_ENABLE(icecream,
1738     AS_HELP_STRING([--enable-icecream],
1739         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1740          It defaults to /opt/icecream for the location of the icecream gcc/g++
1741          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1744 AC_ARG_ENABLE(ld,
1745     AS_HELP_STRING([--enable-ld=<linker>],
1746         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1747          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1748          If <linker> contains any ':', the part before the first ':' is used as the value of
1749          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1750          needed for Clang 12).]),
1753 libo_FUZZ_ARG_ENABLE(cups,
1754     AS_HELP_STRING([--disable-cups],
1755         [Do not build cups support.])
1758 AC_ARG_ENABLE(ccache,
1759     AS_HELP_STRING([--disable-ccache],
1760         [Do not try to use ccache automatically.
1761          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1762          CC/CXX are not yet set, and --enable-icecream is not given, we
1763          attempt to use ccache. --disable-ccache disables ccache completely.
1764          Additionally ccache's depend mode is enabled if possible,
1765          use --enable-ccache=nodepend to enable ccache without depend mode.
1769 libo_FUZZ_ARG_ENABLE(online-update,
1770     AS_HELP_STRING([--enable-online-update],
1771         [Enable the online update service that will check for new versions of
1772          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1773          If the value is "mar", the experimental Mozilla-like update will be
1774          enabled instead of the traditional update mechanism.]),
1777 AC_ARG_WITH(update-config,
1778     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1779                    [Path to the update config ini file]))
1781 libo_FUZZ_ARG_ENABLE(extension-update,
1782     AS_HELP_STRING([--disable-extension-update],
1783         [Disable possibility to update installed extensions.]),
1786 libo_FUZZ_ARG_ENABLE(release-build,
1787     AS_HELP_STRING([--enable-release-build],
1788         [Enable release build. Note that the "release build" choice is orthogonal to
1789          whether symbols are present, debug info is generated, or optimization
1790          is done.
1791          See http://wiki.documentfoundation.org/Development/DevBuild]),
1794 AC_ARG_ENABLE(windows-build-signing,
1795     AS_HELP_STRING([--enable-windows-build-signing],
1796         [Enable signing of windows binaries (*.exe, *.dll)]),
1799 AC_ARG_ENABLE(silent-msi,
1800     AS_HELP_STRING([--enable-silent-msi],
1801         [Enable MSI with LIMITUI=1 (silent install).]),
1804 AC_ARG_ENABLE(macosx-code-signing,
1805     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1806         [Sign executables, dylibs, frameworks and the app bundle. If you
1807          don't provide an identity the first suitable certificate
1808          in your keychain is used.]),
1811 AC_ARG_ENABLE(macosx-package-signing,
1812     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1813         [Create a .pkg suitable for uploading to the Mac App Store and sign
1814          it. If you don't provide an identity the first suitable certificate
1815          in your keychain is used.]),
1818 AC_ARG_ENABLE(macosx-sandbox,
1819     AS_HELP_STRING([--enable-macosx-sandbox],
1820         [Make the app bundle run in a sandbox. Requires code signing.
1821          Is required by apps distributed in the Mac App Store, and implies
1822          adherence to App Store rules.]),
1825 AC_ARG_WITH(macosx-bundle-identifier,
1826     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1827         [Define the macOS bundle identifier. Default is the somewhat weird
1828          org.libreoffice.script ("script", huh?).]),
1829 ,with_macosx_bundle_identifier=org.libreoffice.script)
1831 AC_ARG_WITH(product-name,
1832     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1833         [Define the product name. Default is AC_PACKAGE_NAME.]),
1834 ,with_product_name=$PRODUCTNAME)
1836 libo_FUZZ_ARG_ENABLE(community-flavor,
1837     AS_HELP_STRING([--disable-community-flavor],
1838         [Disable the Community branding.]),
1841 AC_ARG_WITH(package-version,
1842     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1843         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1846 libo_FUZZ_ARG_ENABLE(readonly-installset,
1847     AS_HELP_STRING([--enable-readonly-installset],
1848         [Prevents any attempts by LibreOffice to write into its installation. That means
1849          at least that no "system-wide" extensions can be added. Partly experimental work in
1850          progress, probably not fully implemented. Always enabled for macOS.]),
1853 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1854     AS_HELP_STRING([--disable-mariadb-sdbc],
1855         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1858 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1859     AS_HELP_STRING([--disable-postgresql-sdbc],
1860         [Disable the build of the PostgreSQL-SDBC driver.])
1863 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1864     AS_HELP_STRING([--disable-lotuswordpro],
1865         [Disable the build of the Lotus Word Pro filter.]),
1866 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1868 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1869     AS_HELP_STRING([--disable-firebird-sdbc],
1870         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1871 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1873 AC_ARG_ENABLE(bogus-pkg-config,
1874     AS_HELP_STRING([--enable-bogus-pkg-config],
1875         [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.]),
1878 AC_ARG_ENABLE(openssl,
1879     AS_HELP_STRING([--disable-openssl],
1880         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1881          components will either use GNUTLS or NSS. Work in progress,
1882          use only if you are hacking on it.]),
1883 ,enable_openssl=yes)
1885 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1886     AS_HELP_STRING([--enable-cipher-openssl-backend],
1887         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1888          Requires --enable-openssl.]))
1890 AC_ARG_ENABLE(nss,
1891     AS_HELP_STRING([--disable-nss],
1892         [Disable using NSS. If disabled,
1893          components will either use GNUTLS or openssl. Work in progress,
1894          use only if you are hacking on it.]),
1895 ,enable_nss=yes)
1897 AC_ARG_ENABLE(library-bin-tar,
1898     AS_HELP_STRING([--enable-library-bin-tar],
1899         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1900         Some libraries can save their build result in a tarball
1901         stored in TARFILE_LOCATION. That binary tarball is
1902         uniquely identified by the source tarball,
1903         the content of the config_host.mk file and the content
1904         of the top-level directory in core for that library
1905         If this option is enabled, then if such a tarfile exist, it will be untarred
1906         instead of the source tarfile, and the build step will be skipped for that
1907         library.
1908         If a proper tarfile does not exist, then the normal source-based
1909         build is done for that library and a proper binary tarfile is created
1910         for the next time.]),
1913 AC_ARG_ENABLE(dconf,
1914     AS_HELP_STRING([--disable-dconf],
1915         [Disable the dconf configuration backend (enabled by default where
1916          available).]))
1918 libo_FUZZ_ARG_ENABLE(formula-logger,
1919     AS_HELP_STRING(
1920         [--enable-formula-logger],
1921         [Enable formula logger for logging formula calculation flow in Calc.]
1922     )
1925 AC_ARG_ENABLE(ldap,
1926     AS_HELP_STRING([--disable-ldap],
1927         [Disable LDAP support.]),
1928 ,enable_ldap=yes)
1930 AC_ARG_ENABLE(opencl,
1931     AS_HELP_STRING([--disable-opencl],
1932         [Disable OpenCL support.]),
1933 ,enable_opencl=yes)
1935 libo_FUZZ_ARG_ENABLE(librelogo,
1936     AS_HELP_STRING([--disable-librelogo],
1937         [Do not build LibreLogo.]),
1938 ,enable_librelogo=yes)
1940 AC_ARG_ENABLE(cmis,
1941     AS_HELP_STRING([--disable-cmis],
1942         [Disable CMIS support.]),
1943 ,enable_cmis=yes)
1945 AC_ARG_ENABLE(curl,
1946     AS_HELP_STRING([--disable-curl],
1947         [Disable CURL support.]),
1948 ,enable_curl=yes)
1950 AC_ARG_ENABLE(wasm-strip,
1951     AS_HELP_STRING([--enable-wasm-strip],
1952         [Strip the static build like for WASM/emscripten platform.]),
1953 ,enable_wasm_strip=yes)
1955 AC_ARG_ENABLE(xmlhelp,
1956     AS_HELP_STRING([--disable-xmlhelp],
1957         [Disable XML help support]),
1958 ,enable_xmlhelp=yes)
1961 dnl ===================================================================
1962 dnl Optional Packages (--with/without-)
1963 dnl ===================================================================
1965 AC_ARG_WITH(gcc-home,
1966     AS_HELP_STRING([--with-gcc-home],
1967         [Specify the location of gcc/g++ manually. This can be used in conjunction
1968          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1969          non-default path.]),
1972 AC_ARG_WITH(gnu-patch,
1973     AS_HELP_STRING([--with-gnu-patch],
1974         [Specify location of GNU patch on Solaris or FreeBSD.]),
1977 AC_ARG_WITH(build-platform-configure-options,
1978     AS_HELP_STRING([--with-build-platform-configure-options],
1979         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1982 AC_ARG_WITH(gnu-cp,
1983     AS_HELP_STRING([--with-gnu-cp],
1984         [Specify location of GNU cp on Solaris or FreeBSD.]),
1987 AC_ARG_WITH(external-tar,
1988     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1989         [Specify an absolute path of where to find (and store) tarfiles.]),
1990     TARFILE_LOCATION=$withval ,
1993 AC_ARG_WITH(referenced-git,
1994     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1995         [Specify another checkout directory to reference. This makes use of
1996                  git submodule update --reference, and saves a lot of diskspace
1997                  when having multiple trees side-by-side.]),
1998     GIT_REFERENCE_SRC=$withval ,
2001 AC_ARG_WITH(linked-git,
2002     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2003         [Specify a directory where the repositories of submodules are located.
2004          This uses a method similar to git-new-workdir to get submodules.]),
2005     GIT_LINK_SRC=$withval ,
2008 AC_ARG_WITH(galleries,
2009     AS_HELP_STRING([--with-galleries],
2010         [Specify how galleries should be built. It is possible either to
2011          build these internally from source ("build"),
2012          or to disable them ("no")]),
2015 AC_ARG_WITH(theme,
2016     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2017         [Choose which themes to include. By default those themes with an '*' are included.
2018          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2019          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2022 libo_FUZZ_ARG_WITH(helppack-integration,
2023     AS_HELP_STRING([--without-helppack-integration],
2024         [It will not integrate the helppacks to the installer
2025          of the product. Please use this switch to use the online help
2026          or separate help packages.]),
2029 libo_FUZZ_ARG_WITH(fonts,
2030     AS_HELP_STRING([--without-fonts],
2031         [LibreOffice includes some third-party fonts to provide a reliable basis for
2032          help content, templates, samples, etc. When these fonts are already
2033          known to be available on the system then you should use this option.]),
2036 AC_ARG_WITH(epm,
2037     AS_HELP_STRING([--with-epm],
2038         [Decides which epm to use. Default is to use the one from the system if
2039          one is built. When either this is not there or you say =internal epm
2040          will be built.]),
2043 AC_ARG_WITH(package-format,
2044     AS_HELP_STRING([--with-package-format],
2045         [Specify package format(s) for LibreOffice installation sets. The
2046          implicit --without-package-format leads to no installation sets being
2047          generated. Possible values: aix, archive, bsd, deb, dmg,
2048          installed, msi, pkg, and rpm.
2049          Example: --with-package-format='deb rpm']),
2052 AC_ARG_WITH(tls,
2053     AS_HELP_STRING([--with-tls],
2054         [Decides which TLS/SSL and cryptographic implementations to use for
2055          LibreOffice's code. Notice that this doesn't apply for depending
2056          libraries like "neon", for example. Default is to use NSS
2057          although OpenSSL is also possible. Notice that selecting NSS restricts
2058          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2059          restrict by now the usage of NSS in LO's code. Possible values:
2060          openssl, nss. Example: --with-tls="nss"]),
2063 AC_ARG_WITH(system-libs,
2064     AS_HELP_STRING([--with-system-libs],
2065         [Use libraries already on system -- enables all --with-system-* flags.]),
2068 AC_ARG_WITH(system-bzip2,
2069     AS_HELP_STRING([--with-system-bzip2],
2070         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2071     [with_system_bzip2="$with_system_libs"])
2073 AC_ARG_WITH(system-headers,
2074     AS_HELP_STRING([--with-system-headers],
2075         [Use headers already on system -- enables all --with-system-* flags for
2076          external packages whose headers are the only entities used i.e.
2077          boost/odbc/sane-header(s).]),,
2078     [with_system_headers="$with_system_libs"])
2080 AC_ARG_WITH(system-jars,
2081     AS_HELP_STRING([--without-system-jars],
2082         [When building with --with-system-libs, also the needed jars are expected
2083          on the system. Use this to disable that]),,
2084     [with_system_jars="$with_system_libs"])
2086 AC_ARG_WITH(system-cairo,
2087     AS_HELP_STRING([--with-system-cairo],
2088         [Use cairo libraries already on system.  Happens automatically for
2089          (implicit) --enable-gtk3.]))
2091 AC_ARG_WITH(system-epoxy,
2092     AS_HELP_STRING([--with-system-epoxy],
2093         [Use epoxy libraries already on system.  Happens automatically for
2094          (implicit) --enable-gtk3.]),,
2095        [with_system_epoxy="$with_system_libs"])
2097 AC_ARG_WITH(myspell-dicts,
2098     AS_HELP_STRING([--with-myspell-dicts],
2099         [Adds myspell dictionaries to the LibreOffice installation set]),
2102 AC_ARG_WITH(system-dicts,
2103     AS_HELP_STRING([--without-system-dicts],
2104         [Do not use dictionaries from system paths.]),
2107 AC_ARG_WITH(external-dict-dir,
2108     AS_HELP_STRING([--with-external-dict-dir],
2109         [Specify external dictionary dir.]),
2112 AC_ARG_WITH(external-hyph-dir,
2113     AS_HELP_STRING([--with-external-hyph-dir],
2114         [Specify external hyphenation pattern dir.]),
2117 AC_ARG_WITH(external-thes-dir,
2118     AS_HELP_STRING([--with-external-thes-dir],
2119         [Specify external thesaurus dir.]),
2122 AC_ARG_WITH(system-zlib,
2123     AS_HELP_STRING([--with-system-zlib],
2124         [Use zlib already on system.]),,
2125     [with_system_zlib=auto])
2127 AC_ARG_WITH(system-jpeg,
2128     AS_HELP_STRING([--with-system-jpeg],
2129         [Use jpeg already on system.]),,
2130     [with_system_jpeg="$with_system_libs"])
2132 AC_ARG_WITH(system-clucene,
2133     AS_HELP_STRING([--with-system-clucene],
2134         [Use clucene already on system.]),,
2135     [with_system_clucene="$with_system_libs"])
2137 AC_ARG_WITH(system-expat,
2138     AS_HELP_STRING([--with-system-expat],
2139         [Use expat already on system.]),,
2140     [with_system_expat="$with_system_libs"])
2142 AC_ARG_WITH(system-libxml,
2143     AS_HELP_STRING([--with-system-libxml],
2144         [Use libxml/libxslt already on system.]),,
2145     [with_system_libxml=auto])
2147 AC_ARG_WITH(system-icu,
2148     AS_HELP_STRING([--with-system-icu],
2149         [Use icu already on system.]),,
2150     [with_system_icu="$with_system_libs"])
2152 AC_ARG_WITH(system-ucpp,
2153     AS_HELP_STRING([--with-system-ucpp],
2154         [Use ucpp already on system.]),,
2155     [])
2157 AC_ARG_WITH(system-openldap,
2158     AS_HELP_STRING([--with-system-openldap],
2159         [Use the OpenLDAP LDAP SDK already on system.]),,
2160     [with_system_openldap="$with_system_libs"])
2162 libo_FUZZ_ARG_ENABLE(poppler,
2163     AS_HELP_STRING([--disable-poppler],
2164         [Disable building Poppler.])
2167 AC_ARG_WITH(system-poppler,
2168     AS_HELP_STRING([--with-system-poppler],
2169         [Use system poppler (only needed for PDF import).]),,
2170     [with_system_poppler="$with_system_libs"])
2172 libo_FUZZ_ARG_ENABLE(gpgmepp,
2173     AS_HELP_STRING([--disable-gpgmepp],
2174         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2177 AC_ARG_WITH(system-gpgmepp,
2178     AS_HELP_STRING([--with-system-gpgmepp],
2179         [Use gpgmepp already on system]),,
2180     [with_system_gpgmepp="$with_system_libs"])
2182 AC_ARG_WITH(system-mariadb,
2183     AS_HELP_STRING([--with-system-mariadb],
2184         [Use MariaDB/MySQL libraries already on system.]),,
2185     [with_system_mariadb="$with_system_libs"])
2187 AC_ARG_ENABLE(bundle-mariadb,
2188     AS_HELP_STRING([--enable-bundle-mariadb],
2189         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2192 AC_ARG_WITH(system-postgresql,
2193     AS_HELP_STRING([--with-system-postgresql],
2194         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2195          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2196     [with_system_postgresql="$with_system_libs"])
2198 AC_ARG_WITH(libpq-path,
2199     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2200         [Use this PostgreSQL C interface (libpq) installation for building
2201          the PostgreSQL-SDBC extension.]),
2204 AC_ARG_WITH(system-firebird,
2205     AS_HELP_STRING([--with-system-firebird],
2206         [Use Firebird libraries already on system, for building the Firebird-SDBC
2207          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2208     [with_system_firebird="$with_system_libs"])
2210 AC_ARG_WITH(system-libtommath,
2211             AS_HELP_STRING([--with-system-libtommath],
2212                            [Use libtommath already on system]),,
2213             [with_system_libtommath="$with_system_libs"])
2215 AC_ARG_WITH(system-hsqldb,
2216     AS_HELP_STRING([--with-system-hsqldb],
2217         [Use hsqldb already on system.]))
2219 AC_ARG_WITH(hsqldb-jar,
2220     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2221         [Specify path to jarfile manually.]),
2222     HSQLDB_JAR=$withval)
2224 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2225     AS_HELP_STRING([--disable-scripting-beanshell],
2226         [Disable support for scripts in BeanShell.]),
2230 AC_ARG_WITH(system-beanshell,
2231     AS_HELP_STRING([--with-system-beanshell],
2232         [Use beanshell already on system.]),,
2233     [with_system_beanshell="$with_system_jars"])
2235 AC_ARG_WITH(beanshell-jar,
2236     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2237         [Specify path to jarfile manually.]),
2238     BSH_JAR=$withval)
2240 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2241     AS_HELP_STRING([--disable-scripting-javascript],
2242         [Disable support for scripts in JavaScript.]),
2246 AC_ARG_WITH(system-rhino,
2247     AS_HELP_STRING([--with-system-rhino],
2248         [Use rhino already on system.]),,)
2249 #    [with_system_rhino="$with_system_jars"])
2250 # Above is not used as we have different debug interface
2251 # patched into internal rhino. This code needs to be fixed
2252 # before we can enable it by default.
2254 AC_ARG_WITH(rhino-jar,
2255     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2256         [Specify path to jarfile manually.]),
2257     RHINO_JAR=$withval)
2259 AC_ARG_WITH(system-jfreereport,
2260     AS_HELP_STRING([--with-system-jfreereport],
2261         [Use JFreeReport already on system.]),,
2262     [with_system_jfreereport="$with_system_jars"])
2264 AC_ARG_WITH(sac-jar,
2265     AS_HELP_STRING([--with-sac-jar=JARFILE],
2266         [Specify path to jarfile manually.]),
2267     SAC_JAR=$withval)
2269 AC_ARG_WITH(libxml-jar,
2270     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2271         [Specify path to jarfile manually.]),
2272     LIBXML_JAR=$withval)
2274 AC_ARG_WITH(flute-jar,
2275     AS_HELP_STRING([--with-flute-jar=JARFILE],
2276         [Specify path to jarfile manually.]),
2277     FLUTE_JAR=$withval)
2279 AC_ARG_WITH(jfreereport-jar,
2280     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2281         [Specify path to jarfile manually.]),
2282     JFREEREPORT_JAR=$withval)
2284 AC_ARG_WITH(liblayout-jar,
2285     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2286         [Specify path to jarfile manually.]),
2287     LIBLAYOUT_JAR=$withval)
2289 AC_ARG_WITH(libloader-jar,
2290     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2291         [Specify path to jarfile manually.]),
2292     LIBLOADER_JAR=$withval)
2294 AC_ARG_WITH(libformula-jar,
2295     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2296         [Specify path to jarfile manually.]),
2297     LIBFORMULA_JAR=$withval)
2299 AC_ARG_WITH(librepository-jar,
2300     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2301         [Specify path to jarfile manually.]),
2302     LIBREPOSITORY_JAR=$withval)
2304 AC_ARG_WITH(libfonts-jar,
2305     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2306         [Specify path to jarfile manually.]),
2307     LIBFONTS_JAR=$withval)
2309 AC_ARG_WITH(libserializer-jar,
2310     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2311         [Specify path to jarfile manually.]),
2312     LIBSERIALIZER_JAR=$withval)
2314 AC_ARG_WITH(libbase-jar,
2315     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2316         [Specify path to jarfile manually.]),
2317     LIBBASE_JAR=$withval)
2319 AC_ARG_WITH(system-odbc,
2320     AS_HELP_STRING([--with-system-odbc],
2321         [Use the odbc headers already on system.]),,
2322     [with_system_odbc="auto"])
2324 AC_ARG_WITH(system-sane,
2325     AS_HELP_STRING([--with-system-sane],
2326         [Use sane.h already on system.]),,
2327     [with_system_sane="$with_system_headers"])
2329 AC_ARG_WITH(system-bluez,
2330     AS_HELP_STRING([--with-system-bluez],
2331         [Use bluetooth.h already on system.]),,
2332     [with_system_bluez="$with_system_headers"])
2334 AC_ARG_WITH(system-curl,
2335     AS_HELP_STRING([--with-system-curl],
2336         [Use curl already on system.]),,
2337     [with_system_curl=auto])
2339 AC_ARG_WITH(system-boost,
2340     AS_HELP_STRING([--with-system-boost],
2341         [Use boost already on system.]),,
2342     [with_system_boost="$with_system_headers"])
2344 AC_ARG_WITH(system-cuckoo,
2345     AS_HELP_STRING([--with-system-cuckoo],
2346         [Use libcuckoo already on system.]),,
2347     [with_system_cuckoo="$with_system_headers"])
2349 AC_ARG_WITH(system-glm,
2350     AS_HELP_STRING([--with-system-glm],
2351         [Use glm already on system.]),,
2352     [with_system_glm="$with_system_headers"])
2354 AC_ARG_WITH(system-hunspell,
2355     AS_HELP_STRING([--with-system-hunspell],
2356         [Use libhunspell already on system.]),,
2357     [with_system_hunspell="$with_system_libs"])
2359 libo_FUZZ_ARG_ENABLE(zxing,
2360     AS_HELP_STRING([--disable-zxing],
2361        [Disable use of zxing external library.]))
2363 AC_ARG_WITH(system-zxing,
2364     AS_HELP_STRING([--with-system-zxing],
2365         [Use libzxing already on system.]),,
2366     [with_system_zxing="$with_system_libs"])
2368 AC_ARG_WITH(system-box2d,
2369     AS_HELP_STRING([--with-system-box2d],
2370         [Use box2d already on system.]),,
2371     [with_system_box2d="$with_system_libs"])
2373 AC_ARG_WITH(system-mythes,
2374     AS_HELP_STRING([--with-system-mythes],
2375         [Use mythes already on system.]),,
2376     [with_system_mythes="$with_system_libs"])
2378 AC_ARG_WITH(system-altlinuxhyph,
2379     AS_HELP_STRING([--with-system-altlinuxhyph],
2380         [Use ALTLinuxhyph already on system.]),,
2381     [with_system_altlinuxhyph="$with_system_libs"])
2383 AC_ARG_WITH(system-lpsolve,
2384     AS_HELP_STRING([--with-system-lpsolve],
2385         [Use lpsolve already on system.]),,
2386     [with_system_lpsolve="$with_system_libs"])
2388 AC_ARG_WITH(system-coinmp,
2389     AS_HELP_STRING([--with-system-coinmp],
2390         [Use CoinMP already on system.]),,
2391     [with_system_coinmp="$with_system_libs"])
2393 AC_ARG_WITH(system-liblangtag,
2394     AS_HELP_STRING([--with-system-liblangtag],
2395         [Use liblangtag library already on system.]),,
2396     [with_system_liblangtag="$with_system_libs"])
2398 AC_ARG_WITH(webdav,
2399     AS_HELP_STRING([--with-webdav],
2400         [Specify which library to use for webdav implementation.
2401          Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2402          Example: --with-webdav="serf"]))
2404 AC_ARG_WITH(linker-hash-style,
2405     AS_HELP_STRING([--with-linker-hash-style],
2406         [Use linker with --hash-style=<style> when linking shared objects.
2407          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2408          if supported on the build system, and "sysv" otherwise.]))
2410 AC_ARG_WITH(jdk-home,
2411     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2412         [If you have installed JDK 9 or later on your system please supply the
2413          path here. Note that this is not the location of the java command but the
2414          location of the entire distribution. In case of cross-compiling, this
2415          is the JDK of the host os. Use --with-build-platform-configure-options
2416          to point to a different build platform JDK.]),
2419 AC_ARG_WITH(help,
2420     AS_HELP_STRING([--with-help],
2421         [Enable the build of help. There is a special parameter "common" that
2422          can be used to bundle only the common part, .e.g help-specific icons.
2423          This is useful when you build the helpcontent separately.])
2424     [
2425                           Usage:     --with-help    build the old local help
2426                                  --without-help     no local help (default)
2427                                  --with-help=html   build the new HTML local help
2428                                  --with-help=online build the new HTML online help
2429     ],
2432 AC_ARG_WITH(omindex,
2433    AS_HELP_STRING([--with-omindex],
2434         [Enable the support of xapian-omega index for online help.])
2435    [
2436                          Usage: --with-omindex=server prepare the pages for omindex
2437                                 but let xapian-omega be built in server.
2438                                 --with-omindex=noxap do not prepare online pages
2439                                 for xapian-omega
2440   ],
2443 libo_FUZZ_ARG_WITH(java,
2444     AS_HELP_STRING([--with-java=<java command>],
2445         [Specify the name of the Java interpreter command. Typically "java"
2446          which is the default.
2448          To build without support for Java components, applets, accessibility
2449          or the XML filters written in Java, use --without-java or --with-java=no.]),
2450     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2451     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2454 AC_ARG_WITH(jvm-path,
2455     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2456         [Use a specific JVM search path at runtime.
2457          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2460 AC_ARG_WITH(ant-home,
2461     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2462         [If you have installed Apache Ant on your system, please supply the path here.
2463          Note that this is not the location of the Ant binary but the location
2464          of the entire distribution.]),
2467 AC_ARG_WITH(symbol-config,
2468     AS_HELP_STRING([--with-symbol-config],
2469         [Configuration for the crashreport symbol upload]),
2470         [],
2471         [with_symbol_config=no])
2473 AC_ARG_WITH(export-validation,
2474     AS_HELP_STRING([--without-export-validation],
2475         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2476 ,with_export_validation=auto)
2478 AC_ARG_WITH(bffvalidator,
2479     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2480         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2481          Requires installed Microsoft Office Binary File Format Validator.
2482          Note: export-validation (--with-export-validation) is required to be turned on.
2483          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2484 ,with_bffvalidator=no)
2486 libo_FUZZ_ARG_WITH(junit,
2487     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2488         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2489          --without-junit disables those tests. Not relevant in the --without-java case.]),
2490 ,with_junit=yes)
2492 AC_ARG_WITH(hamcrest,
2493     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2494         [Specifies the hamcrest jar file to use for JUnit-based tests.
2495          --without-junit disables those tests. Not relevant in the --without-java case.]),
2496 ,with_hamcrest=yes)
2498 AC_ARG_WITH(perl-home,
2499     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2500         [If you have installed Perl 5 Distribution, on your system, please
2501          supply the path here. Note that this is not the location of the Perl
2502          binary but the location of the entire distribution.]),
2505 libo_FUZZ_ARG_WITH(doxygen,
2506     AS_HELP_STRING(
2507         [--with-doxygen=<absolute path to doxygen executable>],
2508         [Specifies the doxygen executable to use when generating ODK C/C++
2509          documentation. --without-doxygen disables generation of ODK C/C++
2510          documentation. Not relevant in the --disable-odk case.]),
2511 ,with_doxygen=yes)
2513 AC_ARG_WITH(visual-studio,
2514     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2515         [Specify which Visual Studio version to use in case several are
2516          installed. Currently 2019 (default) and 2022 are supported.]),
2519 AC_ARG_WITH(windows-sdk,
2520     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2521         [Specify which Windows SDK, or "Windows Kit", version to use
2522          in case the one that came with the selected Visual Studio
2523          is not what you want for some reason. Note that not all compiler/SDK
2524          combinations are supported. The intent is that this option should not
2525          be needed.]),
2528 AC_ARG_WITH(lang,
2529     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2530         [Use this option to build LibreOffice with additional UI language support.
2531          English (US) is always included by default.
2532          Separate multiple languages with space.
2533          For all languages, use --with-lang=ALL.]),
2536 AC_ARG_WITH(locales,
2537     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2538         [Use this option to limit the locale information built in.
2539          Separate multiple locales with space.
2540          Very experimental and might well break stuff.
2541          Just a desperate measure to shrink code and data size.
2542          By default all the locales available is included.
2543          This option is completely unrelated to --with-lang.])
2544     [
2545                           Affects also our character encoding conversion
2546                           tables for encodings mainly targeted for a
2547                           particular locale, like EUC-CN and EUC-TW for
2548                           zh, ISO-2022-JP for ja.
2550                           Affects also our add-on break iterator data for
2551                           some languages.
2553                           For the default, all locales, don't use this switch at all.
2554                           Specifying just the language part of a locale means all matching
2555                           locales will be included.
2556     ],
2559 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2560 libo_FUZZ_ARG_WITH(krb5,
2561     AS_HELP_STRING([--with-krb5],
2562         [Enable MIT Kerberos 5 support in modules that support it.
2563          By default automatically enabled on platforms
2564          where a good system Kerberos 5 is available.]),
2567 libo_FUZZ_ARG_WITH(gssapi,
2568     AS_HELP_STRING([--with-gssapi],
2569         [Enable GSSAPI support in modules that support it.
2570          By default automatically enabled on platforms
2571          where a good system GSSAPI is available.]),
2574 AC_ARG_WITH(iwyu,
2575     AS_HELP_STRING([--with-iwyu],
2576         [Use given IWYU binary path to check unneeded includes instead of building.
2577          Use only if you are hacking on it.]),
2580 libo_FUZZ_ARG_WITH(lxml,
2581     AS_HELP_STRING([--without-lxml],
2582         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2583          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2584          report widget classes and ids.]),
2587 libo_FUZZ_ARG_WITH(latest-c++,
2588     AS_HELP_STRING([--with-latest-c++],
2589         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2590          published standard.]),,
2591         [with_latest_c__=no])
2593 dnl ===================================================================
2594 dnl Branding
2595 dnl ===================================================================
2597 AC_ARG_WITH(branding,
2598     AS_HELP_STRING([--with-branding=/path/to/images],
2599         [Use given path to retrieve branding images set.])
2600     [
2601                           Search for intro.png about.svg and logo.svg.
2602                           If any is missing, default ones will be used instead.
2604                           Search also progress.conf for progress
2605                           settings on intro screen :
2607                           PROGRESSBARCOLOR="255,255,255" Set color of
2608                           progress bar. Comma separated RGB decimal values.
2609                           PROGRESSSIZE="407,6" Set size of progress bar.
2610                           Comma separated decimal values (width, height).
2611                           PROGRESSPOSITION="61,317" Set position of progress
2612                           bar from left,top. Comma separated decimal values.
2613                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2614                           bar frame. Comma separated RGB decimal values.
2615                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2616                           bar text. Comma separated RGB decimal values.
2617                           PROGRESSTEXTBASELINE="287" Set vertical position of
2618                           progress bar text from top. Decimal value.
2620                           Default values will be used if not found.
2621     ],
2625 AC_ARG_WITH(extra-buildid,
2626     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2627         [Show addition build identification in about dialog.]),
2631 AC_ARG_WITH(vendor,
2632     AS_HELP_STRING([--with-vendor="John the Builder"],
2633         [Set vendor of the build.]),
2636 AC_ARG_WITH(privacy-policy-url,
2637     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2638         [The URL to your privacy policy (needed when
2639          enabling online-update or crashreporting via breakpad)]),
2640         [if test "x$with_privacy_policy_url" = "xyes"; then
2641             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2642          elif test "x$with_privacy_policy_url" = "xno"; then
2643             with_privacy_policy_url="undefined"
2644          fi]
2645 ,[with_privacy_policy_url="undefined"])
2647 AC_ARG_WITH(android-package-name,
2648     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2649         [Set Android package name of the build.]),
2652 AC_ARG_WITH(compat-oowrappers,
2653     AS_HELP_STRING([--with-compat-oowrappers],
2654         [Install oo* wrappers in parallel with
2655          lo* ones to keep backward compatibility.
2656          Has effect only with make distro-pack-install]),
2659 AC_ARG_WITH(os-version,
2660     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2661         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2664 AC_ARG_WITH(idlc-cpp,
2665     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2666         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2669 AC_ARG_WITH(parallelism,
2670     AS_HELP_STRING([--with-parallelism],
2671         [Number of jobs to run simultaneously during build. Parallel builds can
2672         save a lot of time on multi-cpu machines. Defaults to the number of
2673         CPUs on the machine, unless you configure --enable-icecream - then to
2674         40.]),
2677 AC_ARG_WITH(all-tarballs,
2678     AS_HELP_STRING([--with-all-tarballs],
2679         [Download all external tarballs unconditionally]))
2681 AC_ARG_WITH(gdrive-client-id,
2682     AS_HELP_STRING([--with-gdrive-client-id],
2683         [Provides the client id of the application for OAuth2 authentication
2684         on Google Drive. If either this or --with-gdrive-client-secret is
2685         empty, the feature will be disabled]),
2688 AC_ARG_WITH(gdrive-client-secret,
2689     AS_HELP_STRING([--with-gdrive-client-secret],
2690         [Provides the client secret of the application for OAuth2
2691         authentication on Google Drive. If either this or
2692         --with-gdrive-client-id is empty, the feature will be disabled]),
2695 AC_ARG_WITH(alfresco-cloud-client-id,
2696     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2697         [Provides the client id of the application for OAuth2 authentication
2698         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2699         empty, the feature will be disabled]),
2702 AC_ARG_WITH(alfresco-cloud-client-secret,
2703     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2704         [Provides the client secret of the application for OAuth2
2705         authentication on Alfresco Cloud. If either this or
2706         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2709 AC_ARG_WITH(onedrive-client-id,
2710     AS_HELP_STRING([--with-onedrive-client-id],
2711         [Provides the client id of the application for OAuth2 authentication
2712         on OneDrive. If either this or --with-onedrive-client-secret is
2713         empty, the feature will be disabled]),
2716 AC_ARG_WITH(onedrive-client-secret,
2717     AS_HELP_STRING([--with-onedrive-client-secret],
2718         [Provides the client secret of the application for OAuth2
2719         authentication on OneDrive. If either this or
2720         --with-onedrive-client-id is empty, the feature will be disabled]),
2722 dnl ===================================================================
2723 dnl Do we want to use pre-build binary tarball for recompile
2724 dnl ===================================================================
2726 if test "$enable_library_bin_tar" = "yes" ; then
2727     USE_LIBRARY_BIN_TAR=TRUE
2728 else
2729     USE_LIBRARY_BIN_TAR=
2731 AC_SUBST(USE_LIBRARY_BIN_TAR)
2733 dnl ===================================================================
2734 dnl Test whether build target is Release Build
2735 dnl ===================================================================
2736 AC_MSG_CHECKING([whether build target is Release Build])
2737 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2738     AC_MSG_RESULT([no])
2739     ENABLE_RELEASE_BUILD=
2740     GET_TASK_ALLOW_ENTITLEMENT='
2741         <!-- We want to be able to debug a hardened process when not building for release -->
2742         <key>com.apple.security.get-task-allow</key>
2743         <true/>'
2744 else
2745     AC_MSG_RESULT([yes])
2746     ENABLE_RELEASE_BUILD=TRUE
2747     GET_TASK_ALLOW_ENTITLEMENT=''
2749 AC_SUBST(ENABLE_RELEASE_BUILD)
2750 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2752 AC_MSG_CHECKING([whether to build a Community flavor])
2753 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2754     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2755     AC_MSG_RESULT([yes])
2756 else
2757     AC_MSG_RESULT([no])
2760 dnl ===================================================================
2761 dnl Test whether to sign Windows Build
2762 dnl ===================================================================
2763 AC_MSG_CHECKING([whether to sign windows build])
2764 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2765     AC_MSG_RESULT([yes])
2766     WINDOWS_BUILD_SIGNING="TRUE"
2767 else
2768     AC_MSG_RESULT([no])
2769     WINDOWS_BUILD_SIGNING="FALSE"
2771 AC_SUBST(WINDOWS_BUILD_SIGNING)
2773 dnl ===================================================================
2774 dnl MacOSX build and runtime environment options
2775 dnl ===================================================================
2777 AC_ARG_WITH(macosx-version-min-required,
2778     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2779         [set the minimum OS version needed to run the built LibreOffice])
2780     [
2781                           e. g.: --with-macosx-version-min-required=10.12
2782     ],
2785 AC_ARG_WITH(macosx-version-max-allowed,
2786     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2787         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2788     [
2789                           e. g.: --with-macosx-version-max-allowed=11.0
2790     ],
2794 dnl ===================================================================
2795 dnl options for stuff used during cross-compilation build
2796 dnl Not quite superseded by --with-build-platform-configure-options.
2797 dnl TODO: check, if the "force" option is still needed anywhere.
2798 dnl ===================================================================
2800 AC_ARG_WITH(system-icu-for-build,
2801     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2802         [Use icu already on system for build tools (cross-compilation only).]))
2805 dnl ===================================================================
2806 dnl Check for incompatible options set by fuzzing, and reset those
2807 dnl automatically to working combinations
2808 dnl ===================================================================
2810 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2811         "$enable_dbus" != "$enable_avahi"; then
2812     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2813     enable_avahi=$enable_dbus
2816 add_lopath_after ()
2818     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2819         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2820     fi
2823 add_lopath_before ()
2825     local IFS=${P_SEP}
2826     local path_cleanup
2827     local dir
2828     for dir in $LO_PATH ; do
2829         if test "$dir" != "$1" ; then
2830             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2831         fi
2832     done
2833     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2836 dnl ===================================================================
2837 dnl check for required programs (grep, awk, sed, bash)
2838 dnl ===================================================================
2840 pathmunge ()
2842     local new_path
2843     if test -n "$1"; then
2844         if test "$build_os" = "cygwin"; then
2845             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2846                 PathFormat "$1"
2847                 new_path=`cygpath -sm "$formatted_path"`
2848             else
2849                 PathFormat "$1"
2850                 new_path=`cygpath -u "$formatted_path"`
2851             fi
2852         else
2853             new_path="$1"
2854         fi
2855         if test "$2" = "after"; then
2856             add_lopath_after "$new_path"
2857         else
2858             add_lopath_before "$new_path"
2859         fi
2860     fi
2863 AC_PROG_AWK
2864 AC_PATH_PROG( AWK, $AWK)
2865 if test -z "$AWK"; then
2866     AC_MSG_ERROR([install awk to run this script])
2869 AC_PATH_PROG(BASH, bash)
2870 if test -z "$BASH"; then
2871     AC_MSG_ERROR([bash not found in \$PATH])
2873 AC_SUBST(BASH)
2875 AC_MSG_CHECKING([for GNU or BSD tar])
2876 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2877     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2878     if test $? -eq 0;  then
2879         GNUTAR=$a
2880         break
2881     fi
2882 done
2883 AC_MSG_RESULT($GNUTAR)
2884 if test -z "$GNUTAR"; then
2885     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2887 AC_SUBST(GNUTAR)
2889 AC_MSG_CHECKING([for tar's option to strip components])
2890 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2891 if test $? -eq 0; then
2892     STRIP_COMPONENTS="--strip-components"
2893 else
2894     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2895     if test $? -eq 0; then
2896         STRIP_COMPONENTS="--strip-path"
2897     else
2898         STRIP_COMPONENTS="unsupported"
2899     fi
2901 AC_MSG_RESULT($STRIP_COMPONENTS)
2902 if test x$STRIP_COMPONENTS = xunsupported; then
2903     AC_MSG_ERROR([you need a tar that is able to strip components.])
2905 AC_SUBST(STRIP_COMPONENTS)
2907 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2908 dnl desktop OSes from "mobile" ones.
2910 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2911 dnl In other words, that when building for an OS that is not a
2912 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2914 dnl Note the direction of the implication; there is no assumption that
2915 dnl cross-compiling would imply a non-desktop OS.
2917 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2918     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2919     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2920     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2923 # Whether to build "avmedia" functionality or not.
2925 if test -z "$enable_avmedia"; then
2926     enable_avmedia=yes
2929 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2930 if test "$enable_avmedia" = yes; then
2931     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2932 else
2933     USE_AVMEDIA_DUMMY='TRUE'
2935 AC_SUBST(USE_AVMEDIA_DUMMY)
2937 # Decide whether to build database connectivity stuff (including Base) or not.
2938 if test "$enable_database_connectivity" != no; then
2939     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2940     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2941 else
2942     if test "$_os" = iOS; then
2943         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2944     fi
2945     disable_database_connectivity_dependencies
2948 if test -z "$enable_extensions"; then
2949     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2950     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2951         enable_extensions=yes
2952     fi
2955 if test "$enable_extensions" = yes; then
2956     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2957     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2958 else
2959     enable_extension_integration=no
2960     enable_extension_update=no
2963 if test -z "$enable_scripting"; then
2964     # Disable scripting for iOS unless specifically overridden
2965     # with --enable-scripting.
2966     if test $_os != iOS -o $_os = Emscripten; then
2967         enable_scripting=yes
2968     fi
2971 DISABLE_SCRIPTING=''
2972 if test "$enable_scripting" = yes; then
2973     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2974     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2975 else
2976     DISABLE_SCRIPTING='TRUE'
2977     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2980 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2981     # Disable dynamic_loading always for iOS and Android
2982     enable_dynamic_loading=no
2983 elif test -z "$enable_dynamic_loading"; then
2984     # Otherwise enable it unless specifically disabled
2985     enable_dynamic_loading=yes
2988 DISABLE_DYNLOADING=''
2989 if test "$enable_dynamic_loading" = yes; then
2990     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2991 else
2992     DISABLE_DYNLOADING='TRUE'
2994 AC_SUBST(DISABLE_DYNLOADING)
2996 # remember SYSBASE value
2997 AC_SUBST(SYSBASE)
2999 dnl ===================================================================
3000 dnl  Sort out various gallery compilation options
3001 dnl ===================================================================
3002 WITH_GALLERY_BUILD=TRUE
3003 AC_MSG_CHECKING([how to build and package galleries])
3004 if test -n "${with_galleries}"; then
3005     if test "$with_galleries" = "build"; then
3006         if test "$enable_database_connectivity" = no; then
3007             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3008         fi
3009         AC_MSG_RESULT([build from source images internally])
3010     elif test "$with_galleries" = "no"; then
3011         WITH_GALLERY_BUILD=
3012         AC_MSG_RESULT([disable non-internal gallery build])
3013     else
3014         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3015     fi
3016 else
3017     if test $_os != iOS -a $_os != Android; then
3018         AC_MSG_RESULT([internal src images for desktop])
3019     else
3020         WITH_GALLERY_BUILD=
3021         AC_MSG_RESULT([disable src image build])
3022     fi
3024 AC_SUBST(WITH_GALLERY_BUILD)
3026 dnl ===================================================================
3027 dnl  Checks if ccache is available
3028 dnl ===================================================================
3029 CCACHE_DEPEND_MODE=
3030 if test "$enable_ccache" = "no"; then
3031     CCACHE=""
3032 elif test "$_os" = "WINNT"; then
3033     # on windows/VC build do not use ccache - but perhaps sccache is around?
3034     case "%$CC%$CXX%" in
3035     # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3036     # assume that's good then
3037     *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3038         AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3039         CCACHE_DEPEND_MODE=1
3040         ;;
3041     *)
3042         # for sharing code below, reuse CCACHE env var
3043         AC_PATH_PROG([CCACHE],[sccache],[not found])
3044         if test "$CCACHE" = "not found"; then
3045             CCACHE=""
3046         else
3047             CCACHE=`win_short_path_for_make "$CCACHE"`
3048             CCACHE_DEPEND_MODE=1
3049         fi
3050         ;;
3051     esac
3052 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3053     case "%$CC%$CXX%" in
3054     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3055     # assume that's good then
3056     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3057         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3058         CCACHE_DEPEND_MODE=1
3059         ;;
3060     *)
3061         AC_PATH_PROG([CCACHE],[ccache],[not found])
3062         if test "$CCACHE" = "not found"; then
3063             CCACHE=""
3064         else
3065             CCACHE_DEPEND_MODE=1
3066             # Need to check for ccache version: otherwise prevents
3067             # caching of the results (like "-x objective-c++" for Mac)
3068             if test $_os = Darwin -o $_os = iOS; then
3069                 # Check ccache version
3070                 AC_MSG_CHECKING([whether version of ccache is suitable])
3071                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3072                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3073                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3074                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3075                 else
3076                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3077                     CCACHE=""
3078                     CCACHE_DEPEND_MODE=
3079                 fi
3080             fi
3081         fi
3082         ;;
3083     esac
3084 else
3085     CCACHE=""
3087 if test "$enable_ccache" = "nodepend"; then
3088     CCACHE_DEPEND_MODE=""
3090 AC_SUBST(CCACHE_DEPEND_MODE)
3092 # skip on windows - sccache defaults are good enough
3093 if test "$CCACHE" != "" -a "$_os" != "WINNT"; then
3094     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3095     # -p works with both 4.2 and 4.4
3096     ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3097     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3098     if test "$ccache_size" = ""; then
3099         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3100         if test "$ccache_size" = ""; then
3101             ccache_size=0
3102         fi
3103         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3104         if test $ccache_size -lt 1024; then
3105             CCACHE=""
3106             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3107             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3108         else
3109             # warn that ccache may be too small for debug build
3110             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3111             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3112         fi
3113     else
3114         if test $ccache_size -lt 5; then
3115             #warn that ccache may be too small for debug build
3116             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3117             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3118         fi
3119     fi
3122 dnl ===================================================================
3123 dnl  Checks for C compiler,
3124 dnl  The check for the C++ compiler is later on.
3125 dnl ===================================================================
3126 if test "$_os" != "WINNT"; then
3127     GCC_HOME_SET="true"
3128     AC_MSG_CHECKING([gcc home])
3129     if test -z "$with_gcc_home"; then
3130         if test "$enable_icecream" = "yes"; then
3131             if test -d "/usr/lib/icecc/bin"; then
3132                 GCC_HOME="/usr/lib/icecc/"
3133             elif test -d "/usr/libexec/icecc/bin"; then
3134                 GCC_HOME="/usr/libexec/icecc/"
3135             elif test -d "/opt/icecream/bin"; then
3136                 GCC_HOME="/opt/icecream/"
3137             else
3138                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3140             fi
3141         else
3142             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3143             GCC_HOME_SET="false"
3144         fi
3145     else
3146         GCC_HOME="$with_gcc_home"
3147     fi
3148     AC_MSG_RESULT($GCC_HOME)
3149     AC_SUBST(GCC_HOME)
3151     if test "$GCC_HOME_SET" = "true"; then
3152         if test -z "$CC"; then
3153             CC="$GCC_HOME/bin/gcc"
3154             CC_BASE="gcc"
3155         fi
3156         if test -z "$CXX"; then
3157             CXX="$GCC_HOME/bin/g++"
3158             CXX_BASE="g++"
3159         fi
3160     fi
3163 COMPATH=`dirname "$CC"`
3164 if test "$COMPATH" = "."; then
3165     AC_PATH_PROGS(COMPATH, $CC)
3166     dnl double square bracket to get single because of M4 quote...
3167     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3169 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3171 dnl ===================================================================
3172 dnl Java support
3173 dnl ===================================================================
3174 AC_MSG_CHECKING([whether to build with Java support])
3175 if test "$with_java" != "no"; then
3176     if test "$DISABLE_SCRIPTING" = TRUE; then
3177         AC_MSG_RESULT([no, overridden by --disable-scripting])
3178         ENABLE_JAVA=""
3179         with_java=no
3180     else
3181         AC_MSG_RESULT([yes])
3182         ENABLE_JAVA="TRUE"
3183         AC_DEFINE(HAVE_FEATURE_JAVA)
3184     fi
3185 else
3186     AC_MSG_RESULT([no])
3187     ENABLE_JAVA=""
3190 AC_SUBST(ENABLE_JAVA)
3192 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3194 dnl ENABLE_JAVA="" indicate no Java support at all
3196 dnl ===================================================================
3197 dnl Check macOS SDK and compiler
3198 dnl ===================================================================
3200 if test $_os = Darwin; then
3202     # The SDK in the currently selected Xcode should be found.
3204     AC_MSG_CHECKING([what macOS SDK to use])
3205     for macosx_sdk in 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3206         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3207         if test -d "$MACOSX_SDK_PATH"; then
3208             break
3209         else
3210             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3211             if test -d "$MACOSX_SDK_PATH"; then
3212                 break
3213             fi
3214         fi
3215     done
3216     if test ! -d "$MACOSX_SDK_PATH"; then
3217         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3218     fi
3220     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3222     case $macosx_sdk in
3223     10.13)
3224         MACOSX_SDK_VERSION=101300
3225         ;;
3226     10.14)
3227         MACOSX_SDK_VERSION=101400
3228         ;;
3229     10.15)
3230         MACOSX_SDK_VERSION=101500
3231         ;;
3232     11.0)
3233         MACOSX_SDK_VERSION=110000
3234         ;;
3235     11.1)
3236         MACOSX_SDK_VERSION=110100
3237         ;;
3238     11.3)
3239         MACOSX_SDK_VERSION=110300
3240         ;;
3241     12.0)
3242         MACOSX_SDK_VERSION=120000
3243         ;;
3244     *)
3245         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3246         ;;
3247     esac
3249     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3250         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3251     fi
3253     if test "$with_macosx_version_min_required" = "" ; then
3254         if test "$host_cpu" = x86_64; then
3255             with_macosx_version_min_required="10.12";
3256         else
3257             with_macosx_version_min_required="11.0";
3258         fi
3259     fi
3261     if test "$with_macosx_version_max_allowed" = "" ; then
3262         with_macosx_version_max_allowed="$macosx_sdk"
3263     fi
3265     # export this so that "xcrun" invocations later return matching values
3266     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3267     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3268     export DEVELOPER_DIR
3269     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3270     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3272     AC_MSG_CHECKING([whether Xcode is new enough])
3273     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3274     my_xcode_ver2=${my_xcode_ver1#Xcode }
3275     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3276     if test "$my_xcode_ver3" -ge 1103; then
3277         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3278     else
3279         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3280     fi
3282     case "$with_macosx_version_min_required" in
3283     10.12)
3284         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3285         ;;
3286     10.13)
3287         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3288         ;;
3289     10.14)
3290         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3291         ;;
3292     10.15)
3293         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3294         ;;
3295     10.16)
3296         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3297         ;;
3298     11.0)
3299         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3300         ;;
3301     11.1)
3302         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3303         ;;
3304     11.3)
3305         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3306         ;;
3307     12.0)
3308         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3309         ;;
3310     *)
3311         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--12.0])
3312         ;;
3313     esac
3315     LIBTOOL=/usr/bin/libtool
3316     INSTALL_NAME_TOOL=install_name_tool
3317     if test -z "$save_CC"; then
3318         stdlib=-stdlib=libc++
3320         AC_MSG_CHECKING([what C compiler to use])
3321         CC="`xcrun -find clang`"
3322         CC_BASE=`first_arg_basename "$CC"`
3323         if test "$host_cpu" = x86_64; then
3324             CC+=" -target x86_64-apple-macos"
3325         else
3326             CC+=" -target arm64-apple-macos"
3327         fi
3328         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3329         AC_MSG_RESULT([$CC])
3331         AC_MSG_CHECKING([what C++ compiler to use])
3332         CXX="`xcrun -find clang++`"
3333         CXX_BASE=`first_arg_basename "$CXX"`
3334         if test "$host_cpu" = x86_64; then
3335             CXX+=" -target x86_64-apple-macos"
3336         else
3337             CXX+=" -target arm64-apple-macos"
3338         fi
3339         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3340         AC_MSG_RESULT([$CXX])
3342         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3343         AR=`xcrun -find ar`
3344         NM=`xcrun -find nm`
3345         STRIP=`xcrun -find strip`
3346         LIBTOOL=`xcrun -find libtool`
3347         RANLIB=`xcrun -find ranlib`
3348     fi
3350     case "$with_macosx_version_max_allowed" in
3351     10.12)
3352         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3353         ;;
3354     10.13)
3355         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3356         ;;
3357     10.14)
3358         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3359         ;;
3360     10.15)
3361         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3362         ;;
3363     11.0)
3364         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3365         ;;
3366     11.1)
3367         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3368         ;;
3369     11.3)
3370         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3371         ;;
3372     12.0)
3373         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3374         ;;
3375     *)
3376         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.0])
3377         ;;
3378     esac
3380     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3381     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3382         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])
3383     else
3384         AC_MSG_RESULT([ok])
3385     fi
3387     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3388     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3389         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3390     else
3391         AC_MSG_RESULT([ok])
3392     fi
3393     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3394     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3396     AC_MSG_CHECKING([whether to do code signing])
3398     if test "$enable_macosx_code_signing" = yes; then
3399         # By default use the first suitable certificate (?).
3401         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3402         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3403         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3404         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3405         # "Developer ID Application" one.
3407         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3408         if test -n "$identity"; then
3409             MACOSX_CODESIGNING_IDENTITY=$identity
3410             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3411             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3412         else
3413             AC_MSG_ERROR([cannot determine identity to use])
3414         fi
3415     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3416         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3417         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3418         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3419     else
3420         AC_MSG_RESULT([no])
3421     fi
3423     AC_MSG_CHECKING([whether to create a Mac App Store package])
3425     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3426         AC_MSG_RESULT([no])
3427     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3428         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3429     elif test "$enable_macosx_package_signing" = yes; then
3430         # By default use the first suitable certificate.
3431         # It should be a "3rd Party Mac Developer Installer" one
3433         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3434         if test -n "$identity"; then
3435             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3436             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3437             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3438         else
3439             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3440         fi
3441     else
3442         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3443         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3444         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3445     fi
3447     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3448         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3449     fi
3451     AC_MSG_CHECKING([whether to sandbox the application])
3453     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3454         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3455     elif test "$enable_macosx_sandbox" = yes; then
3456         ENABLE_MACOSX_SANDBOX=TRUE
3457         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3458         AC_MSG_RESULT([yes])
3459     else
3460         AC_MSG_RESULT([no])
3461     fi
3463     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3464     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3465     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3467 AC_SUBST(MACOSX_SDK_PATH)
3468 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3469 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3470 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3471 AC_SUBST(INSTALL_NAME_TOOL)
3472 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3473 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3474 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3475 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3476 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3478 dnl ===================================================================
3479 dnl Check iOS SDK and compiler
3480 dnl ===================================================================
3482 if test $_os = iOS; then
3483     AC_MSG_CHECKING([what iOS SDK to use])
3484     current_sdk_ver=15.0
3485     older_sdk_vers="14.5"
3486     if test "$enable_ios_simulator" = "yes"; then
3487         platform=iPhoneSimulator
3488         versionmin=-mios-simulator-version-min=13.6
3489     else
3490         platform=iPhoneOS
3491         versionmin=-miphoneos-version-min=13.6
3492     fi
3493     xcode_developer=`xcode-select -print-path`
3495     for sdkver in $current_sdk_ver $older_sdk_vers; do
3496         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3497         if test -d $t; then
3498             sysroot=$t
3499             break
3500         fi
3501     done
3503     if test -z "$sysroot"; then
3504         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3505     fi
3507     AC_MSG_RESULT($sysroot)
3509     stdlib="-stdlib=libc++"
3511     AC_MSG_CHECKING([what C compiler to use])
3512     CC="`xcrun -find clang`"
3513     CC_BASE=`first_arg_basename "$CC"`
3514     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3515     AC_MSG_RESULT([$CC])
3517     AC_MSG_CHECKING([what C++ compiler to use])
3518     CXX="`xcrun -find clang++`"
3519     CXX_BASE=`first_arg_basename "$CXX"`
3520     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3521     AC_MSG_RESULT([$CXX])
3523     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3524     AR=`xcrun -find ar`
3525     NM=`xcrun -find nm`
3526     STRIP=`xcrun -find strip`
3527     LIBTOOL=`xcrun -find libtool`
3528     RANLIB=`xcrun -find ranlib`
3531 AC_MSG_CHECKING([whether to treat the installation as read-only])
3533 if test $_os = Darwin; then
3534     enable_readonly_installset=yes
3535 elif test "$enable_extensions" != yes; then
3536     enable_readonly_installset=yes
3538 if test "$enable_readonly_installset" = yes; then
3539     AC_MSG_RESULT([yes])
3540     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3541 else
3542     AC_MSG_RESULT([no])
3545 dnl ===================================================================
3546 dnl Structure of install set
3547 dnl ===================================================================
3549 if test $_os = Darwin; then
3550     LIBO_BIN_FOLDER=MacOS
3551     LIBO_ETC_FOLDER=Resources
3552     LIBO_LIBEXEC_FOLDER=MacOS
3553     LIBO_LIB_FOLDER=Frameworks
3554     LIBO_LIB_PYUNO_FOLDER=Resources
3555     LIBO_SHARE_FOLDER=Resources
3556     LIBO_SHARE_HELP_FOLDER=Resources/help
3557     LIBO_SHARE_JAVA_FOLDER=Resources/java
3558     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3559     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3560     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3561     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3562     LIBO_URE_BIN_FOLDER=MacOS
3563     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3564     LIBO_URE_LIB_FOLDER=Frameworks
3565     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3566     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3567 elif test $_os = WINNT; then
3568     LIBO_BIN_FOLDER=program
3569     LIBO_ETC_FOLDER=program
3570     LIBO_LIBEXEC_FOLDER=program
3571     LIBO_LIB_FOLDER=program
3572     LIBO_LIB_PYUNO_FOLDER=program
3573     LIBO_SHARE_FOLDER=share
3574     LIBO_SHARE_HELP_FOLDER=help
3575     LIBO_SHARE_JAVA_FOLDER=program/classes
3576     LIBO_SHARE_PRESETS_FOLDER=presets
3577     LIBO_SHARE_READMES_FOLDER=readmes
3578     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3579     LIBO_SHARE_SHELL_FOLDER=program/shell
3580     LIBO_URE_BIN_FOLDER=program
3581     LIBO_URE_ETC_FOLDER=program
3582     LIBO_URE_LIB_FOLDER=program
3583     LIBO_URE_MISC_FOLDER=program
3584     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3585 else
3586     LIBO_BIN_FOLDER=program
3587     LIBO_ETC_FOLDER=program
3588     LIBO_LIBEXEC_FOLDER=program
3589     LIBO_LIB_FOLDER=program
3590     LIBO_LIB_PYUNO_FOLDER=program
3591     LIBO_SHARE_FOLDER=share
3592     LIBO_SHARE_HELP_FOLDER=help
3593     LIBO_SHARE_JAVA_FOLDER=program/classes
3594     LIBO_SHARE_PRESETS_FOLDER=presets
3595     LIBO_SHARE_READMES_FOLDER=readmes
3596     if test "$enable_fuzzers" != yes; then
3597         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3598     else
3599         LIBO_SHARE_RESOURCE_FOLDER=resource
3600     fi
3601     LIBO_SHARE_SHELL_FOLDER=program/shell
3602     LIBO_URE_BIN_FOLDER=program
3603     LIBO_URE_ETC_FOLDER=program
3604     LIBO_URE_LIB_FOLDER=program
3605     LIBO_URE_MISC_FOLDER=program
3606     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3608 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3609 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3610 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3611 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3612 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3613 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3614 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3615 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3616 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3617 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3618 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3619 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3620 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3621 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3622 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3623 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3625 # Not all of them needed in config_host.mk, add more if need arises
3626 AC_SUBST(LIBO_BIN_FOLDER)
3627 AC_SUBST(LIBO_ETC_FOLDER)
3628 AC_SUBST(LIBO_LIB_FOLDER)
3629 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3630 AC_SUBST(LIBO_SHARE_FOLDER)
3631 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3632 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3633 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3634 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3635 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3636 AC_SUBST(LIBO_URE_BIN_FOLDER)
3637 AC_SUBST(LIBO_URE_ETC_FOLDER)
3638 AC_SUBST(LIBO_URE_LIB_FOLDER)
3639 AC_SUBST(LIBO_URE_MISC_FOLDER)
3640 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3642 dnl ===================================================================
3643 dnl Windows specific tests and stuff
3644 dnl ===================================================================
3646 reg_get_value()
3648     # Return value: $regvalue
3649     unset regvalue
3651     if test "$build_os" = "wsl"; then
3652         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3653         return
3654     fi
3656     local _regentry="/proc/registry${1}/${2}"
3657     if test -f "$_regentry"; then
3658         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3659         # Registry keys read via /proc/registry* are always \0 terminated!
3660         local _regvalue=$(tr -d '\0' < "$_regentry")
3661         if test $? -eq 0; then
3662             regvalue=$_regvalue
3663         fi
3664     fi
3667 # Get a value from the 32-bit side of the Registry
3668 reg_get_value_32()
3670     reg_get_value "32" "$1"
3673 # Get a value from the 64-bit side of the Registry
3674 reg_get_value_64()
3676     reg_get_value "64" "$1"
3679 case "$host_os" in
3680 cygwin*|wsl*)
3681     COM=MSC
3682     OS=WNT
3683     RTL_OS=Windows
3684     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3685         P_SEP=";"
3686     else
3687         P_SEP=:
3688     fi
3689     case "$host_cpu" in
3690     x86_64)
3691         CPUNAME=X86_64
3692         RTL_ARCH=X86_64
3693         PLATFORMID=windows_x86_64
3694         WINDOWS_X64=1
3695         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3696         WIN_HOST_ARCH="x64"
3697         WIN_MULTI_ARCH="x86"
3698         WIN_HOST_BITS=64
3699         ;;
3700     i*86)
3701         CPUNAME=INTEL
3702         RTL_ARCH=x86
3703         PLATFORMID=windows_x86
3704         WIN_HOST_ARCH="x86"
3705         WIN_HOST_BITS=32
3706         WIN_OTHER_ARCH="x64"
3707         ;;
3708     aarch64)
3709         CPUNAME=AARCH64
3710         RTL_ARCH=AARCH64
3711         PLATFORMID=windows_aarch64
3712         WINDOWS_X64=1
3713         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3714         WIN_HOST_ARCH="arm64"
3715         WIN_HOST_BITS=64
3716         with_ucrt_dir=no
3717         ;;
3718     *)
3719         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3720         ;;
3721     esac
3723     case "$build_cpu" in
3724     x86_64) WIN_BUILD_ARCH="x64" ;;
3725     i*86) WIN_BUILD_ARCH="x86" ;;
3726     aarch64) WIN_BUILD_ARCH="arm64" ;;
3727     *)
3728         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3729         ;;
3730     esac
3732     SCPDEFS="$SCPDEFS -D_MSC_VER"
3733     ;;
3734 esac
3736 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3737 # other-arch won't, but wouldn't break the build (x64 on x86).
3738 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3739     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3743 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3744     # To allow building Windows multi-arch releases without cross-tooling
3745     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3746         cross_compiling="yes"
3747     fi
3750 ENABLE_WASM_STRIP=''
3751 if test "$cross_compiling" = "yes"; then
3752     export CROSS_COMPILING=TRUE
3753     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3754         ENABLE_WASM_STRIP=TRUE
3755     fi
3756 else
3757     CROSS_COMPILING=
3758     BUILD_TYPE="$BUILD_TYPE NATIVE"
3760 AC_SUBST(CROSS_COMPILING)
3761 AC_SUBST(ENABLE_WASM_STRIP)
3763 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3764 # NOTE: must _not_ be used for bundled external libraries!
3765 ISYSTEM=
3766 if test "$GCC" = "yes"; then
3767     AC_MSG_CHECKING( for -isystem )
3768     save_CFLAGS=$CFLAGS
3769     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3770     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3771     CFLAGS=$save_CFLAGS
3772     if test -n "$ISYSTEM"; then
3773         AC_MSG_RESULT(yes)
3774     else
3775         AC_MSG_RESULT(no)
3776     fi
3778 if test -z "$ISYSTEM"; then
3779     # fall back to using -I
3780     ISYSTEM=-I
3782 AC_SUBST(ISYSTEM)
3784 dnl ===================================================================
3785 dnl  Check which Visual Studio compiler is used
3786 dnl ===================================================================
3788 map_vs_year_to_version()
3790     # Return value: $vsversion
3792     unset vsversion
3794     case $1 in
3795     2019)
3796         vsversion=16;;
3797     2022)
3798         vsversion=17;;
3799     *)
3800         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3801     esac
3804 vs_versions_to_check()
3806     # Args: $1 (optional) : versions to check, in the order of preference
3807     # Return value: $vsversions
3809     unset vsversions
3811     if test -n "$1"; then
3812         map_vs_year_to_version "$1"
3813         vsversions=$vsversion
3814     else
3815         # Default version is 2019
3816         vsversions="16"
3817     fi
3820 win_get_env_from_vsvars32bat()
3822     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3823     # Also seems to be located in another directory under the same name: vsvars32.bat
3824     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3825     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3826     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3827     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3828     local result
3829     if test "$build_os" = "wsl"; then
3830         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3831     else
3832         chmod +x $WRAPPERBATCHFILEPATH
3833         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3834     fi
3835     rm -f $WRAPPERBATCHFILEPATH
3836     printf '%s' "$result"
3839 find_ucrt()
3841     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3842     if test -n "$regvalue"; then
3843         PathFormat "$regvalue"
3844         UCRTSDKDIR=$formatted_path_unix
3845         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3846         UCRTVERSION=$regvalue
3847         # Rest if not exist
3848         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3849           UCRTSDKDIR=
3850         fi
3851     fi
3852     if test -z "$UCRTSDKDIR"; then
3853         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3854         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3855         if test -f "$ide_env_file"; then
3856             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3857             UCRTSDKDIR=$formatted_path
3858             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3859             dnl Hack needed at least by tml:
3860             if test "$UCRTVERSION" = 10.0.15063.0 \
3861                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3862                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3863             then
3864                 UCRTVERSION=10.0.14393.0
3865             fi
3866         else
3867           AC_MSG_ERROR([No UCRT found])
3868         fi
3869     fi
3872 find_msvc()
3874     # Find Visual C++
3875     # Args: $1 (optional) : The VS version year
3876     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3878     unset vctest vctoolset vcnumwithdot vcbuildnumber
3880     vs_versions_to_check "$1"
3881     if test "$build_os" = wsl; then
3882         vswhere="$PROGRAMFILESX86"
3883     else
3884         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3885     fi
3886     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3887     PathFormat "$vswhere"
3888     vswhere=$formatted_path_unix
3889     for ver in $vsversions; do
3890         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3891         if test -z "$vswhereoutput"; then
3892             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3893         fi
3894         # Fall back to all MS products (this includes VC++ Build Tools)
3895         if ! test -n "$vswhereoutput"; then
3896             AC_MSG_CHECKING([VC++ Build Tools and similar])
3897             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3898         fi
3899         if test -n "$vswhereoutput"; then
3900             PathFormat "$vswhereoutput"
3901             vctest=$formatted_path_unix
3902             break
3903         fi
3904     done
3906     if test -n "$vctest"; then
3907         vcnumwithdot="$ver.0"
3908         case "$vcnumwithdot" in
3909         16.0)
3910             vcyear=2019
3911             vctoolset=v142
3912             ;;
3913         17.0)
3914             vcyear=2022
3915             vctoolset=v143
3916             ;;
3917         esac
3918         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3920     fi
3923 test_cl_exe()
3925     AC_MSG_CHECKING([$1 compiler])
3927     CL_EXE_PATH="$2/cl.exe"
3929     if test ! -f "$CL_EXE_PATH"; then
3930         if test "$1" = "multi-arch"; then
3931             AC_MSG_WARN([no compiler (cl.exe) in $2])
3932             return 1
3933         else
3934             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3935         fi
3936     fi
3938     dnl ===========================================================
3939     dnl  Check for the corresponding mspdb*.dll
3940     dnl ===========================================================
3942     # MSVC 15.0 has libraries from 14.0?
3943     mspdbnum="140"
3945     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3946         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3947     fi
3949     # The compiles has to find its shared libraries
3950     OLD_PATH="$PATH"
3951     TEMP_PATH=`cygpath -d "$2"`
3952     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3954     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3955         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3956     fi
3958     PATH="$OLD_PATH"
3960     AC_MSG_RESULT([$CL_EXE_PATH])
3963 SOLARINC=
3964 MSBUILD_PATH=
3965 DEVENV=
3966 if test "$_os" = "WINNT"; then
3967     AC_MSG_CHECKING([Visual C++])
3968     find_msvc "$with_visual_studio"
3969     if test -z "$vctest"; then
3970         if test -n "$with_visual_studio"; then
3971             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3972         else
3973             AC_MSG_ERROR([no Visual Studio installation found])
3974         fi
3975     fi
3976     AC_MSG_RESULT([])
3978     VC_PRODUCT_DIR="$vctest/VC"
3979     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3981     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3982     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3983         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3984         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3985         if test $? -ne 0; then
3986             WIN_MULTI_ARCH=""
3987             WIN_OTHER_ARCH=""
3988         fi
3989     fi
3991     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3992         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3993         test_cl_exe "build" "$MSVC_BUILD_PATH"
3994     fi
3996     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3997         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3998         test_cl_exe "host" "$MSVC_HOST_PATH"
3999     else
4000         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4001     fi
4003     AC_MSG_CHECKING([for short pathname of VC product directory])
4004     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4005     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4007     UCRTSDKDIR=
4008     UCRTVERSION=
4010     AC_MSG_CHECKING([for UCRT location])
4011     find_ucrt
4012     # find_ucrt errors out if it doesn't find it
4013     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4014     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4015     ucrtincpath_formatted=$formatted_path
4016     # SOLARINC is used for external modules and must be set too.
4017     # And no, it's not sufficient to set SOLARINC only, as configure
4018     # itself doesn't honour it.
4019     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4020     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4021     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4022     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4024     AC_SUBST(UCRTSDKDIR)
4025     AC_SUBST(UCRTVERSION)
4027     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4028     # Find the proper version of MSBuild.exe to use based on the VS version
4029     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4030     if test -z "$regvalue" ; then
4031         if test "$WIN_BUILD_ARCH" != "x64"; then
4032             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4033         else
4034             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4035         fi
4036     fi
4037     if test -d "$regvalue" ; then
4038         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4039         AC_MSG_RESULT([$regvalue])
4040     else
4041         AC_MSG_ERROR([MSBuild.exe location not found])
4042     fi
4044     # Find the version of devenv.exe
4045     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4046     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4047     DEVENV_unix=$(cygpath -u "$DEVENV")
4048     if test ! -e "$DEVENV_unix"; then
4049         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4050     fi
4052     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4053     dnl needed when building CLR code:
4054     if test -z "$MSVC_CXX"; then
4055         # This gives us a posix path with 8.3 filename restrictions
4056         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4057     fi
4059     if test -z "$CC"; then
4060         CC=$MSVC_CXX
4061         CC_BASE=`first_arg_basename "$CC"`
4062     fi
4063     if test -z "$CXX"; then
4064         CXX=$MSVC_CXX
4065         CXX_BASE=`first_arg_basename "$CXX"`
4066     fi
4068     if test -n "$CC"; then
4069         # Remove /cl.exe from CC case insensitive
4070         AC_MSG_NOTICE([found Visual C++ $vcyear])
4072         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4073         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4075         PathFormat "$COMPATH"
4076         COMPATH=`win_short_path_for_make "$formatted_path"`
4078         VCVER=$vcnumwithdot
4079         VCTOOLSET=$vctoolset
4081         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4082         # are always "better", we list them in reverse chronological order.
4084         case "$vcnumwithdot" in
4085         16.0 | 17.0)
4086             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4087             ;;
4088         esac
4090         # The expectation is that --with-windows-sdk should not need to be used
4091         if test -n "$with_windows_sdk"; then
4092             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4093             *" "$with_windows_sdk" "*)
4094                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4095                 ;;
4096             *)
4097                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4098                 ;;
4099             esac
4100         fi
4102         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4103         ac_objext=obj
4104         ac_exeext=exe
4106     else
4107         AC_MSG_ERROR([Visual C++ not found after all, huh])
4108     fi
4110     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4111     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4112         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4113         // between Visual Studio versions and _MSC_VER:
4114         #if _MSC_VER < 1925
4115         #error
4116         #endif
4117     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4119     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4120     # version of the Explorer extension (and maybe other small
4121     # bits, too) needed when installing a 32-bit LibreOffice on a
4122     # 64-bit OS. The 64-bit Explorer extension is a feature that
4123     # has been present since long in OOo. Don't confuse it with
4124     # building LibreOffice itself as 64-bit code.
4126     BUILD_X64=
4127     CXX_X64_BINARY=
4129     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4130         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4131         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4132              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4133         then
4134             BUILD_X64=TRUE
4135             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4136             AC_MSG_RESULT([found])
4137         else
4138             AC_MSG_RESULT([not found])
4139             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4140         fi
4141     elif test "$WIN_HOST_ARCH" = "x64"; then
4142         CXX_X64_BINARY=$CXX
4143     fi
4144     AC_SUBST(BUILD_X64)
4146     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4147     AC_SUBST(CXX_X64_BINARY)
4149     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4150     # needed to support TWAIN scan on both 32- and 64-bit systems
4152     case "$WIN_HOST_ARCH" in
4153     x64)
4154         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4155         if test -n "$CXX_X86_BINARY"; then
4156             BUILD_X86=TRUE
4157             AC_MSG_RESULT([preset])
4158         elif test -n "$WIN_MULTI_ARCH"; then
4159             BUILD_X86=TRUE
4160             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4161             CXX_X86_BINARY+=" /arch:SSE"
4162             AC_MSG_RESULT([found])
4163         else
4164             AC_MSG_RESULT([not found])
4165             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4166         fi
4167         ;;
4168     x86)
4169         BUILD_X86=TRUE
4170         CXX_X86_BINARY=$MSVC_CXX
4171         ;;
4172     esac
4173     AC_SUBST(BUILD_X86)
4174     AC_SUBST(CXX_X86_BINARY)
4176 AC_SUBST(VCVER)
4177 AC_SUBST(VCTOOLSET)
4178 AC_SUBST(DEVENV)
4179 AC_SUBST(MSVC_CXX)
4181 COM_IS_CLANG=
4182 AC_MSG_CHECKING([whether the compiler is actually Clang])
4183 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4184     #ifndef __clang__
4185     you lose
4186     #endif
4187     int foo=42;
4188     ]])],
4189     [AC_MSG_RESULT([yes])
4190      COM_IS_CLANG=TRUE],
4191     [AC_MSG_RESULT([no])])
4192 AC_SUBST(COM_IS_CLANG)
4194 CC_PLAIN=$CC
4195 CLANGVER=
4196 if test "$COM_IS_CLANG" = TRUE; then
4197     AC_MSG_CHECKING([whether Clang is new enough])
4198     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4199         #if !defined __apple_build_version__
4200         #error
4201         #endif
4202         ]])],
4203         [my_apple_clang=yes],[my_apple_clang=])
4204     if test "$my_apple_clang" = yes; then
4205         AC_MSG_RESULT([assumed yes (Apple Clang)])
4206     elif test "$_os" = Emscripten; then
4207         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4208     else
4209         if test "$_os" = WINNT; then
4210             dnl In which case, assume clang-cl:
4211             my_args="/EP /TC"
4212             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4213             dnl clang-cl:
4214             CC_PLAIN=
4215             for i in $CC; do
4216                 case $i in
4217                 -FIIntrin.h)
4218                     ;;
4219                 *)
4220                     CC_PLAIN="$CC_PLAIN $i"
4221                     ;;
4222                 esac
4223             done
4224         else
4225             my_args="-E -P"
4226         fi
4227         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4228         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4229         CLANGVER=`echo $clang_version \
4230             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4231         if test "$CLANGVER" -ge 50002; then
4232             AC_MSG_RESULT([yes ($clang_version)])
4233         else
4234             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4235         fi
4236         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4237         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4238     fi
4241 SHOWINCLUDES_PREFIX=
4242 if test "$_os" = WINNT; then
4243     dnl We need to guess the prefix of the -showIncludes output, it can be
4244     dnl localized
4245     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4246     echo "#include <stdlib.h>" > conftest.c
4247     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4248         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4249     rm -f conftest.c conftest.obj
4250     if test -z "$SHOWINCLUDES_PREFIX"; then
4251         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4252     else
4253         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4254     fi
4256 AC_SUBST(SHOWINCLUDES_PREFIX)
4259 # prefix C with ccache if needed
4261 if test "$CCACHE" != ""; then
4262     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4264     AC_LANG_PUSH([C])
4265     save_CFLAGS=$CFLAGS
4266     CFLAGS="$CFLAGS --ccache-skip -O2"
4267     dnl an empty program will do, we're checking the compiler flags
4268     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4269                       [use_ccache=yes], [use_ccache=no])
4270     CFLAGS=$save_CFLAGS
4271     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4272         AC_MSG_RESULT([yes])
4273     else
4274         CC="$CCACHE $CC"
4275         CC_BASE="ccache $CC_BASE"
4276         AC_MSG_RESULT([no])
4277     fi
4278     AC_LANG_POP([C])
4281 # ===================================================================
4282 # check various GCC options that Clang does not support now but maybe
4283 # will somewhen in the future, check them even for GCC, so that the
4284 # flags are set
4285 # ===================================================================
4287 HAVE_GCC_GGDB2=
4288 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4289     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4290     save_CFLAGS=$CFLAGS
4291     CFLAGS="$CFLAGS -Werror -ggdb2"
4292     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4293     CFLAGS=$save_CFLAGS
4294     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4295         AC_MSG_RESULT([yes])
4296     else
4297         AC_MSG_RESULT([no])
4298     fi
4300     if test "$host_cpu" = "m68k"; then
4301         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4302         save_CFLAGS=$CFLAGS
4303         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4304         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4305         CFLAGS=$save_CFLAGS
4306         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4307             AC_MSG_RESULT([yes])
4308         else
4309             AC_MSG_ERROR([no])
4310         fi
4311     fi
4313 AC_SUBST(HAVE_GCC_GGDB2)
4315 dnl ===================================================================
4316 dnl  Test the gcc version
4317 dnl ===================================================================
4318 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4319     AC_MSG_CHECKING([the GCC version])
4320     _gcc_version=`$CC -dumpfullversion`
4321     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4322         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4323     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4325     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4327     if test "$gcc_full_version" -lt 70000; then
4328         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4329     fi
4330 else
4331     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4332     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4333     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4334     # (which reports itself as GCC 4.2.1).
4335     GCC_VERSION=
4337 AC_SUBST(GCC_VERSION)
4339 dnl Set the ENABLE_DBGUTIL variable
4340 dnl ===================================================================
4341 AC_MSG_CHECKING([whether to build with additional debug utilities])
4342 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4343     ENABLE_DBGUTIL="TRUE"
4344     # this is an extra var so it can have different default on different MSVC
4345     # versions (in case there are version specific problems with it)
4346     MSVC_USE_DEBUG_RUNTIME="TRUE"
4348     AC_MSG_RESULT([yes])
4349     # cppunit and graphite expose STL in public headers
4350     if test "$with_system_cppunit" = "yes"; then
4351         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4352     else
4353         with_system_cppunit=no
4354     fi
4355     if test "$with_system_graphite" = "yes"; then
4356         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4357     else
4358         with_system_graphite=no
4359     fi
4360     if test "$with_system_orcus" = "yes"; then
4361         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4362     else
4363         with_system_orcus=no
4364     fi
4365     if test "$with_system_libcmis" = "yes"; then
4366         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4367     else
4368         with_system_libcmis=no
4369     fi
4370     if test "$with_system_hunspell" = "yes"; then
4371         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4372     else
4373         with_system_hunspell=no
4374     fi
4375     if test "$with_system_gpgmepp" = "yes"; then
4376         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4377     else
4378         with_system_gpgmepp=no
4379     fi
4380     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4381     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4382     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4383     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4384     # of those two is using the system variant:
4385     if test "$with_system_libnumbertext" = "yes"; then
4386         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4387     else
4388         with_system_libnumbertext=no
4389     fi
4390     if test "$with_system_libwps" = "yes"; then
4391         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4392     else
4393         with_system_libwps=no
4394     fi
4395 else
4396     ENABLE_DBGUTIL=""
4397     MSVC_USE_DEBUG_RUNTIME=""
4398     AC_MSG_RESULT([no])
4400 AC_SUBST(ENABLE_DBGUTIL)
4401 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4403 dnl Set the ENABLE_DEBUG variable.
4404 dnl ===================================================================
4405 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4406     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4408 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4409     if test -z "$libo_fuzzed_enable_debug"; then
4410         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4411     else
4412         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4413         enable_debug=yes
4414     fi
4417 AC_MSG_CHECKING([whether to do a debug build])
4418 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4419     ENABLE_DEBUG="TRUE"
4420     if test -n "$ENABLE_DBGUTIL" ; then
4421         AC_MSG_RESULT([yes (dbgutil)])
4422     else
4423         AC_MSG_RESULT([yes])
4424     fi
4425 else
4426     ENABLE_DEBUG=""
4427     AC_MSG_RESULT([no])
4429 AC_SUBST(ENABLE_DEBUG)
4431 dnl ===================================================================
4432 dnl Select the linker to use (gold/lld/ld.bfd).
4433 dnl This is done only after compiler checks (need to know if Clang is
4434 dnl used, for different defaults) and after checking if a debug build
4435 dnl is wanted (non-debug builds get the default linker if not explicitly
4436 dnl specified otherwise).
4437 dnl All checks for linker features/options should come after this.
4438 dnl ===================================================================
4439 check_use_ld()
4441     use_ld=-fuse-ld=${1%%:*}
4442     use_ld_path=${1#*:}
4443     if test "$use_ld_path" != "$1"; then
4444         use_ld="$use_ld --ld-path=$use_ld_path"
4445     fi
4446     use_ld_fail_if_error=$2
4447     use_ld_ok=
4448     AC_MSG_CHECKING([for $use_ld linker support])
4449     use_ld_ldflags_save="$LDFLAGS"
4450     LDFLAGS="$LDFLAGS $use_ld"
4451     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4452 #include <stdio.h>
4453         ],[
4454 printf ("hello world\n");
4455         ])], USE_LD=$use_ld, [])
4456     if test -n "$USE_LD"; then
4457         AC_MSG_RESULT( yes )
4458         use_ld_ok=yes
4459     else
4460         if test -n "$use_ld_fail_if_error"; then
4461             AC_MSG_ERROR( no )
4462         else
4463             AC_MSG_RESULT( no )
4464         fi
4465     fi
4466     if test -n "$use_ld_ok"; then
4467         dnl keep the value of LDFLAGS
4468         return 0
4469     fi
4470     LDFLAGS="$use_ld_ldflags_save"
4471     return 1
4473 USE_LD=
4474 if test "$enable_ld" != "no"; then
4475     if test "$GCC" = "yes"; then
4476         if test -n "$enable_ld"; then
4477             check_use_ld "$enable_ld" fail_if_error
4478         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4479             dnl non-debug builds default to the default linker
4480             true
4481         elif test -n "$COM_IS_CLANG"; then
4482             check_use_ld lld
4483             if test $? -ne 0; then
4484                 check_use_ld gold
4485             fi
4486         else
4487             # For gcc first try gold, new versions also support lld.
4488             check_use_ld gold
4489             if test $? -ne 0; then
4490                 check_use_ld lld
4491             fi
4492         fi
4493         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4494         rm conftest.out
4495         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4496         if test -z "$ld_used"; then
4497             ld_used="unknown"
4498         fi
4499         AC_MSG_CHECKING([for linker that is used])
4500         AC_MSG_RESULT([$ld_used])
4501         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4502             if echo "$ld_used" | grep -q "^GNU ld"; then
4503                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4504                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4505             fi
4506         fi
4507     else
4508         if test "$enable_ld" = "yes"; then
4509             AC_MSG_ERROR([--enable-ld not supported])
4510         fi
4511     fi
4513 AC_SUBST(USE_LD)
4515 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4516 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4517     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4518     bsymbolic_functions_ldflags_save=$LDFLAGS
4519     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4520     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4521 #include <stdio.h>
4522         ],[
4523 printf ("hello world\n");
4524         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4525     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4526         AC_MSG_RESULT( found )
4527     else
4528         AC_MSG_RESULT( not found )
4529     fi
4530     LDFLAGS=$bsymbolic_functions_ldflags_save
4532 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4534 LD_GC_SECTIONS=
4535 if test "$GCC" = "yes"; then
4536     for flag in "--gc-sections" "-dead_strip"; do
4537         AC_MSG_CHECKING([for $flag linker support])
4538         ldflags_save=$LDFLAGS
4539         LDFLAGS="$LDFLAGS -Wl,$flag"
4540         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4541 #include <stdio.h>
4542             ],[
4543 printf ("hello world\n");
4544             ])],[
4545             LD_GC_SECTIONS="-Wl,$flag"
4546             AC_MSG_RESULT( found )
4547             ], [
4548             AC_MSG_RESULT( not found )
4549             ])
4550         LDFLAGS=$ldflags_save
4551         if test -n "$LD_GC_SECTIONS"; then
4552             break
4553         fi
4554     done
4556 AC_SUBST(LD_GC_SECTIONS)
4558 HAVE_GSPLIT_DWARF=
4559 if test "$enable_split_debug" != no; then
4560     use_split_debug=
4561     if test -n "$ENABLE_LTO"; then
4562         true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4563     elif test "$enable_split_debug" = yes; then
4564         use_split_debug=1
4565     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4566     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4567         use_split_debug=1
4568     fi
4569     if test -n "$use_split_debug"; then
4570         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4571         save_CFLAGS=$CFLAGS
4572         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4573         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4574         CFLAGS=$save_CFLAGS
4575         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4576             AC_MSG_RESULT([yes])
4577         else
4578             if test "$enable_split_debug" = yes; then
4579                 AC_MSG_ERROR([no])
4580             else
4581                 AC_MSG_RESULT([no])
4582             fi
4583         fi
4584     fi
4585     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4586         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4587         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4588     fi
4590 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4592 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4593 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4594 save_CFLAGS=$CFLAGS
4595 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4596 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4597 CFLAGS=$save_CFLAGS
4598 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4599     AC_MSG_RESULT([yes])
4600 else
4601     AC_MSG_RESULT([no])
4603 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4605 ENABLE_GDB_INDEX=
4606 if test "$enable_gdb_index" != "no"; then
4607     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4608     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4609         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4610         save_CFLAGS=$CFLAGS
4611         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4612         have_ggnu_pubnames=
4613         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4614         if test "$have_ggnu_pubnames" != "TRUE"; then
4615             if test "$enable_gdb_index" = "yes"; then
4616                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4617             else
4618                 AC_MSG_RESULT( no )
4619             fi
4620         else
4621             AC_MSG_RESULT( yes )
4622             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4623             ldflags_save=$LDFLAGS
4624             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4625             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4626 #include <stdio.h>
4627                 ],[
4628 printf ("hello world\n");
4629                 ])], ENABLE_GDB_INDEX=TRUE, [])
4630             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4631                 AC_MSG_RESULT( yes )
4632             else
4633                 if test "$enable_gdb_index" = "yes"; then
4634                     AC_MSG_ERROR( no )
4635                 else
4636                     AC_MSG_RESULT( no )
4637                 fi
4638             fi
4639             LDFLAGS=$ldflags_save
4640         fi
4641         CFLAGS=$save_CFLAGS
4642         fi
4643     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4644         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4645         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4646     fi
4648 AC_SUBST(ENABLE_GDB_INDEX)
4650 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4651     enable_sal_log=yes
4653 if test "$enable_sal_log" = yes; then
4654     ENABLE_SAL_LOG=TRUE
4656 AC_SUBST(ENABLE_SAL_LOG)
4658 dnl Check for enable symbols option
4659 dnl ===================================================================
4660 AC_MSG_CHECKING([whether to generate debug information])
4661 if test -z "$enable_symbols"; then
4662     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4663         enable_symbols=yes
4664     else
4665         enable_symbols=no
4666     fi
4668 if test "$enable_symbols" = yes; then
4669     ENABLE_SYMBOLS_FOR=all
4670     AC_MSG_RESULT([yes])
4671 elif test "$enable_symbols" = no; then
4672     ENABLE_SYMBOLS_FOR=
4673     AC_MSG_RESULT([no])
4674 else
4675     # Selective debuginfo.
4676     ENABLE_SYMBOLS_FOR="$enable_symbols"
4677     AC_MSG_RESULT([for "$enable_symbols"])
4679 AC_SUBST(ENABLE_SYMBOLS_FOR)
4681 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4682     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4683     AC_MSG_CHECKING([whether enough memory is available for linking])
4684     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4685     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4686     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4687         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4688     else
4689         AC_MSG_RESULT([yes])
4690     fi
4693 ENABLE_OPTIMIZED=
4694 ENABLE_OPTIMIZED_DEBUG=
4695 AC_MSG_CHECKING([whether to compile with optimization flags])
4696 if test -z "$enable_optimized"; then
4697     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4698         enable_optimized=no
4699     else
4700         enable_optimized=yes
4701     fi
4703 if test "$enable_optimized" = yes; then
4704     ENABLE_OPTIMIZED=TRUE
4705     AC_MSG_RESULT([yes])
4706 elif test "$enable_optimized" = debug; then
4707     ENABLE_OPTIMIZED_DEBUG=TRUE
4708     AC_MSG_RESULT([yes (debug)])
4709     HAVE_GCC_OG=
4710     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4711         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4712         save_CFLAGS=$CFLAGS
4713         CFLAGS="$CFLAGS -Werror -Og"
4714         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4715         CFLAGS=$save_CFLAGS
4716         if test "$HAVE_GCC_OG" = "TRUE"; then
4717             AC_MSG_RESULT([yes])
4718         else
4719             AC_MSG_RESULT([no])
4720         fi
4721     fi
4722     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4723         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4724     fi
4725 else
4726     AC_MSG_RESULT([no])
4728 AC_SUBST(ENABLE_OPTIMIZED)
4729 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4732 # determine CPUNAME, OS, ...
4734 case "$host_os" in
4736 aix*)
4737     COM=GCC
4738     CPUNAME=POWERPC
4739     OS=AIX
4740     RTL_OS=AIX
4741     RTL_ARCH=PowerPC
4742     PLATFORMID=aix_powerpc
4743     P_SEP=:
4744     ;;
4746 cygwin*|wsl*)
4747     # Already handled
4748     ;;
4750 darwin*|macos*)
4751     COM=GCC
4752     OS=MACOSX
4753     RTL_OS=MacOSX
4754     P_SEP=:
4756     case "$host_cpu" in
4757     aarch64|arm64)
4758         if test "$enable_ios_simulator" = "yes"; then
4759             OS=iOS
4760         else
4761             CPUNAME=AARCH64
4762             RTL_ARCH=AARCH64
4763             PLATFORMID=macosx_aarch64
4764         fi
4765         ;;
4766     x86_64)
4767         if test "$enable_ios_simulator" = "yes"; then
4768             OS=iOS
4769         fi
4770         CPUNAME=X86_64
4771         RTL_ARCH=X86_64
4772         PLATFORMID=macosx_x86_64
4773         ;;
4774     *)
4775         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4776         ;;
4777     esac
4778     ;;
4780 ios*)
4781     COM=GCC
4782     OS=iOS
4783     RTL_OS=iOS
4784     P_SEP=:
4786     case "$host_cpu" in
4787     aarch64|arm64)
4788         if test "$enable_ios_simulator" = "yes"; then
4789             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4790         fi
4791         ;;
4792     *)
4793         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4794         ;;
4795     esac
4796     CPUNAME=AARCH64
4797     RTL_ARCH=AARCH64
4798     PLATFORMID=ios_arm64
4799     ;;
4801 dragonfly*)
4802     COM=GCC
4803     OS=DRAGONFLY
4804     RTL_OS=DragonFly
4805     P_SEP=:
4807     case "$host_cpu" in
4808     i*86)
4809         CPUNAME=INTEL
4810         RTL_ARCH=x86
4811         PLATFORMID=dragonfly_x86
4812         ;;
4813     x86_64)
4814         CPUNAME=X86_64
4815         RTL_ARCH=X86_64
4816         PLATFORMID=dragonfly_x86_64
4817         ;;
4818     *)
4819         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4820         ;;
4821     esac
4822     ;;
4824 freebsd*)
4825     COM=GCC
4826     RTL_OS=FreeBSD
4827     OS=FREEBSD
4828     P_SEP=:
4830     case "$host_cpu" in
4831     aarch64)
4832         CPUNAME=AARCH64
4833         PLATFORMID=freebsd_aarch64
4834         RTL_ARCH=AARCH64
4835         ;;
4836     i*86)
4837         CPUNAME=INTEL
4838         RTL_ARCH=x86
4839         PLATFORMID=freebsd_x86
4840         ;;
4841     x86_64|amd64)
4842         CPUNAME=X86_64
4843         RTL_ARCH=X86_64
4844         PLATFORMID=freebsd_x86_64
4845         ;;
4846     powerpc64)
4847         CPUNAME=POWERPC64
4848         RTL_ARCH=PowerPC_64
4849         PLATFORMID=freebsd_powerpc64
4850         ;;
4851     powerpc|powerpcspe)
4852         CPUNAME=POWERPC
4853         RTL_ARCH=PowerPC
4854         PLATFORMID=freebsd_powerpc
4855         ;;
4856     *)
4857         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4858         ;;
4859     esac
4860     ;;
4862 haiku*)
4863     COM=GCC
4864     GUIBASE=haiku
4865     RTL_OS=Haiku
4866     OS=HAIKU
4867     P_SEP=:
4869     case "$host_cpu" in
4870     i*86)
4871         CPUNAME=INTEL
4872         RTL_ARCH=x86
4873         PLATFORMID=haiku_x86
4874         ;;
4875     x86_64|amd64)
4876         CPUNAME=X86_64
4877         RTL_ARCH=X86_64
4878         PLATFORMID=haiku_x86_64
4879         ;;
4880     *)
4881         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4882         ;;
4883     esac
4884     ;;
4886 kfreebsd*)
4887     COM=GCC
4888     OS=LINUX
4889     RTL_OS=kFreeBSD
4890     P_SEP=:
4892     case "$host_cpu" in
4894     i*86)
4895         CPUNAME=INTEL
4896         RTL_ARCH=x86
4897         PLATFORMID=kfreebsd_x86
4898         ;;
4899     x86_64)
4900         CPUNAME=X86_64
4901         RTL_ARCH=X86_64
4902         PLATFORMID=kfreebsd_x86_64
4903         ;;
4904     *)
4905         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4906         ;;
4907     esac
4908     ;;
4910 linux-gnu*|linux-musl*)
4911     COM=GCC
4912     OS=LINUX
4913     RTL_OS=Linux
4914     P_SEP=:
4916     case "$host_cpu" in
4918     aarch64)
4919         CPUNAME=AARCH64
4920         PLATFORMID=linux_aarch64
4921         RTL_ARCH=AARCH64
4922         EPM_FLAGS="-a arm64"
4923         ;;
4924     alpha)
4925         CPUNAME=AXP
4926         RTL_ARCH=ALPHA
4927         PLATFORMID=linux_alpha
4928         ;;
4929     arm*)
4930         CPUNAME=ARM
4931         EPM_FLAGS="-a arm"
4932         RTL_ARCH=ARM_EABI
4933         PLATFORMID=linux_arm_eabi
4934         case "$host_cpu" in
4935         arm*-linux)
4936             RTL_ARCH=ARM_OABI
4937             PLATFORMID=linux_arm_oabi
4938             ;;
4939         esac
4940         ;;
4941     hppa)
4942         CPUNAME=HPPA
4943         RTL_ARCH=HPPA
4944         EPM_FLAGS="-a hppa"
4945         PLATFORMID=linux_hppa
4946         ;;
4947     i*86)
4948         CPUNAME=INTEL
4949         RTL_ARCH=x86
4950         PLATFORMID=linux_x86
4951         ;;
4952     ia64)
4953         CPUNAME=IA64
4954         RTL_ARCH=IA64
4955         PLATFORMID=linux_ia64
4956         ;;
4957     mips)
4958         CPUNAME=GODSON
4959         RTL_ARCH=MIPS_EB
4960         EPM_FLAGS="-a mips"
4961         PLATFORMID=linux_mips_eb
4962         ;;
4963     mips64)
4964         CPUNAME=GODSON64
4965         RTL_ARCH=MIPS64_EB
4966         EPM_FLAGS="-a mips64"
4967         PLATFORMID=linux_mips64_eb
4968         ;;
4969     mips64el)
4970         CPUNAME=GODSON64
4971         RTL_ARCH=MIPS64_EL
4972         EPM_FLAGS="-a mips64el"
4973         PLATFORMID=linux_mips64_el
4974         ;;
4975     mipsel)
4976         CPUNAME=GODSON
4977         RTL_ARCH=MIPS_EL
4978         EPM_FLAGS="-a mipsel"
4979         PLATFORMID=linux_mips_el
4980         ;;
4981     m68k)
4982         CPUNAME=M68K
4983         RTL_ARCH=M68K
4984         PLATFORMID=linux_m68k
4985         ;;
4986     powerpc)
4987         CPUNAME=POWERPC
4988         RTL_ARCH=PowerPC
4989         PLATFORMID=linux_powerpc
4990         ;;
4991     powerpc64)
4992         CPUNAME=POWERPC64
4993         RTL_ARCH=PowerPC_64
4994         PLATFORMID=linux_powerpc64
4995         ;;
4996     powerpc64le)
4997         CPUNAME=POWERPC64
4998         RTL_ARCH=PowerPC_64_LE
4999         PLATFORMID=linux_powerpc64_le
5000         ;;
5001     sparc)
5002         CPUNAME=SPARC
5003         RTL_ARCH=SPARC
5004         PLATFORMID=linux_sparc
5005         ;;
5006     sparc64)
5007         CPUNAME=SPARC64
5008         RTL_ARCH=SPARC64
5009         PLATFORMID=linux_sparc64
5010         ;;
5011     s390)
5012         CPUNAME=S390
5013         RTL_ARCH=S390
5014         PLATFORMID=linux_s390
5015         ;;
5016     s390x)
5017         CPUNAME=S390X
5018         RTL_ARCH=S390x
5019         PLATFORMID=linux_s390x
5020         ;;
5021     x86_64)
5022         CPUNAME=X86_64
5023         RTL_ARCH=X86_64
5024         PLATFORMID=linux_x86_64
5025         ;;
5026     *)
5027         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5028         ;;
5029     esac
5030     ;;
5032 linux-android*)
5033     COM=GCC
5034     OS=ANDROID
5035     RTL_OS=Android
5036     P_SEP=:
5038     case "$host_cpu" in
5040     arm|armel)
5041         CPUNAME=ARM
5042         RTL_ARCH=ARM_EABI
5043         PLATFORMID=android_arm_eabi
5044         ;;
5045     aarch64)
5046         CPUNAME=AARCH64
5047         RTL_ARCH=AARCH64
5048         PLATFORMID=android_aarch64
5049         ;;
5050     i*86)
5051         CPUNAME=INTEL
5052         RTL_ARCH=x86
5053         PLATFORMID=android_x86
5054         ;;
5055     x86_64)
5056         CPUNAME=X86_64
5057         RTL_ARCH=X86_64
5058         PLATFORMID=android_x86_64
5059         ;;
5060     *)
5061         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5062         ;;
5063     esac
5064     ;;
5066 *netbsd*)
5067     COM=GCC
5068     OS=NETBSD
5069     RTL_OS=NetBSD
5070     P_SEP=:
5072     case "$host_cpu" in
5073     i*86)
5074         CPUNAME=INTEL
5075         RTL_ARCH=x86
5076         PLATFORMID=netbsd_x86
5077         ;;
5078     powerpc)
5079         CPUNAME=POWERPC
5080         RTL_ARCH=PowerPC
5081         PLATFORMID=netbsd_powerpc
5082         ;;
5083     sparc)
5084         CPUNAME=SPARC
5085         RTL_ARCH=SPARC
5086         PLATFORMID=netbsd_sparc
5087         ;;
5088     x86_64)
5089         CPUNAME=X86_64
5090         RTL_ARCH=X86_64
5091         PLATFORMID=netbsd_x86_64
5092         ;;
5093     *)
5094         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5095         ;;
5096     esac
5097     ;;
5099 openbsd*)
5100     COM=GCC
5101     OS=OPENBSD
5102     RTL_OS=OpenBSD
5103     P_SEP=:
5105     case "$host_cpu" in
5106     i*86)
5107         CPUNAME=INTEL
5108         RTL_ARCH=x86
5109         PLATFORMID=openbsd_x86
5110         ;;
5111     x86_64)
5112         CPUNAME=X86_64
5113         RTL_ARCH=X86_64
5114         PLATFORMID=openbsd_x86_64
5115         ;;
5116     *)
5117         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5118         ;;
5119     esac
5120     SOLARINC="$SOLARINC -I/usr/local/include"
5121     ;;
5123 solaris*)
5124     COM=GCC
5125     OS=SOLARIS
5126     RTL_OS=Solaris
5127     P_SEP=:
5129     case "$host_cpu" in
5130     i*86)
5131         CPUNAME=INTEL
5132         RTL_ARCH=x86
5133         PLATFORMID=solaris_x86
5134         ;;
5135     sparc)
5136         CPUNAME=SPARC
5137         RTL_ARCH=SPARC
5138         PLATFORMID=solaris_sparc
5139         ;;
5140     sparc64)
5141         CPUNAME=SPARC64
5142         RTL_ARCH=SPARC64
5143         PLATFORMID=solaris_sparc64
5144         ;;
5145     *)
5146         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5147         ;;
5148     esac
5149     SOLARINC="$SOLARINC -I/usr/local/include"
5150     ;;
5152 emscripten*)
5153     COM=GCC
5154     OS=EMSCRIPTEN
5155     RTL_OS=Emscripten
5156     P_SEP=:
5158     case "$host_cpu" in
5159     wasm32|wasm64)
5160         ;;
5161     *)
5162         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5163         ;;
5164     esac
5165     CPUNAME=INTEL
5166     RTL_ARCH=x86
5167     PLATFORMID=linux_x86
5168     ;;
5171     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5172     ;;
5173 esac
5175 if test "$with_x" = "no"; then
5176     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5179 DISABLE_GUI=""
5180 if test "$enable_gui" = "no"; then
5181     if test "$using_x11" != yes; then
5182         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5183     fi
5184     USING_X11=
5185     DISABLE_GUI=TRUE
5186 else
5187     AC_DEFINE(HAVE_FEATURE_UI)
5189 AC_SUBST(DISABLE_GUI)
5191 if test "$using_x11" = yes; then
5192     if test "$USING_X11" = TRUE; then
5193         AC_DEFINE(USING_X11)
5194     else
5195         disable_x11_tests
5196     fi
5197 else
5198     if test "$USING_X11" = TRUE; then
5199         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5200     fi
5203 WORKDIR="${BUILDDIR}/workdir"
5204 INSTDIR="${BUILDDIR}/instdir"
5205 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5206 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5207 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5208 AC_SUBST(COM)
5209 AC_SUBST(CPUNAME)
5210 AC_SUBST(RTL_OS)
5211 AC_SUBST(RTL_ARCH)
5212 AC_SUBST(EPM_FLAGS)
5213 AC_SUBST(USING_X11)
5214 AC_SUBST([INSTDIR])
5215 AC_SUBST([INSTROOT])
5216 AC_SUBST([INSTROOTBASE])
5217 AC_SUBST(OS)
5218 AC_SUBST(P_SEP)
5219 AC_SUBST(WORKDIR)
5220 AC_SUBST(PLATFORMID)
5221 AC_SUBST(WINDOWS_X64)
5222 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5224 if test "$OS" = WNT -a "$COM" = MSC; then
5225     case "$CPUNAME" in
5226     INTEL) CPPU_ENV=msci ;;
5227     X86_64) CPPU_ENV=mscx ;;
5228     AARCH64) CPPU_ENV=msca ;;
5229     *)
5230         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5231         ;;
5232     esac
5233 else
5234     CPPU_ENV=gcc3
5236 AC_SUBST(CPPU_ENV)
5238 dnl ===================================================================
5239 dnl Test which package format to use
5240 dnl ===================================================================
5241 AC_MSG_CHECKING([which package format to use])
5242 if test -n "$with_package_format" -a "$with_package_format" != no; then
5243     for i in $with_package_format; do
5244         case "$i" in
5245         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5246             ;;
5247         *)
5248             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5249 aix - AIX software distribution
5250 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5251 deb - Debian software distribution
5252 pkg - Solaris software distribution
5253 rpm - RedHat software distribution
5255 LibreOffice additionally supports:
5256 archive - .tar.gz or .zip
5257 dmg - macOS .dmg
5258 installed - installation tree
5259 msi - Windows .msi
5260         ])
5261             ;;
5262         esac
5263     done
5264     # fakeroot is needed to ensure correct file ownerships/permissions
5265     # inside deb packages and tar archives created on Linux and Solaris.
5266     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5267         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5268         if test "$FAKEROOT" = "no"; then
5269             AC_MSG_ERROR(
5270                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5271         fi
5272     fi
5273     PKGFORMAT="$with_package_format"
5274     AC_MSG_RESULT([$PKGFORMAT])
5275 else
5276     PKGFORMAT=
5277     AC_MSG_RESULT([none])
5279 AC_SUBST(PKGFORMAT)
5281 dnl ===================================================================
5282 dnl handle help related options
5284 dnl If you change help related options, please update README.help
5285 dnl ===================================================================
5287 ENABLE_HTMLHELP=
5288 HELP_OMINDEX_PAGE=
5289 HELP_ONLINE=
5290 WITH_HELPPACKS=
5292 AC_MSG_CHECKING([which help to build])
5293 if test -n "$with_help" -a "$with_help" != "no"; then
5294     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5295     BUILD_TYPE="$BUILD_TYPE HELP"
5296     case "$with_help" in
5297     "html")
5298         ENABLE_HTMLHELP=TRUE
5299         WITH_HELPPACKS=TRUE
5300         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5301         AC_MSG_RESULT([HTML (local)])
5302         ;;
5303     "online")
5304         ENABLE_HTMLHELP=TRUE
5305         HELP_ONLINE=TRUE
5306         AC_MSG_RESULT([HTML (online)])
5307         ;;
5308     yes)
5309         WITH_HELPPACKS=TRUE
5310         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5311         AC_MSG_RESULT([XML (local)])
5312         ;;
5313     *)
5314         AC_MSG_ERROR([Unknown --with-help=$with_help])
5315         ;;
5316     esac
5317 else
5318     AC_MSG_RESULT([no])
5321 AC_MSG_CHECKING([if we need to build the help index tooling])
5322 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5323     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5324     AC_MSG_RESULT([yes])
5325 else
5326     AC_MSG_RESULT([no])
5329 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5330 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5331     if test "$HELP_ONLINE" != TRUE; then
5332         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5333     fi
5334     case "$with_omindex" in
5335     "server")
5336         HELP_OMINDEX_PAGE=TRUE
5337         AC_MSG_RESULT([SERVER])
5338         ;;
5339     "noxap")
5340         AC_MSG_RESULT([NOXAP])
5341         ;;
5342     *)
5343         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5344         ;;
5345     esac
5346 else
5347     AC_MSG_RESULT([no])
5350 AC_MSG_CHECKING([whether to include the XML-help support])
5351 if test "$enable_xmlhelp" = yes; then
5352     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5353     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5354     AC_MSG_RESULT([yes])
5355 else
5356     if test "$with_help" = yes; then
5357         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5358     fi
5359     AC_MSG_RESULT([no])
5362 dnl Test whether to integrate helppacks into the product's installer
5363 AC_MSG_CHECKING([for helppack integration])
5364 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5365     AC_MSG_RESULT([no integration])
5366 else
5367     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5368     AC_MSG_RESULT([integration])
5371 AC_SUBST([ENABLE_HTMLHELP])
5372 AC_SUBST([HELP_OMINDEX_PAGE])
5373 AC_SUBST([HELP_ONLINE])
5374 # WITH_HELPPACKS is used only in configure
5376 dnl ===================================================================
5377 dnl Set up a different compiler to produce tools to run on the build
5378 dnl machine when doing cross-compilation
5379 dnl ===================================================================
5381 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5382 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5383 if test "$cross_compiling" = "yes"; then
5384     AC_MSG_CHECKING([for BUILD platform configuration])
5385     echo
5386     rm -rf CONF-FOR-BUILD config_build.mk
5387     mkdir CONF-FOR-BUILD
5388     # Here must be listed all files needed when running the configure script. In particular, also
5389     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5390     # keep them in the same order as there.
5391     (cd $SRC_ROOT && tar cf - \
5392         config.guess \
5393         bin/get_config_variables \
5394         solenv/bin/getcompver.awk \
5395         solenv/inc/langlist.mk \
5396         download.lst \
5397         config_host.mk.in \
5398         config_host_lang.mk.in \
5399         Makefile.in \
5400         bin/bffvalidator.sh.in \
5401         bin/odfvalidator.sh.in \
5402         bin/officeotron.sh.in \
5403         hardened_runtime.xcent.in \
5404         instsetoo_native/util/openoffice.lst.in \
5405         config_host/*.in \
5406         sysui/desktop/macosx/Info.plist.in \
5407         .vscode/vs-code-template.code-workspace.in \
5408         ) \
5409     | (cd CONF-FOR-BUILD && tar xf -)
5410     cp configure CONF-FOR-BUILD
5411     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5412     (
5413     unset COM USING_X11 OS CPUNAME
5414     unset CC CXX SYSBASE CFLAGS
5415     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5416     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5417     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5418     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5419     if test -n "$CC_FOR_BUILD"; then
5420         export CC="$CC_FOR_BUILD"
5421         CC_BASE=`first_arg_basename "$CC"`
5422     fi
5423     if test -n "$CXX_FOR_BUILD"; then
5424         export CXX="$CXX_FOR_BUILD"
5425         CXX_BASE=`first_arg_basename "$CXX"`
5426     fi
5427     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5428     cd CONF-FOR-BUILD
5430     # Handle host configuration, which affects the cross-toolset too
5431     sub_conf_opts=""
5432     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5433     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5434     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5435     if test -n "$ENABLE_JAVA"; then
5436         case "$_os" in
5437         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5438         Android)
5439             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5440             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5441             ;;
5442         *)
5443             if test -z "$with_jdk_home"; then
5444                 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.])
5445             fi
5446             ;;
5447         esac
5448     else
5449         sub_conf_opts="$sub_conf_opts --without-java"
5450     fi
5451     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5452     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5453     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5454     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5455     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5456     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5458     # Don't bother having configure look for stuff not needed for the build platform anyway
5459     sub_conf_defaults=" \
5460         --build="$build_alias" \
5461         --disable-cairo-canvas \
5462         --disable-cups \
5463         --disable-firebird-sdbc \
5464         --disable-gpgmepp \
5465         --disable-gstreamer-1-0 \
5466         --disable-gtk3 \
5467         --disable-gtk4 \
5468         --disable-mariadb-sdbc \
5469         --disable-nss \
5470         --disable-online-update \
5471         --disable-opencl \
5472         --disable-pdfimport \
5473         --disable-postgresql-sdbc \
5474         --disable-skia \
5475         --enable-icecream="$enable_icecream" \
5476         --without-doxygen \
5477         --without-webdav \
5478         --with-parallelism="$with_parallelism" \
5479         --with-theme="$with_theme" \
5480         --with-tls=openssl \
5482     echo "    Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5483     ./configure \
5484         $sub_conf_defaults \
5485         $sub_conf_opts \
5486         $with_build_platform_configure_options \
5487         --srcdir=$srcdir \
5488         2>&1 | sed -e 's/^/    /'
5489     if test [${PIPESTATUS[0]}] -ne 0; then
5490         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5491     fi
5493     # filter permitted build targets
5494     PERMITTED_BUILD_TARGETS="
5495         AVMEDIA
5496         BOOST
5497         CAIRO
5498         CLUCENE
5499         CUCKOO
5500         CURL
5501         DBCONNECTIVITY
5502         DESKTOP
5503         DYNLOADING
5504         EPOXY
5505         EXPAT
5506         GLM
5507         GRAPHITE
5508         HARFBUZZ
5509         HELPTOOLS
5510         ICU
5511         LCMS2
5512         LIBJPEG_TURBO
5513         LIBLANGTAG
5514         LibO
5515         LIBFFI
5516         LIBPN
5517         LIBXML2
5518         LIBXSLT
5519         MDDS
5520         NATIVE
5521         OPENSSL
5522         ORCUS
5523         PYTHON
5524         SCRIPTING
5525         ZLIB
5527     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5528     # newlined lists, to use grep as a filter
5529     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5530     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5531     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5532     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5534     cp config_host.mk ../config_build.mk
5535     cp config_host_lang.mk ../config_build_lang.mk
5536     mv config.log ../config.Build.log
5537     mkdir -p ../config_build
5538     mv config_host/*.h ../config_build
5539     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5541     # all these will get a _FOR_BUILD postfix
5542     DIRECT_FOR_BUILD_SETTINGS="
5543         CC
5544         CPPU_ENV
5545         CXX
5546         ILIB
5547         JAVA_HOME
5548         JAVAIFLAGS
5549         JDK
5550         LIBO_BIN_FOLDER
5551         LIBO_LIB_FOLDER
5552         LIBO_URE_LIB_FOLDER
5553         LIBO_URE_MISC_FOLDER
5554         OS
5555         SDKDIRNAME
5556         SYSTEM_LIBXML
5557         SYSTEM_LIBXSLT
5559     # these overwrite host config with build config
5560     OVERWRITING_SETTINGS="
5561         ANT
5562         ANT_HOME
5563         ANT_LIB
5564         HSQLDB_USE_JDBC_4_1
5565         JAVA_CLASSPATH_NOT_SET
5566         JAVA_SOURCE_VER
5567         JAVA_TARGET_VER
5568         JAVACFLAGS
5569         JAVACOMPILER
5570         JAVADOC
5571         JAVADOCISGJDOC
5573     # these need some special handling
5574     EXTRA_HANDLED_SETTINGS="
5575         INSTDIR
5576         INSTROOT
5577         PATH
5578         WORKDIR
5580     OLD_PATH=$PATH
5581     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5582     BUILD_PATH=$PATH
5583     PATH=$OLD_PATH
5585     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5586     echo "$line" >>build-config
5588     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5589         VV='$'$V
5590         VV=`eval "echo $VV"`
5591         if test -n "$VV"; then
5592             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5593             echo "$line" >>build-config
5594         fi
5595     done
5597     for V in $OVERWRITING_SETTINGS; do
5598         VV='$'$V
5599         VV=`eval "echo $VV"`
5600         if test -n "$VV"; then
5601             line=${V}='${'${V}:-$VV'}'
5602             echo "$line" >>build-config
5603         fi
5604     done
5606     for V in INSTDIR INSTROOT WORKDIR; do
5607         VV='$'$V
5608         VV=`eval "echo $VV"`
5609         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5610         if test -n "$VV"; then
5611             line="${V}_FOR_BUILD='$VV'"
5612             echo "$line" >>build-config
5613         fi
5614     done
5616     )
5617     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5618     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])
5619     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5620              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5622     eval `cat CONF-FOR-BUILD/build-config`
5624     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5626     rm -rf CONF-FOR-BUILD
5627 else
5628     OS_FOR_BUILD="$OS"
5629     CC_FOR_BUILD="$CC"
5630     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5631     CXX_FOR_BUILD="$CXX"
5632     INSTDIR_FOR_BUILD="$INSTDIR"
5633     INSTROOT_FOR_BUILD="$INSTROOT"
5634     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5635     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5636     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5637     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5638     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5639     WORKDIR_FOR_BUILD="$WORKDIR"
5641 AC_SUBST(OS_FOR_BUILD)
5642 AC_SUBST(INSTDIR_FOR_BUILD)
5643 AC_SUBST(INSTROOT_FOR_BUILD)
5644 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5645 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5646 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5647 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5648 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5649 AC_SUBST(WORKDIR_FOR_BUILD)
5650 AC_SUBST(CC_FOR_BUILD)
5651 AC_SUBST(CXX_FOR_BUILD)
5652 AC_SUBST(CPPU_ENV_FOR_BUILD)
5654 dnl ===================================================================
5655 dnl Check for syslog header
5656 dnl ===================================================================
5657 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5659 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5660 dnl ===================================================================
5661 AC_MSG_CHECKING([whether to turn warnings to errors])
5662 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5663     ENABLE_WERROR="TRUE"
5664     PYTHONWARNINGS="error"
5665     AC_MSG_RESULT([yes])
5666 else
5667     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5668         ENABLE_WERROR="TRUE"
5669         PYTHONWARNINGS="error"
5670         AC_MSG_RESULT([yes])
5671     else
5672         AC_MSG_RESULT([no])
5673     fi
5675 AC_SUBST(ENABLE_WERROR)
5676 AC_SUBST(PYTHONWARNINGS)
5678 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5679 dnl ===================================================================
5680 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5681 if test -z "$enable_assert_always_abort"; then
5682    if test "$ENABLE_DEBUG" = TRUE; then
5683        enable_assert_always_abort=yes
5684    else
5685        enable_assert_always_abort=no
5686    fi
5688 if test "$enable_assert_always_abort" = "yes"; then
5689     ASSERT_ALWAYS_ABORT="TRUE"
5690     AC_MSG_RESULT([yes])
5691 else
5692     ASSERT_ALWAYS_ABORT="FALSE"
5693     AC_MSG_RESULT([no])
5695 AC_SUBST(ASSERT_ALWAYS_ABORT)
5697 # Determine whether to use ooenv for the instdir installation
5698 # ===================================================================
5699 if test $_os != "WINNT" -a $_os != "Darwin"; then
5700     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5701     if test -z "$enable_ooenv"; then
5702         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5703             enable_ooenv=yes
5704         else
5705             enable_ooenv=no
5706         fi
5707     fi
5708     if test "$enable_ooenv" = "no"; then
5709         AC_MSG_RESULT([no])
5710     else
5711         ENABLE_OOENV="TRUE"
5712         AC_MSG_RESULT([yes])
5713     fi
5715 AC_SUBST(ENABLE_OOENV)
5717 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5718     if test "$enable_qt5" = "no"; then
5719         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5720     else
5721         enable_qt5=yes
5722     fi
5725 dnl ===================================================================
5726 dnl check for cups support
5727 dnl ===================================================================
5729 AC_MSG_CHECKING([whether to enable CUPS support])
5730 if test "$test_cups" = yes -a "$enable_cups" != no; then
5731     ENABLE_CUPS=TRUE
5732     AC_MSG_RESULT([yes])
5734     AC_MSG_CHECKING([whether cups support is present])
5735     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5736     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5737     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5738         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5739     fi
5740 else
5741     AC_MSG_RESULT([no])
5744 AC_SUBST(ENABLE_CUPS)
5746 # fontconfig checks
5747 if test "$using_freetype_fontconfig" = yes; then
5748     AC_MSG_CHECKING([which fontconfig to use])
5750 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5751     AC_MSG_RESULT([external])
5752     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5753     SYSTEM_FONTCONFIG=TRUE
5754     FilterLibs "${FONTCONFIG_LIBS}"
5755     FONTCONFIG_LIBS="${filteredlibs}"
5756 elif test "$using_freetype_fontconfig" = yes; then
5757     AC_MSG_RESULT([internal])
5758     BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5760 AC_SUBST(FONTCONFIG_CFLAGS)
5761 AC_SUBST(FONTCONFIG_LIBS)
5762 AC_SUBST([SYSTEM_FONTCONFIG])
5764 dnl whether to find & fetch external tarballs?
5765 dnl ===================================================================
5766 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5767    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5768        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5769    else
5770        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5771    fi
5773 if test -z "$TARFILE_LOCATION"; then
5774     if test -d "$SRC_ROOT/src" ; then
5775         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5776         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5777     fi
5778     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5779 else
5780     AbsolutePath "$TARFILE_LOCATION"
5781     PathFormat "${absolute_path}"
5782     TARFILE_LOCATION="${formatted_path}"
5784 AC_SUBST(TARFILE_LOCATION)
5786 AC_MSG_CHECKING([whether we want to fetch tarballs])
5787 if test "$enable_fetch_external" != "no"; then
5788     if test "$with_all_tarballs" = "yes"; then
5789         AC_MSG_RESULT([yes, all of them])
5790         DO_FETCH_TARBALLS="ALL"
5791     else
5792         AC_MSG_RESULT([yes, if we use them])
5793         DO_FETCH_TARBALLS="TRUE"
5794     fi
5795 else
5796     AC_MSG_RESULT([no])
5797     DO_FETCH_TARBALLS=
5799 AC_SUBST(DO_FETCH_TARBALLS)
5801 dnl Test whether to include MySpell dictionaries
5802 dnl ===================================================================
5803 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5804 if test "$with_myspell_dicts" = "yes"; then
5805     AC_MSG_RESULT([yes])
5806     WITH_MYSPELL_DICTS=TRUE
5807     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5808     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5809 else
5810     AC_MSG_RESULT([no])
5811     WITH_MYSPELL_DICTS=
5813 AC_SUBST(WITH_MYSPELL_DICTS)
5815 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5816 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5817     if test "$with_system_dicts" = yes; then
5818         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5819     fi
5820     with_system_dicts=no
5823 AC_MSG_CHECKING([whether to use dicts from external paths])
5824 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5825     AC_MSG_RESULT([yes])
5826     SYSTEM_DICTS=TRUE
5827     AC_MSG_CHECKING([for spelling dictionary directory])
5828     if test -n "$with_external_dict_dir"; then
5829         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5830     else
5831         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5832         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5833             DICT_SYSTEM_DIR=file:///usr/share/myspell
5834         fi
5835     fi
5836     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5837     AC_MSG_CHECKING([for hyphenation patterns directory])
5838     if test -n "$with_external_hyph_dir"; then
5839         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5840     else
5841         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5842     fi
5843     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5844     AC_MSG_CHECKING([for thesaurus directory])
5845     if test -n "$with_external_thes_dir"; then
5846         THES_SYSTEM_DIR=file://$with_external_thes_dir
5847     else
5848         THES_SYSTEM_DIR=file:///usr/share/mythes
5849     fi
5850     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5851 else
5852     AC_MSG_RESULT([no])
5853     SYSTEM_DICTS=
5855 AC_SUBST(SYSTEM_DICTS)
5856 AC_SUBST(DICT_SYSTEM_DIR)
5857 AC_SUBST(HYPH_SYSTEM_DIR)
5858 AC_SUBST(THES_SYSTEM_DIR)
5860 dnl ===================================================================
5861 dnl Precompiled headers.
5862 ENABLE_PCH=""
5863 AC_MSG_CHECKING([whether to enable pch feature])
5864 if test -z "$enable_pch"; then
5865     if test "$_os" = "WINNT"; then
5866         # Enabled by default on Windows.
5867         enable_pch=yes
5868         # never use [s]ccache on auto-enabled PCH builds, except if requested explicitely
5869         if test -z "$enable_ccache"; then
5870             CCACHE=""
5871         fi
5872     else
5873         enable_pch=no
5874     fi
5876 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5877     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5879 if test "$enable_pch" = "system"; then
5880     ENABLE_PCH="1"
5881     AC_MSG_RESULT([yes (system headers)])
5882 elif test "$enable_pch" = "base"; then
5883     ENABLE_PCH="2"
5884     AC_MSG_RESULT([yes (system and base headers)])
5885 elif test "$enable_pch" = "normal"; then
5886     ENABLE_PCH="3"
5887     AC_MSG_RESULT([yes (normal)])
5888 elif test "$enable_pch" = "full"; then
5889     ENABLE_PCH="4"
5890     AC_MSG_RESULT([yes (full)])
5891 elif test "$enable_pch" = "yes"; then
5892     # Pick a suitable default.
5893     if test "$GCC" = "yes"; then
5894         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5895         # while making the PCHs larger and rebuilds more likely.
5896         ENABLE_PCH="2"
5897         AC_MSG_RESULT([yes (system and base headers)])
5898     else
5899         # With MSVC the highest level makes a significant difference,
5900         # and it was the default when there used to be no PCH levels.
5901         ENABLE_PCH="4"
5902         AC_MSG_RESULT([yes (full)])
5903     fi
5904 elif test "$enable_pch" = "no"; then
5905     AC_MSG_RESULT([no])
5906 else
5907     AC_MSG_ERROR([Unknown value for --enable-pch])
5909 AC_SUBST(ENABLE_PCH)
5910 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5911 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5912     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5913     if test "$CCACHE_BIN" != "not found"; then
5914         AC_MSG_CHECKING([ccache version])
5915         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5916         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5917         AC_MSG_RESULT([$CCACHE_VERSION])
5918         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5919         if test "$CCACHE_NUMVER" -gt "030701"; then
5920             AC_MSG_RESULT([yes])
5921         else
5922             AC_MSG_RESULT([no (not newer than 3.7.1)])
5923             CCACHE_DEPEND_MODE=
5924         fi
5925     fi
5928 PCH_INSTANTIATE_TEMPLATES=
5929 if test -n "$ENABLE_PCH"; then
5930     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5931     save_CFLAGS=$CFLAGS
5932     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5933     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5934     CFLAGS=$save_CFLAGS
5935     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5936         AC_MSG_RESULT(yes)
5937     else
5938         AC_MSG_RESULT(no)
5939     fi
5941 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5943 BUILDING_PCH_WITH_OBJ=
5944 if test -n "$ENABLE_PCH"; then
5945     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5946     save_CFLAGS=$CFLAGS
5947     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5948     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5949     CFLAGS=$save_CFLAGS
5950     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5951         AC_MSG_RESULT(yes)
5952     else
5953         AC_MSG_RESULT(no)
5954     fi
5956 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5958 PCH_CODEGEN=
5959 PCH_NO_CODEGEN=
5960 fpch_prefix=
5961 if test "$COM" = MSC; then
5962     fpch_prefix="-Xclang "
5964 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5965     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
5966     save_CFLAGS=$CFLAGS
5967     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
5968     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5969         [
5970         PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
5971         PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
5972         ],[])
5973     CFLAGS=$save_CFLAGS
5974     if test -n "$PCH_CODEGEN"; then
5975         AC_MSG_RESULT(yes)
5976     else
5977         AC_MSG_RESULT(no)
5978     fi
5980 AC_SUBST(PCH_CODEGEN)
5981 AC_SUBST(PCH_NO_CODEGEN)
5982 PCH_DEBUGINFO=
5983 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5984     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
5985     save_CFLAGS=$CFLAGS
5986     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
5987     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
5988     CFLAGS=$save_CFLAGS
5989     if test -n "$PCH_DEBUGINFO"; then
5990         AC_MSG_RESULT(yes)
5991     else
5992         AC_MSG_RESULT(no)
5993     fi
5995 AC_SUBST(PCH_DEBUGINFO)
5997 TAB=`printf '\t'`
5999 AC_MSG_CHECKING([the GNU Make version])
6000 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6001 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6002 if test "$_make_longver" -ge "038200"; then
6003     AC_MSG_RESULT([$GNUMAKE $_make_version])
6005 elif test "$_make_longver" -ge "038100"; then
6006     if test "$build_os" = "cygwin"; then
6007         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6008     fi
6009     AC_MSG_RESULT([$GNUMAKE $_make_version])
6011     dnl ===================================================================
6012     dnl Search all the common names for sha1sum
6013     dnl ===================================================================
6014     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6015     if test -z "$SHA1SUM"; then
6016         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6017     elif test "$SHA1SUM" = "openssl"; then
6018         SHA1SUM="openssl sha1"
6019     fi
6020     AC_MSG_CHECKING([for GNU Make bug 20033])
6021     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6022     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6023 A := \$(wildcard *.a)
6025 .PHONY: all
6026 all: \$(A:.a=.b)
6027 <TAB>@echo survived bug20033.
6029 .PHONY: setup
6030 setup:
6031 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6033 define d1
6034 @echo lala \$(1)
6035 @sleep 1
6036 endef
6038 define d2
6039 @echo tyty \$(1)
6040 @sleep 1
6041 endef
6043 %.b : %.a
6044 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6045 <TAB>\$(call d1,\$(CHECKSUM)),\
6046 <TAB>\$(call d2,\$(CHECKSUM)))
6048     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6049         no_parallelism_make="YES"
6050         AC_MSG_RESULT([yes, disable parallelism])
6051     else
6052         AC_MSG_RESULT([no, keep parallelism enabled])
6053     fi
6054     rm -rf $TESTGMAKEBUG20033
6055 else
6056     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6059 # find if gnumake support file function
6060 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6061 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6062 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6063     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6065 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6066 \$(file >test.txt,Success )
6068 .PHONY: all
6069 all:
6070 <TAB>@cat test.txt
6073 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6074 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6075     HAVE_GNUMAKE_FILE_FUNC=TRUE
6076     AC_MSG_RESULT([yes])
6077 else
6078     AC_MSG_RESULT([no])
6080 rm -rf $TESTGMAKEFILEFUNC
6081 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6083 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6084 STALE_MAKE=
6085 if test "$_make_ver_check" = ""; then
6086    STALE_MAKE=TRUE
6089 HAVE_LD_HASH_STYLE=FALSE
6090 WITH_LINKER_HASH_STYLE=
6091 AC_MSG_CHECKING([for --hash-style gcc linker support])
6092 if test "$GCC" = "yes"; then
6093     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6094         hash_styles="gnu sysv"
6095     elif test "$with_linker_hash_style" = "no"; then
6096         hash_styles=
6097     else
6098         hash_styles="$with_linker_hash_style"
6099     fi
6101     for hash_style in $hash_styles; do
6102         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6103         hash_style_ldflags_save=$LDFLAGS
6104         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6106         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6107             [
6108 #include <stdio.h>
6109             ],[
6110 printf ("");
6111             ])],
6112             [
6113                   HAVE_LD_HASH_STYLE=TRUE
6114                   WITH_LINKER_HASH_STYLE=$hash_style
6115             ],
6116             [HAVE_LD_HASH_STYLE=FALSE],
6117             [HAVE_LD_HASH_STYLE=FALSE])
6118         LDFLAGS=$hash_style_ldflags_save
6119     done
6121     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6122         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6123     else
6124         AC_MSG_RESULT( no )
6125     fi
6126     LDFLAGS=$hash_style_ldflags_save
6127 else
6128     AC_MSG_RESULT( no )
6130 AC_SUBST(HAVE_LD_HASH_STYLE)
6131 AC_SUBST(WITH_LINKER_HASH_STYLE)
6133 dnl ===================================================================
6134 dnl Check whether there's a Perl version available.
6135 dnl ===================================================================
6136 if test -z "$with_perl_home"; then
6137     AC_PATH_PROG(PERL, perl)
6138 else
6139     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6140     _perl_path="$with_perl_home/bin/perl"
6141     if test -x "$_perl_path"; then
6142         PERL=$_perl_path
6143     else
6144         AC_MSG_ERROR([$_perl_path not found])
6145     fi
6148 dnl ===================================================================
6149 dnl Testing for Perl version 5 or greater.
6150 dnl $] is the Perl version variable, it is returned as an integer
6151 dnl ===================================================================
6152 if test "$PERL"; then
6153     AC_MSG_CHECKING([the Perl version])
6154     ${PERL} -e "exit($]);"
6155     _perl_version=$?
6156     if test "$_perl_version" -lt 5; then
6157         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6158     fi
6159     AC_MSG_RESULT([Perl $_perl_version])
6160 else
6161     AC_MSG_ERROR([Perl not found, install Perl 5])
6164 dnl ===================================================================
6165 dnl Testing for required Perl modules
6166 dnl ===================================================================
6168 AC_MSG_CHECKING([for required Perl modules])
6169 perl_use_string="use Cwd ; use Digest::MD5"
6170 if test "$_os" = "WINNT"; then
6171     if test -n "$PKGFORMAT"; then
6172         for i in $PKGFORMAT; do
6173             case "$i" in
6174             msi)
6175                 # for getting fonts versions to use in MSI
6176                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6177                 ;;
6178             esac
6179         done
6180     fi
6182 if test "$with_system_hsqldb" = "yes"; then
6183     perl_use_string="$perl_use_string ; use Archive::Zip"
6185 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6186     # OpenSSL needs that to build
6187     perl_use_string="$perl_use_string ; use FindBin"
6189 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6190     AC_MSG_RESULT([all modules found])
6191 else
6192     AC_MSG_RESULT([failed to find some modules])
6193     # Find out which modules are missing.
6194     for i in $perl_use_string; do
6195         if test "$i" != "use" -a "$i" != ";"; then
6196             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6197                 missing_perl_modules="$missing_perl_modules $i"
6198             fi
6199         fi
6200     done
6201     AC_MSG_ERROR([
6202     The missing Perl modules are: $missing_perl_modules
6203     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6206 dnl ===================================================================
6207 dnl Check for pkg-config
6208 dnl ===================================================================
6209 if test "$_os" != "WINNT"; then
6210     PKG_PROG_PKG_CONFIG
6213 if test "$_os" != "WINNT"; then
6215     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6216     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6217     # explicitly. Or put /path/to/compiler in PATH yourself.
6219     # Use wrappers for LTO
6220     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6221         AC_CHECK_TOOL(AR,gcc-ar)
6222         AC_CHECK_TOOL(NM,gcc-nm)
6223         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6224     else
6225         AC_CHECK_TOOL(AR,ar)
6226         AC_CHECK_TOOL(NM,nm)
6227         AC_CHECK_TOOL(RANLIB,ranlib)
6228     fi
6229     AC_CHECK_TOOL(OBJDUMP,objdump)
6230     AC_CHECK_TOOL(READELF,readelf)
6231     AC_CHECK_TOOL(STRIP,strip)
6233 AC_SUBST(AR)
6234 AC_SUBST(LD)
6235 AC_SUBST(NM)
6236 AC_SUBST(OBJDUMP)
6237 AC_SUBST(PKG_CONFIG)
6238 AC_SUBST(PKG_CONFIG_PATH)
6239 AC_SUBST(PKG_CONFIG_LIBDIR)
6240 AC_SUBST(RANLIB)
6241 AC_SUBST(READELF)
6242 AC_SUBST(STRIP)
6244 dnl ===================================================================
6245 dnl pkg-config checks on macOS
6246 dnl ===================================================================
6248 if test $_os = Darwin; then
6249     AC_MSG_CHECKING([for bogus pkg-config])
6250     if test -n "$PKG_CONFIG"; then
6251         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6252             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6253         else
6254             if test "$enable_bogus_pkg_config" = "yes"; then
6255                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6256             else
6257                 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.])
6258             fi
6259         fi
6260     else
6261         AC_MSG_RESULT([no, good])
6262     fi
6265 find_csc()
6267     # Return value: $csctest
6269     unset csctest
6271     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6272     if test -n "$regvalue"; then
6273         csctest=$regvalue
6274         return
6275     fi
6278 find_al()
6280     # Return value: $altest
6282     unset altest
6284     # We need this check to detect 4.6.1 or above.
6285     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6286         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6287         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6288             altest=$regvalue
6289             return
6290         fi
6291     done
6293     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6294         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6295         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6296             altest=$regvalue
6297             return
6298         fi
6299     done
6302 find_dotnetsdk46()
6304     unset frametest
6306     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6307         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6308         if test -n "$regvalue"; then
6309             frametest=$regvalue
6310             return
6311         fi
6312     done
6315 find_winsdk_version()
6317     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6318     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6320     unset winsdktest winsdkbinsubdir winsdklibsubdir
6322     case "$1" in
6323     8.0|8.0A)
6324         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6325         if test -n "$regvalue"; then
6326             winsdktest=$regvalue
6327             winsdklibsubdir=win8
6328             return
6329         fi
6330         ;;
6331     8.1|8.1A)
6332         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6333         if test -n "$regvalue"; then
6334             winsdktest=$regvalue
6335             winsdklibsubdir=winv6.3
6336             return
6337         fi
6338         ;;
6339     10.0)
6340         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6341         if test -n "$regvalue"; then
6342             winsdktest=$regvalue
6343             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6344             if test -n "$regvalue"; then
6345                 winsdkbinsubdir="$regvalue".0
6346                 winsdklibsubdir=$winsdkbinsubdir
6347                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6348                 local tmppath_unix=$(cygpath -u "$tmppath")
6349                 # test exist the SDK path
6350                 if test -d "$tmppath_unix"; then
6351                    # when path is convertible to a short path then path is okay
6352                    cygpath -d "$tmppath" >/dev/null 2>&1
6353                    if test $? -ne 0; then
6354                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6355                    fi
6356                 else
6357                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6358                 fi
6359             fi
6360             return
6361         fi
6362         ;;
6363     esac
6366 find_winsdk()
6368     # Return value: From find_winsdk_version
6370     unset winsdktest
6372     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6373         find_winsdk_version $ver
6374         if test -n "$winsdktest"; then
6375             return
6376         fi
6377     done
6380 find_msms()
6382     # Return value: $msmdir
6384     AC_MSG_CHECKING([for MSVC merge modules directory])
6385     local my_msm_files
6386     local my_msm_dir
6388     dnl Order my_msm_files in increasing order. Then check the directories returned
6389     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6390     dnl the result will be the highest MSM version found in the highest directory.
6392     case "$VCVER" in
6393         16.0 | 17.0)
6394         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6395         ;;
6396     esac
6397     for f in $my_msm_files; do
6398         echo "$as_me:$LINENO: searching for $f" >&5
6399     done
6401     msmdir=
6402     case "$VCVER" in
6403     16.0 | 17.0)
6404         for f in ${my_msm_files}; do
6405             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6406                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6407                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6408                 if test -e "$my_msm_dir${f}"; then
6409                     msmdir=$my_msm_dir
6410                 fi
6411             done
6412         done
6413         ;;
6414     esac
6416     if test -n "$msmdir"; then
6417         msmdir=`cygpath -m "$msmdir"`
6418         AC_MSG_RESULT([$msmdir])
6419     else
6420         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6421             AC_MSG_FAILURE([not found])
6422         else
6423             AC_MSG_WARN([not found (check config.log)])
6424             add_warning "MSM none of ${my_msm_files} found"
6425         fi
6426     fi
6429 find_msvc_x64_dlls()
6431     # Return value: $msvcdllpath, $msvcdlls
6433     AC_MSG_CHECKING([for MSVC x64 DLL path])
6435     dnl Order crtver in increasing order. Then check the directories returned by
6436     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6437     dnl the result will be the highest CRT version found in the highest directory.
6439     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6440     case "$VCVER" in
6441     16.0 | 17.0)
6442         for crtver in 141 142 143; do
6443             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6444                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6445                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6446                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6447                 fi
6448             done
6449         done
6450         ;;
6451     esac
6452     AC_MSG_RESULT([$msvcdllpath])
6453     AC_MSG_CHECKING([for MSVC x64 DLLs])
6454     msvcdlls="msvcp140.dll vcruntime140.dll"
6455     for dll in $msvcdlls; do
6456         if ! test -f "$msvcdllpath/$dll"; then
6457             AC_MSG_FAILURE([missing $dll])
6458         fi
6459     done
6460     AC_MSG_RESULT([found all ($msvcdlls)])
6463 dnl =========================================
6464 dnl Check for the Windows  SDK.
6465 dnl =========================================
6466 if test "$_os" = "WINNT"; then
6467     AC_MSG_CHECKING([for Windows SDK])
6468     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6469         find_winsdk
6470         WINDOWS_SDK_HOME=$winsdktest
6472         # normalize if found
6473         if test -n "$WINDOWS_SDK_HOME"; then
6474             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6475             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6476         fi
6478         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6479     fi
6481     if test -n "$WINDOWS_SDK_HOME"; then
6482         # Remove a possible trailing backslash
6483         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6485         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6486              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6487              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6488             have_windows_sdk_headers=yes
6489         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6490              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6491              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6492             have_windows_sdk_headers=yes
6493         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6494              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6495              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6496             have_windows_sdk_headers=yes
6497         else
6498             have_windows_sdk_headers=no
6499         fi
6501         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6502             have_windows_sdk_libs=yes
6503         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6504             have_windows_sdk_libs=yes
6505         else
6506             have_windows_sdk_libs=no
6507         fi
6509         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6510             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6511 the  Windows SDK are installed.])
6512         fi
6513     fi
6515     if test -z "$WINDOWS_SDK_HOME"; then
6516         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6517     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6518         WINDOWS_SDK_VERSION=80
6519         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6520     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6521         WINDOWS_SDK_VERSION=81
6522         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6523     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6524         WINDOWS_SDK_VERSION=10
6525         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6526     else
6527         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6528     fi
6529     PathFormat "$WINDOWS_SDK_HOME"
6530     WINDOWS_SDK_HOME="$formatted_path"
6531     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6532     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6533         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6534         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6535             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6536         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6537             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6538         fi
6539     fi
6541     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6542     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6543     dnl but not in v8.0), so allow this to be overridden with a
6544     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6545     dnl and configuration error if no WiLangId.vbs is found would arguably be
6546     dnl better, but I do not know under which conditions exactly it is needed by
6547     dnl msiglobal.pm:
6548     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6549         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6550         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6551         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6552             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6553             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6554         fi
6555         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6556             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6557             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6558         fi
6559         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6560             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6561             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6562         fi
6563     fi
6564     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6565         if test -n "$with_package_format" -a "$with_package_format" != no; then
6566             for i in "$with_package_format"; do
6567                 if test "$i" = "msi"; then
6568                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6569                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6570                     fi
6571                 fi
6572             done
6573         fi
6574     fi
6576 AC_SUBST(WINDOWS_SDK_HOME)
6577 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6578 AC_SUBST(WINDOWS_SDK_VERSION)
6579 AC_SUBST(WINDOWS_SDK_WILANGID)
6581 if test "$build_os" = "cygwin"; then
6582     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6583     dnl dir, it also determines that dir's path w/o an arch segment if any,
6584     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6585     AC_MSG_CHECKING([for midl.exe])
6587     find_winsdk
6588     if test -n "$winsdkbinsubdir" \
6589         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6590     then
6591         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6592         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6593     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6594         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6595         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6596     elif test -f "$winsdktest/Bin/midl.exe"; then
6597         MIDL_PATH=$winsdktest/Bin
6598         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6599     fi
6600     if test ! -f "$MIDL_PATH/midl.exe"; then
6601         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6602     else
6603         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6604     fi
6606     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6607     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6609     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6610          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6611          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6612          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6613     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6614          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6615          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6616          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6617     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6618          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6619          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6620          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6621     else
6622         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6623     fi
6625     dnl Check csc.exe
6626     AC_MSG_CHECKING([for csc.exe])
6627     find_csc
6628     if test -f "$csctest/csc.exe"; then
6629         CSC_PATH="$csctest"
6630     fi
6631     if test ! -f "$CSC_PATH/csc.exe"; then
6632         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6633     else
6634         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6635     fi
6637     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6639     dnl Check al.exe
6640     AC_MSG_CHECKING([for al.exe])
6641     find_winsdk
6642     if test -n "$winsdkbinsubdir" \
6643         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6644     then
6645         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6646     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6647         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6648     elif test -f "$winsdktest/Bin/al.exe"; then
6649         AL_PATH="$winsdktest/Bin"
6650     fi
6652     if test -z "$AL_PATH"; then
6653         find_al
6654         if test -f "$altest/bin/al.exe"; then
6655             AL_PATH="$altest/bin"
6656         elif test -f "$altest/al.exe"; then
6657             AL_PATH="$altest"
6658         fi
6659     fi
6660     if test ! -f "$AL_PATH/al.exe"; then
6661         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6662     else
6663         AC_MSG_RESULT([$AL_PATH/al.exe])
6664     fi
6666     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6668     dnl Check mscoree.lib / .NET Framework dir
6669     AC_MSG_CHECKING(.NET Framework)
6670     find_dotnetsdk46
6671     PathFormat "$frametest"
6672     frametest="$formatted_path"
6673     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6674         DOTNET_FRAMEWORK_HOME="$frametest"
6675     else
6676         find_winsdk
6677         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6678             DOTNET_FRAMEWORK_HOME="$winsdktest"
6679         fi
6680     fi
6681     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
6682         AC_MSG_ERROR([mscoree.lib not found])
6683     fi
6684     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6686     PathFormat "$MIDL_PATH"
6687     MIDL_PATH="$formatted_path"
6689     PathFormat "$AL_PATH"
6690     AL_PATH="$formatted_path"
6692     PathFormat "$DOTNET_FRAMEWORK_HOME"
6693     DOTNET_FRAMEWORK_HOME="$formatted_path"
6695     PathFormat "$CSC_PATH"
6696     CSC_PATH="$formatted_path"
6699 dnl ===================================================================
6700 dnl Testing for C++ compiler and version...
6701 dnl ===================================================================
6703 if test "$_os" != "WINNT"; then
6704     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6705     save_CXXFLAGS=$CXXFLAGS
6706     AC_PROG_CXX
6707     CXXFLAGS=$save_CXXFLAGS
6708     if test -z "$CXX_BASE"; then
6709         CXX_BASE=`first_arg_basename "$CXX"`
6710     fi
6713 dnl check for GNU C++ compiler version
6714 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6715     AC_MSG_CHECKING([the GNU C++ compiler version])
6717     _gpp_version=`$CXX -dumpversion`
6718     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6720     if test "$_gpp_majmin" -lt "700"; then
6721         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6722     else
6723         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6724     fi
6726     dnl see https://code.google.com/p/android/issues/detail?id=41770
6727         glibcxx_threads=no
6728         AC_LANG_PUSH([C++])
6729         AC_REQUIRE_CPP
6730         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6731         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6732             #include <bits/c++config.h>]],[[
6733             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6734             && !defined(_GLIBCXX__PTHREADS) \
6735             && !defined(_GLIBCXX_HAS_GTHREADS)
6736             choke me
6737             #endif
6738         ]])],[AC_MSG_RESULT([yes])
6739         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6740         AC_LANG_POP([C++])
6741         if test $glibcxx_threads = yes; then
6742             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6743         fi
6745 AC_SUBST(BOOST_CXXFLAGS)
6748 # prefx CXX with ccache if needed
6750 if test "$CCACHE" != ""; then
6751     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6752     AC_LANG_PUSH([C++])
6753     save_CXXFLAGS=$CXXFLAGS
6754     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6755     dnl an empty program will do, we're checking the compiler flags
6756     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6757                       [use_ccache=yes], [use_ccache=no])
6758     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6759         AC_MSG_RESULT([yes])
6760     else
6761         CXX="$CCACHE $CXX"
6762         CXX_BASE="ccache $CXX_BASE"
6763         AC_MSG_RESULT([no])
6764     fi
6765     CXXFLAGS=$save_CXXFLAGS
6766     AC_LANG_POP([C++])
6769 dnl ===================================================================
6770 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6771 dnl ===================================================================
6773 if test "$_os" != "WINNT"; then
6774     AC_PROG_CXXCPP
6776     dnl Check whether there's a C pre-processor.
6777     AC_PROG_CPP
6781 dnl ===================================================================
6782 dnl Find integral type sizes and alignments
6783 dnl ===================================================================
6785 if test "$_os" != "WINNT"; then
6787     AC_CHECK_SIZEOF(long)
6788     AC_CHECK_SIZEOF(short)
6789     AC_CHECK_SIZEOF(int)
6790     AC_CHECK_SIZEOF(long long)
6791     AC_CHECK_SIZEOF(double)
6792     AC_CHECK_SIZEOF(void*)
6793     AC_CHECK_SIZEOF(size_t)
6795     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6796     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6797     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6798     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6799     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6800     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6802     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6803     m4_pattern_allow([AC_CHECK_ALIGNOF])
6804     m4_ifdef([AC_CHECK_ALIGNOF],
6805         [
6806             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6807             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6808             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6809             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6810         ],
6811         [
6812             case "$_os-$host_cpu" in
6813             Linux-i686)
6814                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6815                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6816                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6817                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6818                 ;;
6819             Linux-x86_64)
6820                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6821                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6822                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6823                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6824                 ;;
6825             *)
6826                 if test -z "$ac_cv_alignof_short" -o \
6827                         -z "$ac_cv_alignof_int" -o \
6828                         -z "$ac_cv_alignof_long" -o \
6829                         -z "$ac_cv_alignof_double"; then
6830                    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.])
6831                 fi
6832                 ;;
6833             esac
6834         ])
6836     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6837     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6838     if test $ac_cv_sizeof_long -eq 8; then
6839         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6840     elif test $ac_cv_sizeof_double -eq 8; then
6841         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6842     else
6843         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6844     fi
6846     dnl Check for large file support
6847     AC_SYS_LARGEFILE
6848     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6849         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6850     fi
6851     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6852         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6853     fi
6854 else
6855     # Hardcode for MSVC
6856     SAL_TYPES_SIZEOFSHORT=2
6857     SAL_TYPES_SIZEOFINT=4
6858     SAL_TYPES_SIZEOFLONG=4
6859     SAL_TYPES_SIZEOFLONGLONG=8
6860     if test $WIN_HOST_BITS -eq 32; then
6861         SAL_TYPES_SIZEOFPOINTER=4
6862         SIZEOF_SIZE_T=4
6863     else
6864         SAL_TYPES_SIZEOFPOINTER=8
6865         SIZEOF_SIZE_T=8
6866     fi
6867     SAL_TYPES_ALIGNMENT2=2
6868     SAL_TYPES_ALIGNMENT4=4
6869     SAL_TYPES_ALIGNMENT8=8
6870     LFS_CFLAGS=''
6872 AC_SUBST(LFS_CFLAGS)
6873 AC_SUBST(SIZEOF_SIZE_T)
6875 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6876 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6877 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6878 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6879 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6880 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6881 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6882 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6884 dnl ===================================================================
6885 dnl Check whether to enable runtime optimizations
6886 dnl ===================================================================
6887 ENABLE_RUNTIME_OPTIMIZATIONS=
6888 AC_MSG_CHECKING([whether to enable runtime optimizations])
6889 if test -z "$enable_runtime_optimizations"; then
6890     for i in $CC; do
6891         case $i in
6892         -fsanitize=*)
6893             enable_runtime_optimizations=no
6894             break
6895             ;;
6896         esac
6897     done
6899 if test "$enable_runtime_optimizations" != no; then
6900     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6901     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6902     AC_MSG_RESULT([yes])
6903 else
6904     AC_MSG_RESULT([no])
6906 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6908 dnl ===================================================================
6909 dnl Check if valgrind headers are available
6910 dnl ===================================================================
6911 ENABLE_VALGRIND=
6912 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6913     prev_cppflags=$CPPFLAGS
6914     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6915     # or where does it come from?
6916     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6917     AC_CHECK_HEADER([valgrind/valgrind.h],
6918         [ENABLE_VALGRIND=TRUE])
6919     CPPFLAGS=$prev_cppflags
6921 AC_SUBST([ENABLE_VALGRIND])
6922 if test -z "$ENABLE_VALGRIND"; then
6923     if test "$with_valgrind" = yes; then
6924         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6925     fi
6926     VALGRIND_CFLAGS=
6928 AC_SUBST([VALGRIND_CFLAGS])
6931 dnl ===================================================================
6932 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6933 dnl ===================================================================
6935 # We need at least the sys/sdt.h include header.
6936 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6937 if test "$SDT_H_FOUND" = "TRUE"; then
6938     # Found sys/sdt.h header, now make sure the c++ compiler works.
6939     # Old g++ versions had problems with probes in constructors/destructors.
6940     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6941     AC_LANG_PUSH([C++])
6942     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6943     #include <sys/sdt.h>
6944     class ProbeClass
6945     {
6946     private:
6947       int& ref;
6948       const char *name;
6950     public:
6951       ProbeClass(int& v, const char *n) : ref(v), name(n)
6952       {
6953         DTRACE_PROBE2(_test_, cons, name, ref);
6954       }
6956       void method(int min)
6957       {
6958         DTRACE_PROBE3(_test_, meth, name, ref, min);
6959         ref -= min;
6960       }
6962       ~ProbeClass()
6963       {
6964         DTRACE_PROBE2(_test_, dest, name, ref);
6965       }
6966     };
6967     ]],[[
6968     int i = 64;
6969     DTRACE_PROBE1(_test_, call, i);
6970     ProbeClass inst = ProbeClass(i, "call");
6971     inst.method(24);
6972     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6973           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6974     AC_LANG_POP([C++])
6976 AC_CONFIG_HEADERS([config_host/config_probes.h])
6978 dnl ===================================================================
6979 dnl GCC features
6980 dnl ===================================================================
6981 HAVE_GCC_STACK_CLASH_PROTECTION=
6982 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6983     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6984     save_CFLAGS=$CFLAGS
6985     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6986     AC_LINK_IFELSE(
6987         [AC_LANG_PROGRAM(, [[return 0;]])],
6988         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6989         [AC_MSG_RESULT([no])])
6990     CFLAGS=$save_CFLAGS
6992     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6993     save_CFLAGS=$CFLAGS
6994     CFLAGS="$CFLAGS -Werror -mno-avx"
6995     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6996     CFLAGS=$save_CFLAGS
6997     if test "$HAVE_GCC_AVX" = "TRUE"; then
6998         AC_MSG_RESULT([yes])
6999     else
7000         AC_MSG_RESULT([no])
7001     fi
7003     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7004     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7005     int v = 0;
7006     if (__sync_add_and_fetch(&v, 1) != 1 ||
7007         __sync_sub_and_fetch(&v, 1) != 0)
7008         return 1;
7009     __sync_synchronize();
7010     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7011         v != 1)
7012         return 1;
7013     return 0;
7014 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7015     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7016         AC_MSG_RESULT([yes])
7017         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7018     else
7019         AC_MSG_RESULT([no])
7020     fi
7022     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7023     AC_LANG_PUSH([C++])
7024     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7025             #include <cstddef>
7026             #include <cxxabi.h>
7027             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7028         ])], [
7029             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7030             AC_MSG_RESULT([yes])
7031         ], [AC_MSG_RESULT([no])])
7032     AC_LANG_POP([C++])
7034     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7035     AC_LANG_PUSH([C++])
7036     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7037             #include <cstddef>
7038             #include <cxxabi.h>
7039             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7040         ])], [
7041             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7042             AC_MSG_RESULT([yes])
7043         ], [AC_MSG_RESULT([no])])
7044     AC_LANG_POP([C++])
7046     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7047     AC_LANG_PUSH([C++])
7048     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7049             #include <cxxabi.h>
7050             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7051         ])], [
7052             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7053             AC_MSG_RESULT([yes])
7054         ], [AC_MSG_RESULT([no])])
7055     AC_LANG_POP([C++])
7057     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7058     AC_LANG_PUSH([C++])
7059     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7060             #include <cstddef>
7061             #include <cxxabi.h>
7062             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7063         ])], [
7064             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7065             AC_MSG_RESULT([yes])
7066         ], [AC_MSG_RESULT([no])])
7067     AC_LANG_POP([C++])
7069     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7070     AC_LANG_PUSH([C++])
7071     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7072             #include <cstddef>
7073             #include <cxxabi.h>
7074             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7075         ])], [
7076             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7077             AC_MSG_RESULT([yes])
7078         ], [AC_MSG_RESULT([no])])
7079     AC_LANG_POP([C++])
7081     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7082     AC_LANG_PUSH([C++])
7083     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7084             #include <cxxabi.h>
7085             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7086         ])], [
7087             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7088             AC_MSG_RESULT([yes])
7089         ], [AC_MSG_RESULT([no])])
7090     AC_LANG_POP([C++])
7092     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7093     AC_LANG_PUSH([C++])
7094     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7095             #include <cxxabi.h>
7096             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7097         ])], [
7098             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7099             AC_MSG_RESULT([yes])
7100         ], [AC_MSG_RESULT([no])])
7101     AC_LANG_POP([C++])
7103     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7104     AC_LANG_PUSH([C++])
7105     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7106             #include <cxxabi.h>
7107             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7108         ])], [
7109             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7110             AC_MSG_RESULT([yes])
7111         ], [AC_MSG_RESULT([no])])
7112     AC_LANG_POP([C++])
7114     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7115     AC_LANG_PUSH([C++])
7116     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7117             #include <cstddef>
7118             #include <cxxabi.h>
7119             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7120         ])], [
7121             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7122             AC_MSG_RESULT([yes])
7123         ], [AC_MSG_RESULT([no])])
7124     AC_LANG_POP([C++])
7126     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7127     AC_LANG_PUSH([C++])
7128     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7129             #include <cstddef>
7130             #include <cxxabi.h>
7131             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7132         ])], [
7133             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7134             AC_MSG_RESULT([yes])
7135         ], [AC_MSG_RESULT([no])])
7136     AC_LANG_POP([C++])
7139 AC_SUBST(HAVE_GCC_AVX)
7140 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7141 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7143 dnl ===================================================================
7144 dnl Identify the C++ library
7145 dnl ===================================================================
7147 AC_MSG_CHECKING([what the C++ library is])
7148 HAVE_LIBSTDCPP=
7149 AC_LANG_PUSH([C++])
7150 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7151 #include <utility>
7152 #ifndef __GLIBCXX__
7153 foo bar
7154 #endif
7155 ]])],
7156     [CPP_LIBRARY=GLIBCXX
7157      cpp_library_name="GNU libstdc++"
7158      HAVE_LIBSTDCPP=TRUE
7159     ],
7160     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7161 #include <utility>
7162 #ifndef _LIBCPP_VERSION
7163 foo bar
7164 #endif
7165 ]])],
7166     [CPP_LIBRARY=LIBCPP
7167      cpp_library_name="LLVM libc++"
7168      AC_DEFINE([HAVE_LIBCXX])
7169     ],
7170     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7171 #include <utility>
7172 #ifndef _MSC_VER
7173 foo bar
7174 #endif
7175 ]])],
7176     [CPP_LIBRARY=MSVCRT
7177      cpp_library_name="Microsoft"
7178     ],
7179     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7180 AC_MSG_RESULT([$cpp_library_name])
7181 AC_LANG_POP([C++])
7182 AC_SUBST([HAVE_LIBSTDCPP])
7184 dnl ===================================================================
7185 dnl Check for gperf
7186 dnl ===================================================================
7187 AC_PATH_PROG(GPERF, gperf)
7188 if test -z "$GPERF"; then
7189     AC_MSG_ERROR([gperf not found but needed. Install it.])
7191 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7192     GPERF=`cygpath -m $GPERF`
7194 AC_MSG_CHECKING([whether gperf is new enough])
7195 my_gperf_ver1=$($GPERF --version | head -n 1)
7196 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7197 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7198 if test "$my_gperf_ver3" -ge 301; then
7199     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7200 else
7201     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7203 AC_SUBST(GPERF)
7205 dnl ===================================================================
7206 dnl Check for system libcmis
7207 dnl ===================================================================
7208 # libcmis requires curl and we can't build curl for iOS
7209 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7210     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7211     ENABLE_LIBCMIS=TRUE
7212 else
7213     ENABLE_LIBCMIS=
7215 AC_SUBST(ENABLE_LIBCMIS)
7217 dnl ===================================================================
7218 dnl C++11
7219 dnl ===================================================================
7221 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7222 CXXFLAGS_CXX11=
7223 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7224     if test "$with_latest_c__" = yes; then
7225         CXXFLAGS_CXX11=-std:c++latest
7226     else
7227         CXXFLAGS_CXX11=-std:c++17
7228     fi
7229     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7230 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7231     my_flags='-std=c++17 -std=c++1z'
7232     if test "$with_latest_c__" = yes; then
7233         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7234     fi
7235     for flag in $my_flags; do
7236         if test "$COM" = MSC; then
7237             flag="-Xclang $flag"
7238         fi
7239         save_CXXFLAGS=$CXXFLAGS
7240         CXXFLAGS="$CXXFLAGS $flag -Werror"
7241         if test "$SYSTEM_LIBCMIS" = TRUE; then
7242             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7243         fi
7244         AC_LANG_PUSH([C++])
7245         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7246             #include <algorithm>
7247             #include <functional>
7248             #include <vector>
7250             #if defined SYSTEM_LIBCMIS
7251             // See ucb/source/ucp/cmis/auth_provider.hxx:
7252             #if !defined __clang__
7253             #pragma GCC diagnostic push
7254             #pragma GCC diagnostic ignored "-Wdeprecated"
7255             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7256             #endif
7257             #include <libcmis/libcmis.hxx>
7258             #if !defined __clang__
7259             #pragma GCC diagnostic pop
7260             #endif
7261             #endif
7263             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7264                 std::sort(v.begin(), v.end(), fn);
7265             }
7266             ]])],[CXXFLAGS_CXX11=$flag])
7267         AC_LANG_POP([C++])
7268         CXXFLAGS=$save_CXXFLAGS
7269         if test -n "$CXXFLAGS_CXX11"; then
7270             break
7271         fi
7272     done
7274 if test -n "$CXXFLAGS_CXX11"; then
7275     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7276 else
7277     AC_MSG_ERROR(no)
7279 AC_SUBST(CXXFLAGS_CXX11)
7281 if test "$GCC" = "yes"; then
7282     save_CXXFLAGS=$CXXFLAGS
7283     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7284     CHECK_L_ATOMIC
7285     CXXFLAGS=$save_CXXFLAGS
7286     AC_SUBST(ATOMIC_LIB)
7289 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7290 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7291 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7292 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7293 dnl again towards 4.7.2:
7294 if test $CPP_LIBRARY = GLIBCXX; then
7295     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7296     AC_LANG_PUSH([C++])
7297     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7298 #include <list>
7299 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7300     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7301     //   GCC 4.7.0: 20120322
7302     //   GCC 4.7.1: 20120614
7303     // and using a range check is not possible as the mapping between
7304     // __GLIBCXX__ values and GCC versions is not monotonic
7305 /* ok */
7306 #else
7307 abi broken
7308 #endif
7309         ]])], [AC_MSG_RESULT(no, ok)],
7310         [AC_MSG_ERROR(yes)])
7311     AC_LANG_POP([C++])
7314 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7315 save_CXXFLAGS=$CXXFLAGS
7316 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7317 AC_LANG_PUSH([C++])
7319 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7320 #include <stddef.h>
7322 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7324 namespace
7326         struct b
7327         {
7328                 int i;
7329                 int j;
7330         };
7332 ]], [[
7333 struct a
7335         int i;
7336         int j;
7338 a thinga[]={{0,0}, {1,1}};
7339 b thingb[]={{0,0}, {1,1}};
7340 size_t i = sizeof(sal_n_array_size(thinga));
7341 size_t j = sizeof(sal_n_array_size(thingb));
7342 return !(i != 0 && j != 0);
7344     ], [ AC_MSG_RESULT(yes) ],
7345     [ AC_MSG_ERROR(no)])
7346 AC_LANG_POP([C++])
7347 CXXFLAGS=$save_CXXFLAGS
7349 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7350 if test "$GCC" = yes; then
7351     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7352     AC_LANG_PUSH([C++])
7353     save_CXXFLAGS=$CXXFLAGS
7354     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7355     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7356     CXXFLAGS=$save_CXXFLAGS
7357     AC_LANG_POP([C++])
7358     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7359         AC_MSG_RESULT([yes])
7360     else
7361         AC_MSG_RESULT([no])
7362     fi
7364 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7366 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7367 AC_LANG_PUSH([C++])
7368 save_CXXFLAGS=$CXXFLAGS
7369 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7370 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7371         #include <algorithm>
7372         #include <initializer_list>
7373         #include <vector>
7374         template<typename T> class S {
7375         private:
7376             std::vector<T> v_;
7377         public:
7378             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7379         };
7380         constinit S<int> s{3, 2, 1};
7381     ])], [
7382         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7383         AC_MSG_RESULT([yes])
7384     ], [AC_MSG_RESULT([no])])
7385 CXXFLAGS=$save_CXXFLAGS
7386 AC_LANG_POP([C++])
7388 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7389 AC_LANG_PUSH([C++])
7390 save_CXXFLAGS=$CXXFLAGS
7391 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7392 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393         #include <span>
7394         #include <type_traits>
7395         // Don't check size_type directly, as it was called index_type before P1872R0:
7396         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7397     ])], [
7398         AC_DEFINE([HAVE_CPP_SPAN],[1])
7399         AC_MSG_RESULT([yes])
7400     ], [AC_MSG_RESULT([no])])
7401 CXXFLAGS=$save_CXXFLAGS
7402 AC_LANG_POP([C++])
7404 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7405 AC_LANG_PUSH([C++])
7406 save_CXXFLAGS=$CXXFLAGS
7407 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7408 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7409         struct S1 { S1(S1 &&); };
7410         struct S2: S1 {};
7411         S1 f(S2 s) { return s; }
7412     ])], [
7413         AC_DEFINE([HAVE_P1155R3],[1])
7414         AC_MSG_RESULT([yes])
7415     ], [AC_MSG_RESULT([no])])
7416 CXXFLAGS=$save_CXXFLAGS
7417 AC_LANG_POP([C++])
7419 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7420 HAVE_CXX20_ATOMIC_REF=
7421 AC_LANG_PUSH([C++])
7422 save_CXXFLAGS=$CXXFLAGS
7423 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7425         #include <atomic>
7426         int x;
7427         std::atomic_ref<int> y(x);
7428     ])], [
7429         HAVE_CXX20_ATOMIC_REF=TRUE
7430         AC_MSG_RESULT([yes])
7431     ], [AC_MSG_RESULT([no])])
7432 CXXFLAGS=$save_CXXFLAGS
7433 AC_LANG_POP([C++])
7434 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7436 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7437 dnl which is included in -Wextra anyway):
7438 HAVE_WDEPRECATED_COPY_DTOR=
7439 if test "$GCC" = yes; then
7440     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7441     AC_LANG_PUSH([C++])
7442     save_CXXFLAGS=$CXXFLAGS
7443     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7444     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7445             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7446             AC_MSG_RESULT([yes])
7447         ], [AC_MSG_RESULT([no])])
7448     CXXFLAGS=$save_CXXFLAGS
7449     AC_LANG_POP([C++])
7451 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7453 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7454 dnl uninitialized warning for code like
7456 dnl   OString f();
7457 dnl   boost::optional<OString> * g(bool b) {
7458 dnl       boost::optional<OString> o;
7459 dnl       if (b) o = f();
7460 dnl       return new boost::optional<OString>(o);
7461 dnl   }
7463 dnl (as is e.g. present, in a slightly more elaborate form, in
7464 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7465 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7466 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7467 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7468     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7469     AC_LANG_PUSH([C++])
7470     save_CXXFLAGS=$CXXFLAGS
7471     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7472     if test "$ENABLE_OPTIMIZED" = TRUE; then
7473         CXXFLAGS="$CXXFLAGS -O2"
7474     else
7475         CXXFLAGS="$CXXFLAGS -O0"
7476     fi
7477     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7478             #include <new>
7479             void f1(int);
7480             struct S1 {
7481                 ~S1() { f1(n); }
7482                 int n = 0;
7483             };
7484             struct S2 {
7485                 S2() {}
7486                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7487                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7488                 void set(S1 s) {
7489                     new (stg) S1(s);
7490                     init = true;
7491                 }
7492                 bool init = false;
7493                 char stg[sizeof (S1)];
7494             } ;
7495             S1 f2();
7496             S2 * f3(bool b) {
7497                 S2 o;
7498                 if (b) o.set(f2());
7499                 return new S2(o);
7500             }
7501         ]])], [AC_MSG_RESULT([no])], [
7502             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7503             AC_MSG_RESULT([yes])
7504         ])
7505     CXXFLAGS=$save_CXXFLAGS
7506     AC_LANG_POP([C++])
7508 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7510 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7511 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7512 dnl hits us e.g. with GCC 10 and --enable-optimized at
7514 dnl   In file included from include/rtl/string.hxx:49,
7515 dnl                    from include/rtl/ustring.hxx:43,
7516 dnl                    from include/osl/file.hxx:35,
7517 dnl                    from include/codemaker/global.hxx:28,
7518 dnl                    from include/codemaker/options.hxx:23,
7519 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7520 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7521 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,
7522 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,
7523 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,
7524 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7525 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7526 dnl      78 |         memcpy( buffer, data, length );
7527 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7528 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7529 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7530     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7531     AC_LANG_PUSH([C++])
7532     save_CXXFLAGS=$CXXFLAGS
7533     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7534     if test "$ENABLE_OPTIMIZED" = TRUE; then
7535         CXXFLAGS="$CXXFLAGS -O2"
7536     else
7537         CXXFLAGS="$CXXFLAGS -O0"
7538     fi
7539     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7540     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7541             void fill(char const * begin, char const * end, char c);
7542             struct q {
7543                 char ids[4];
7544                 char username[6];
7545             };
7546             void test(q & c) {
7547                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7548                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7549             }
7550         ]])], [AC_MSG_RESULT([no])], [
7551             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7552             AC_MSG_RESULT([yes])
7553         ])
7554     CXXFLAGS=$save_CXXFLAGS
7555     AC_LANG_POP([C++])
7557 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7559 HAVE_DLLEXPORTINLINES=
7560 if test "$_os" = "WINNT"; then
7561     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7562     AC_LANG_PUSH([C++])
7563     save_CXXFLAGS=$CXXFLAGS
7564     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7565     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7566             HAVE_DLLEXPORTINLINES=TRUE
7567             AC_MSG_RESULT([yes])
7568         ], [AC_MSG_RESULT([no])])
7569     CXXFLAGS=$save_CXXFLAGS
7570     AC_LANG_POP([C++])
7572 AC_SUBST([HAVE_DLLEXPORTINLINES])
7574 dnl ===================================================================
7575 dnl CPU Intrinsics support - SSE, AVX
7576 dnl ===================================================================
7578 CXXFLAGS_INTRINSICS_SSE2=
7579 CXXFLAGS_INTRINSICS_SSSE3=
7580 CXXFLAGS_INTRINSICS_SSE41=
7581 CXXFLAGS_INTRINSICS_SSE42=
7582 CXXFLAGS_INTRINSICS_AVX=
7583 CXXFLAGS_INTRINSICS_AVX2=
7584 CXXFLAGS_INTRINSICS_AVX512=
7585 CXXFLAGS_INTRINSICS_AVX512F=
7586 CXXFLAGS_INTRINSICS_F16C=
7587 CXXFLAGS_INTRINSICS_FMA=
7589 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7590     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7591     flag_sse2=-msse2
7592     flag_ssse3=-mssse3
7593     flag_sse41=-msse4.1
7594     flag_sse42=-msse4.2
7595     flag_avx=-mavx
7596     flag_avx2=-mavx2
7597     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7598     flag_avx512f=-mavx512f
7599     flag_f16c=-mf16c
7600     flag_fma=-mfma
7601 else
7602     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7603     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7604     # SSE2 seems to be SSE2+.
7605     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7606     # is not empty (and can be tested in gbuild).
7607     flag_sse2=-arch:SSE2
7608     flag_ssse3=-arch:SSE2
7609     flag_sse41=-arch:SSE2
7610     flag_sse42=-arch:SSE2
7611     flag_avx=-arch:AVX
7612     flag_avx2=-arch:AVX2
7613     flag_avx512=-arch:AVX512
7614     flag_avx512f=-arch:AVX512
7615     # These are part of -arch:AVX2
7616     flag_f16c=-arch:AVX2
7617     flag_fma=-arch:AVX2
7620 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7621 AC_LANG_PUSH([C++])
7622 save_CXXFLAGS=$CXXFLAGS
7623 CXXFLAGS="$CXXFLAGS $flag_sse2"
7624 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7625     #include <emmintrin.h>
7626     int main () {
7627         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7628         c = _mm_xor_si128 (a, b);
7629         return 0;
7630     }
7631     ])],
7632     [can_compile_sse2=yes],
7633     [can_compile_sse2=no])
7634 AC_LANG_POP([C++])
7635 CXXFLAGS=$save_CXXFLAGS
7636 AC_MSG_RESULT([${can_compile_sse2}])
7637 if test "${can_compile_sse2}" = "yes" ; then
7638     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7641 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7642 AC_LANG_PUSH([C++])
7643 save_CXXFLAGS=$CXXFLAGS
7644 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7645 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7646     #include <tmmintrin.h>
7647     int main () {
7648         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7649         c = _mm_maddubs_epi16 (a, b);
7650         return 0;
7651     }
7652     ])],
7653     [can_compile_ssse3=yes],
7654     [can_compile_ssse3=no])
7655 AC_LANG_POP([C++])
7656 CXXFLAGS=$save_CXXFLAGS
7657 AC_MSG_RESULT([${can_compile_ssse3}])
7658 if test "${can_compile_ssse3}" = "yes" ; then
7659     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7662 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7663 AC_LANG_PUSH([C++])
7664 save_CXXFLAGS=$CXXFLAGS
7665 CXXFLAGS="$CXXFLAGS $flag_sse41"
7666 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7667     #include <smmintrin.h>
7668     int main () {
7669         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7670         c = _mm_cmpeq_epi64 (a, b);
7671         return 0;
7672     }
7673     ])],
7674     [can_compile_sse41=yes],
7675     [can_compile_sse41=no])
7676 AC_LANG_POP([C++])
7677 CXXFLAGS=$save_CXXFLAGS
7678 AC_MSG_RESULT([${can_compile_sse41}])
7679 if test "${can_compile_sse41}" = "yes" ; then
7680     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7683 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7684 AC_LANG_PUSH([C++])
7685 save_CXXFLAGS=$CXXFLAGS
7686 CXXFLAGS="$CXXFLAGS $flag_sse42"
7687 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7688     #include <nmmintrin.h>
7689     int main () {
7690         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7691         c = _mm_cmpgt_epi64 (a, b);
7692         return 0;
7693     }
7694     ])],
7695     [can_compile_sse42=yes],
7696     [can_compile_sse42=no])
7697 AC_LANG_POP([C++])
7698 CXXFLAGS=$save_CXXFLAGS
7699 AC_MSG_RESULT([${can_compile_sse42}])
7700 if test "${can_compile_sse42}" = "yes" ; then
7701     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7704 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7705 AC_LANG_PUSH([C++])
7706 save_CXXFLAGS=$CXXFLAGS
7707 CXXFLAGS="$CXXFLAGS $flag_avx"
7708 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7709     #include <immintrin.h>
7710     int main () {
7711         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7712         c = _mm256_xor_ps(a, b);
7713         return 0;
7714     }
7715     ])],
7716     [can_compile_avx=yes],
7717     [can_compile_avx=no])
7718 AC_LANG_POP([C++])
7719 CXXFLAGS=$save_CXXFLAGS
7720 AC_MSG_RESULT([${can_compile_avx}])
7721 if test "${can_compile_avx}" = "yes" ; then
7722     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7725 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7726 AC_LANG_PUSH([C++])
7727 save_CXXFLAGS=$CXXFLAGS
7728 CXXFLAGS="$CXXFLAGS $flag_avx2"
7729 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7730     #include <immintrin.h>
7731     int main () {
7732         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7733         c = _mm256_maddubs_epi16(a, b);
7734         return 0;
7735     }
7736     ])],
7737     [can_compile_avx2=yes],
7738     [can_compile_avx2=no])
7739 AC_LANG_POP([C++])
7740 CXXFLAGS=$save_CXXFLAGS
7741 AC_MSG_RESULT([${can_compile_avx2}])
7742 if test "${can_compile_avx2}" = "yes" ; then
7743     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7746 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7747 AC_LANG_PUSH([C++])
7748 save_CXXFLAGS=$CXXFLAGS
7749 CXXFLAGS="$CXXFLAGS $flag_avx512"
7750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7751     #include <immintrin.h>
7752     int main () {
7753         __m512i a = _mm512_loadu_si512(0);
7754         __m512d v1 = _mm512_load_pd(0);
7755         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7756         __m512d v2 = _mm512_abs_pd(v1);
7757         return 0;
7758     }
7759     ])],
7760     [can_compile_avx512=yes],
7761     [can_compile_avx512=no])
7762 AC_LANG_POP([C++])
7763 CXXFLAGS=$save_CXXFLAGS
7764 AC_MSG_RESULT([${can_compile_avx512}])
7765 if test "${can_compile_avx512}" = "yes" ; then
7766     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7767     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7770 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7771 AC_LANG_PUSH([C++])
7772 save_CXXFLAGS=$CXXFLAGS
7773 CXXFLAGS="$CXXFLAGS $flag_f16c"
7774 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7775     #include <immintrin.h>
7776     int main () {
7777         __m128i a = _mm_set1_epi32 (0);
7778         __m128 c;
7779         c = _mm_cvtph_ps(a);
7780         return 0;
7781     }
7782     ])],
7783     [can_compile_f16c=yes],
7784     [can_compile_f16c=no])
7785 AC_LANG_POP([C++])
7786 CXXFLAGS=$save_CXXFLAGS
7787 AC_MSG_RESULT([${can_compile_f16c}])
7788 if test "${can_compile_f16c}" = "yes" ; then
7789     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7792 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7793 AC_LANG_PUSH([C++])
7794 save_CXXFLAGS=$CXXFLAGS
7795 CXXFLAGS="$CXXFLAGS $flag_fma"
7796 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7797     #include <immintrin.h>
7798     int main () {
7799         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7800         d = _mm256_fmadd_ps(a, b, c);
7801         return 0;
7802     }
7803     ])],
7804     [can_compile_fma=yes],
7805     [can_compile_fma=no])
7806 AC_LANG_POP([C++])
7807 CXXFLAGS=$save_CXXFLAGS
7808 AC_MSG_RESULT([${can_compile_fma}])
7809 if test "${can_compile_fma}" = "yes" ; then
7810     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7813 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7814 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7815 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7816 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7817 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7818 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7819 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7820 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7821 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7822 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7824 dnl ===================================================================
7825 dnl system stl sanity tests
7826 dnl ===================================================================
7827 if test "$_os" != "WINNT"; then
7829     AC_LANG_PUSH([C++])
7831     save_CPPFLAGS="$CPPFLAGS"
7832     if test -n "$MACOSX_SDK_PATH"; then
7833         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7834     fi
7836     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7837     # only.
7838     if test "$CPP_LIBRARY" = GLIBCXX; then
7839         dnl gcc#19664, gcc#22482, rhbz#162935
7840         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7841         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7842         AC_MSG_RESULT([$stlvisok])
7843         if test "$stlvisok" = "no"; then
7844             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7845         fi
7846     fi
7848     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7849     # when we don't make any dynamic libraries?
7850     if test "$DISABLE_DYNLOADING" = ""; then
7851         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7852         cat > conftestlib1.cc <<_ACEOF
7853 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7854 struct S2: S1<int> { virtual ~S2(); };
7855 S2::~S2() {}
7856 _ACEOF
7857         cat > conftestlib2.cc <<_ACEOF
7858 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7859 struct S2: S1<int> { virtual ~S2(); };
7860 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7861 _ACEOF
7862         gccvisinlineshiddenok=yes
7863         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7864             gccvisinlineshiddenok=no
7865         else
7866             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7867             dnl known to not work with -z defs (unsetting which makes the test
7868             dnl moot, though):
7869             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7870             if test "$COM_IS_CLANG" = TRUE; then
7871                 for i in $CXX $CXXFLAGS; do
7872                     case $i in
7873                     -fsanitize=*)
7874                         my_linkflagsnoundefs=
7875                         break
7876                         ;;
7877                     esac
7878                 done
7879             fi
7880             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7881                 gccvisinlineshiddenok=no
7882             fi
7883         fi
7885         rm -fr libconftest*
7886         AC_MSG_RESULT([$gccvisinlineshiddenok])
7887         if test "$gccvisinlineshiddenok" = "no"; then
7888             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7889         fi
7890     fi
7892    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7893     cat >visibility.cxx <<_ACEOF
7894 #pragma GCC visibility push(hidden)
7895 struct __attribute__ ((visibility ("default"))) TestStruct {
7896   static void Init();
7898 __attribute__ ((visibility ("default"))) void TestFunc() {
7899   TestStruct::Init();
7901 _ACEOF
7902     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7903         gccvisbroken=yes
7904     else
7905         case "$host_cpu" in
7906         i?86|x86_64)
7907             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7908                 gccvisbroken=no
7909             else
7910                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7911                     gccvisbroken=no
7912                 else
7913                     gccvisbroken=yes
7914                 fi
7915             fi
7916             ;;
7917         *)
7918             gccvisbroken=no
7919             ;;
7920         esac
7921     fi
7922     rm -f visibility.s visibility.cxx
7924     AC_MSG_RESULT([$gccvisbroken])
7925     if test "$gccvisbroken" = "yes"; then
7926         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7927     fi
7929     CPPFLAGS="$save_CPPFLAGS"
7931     AC_LANG_POP([C++])
7934 dnl ===================================================================
7935 dnl  Clang++ tests
7936 dnl ===================================================================
7938 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7939 if test "$GCC" = "yes"; then
7940     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7941     AC_LANG_PUSH([C++])
7942     save_CXXFLAGS=$CXXFLAGS
7943     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7944     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7945     CXXFLAGS=$save_CXXFLAGS
7946     AC_LANG_POP([C++])
7947     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7948         AC_MSG_RESULT([yes])
7949     else
7950         AC_MSG_RESULT([no])
7951     fi
7953 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7955 dnl ===================================================================
7956 dnl Compiler plugins
7957 dnl ===================================================================
7959 COMPILER_PLUGINS=
7960 # currently only Clang
7962 if test "$COM_IS_CLANG" != "TRUE"; then
7963     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7964         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7965         enable_compiler_plugins=no
7966     fi
7969 COMPILER_PLUGINS_COM_IS_CLANG=
7970 if test "$COM_IS_CLANG" = "TRUE"; then
7971     if test -n "$enable_compiler_plugins"; then
7972         compiler_plugins="$enable_compiler_plugins"
7973     elif test -n "$ENABLE_DBGUTIL"; then
7974         compiler_plugins=test
7975     else
7976         compiler_plugins=no
7977     fi
7978     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7979         if test "$CLANGVER" -lt 50002; then
7980             if test "$compiler_plugins" = yes; then
7981                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7982             else
7983                 compiler_plugins=no
7984             fi
7985         fi
7986     fi
7987     if test "$compiler_plugins" != "no"; then
7988         dnl The prefix where Clang resides, override to where Clang resides if
7989         dnl using a source build:
7990         if test -z "$CLANGDIR"; then
7991             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
7992         fi
7993         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7994         if test -z "$COMPILER_PLUGINS_CXX"; then
7995             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7996         fi
7997         clangbindir=$CLANGDIR/bin
7998         if test "$build_os" = "cygwin"; then
7999             clangbindir=$(cygpath -u "$clangbindir")
8000         fi
8001         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8002         if test -n "$LLVM_CONFIG"; then
8003             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8004             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8005             if test -z "$CLANGLIBDIR"; then
8006                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8007             fi
8008             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8009             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8010             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8011             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8012                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8013             fi
8014             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8015             clangobjdir=$($LLVM_CONFIG --obj-root)
8016             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8017                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8018             fi
8019         fi
8020         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8021         AC_LANG_PUSH([C++])
8022         save_CXX=$CXX
8023         save_CXXCPP=$CXXCPP
8024         save_CPPFLAGS=$CPPFLAGS
8025         save_CXXFLAGS=$CXXFLAGS
8026         save_LDFLAGS=$LDFLAGS
8027         save_LIBS=$LIBS
8028         CXX=$COMPILER_PLUGINS_CXX
8029         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8030         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8031         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8032         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8033             [COMPILER_PLUGINS=TRUE],
8034             [
8035             if test "$compiler_plugins" = "yes"; then
8036                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8037             else
8038                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8039                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8040             fi
8041             ])
8042         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8043         dnl comment in compilerplugins/Makefile-clang.mk:
8044         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8045             LDFLAGS=""
8046             AC_MSG_CHECKING([for clang libraries to use])
8047             if test -z "$CLANGTOOLLIBS"; then
8048                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8049  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8050                 AC_LINK_IFELSE([
8051                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8052                         [[ clang::FullSourceLoc().dump(); ]])
8053                 ],[CLANGTOOLLIBS="$LIBS"],[])
8054             fi
8055             if test -z "$CLANGTOOLLIBS"; then
8056                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8057                 AC_LINK_IFELSE([
8058                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8059                         [[ clang::FullSourceLoc().dump(); ]])
8060                 ],[CLANGTOOLLIBS="$LIBS"],[])
8061             fi
8062             AC_MSG_RESULT([$CLANGTOOLLIBS])
8063             if test -z "$CLANGTOOLLIBS"; then
8064                 if test "$compiler_plugins" = "yes"; then
8065                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8066                 else
8067                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8068                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8069                 fi
8070                 COMPILER_PLUGINS=
8071             fi
8072             if test -n "$COMPILER_PLUGINS"; then
8073                 if test -z "$CLANGSYSINCLUDE"; then
8074                     if test -n "$LLVM_CONFIG"; then
8075                         # Path to the clang system headers (no idea if there's a better way to get it).
8076                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8077                     fi
8078                 fi
8079             fi
8080         fi
8081         CXX=$save_CXX
8082         CXXCPP=$save_CXXCPP
8083         CPPFLAGS=$save_CPPFLAGS
8084         CXXFLAGS=$save_CXXFLAGS
8085         LDFLAGS=$save_LDFLAGS
8086         LIBS="$save_LIBS"
8087         AC_LANG_POP([C++])
8089         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8090         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8091             #ifndef __clang__
8092             you lose
8093             #endif
8094             int foo=42;
8095             ]])],
8096             [AC_MSG_RESULT([yes])
8097              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8098             [AC_MSG_RESULT([no])])
8099         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8100     fi
8101 else
8102     if test "$enable_compiler_plugins" = "yes"; then
8103         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8104     fi
8106 COMPILER_PLUGINS_ANALYZER_PCH=
8107 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8108     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8110 AC_SUBST(COMPILER_PLUGINS)
8111 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8112 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8113 AC_SUBST(COMPILER_PLUGINS_CXX)
8114 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8115 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8116 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8117 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8118 AC_SUBST(CLANGDIR)
8119 AC_SUBST(CLANGLIBDIR)
8120 AC_SUBST(CLANGTOOLLIBS)
8121 AC_SUBST(CLANGSYSINCLUDE)
8123 # Plugin to help linker.
8124 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8125 # This makes --enable-lto build with clang work.
8126 AC_SUBST(LD_PLUGIN)
8128 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8129 AC_SUBST(HAVE_POSIX_FALLOCATE)
8131 JITC_PROCESSOR_TYPE=""
8132 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8133     # IBMs JDK needs this...
8134     JITC_PROCESSOR_TYPE=6
8135     export JITC_PROCESSOR_TYPE
8137 AC_SUBST([JITC_PROCESSOR_TYPE])
8139 # Misc Windows Stuff
8140 AC_ARG_WITH(ucrt-dir,
8141     AS_HELP_STRING([--with-ucrt-dir],
8142         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8143         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8144         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8145             Windows6.1-KB2999226-x64.msu
8146             Windows6.1-KB2999226-x86.msu
8147             Windows8.1-KB2999226-x64.msu
8148             Windows8.1-KB2999226-x86.msu
8149             Windows8-RT-KB2999226-x64.msu
8150             Windows8-RT-KB2999226-x86.msu
8151         A zip archive including those files is available from Microsoft site:
8152         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8155 UCRT_REDISTDIR="$with_ucrt_dir"
8156 if test $_os = "WINNT"; then
8157     find_msvc_x64_dlls
8158     for i in $PKGFORMAT; do
8159         if test "$i" = msi; then
8160             find_msms
8161             break
8162         fi
8163     done
8164     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8165     MSVC_DLLS="$msvcdlls"
8166     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8167     # MSVC 15.3 changed it to VC141
8168     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8169         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8170     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8171         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8172     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8173         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8174     else
8175         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8176     fi
8178     if test "$UCRT_REDISTDIR" = "no"; then
8179         dnl explicitly disabled
8180         UCRT_REDISTDIR=""
8181     else
8182         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8183                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8184                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8185                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8186                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8187                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8188             UCRT_REDISTDIR=""
8189             if test -n "$PKGFORMAT"; then
8190                for i in $PKGFORMAT; do
8191                    case "$i" in
8192                    msi)
8193                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8194                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8195                        ;;
8196                    esac
8197                done
8198             fi
8199         fi
8200     fi
8203 AC_SUBST(UCRT_REDISTDIR)
8204 AC_SUBST(MSVC_DLL_PATH)
8205 AC_SUBST(MSVC_DLLS)
8206 AC_SUBST(MSM_PATH)
8209 dnl ===================================================================
8210 dnl Checks for Java
8211 dnl ===================================================================
8212 if test "$ENABLE_JAVA" != ""; then
8214     # Windows-specific tests
8215     if test "$build_os" = "cygwin"; then
8216         if test -z "$with_jdk_home"; then
8217             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8218             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8219             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8220             if test -n "$regvalue"; then
8221                 ver=$regvalue
8222                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8223                 with_jdk_home=$regvalue
8224             fi
8225             howfound="found automatically"
8226         else
8227             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8228             howfound="you passed"
8229         fi
8231         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8232             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])
8233         fi
8234     fi
8236     # 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.
8237     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8238     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8239         with_jdk_home=`/usr/libexec/java_home`
8240     fi
8242     JAVA_HOME=; export JAVA_HOME
8243     if test -z "$with_jdk_home"; then
8244         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8245     else
8246         _java_path="$with_jdk_home/bin/$with_java"
8247         dnl Check if there is a Java interpreter at all.
8248         if test -x "$_java_path"; then
8249             JAVAINTERPRETER=$_java_path
8250         else
8251             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8252         fi
8253     fi
8255     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8256     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8257     dnl loaded by java to run JunitTests:
8258     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8259         shortjdkhome=`cygpath -d "$with_jdk_home"`
8260         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
8261             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8262             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8263         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
8264             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8265             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8266         fi
8268         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8269             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8270         fi
8271         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8272     elif test "$cross_compiling" != "yes"; then
8273         case $CPUNAME in
8274             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8275                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8276                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8277                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8278                 fi
8279                 ;;
8280             *) # assumption: everything else 32-bit
8281                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8282                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8283                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8284                 fi
8285                 ;;
8286         esac
8287     fi
8290 dnl ===================================================================
8291 dnl Checks for JDK.
8292 dnl ===================================================================
8294 # Whether all the complexity here actually is needed any more or not, no idea.
8296 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8297     _gij_longver=0
8298     AC_MSG_CHECKING([the installed JDK])
8299     if test -n "$JAVAINTERPRETER"; then
8300         dnl java -version sends output to stderr!
8301         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8302             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8303         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8304             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8305         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8306             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8307         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8308             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8309         else
8310             JDK=sun
8312             dnl Sun JDK specific tests
8313             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8314             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8316             if test "$_jdk_ver" -lt 10900; then
8317                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8318             fi
8319             if test "$_jdk_ver" -gt 10900; then
8320                 JAVA_CLASSPATH_NOT_SET=TRUE
8321             fi
8323             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8324             if test "$_os" = "WINNT"; then
8325                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8326             fi
8327             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8329             # set to limit VM usage for JunitTests
8330             JAVAIFLAGS=-Xmx64M
8331             # set to limit VM usage for javac
8332             JAVACFLAGS=-J-Xmx128M
8333         fi
8334     else
8335         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8336     fi
8337 else
8338     if test -z "$ENABLE_JAVA"; then
8339         dnl Java disabled
8340         JAVA_HOME=
8341         export JAVA_HOME
8342     elif test "$cross_compiling" = "yes"; then
8343         # Just assume compatibility of build and host JDK
8344         JDK=$JDK_FOR_BUILD
8345         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8346     fi
8349 dnl ===================================================================
8350 dnl Checks for javac
8351 dnl ===================================================================
8352 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8353     javacompiler="javac"
8354     : ${JAVA_SOURCE_VER=8}
8355     : ${JAVA_TARGET_VER=8}
8356     if test -z "$with_jdk_home"; then
8357         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8358     else
8359         _javac_path="$with_jdk_home/bin/$javacompiler"
8360         dnl Check if there is a Java compiler at all.
8361         if test -x "$_javac_path"; then
8362             JAVACOMPILER=$_javac_path
8363         fi
8364     fi
8365     if test -z "$JAVACOMPILER"; then
8366         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8367     fi
8368     if test "$build_os" = "cygwin"; then
8369         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8370             JAVACOMPILER="${JAVACOMPILER}.exe"
8371         fi
8372         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8373     fi
8376 dnl ===================================================================
8377 dnl Checks for javadoc
8378 dnl ===================================================================
8379 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8380     if test -z "$with_jdk_home"; then
8381         AC_PATH_PROG(JAVADOC, javadoc)
8382     else
8383         _javadoc_path="$with_jdk_home/bin/javadoc"
8384         dnl Check if there is a javadoc at all.
8385         if test -x "$_javadoc_path"; then
8386             JAVADOC=$_javadoc_path
8387         else
8388             AC_PATH_PROG(JAVADOC, javadoc)
8389         fi
8390     fi
8391     if test -z "$JAVADOC"; then
8392         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8393     fi
8394     if test "$build_os" = "cygwin"; then
8395         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8396             JAVADOC="${JAVADOC}.exe"
8397         fi
8398         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8399     fi
8401     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8402     JAVADOCISGJDOC="yes"
8403     fi
8405 AC_SUBST(JAVADOC)
8406 AC_SUBST(JAVADOCISGJDOC)
8408 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8409     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8410     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8411         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8412            # try to recover first by looking whether we have an alternative
8413            # system as in Debian or newer SuSEs where following /usr/bin/javac
8414            # over /etc/alternatives/javac leads to the right bindir where we
8415            # just need to strip a bit away to get a valid JAVA_HOME
8416            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8417         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8418             # maybe only one level of symlink (e.g. on Mac)
8419             JAVA_HOME=$(readlink $JAVACOMPILER)
8420             if test "$(dirname $JAVA_HOME)" = "."; then
8421                 # we've got no path to trim back
8422                 JAVA_HOME=""
8423             fi
8424         else
8425             # else warn
8426             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8427             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8428             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8429             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8430         fi
8431         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8432         if test "$JAVA_HOME" != "/usr"; then
8433             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8434                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8435                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8436                 dnl Tiger already returns a JDK path...
8437                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8438             else
8439                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8440                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8441                 dnl that checks which version to run
8442                 if test -f "$JAVA_HOME"; then
8443                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8444                 fi
8445             fi
8446         fi
8447     fi
8448     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8450     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8451     if test -z "$JAVA_HOME"; then
8452         if test "x$with_jdk_home" = "x"; then
8453             cat > findhome.java <<_ACEOF
8454 [import java.io.File;
8456 class findhome
8458     public static void main(String args[])
8459     {
8460         String jrelocation = System.getProperty("java.home");
8461         File jre = new File(jrelocation);
8462         System.out.println(jre.getParent());
8463     }
8465 _ACEOF
8466             AC_MSG_CHECKING([if javac works])
8467             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8468             AC_TRY_EVAL(javac_cmd)
8469             if test $? = 0 -a -f ./findhome.class; then
8470                 AC_MSG_RESULT([javac works])
8471             else
8472                 echo "configure: javac test failed" >&5
8473                 cat findhome.java >&5
8474                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8475             fi
8476             AC_MSG_CHECKING([if gij knows its java.home])
8477             JAVA_HOME=`$JAVAINTERPRETER findhome`
8478             if test $? = 0 -a "$JAVA_HOME" != ""; then
8479                 AC_MSG_RESULT([$JAVA_HOME])
8480             else
8481                 echo "configure: java test failed" >&5
8482                 cat findhome.java >&5
8483                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8484             fi
8485             # clean-up after ourselves
8486             rm -f ./findhome.java ./findhome.class
8487         else
8488             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8489         fi
8490     fi
8492     # now check if $JAVA_HOME is really valid
8493     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8494         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8495             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8496             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8497             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8498             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8499             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8500             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8501         fi
8502     fi
8503     PathFormat "$JAVA_HOME"
8504     JAVA_HOME="$formatted_path"
8507 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8508     "$_os" != Darwin
8509 then
8510     AC_MSG_CHECKING([for JAWT lib])
8511     if test "$_os" = WINNT; then
8512         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8513         JAWTLIB=jawt.lib
8514     else
8515         case "$host_cpu" in
8516         arm*)
8517             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8518             JAVA_ARCH=$my_java_arch
8519             ;;
8520         i*86)
8521             my_java_arch=i386
8522             ;;
8523         m68k)
8524             my_java_arch=m68k
8525             ;;
8526         powerpc)
8527             my_java_arch=ppc
8528             ;;
8529         powerpc64)
8530             my_java_arch=ppc64
8531             ;;
8532         powerpc64le)
8533             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8534             JAVA_ARCH=$my_java_arch
8535             ;;
8536         sparc64)
8537             my_java_arch=sparcv9
8538             ;;
8539         x86_64)
8540             my_java_arch=amd64
8541             ;;
8542         *)
8543             my_java_arch=$host_cpu
8544             ;;
8545         esac
8546         # This is where JDK9 puts the library
8547         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8548             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8549         else
8550             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8551         fi
8552         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8553     fi
8554     AC_MSG_RESULT([$JAWTLIB])
8556 AC_SUBST(JAWTLIB)
8558 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8559     case "$host_os" in
8561     aix*)
8562         JAVAINC="-I$JAVA_HOME/include"
8563         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8564         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8565         ;;
8567     cygwin*|wsl*)
8568         JAVAINC="-I$JAVA_HOME/include/win32"
8569         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8570         ;;
8572     darwin*|macos*)
8573         if test -d "$JAVA_HOME/include/darwin"; then
8574             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8575         else
8576             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8577         fi
8578         ;;
8580     dragonfly*)
8581         JAVAINC="-I$JAVA_HOME/include"
8582         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8583         ;;
8585     freebsd*)
8586         JAVAINC="-I$JAVA_HOME/include"
8587         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8588         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8589         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8590         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8591         ;;
8593     k*bsd*-gnu*)
8594         JAVAINC="-I$JAVA_HOME/include"
8595         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8596         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8597         ;;
8599     linux-gnu*)
8600         JAVAINC="-I$JAVA_HOME/include"
8601         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8602         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8603         ;;
8605     *netbsd*)
8606         JAVAINC="-I$JAVA_HOME/include"
8607         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8608         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8609        ;;
8611     openbsd*)
8612         JAVAINC="-I$JAVA_HOME/include"
8613         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8614         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8615         ;;
8617     solaris*)
8618         JAVAINC="-I$JAVA_HOME/include"
8619         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8620         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8621         ;;
8622     esac
8624 SOLARINC="$SOLARINC $JAVAINC"
8626 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8627     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8628     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8629     JDK_FOR_BUILD=$JDK
8632 AC_SUBST(JAVACFLAGS)
8633 AC_SUBST(JAVACOMPILER)
8634 AC_SUBST(JAVAINTERPRETER)
8635 AC_SUBST(JAVAIFLAGS)
8636 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8637 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8638 AC_SUBST(JAVA_HOME)
8639 AC_SUBST(JAVA_HOME_FOR_BUILD)
8640 AC_SUBST(JDK)
8641 AC_SUBST(JDK_FOR_BUILD)
8642 AC_SUBST(JAVA_SOURCE_VER)
8643 AC_SUBST(JAVA_TARGET_VER)
8646 dnl ===================================================================
8647 dnl Export file validation
8648 dnl ===================================================================
8649 AC_MSG_CHECKING([whether to enable export file validation])
8650 if test "$with_export_validation" != "no"; then
8651     if test -z "$ENABLE_JAVA"; then
8652         if test "$with_export_validation" = "yes"; then
8653             AC_MSG_ERROR([requested, but Java is disabled])
8654         else
8655             AC_MSG_RESULT([no, as Java is disabled])
8656         fi
8657     elif ! test -d "${SRC_ROOT}/schema"; then
8658         if test "$with_export_validation" = "yes"; then
8659             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8660         else
8661             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8662         fi
8663     else
8664         AC_MSG_RESULT([yes])
8665         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8667         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8668         if test -z "$ODFVALIDATOR"; then
8669             # remember to download the ODF toolkit with validator later
8670             AC_MSG_NOTICE([no odfvalidator found, will download it])
8671             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8672             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8674             # and fetch name of odfvalidator jar name from download.lst
8675             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8676             AC_SUBST(ODFVALIDATOR_JAR)
8678             if test -z "$ODFVALIDATOR_JAR"; then
8679                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8680             fi
8681         fi
8682         if test "$build_os" = "cygwin"; then
8683             # In case of Cygwin it will be executed from Windows,
8684             # so we need to run bash and absolute path to validator
8685             # so instead of "odfvalidator" it will be
8686             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8687             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8688         else
8689             ODFVALIDATOR="sh $ODFVALIDATOR"
8690         fi
8691         AC_SUBST(ODFVALIDATOR)
8694         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8695         if test -z "$OFFICEOTRON"; then
8696             # remember to download the officeotron with validator later
8697             AC_MSG_NOTICE([no officeotron found, will download it])
8698             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8699             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8701             # and fetch name of officeotron jar name from download.lst
8702             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8703             AC_SUBST(OFFICEOTRON_JAR)
8705             if test -z "$OFFICEOTRON_JAR"; then
8706                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8707             fi
8708         else
8709             # check version of existing officeotron
8710             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8711             if test 0"$OFFICEOTRON_VER" -lt 704; then
8712                 AC_MSG_ERROR([officeotron too old])
8713             fi
8714         fi
8715         if test "$build_os" = "cygwin"; then
8716             # In case of Cygwin it will be executed from Windows,
8717             # so we need to run bash and absolute path to validator
8718             # so instead of "odfvalidator" it will be
8719             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8720             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8721         else
8722             OFFICEOTRON="sh $OFFICEOTRON"
8723         fi
8724     fi
8725     AC_SUBST(OFFICEOTRON)
8726 else
8727     AC_MSG_RESULT([no])
8730 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8731 if test "$with_bffvalidator" != "no"; then
8732     AC_DEFINE(HAVE_BFFVALIDATOR)
8734     if test "$with_export_validation" = "no"; then
8735         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8736     fi
8738     if test "$with_bffvalidator" = "yes"; then
8739         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8740     else
8741         BFFVALIDATOR="$with_bffvalidator"
8742     fi
8744     if test "$build_os" = "cygwin"; then
8745         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8746             AC_MSG_RESULT($BFFVALIDATOR)
8747         else
8748             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8749         fi
8750     elif test -n "$BFFVALIDATOR"; then
8751         # We are not in Cygwin but need to run Windows binary with wine
8752         AC_PATH_PROGS(WINE, wine)
8754         # so swap in a shell wrapper that converts paths transparently
8755         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8756         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8757         AC_SUBST(BFFVALIDATOR_EXE)
8758         AC_MSG_RESULT($BFFVALIDATOR)
8759     else
8760         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8761     fi
8762     AC_SUBST(BFFVALIDATOR)
8763 else
8764     AC_MSG_RESULT([no])
8767 dnl ===================================================================
8768 dnl Check for C preprocessor to use
8769 dnl ===================================================================
8770 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8771 SYSTEM_UCPP_IS_GCC=
8772 if test -n "$with_idlc_cpp"; then
8773     AC_MSG_RESULT([$with_idlc_cpp])
8774     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8775     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8776     # ucpp will accept -v (to output version), warn about the others as unknown
8777     # and return 1 (due to -v)
8778     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8779     # and return 0 (due to --version ) if all options are supported
8780     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8781     if test $? -eq 0;  then
8782         SYSTEM_UCPP_IS_GCC=TRUE
8783         AC_MSG_RESULT([yes])
8784     else
8785         AC_MSG_RESULT([no])
8786     fi
8787 else
8788     AC_MSG_RESULT([ucpp])
8789     AC_MSG_CHECKING([which ucpp to use])
8790     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8791         AC_MSG_RESULT([external])
8792         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8793     else
8794         AC_MSG_RESULT([internal])
8795         BUILD_TYPE="$BUILD_TYPE UCPP"
8796     fi
8798 AC_SUBST(SYSTEM_UCPP)
8799 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8801 dnl ===================================================================
8802 dnl Check for epm (not needed for Windows)
8803 dnl ===================================================================
8804 AC_MSG_CHECKING([whether to enable EPM for packing])
8805 if test "$enable_epm" = "yes"; then
8806     AC_MSG_RESULT([yes])
8807     if test "$_os" != "WINNT"; then
8808         if test $_os = Darwin; then
8809             EPM=internal
8810         elif test -n "$with_epm"; then
8811             EPM=$with_epm
8812         else
8813             AC_PATH_PROG(EPM, epm, no)
8814         fi
8815         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8816             AC_MSG_NOTICE([EPM will be built.])
8817             BUILD_TYPE="$BUILD_TYPE EPM"
8818             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8819         else
8820             # Gentoo has some epm which is something different...
8821             AC_MSG_CHECKING([whether the found epm is the right epm])
8822             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8823                 AC_MSG_RESULT([yes])
8824             else
8825                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8826             fi
8827             AC_MSG_CHECKING([epm version])
8828             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8829             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8830                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8831                 AC_MSG_RESULT([OK, >= 3.7])
8832             else
8833                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8834                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8835             fi
8836         fi
8837     fi
8839     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8840         AC_MSG_CHECKING([for rpm])
8841         for a in "$RPM" rpmbuild rpm; do
8842             $a --usage >/dev/null 2> /dev/null
8843             if test $? -eq 0; then
8844                 RPM=$a
8845                 break
8846             else
8847                 $a --version >/dev/null 2> /dev/null
8848                 if test $? -eq 0; then
8849                     RPM=$a
8850                     break
8851                 fi
8852             fi
8853         done
8854         if test -z "$RPM"; then
8855             AC_MSG_ERROR([not found])
8856         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8857             RPM_PATH=`which $RPM`
8858             AC_MSG_RESULT([$RPM_PATH])
8859             SCPDEFS="$SCPDEFS -DWITH_RPM"
8860         else
8861             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8862         fi
8863     fi
8864     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8865         AC_PATH_PROG(DPKG, dpkg, no)
8866         if test "$DPKG" = "no"; then
8867             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8868         fi
8869     fi
8870     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8871        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8872         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8873             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8874                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8875                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8876                     AC_MSG_RESULT([yes])
8877                 else
8878                     AC_MSG_RESULT([no])
8879                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8880                         _pt="rpm"
8881                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8882                         add_warning "the rpms will need to be installed with --nodeps"
8883                     else
8884                         _pt="pkg"
8885                     fi
8886                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8887                     add_warning "the ${_pt}s will not be relocatable"
8888                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8889                                  relocation will work, you need to patch your epm with the
8890                                  patch in epm/epm-3.7.patch or build with
8891                                  --with-epm=internal which will build a suitable epm])
8892                 fi
8893             fi
8894         fi
8895     fi
8896     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8897         AC_PATH_PROG(PKGMK, pkgmk, no)
8898         if test "$PKGMK" = "no"; then
8899             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8900         fi
8901     fi
8902     AC_SUBST(RPM)
8903     AC_SUBST(DPKG)
8904     AC_SUBST(PKGMK)
8905 else
8906     for i in $PKGFORMAT; do
8907         case "$i" in
8908         aix | bsd | deb | pkg | rpm | native | portable)
8909             AC_MSG_ERROR(
8910                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8911             ;;
8912         esac
8913     done
8914     AC_MSG_RESULT([no])
8915     EPM=NO
8917 AC_SUBST(EPM)
8919 ENABLE_LWP=
8920 if test "$enable_lotuswordpro" = "yes"; then
8921     ENABLE_LWP="TRUE"
8923 AC_SUBST(ENABLE_LWP)
8925 dnl ===================================================================
8926 dnl Check for building ODK
8927 dnl ===================================================================
8928 if test "$enable_odk" != yes; then
8929     unset DOXYGEN
8930 else
8931     if test "$with_doxygen" = no; then
8932         AC_MSG_CHECKING([for doxygen])
8933         unset DOXYGEN
8934         AC_MSG_RESULT([no])
8935     else
8936         if test "$with_doxygen" = yes; then
8937             AC_PATH_PROG([DOXYGEN], [doxygen])
8938             if test -z "$DOXYGEN"; then
8939                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8940             fi
8941             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8942                 if ! dot -V 2>/dev/null; then
8943                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8944                 fi
8945             fi
8946         else
8947             AC_MSG_CHECKING([for doxygen])
8948             DOXYGEN=$with_doxygen
8949             AC_MSG_RESULT([$DOXYGEN])
8950         fi
8951         if test -n "$DOXYGEN"; then
8952             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8953             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8954             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8955                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8956             fi
8957         fi
8958     fi
8960 AC_SUBST([DOXYGEN])
8962 AC_MSG_CHECKING([whether to build the ODK])
8963 if test "$enable_odk" = yes; then
8964     AC_MSG_RESULT([yes])
8965     BUILD_TYPE="$BUILD_TYPE ODK"
8966 else
8967     AC_MSG_RESULT([no])
8970 dnl ===================================================================
8971 dnl Check for system zlib
8972 dnl ===================================================================
8973 if test "$with_system_zlib" = "auto"; then
8974     case "$_os" in
8975     WINNT)
8976         with_system_zlib="$with_system_libs"
8977         ;;
8978     *)
8979         if test "$enable_fuzzers" != "yes"; then
8980             with_system_zlib=yes
8981         else
8982             with_system_zlib=no
8983         fi
8984         ;;
8985     esac
8988 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8989 dnl and has no pkg-config for it at least on some tinderboxes,
8990 dnl so leaving that out for now
8991 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8992 AC_MSG_CHECKING([which zlib to use])
8993 if test "$with_system_zlib" = "yes"; then
8994     AC_MSG_RESULT([external])
8995     SYSTEM_ZLIB=TRUE
8996     AC_CHECK_HEADER(zlib.h, [],
8997         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8998     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8999         [AC_MSG_ERROR(zlib not found or functional)], [])
9000 else
9001     AC_MSG_RESULT([internal])
9002     SYSTEM_ZLIB=
9003     BUILD_TYPE="$BUILD_TYPE ZLIB"
9004     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9005     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9007 AC_SUBST(ZLIB_CFLAGS)
9008 AC_SUBST(ZLIB_LIBS)
9009 AC_SUBST(SYSTEM_ZLIB)
9011 dnl ===================================================================
9012 dnl Check for system jpeg
9013 dnl ===================================================================
9014 AC_MSG_CHECKING([which libjpeg to use])
9015 if test "$with_system_jpeg" = "yes"; then
9016     AC_MSG_RESULT([external])
9017     SYSTEM_LIBJPEG=TRUE
9018     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9019         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9020     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9021         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9022 else
9023     SYSTEM_LIBJPEG=
9024     AC_MSG_RESULT([internal, libjpeg-turbo])
9025     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9027     case "$host_cpu" in
9028     x86_64 | amd64 | i*86 | x86 | ia32)
9029         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9030         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9031             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9032                 NASM="$LODE_HOME/opt/bin/nasm"
9033             elif test -x "/opt/lo/bin/nasm"; then
9034                 NASM="/opt/lo/bin/nasm"
9035             fi
9036         fi
9038         if test -n "$NASM"; then
9039             AC_MSG_CHECKING([for object file format of host system])
9040             case "$host_os" in
9041               cygwin* | mingw* | pw32* | wsl*)
9042                 case "$host_cpu" in
9043                   x86_64)
9044                     objfmt='Win64-COFF'
9045                     ;;
9046                   *)
9047                     objfmt='Win32-COFF'
9048                     ;;
9049                 esac
9050               ;;
9051               msdosdjgpp* | go32*)
9052                 objfmt='COFF'
9053               ;;
9054               os2-emx*) # not tested
9055                 objfmt='MSOMF' # obj
9056               ;;
9057               linux*coff* | linux*oldld*)
9058                 objfmt='COFF' # ???
9059               ;;
9060               linux*aout*)
9061                 objfmt='a.out'
9062               ;;
9063               linux*)
9064                 case "$host_cpu" in
9065                   x86_64)
9066                     objfmt='ELF64'
9067                     ;;
9068                   *)
9069                     objfmt='ELF'
9070                     ;;
9071                 esac
9072               ;;
9073               kfreebsd* | freebsd* | netbsd* | openbsd*)
9074                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9075                   objfmt='BSD-a.out'
9076                 else
9077                   case "$host_cpu" in
9078                     x86_64 | amd64)
9079                       objfmt='ELF64'
9080                       ;;
9081                     *)
9082                       objfmt='ELF'
9083                       ;;
9084                   esac
9085                 fi
9086               ;;
9087               solaris* | sunos* | sysv* | sco*)
9088                 case "$host_cpu" in
9089                   x86_64)
9090                     objfmt='ELF64'
9091                     ;;
9092                   *)
9093                     objfmt='ELF'
9094                     ;;
9095                 esac
9096               ;;
9097               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9098                 case "$host_cpu" in
9099                   x86_64)
9100                     objfmt='Mach-O64'
9101                     ;;
9102                   *)
9103                     objfmt='Mach-O'
9104                     ;;
9105                 esac
9106               ;;
9107               *)
9108                 objfmt='ELF ?'
9109               ;;
9110             esac
9112             AC_MSG_RESULT([$objfmt])
9113             if test "$objfmt" = 'ELF ?'; then
9114               objfmt='ELF'
9115               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9116             fi
9118             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9119             case "$objfmt" in
9120               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9121               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9122               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9123               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9124               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9125               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9126               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9127               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9128               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9129               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9130               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9131             esac
9132             AC_MSG_RESULT([$NAFLAGS])
9134             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9135             cat > conftest.asm << EOF
9136             [%line __oline__ "configure"
9137                     section .text
9138                     global  _main,main
9139             _main:
9140             main:   xor     eax,eax
9141                     ret
9142             ]
9144             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9145             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9146               AC_MSG_RESULT(yes)
9147             else
9148               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9149               cat conftest.asm >&AS_MESSAGE_LOG_FD
9150               rm -rf conftest*
9151               AC_MSG_RESULT(no)
9152               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9153               NASM=""
9154             fi
9156         fi
9158         if test -z "$NASM"; then
9159 cat << _EOS
9160 ****************************************************************************
9161 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9162 To get one please:
9164 _EOS
9165             if test "$build_os" = "cygwin"; then
9166 cat << _EOS
9167 install a pre-compiled binary for Win32
9169 mkdir -p /opt/lo/bin
9170 cd /opt/lo/bin
9171 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9172 chmod +x nasm
9174 or get and install one from http://www.nasm.us/
9176 Then re-run autogen.sh
9178 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9179 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9181 _EOS
9182             else
9183 cat << _EOS
9184 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9186 _EOS
9187             fi
9188             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9189             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9190         fi
9191       ;;
9192     esac
9195 AC_SUBST(NASM)
9196 AC_SUBST(NAFLAGS)
9197 AC_SUBST(LIBJPEG_CFLAGS)
9198 AC_SUBST(LIBJPEG_LIBS)
9199 AC_SUBST(SYSTEM_LIBJPEG)
9201 dnl ===================================================================
9202 dnl Check for system clucene
9203 dnl ===================================================================
9204 dnl we should rather be using
9205 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9206 dnl but the contribs-lib check seems tricky
9207 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9208 AC_MSG_CHECKING([which clucene to use])
9209 if test "$with_system_clucene" = "yes"; then
9210     AC_MSG_RESULT([external])
9211     SYSTEM_CLUCENE=TRUE
9212     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9213     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9214     FilterLibs "${CLUCENE_LIBS}"
9215     CLUCENE_LIBS="${filteredlibs}"
9216     AC_LANG_PUSH([C++])
9217     save_CXXFLAGS=$CXXFLAGS
9218     save_CPPFLAGS=$CPPFLAGS
9219     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9220     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9221     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9222     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9223     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9224                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9225     CXXFLAGS=$save_CXXFLAGS
9226     CPPFLAGS=$save_CPPFLAGS
9227     AC_LANG_POP([C++])
9229     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9230 else
9231     AC_MSG_RESULT([internal])
9232     SYSTEM_CLUCENE=
9233     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9236 AC_SUBST(SYSTEM_CLUCENE)
9237 AC_SUBST(CLUCENE_CFLAGS)
9238 AC_SUBST(CLUCENE_LIBS)
9240 dnl ===================================================================
9241 dnl Check for system expat
9242 dnl ===================================================================
9243 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9245 dnl ===================================================================
9246 dnl Check for system xmlsec
9247 dnl ===================================================================
9248 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9250 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9251 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9252     ENABLE_EOT="TRUE"
9253     AC_DEFINE([ENABLE_EOT])
9254     AC_MSG_RESULT([yes])
9256     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9257 else
9258     ENABLE_EOT=
9259     AC_MSG_RESULT([no])
9261 AC_SUBST([ENABLE_EOT])
9263 dnl ===================================================================
9264 dnl Check for DLP libs
9265 dnl ===================================================================
9266 AS_IF([test "$COM" = "MSC"],
9267       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9268       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9270 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9272 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9274 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9276 AS_IF([test "$COM" = "MSC"],
9277       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9278       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9280 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9282 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9284 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9285 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9287 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9289 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9291 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9293 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9294 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9296 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9297 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9299 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9301 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9302 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9304 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9306 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9308 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9310 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9312 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9313 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9315 dnl ===================================================================
9316 dnl Check for system lcms2
9317 dnl ===================================================================
9318 if test "$with_system_lcms2" != "yes"; then
9319     SYSTEM_LCMS2=
9321 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9322 if test "$GCC" = "yes"; then
9323     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9325 if test "$COM" = "MSC"; then # override the above
9326     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9329 dnl ===================================================================
9330 dnl Check for system cppunit
9331 dnl ===================================================================
9332 if test "$_os" != "Android" ; then
9333     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9336 dnl ===================================================================
9337 dnl Check whether freetype is available
9338 dnl ===================================================================
9339 if test "$using_freetype_fontconfig" = yes; then
9340     AC_MSG_CHECKING([which freetype to use])
9342 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9343     AC_MSG_RESULT([external])
9344     # FreeType has 3 different kinds of versions
9345     # * release, like 2.4.10
9346     # * libtool, like 13.0.7 (this what pkg-config returns)
9347     # * soname
9348     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9349     #
9350     # 9.9.3 is 2.2.0
9351     # When the minimal version is at least 2.8.1, remove Skia's check down below.
9352     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9353     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9354     FilterLibs "${FREETYPE_LIBS}"
9355     FREETYPE_LIBS="${filteredlibs}"
9356     SYSTEM_FREETYPE=TRUE
9357 elif test "$using_freetype_fontconfig" = yes; then
9358     AC_MSG_RESULT([internal])
9359     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9360     if test "x$ac_config_site_64bit_host" = xYES; then
9361         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9362     else
9363         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9364     fi
9365     BUILD_TYPE="$BUILD_TYPE FREETYPE"
9367 AC_SUBST(FREETYPE_CFLAGS)
9368 AC_SUBST(FREETYPE_LIBS)
9369 AC_SUBST([SYSTEM_FREETYPE])
9371 # ===================================================================
9372 # Check for system libxslt
9373 # to prevent incompatibilities between internal libxml2 and external libxslt,
9374 # or vice versa, use with_system_libxml here
9375 # ===================================================================
9376 if test "$with_system_libxml" = "auto"; then
9377     case "$_os" in
9378     WINNT|iOS|Android)
9379         with_system_libxml="$with_system_libs"
9380         ;;
9381     Emscripten)
9382         with_system_libxml=no
9383         ;;
9384     *)
9385         if test "$enable_fuzzers" != "yes"; then
9386             with_system_libxml=yes
9387         else
9388             with_system_libxml=no
9389         fi
9390         ;;
9391     esac
9394 AC_MSG_CHECKING([which libxslt to use])
9395 if test "$with_system_libxml" = "yes"; then
9396     AC_MSG_RESULT([external])
9397     SYSTEM_LIBXSLT=TRUE
9398     if test "$_os" = "Darwin"; then
9399         dnl make sure to use SDK path
9400         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9401         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9402         dnl omit -L/usr/lib
9403         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9404         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9405     else
9406         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9407         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9408         FilterLibs "${LIBXSLT_LIBS}"
9409         LIBXSLT_LIBS="${filteredlibs}"
9410         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9411         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9412         FilterLibs "${LIBEXSLT_LIBS}"
9413         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9414     fi
9416     dnl Check for xsltproc
9417     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9418     if test "$XSLTPROC" = "no"; then
9419         AC_MSG_ERROR([xsltproc is required])
9420     fi
9421 else
9422     AC_MSG_RESULT([internal])
9423     SYSTEM_LIBXSLT=
9424     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9426 AC_SUBST(SYSTEM_LIBXSLT)
9427 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9428     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9430 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9432 AC_SUBST(LIBEXSLT_CFLAGS)
9433 AC_SUBST(LIBEXSLT_LIBS)
9434 AC_SUBST(LIBXSLT_CFLAGS)
9435 AC_SUBST(LIBXSLT_LIBS)
9436 AC_SUBST(XSLTPROC)
9438 # ===================================================================
9439 # Check for system libxml
9440 # ===================================================================
9441 AC_MSG_CHECKING([which libxml to use])
9442 if test "$with_system_libxml" = "yes"; then
9443     AC_MSG_RESULT([external])
9444     SYSTEM_LIBXML=TRUE
9445     if test "$_os" = "Darwin"; then
9446         dnl make sure to use SDK path
9447         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9448         dnl omit -L/usr/lib
9449         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9450     elif test $_os = iOS; then
9451         dnl make sure to use SDK path
9452         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9453         LIBXML_CFLAGS="-I$usr/include/libxml2"
9454         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9455     else
9456         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9457         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9458         FilterLibs "${LIBXML_LIBS}"
9459         LIBXML_LIBS="${filteredlibs}"
9460     fi
9462     dnl Check for xmllint
9463     AC_PATH_PROG(XMLLINT, xmllint, no)
9464     if test "$XMLLINT" = "no"; then
9465         AC_MSG_ERROR([xmllint is required])
9466     fi
9467 else
9468     AC_MSG_RESULT([internal])
9469     SYSTEM_LIBXML=
9470     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9471     if test "$COM" = "MSC"; then
9472         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9473     fi
9474     if test "$COM" = "MSC"; then
9475         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9476     else
9477         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9478         if test "$_os" = Android; then
9479             LIBXML_LIBS="$LIBXML_LIBS -lm"
9480         fi
9481     fi
9482     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9484 AC_SUBST(SYSTEM_LIBXML)
9485 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9486     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9488 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9489 AC_SUBST(LIBXML_CFLAGS)
9490 AC_SUBST(LIBXML_LIBS)
9491 AC_SUBST(XMLLINT)
9493 # =====================================================================
9494 # Checking for a Python interpreter with version >= 3.3.
9495 # Optionally user can pass an option to configure, i. e.
9496 # ./configure PYTHON=/usr/bin/python
9497 # =====================================================================
9498 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9499     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9500     # unless PYTHON is defined as above which allows 'system'
9501     enable_python=internal
9503 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9504     if test -n "$PYTHON"; then
9505         PYTHON_FOR_BUILD=$PYTHON
9506     else
9507         # This allows a lack of system python with no error, we use internal one in that case.
9508         AM_PATH_PYTHON([3.3],, [:])
9509         # Clean PYTHON_VERSION checked below if cross-compiling
9510         PYTHON_VERSION=""
9511         if test "$PYTHON" != ":"; then
9512             PYTHON_FOR_BUILD=$PYTHON
9513         fi
9514     fi
9516 AC_SUBST(PYTHON_FOR_BUILD)
9518 # Checks for Python to use for Pyuno
9519 AC_MSG_CHECKING([which Python to use for Pyuno])
9520 case "$enable_python" in
9521 no|disable)
9522     if test -z $PYTHON_FOR_BUILD; then
9523         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9524         # requirement from the choice whether to include Python stuff in the installer, but why
9525         # bother?
9526         if test "$cross_compiling" = yes; then
9527             enable_python=system
9528         else
9529             AC_MSG_ERROR([Python is required at build time.])
9530         fi
9531     fi
9532     enable_python=no
9533     AC_MSG_RESULT([none])
9534     ;;
9535 ""|yes|auto)
9536     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9537         AC_MSG_RESULT([no, overridden by --disable-scripting])
9538         enable_python=no
9539     elif test $build_os = cygwin; then
9540         dnl When building on Windows we don't attempt to use any installed
9541         dnl "system"  Python.
9542         AC_MSG_RESULT([fully internal])
9543         enable_python=internal
9544     elif test "$cross_compiling" = yes; then
9545         AC_MSG_RESULT([system])
9546         enable_python=system
9547     else
9548         # Unset variables set by the above AM_PATH_PYTHON so that
9549         # we actually do check anew.
9550         AC_MSG_RESULT([])
9551         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
9552         AM_PATH_PYTHON([3.3],, [:])
9553         AC_MSG_CHECKING([which Python to use for Pyuno])
9554         if test "$PYTHON" = ":"; then
9555             if test -z "$PYTHON_FOR_BUILD"; then
9556                 AC_MSG_RESULT([fully internal])
9557             else
9558                 AC_MSG_RESULT([internal])
9559             fi
9560             enable_python=internal
9561         else
9562             AC_MSG_RESULT([system])
9563             enable_python=system
9564         fi
9565     fi
9566     ;;
9567 internal)
9568     AC_MSG_RESULT([internal])
9569     ;;
9570 fully-internal)
9571     AC_MSG_RESULT([fully internal])
9572     enable_python=internal
9573     ;;
9574 system)
9575     AC_MSG_RESULT([system])
9576     if test "$_os" = Darwin -a -z "$PYTHON"; then
9577         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9578     fi
9579     ;;
9581     AC_MSG_ERROR([Incorrect --enable-python option])
9582     ;;
9583 esac
9585 if test $enable_python != no; then
9586     BUILD_TYPE="$BUILD_TYPE PYUNO"
9589 if test $enable_python = system; then
9590     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9591         # Fallback: Accept these in the environment, or as set above
9592         # for MacOSX.
9593         :
9594     elif test "$cross_compiling" != yes; then
9595         # Unset variables set by the above AM_PATH_PYTHON so that
9596         # we actually do check anew.
9597         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
9598         # This causes an error if no python command is found
9599         AM_PATH_PYTHON([3.3])
9600         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9601         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9602         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9603         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9604         if test -z "$PKG_CONFIG"; then
9605             PYTHON_CFLAGS="-I$python_include"
9606             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9607         elif $PKG_CONFIG --exists python-$python_version-embed; then
9608             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9609             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9610         elif $PKG_CONFIG --exists python-$python_version; then
9611             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9612             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9613         else
9614             PYTHON_CFLAGS="-I$python_include"
9615             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9616         fi
9617         FilterLibs "${PYTHON_LIBS}"
9618         PYTHON_LIBS="${filteredlibs}"
9619     else
9620         dnl How to find out the cross-compilation Python installation path?
9621         AC_MSG_CHECKING([for python version])
9622         AS_IF([test -n "$PYTHON_VERSION"],
9623               [AC_MSG_RESULT([$PYTHON_VERSION])],
9624               [AC_MSG_RESULT([not found])
9625                AC_MSG_ERROR([no usable python found])])
9626         test -n "$PYTHON_CFLAGS" && break
9627     fi
9629     dnl Check if the headers really work
9630     save_CPPFLAGS="$CPPFLAGS"
9631     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9632     AC_CHECK_HEADER(Python.h)
9633     CPPFLAGS="$save_CPPFLAGS"
9635     # let the PYTHON_FOR_BUILD match the same python installation that
9636     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9637     # better for PythonTests.
9638     PYTHON_FOR_BUILD=$PYTHON
9641 if test "$with_lxml" != no; then
9642     if test -z "$PYTHON_FOR_BUILD"; then
9643         case $build_os in
9644             cygwin)
9645                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9646                 ;;
9647             *)
9648                 if test "$cross_compiling" != yes ; then
9649                     BUILD_TYPE="$BUILD_TYPE LXML"
9650                 fi
9651                 ;;
9652         esac
9653     else
9654         AC_MSG_CHECKING([for python lxml])
9655         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9656             AC_MSG_RESULT([yes])
9657         else
9658             case $build_os in
9659                 cygwin)
9660                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9661                     ;;
9662                 *)
9663                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9664                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9665                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9666                         else
9667                             BUILD_TYPE="$BUILD_TYPE LXML"
9668                             AC_MSG_RESULT([no, using internal lxml])
9669                         fi
9670                     else
9671                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9672                     fi
9673                     ;;
9674             esac
9675         fi
9676     fi
9679 dnl By now enable_python should be "system", "internal" or "no"
9680 case $enable_python in
9681 system)
9682     SYSTEM_PYTHON=TRUE
9684     if test "x$ac_cv_header_Python_h" != "xyes"; then
9685        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9686     fi
9688     AC_LANG_PUSH(C)
9689     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9690     AC_MSG_CHECKING([for correct python library version])
9691        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9692 #include <Python.h>
9694 int main(int argc, char **argv) {
9695    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9696    else return 1;
9698        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9699     AC_LANG_POP(C)
9701     dnl FIXME Check if the Python library can be linked with, too?
9702     ;;
9704 internal)
9705     SYSTEM_PYTHON=
9706     PYTHON_VERSION_MAJOR=3
9707     PYTHON_VERSION_MINOR=8
9708     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9709     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9710         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9711     fi
9712     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9713     BUILD_TYPE="$BUILD_TYPE PYTHON"
9714     if test "$OS" = LINUX -o "$OS" = WNT ; then
9715         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9716     fi
9717     # Embedded Python dies without Home set
9718     if test "$HOME" = ""; then
9719         export HOME=""
9720     fi
9721     ;;
9723     DISABLE_PYTHON=TRUE
9724     SYSTEM_PYTHON=
9725     ;;
9727     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9728     ;;
9729 esac
9731 AC_SUBST(DISABLE_PYTHON)
9732 AC_SUBST(SYSTEM_PYTHON)
9733 AC_SUBST(PYTHON_CFLAGS)
9734 AC_SUBST(PYTHON_LIBS)
9735 AC_SUBST(PYTHON_VERSION)
9736 AC_SUBST(PYTHON_VERSION_MAJOR)
9737 AC_SUBST(PYTHON_VERSION_MINOR)
9739 AC_MSG_CHECKING([whether to build LibreLogo])
9740 case "$enable_python" in
9741 no|disable)
9742     AC_MSG_RESULT([no; Python disabled])
9743     ;;
9745     if test "${enable_librelogo}" = "no"; then
9746         AC_MSG_RESULT([no])
9747     else
9748         AC_MSG_RESULT([yes])
9749         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9750         AC_DEFINE([ENABLE_LIBRELOGO],1)
9751     fi
9752     ;;
9753 esac
9754 AC_SUBST(ENABLE_LIBRELOGO)
9756 ENABLE_MARIADBC=
9757 MARIADBC_MAJOR=1
9758 MARIADBC_MINOR=0
9759 MARIADBC_MICRO=2
9760 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9761 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9762     ENABLE_MARIADBC=TRUE
9763     AC_MSG_RESULT([yes])
9764     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9765 else
9766     AC_MSG_RESULT([no])
9768 AC_SUBST(ENABLE_MARIADBC)
9769 AC_SUBST(MARIADBC_MAJOR)
9770 AC_SUBST(MARIADBC_MINOR)
9771 AC_SUBST(MARIADBC_MICRO)
9773 if test "$ENABLE_MARIADBC" = "TRUE"; then
9774     dnl ===================================================================
9775     dnl Check for system MariaDB
9776     dnl ===================================================================
9777     AC_MSG_CHECKING([which MariaDB to use])
9778     if test "$with_system_mariadb" = "yes"; then
9779         AC_MSG_RESULT([external])
9780         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9781         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9782         if test -z "$MARIADBCONFIG"; then
9783             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9784             if test -z "$MARIADBCONFIG"; then
9785                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9786                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9787             fi
9788         fi
9789         AC_MSG_CHECKING([MariaDB version])
9790         MARIADB_VERSION=`$MARIADBCONFIG --version`
9791         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9792         if test "$MARIADB_MAJOR" -ge "5"; then
9793             AC_MSG_RESULT([OK])
9794         else
9795             AC_MSG_ERROR([too old, use 5.0.x or later])
9796         fi
9797         AC_MSG_CHECKING([for MariaDB Client library])
9798         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9799         if test "$COM_IS_CLANG" = TRUE; then
9800             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9801         fi
9802         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9803         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9804         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9805         dnl linux32:
9806         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9807             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9808             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9809                 | sed -e 's|/lib64/|/lib/|')
9810         fi
9811         FilterLibs "${MARIADB_LIBS}"
9812         MARIADB_LIBS="${filteredlibs}"
9813         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9814         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9815         if test "$enable_bundle_mariadb" = "yes"; then
9816             AC_MSG_RESULT([yes])
9817             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9818             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9820 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9822 /g' | grep -E '(mysqlclient|mariadb)')
9823             if test "$_os" = "Darwin"; then
9824                 LIBMARIADB=${LIBMARIADB}.dylib
9825             elif test "$_os" = "WINNT"; then
9826                 LIBMARIADB=${LIBMARIADB}.dll
9827             else
9828                 LIBMARIADB=${LIBMARIADB}.so
9829             fi
9830             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9831             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9832             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9833                 AC_MSG_RESULT([found.])
9834                 PathFormat "$LIBMARIADB_PATH"
9835                 LIBMARIADB_PATH="$formatted_path"
9836             else
9837                 AC_MSG_ERROR([not found.])
9838             fi
9839         else
9840             AC_MSG_RESULT([no])
9841             BUNDLE_MARIADB_CONNECTOR_C=
9842         fi
9843     else
9844         AC_MSG_RESULT([internal])
9845         SYSTEM_MARIADB_CONNECTOR_C=
9846         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9847         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9848         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9849     fi
9851     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9852     AC_SUBST(MARIADB_CFLAGS)
9853     AC_SUBST(MARIADB_LIBS)
9854     AC_SUBST(LIBMARIADB)
9855     AC_SUBST(LIBMARIADB_PATH)
9856     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9859 dnl ===================================================================
9860 dnl Check for system hsqldb
9861 dnl ===================================================================
9862 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9863     HSQLDB_USE_JDBC_4_1=
9864     AC_MSG_CHECKING([which hsqldb to use])
9865     if test "$with_system_hsqldb" = "yes"; then
9866         AC_MSG_RESULT([external])
9867         SYSTEM_HSQLDB=TRUE
9868         if test -z $HSQLDB_JAR; then
9869             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9870         fi
9871         if ! test -f $HSQLDB_JAR; then
9872                AC_MSG_ERROR(hsqldb.jar not found.)
9873         fi
9874         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9875         export HSQLDB_JAR
9876         if $PERL -e \
9877            'use Archive::Zip;
9878             my $file = "$ENV{'HSQLDB_JAR'}";
9879             my $zip = Archive::Zip->new( $file );
9880             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9881             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9882             {
9883                 push @l, split(/\n/, $mf);
9884                 foreach my $line (@l)
9885                 {
9886                     if ($line =~ m/Specification-Version:/)
9887                     {
9888                         ($t, $version) = split (/:/,$line);
9889                         $version =~ s/^\s//;
9890                         ($a, $b, $c, $d) = split (/\./,$version);
9891                         if ($c == "0" && $d > "8")
9892                         {
9893                             exit 0;
9894                         }
9895                         else
9896                         {
9897                             exit 1;
9898                         }
9899                     }
9900                 }
9901             }
9902             else
9903             {
9904                 exit 1;
9905             }'; then
9906             AC_MSG_RESULT([yes])
9907         else
9908             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9909         fi
9910     else
9911         AC_MSG_RESULT([internal])
9912         SYSTEM_HSQLDB=
9913         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9914         NEED_ANT=TRUE
9915         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9916         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9917         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9918             AC_MSG_RESULT([yes])
9919             HSQLDB_USE_JDBC_4_1=TRUE
9920         else
9921             AC_MSG_RESULT([no])
9922         fi
9923     fi
9924 else
9925     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9926         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9927     fi
9929 AC_SUBST(SYSTEM_HSQLDB)
9930 AC_SUBST(HSQLDB_JAR)
9931 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9933 dnl ===================================================================
9934 dnl Check for PostgreSQL stuff
9935 dnl ===================================================================
9936 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9937 if test "x$enable_postgresql_sdbc" != "xno"; then
9938     AC_MSG_RESULT([yes])
9939     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9941     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9942         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9943     fi
9944     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9945         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9946     fi
9948     postgres_interface=""
9949     if test "$with_system_postgresql" = "yes"; then
9950         postgres_interface="external PostgreSQL"
9951         SYSTEM_POSTGRESQL=TRUE
9952         if test "$_os" = Darwin; then
9953             supp_path=''
9954             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9955                 pg_supp_path="$P_SEP$d$pg_supp_path"
9956             done
9957         fi
9958         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9959         if test -n "$PGCONFIG"; then
9960             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9961             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9962         else
9963             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9964               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9965               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9966             ],[
9967               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9968             ])
9969         fi
9970         FilterLibs "${POSTGRESQL_LIB}"
9971         POSTGRESQL_LIB="${filteredlibs}"
9972     else
9973         # if/when anything else than PostgreSQL uses Kerberos,
9974         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9975         WITH_KRB5=
9976         WITH_GSSAPI=
9977         case "$_os" in
9978         Darwin)
9979             # macOS has system MIT Kerberos 5 since 10.4
9980             if test "$with_krb5" != "no"; then
9981                 WITH_KRB5=TRUE
9982                 save_LIBS=$LIBS
9983                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9984                 # that the libraries where these functions are located on macOS will change, is it?
9985                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9986                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9987                 KRB5_LIBS=$LIBS
9988                 LIBS=$save_LIBS
9989                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9990                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9991                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9992                 LIBS=$save_LIBS
9993             fi
9994             if test "$with_gssapi" != "no"; then
9995                 WITH_GSSAPI=TRUE
9996                 save_LIBS=$LIBS
9997                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9998                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9999                 GSSAPI_LIBS=$LIBS
10000                 LIBS=$save_LIBS
10001             fi
10002             ;;
10003         WINNT)
10004             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10005                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10006             fi
10007             ;;
10008         Linux|GNU|*BSD|DragonFly)
10009             if test "$with_krb5" != "no"; then
10010                 WITH_KRB5=TRUE
10011                 save_LIBS=$LIBS
10012                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10013                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10014                 KRB5_LIBS=$LIBS
10015                 LIBS=$save_LIBS
10016                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10017                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10018                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10019                 LIBS=$save_LIBS
10020             fi
10021             if test "$with_gssapi" != "no"; then
10022                 WITH_GSSAPI=TRUE
10023                 save_LIBS=$LIBS
10024                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10025                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10026                 GSSAPI_LIBS=$LIBS
10027                 LIBS=$save_LIBS
10028             fi
10029             ;;
10030         *)
10031             if test "$with_krb5" = "yes"; then
10032                 WITH_KRB5=TRUE
10033                 save_LIBS=$LIBS
10034                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10035                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10036                 KRB5_LIBS=$LIBS
10037                 LIBS=$save_LIBS
10038                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10039                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10040                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10041                 LIBS=$save_LIBS
10042             fi
10043             if test "$with_gssapi" = "yes"; then
10044                 WITH_GSSAPI=TRUE
10045                 save_LIBS=$LIBS
10046                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10047                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10048                 LIBS=$save_LIBS
10049                 GSSAPI_LIBS=$LIBS
10050             fi
10051         esac
10053         if test -n "$with_libpq_path"; then
10054             SYSTEM_POSTGRESQL=TRUE
10055             postgres_interface="external libpq"
10056             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10057             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10058         else
10059             SYSTEM_POSTGRESQL=
10060             postgres_interface="internal"
10061             POSTGRESQL_LIB=""
10062             POSTGRESQL_INC="%OVERRIDE_ME%"
10063             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10064         fi
10065     fi
10067     AC_MSG_CHECKING([PostgreSQL C interface])
10068     AC_MSG_RESULT([$postgres_interface])
10070     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10071         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10072         save_CFLAGS=$CFLAGS
10073         save_CPPFLAGS=$CPPFLAGS
10074         save_LIBS=$LIBS
10075         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10076         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10077         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10078         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10079             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10080         CFLAGS=$save_CFLAGS
10081         CPPFLAGS=$save_CPPFLAGS
10082         LIBS=$save_LIBS
10083     fi
10084     BUILD_POSTGRESQL_SDBC=TRUE
10085 else
10086     AC_MSG_RESULT([no])
10088 AC_SUBST(WITH_KRB5)
10089 AC_SUBST(WITH_GSSAPI)
10090 AC_SUBST(GSSAPI_LIBS)
10091 AC_SUBST(KRB5_LIBS)
10092 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10093 AC_SUBST(SYSTEM_POSTGRESQL)
10094 AC_SUBST(POSTGRESQL_INC)
10095 AC_SUBST(POSTGRESQL_LIB)
10097 dnl ===================================================================
10098 dnl Check for Firebird stuff
10099 dnl ===================================================================
10100 ENABLE_FIREBIRD_SDBC=
10101 if test "$enable_firebird_sdbc" = "yes" ; then
10102     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10104     dnl ===================================================================
10105     dnl Check for system Firebird
10106     dnl ===================================================================
10107     AC_MSG_CHECKING([which Firebird to use])
10108     if test "$with_system_firebird" = "yes"; then
10109         AC_MSG_RESULT([external])
10110         SYSTEM_FIREBIRD=TRUE
10111         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10112         if test -z "$FIREBIRDCONFIG"; then
10113             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10114             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10115                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10116             ])
10117             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10118         else
10119             AC_MSG_NOTICE([fb_config found])
10120             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10121             AC_MSG_CHECKING([for Firebird Client library])
10122             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10123             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10124             FilterLibs "${FIREBIRD_LIBS}"
10125             FIREBIRD_LIBS="${filteredlibs}"
10126         fi
10127         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10128         AC_MSG_CHECKING([Firebird version])
10129         if test -n "${FIREBIRD_VERSION}"; then
10130             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10131             if test "$FIREBIRD_MAJOR" -ge "3"; then
10132                 AC_MSG_RESULT([OK])
10133             else
10134                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10135             fi
10136         else
10137             save_CFLAGS="${CFLAGS}"
10138             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10139             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10140 #if defined(FB_API_VER) && FB_API_VER == 30
10141 int fb_api_is_30(void) { return 0; }
10142 #else
10143 #error "Wrong Firebird API version"
10144 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10145             CFLAGS="$save_CFLAGS"
10146         fi
10147         ENABLE_FIREBIRD_SDBC=TRUE
10148         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10149     elif test "$enable_database_connectivity" = no; then
10150         AC_MSG_RESULT([none])
10151     elif test "$cross_compiling" = "yes"; then
10152         AC_MSG_RESULT([none])
10153     else
10154         dnl Embedded Firebird has version 3.0
10155         dnl We need libatomic_ops for any non X86/X64 system
10156         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10157             dnl ===================================================================
10158             dnl Check for system libatomic_ops
10159             dnl ===================================================================
10160             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10161             if test "$with_system_libatomic_ops" = "yes"; then
10162                 SYSTEM_LIBATOMIC_OPS=TRUE
10163                 AC_CHECK_HEADERS(atomic_ops.h, [],
10164                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10165             else
10166                 SYSTEM_LIBATOMIC_OPS=
10167                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10168                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10169                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10170             fi
10171         fi
10173         AC_MSG_RESULT([internal])
10174         SYSTEM_FIREBIRD=
10175         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10176         FIREBIRD_LIBS="-lfbclient"
10178         if test "$with_system_libtommath" = "yes"; then
10179             SYSTEM_LIBTOMMATH=TRUE
10180             dnl check for tommath presence
10181             save_LIBS=$LIBS
10182             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10183             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10184             LIBS=$save_LIBS
10185         else
10186             SYSTEM_LIBTOMMATH=
10187             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10188             LIBTOMMATH_LIBS="-ltommath"
10189             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10190         fi
10192         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10193         ENABLE_FIREBIRD_SDBC=TRUE
10194         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10195     fi
10197 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10198 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10199 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10200 AC_SUBST(LIBATOMIC_OPS_LIBS)
10201 AC_SUBST(SYSTEM_FIREBIRD)
10202 AC_SUBST(FIREBIRD_CFLAGS)
10203 AC_SUBST(FIREBIRD_LIBS)
10204 AC_SUBST(SYSTEM_LIBTOMMATH)
10205 AC_SUBST(LIBTOMMATH_CFLAGS)
10206 AC_SUBST(LIBTOMMATH_LIBS)
10208 dnl ===================================================================
10209 dnl Check for system curl
10210 dnl ===================================================================
10211 AC_MSG_CHECKING([which libcurl to use])
10212 if test "$with_system_curl" = "auto"; then
10213     with_system_curl="$with_system_libs"
10216 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10217     AC_MSG_RESULT([external])
10218     SYSTEM_CURL=TRUE
10220     # First try PKGCONFIG and then fall back
10221     PKG_CHECK_MODULES(CURL, libcurl >= 7.63.0,, [:])
10223     if test -n "$CURL_PKG_ERRORS"; then
10224         AC_PATH_PROG(CURLCONFIG, curl-config)
10225         if test -z "$CURLCONFIG"; then
10226             AC_MSG_ERROR([curl development files not found])
10227         fi
10228         CURL_LIBS=`$CURLCONFIG --libs`
10229         FilterLibs "${CURL_LIBS}"
10230         CURL_LIBS="${filteredlibs}"
10231         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10232         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10234         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10235         case $curl_version in
10236         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10237         dnl so they need to be doubled to end up in the configure script
10238         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10239             AC_MSG_RESULT([yes])
10240             ;;
10241         *)
10242             AC_MSG_ERROR([no, you have $curl_version])
10243             ;;
10244         esac
10245     fi
10247     ENABLE_CURL=TRUE
10248 elif test "$enable_curl" = "no"; then
10249     AC_MSG_RESULT([none])
10250 else
10251     AC_MSG_RESULT([internal])
10252     SYSTEM_CURL=
10253     BUILD_TYPE="$BUILD_TYPE CURL"
10254     ENABLE_CURL=TRUE
10256 AC_SUBST(SYSTEM_CURL)
10257 AC_SUBST(CURL_CFLAGS)
10258 AC_SUBST(CURL_LIBS)
10259 AC_SUBST(ENABLE_CURL)
10261 dnl ===================================================================
10262 dnl Check for system boost
10263 dnl ===================================================================
10264 AC_MSG_CHECKING([which boost to use])
10265 if test "$with_system_boost" = "yes"; then
10266     AC_MSG_RESULT([external])
10267     SYSTEM_BOOST=TRUE
10268     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10269     AX_BOOST_DATE_TIME
10270     AX_BOOST_FILESYSTEM
10271     AX_BOOST_IOSTREAMS
10272     AX_BOOST_LOCALE
10273     AC_LANG_PUSH([C++])
10274     save_CXXFLAGS=$CXXFLAGS
10275     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10276     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10277        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10278     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10279        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10280     CXXFLAGS=$save_CXXFLAGS
10281     AC_LANG_POP([C++])
10282     # this is in m4/ax_boost_base.m4
10283     FilterLibs "${BOOST_LDFLAGS}"
10284     BOOST_LDFLAGS="${filteredlibs}"
10285 else
10286     AC_MSG_RESULT([internal])
10287     BUILD_TYPE="$BUILD_TYPE BOOST"
10288     SYSTEM_BOOST=
10289     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10290         # use warning-suppressing wrapper headers
10291         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10292     else
10293         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10294     fi
10296 AC_SUBST(SYSTEM_BOOST)
10298 dnl ===================================================================
10299 dnl Check for system mdds
10300 dnl ===================================================================
10301 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10303 dnl ===================================================================
10304 dnl Check for system cuckoo
10305 dnl ===================================================================
10306 AC_MSG_CHECKING([which cuckoo to use])
10307 if test "$with_system_cuckoo" = "yes"; then
10308     AC_MSG_RESULT([external])
10309     SYSTEM_CUCKOO=TRUE
10310     AC_LANG_PUSH([C++])
10311     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10312        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10313     AC_LANG_POP([C++])
10314 else
10315     AC_MSG_RESULT([internal])
10316     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10317     SYSTEM_CUCKOO=
10318     CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10320 AC_SUBST([CUCKOO_CFLAGS])
10321 AC_SUBST([SYSTEM_CUCKOO])
10323 dnl ===================================================================
10324 dnl Check for system glm
10325 dnl ===================================================================
10326 AC_MSG_CHECKING([which glm to use])
10327 if test "$with_system_glm" = "yes"; then
10328     AC_MSG_RESULT([external])
10329     SYSTEM_GLM=TRUE
10330     AC_LANG_PUSH([C++])
10331     AC_CHECK_HEADER([glm/glm.hpp], [],
10332        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10333     AC_LANG_POP([C++])
10334 else
10335     AC_MSG_RESULT([internal])
10336     BUILD_TYPE="$BUILD_TYPE GLM"
10337     SYSTEM_GLM=
10338     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10340 AC_SUBST([GLM_CFLAGS])
10341 AC_SUBST([SYSTEM_GLM])
10343 dnl ===================================================================
10344 dnl Check for system odbc
10345 dnl ===================================================================
10346 AC_MSG_CHECKING([which odbc headers to use])
10347 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
10348     AC_MSG_RESULT([external])
10349     SYSTEM_ODBC_HEADERS=TRUE
10351     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10352         save_CPPFLAGS=$CPPFLAGS
10353         find_winsdk
10354         PathFormat "$winsdktest"
10355         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"
10356         AC_CHECK_HEADER(sqlext.h, [],
10357             [AC_MSG_ERROR(odbc not found. install odbc)],
10358             [#include <windows.h>])
10359         CPPFLAGS=$save_CPPFLAGS
10360     else
10361         AC_CHECK_HEADER(sqlext.h, [],
10362             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10363     fi
10364 elif test "$enable_database_connectivity" = no; then
10365     AC_MSG_RESULT([none])
10366 else
10367     AC_MSG_RESULT([internal])
10368     SYSTEM_ODBC_HEADERS=
10370 AC_SUBST(SYSTEM_ODBC_HEADERS)
10372 dnl ===================================================================
10373 dnl Check for system NSS
10374 dnl ===================================================================
10375 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10376     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10377     AC_DEFINE(HAVE_FEATURE_NSS)
10378     ENABLE_NSS=TRUE
10379 elif test $_os != iOS ; then
10380     with_tls=openssl
10382 AC_SUBST(ENABLE_NSS)
10384 dnl ===================================================================
10385 dnl Enable LDAP support
10386 dnl ===================================================================
10388 if test "$test_openldap" = yes; then
10389     AC_MSG_CHECKING([whether to enable LDAP support])
10390     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10391         AC_MSG_RESULT([yes])
10392         ENABLE_LDAP=TRUE
10393     else
10394         if test "$enable_ldap" != "yes"; then
10395             AC_MSG_RESULT([no])
10396         else
10397             AC_MSG_RESULT([no (needs NSS or system openldap)])
10398         fi
10399     fi
10401 dnl ===================================================================
10402 dnl Check for system openldap
10403 dnl ===================================================================
10405     if test "$ENABLE_LDAP" = TRUE; then
10406         AC_MSG_CHECKING([which openldap library to use])
10407         if test "$with_system_openldap" = yes; then
10408             AC_MSG_RESULT([external])
10409             SYSTEM_OPENLDAP=TRUE
10410             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10411             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10412             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10413         else
10414             AC_MSG_RESULT([internal])
10415             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10416         fi
10417     fi
10420 AC_SUBST(ENABLE_LDAP)
10421 AC_SUBST(SYSTEM_OPENLDAP)
10423 dnl ===================================================================
10424 dnl Check for TLS/SSL and cryptographic implementation to use
10425 dnl ===================================================================
10426 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10427 if test -n "$with_tls"; then
10428     case $with_tls in
10429     openssl)
10430         AC_DEFINE(USE_TLS_OPENSSL)
10431         TLS=OPENSSL
10432         AC_MSG_RESULT([$TLS])
10434         if test "$enable_openssl" != "yes"; then
10435             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10436         fi
10438         # warn that OpenSSL has been selected but not all TLS code has this option
10439         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10440         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10441         ;;
10442     nss)
10443         AC_DEFINE(USE_TLS_NSS)
10444         TLS=NSS
10445         AC_MSG_RESULT([$TLS])
10446         ;;
10447     no)
10448         AC_MSG_RESULT([none])
10449         AC_MSG_WARN([Skipping TLS/SSL])
10450         ;;
10451     *)
10452         AC_MSG_RESULT([])
10453         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10454 openssl - OpenSSL
10455 nss - Mozilla's Network Security Services (NSS)
10456     ])
10457         ;;
10458     esac
10459 else
10460     # default to using NSS, it results in smaller oox lib
10461     AC_DEFINE(USE_TLS_NSS)
10462     TLS=NSS
10463     AC_MSG_RESULT([$TLS])
10465 AC_SUBST(TLS)
10467 dnl ===================================================================
10468 dnl Check for system sane
10469 dnl ===================================================================
10470 AC_MSG_CHECKING([which sane header to use])
10471 if test "$with_system_sane" = "yes"; then
10472     AC_MSG_RESULT([external])
10473     AC_CHECK_HEADER(sane/sane.h, [],
10474       [AC_MSG_ERROR(sane not found. install sane)], [])
10475 else
10476     AC_MSG_RESULT([internal])
10477     BUILD_TYPE="$BUILD_TYPE SANE"
10480 dnl ===================================================================
10481 dnl Check for system icu
10482 dnl ===================================================================
10483 SYSTEM_GENBRK=
10484 SYSTEM_GENCCODE=
10485 SYSTEM_GENCMN=
10487 ICU_MAJOR=70
10488 ICU_MINOR=1
10489 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10490 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10491 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10492 AC_MSG_CHECKING([which icu to use])
10493 if test "$with_system_icu" = "yes"; then
10494     AC_MSG_RESULT([external])
10495     SYSTEM_ICU=TRUE
10496     AC_LANG_PUSH([C++])
10497     AC_MSG_CHECKING([for unicode/rbbi.h])
10498     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10499     AC_LANG_POP([C++])
10501     if test "$cross_compiling" != "yes"; then
10502         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10503         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10504         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10505         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10506     fi
10508     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10509         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10510         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10511         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10512         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10513         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10514             AC_MSG_RESULT([yes])
10515         else
10516             AC_MSG_RESULT([no])
10517             if test "$with_system_icu_for_build" != "force"; then
10518                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10519 You can use --with-system-icu-for-build=force to use it anyway.])
10520             fi
10521         fi
10522     fi
10524     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10525         # using the system icu tools can lead to version confusion, use the
10526         # ones from the build environment when cross-compiling
10527         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10528         if test -z "$SYSTEM_GENBRK"; then
10529             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10530         fi
10531         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10532         if test -z "$SYSTEM_GENCCODE"; then
10533             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10534         fi
10535         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10536         if test -z "$SYSTEM_GENCMN"; then
10537             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10538         fi
10539         if test "$ICU_MAJOR" -ge "49"; then
10540             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10541             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10542             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10543         else
10544             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10545             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10546             ICU_RECLASSIFIED_HEBREW_LETTER=
10547         fi
10548     fi
10550     if test "$cross_compiling" = "yes"; then
10551         if test "$ICU_MAJOR" -ge "50"; then
10552             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10553             ICU_MINOR=""
10554         fi
10555     fi
10556 else
10557     AC_MSG_RESULT([internal])
10558     SYSTEM_ICU=
10559     BUILD_TYPE="$BUILD_TYPE ICU"
10560     # surprisingly set these only for "internal" (to be used by various other
10561     # external libs): the system icu-config is quite unhelpful and spits out
10562     # dozens of weird flags and also default path -I/usr/include
10563     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10564     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10566 if test "$ICU_MAJOR" -ge "59"; then
10567     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10568     # with -std=c++11 but not all external libraries can be built with that,
10569     # for those use a bit-compatible typedef uint16_t UChar; see
10570     # icu/source/common/unicode/umachine.h
10571     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10572 else
10573     ICU_UCHAR_TYPE=""
10575 AC_SUBST(SYSTEM_ICU)
10576 AC_SUBST(SYSTEM_GENBRK)
10577 AC_SUBST(SYSTEM_GENCCODE)
10578 AC_SUBST(SYSTEM_GENCMN)
10579 AC_SUBST(ICU_MAJOR)
10580 AC_SUBST(ICU_MINOR)
10581 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10582 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10583 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10584 AC_SUBST(ICU_CFLAGS)
10585 AC_SUBST(ICU_LIBS)
10586 AC_SUBST(ICU_UCHAR_TYPE)
10588 dnl ==================================================================
10589 dnl Breakpad
10590 dnl ==================================================================
10591 DEFAULT_CRASHDUMP_VALUE="true"
10592 AC_MSG_CHECKING([whether to enable breakpad])
10593 if test "$enable_breakpad" != yes; then
10594     AC_MSG_RESULT([no])
10595 else
10596     AC_MSG_RESULT([yes])
10597     ENABLE_BREAKPAD="TRUE"
10598     AC_DEFINE(ENABLE_BREAKPAD)
10599     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10600     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10602     AC_MSG_CHECKING([for disable crash dump])
10603     if test "$enable_crashdump" = no; then
10604         DEFAULT_CRASHDUMP_VALUE="false"
10605         AC_MSG_RESULT([yes])
10606     else
10607        AC_MSG_RESULT([no])
10608     fi
10610     AC_MSG_CHECKING([for crashreport config])
10611     if test "$with_symbol_config" = "no"; then
10612         BREAKPAD_SYMBOL_CONFIG="invalid"
10613         AC_MSG_RESULT([no])
10614     else
10615         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10616         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10617         AC_MSG_RESULT([yes])
10618     fi
10619     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10621 AC_SUBST(ENABLE_BREAKPAD)
10622 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10624 dnl ==================================================================
10625 dnl libfuzzer
10626 dnl ==================================================================
10627 AC_MSG_CHECKING([whether to enable fuzzers])
10628 if test "$enable_fuzzers" != yes; then
10629     AC_MSG_RESULT([no])
10630 else
10631     if test -z $LIB_FUZZING_ENGINE; then
10632       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10633     fi
10634     AC_MSG_RESULT([yes])
10635     ENABLE_FUZZERS="TRUE"
10636     AC_DEFINE([ENABLE_FUZZERS],1)
10637     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10639 AC_SUBST(LIB_FUZZING_ENGINE)
10640 AC_SUBST(ENABLE_FUZZERS)
10642 dnl ===================================================================
10643 dnl Orcus
10644 dnl ===================================================================
10645 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
10646 if test "$with_system_orcus" != "yes"; then
10647     if test "$SYSTEM_BOOST" = "TRUE"; then
10648         dnl Link with Boost.System
10649         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10650         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10651         dnl in documentation has no effect.
10652         AX_BOOST_SYSTEM
10653     fi
10655 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10656 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10657 AC_SUBST([BOOST_SYSTEM_LIB])
10658 AC_SUBST(SYSTEM_LIBORCUS)
10660 dnl ===================================================================
10661 dnl HarfBuzz
10662 dnl ===================================================================
10663 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10664                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10665                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10667 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10668                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10669                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10671 if test "$COM" = "MSC"; then # override the above
10672     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10673     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10676 if test "$with_system_harfbuzz" = "yes"; then
10677     if test "$with_system_graphite" = "no"; then
10678         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10679     fi
10680     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10681     save_LIBS="$LIBS"
10682     save_CFLAGS="$CFLAGS"
10683     LIBS="$LIBS $HARFBUZZ_LIBS"
10684     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10685     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10686     LIBS="$save_LIBS"
10687     CFLAGS="$save_CFLAGS"
10688 else
10689     if test "$with_system_graphite" = "yes"; then
10690         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10691     fi
10694 if test "$USING_X11" = TRUE; then
10695     AC_PATH_X
10696     AC_PATH_XTRA
10697     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10699     if test -z "$x_includes"; then
10700         x_includes="default_x_includes"
10701     fi
10702     if test -z "$x_libraries"; then
10703         x_libraries="default_x_libraries"
10704     fi
10705     CFLAGS="$CFLAGS $X_CFLAGS"
10706     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10707     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10708 else
10709     x_includes="no_x_includes"
10710     x_libraries="no_x_libraries"
10713 if test "$USING_X11" = TRUE; then
10714     dnl ===================================================================
10715     dnl Check for extension headers
10716     dnl ===================================================================
10717     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10718      [#include <X11/extensions/shape.h>])
10720     # vcl needs ICE and SM
10721     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10722     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10723         [AC_MSG_ERROR(ICE library not found)])
10724     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10725     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10726         [AC_MSG_ERROR(SM library not found)])
10729 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10730     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10731     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10734 dnl ===================================================================
10735 dnl Check for system Xrender
10736 dnl ===================================================================
10737 AC_MSG_CHECKING([whether to use Xrender])
10738 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10739     AC_MSG_RESULT([yes])
10740     PKG_CHECK_MODULES(XRENDER, xrender)
10741     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10742     FilterLibs "${XRENDER_LIBS}"
10743     XRENDER_LIBS="${filteredlibs}"
10744     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10745       [AC_MSG_ERROR(libXrender not found or functional)], [])
10746     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10747       [AC_MSG_ERROR(Xrender not found. install X)], [])
10748 else
10749     AC_MSG_RESULT([no])
10751 AC_SUBST(XRENDER_CFLAGS)
10752 AC_SUBST(XRENDER_LIBS)
10754 dnl ===================================================================
10755 dnl Check for XRandr
10756 dnl ===================================================================
10757 AC_MSG_CHECKING([whether to enable RandR support])
10758 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10759     AC_MSG_RESULT([yes])
10760     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10761     if test "$ENABLE_RANDR" != "TRUE"; then
10762         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10763                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10764         XRANDR_CFLAGS=" "
10765         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10766           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10767         XRANDR_LIBS="-lXrandr "
10768         ENABLE_RANDR="TRUE"
10769     fi
10770     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10771     FilterLibs "${XRANDR_LIBS}"
10772     XRANDR_LIBS="${filteredlibs}"
10773 else
10774     ENABLE_RANDR=""
10775     AC_MSG_RESULT([no])
10777 AC_SUBST(XRANDR_CFLAGS)
10778 AC_SUBST(XRANDR_LIBS)
10779 AC_SUBST(ENABLE_RANDR)
10781 if test "$test_webdav" = yes; then
10782     if test -z "$with_webdav"; then
10783         WITH_WEBDAV=neon
10784         if test "$enable_mpl_subset" = yes; then
10785             WITH_WEBDAV=serf
10786         fi
10787     else
10788         WITH_WEBDAV="$with_webdav"
10789     fi
10792 AC_MSG_CHECKING([for webdav library])
10793 case "$WITH_WEBDAV" in
10794 curl)
10795     AC_MSG_RESULT([curl])
10796     # curl is already mandatory (almost) and checked elsewhere
10797     if test "$enable_curl" = "no"; then
10798         AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10799     fi
10800     ;;
10801 serf)
10802     AC_MSG_RESULT([serf])
10803     # Check for system apr-util
10804     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10805                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10806                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10807     if test "$COM" = "MSC"; then
10808         APR_LIB_DIR="LibR"
10809         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10810         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10811     fi
10813     # Check for system serf
10814     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10815     ;;
10816 neon)
10817     AC_MSG_RESULT([neon])
10818     # Check for system neon
10819     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10820     if test "$with_system_neon" = "yes"; then
10821         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10822     else
10823         NEON_VERSION=0312
10824     fi
10825     AC_SUBST(NEON_VERSION)
10826     ;;
10828     AC_MSG_RESULT([none, disabled])
10829     WITH_WEBDAV=""
10830     ;;
10831 esac
10832 AC_SUBST(WITH_WEBDAV)
10834 dnl ===================================================================
10835 dnl Check for disabling cve_tests
10836 dnl ===================================================================
10837 AC_MSG_CHECKING([whether to execute CVE tests])
10838 # If not explicitly enabled or disabled, default
10839 if test -z "$enable_cve_tests"; then
10840     case "$OS" in
10841     WNT)
10842         # Default cves off for Windows with its wild and wonderful
10843         # variety of AV software kicking in and panicking
10844         enable_cve_tests=no
10845         ;;
10846     *)
10847         # otherwise yes
10848         enable_cve_tests=yes
10849         ;;
10850     esac
10852 if test "$enable_cve_tests" = "no"; then
10853     AC_MSG_RESULT([no])
10854     DISABLE_CVE_TESTS=TRUE
10855     AC_SUBST(DISABLE_CVE_TESTS)
10856 else
10857     AC_MSG_RESULT([yes])
10860 dnl ===================================================================
10861 dnl Check for enabling chart XShape tests
10862 dnl ===================================================================
10863 AC_MSG_CHECKING([whether to execute chart XShape tests])
10864 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10865     AC_MSG_RESULT([yes])
10866     ENABLE_CHART_TESTS=TRUE
10867     AC_SUBST(ENABLE_CHART_TESTS)
10868 else
10869     AC_MSG_RESULT([no])
10872 dnl ===================================================================
10873 dnl Check for system openssl
10874 dnl ===================================================================
10875 ENABLE_OPENSSL=
10876 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10877 if test "$enable_openssl" = "yes"; then
10878     AC_MSG_RESULT([no])
10879     ENABLE_OPENSSL=TRUE
10880     if test "$_os" = Darwin ; then
10881         # OpenSSL is deprecated when building for 10.7 or later.
10882         #
10883         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10884         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10886         with_system_openssl=no
10887         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10888     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10889             && test "$with_system_openssl" != "no"; then
10890         with_system_openssl=yes
10891         SYSTEM_OPENSSL=TRUE
10892         OPENSSL_CFLAGS=
10893         OPENSSL_LIBS="-lssl -lcrypto"
10894     else
10895         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10896     fi
10897     if test "$with_system_openssl" = "yes"; then
10898         AC_MSG_CHECKING([whether openssl supports SHA512])
10899         AC_LANG_PUSH([C])
10900         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10901             SHA512_CTX context;
10902 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10903         AC_LANG_POP(C)
10904     fi
10905 else
10906     AC_MSG_RESULT([yes])
10908     # warn that although OpenSSL is disabled, system libraries may depend on it
10909     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10910     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10913 AC_SUBST([ENABLE_OPENSSL])
10915 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10916     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10917         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10918         enable_cipher_openssl_backend=no
10919     else
10920         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10921     fi
10923 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10924 ENABLE_CIPHER_OPENSSL_BACKEND=
10925 if test "$enable_cipher_openssl_backend" = yes; then
10926     AC_MSG_RESULT([yes])
10927     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10928 else
10929     AC_MSG_RESULT([no])
10931 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10933 dnl ===================================================================
10934 dnl Select the crypto backends used by LO
10935 dnl ===================================================================
10937 if test "$build_crypto" = yes; then
10938     if test "$OS" = WNT; then
10939         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10940         AC_DEFINE([USE_CRYPTO_MSCAPI])
10941     elif test "$ENABLE_NSS" = TRUE; then
10942         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10943         AC_DEFINE([USE_CRYPTO_NSS])
10944     fi
10947 dnl ===================================================================
10948 dnl Check for building gnutls
10949 dnl ===================================================================
10950 AC_MSG_CHECKING([whether to use gnutls])
10951 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10952     AC_MSG_RESULT([yes])
10953     AM_PATH_LIBGCRYPT()
10954     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10955         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10956                       available in the system to use as replacement.]]))
10957     FilterLibs "${LIBGCRYPT_LIBS}"
10958     LIBGCRYPT_LIBS="${filteredlibs}"
10959 else
10960     AC_MSG_RESULT([no])
10963 AC_SUBST([LIBGCRYPT_CFLAGS])
10964 AC_SUBST([LIBGCRYPT_LIBS])
10966 dnl ===================================================================
10967 dnl Check for system redland
10968 dnl ===================================================================
10969 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10970 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10971 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10972 if test "$with_system_redland" = "yes"; then
10973     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10974             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10975 else
10976     RAPTOR_MAJOR="0"
10977     RASQAL_MAJOR="3"
10978     REDLAND_MAJOR="0"
10980 AC_SUBST(RAPTOR_MAJOR)
10981 AC_SUBST(RASQAL_MAJOR)
10982 AC_SUBST(REDLAND_MAJOR)
10984 dnl ===================================================================
10985 dnl Check for system hunspell
10986 dnl ===================================================================
10987 AC_MSG_CHECKING([which libhunspell to use])
10988 if test "$with_system_hunspell" = "yes"; then
10989     AC_MSG_RESULT([external])
10990     SYSTEM_HUNSPELL=TRUE
10991     AC_LANG_PUSH([C++])
10992     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10993     if test "$HUNSPELL_PC" != "TRUE"; then
10994         AC_CHECK_HEADER(hunspell.hxx, [],
10995             [
10996             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10997             [AC_MSG_ERROR(hunspell headers not found.)], [])
10998             ], [])
10999         AC_CHECK_LIB([hunspell], [main], [:],
11000            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11001         HUNSPELL_LIBS=-lhunspell
11002     fi
11003     AC_LANG_POP([C++])
11004     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11005     FilterLibs "${HUNSPELL_LIBS}"
11006     HUNSPELL_LIBS="${filteredlibs}"
11007 else
11008     AC_MSG_RESULT([internal])
11009     SYSTEM_HUNSPELL=
11010     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11011     if test "$COM" = "MSC"; then
11012         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11013     else
11014         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11015     fi
11016     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11018 AC_SUBST(SYSTEM_HUNSPELL)
11019 AC_SUBST(HUNSPELL_CFLAGS)
11020 AC_SUBST(HUNSPELL_LIBS)
11022 dnl ===================================================================
11023 dnl Check for system zxing
11024 dnl ===================================================================
11025 AC_MSG_CHECKING([whether to use zxing])
11026 if test "$enable_zxing" = "no"; then
11027     AC_MSG_RESULT([no])
11028     ENABLE_ZXING=
11029     SYSTEM_ZXING=
11030 else
11031     AC_MSG_RESULT([yes])
11032     ENABLE_ZXING=TRUE
11033     AC_MSG_CHECKING([which libzxing to use])
11034     if test "$with_system_zxing" = "yes"; then
11035         AC_MSG_RESULT([external])
11036         SYSTEM_ZXING=TRUE
11037         AC_LANG_PUSH([C++])
11038         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11039             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11040         ZXING_CFLAGS=-I/usr/include/ZXing
11041         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11042             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11043             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11044         AC_LANG_POP([C++])
11045         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11046         FilterLibs "${ZXING_LIBS}"
11047         ZXING_LIBS="${filteredlibs}"
11048     else
11049         AC_MSG_RESULT([internal])
11050         SYSTEM_ZXING=
11051         BUILD_TYPE="$BUILD_TYPE ZXING"
11052     fi
11053     if test "$ENABLE_ZXING" = TRUE; then
11054         AC_DEFINE(ENABLE_ZXING)
11055     fi
11057 AC_SUBST(SYSTEM_ZXING)
11058 AC_SUBST(ENABLE_ZXING)
11059 AC_SUBST(ZXING_CFLAGS)
11060 AC_SUBST(ZXING_LIBS)
11062 dnl ===================================================================
11063 dnl Check for system box2d
11064 dnl ===================================================================
11065 AC_MSG_CHECKING([which box2d to use])
11066 if test "$with_system_box2d" = "yes"; then
11067     AC_MSG_RESULT([external])
11068     SYSTEM_BOX2D=TRUE
11069     AC_LANG_PUSH([C++])
11070     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11071         [BOX2D_H_FOUND='FALSE'])
11072     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11073         _BOX2D_LIB=box2d
11074         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11075     else
11076         # fail this. there's no other alternative to check when we are here.
11077         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11078             [AC_MSG_ERROR(box2d headers not found.)])
11079         _BOX2D_LIB=Box2D
11080         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11081     fi
11082     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11083         [ AC_MSG_ERROR(box2d library not found.) ], [])
11084     BOX2D_LIBS=-l$_BOX2D_LIB
11085     AC_LANG_POP([C++])
11086     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11087     FilterLibs "${BOX2D_LIBS}"
11088     BOX2D_LIBS="${filteredlibs}"
11089 else
11090     AC_MSG_RESULT([internal])
11091     SYSTEM_BOX2D=
11092     BUILD_TYPE="$BUILD_TYPE BOX2D"
11094 AC_SUBST(SYSTEM_BOX2D)
11095 AC_SUBST(BOX2D_CFLAGS)
11096 AC_SUBST(BOX2D_LIBS)
11098 dnl ===================================================================
11099 dnl Checking for altlinuxhyph
11100 dnl ===================================================================
11101 AC_MSG_CHECKING([which altlinuxhyph to use])
11102 if test "$with_system_altlinuxhyph" = "yes"; then
11103     AC_MSG_RESULT([external])
11104     SYSTEM_HYPH=TRUE
11105     AC_CHECK_HEADER(hyphen.h, [],
11106        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11107     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11108        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11109        [#include <hyphen.h>])
11110     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11111         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11112     if test -z "$HYPHEN_LIB"; then
11113         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11114            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11115     fi
11116     if test -z "$HYPHEN_LIB"; then
11117         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11118            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11119     fi
11120 else
11121     AC_MSG_RESULT([internal])
11122     SYSTEM_HYPH=
11123     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11124     if test "$COM" = "MSC"; then
11125         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11126     else
11127         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11128     fi
11130 AC_SUBST(SYSTEM_HYPH)
11131 AC_SUBST(HYPHEN_LIB)
11133 dnl ===================================================================
11134 dnl Checking for mythes
11135 dnl ===================================================================
11136 AC_MSG_CHECKING([which mythes to use])
11137 if test "$with_system_mythes" = "yes"; then
11138     AC_MSG_RESULT([external])
11139     SYSTEM_MYTHES=TRUE
11140     AC_LANG_PUSH([C++])
11141     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11142     if test "$MYTHES_PKGCONFIG" = "no"; then
11143         AC_CHECK_HEADER(mythes.hxx, [],
11144             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11145         AC_CHECK_LIB([mythes-1.2], [main], [:],
11146             [ MYTHES_FOUND=no], [])
11147     if test "$MYTHES_FOUND" = "no"; then
11148         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11149                 [ MYTHES_FOUND=no], [])
11150     fi
11151     if test "$MYTHES_FOUND" = "no"; then
11152         AC_MSG_ERROR([mythes library not found!.])
11153     fi
11154     fi
11155     AC_LANG_POP([C++])
11156     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11157     FilterLibs "${MYTHES_LIBS}"
11158     MYTHES_LIBS="${filteredlibs}"
11159 else
11160     AC_MSG_RESULT([internal])
11161     SYSTEM_MYTHES=
11162     BUILD_TYPE="$BUILD_TYPE MYTHES"
11163     if test "$COM" = "MSC"; then
11164         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11165     else
11166         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11167     fi
11169 AC_SUBST(SYSTEM_MYTHES)
11170 AC_SUBST(MYTHES_CFLAGS)
11171 AC_SUBST(MYTHES_LIBS)
11173 dnl ===================================================================
11174 dnl How should we build the linear programming solver ?
11175 dnl ===================================================================
11177 ENABLE_COINMP=
11178 AC_MSG_CHECKING([whether to build with CoinMP])
11179 if test "$enable_coinmp" != "no"; then
11180     ENABLE_COINMP=TRUE
11181     AC_MSG_RESULT([yes])
11182     if test "$with_system_coinmp" = "yes"; then
11183         SYSTEM_COINMP=TRUE
11184         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11185         FilterLibs "${COINMP_LIBS}"
11186         COINMP_LIBS="${filteredlibs}"
11187     else
11188         BUILD_TYPE="$BUILD_TYPE COINMP"
11189     fi
11190 else
11191     AC_MSG_RESULT([no])
11193 AC_SUBST(ENABLE_COINMP)
11194 AC_SUBST(SYSTEM_COINMP)
11195 AC_SUBST(COINMP_CFLAGS)
11196 AC_SUBST(COINMP_LIBS)
11198 ENABLE_LPSOLVE=
11199 AC_MSG_CHECKING([whether to build with lpsolve])
11200 if test "$enable_lpsolve" != "no"; then
11201     ENABLE_LPSOLVE=TRUE
11202     AC_MSG_RESULT([yes])
11203 else
11204     AC_MSG_RESULT([no])
11206 AC_SUBST(ENABLE_LPSOLVE)
11208 if test "$ENABLE_LPSOLVE" = TRUE; then
11209     AC_MSG_CHECKING([which lpsolve to use])
11210     if test "$with_system_lpsolve" = "yes"; then
11211         AC_MSG_RESULT([external])
11212         SYSTEM_LPSOLVE=TRUE
11213         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11214            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11215         save_LIBS=$LIBS
11216         # some systems need this. Like Ubuntu...
11217         AC_CHECK_LIB(m, floor)
11218         AC_CHECK_LIB(dl, dlopen)
11219         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11220             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11221         LIBS=$save_LIBS
11222     else
11223         AC_MSG_RESULT([internal])
11224         SYSTEM_LPSOLVE=
11225         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11226     fi
11228 AC_SUBST(SYSTEM_LPSOLVE)
11230 dnl ===================================================================
11231 dnl Checking for libexttextcat
11232 dnl ===================================================================
11233 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11234 if test "$with_system_libexttextcat" = "yes"; then
11235     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11237 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11239 dnl ===================================================================
11240 dnl Checking for libnumbertext
11241 dnl ===================================================================
11242 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11243 if test "$with_system_libnumbertext" = "yes"; then
11244     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11245     SYSTEM_LIBNUMBERTEXT=YES
11246 else
11247     SYSTEM_LIBNUMBERTEXT=
11248     AC_LANG_PUSH([C++])
11249     save_CPPFLAGS=$CPPFLAGS
11250     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11251     AC_CHECK_HEADERS([codecvt regex])
11252     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11253             [ LIBNUMBERTEXT_CFLAGS=''
11254               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11255                            Enable libnumbertext fallback (missing number to number name conversion).])
11256             ])
11257     CPPFLAGS=$save_CPPFLAGS
11258     AC_LANG_POP([C++])
11260 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11261 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11262 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11264 dnl ***************************************
11265 dnl testing libc version for Linux...
11266 dnl ***************************************
11267 if test "$_os" = "Linux"; then
11268     AC_MSG_CHECKING([whether the libc is recent enough])
11269     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11270     #include <features.h>
11271     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11272     #error glibc >= 2.1 is required
11273     #endif
11274     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11277 dnl =========================================
11278 dnl Check for uuidgen
11279 dnl =========================================
11280 if test "$_os" = "WINNT"; then
11281     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11282     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11283     UUIDGEN=uuidgen.exe
11284     AC_SUBST(UUIDGEN)
11285 else
11286     AC_PATH_PROG([UUIDGEN], [uuidgen])
11287     if test -z "$UUIDGEN"; then
11288         AC_MSG_WARN([uuid is needed for building installation sets])
11289     fi
11292 dnl ***************************************
11293 dnl Checking for bison and flex
11294 dnl ***************************************
11295 AC_PATH_PROG(BISON, bison)
11296 if test -z "$BISON"; then
11297     AC_MSG_ERROR([no bison found in \$PATH, install it])
11298 else
11299     AC_MSG_CHECKING([the bison version])
11300     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11301     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11302     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11303     dnl cause
11304     dnl
11305     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]
11306     dnl   typedef union YYSTYPE
11307     dnl           ~~~~~~^~~~~~~
11308     dnl
11309     dnl while at least 3.4.1 is know to be good:
11310     if test "$COMPILER_PLUGINS" = TRUE; then
11311         if test "$_bison_longver" -lt 2004; then
11312             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11313         fi
11314     else
11315         if test "$_bison_longver" -lt 2000; then
11316             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11317         fi
11318     fi
11320 AC_SUBST([BISON])
11322 AC_PATH_PROG(FLEX, flex)
11323 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11324     FLEX=`cygpath -m $FLEX`
11326 if test -z "$FLEX"; then
11327     AC_MSG_ERROR([no flex found in \$PATH, install it])
11328 else
11329     AC_MSG_CHECKING([the flex version])
11330     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11331     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11332         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11333     fi
11335 AC_SUBST([FLEX])
11336 dnl ***************************************
11337 dnl Checking for patch
11338 dnl ***************************************
11339 AC_PATH_PROG(PATCH, patch)
11340 if test -z "$PATCH"; then
11341     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11344 dnl On Solaris or macOS, check if --with-gnu-patch was used
11345 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11346     if test -z "$with_gnu_patch"; then
11347         GNUPATCH=$PATCH
11348     else
11349         if test -x "$with_gnu_patch"; then
11350             GNUPATCH=$with_gnu_patch
11351         else
11352             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11353         fi
11354     fi
11356     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11357     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11358         AC_MSG_RESULT([yes])
11359     else
11360         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11361     fi
11362 else
11363     GNUPATCH=$PATCH
11366 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11367     GNUPATCH=`cygpath -m $GNUPATCH`
11370 dnl We also need to check for --with-gnu-cp
11372 if test -z "$with_gnu_cp"; then
11373     # check the place where the good stuff is hidden on Solaris...
11374     if test -x /usr/gnu/bin/cp; then
11375         GNUCP=/usr/gnu/bin/cp
11376     else
11377         AC_PATH_PROGS(GNUCP, gnucp cp)
11378     fi
11379     if test -z $GNUCP; then
11380         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11381     fi
11382 else
11383     if test -x "$with_gnu_cp"; then
11384         GNUCP=$with_gnu_cp
11385     else
11386         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11387     fi
11390 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11391     GNUCP=`cygpath -m $GNUCP`
11394 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11395 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11396     AC_MSG_RESULT([yes])
11397 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11398     AC_MSG_RESULT([yes])
11399 else
11400     case "$build_os" in
11401     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11402         x_GNUCP=[\#]
11403         GNUCP=''
11404         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11405         ;;
11406     *)
11407         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11408         ;;
11409     esac
11412 AC_SUBST(GNUPATCH)
11413 AC_SUBST(GNUCP)
11414 AC_SUBST(x_GNUCP)
11416 dnl ***************************************
11417 dnl testing assembler path
11418 dnl ***************************************
11419 ML_EXE=""
11420 if test "$_os" = "WINNT"; then
11421     case "$WIN_HOST_ARCH" in
11422     x86) assembler=ml.exe ;;
11423     x64) assembler=ml64.exe ;;
11424     arm64) assembler=armasm64.exe ;;
11425     esac
11427     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11428     if test -f "$MSVC_HOST_PATH/$assembler"; then
11429         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11430         AC_MSG_RESULT([$ML_EXE])
11431     else
11432         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11433     fi
11436 AC_SUBST(ML_EXE)
11438 dnl ===================================================================
11439 dnl We need zip and unzip
11440 dnl ===================================================================
11441 AC_PATH_PROG(ZIP, zip)
11442 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11443 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11444     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],,)
11447 AC_PATH_PROG(UNZIP, unzip)
11448 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11450 dnl ===================================================================
11451 dnl Zip must be a specific type for different build types.
11452 dnl ===================================================================
11453 if test $build_os = cygwin; then
11454     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11455         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11456     fi
11459 dnl ===================================================================
11460 dnl We need touch with -h option support.
11461 dnl ===================================================================
11462 AC_PATH_PROG(TOUCH, touch)
11463 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11464 touch "$WARNINGS_FILE"
11465 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11466     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],,)
11469 dnl ===================================================================
11470 dnl Check for system epoxy
11471 dnl ===================================================================
11472 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11474 dnl ===================================================================
11475 dnl Set vcl option: coordinate device in double or sal_Int32
11476 dnl ===================================================================
11478 dnl disabled for now, we don't want subtle differences between OSs
11479 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11480 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11481 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11482 dnl     AC_MSG_RESULT([double])
11483 dnl else
11484 dnl     AC_MSG_RESULT([sal_Int32])
11485 dnl fi
11487 dnl ===================================================================
11488 dnl Show which vclplugs will be built.
11489 dnl ===================================================================
11490 R=""
11491 if test "$USING_X11" != TRUE; then
11492     enable_gtk3=no
11495 ENABLE_GTK3=""
11496 if test "x$enable_gtk3" = "xyes"; then
11497     ENABLE_GTK3="TRUE"
11498     AC_DEFINE(ENABLE_GTK3)
11499     R="$R gtk3"
11501 AC_SUBST(ENABLE_GTK3)
11503 ENABLE_GTK3_KDE5=""
11504 if test "x$enable_gtk3_kde5" = "xyes"; then
11505     ENABLE_GTK3_KDE5="TRUE"
11506     AC_DEFINE(ENABLE_GTK3_KDE5)
11507     R="$R gtk3_kde5"
11509 AC_SUBST(ENABLE_GTK3_KDE5)
11511 ENABLE_GTK4=""
11512 if test "x$enable_gtk4" = "xyes"; then
11513     ENABLE_GTK4="TRUE"
11514     AC_DEFINE(ENABLE_GTK4)
11515     R="$R gtk4"
11517 AC_SUBST(ENABLE_GTK4)
11519 ENABLE_QT5=""
11520 if test "x$enable_qt5" = "xyes"; then
11521     ENABLE_QT5="TRUE"
11522     AC_DEFINE(ENABLE_QT5)
11523     R="$R qt5"
11525 AC_SUBST(ENABLE_QT5)
11527 ENABLE_QT6=""
11528 if test "x$enable_qt6" = "xyes"; then
11529     ENABLE_QT6="TRUE"
11530     AC_DEFINE(ENABLE_QT6)
11531     R="$R qt6"
11533 AC_SUBST(ENABLE_QT6)
11536 ENABLE_KF5=""
11537 if test "x$enable_kf5" = "xyes"; then
11538     ENABLE_KF5="TRUE"
11539     AC_DEFINE(ENABLE_KF5)
11540     R="$R kf5"
11542 AC_SUBST(ENABLE_KF5)
11544 if test "x$USING_X11" = "xyes"; then
11545     R="$R gen"
11548 if test "$_os" = "WINNT"; then
11549     R="$R win"
11550 elif test "$_os" = "Darwin"; then
11551     R="$R osx"
11552 elif test "$_os" = "iOS"; then
11553     R="ios"
11554 elif test "$_os" = Android; then
11555     R="android"
11558 build_vcl_plugins="$R"
11559 if test -z "$build_vcl_plugins"; then
11560     build_vcl_plugins=" none"
11562 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11563 VCL_PLUGIN_INFO=$R
11564 AC_SUBST([VCL_PLUGIN_INFO])
11566 dnl ===================================================================
11567 dnl Check for GTK libraries
11568 dnl ===================================================================
11570 GTK3_CFLAGS=""
11571 GTK3_LIBS=""
11572 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11573     if test "$with_system_cairo" = no; then
11574         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11575     fi
11576     : ${with_system_cairo:=yes}
11577     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)
11578     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11579     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11580     FilterLibs "${GTK3_LIBS}"
11581     GTK3_LIBS="${filteredlibs}"
11583     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11584     if test "$with_system_epoxy" != "yes"; then
11585         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11586         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11587                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11588     fi
11590 AC_SUBST(GTK3_LIBS)
11591 AC_SUBST(GTK3_CFLAGS)
11593 GTK4_CFLAGS=""
11594 GTK4_LIBS=""
11595 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11596     if test "$with_system_cairo" = no; then
11597         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11598     fi
11599     : ${with_system_cairo:=yes}
11600     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11601     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11602     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11603     FilterLibs "${GTK4_LIBS}"
11604     GTK4_LIBS="${filteredlibs}"
11606     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11607     if test "$with_system_epoxy" != "yes"; then
11608         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11609         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11610                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11611     fi
11613 AC_SUBST(GTK4_LIBS)
11614 AC_SUBST(GTK4_CFLAGS)
11616 if test "$enable_introspection" = yes; then
11617     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11618         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11619     else
11620         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11621     fi
11624 dnl ===================================================================
11625 dnl check for dbus support
11626 dnl ===================================================================
11627 ENABLE_DBUS=""
11628 DBUS_CFLAGS=""
11629 DBUS_LIBS=""
11630 DBUS_GLIB_CFLAGS=""
11631 DBUS_GLIB_LIBS=""
11632 DBUS_HAVE_GLIB=""
11634 if test "$enable_dbus" = "no"; then
11635     test_dbus=no
11638 AC_MSG_CHECKING([whether to enable DBUS support])
11639 if test "$test_dbus" = "yes"; then
11640     ENABLE_DBUS="TRUE"
11641     AC_MSG_RESULT([yes])
11642     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11643     AC_DEFINE(ENABLE_DBUS)
11644     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11645     FilterLibs "${DBUS_LIBS}"
11646     DBUS_LIBS="${filteredlibs}"
11648     # Glib is needed for BluetoothServer
11649     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11650     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11651         [
11652             DBUS_HAVE_GLIB="TRUE"
11653             AC_DEFINE(DBUS_HAVE_GLIB,1)
11654         ],
11655         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11656     )
11657 else
11658     AC_MSG_RESULT([no])
11661 AC_SUBST(ENABLE_DBUS)
11662 AC_SUBST(DBUS_CFLAGS)
11663 AC_SUBST(DBUS_LIBS)
11664 AC_SUBST(DBUS_GLIB_CFLAGS)
11665 AC_SUBST(DBUS_GLIB_LIBS)
11666 AC_SUBST(DBUS_HAVE_GLIB)
11668 AC_MSG_CHECKING([whether to enable Impress remote control])
11669 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11670     AC_MSG_RESULT([yes])
11671     ENABLE_SDREMOTE=TRUE
11672     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11674     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11675         # The Bluetooth code doesn't compile with macOS SDK 10.15
11676         if test "$enable_sdremote_bluetooth" = yes; then
11677             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11678         fi
11679         enable_sdremote_bluetooth=no
11680     fi
11681     # If not explicitly enabled or disabled, default
11682     if test -z "$enable_sdremote_bluetooth"; then
11683         case "$OS" in
11684         LINUX|MACOSX|WNT)
11685             # Default to yes for these
11686             enable_sdremote_bluetooth=yes
11687             ;;
11688         *)
11689             # otherwise no
11690             enable_sdremote_bluetooth=no
11691             ;;
11692         esac
11693     fi
11694     # $enable_sdremote_bluetooth is guaranteed non-empty now
11696     if test "$enable_sdremote_bluetooth" != "no"; then
11697         if test "$OS" = "LINUX"; then
11698             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11699                 AC_MSG_RESULT([yes])
11700                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11701                 dnl ===================================================================
11702                 dnl Check for system bluez
11703                 dnl ===================================================================
11704                 AC_MSG_CHECKING([which Bluetooth header to use])
11705                 if test "$with_system_bluez" = "yes"; then
11706                     AC_MSG_RESULT([external])
11707                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11708                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11709                     SYSTEM_BLUEZ=TRUE
11710                 else
11711                     AC_MSG_RESULT([internal])
11712                     SYSTEM_BLUEZ=
11713                 fi
11714             else
11715                 AC_MSG_RESULT([no, dbus disabled])
11716                 ENABLE_SDREMOTE_BLUETOOTH=
11717                 SYSTEM_BLUEZ=
11718             fi
11719         else
11720             AC_MSG_RESULT([yes])
11721             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11722             SYSTEM_BLUEZ=
11723         fi
11724     else
11725         AC_MSG_RESULT([no])
11726         ENABLE_SDREMOTE_BLUETOOTH=
11727         SYSTEM_BLUEZ=
11728     fi
11729 else
11730     ENABLE_SDREMOTE=
11731     SYSTEM_BLUEZ=
11732     AC_MSG_RESULT([no])
11734 AC_SUBST(ENABLE_SDREMOTE)
11735 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11736 AC_SUBST(SYSTEM_BLUEZ)
11738 dnl ===================================================================
11739 dnl Check whether to enable GIO support
11740 dnl ===================================================================
11741 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11742     AC_MSG_CHECKING([whether to enable GIO support])
11743     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11744         dnl Need at least 2.26 for the dbus support.
11745         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11746                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11747         if test "$ENABLE_GIO" = "TRUE"; then
11748             AC_DEFINE(ENABLE_GIO)
11749             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11750             FilterLibs "${GIO_LIBS}"
11751             GIO_LIBS="${filteredlibs}"
11752         fi
11753     else
11754         AC_MSG_RESULT([no])
11755     fi
11757 AC_SUBST(ENABLE_GIO)
11758 AC_SUBST(GIO_CFLAGS)
11759 AC_SUBST(GIO_LIBS)
11762 dnl ===================================================================
11764 SPLIT_APP_MODULES=""
11765 if test "$enable_split_app_modules" = "yes"; then
11766     SPLIT_APP_MODULES="TRUE"
11768 AC_SUBST(SPLIT_APP_MODULES)
11770 SPLIT_OPT_FEATURES=""
11771 if test "$enable_split_opt_features" = "yes"; then
11772     SPLIT_OPT_FEATURES="TRUE"
11774 AC_SUBST(SPLIT_OPT_FEATURES)
11776 dnl ===================================================================
11777 dnl Check whether the GStreamer libraries are available.
11778 dnl ===================================================================
11780 ENABLE_GSTREAMER_1_0=""
11782 if test "$test_gstreamer_1_0" = yes; then
11784     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11785     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11786         ENABLE_GSTREAMER_1_0="TRUE"
11787         AC_MSG_RESULT([yes])
11788         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11789         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11790         FilterLibs "${GSTREAMER_1_0_LIBS}"
11791         GSTREAMER_1_0_LIBS="${filteredlibs}"
11792         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11793     else
11794         AC_MSG_RESULT([no])
11795     fi
11797 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11798 AC_SUBST(GSTREAMER_1_0_LIBS)
11799 AC_SUBST(ENABLE_GSTREAMER_1_0)
11801 ENABLE_OPENGL_TRANSITIONS=
11802 ENABLE_OPENGL_CANVAS=
11803 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11804    : # disable
11805 elif test "$_os" = "Darwin"; then
11806     # We use frameworks on macOS, no need for detail checks
11807     ENABLE_OPENGL_TRANSITIONS=TRUE
11808     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11809     ENABLE_OPENGL_CANVAS=TRUE
11810 elif test $_os = WINNT; then
11811     ENABLE_OPENGL_TRANSITIONS=TRUE
11812     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11813     ENABLE_OPENGL_CANVAS=TRUE
11814 else
11815     if test "$USING_X11" = TRUE; then
11816         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11817         ENABLE_OPENGL_TRANSITIONS=TRUE
11818         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11819         ENABLE_OPENGL_CANVAS=TRUE
11820     fi
11823 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11824 AC_SUBST(ENABLE_OPENGL_CANVAS)
11826 dnl =================================================
11827 dnl Check whether to build with OpenCL support.
11828 dnl =================================================
11830 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11831     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11832     # platform (optional at run-time, used through clew).
11833     BUILD_TYPE="$BUILD_TYPE OPENCL"
11834     AC_DEFINE(HAVE_FEATURE_OPENCL)
11837 dnl =================================================
11838 dnl Check whether to build with dconf support.
11839 dnl =================================================
11841 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11842     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11843         if test "$enable_dconf" = yes; then
11844             AC_MSG_ERROR([dconf not found])
11845         else
11846             enable_dconf=no
11847         fi])
11849 AC_MSG_CHECKING([whether to enable dconf])
11850 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11851     DCONF_CFLAGS=
11852     DCONF_LIBS=
11853     ENABLE_DCONF=
11854     AC_MSG_RESULT([no])
11855 else
11856     ENABLE_DCONF=TRUE
11857     AC_DEFINE(ENABLE_DCONF)
11858     AC_MSG_RESULT([yes])
11860 AC_SUBST([DCONF_CFLAGS])
11861 AC_SUBST([DCONF_LIBS])
11862 AC_SUBST([ENABLE_DCONF])
11864 # pdf import?
11865 AC_MSG_CHECKING([whether to build the PDF import feature])
11866 ENABLE_PDFIMPORT=
11867 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11868     AC_MSG_RESULT([yes])
11869     ENABLE_PDFIMPORT=TRUE
11870     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11871 else
11872     AC_MSG_RESULT([no])
11875 # Pdfium?
11876 AC_MSG_CHECKING([whether to build PDFium])
11877 ENABLE_PDFIUM=
11878 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11879     AC_MSG_RESULT([yes])
11880     ENABLE_PDFIUM=TRUE
11881     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11882 else
11883     AC_MSG_RESULT([no])
11885 AC_SUBST(ENABLE_PDFIUM)
11887 dnl ===================================================================
11888 dnl Check for poppler
11889 dnl ===================================================================
11890 ENABLE_POPPLER=
11891 AC_MSG_CHECKING([whether to build Poppler])
11892 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11893     AC_MSG_RESULT([yes])
11894     ENABLE_POPPLER=TRUE
11895     AC_DEFINE(HAVE_FEATURE_POPPLER)
11896 else
11897     AC_MSG_RESULT([no])
11899 AC_SUBST(ENABLE_POPPLER)
11901 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11902     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11905 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11906     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11909 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11910     dnl ===================================================================
11911     dnl Check for system poppler
11912     dnl ===================================================================
11913     AC_MSG_CHECKING([which PDF import poppler to use])
11914     if test "$with_system_poppler" = "yes"; then
11915         AC_MSG_RESULT([external])
11916         SYSTEM_POPPLER=TRUE
11917         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11918         AC_LANG_PUSH([C++])
11919         save_CXXFLAGS=$CXXFLAGS
11920         save_CPPFLAGS=$CPPFLAGS
11921         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11922         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11923         AC_CHECK_HEADER([cpp/poppler-version.h],
11924             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11925             [])
11926         CXXFLAGS=$save_CXXFLAGS
11927         CPPFLAGS=$save_CPPFLAGS
11928         AC_LANG_POP([C++])
11929         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11931         FilterLibs "${POPPLER_LIBS}"
11932         POPPLER_LIBS="${filteredlibs}"
11933     else
11934         AC_MSG_RESULT([internal])
11935         SYSTEM_POPPLER=
11936         BUILD_TYPE="$BUILD_TYPE POPPLER"
11937         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11938     fi
11939     AC_DEFINE([ENABLE_PDFIMPORT],1)
11941 AC_SUBST(ENABLE_PDFIMPORT)
11942 AC_SUBST(SYSTEM_POPPLER)
11943 AC_SUBST(POPPLER_CFLAGS)
11944 AC_SUBST(POPPLER_LIBS)
11946 # Skia?
11947 ENABLE_SKIA=
11948 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11949     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
11950     if test "$SYSTEM_FREETYPE" = TRUE; then
11951         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
11952             [skia_freetype_ok=yes],
11953             [skia_freetype_ok=no])
11954     else # internal is ok
11955         skia_freetype_ok=yes
11956     fi
11957     AC_MSG_CHECKING([whether to build Skia])
11958     if test "$skia_freetype_ok" = "yes"; then
11959         if test "$enable_skia" = "debug"; then
11960             AC_MSG_RESULT([yes (debug)])
11961             ENABLE_SKIA_DEBUG=TRUE
11962         else
11963             AC_MSG_RESULT([yes])
11964             ENABLE_SKIA_DEBUG=
11965         fi
11966         ENABLE_SKIA=TRUE
11967         AC_DEFINE(HAVE_FEATURE_SKIA)
11968         BUILD_TYPE="$BUILD_TYPE SKIA"
11970         if test "$OS" = "MACOSX"; then
11971             AC_DEFINE(SK_SUPPORT_GPU,1)
11972             AC_DEFINE(SK_METAL,1)
11973             SKIA_GPU=METAL
11974             AC_SUBST(SKIA_GPU)
11975         else
11976             AC_DEFINE(SK_SUPPORT_GPU,1)
11977             AC_DEFINE(SK_VULKAN,1)
11978             SKIA_GPU=VULKAN
11979             AC_SUBST(SKIA_GPU)
11980         fi
11982         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
11983             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
11984             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
11985         fi
11986     else
11987         AC_MSG_RESULT([no (freetype too old)])
11988         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
11989     fi
11991 else
11992     AC_MSG_CHECKING([whether to build Skia])
11993     AC_MSG_RESULT([no])
11995 AC_SUBST(ENABLE_SKIA)
11996 AC_SUBST(ENABLE_SKIA_DEBUG)
11998 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11999 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12000 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12001 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12002 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12003 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12004 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12005 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12006 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12007 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12008 HAVE_LO_CLANG_DLLEXPORTINLINES=
12010 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12011     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12012         AC_MSG_CHECKING([for Clang])
12013         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12014     else
12015         if test "$_os" = "WINNT"; then
12016             AC_MSG_CHECKING([for clang-cl])
12017             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12018                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12019                 dnl explicitly set -m32/-m64
12020                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12021                 LO_CLANG_CXX="$LO_CLANG_CC"
12022                 AC_MSG_RESULT([$LO_CLANG_CC])
12023             else
12024                 AC_MSG_RESULT([no])
12025             fi
12026         else
12027             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12028             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12029         fi
12030     fi
12031     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12032         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12033         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12034         if test "$clang2_ver" -lt 50002; then
12035             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12036             LO_CLANG_CC=
12037             LO_CLANG_CXX=
12038         fi
12039     fi
12040     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12041         save_CXX="$CXX"
12042         CXX="$LO_CLANG_CXX"
12043         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12044         AC_LANG_PUSH([C++])
12045         save_CXXFLAGS=$CXXFLAGS
12046         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12047         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12048                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12049                 AC_MSG_RESULT([yes])
12050             ], [AC_MSG_RESULT([no])])
12051         CXXFLAGS=$save_CXXFLAGS
12052         AC_LANG_POP([C++])
12053         CXX="$save_CXX"
12054         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12055             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.])
12056         fi
12057     fi
12058     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12059         # Skia is the default on Windows and Mac, so hard-require Clang.
12060         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12061         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12062             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12063         else
12064             AC_MSG_WARN([Clang compiler not found.])
12065         fi
12066     else
12068         save_CXX="$CXX"
12069         CXX="$LO_CLANG_CXX"
12070         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12071         flag_sse2=-msse2
12072         flag_ssse3=-mssse3
12073         flag_sse41=-msse4.1
12074         flag_sse42=-msse4.2
12075         flag_avx=-mavx
12076         flag_avx2=-mavx2
12077         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12078         flag_avx512f=-mavx512f
12079         flag_f16c=-mf16c
12080         flag_fma=-mfma
12082         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12083         AC_LANG_PUSH([C++])
12084         save_CXXFLAGS=$CXXFLAGS
12085         CXXFLAGS="$CXXFLAGS $flag_sse2"
12086         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12087             #include <emmintrin.h>
12088             int main () {
12089                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12090                 c = _mm_xor_si128 (a, b);
12091                 return 0;
12092             }
12093             ])],
12094             [can_compile_sse2=yes],
12095             [can_compile_sse2=no])
12096         AC_LANG_POP([C++])
12097         CXXFLAGS=$save_CXXFLAGS
12098         AC_MSG_RESULT([${can_compile_sse2}])
12099         if test "${can_compile_sse2}" = "yes" ; then
12100             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12101         fi
12103         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12104         AC_LANG_PUSH([C++])
12105         save_CXXFLAGS=$CXXFLAGS
12106         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12107         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12108             #include <tmmintrin.h>
12109             int main () {
12110                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12111                 c = _mm_maddubs_epi16 (a, b);
12112                 return 0;
12113             }
12114             ])],
12115             [can_compile_ssse3=yes],
12116             [can_compile_ssse3=no])
12117         AC_LANG_POP([C++])
12118         CXXFLAGS=$save_CXXFLAGS
12119         AC_MSG_RESULT([${can_compile_ssse3}])
12120         if test "${can_compile_ssse3}" = "yes" ; then
12121             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12122         fi
12124         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12125         AC_LANG_PUSH([C++])
12126         save_CXXFLAGS=$CXXFLAGS
12127         CXXFLAGS="$CXXFLAGS $flag_sse41"
12128         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12129             #include <smmintrin.h>
12130             int main () {
12131                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12132                 c = _mm_cmpeq_epi64 (a, b);
12133                 return 0;
12134             }
12135             ])],
12136             [can_compile_sse41=yes],
12137             [can_compile_sse41=no])
12138         AC_LANG_POP([C++])
12139         CXXFLAGS=$save_CXXFLAGS
12140         AC_MSG_RESULT([${can_compile_sse41}])
12141         if test "${can_compile_sse41}" = "yes" ; then
12142             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12143         fi
12145         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12146         AC_LANG_PUSH([C++])
12147         save_CXXFLAGS=$CXXFLAGS
12148         CXXFLAGS="$CXXFLAGS $flag_sse42"
12149         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12150             #include <nmmintrin.h>
12151             int main () {
12152                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12153                 c = _mm_cmpgt_epi64 (a, b);
12154                 return 0;
12155             }
12156             ])],
12157             [can_compile_sse42=yes],
12158             [can_compile_sse42=no])
12159         AC_LANG_POP([C++])
12160         CXXFLAGS=$save_CXXFLAGS
12161         AC_MSG_RESULT([${can_compile_sse42}])
12162         if test "${can_compile_sse42}" = "yes" ; then
12163             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12164         fi
12166         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12167         AC_LANG_PUSH([C++])
12168         save_CXXFLAGS=$CXXFLAGS
12169         CXXFLAGS="$CXXFLAGS $flag_avx"
12170         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12171             #include <immintrin.h>
12172             int main () {
12173                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12174                 c = _mm256_xor_ps(a, b);
12175                 return 0;
12176             }
12177             ])],
12178             [can_compile_avx=yes],
12179             [can_compile_avx=no])
12180         AC_LANG_POP([C++])
12181         CXXFLAGS=$save_CXXFLAGS
12182         AC_MSG_RESULT([${can_compile_avx}])
12183         if test "${can_compile_avx}" = "yes" ; then
12184             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12185         fi
12187         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12188         AC_LANG_PUSH([C++])
12189         save_CXXFLAGS=$CXXFLAGS
12190         CXXFLAGS="$CXXFLAGS $flag_avx2"
12191         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12192             #include <immintrin.h>
12193             int main () {
12194                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12195                 c = _mm256_maddubs_epi16(a, b);
12196                 return 0;
12197             }
12198             ])],
12199             [can_compile_avx2=yes],
12200             [can_compile_avx2=no])
12201         AC_LANG_POP([C++])
12202         CXXFLAGS=$save_CXXFLAGS
12203         AC_MSG_RESULT([${can_compile_avx2}])
12204         if test "${can_compile_avx2}" = "yes" ; then
12205             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12206         fi
12208         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12209         AC_LANG_PUSH([C++])
12210         save_CXXFLAGS=$CXXFLAGS
12211         CXXFLAGS="$CXXFLAGS $flag_avx512"
12212         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12213             #include <immintrin.h>
12214             int main () {
12215                 __m512i a = _mm512_loadu_si512(0);
12216                 __m512d v1 = _mm512_load_pd(0);
12217                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12218                 __m512d v2 = _mm512_abs_pd(v1);
12219                 return 0;
12220             }
12221             ])],
12222             [can_compile_avx512=yes],
12223             [can_compile_avx512=no])
12224         AC_LANG_POP([C++])
12225         CXXFLAGS=$save_CXXFLAGS
12226         AC_MSG_RESULT([${can_compile_avx512}])
12227         if test "${can_compile_avx512}" = "yes" ; then
12228             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12229             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12230         fi
12232         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12233         AC_LANG_PUSH([C++])
12234         save_CXXFLAGS=$CXXFLAGS
12235         CXXFLAGS="$CXXFLAGS $flag_f16c"
12236         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12237             #include <immintrin.h>
12238             int main () {
12239                 __m128i a = _mm_set1_epi32 (0);
12240                 __m128 c;
12241                 c = _mm_cvtph_ps(a);
12242                 return 0;
12243             }
12244             ])],
12245             [can_compile_f16c=yes],
12246             [can_compile_f16c=no])
12247         AC_LANG_POP([C++])
12248         CXXFLAGS=$save_CXXFLAGS
12249         AC_MSG_RESULT([${can_compile_f16c}])
12250         if test "${can_compile_f16c}" = "yes" ; then
12251             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12252         fi
12254         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12255         AC_LANG_PUSH([C++])
12256         save_CXXFLAGS=$CXXFLAGS
12257         CXXFLAGS="$CXXFLAGS $flag_fma"
12258         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12259             #include <immintrin.h>
12260             int main () {
12261                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12262                 d = _mm256_fmadd_ps(a, b, c);
12263                 return 0;
12264             }
12265             ])],
12266             [can_compile_fma=yes],
12267             [can_compile_fma=no])
12268         AC_LANG_POP([C++])
12269         CXXFLAGS=$save_CXXFLAGS
12270         AC_MSG_RESULT([${can_compile_fma}])
12271         if test "${can_compile_fma}" = "yes" ; then
12272             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12273         fi
12275         CXX="$save_CXX"
12276     fi
12279 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12281 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12282     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12283     AC_LANG_PUSH([C])
12284     save_CC="$CC"
12285     CC="$LO_CLANG_CC"
12286     save_CFLAGS=$CFLAGS
12287     CFLAGS="$CFLAGS --ccache-skip -O2"
12288     dnl an empty program will do, we're checking the compiler flags
12289     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12290                       [use_ccache=yes], [use_ccache=no])
12291     CFLAGS=$save_CFLAGS
12292     CC=$save_CC
12293     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12294         AC_MSG_RESULT([yes])
12295     else
12296         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12297         AC_MSG_RESULT([no])
12298     fi
12299     AC_LANG_POP([C])
12301     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12302     AC_LANG_PUSH([C++])
12303     save_CXX="$CXX"
12304     CXX="$LO_CLANG_CXX"
12305     save_CXXFLAGS=$CXXFLAGS
12306     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12307     dnl an empty program will do, we're checking the compiler flags
12308     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12309                       [use_ccache=yes], [use_ccache=no])
12310     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12311         AC_MSG_RESULT([yes])
12312     else
12313         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12314         AC_MSG_RESULT([no])
12315     fi
12316     CXXFLAGS=$save_CXXFLAGS
12317     CXX=$save_CXX
12318     AC_LANG_POP([C++])
12321 AC_SUBST(LO_CLANG_CC)
12322 AC_SUBST(LO_CLANG_CXX)
12323 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12324 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12325 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12326 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12327 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12328 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12329 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12330 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12331 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12332 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12333 AC_SUBST(CLANG_USE_LD)
12334 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12336 SYSTEM_GPGMEPP=
12338 if test "$enable_gpgmepp" = no; then
12339     AC_MSG_CHECKING([whether to enable gpgmepp])
12340     AC_MSG_RESULT([no])
12341 elif test "$enable_mpl_subset" = "yes"; then
12342     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12343     AC_MSG_RESULT([yes])
12344 elif test "$enable_fuzzers" = "yes"; then
12345     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12346     AC_MSG_RESULT([yes])
12347 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12348     dnl ===================================================================
12349     dnl Check for system gpgme
12350     dnl ===================================================================
12351     AC_MSG_CHECKING([which gpgmepp to use])
12352     if test "$with_system_gpgmepp" = "yes"; then
12353         AC_MSG_RESULT([external])
12354         SYSTEM_GPGMEPP=TRUE
12356         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12357         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12358             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12359         # progress_callback is the only func with plain C linkage
12360         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12361         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12362             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12363         AC_CHECK_HEADER(gpgme.h, [],
12364             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12365     else
12366         AC_MSG_RESULT([internal])
12367         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12368         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12370         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12371         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12372         if test "$_os" != "WINNT"; then
12373             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12374             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12375         fi
12376     fi
12377     ENABLE_GPGMEPP=TRUE
12378     AC_DEFINE([HAVE_FEATURE_GPGME])
12379     AC_PATH_PROG(GPG, gpg)
12380     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12381     # so let's exclude that manually for the moment
12382     if test -n "$GPG" -a "$_os" != "WINNT"; then
12383         # make sure we not only have a working gpgme, but a full working
12384         # gpg installation to run OpenPGP signature verification
12385         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12386     fi
12387     if test "$_os" = "Linux"; then
12388       uid=`id -u`
12389       AC_MSG_CHECKING([for /run/user/$uid])
12390       if test -d /run/user/$uid; then
12391         AC_MSG_RESULT([yes])
12392         AC_PATH_PROG(GPGCONF, gpgconf)
12394         # Older versions of gpgconf are not working as expected, since
12395         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12396         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12397         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12398         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12399         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12400         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12401         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12402           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12403           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12404           if $GPGCONF --dump-options > /dev/null ; then
12405             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12406               AC_MSG_RESULT([yes])
12407               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12408               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12409             else
12410               AC_MSG_RESULT([no])
12411             fi
12412           else
12413             AC_MSG_RESULT([no. missing or broken gpgconf?])
12414           fi
12415         else
12416           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12417         fi
12418       else
12419         AC_MSG_RESULT([no])
12420      fi
12421    fi
12423 AC_SUBST(ENABLE_GPGMEPP)
12424 AC_SUBST(SYSTEM_GPGMEPP)
12425 AC_SUBST(GPG_ERROR_CFLAGS)
12426 AC_SUBST(GPG_ERROR_LIBS)
12427 AC_SUBST(LIBASSUAN_CFLAGS)
12428 AC_SUBST(LIBASSUAN_LIBS)
12429 AC_SUBST(GPGMEPP_CFLAGS)
12430 AC_SUBST(GPGMEPP_LIBS)
12432 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12433 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12434     AC_MSG_RESULT([yes])
12435     ENABLE_MEDIAWIKI=TRUE
12436     BUILD_TYPE="$BUILD_TYPE XSLTML"
12437     if test  "x$with_java" = "xno"; then
12438         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12439     fi
12440 else
12441     AC_MSG_RESULT([no])
12442     ENABLE_MEDIAWIKI=
12443     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12445 AC_SUBST(ENABLE_MEDIAWIKI)
12447 AC_MSG_CHECKING([whether to build the Report Builder])
12448 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12449     AC_MSG_RESULT([yes])
12450     ENABLE_REPORTBUILDER=TRUE
12451     AC_MSG_CHECKING([which jfreereport libs to use])
12452     if test "$with_system_jfreereport" = "yes"; then
12453         SYSTEM_JFREEREPORT=TRUE
12454         AC_MSG_RESULT([external])
12455         if test -z $SAC_JAR; then
12456             SAC_JAR=/usr/share/java/sac.jar
12457         fi
12458         if ! test -f $SAC_JAR; then
12459              AC_MSG_ERROR(sac.jar not found.)
12460         fi
12462         if test -z $LIBXML_JAR; then
12463             if test -f /usr/share/java/libxml-1.0.0.jar; then
12464                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12465             elif test -f /usr/share/java/libxml.jar; then
12466                 LIBXML_JAR=/usr/share/java/libxml.jar
12467             else
12468                 AC_MSG_ERROR(libxml.jar replacement not found.)
12469             fi
12470         elif ! test -f $LIBXML_JAR; then
12471             AC_MSG_ERROR(libxml.jar not found.)
12472         fi
12474         if test -z $FLUTE_JAR; then
12475             if test -f /usr/share/java/flute-1.3.0.jar; then
12476                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12477             elif test -f /usr/share/java/flute.jar; then
12478                 FLUTE_JAR=/usr/share/java/flute.jar
12479             else
12480                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12481             fi
12482         elif ! test -f $FLUTE_JAR; then
12483             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12484         fi
12486         if test -z $JFREEREPORT_JAR; then
12487             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12488                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12489             elif test -f /usr/share/java/flow-engine.jar; then
12490                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12491             else
12492                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12493             fi
12494         elif ! test -f  $JFREEREPORT_JAR; then
12495                 AC_MSG_ERROR(jfreereport.jar not found.)
12496         fi
12498         if test -z $LIBLAYOUT_JAR; then
12499             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12500                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12501             elif test -f /usr/share/java/liblayout.jar; then
12502                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12503             else
12504                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12505             fi
12506         elif ! test -f $LIBLAYOUT_JAR; then
12507                 AC_MSG_ERROR(liblayout.jar not found.)
12508         fi
12510         if test -z $LIBLOADER_JAR; then
12511             if test -f /usr/share/java/libloader-1.0.0.jar; then
12512                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12513             elif test -f /usr/share/java/libloader.jar; then
12514                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12515             else
12516                 AC_MSG_ERROR(libloader.jar replacement not found.)
12517             fi
12518         elif ! test -f  $LIBLOADER_JAR; then
12519             AC_MSG_ERROR(libloader.jar not found.)
12520         fi
12522         if test -z $LIBFORMULA_JAR; then
12523             if test -f /usr/share/java/libformula-0.2.0.jar; then
12524                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12525             elif test -f /usr/share/java/libformula.jar; then
12526                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12527             else
12528                 AC_MSG_ERROR(libformula.jar replacement not found.)
12529             fi
12530         elif ! test -f $LIBFORMULA_JAR; then
12531                 AC_MSG_ERROR(libformula.jar not found.)
12532         fi
12534         if test -z $LIBREPOSITORY_JAR; then
12535             if test -f /usr/share/java/librepository-1.0.0.jar; then
12536                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12537             elif test -f /usr/share/java/librepository.jar; then
12538                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12539             else
12540                 AC_MSG_ERROR(librepository.jar replacement not found.)
12541             fi
12542         elif ! test -f $LIBREPOSITORY_JAR; then
12543             AC_MSG_ERROR(librepository.jar not found.)
12544         fi
12546         if test -z $LIBFONTS_JAR; then
12547             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12548                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12549             elif test -f /usr/share/java/libfonts.jar; then
12550                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12551             else
12552                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12553             fi
12554         elif ! test -f $LIBFONTS_JAR; then
12555                 AC_MSG_ERROR(libfonts.jar not found.)
12556         fi
12558         if test -z $LIBSERIALIZER_JAR; then
12559             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12560                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12561             elif test -f /usr/share/java/libserializer.jar; then
12562                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12563             else
12564                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12565             fi
12566         elif ! test -f $LIBSERIALIZER_JAR; then
12567                 AC_MSG_ERROR(libserializer.jar not found.)
12568         fi
12570         if test -z $LIBBASE_JAR; then
12571             if test -f /usr/share/java/libbase-1.0.0.jar; then
12572                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12573             elif test -f /usr/share/java/libbase.jar; then
12574                 LIBBASE_JAR=/usr/share/java/libbase.jar
12575             else
12576                 AC_MSG_ERROR(libbase.jar replacement not found.)
12577             fi
12578         elif ! test -f $LIBBASE_JAR; then
12579             AC_MSG_ERROR(libbase.jar not found.)
12580         fi
12582     else
12583         AC_MSG_RESULT([internal])
12584         SYSTEM_JFREEREPORT=
12585         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12586         NEED_ANT=TRUE
12587     fi
12588 else
12589     AC_MSG_RESULT([no])
12590     ENABLE_REPORTBUILDER=
12591     SYSTEM_JFREEREPORT=
12593 AC_SUBST(ENABLE_REPORTBUILDER)
12594 AC_SUBST(SYSTEM_JFREEREPORT)
12595 AC_SUBST(SAC_JAR)
12596 AC_SUBST(LIBXML_JAR)
12597 AC_SUBST(FLUTE_JAR)
12598 AC_SUBST(JFREEREPORT_JAR)
12599 AC_SUBST(LIBBASE_JAR)
12600 AC_SUBST(LIBLAYOUT_JAR)
12601 AC_SUBST(LIBLOADER_JAR)
12602 AC_SUBST(LIBFORMULA_JAR)
12603 AC_SUBST(LIBREPOSITORY_JAR)
12604 AC_SUBST(LIBFONTS_JAR)
12605 AC_SUBST(LIBSERIALIZER_JAR)
12607 # scripting provider for BeanShell?
12608 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12609 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12610     AC_MSG_RESULT([yes])
12611     ENABLE_SCRIPTING_BEANSHELL=TRUE
12613     dnl ===================================================================
12614     dnl Check for system beanshell
12615     dnl ===================================================================
12616     AC_MSG_CHECKING([which beanshell to use])
12617     if test "$with_system_beanshell" = "yes"; then
12618         AC_MSG_RESULT([external])
12619         SYSTEM_BSH=TRUE
12620         if test -z $BSH_JAR; then
12621             BSH_JAR=/usr/share/java/bsh.jar
12622         fi
12623         if ! test -f $BSH_JAR; then
12624             AC_MSG_ERROR(bsh.jar not found.)
12625         fi
12626     else
12627         AC_MSG_RESULT([internal])
12628         SYSTEM_BSH=
12629         BUILD_TYPE="$BUILD_TYPE BSH"
12630     fi
12631 else
12632     AC_MSG_RESULT([no])
12633     ENABLE_SCRIPTING_BEANSHELL=
12634     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12636 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12637 AC_SUBST(SYSTEM_BSH)
12638 AC_SUBST(BSH_JAR)
12640 # scripting provider for JavaScript?
12641 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12642 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12643     AC_MSG_RESULT([yes])
12644     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12646     dnl ===================================================================
12647     dnl Check for system rhino
12648     dnl ===================================================================
12649     AC_MSG_CHECKING([which rhino to use])
12650     if test "$with_system_rhino" = "yes"; then
12651         AC_MSG_RESULT([external])
12652         SYSTEM_RHINO=TRUE
12653         if test -z $RHINO_JAR; then
12654             RHINO_JAR=/usr/share/java/js.jar
12655         fi
12656         if ! test -f $RHINO_JAR; then
12657             AC_MSG_ERROR(js.jar not found.)
12658         fi
12659     else
12660         AC_MSG_RESULT([internal])
12661         SYSTEM_RHINO=
12662         BUILD_TYPE="$BUILD_TYPE RHINO"
12663         NEED_ANT=TRUE
12664     fi
12665 else
12666     AC_MSG_RESULT([no])
12667     ENABLE_SCRIPTING_JAVASCRIPT=
12668     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12670 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12671 AC_SUBST(SYSTEM_RHINO)
12672 AC_SUBST(RHINO_JAR)
12674 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12675 # paths should be added to library search path. So lets put all 64-bit
12676 # platforms there.
12677 supports_multilib=
12678 case "$host_cpu" in
12679 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12680     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12681         supports_multilib="yes"
12682     fi
12683     ;;
12685     ;;
12686 esac
12688 dnl ===================================================================
12689 dnl QT5 Integration
12690 dnl ===================================================================
12692 QT5_CFLAGS=""
12693 QT5_LIBS=""
12694 QMAKE5="qmake"
12695 MOC5="moc"
12696 QT5_GOBJECT_CFLAGS=""
12697 QT5_GOBJECT_LIBS=""
12698 QT5_HAVE_GOBJECT=""
12699 QT5_PLATFORMS_SRCDIR=""
12700 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12701         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12702         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12703 then
12704     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12705     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12707     if test -n "$supports_multilib"; then
12708         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12709     fi
12711     qt5_test_include="QtWidgets/qapplication.h"
12712     if test "$_os" = "Emscripten"; then
12713         qt5_test_library="libQt5Widgets.a"
12714     else
12715         qt5_test_library="libQt5Widgets.so"
12716     fi
12718     dnl Check for qmake5
12719     if test -n "$QT5DIR"; then
12720         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12721     else
12722         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12723     fi
12724     if test "$QMAKE5" = "no"; then
12725         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12726     else
12727         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12728         if test -z "$qmake5_test_ver"; then
12729             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12730         fi
12731         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12732         qt5_minimal_minor="6"
12733         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12734             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12735         else
12736             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12737         fi
12738     fi
12740     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12741     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12742     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12743     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12745     AC_MSG_CHECKING([for Qt5 headers])
12746     qt5_incdir="no"
12747     for inc_dir in $qt5_incdirs; do
12748         if test -r "$inc_dir/$qt5_test_include"; then
12749             qt5_incdir="$inc_dir"
12750             break
12751         fi
12752     done
12753     AC_MSG_RESULT([$qt5_incdir])
12754     if test "x$qt5_incdir" = "xno"; then
12755         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12756     fi
12757     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12758     AC_LANG_PUSH([C++])
12759     save_CPPFLAGS=$CPPFLAGS
12760     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12761     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12762         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12763     CPPFLAGS=$save_CPPFLAGS
12764     AC_LANG_POP([C++])
12766     AC_MSG_CHECKING([for Qt5 libraries])
12767     qt5_libdir="no"
12768     for lib_dir in $qt5_libdirs; do
12769         if test -r "$lib_dir/$qt5_test_library"; then
12770             qt5_libdir="$lib_dir"
12771             break
12772         fi
12773     done
12774     AC_MSG_RESULT([$qt5_libdir])
12775     if test "x$qt5_libdir" = "xno"; then
12776         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12777     fi
12779     if test "$_os" = "Emscripten"; then
12780         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12781             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12782         fi
12783         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12784             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12785         fi
12786     fi
12788     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12789     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12790     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12791     if test "$_os" = "Emscripten"; then
12792         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12793     fi
12795     if test "$USING_X11" = TRUE; then
12796         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12797         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12798             QT5_HAVE_XCB_ICCCM=1
12799             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12800         ],[
12801             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)])
12802             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12803         ])
12804         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12805         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12806         QT5_USING_X11=1
12807         AC_DEFINE(QT5_USING_X11)
12808     fi
12810     dnl Check for Meta Object Compiler
12812     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12813     if test "$MOC5" = "no"; then
12814         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12815 the root of your Qt installation by exporting QT5DIR before running "configure".])
12816     fi
12818     if test "$test_gstreamer_1_0" = yes; then
12819         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12820                 QT5_HAVE_GOBJECT=1
12821                 AC_DEFINE(QT5_HAVE_GOBJECT)
12822             ],
12823             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12824         )
12825     fi
12827 AC_SUBST(QT5_CFLAGS)
12828 AC_SUBST(QT5_LIBS)
12829 AC_SUBST(MOC5)
12830 AC_SUBST(QT5_GOBJECT_CFLAGS)
12831 AC_SUBST(QT5_GOBJECT_LIBS)
12832 AC_SUBST(QT5_HAVE_GOBJECT)
12833 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12835 dnl ===================================================================
12836 dnl QT6 Integration
12837 dnl ===================================================================
12839 QT6_CFLAGS=""
12840 QT6_LIBS=""
12841 QMAKE6="qmake"
12842 MOC6="moc"
12843 QT6_PLATFORMS_SRCDIR=""
12844 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12845 then
12846     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12847     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12849     if test -n "$supports_multilib"; then
12850         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12851     fi
12853     qt6_test_include="QtWidgets/qapplication.h"
12854     if test "$_os" = "Emscripten"; then
12855         qt6_test_library="libQt6Widgets.a"
12856     else
12857         qt6_test_library="libQt6Widgets.so"
12858     fi
12860     dnl Check for qmake6
12861     if test -n "$QT6DIR"; then
12862         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12863     else
12864         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12865     fi
12866     if test "$QMAKE6" = "no"; then
12867         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12868     else
12869         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12870         if test -z "$qmake6_test_ver"; then
12871             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12872         fi
12873         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12874     fi
12876     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12877     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12878     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12879     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12881     AC_MSG_CHECKING([for Qt6 headers])
12882     qt6_incdir="no"
12883     for inc_dir in $qt6_incdirs; do
12884         if test -r "$inc_dir/$qt6_test_include"; then
12885             qt6_incdir="$inc_dir"
12886             break
12887         fi
12888     done
12889     AC_MSG_RESULT([$qt6_incdir])
12890     if test "x$qt6_incdir" = "xno"; then
12891         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12892     fi
12893     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12894     AC_LANG_PUSH([C++])
12895     save_CPPFLAGS=$CPPFLAGS
12896     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12897     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12898         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12899     CPPFLAGS=$save_CPPFLAGS
12900     AC_LANG_POP([C++])
12902     AC_MSG_CHECKING([for Qt6 libraries])
12903     qt6_libdir="no"
12904     for lib_dir in $qt6_libdirs; do
12905         if test -r "$lib_dir/$qt6_test_library"; then
12906             qt6_libdir="$lib_dir"
12907             break
12908         fi
12909     done
12910     AC_MSG_RESULT([$qt6_libdir])
12911     if test "x$qt6_libdir" = "xno"; then
12912         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12913     fi
12915     if test "$_os" = "Emscripten"; then
12916         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12917             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12918         fi
12919         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12920             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12921         fi
12922     fi
12924     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12925     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12926     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12927     if test "$_os" = "Emscripten"; then
12928         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12929     fi
12931     if test "$USING_X11" = TRUE; then
12932         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12933         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12934         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
12935         QT6_USING_X11=1
12936         AC_DEFINE(QT6_USING_X11)
12937     fi
12939     dnl Check for Meta Object Compiler
12941     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
12942     if test "$MOC6" = "no"; then
12943         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12944 the root of your Qt installation by exporting QT6DIR before running "configure".])
12945     fi
12947 AC_SUBST(QT6_CFLAGS)
12948 AC_SUBST(QT6_LIBS)
12949 AC_SUBST(MOC6)
12950 AC_SUBST(QT6_PLATFORMS_SRCDIR)
12952 dnl ===================================================================
12953 dnl KF5 Integration
12954 dnl ===================================================================
12956 KF5_CFLAGS=""
12957 KF5_LIBS=""
12958 KF5_CONFIG="kf5-config"
12959 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12960         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12961 then
12962     if test "$OS" = "HAIKU"; then
12963         haiku_arch="`echo $RTL_ARCH | tr X x`"
12964         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12965         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12966     fi
12968     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12969     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12970     if test -n "$supports_multilib"; then
12971         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12972     fi
12974     kf5_test_include="KF5/kcoreaddons_version.h"
12975     kf5_test_library="libKF5CoreAddons.so"
12976     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12978     dnl kf5 KDE4 support compatibility installed
12979     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12980     if test "$KF5_CONFIG" != "no"; then
12981         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12982         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12983     fi
12985     dnl Check for KF5 headers
12986     AC_MSG_CHECKING([for KF5 headers])
12987     kf5_incdir="no"
12988     for kf5_check in $kf5_incdirs; do
12989         if test -r "$kf5_check/$kf5_test_include"; then
12990             kf5_incdir="$kf5_check/KF5"
12991             break
12992         fi
12993     done
12994     AC_MSG_RESULT([$kf5_incdir])
12995     if test "x$kf5_incdir" = "xno"; then
12996         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12997     fi
12999     dnl Check for KF5 libraries
13000     AC_MSG_CHECKING([for KF5 libraries])
13001     kf5_libdir="no"
13002     for kf5_check in $kf5_libdirs; do
13003         if test -r "$kf5_check/$kf5_test_library"; then
13004             kf5_libdir="$kf5_check"
13005             break
13006         fi
13007     done
13009     AC_MSG_RESULT([$kf5_libdir])
13010     if test "x$kf5_libdir" = "xno"; then
13011         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13012     fi
13014     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"
13015     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13016     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13018     if test "$USING_X11" = TRUE; then
13019         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13020     fi
13022     AC_LANG_PUSH([C++])
13023     save_CXXFLAGS=$CXXFLAGS
13024     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13025     AC_MSG_CHECKING([whether KDE is >= 5.0])
13026        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13027 #include <kcoreaddons_version.h>
13029 int main(int argc, char **argv) {
13030        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13031        else return 1;
13033        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13034     CXXFLAGS=$save_CXXFLAGS
13035     AC_LANG_POP([C++])
13037 AC_SUBST(KF5_CFLAGS)
13038 AC_SUBST(KF5_LIBS)
13040 dnl ===================================================================
13041 dnl Test whether to include Evolution 2 support
13042 dnl ===================================================================
13043 AC_MSG_CHECKING([whether to enable evolution 2 support])
13044 if test "$enable_evolution2" = yes; then
13045     AC_MSG_RESULT([yes])
13046     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13047     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13048     FilterLibs "${GOBJECT_LIBS}"
13049     GOBJECT_LIBS="${filteredlibs}"
13050     ENABLE_EVOAB2="TRUE"
13051 else
13052     AC_MSG_RESULT([no])
13054 AC_SUBST(ENABLE_EVOAB2)
13055 AC_SUBST(GOBJECT_CFLAGS)
13056 AC_SUBST(GOBJECT_LIBS)
13058 dnl ===================================================================
13059 dnl Test which themes to include
13060 dnl ===================================================================
13061 AC_MSG_CHECKING([which themes to include])
13062 # if none given use default subset of available themes
13063 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13064     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"
13067 WITH_THEMES=""
13068 if test "x$with_theme" != "xno"; then
13069     for theme in $with_theme; do
13070         case $theme in
13071         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" ;;
13072         default) real_theme=colibre ;;
13073         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13074         esac
13075         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13076     done
13078 AC_MSG_RESULT([$WITH_THEMES])
13079 AC_SUBST([WITH_THEMES])
13080 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13081 for theme in $with_theme; do
13082     case $theme in
13083     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13084     *) ;;
13085     esac
13086 done
13088 ###############################################################################
13089 # Extensions checking
13090 ###############################################################################
13091 AC_MSG_CHECKING([for extensions integration])
13092 if test "x$enable_extension_integration" != "xno"; then
13093     WITH_EXTENSION_INTEGRATION=TRUE
13094     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13095     AC_MSG_RESULT([yes, use integration])
13096 else
13097     WITH_EXTENSION_INTEGRATION=
13098     AC_MSG_RESULT([no, do not integrate])
13100 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13102 dnl Should any extra extensions be included?
13103 dnl There are standalone tests for each of these below.
13104 WITH_EXTRA_EXTENSIONS=
13105 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13107 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13108 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13109 if test "x$with_java" != "xno"; then
13110     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13111     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13114 AC_MSG_CHECKING([whether to build opens___.ttf])
13115 if test "$enable_build_opensymbol" = "yes"; then
13116     AC_MSG_RESULT([yes])
13117     AC_PATH_PROG(FONTFORGE, fontforge)
13118     if test -z "$FONTFORGE"; then
13119         AC_MSG_ERROR([fontforge not installed])
13120     fi
13121 else
13122     AC_MSG_RESULT([no])
13123     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13125 AC_SUBST(FONTFORGE)
13127 dnl ===================================================================
13128 dnl Test whether to include fonts
13129 dnl ===================================================================
13130 AC_MSG_CHECKING([whether to include third-party fonts])
13131 if test "$with_fonts" != "no"; then
13132     AC_MSG_RESULT([yes])
13133     WITH_FONTS=TRUE
13134     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13135     AC_DEFINE(HAVE_MORE_FONTS)
13136 else
13137     AC_MSG_RESULT([no])
13138     WITH_FONTS=
13139     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13141 AC_SUBST(WITH_FONTS)
13144 dnl ===================================================================
13145 dnl Test whether to enable online update service
13146 dnl ===================================================================
13147 AC_MSG_CHECKING([whether to enable online update])
13148 ENABLE_ONLINE_UPDATE=
13149 ENABLE_ONLINE_UPDATE_MAR=
13150 UPDATE_CONFIG=
13151 if test "$enable_online_update" = ""; then
13152     AC_MSG_RESULT([no])
13153 else
13154     if test "$enable_online_update" = "mar"; then
13155         AC_MSG_RESULT([yes - MAR-based online update])
13156         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13157         if test "$with_update_config" = ""; then
13158             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13159         fi
13160         UPDATE_CONFIG="$with_update_config"
13161         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13162     elif test "$enable_online_update" = "yes"; then
13163         AC_MSG_RESULT([yes])
13164         ENABLE_ONLINE_UPDATE="TRUE"
13165     else
13166         AC_MSG_RESULT([no])
13167     fi
13169 AC_SUBST(ENABLE_ONLINE_UPDATE)
13170 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13171 AC_SUBST(UPDATE_CONFIG)
13174 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13175 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13176     if test "x$with_privacy_policy_url" = "xundefined"; then
13177         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13178     fi
13180 AC_SUBST(PRIVACY_POLICY_URL)
13181 dnl ===================================================================
13182 dnl Test whether we need bzip2
13183 dnl ===================================================================
13184 SYSTEM_BZIP2=
13185 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13186     AC_MSG_CHECKING([whether to use system bzip2])
13187     if test "$with_system_bzip2" = yes; then
13188         SYSTEM_BZIP2=TRUE
13189         AC_MSG_RESULT([yes])
13190         PKG_CHECK_MODULES(BZIP2, bzip2)
13191         FilterLibs "${BZIP2_LIBS}"
13192         BZIP2_LIBS="${filteredlibs}"
13193     else
13194         AC_MSG_RESULT([no])
13195         BUILD_TYPE="$BUILD_TYPE BZIP2"
13196     fi
13198 AC_SUBST(SYSTEM_BZIP2)
13199 AC_SUBST(BZIP2_CFLAGS)
13200 AC_SUBST(BZIP2_LIBS)
13202 dnl ===================================================================
13203 dnl Test whether to enable extension update
13204 dnl ===================================================================
13205 AC_MSG_CHECKING([whether to enable extension update])
13206 ENABLE_EXTENSION_UPDATE=
13207 if test "x$enable_extension_update" = "xno"; then
13208     AC_MSG_RESULT([no])
13209 else
13210     AC_MSG_RESULT([yes])
13211     ENABLE_EXTENSION_UPDATE="TRUE"
13212     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13213     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13215 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13218 dnl ===================================================================
13219 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13220 dnl ===================================================================
13221 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13222 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13223     AC_MSG_RESULT([no])
13224     ENABLE_SILENT_MSI=
13225 else
13226     AC_MSG_RESULT([yes])
13227     ENABLE_SILENT_MSI=TRUE
13228     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13230 AC_SUBST(ENABLE_SILENT_MSI)
13232 AC_MSG_CHECKING([whether and how to use Xinerama])
13233 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13234     if test "$x_libraries" = "default_x_libraries"; then
13235         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13236         if test "x$XINERAMALIB" = x; then
13237            XINERAMALIB="/usr/lib"
13238         fi
13239     else
13240         XINERAMALIB="$x_libraries"
13241     fi
13242     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13243         # we have both versions, let the user decide but use the dynamic one
13244         # per default
13245         USE_XINERAMA=TRUE
13246         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13247             XINERAMA_LINK=dynamic
13248         else
13249             XINERAMA_LINK=static
13250         fi
13251     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13252         # we have only the dynamic version
13253         USE_XINERAMA=TRUE
13254         XINERAMA_LINK=dynamic
13255     elif test -e "$XINERAMALIB/libXinerama.a"; then
13256         # static version
13257         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13258             USE_XINERAMA=TRUE
13259             XINERAMA_LINK=static
13260         else
13261             USE_XINERAMA=
13262             XINERAMA_LINK=none
13263         fi
13264     else
13265         # no Xinerama
13266         USE_XINERAMA=
13267         XINERAMA_LINK=none
13268     fi
13269     if test "$USE_XINERAMA" = "TRUE"; then
13270         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13271         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13272             [AC_MSG_ERROR(Xinerama header not found.)], [])
13273         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13274         if test "x$XEXTLIB" = x; then
13275            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13276         fi
13277         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13278         if test "$_os" = "FreeBSD"; then
13279             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13280         fi
13281         if test "$_os" = "Linux"; then
13282             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13283         fi
13284         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13285             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13286     else
13287         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13288     fi
13289 else
13290     USE_XINERAMA=
13291     XINERAMA_LINK=none
13292     AC_MSG_RESULT([no])
13294 AC_SUBST(USE_XINERAMA)
13295 AC_SUBST(XINERAMA_LINK)
13297 dnl ===================================================================
13298 dnl Test whether to build cairo or rely on the system version
13299 dnl ===================================================================
13301 if test "$test_cairo" = "yes"; then
13302     AC_MSG_CHECKING([whether to use the system cairo])
13304     : ${with_system_cairo:=$with_system_libs}
13305     if test "$with_system_cairo" = "yes"; then
13306         SYSTEM_CAIRO=TRUE
13307         AC_MSG_RESULT([yes])
13309         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13310         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13311         FilterLibs "${CAIRO_LIBS}"
13312         CAIRO_LIBS="${filteredlibs}"
13314         if test "$test_xrender" = "yes"; then
13315             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13316             AC_LANG_PUSH([C])
13317             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13318 #ifdef PictStandardA8
13319 #else
13320       return fail;
13321 #endif
13322 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13324             AC_LANG_POP([C])
13325         fi
13326     else
13327         AC_MSG_RESULT([no])
13328         BUILD_TYPE="$BUILD_TYPE CAIRO"
13329     fi
13331     if test "$enable_cairo_canvas" != no; then
13332         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13333         ENABLE_CAIRO_CANVAS=TRUE
13334     fi
13337 AC_SUBST(CAIRO_CFLAGS)
13338 AC_SUBST(CAIRO_LIBS)
13339 AC_SUBST(ENABLE_CAIRO_CANVAS)
13340 AC_SUBST(SYSTEM_CAIRO)
13342 dnl ===================================================================
13343 dnl Test whether to use avahi
13344 dnl ===================================================================
13345 if test "$_os" = "WINNT"; then
13346     # Windows uses bundled mDNSResponder
13347     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13348 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13349     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13350                       [ENABLE_AVAHI="TRUE"])
13351     AC_DEFINE(HAVE_FEATURE_AVAHI)
13352     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13353     FilterLibs "${AVAHI_LIBS}"
13354     AVAHI_LIBS="${filteredlibs}"
13357 AC_SUBST(ENABLE_AVAHI)
13358 AC_SUBST(AVAHI_CFLAGS)
13359 AC_SUBST(AVAHI_LIBS)
13361 dnl ===================================================================
13362 dnl Test whether to use liblangtag
13363 dnl ===================================================================
13364 SYSTEM_LIBLANGTAG=
13365 AC_MSG_CHECKING([whether to use system liblangtag])
13366 if test "$with_system_liblangtag" = yes; then
13367     SYSTEM_LIBLANGTAG=TRUE
13368     AC_MSG_RESULT([yes])
13369     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13370     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13371     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13372     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13373     FilterLibs "${LIBLANGTAG_LIBS}"
13374     LIBLANGTAG_LIBS="${filteredlibs}"
13375 else
13376     SYSTEM_LIBLANGTAG=
13377     AC_MSG_RESULT([no])
13378     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13379     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13380     if test "$COM" = "MSC"; then
13381         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13382     else
13383         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13384     fi
13386 AC_SUBST(SYSTEM_LIBLANGTAG)
13387 AC_SUBST(LIBLANGTAG_CFLAGS)
13388 AC_SUBST(LIBLANGTAG_LIBS)
13390 dnl ===================================================================
13391 dnl Test whether to build libpng or rely on the system version
13392 dnl ===================================================================
13394 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13396 dnl ===================================================================
13397 dnl Check for runtime JVM search path
13398 dnl ===================================================================
13399 if test "$ENABLE_JAVA" != ""; then
13400     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13401     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13402         AC_MSG_RESULT([yes])
13403         if ! test -d "$with_jvm_path"; then
13404             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13405         fi
13406         if ! test -d "$with_jvm_path"jvm; then
13407             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13408         fi
13409         JVM_ONE_PATH_CHECK="$with_jvm_path"
13410         AC_SUBST(JVM_ONE_PATH_CHECK)
13411     else
13412         AC_MSG_RESULT([no])
13413     fi
13416 dnl ===================================================================
13417 dnl Test for the presence of Ant and that it works
13418 dnl ===================================================================
13420 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13421     ANT_HOME=; export ANT_HOME
13422     WITH_ANT_HOME=; export WITH_ANT_HOME
13423     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13424         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13425             if test "$_os" = "WINNT"; then
13426                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13427             else
13428                 with_ant_home="$LODE_HOME/opt/ant"
13429             fi
13430         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13431             with_ant_home="$LODE_HOME/opt/ant"
13432         fi
13433     fi
13434     if test -z "$with_ant_home"; then
13435         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13436     else
13437         if test "$_os" = "WINNT"; then
13438             # AC_PATH_PROGS needs unix path
13439             with_ant_home=`cygpath -u "$with_ant_home"`
13440         fi
13441         AbsolutePath "$with_ant_home"
13442         with_ant_home=$absolute_path
13443         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13444         WITH_ANT_HOME=$with_ant_home
13445         ANT_HOME=$with_ant_home
13446     fi
13448     if test -z "$ANT"; then
13449         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13450     else
13451         # resolve relative or absolute symlink
13452         while test -h "$ANT"; do
13453             a_cwd=`pwd`
13454             a_basename=`basename "$ANT"`
13455             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13456             cd "`dirname "$ANT"`"
13457             cd "`dirname "$a_script"`"
13458             ANT="`pwd`"/"`basename "$a_script"`"
13459             cd "$a_cwd"
13460         done
13462         AC_MSG_CHECKING([if $ANT works])
13463         mkdir -p conftest.dir
13464         a_cwd=$(pwd)
13465         cd conftest.dir
13466         cat > conftest.java << EOF
13467         public class conftest {
13468             int testmethod(int a, int b) {
13469                     return a + b;
13470             }
13471         }
13474         cat > conftest.xml << EOF
13475         <project name="conftest" default="conftest">
13476         <target name="conftest">
13477             <javac srcdir="." includes="conftest.java">
13478             </javac>
13479         </target>
13480         </project>
13483         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13484         if test $? = 0 -a -f ./conftest.class; then
13485             AC_MSG_RESULT([Ant works])
13486             if test -z "$WITH_ANT_HOME"; then
13487                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13488                 if test -z "$ANT_HOME"; then
13489                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13490                 fi
13491             else
13492                 ANT_HOME="$WITH_ANT_HOME"
13493             fi
13494         else
13495             echo "configure: Ant test failed" >&5
13496             cat conftest.java >&5
13497             cat conftest.xml >&5
13498             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13499         fi
13500         cd "$a_cwd"
13501         rm -fr conftest.dir
13502     fi
13503     if test -z "$ANT_HOME"; then
13504         ANT_HOME="NO_ANT_HOME"
13505     else
13506         PathFormat "$ANT_HOME"
13507         ANT_HOME="$formatted_path"
13508         PathFormat "$ANT"
13509         ANT="$formatted_path"
13510     fi
13512     dnl Checking for ant.jar
13513     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13514         AC_MSG_CHECKING([Ant lib directory])
13515         if test -f $ANT_HOME/lib/ant.jar; then
13516             ANT_LIB="$ANT_HOME/lib"
13517         else
13518             if test -f $ANT_HOME/ant.jar; then
13519                 ANT_LIB="$ANT_HOME"
13520             else
13521                 if test -f /usr/share/java/ant.jar; then
13522                     ANT_LIB=/usr/share/java
13523                 else
13524                     if test -f /usr/share/ant-core/lib/ant.jar; then
13525                         ANT_LIB=/usr/share/ant-core/lib
13526                     else
13527                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13528                             ANT_LIB="$ANT_HOME/lib/ant"
13529                         else
13530                             if test -f /usr/share/lib/ant/ant.jar; then
13531                                 ANT_LIB=/usr/share/lib/ant
13532                             else
13533                                 AC_MSG_ERROR([Ant libraries not found!])
13534                             fi
13535                         fi
13536                     fi
13537                 fi
13538             fi
13539         fi
13540         PathFormat "$ANT_LIB"
13541         ANT_LIB="$formatted_path"
13542         AC_MSG_RESULT([Ant lib directory found.])
13543     fi
13545     ant_minver=1.6.0
13546     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13548     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13549     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13550     ant_version_major=`echo $ant_version | cut -d. -f1`
13551     ant_version_minor=`echo $ant_version | cut -d. -f2`
13552     echo "configure: ant_version $ant_version " >&5
13553     echo "configure: ant_version_major $ant_version_major " >&5
13554     echo "configure: ant_version_minor $ant_version_minor " >&5
13555     if test "$ant_version_major" -ge "2"; then
13556         AC_MSG_RESULT([yes, $ant_version])
13557     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13558         AC_MSG_RESULT([yes, $ant_version])
13559     else
13560         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13561     fi
13563     rm -f conftest* core core.* *.core
13565 AC_SUBST(ANT)
13566 AC_SUBST(ANT_HOME)
13567 AC_SUBST(ANT_LIB)
13569 OOO_JUNIT_JAR=
13570 HAMCREST_JAR=
13571 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13572     AC_MSG_CHECKING([for JUnit 4])
13573     if test "$with_junit" = "yes"; then
13574         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13575             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13576         elif test -e /usr/share/java/junit4.jar; then
13577             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13578         else
13579            if test -e /usr/share/lib/java/junit.jar; then
13580               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13581            else
13582               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13583            fi
13584         fi
13585     else
13586         OOO_JUNIT_JAR=$with_junit
13587     fi
13588     if test "$_os" = "WINNT"; then
13589         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13590     fi
13591     printf 'import org.junit.Before;' > conftest.java
13592     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13593         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13594     else
13595         AC_MSG_ERROR(
13596 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13597  specify its pathname via --with-junit=..., or disable it via --without-junit])
13598     fi
13599     rm -f conftest.class conftest.java
13600     if test $OOO_JUNIT_JAR != ""; then
13601         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13602     fi
13604     AC_MSG_CHECKING([for included Hamcrest])
13605     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13606     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13607         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13608     else
13609         AC_MSG_RESULT([Not included])
13610         AC_MSG_CHECKING([for standalone hamcrest jar.])
13611         if test "$with_hamcrest" = "yes"; then
13612             if test -e /usr/share/lib/java/hamcrest.jar; then
13613                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13614             elif test -e /usr/share/java/hamcrest/core.jar; then
13615                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13616             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13617                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13618             else
13619                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13620             fi
13621         else
13622             HAMCREST_JAR=$with_hamcrest
13623         fi
13624         if test "$_os" = "WINNT"; then
13625             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13626         fi
13627         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13628             AC_MSG_RESULT([$HAMCREST_JAR])
13629         else
13630             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),
13631                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13632         fi
13633     fi
13634     rm -f conftest.class conftest.java
13636 AC_SUBST(OOO_JUNIT_JAR)
13637 AC_SUBST(HAMCREST_JAR)
13640 AC_SUBST(SCPDEFS)
13643 # check for wget and curl
13645 WGET=
13646 CURL=
13648 if test "$enable_fetch_external" != "no"; then
13650 CURL=`which curl 2>/dev/null`
13652 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13653     # wget new enough?
13654     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13655     if test $? -eq 0; then
13656         WGET=$i
13657         break
13658     fi
13659 done
13661 if test -z "$WGET" -a -z "$CURL"; then
13662     AC_MSG_ERROR([neither wget nor curl found!])
13667 AC_SUBST(WGET)
13668 AC_SUBST(CURL)
13671 # check for sha256sum
13673 SHA256SUM=
13675 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13676     eval "$i -a 256 --version" > /dev/null 2>&1
13677     ret=$?
13678     if test $ret -eq 0; then
13679         SHA256SUM="$i -a 256"
13680         break
13681     fi
13682 done
13684 if test -z "$SHA256SUM"; then
13685     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13686         eval "$i --version" > /dev/null 2>&1
13687         ret=$?
13688         if test $ret -eq 0; then
13689             SHA256SUM=$i
13690             break
13691         fi
13692     done
13695 if test -z "$SHA256SUM"; then
13696     AC_MSG_ERROR([no sha256sum found!])
13699 AC_SUBST(SHA256SUM)
13701 dnl ===================================================================
13702 dnl Dealing with l10n options
13703 dnl ===================================================================
13704 AC_MSG_CHECKING([which languages to be built])
13705 # get list of all languages
13706 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13707 # the sed command does the following:
13708 #   + if a line ends with a backslash, append the next line to it
13709 #   + adds " on the beginning of the value (after =)
13710 #   + adds " at the end of the value
13711 #   + removes en-US; we want to put it on the beginning
13712 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13713 [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)]
13714 ALL_LANGS="en-US $completelangiso"
13715 # check the configured localizations
13716 WITH_LANG="$with_lang"
13718 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13719 # (Norwegian is "nb" and "nn".)
13720 if test "$WITH_LANG" = "no"; then
13721     WITH_LANG=
13724 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13725     AC_MSG_RESULT([en-US])
13726 else
13727     AC_MSG_RESULT([$WITH_LANG])
13728     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13729     if test -z "$MSGFMT"; then
13730         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13731             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13732         elif test -x "/opt/lo/bin/msgfmt"; then
13733             MSGFMT="/opt/lo/bin/msgfmt"
13734         else
13735             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13736             if test -z "$MSGFMT"; then
13737                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13738             fi
13739         fi
13740     fi
13741     if test -z "$MSGUNIQ"; then
13742         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13743             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13744         elif test -x "/opt/lo/bin/msguniq"; then
13745             MSGUNIQ="/opt/lo/bin/msguniq"
13746         else
13747             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13748             if test -z "$MSGUNIQ"; then
13749                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13750             fi
13751         fi
13752     fi
13754 AC_SUBST(MSGFMT)
13755 AC_SUBST(MSGUNIQ)
13756 # check that the list is valid
13757 for lang in $WITH_LANG; do
13758     test "$lang" = "ALL" && continue
13759     # need to check for the exact string, so add space before and after the list of all languages
13760     for vl in $ALL_LANGS; do
13761         if test "$vl" = "$lang"; then
13762            break
13763         fi
13764     done
13765     if test "$vl" != "$lang"; then
13766         # if you're reading this - you prolly quoted your languages remove the quotes ...
13767         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13768     fi
13769 done
13770 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13771     echo $WITH_LANG | grep -q en-US
13772     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13774 # list with substituted ALL
13775 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13776 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13777 test "$WITH_LANG" = "en-US" && WITH_LANG=
13778 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13779     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13780     ALL_LANGS=`echo $ALL_LANGS qtz`
13782 AC_SUBST(ALL_LANGS)
13783 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13784 AC_SUBST(WITH_LANG)
13785 AC_SUBST(WITH_LANG_LIST)
13786 AC_SUBST(GIT_NEEDED_SUBMODULES)
13788 WITH_POOR_HELP_LOCALIZATIONS=
13789 if test -d "$SRC_ROOT/translations/source"; then
13790     for l in `ls -1 $SRC_ROOT/translations/source`; do
13791         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13792             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13793         fi
13794     done
13796 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13798 if test -n "$with_locales"; then
13799     WITH_LOCALES="$with_locales"
13801     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13802     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13803     # config_host/config_locales.h.in
13804     for locale in $WITH_LOCALES; do
13805         lang=${locale%_*}
13807         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13809         case $lang in
13810         hi|mr*ne)
13811             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13812             ;;
13813         bg|ru)
13814             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13815             ;;
13816         esac
13817     done
13818 else
13819     AC_DEFINE(WITH_LOCALE_ALL)
13821 AC_SUBST(WITH_LOCALES)
13823 dnl git submodule update --reference
13824 dnl ===================================================================
13825 if test -n "${GIT_REFERENCE_SRC}"; then
13826     for repo in ${GIT_NEEDED_SUBMODULES}; do
13827         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13828             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13829         fi
13830     done
13832 AC_SUBST(GIT_REFERENCE_SRC)
13834 dnl git submodules linked dirs
13835 dnl ===================================================================
13836 if test -n "${GIT_LINK_SRC}"; then
13837     for repo in ${GIT_NEEDED_SUBMODULES}; do
13838         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13839             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13840         fi
13841     done
13843 AC_SUBST(GIT_LINK_SRC)
13845 dnl branding
13846 dnl ===================================================================
13847 AC_MSG_CHECKING([for alternative branding images directory])
13848 # initialize mapped arrays
13849 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13850 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13852 if test -z "$with_branding" -o "$with_branding" = "no"; then
13853     AC_MSG_RESULT([none])
13854     DEFAULT_BRAND_IMAGES="$brand_files"
13855 else
13856     if ! test -d $with_branding ; then
13857         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13858     else
13859         AC_MSG_RESULT([$with_branding])
13860         CUSTOM_BRAND_DIR="$with_branding"
13861         for lfile in $brand_files
13862         do
13863             if ! test -f $with_branding/$lfile ; then
13864                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13865                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13866             else
13867                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13868             fi
13869         done
13870         check_for_progress="yes"
13871     fi
13873 AC_SUBST([BRAND_INTRO_IMAGES])
13874 AC_SUBST([CUSTOM_BRAND_DIR])
13875 AC_SUBST([CUSTOM_BRAND_IMAGES])
13876 AC_SUBST([DEFAULT_BRAND_IMAGES])
13879 AC_MSG_CHECKING([for 'intro' progress settings])
13880 PROGRESSBARCOLOR=
13881 PROGRESSSIZE=
13882 PROGRESSPOSITION=
13883 PROGRESSFRAMECOLOR=
13884 PROGRESSTEXTCOLOR=
13885 PROGRESSTEXTBASELINE=
13887 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13888     source "$with_branding/progress.conf"
13889     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13890 else
13891     AC_MSG_RESULT([none])
13894 AC_SUBST(PROGRESSBARCOLOR)
13895 AC_SUBST(PROGRESSSIZE)
13896 AC_SUBST(PROGRESSPOSITION)
13897 AC_SUBST(PROGRESSFRAMECOLOR)
13898 AC_SUBST(PROGRESSTEXTCOLOR)
13899 AC_SUBST(PROGRESSTEXTBASELINE)
13902 dnl ===================================================================
13903 dnl Custom build version
13904 dnl ===================================================================
13905 AC_MSG_CHECKING([for extra build ID])
13906 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13907     EXTRA_BUILDID="$with_extra_buildid"
13909 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13910 if test -n "$EXTRA_BUILDID" ; then
13911     AC_MSG_RESULT([$EXTRA_BUILDID])
13912 else
13913     AC_MSG_RESULT([not set])
13915 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13917 OOO_VENDOR=
13918 AC_MSG_CHECKING([for vendor])
13919 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13920     OOO_VENDOR="$USERNAME"
13922     if test -z "$OOO_VENDOR"; then
13923         OOO_VENDOR="$USER"
13924     fi
13926     if test -z "$OOO_VENDOR"; then
13927         OOO_VENDOR="`id -u -n`"
13928     fi
13930     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13931 else
13932     OOO_VENDOR="$with_vendor"
13933     AC_MSG_RESULT([$OOO_VENDOR])
13935 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13936 AC_SUBST(OOO_VENDOR)
13938 if test "$_os" = "Android" ; then
13939     ANDROID_PACKAGE_NAME=
13940     AC_MSG_CHECKING([for Android package name])
13941     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13942         if test -n "$ENABLE_DEBUG"; then
13943             # Default to the package name that makes ndk-gdb happy.
13944             ANDROID_PACKAGE_NAME="org.libreoffice"
13945         else
13946             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13947         fi
13949         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13950     else
13951         ANDROID_PACKAGE_NAME="$with_android_package_name"
13952         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13953     fi
13954     AC_SUBST(ANDROID_PACKAGE_NAME)
13957 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13958 if test "$with_compat_oowrappers" = "yes"; then
13959     WITH_COMPAT_OOWRAPPERS=TRUE
13960     AC_MSG_RESULT(yes)
13961 else
13962     WITH_COMPAT_OOWRAPPERS=
13963     AC_MSG_RESULT(no)
13965 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13967 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13968 AC_MSG_CHECKING([for install dirname])
13969 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13970     INSTALLDIRNAME="$with_install_dirname"
13972 AC_MSG_RESULT([$INSTALLDIRNAME])
13973 AC_SUBST(INSTALLDIRNAME)
13975 AC_MSG_CHECKING([for prefix])
13976 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13977 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13978 PREFIXDIR="$prefix"
13979 AC_MSG_RESULT([$PREFIXDIR])
13980 AC_SUBST(PREFIXDIR)
13982 LIBDIR=[$(eval echo $(eval echo $libdir))]
13983 AC_SUBST(LIBDIR)
13985 DATADIR=[$(eval echo $(eval echo $datadir))]
13986 AC_SUBST(DATADIR)
13988 MANDIR=[$(eval echo $(eval echo $mandir))]
13989 AC_SUBST(MANDIR)
13991 DOCDIR=[$(eval echo $(eval echo $docdir))]
13992 AC_SUBST(DOCDIR)
13994 BINDIR=[$(eval echo $(eval echo $bindir))]
13995 AC_SUBST(BINDIR)
13997 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13998 AC_SUBST(INSTALLDIR)
14000 TESTINSTALLDIR="${BUILDDIR}/test-install"
14001 AC_SUBST(TESTINSTALLDIR)
14004 # ===================================================================
14005 # OAuth2 id and secrets
14006 # ===================================================================
14008 AC_MSG_CHECKING([for Google Drive client id and secret])
14009 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14010     AC_MSG_RESULT([not set])
14011     GDRIVE_CLIENT_ID="\"\""
14012     GDRIVE_CLIENT_SECRET="\"\""
14013 else
14014     AC_MSG_RESULT([set])
14015     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14016     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14018 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14019 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14021 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14022 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14023     AC_MSG_RESULT([not set])
14024     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14025     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14026 else
14027     AC_MSG_RESULT([set])
14028     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14029     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14031 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14032 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14034 AC_MSG_CHECKING([for OneDrive client id and secret])
14035 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14036     AC_MSG_RESULT([not set])
14037     ONEDRIVE_CLIENT_ID="\"\""
14038     ONEDRIVE_CLIENT_SECRET="\"\""
14039 else
14040     AC_MSG_RESULT([set])
14041     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14042     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14044 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14045 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14048 dnl ===================================================================
14049 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14050 dnl --enable-dependency-tracking configure option
14051 dnl ===================================================================
14052 AC_MSG_CHECKING([whether to enable dependency tracking])
14053 if test "$enable_dependency_tracking" = "no"; then
14054     nodep=TRUE
14055     AC_MSG_RESULT([no])
14056 else
14057     AC_MSG_RESULT([yes])
14059 AC_SUBST(nodep)
14061 dnl ===================================================================
14062 dnl Number of CPUs to use during the build
14063 dnl ===================================================================
14064 AC_MSG_CHECKING([for number of processors to use])
14065 # plain --with-parallelism is just the default
14066 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14067     if test "$with_parallelism" = "no"; then
14068         PARALLELISM=0
14069     else
14070         PARALLELISM=$with_parallelism
14071     fi
14072 else
14073     if test "$enable_icecream" = "yes"; then
14074         PARALLELISM="40"
14075     else
14076         case `uname -s` in
14078         Darwin|FreeBSD|NetBSD|OpenBSD)
14079             PARALLELISM=`sysctl -n hw.ncpu`
14080             ;;
14082         Linux)
14083             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14084         ;;
14085         # what else than above does profit here *and* has /proc?
14086         *)
14087             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14088             ;;
14089         esac
14091         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14092         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14093     fi
14096 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14097     if test -z "$with_parallelism"; then
14098             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14099             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14100             PARALLELISM="1"
14101     else
14102         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."
14103     fi
14106 if test $PARALLELISM -eq 0; then
14107     AC_MSG_RESULT([explicit make -j option needed])
14108 else
14109     AC_MSG_RESULT([$PARALLELISM])
14111 AC_SUBST(PARALLELISM)
14113 IWYU_PATH="$with_iwyu"
14114 AC_SUBST(IWYU_PATH)
14115 if test ! -z "$IWYU_PATH"; then
14116     if test ! -f "$IWYU_PATH"; then
14117         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14118     fi
14122 # Set up ILIB for MSVC build
14124 ILIB1=
14125 if test "$build_os" = "cygwin"; then
14126     ILIB="."
14127     if test -n "$JAVA_HOME"; then
14128         ILIB="$ILIB;$JAVA_HOME/lib"
14129     fi
14130     ILIB1=-link
14131     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14132     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14133     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14134     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14135     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14136         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14137         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14138     fi
14139     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14140     ucrtlibpath_formatted=$formatted_path
14141     ILIB="$ILIB;$ucrtlibpath_formatted"
14142     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14143     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14144         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14145     else
14146         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14147     fi
14149     if test "$cross_compiling" != "yes"; then
14150         ILIB_FOR_BUILD="$ILIB"
14151     fi
14153 AC_SUBST(ILIB)
14154 AC_SUBST(ILIB_FOR_BUILD)
14156 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14157 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14158 dnl from consteval constructor initializing const variable",
14159 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14160 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14161 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14162 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14163 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14164 dnl constructor in ternary expression (/std:c++latest)":
14165 AC_LANG_PUSH([C++])
14166 save_CXX=$CXX
14167 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14168     CXX="env LIB=$ILIB $CXX"
14170 save_CXXFLAGS=$CXXFLAGS
14171 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14172 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14173         struct S {
14174             consteval S() { i = 1; }
14175             int i = 0;
14176         };
14177         S const s;
14179         struct S1 { consteval S1(int) {} };
14180         struct S2 {
14181             S1 x;
14182             S2(): x(0) {}
14183         };
14185         struct S3 {
14186             consteval S3() {}
14187             union {
14188                 int a;
14189                 unsigned b = 0;
14190             };
14191         };
14192         void f() { S3(); }
14194         struct S4 { consteval S4() = default; };
14195         void f4(bool b) { b ? S4() : S4(); }
14196     ], [
14197         return (s.i == 1) ? 0 : 1;
14198     ])], [
14199         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14200         AC_MSG_RESULT([yes])
14201     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14202 CXX=$save_CXX
14203 CXXFLAGS=$save_CXXFLAGS
14204 AC_LANG_POP([C++])
14206 # ===================================================================
14207 # Creating bigger shared library to link against
14208 # ===================================================================
14209 AC_MSG_CHECKING([whether to create huge library])
14210 MERGELIBS=
14212 if test $_os = iOS -o $_os = Android; then
14213     # Never any point in mergelibs for these as we build just static
14214     # libraries anyway...
14215     enable_mergelibs=no
14218 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14219     if test $_os != Linux -a $_os != WINNT; then
14220         add_warning "--enable-mergelibs is not tested for this platform"
14221     fi
14222     MERGELIBS="TRUE"
14223     AC_MSG_RESULT([yes])
14224     AC_DEFINE(ENABLE_MERGELIBS)
14225 else
14226     AC_MSG_RESULT([no])
14228 AC_SUBST([MERGELIBS])
14230 dnl ===================================================================
14231 dnl icerun is a wrapper that stops us spawning tens of processes
14232 dnl locally - for tools that can't be executed on the compile cluster
14233 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14234 dnl ===================================================================
14235 AC_MSG_CHECKING([whether to use icerun wrapper])
14236 ICECREAM_RUN=
14237 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14238     ICECREAM_RUN=icerun
14239     AC_MSG_RESULT([yes])
14240 else
14241     AC_MSG_RESULT([no])
14243 AC_SUBST(ICECREAM_RUN)
14245 dnl ===================================================================
14246 dnl Setup the ICECC_VERSION for the build the same way it was set for
14247 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14248 dnl ===================================================================
14249 x_ICECC_VERSION=[\#]
14250 if test -n "$ICECC_VERSION" ; then
14251     x_ICECC_VERSION=
14253 AC_SUBST(x_ICECC_VERSION)
14254 AC_SUBST(ICECC_VERSION)
14256 dnl ===================================================================
14258 AC_MSG_CHECKING([MPL subset])
14259 MPL_SUBSET=
14261 if test "$enable_mpl_subset" = "yes"; then
14262     warn_report=false
14263     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14264         warn_report=true
14265     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14266         warn_report=true
14267     fi
14268     if test "$warn_report" = "true"; then
14269         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14270     fi
14271     if test "x$enable_postgresql_sdbc" != "xno"; then
14272         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14273     fi
14274     if test "$enable_lotuswordpro" = "yes"; then
14275         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14276     fi
14277     if test "$WITH_WEBDAV" = "neon"; then
14278         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14279     fi
14280     if test -n "$ENABLE_POPPLER"; then
14281         if test "x$SYSTEM_POPPLER" = "x"; then
14282             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14283         fi
14284     fi
14285     # cf. m4/libo_check_extension.m4
14286     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14287         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14288     fi
14289     for theme in $WITH_THEMES; do
14290         case $theme in
14291         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14292             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14293         *) : ;;
14294         esac
14295     done
14297     ENABLE_OPENGL_TRANSITIONS=
14299     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14300         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14301     fi
14303     MPL_SUBSET="TRUE"
14304     AC_DEFINE(MPL_HAVE_SUBSET)
14305     AC_MSG_RESULT([only])
14306 else
14307     AC_MSG_RESULT([no restrictions])
14309 AC_SUBST(MPL_SUBSET)
14311 dnl ===================================================================
14313 AC_MSG_CHECKING([formula logger])
14314 ENABLE_FORMULA_LOGGER=
14316 if test "x$enable_formula_logger" = "xyes"; then
14317     AC_MSG_RESULT([yes])
14318     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14319     ENABLE_FORMULA_LOGGER=TRUE
14320 elif test -n "$ENABLE_DBGUTIL" ; then
14321     AC_MSG_RESULT([yes])
14322     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14323     ENABLE_FORMULA_LOGGER=TRUE
14324 else
14325     AC_MSG_RESULT([no])
14328 AC_SUBST(ENABLE_FORMULA_LOGGER)
14330 dnl ===================================================================
14331 dnl Checking for active Antivirus software.
14332 dnl ===================================================================
14334 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14335     AC_MSG_CHECKING([for active Antivirus software])
14336     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14337     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14338         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14339             AC_MSG_RESULT([found])
14340             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14341             echo $EICAR_STRING > $SRC_ROOT/eicar
14342             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14343             rm $SRC_ROOT/eicar
14344             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14345                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14346             fi
14347             echo $EICAR_STRING > $BUILDDIR/eicar
14348             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14349             rm $BUILDDIR/eicar
14350             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14351                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14352             fi
14353             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"
14354         else
14355             AC_MSG_RESULT([not found])
14356         fi
14357     else
14358         AC_MSG_RESULT([n/a])
14359     fi
14362 dnl ===================================================================
14363 dnl Setting up the environment.
14364 dnl ===================================================================
14365 AC_MSG_NOTICE([setting up the build environment variables...])
14367 AC_SUBST(COMPATH)
14369 if test "$build_os" = "cygwin"; then
14370     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14371         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14372         ATL_INCLUDE="$COMPATH/atlmfc/include"
14373     elif test -d "$COMPATH/atlmfc/lib"; then
14374         ATL_LIB="$COMPATH/atlmfc/lib"
14375         ATL_INCLUDE="$COMPATH/atlmfc/include"
14376     else
14377         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14378         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14379     fi
14380     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14381     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14382     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14384     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14385     PathFormat "/usr/bin/find.exe"
14386     FIND="$formatted_path"
14387     PathFormat "/usr/bin/sort.exe"
14388     SORT="$formatted_path"
14389     PathFormat "/usr/bin/grep.exe"
14390     WIN_GREP="$formatted_path"
14391     PathFormat "/usr/bin/ls.exe"
14392     WIN_LS="$formatted_path"
14393     PathFormat "/usr/bin/touch.exe"
14394     WIN_TOUCH="$formatted_path"
14395 else
14396     FIND=find
14397     SORT=sort
14400 AC_SUBST(ATL_INCLUDE)
14401 AC_SUBST(ATL_LIB)
14402 AC_SUBST(FIND)
14403 AC_SUBST(SORT)
14404 AC_SUBST(WIN_GREP)
14405 AC_SUBST(WIN_LS)
14406 AC_SUBST(WIN_TOUCH)
14408 AC_SUBST(BUILD_TYPE)
14410 AC_SUBST(SOLARINC)
14412 PathFormat "$PERL"
14413 PERL="$formatted_path"
14414 AC_SUBST(PERL)
14416 if test -n "$TMPDIR"; then
14417     TEMP_DIRECTORY="$TMPDIR"
14418 else
14419     TEMP_DIRECTORY="/tmp"
14421 if test "$build_os" = "cygwin"; then
14422     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14424 AC_SUBST(TEMP_DIRECTORY)
14426 # setup the PATH for the environment
14427 if test -n "$LO_PATH_FOR_BUILD"; then
14428     LO_PATH="$LO_PATH_FOR_BUILD"
14429     case "$host_os" in
14430     cygwin*|wsl*)
14431         pathmunge "$MSVC_HOST_PATH" "before"
14432         ;;
14433     esac
14434 else
14435     LO_PATH="$PATH"
14437     case "$host_os" in
14439     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14440         if test "$ENABLE_JAVA" != ""; then
14441             pathmunge "$JAVA_HOME/bin" "after"
14442         fi
14443         ;;
14445     cygwin*|wsl*)
14446         # Win32 make needs native paths
14447         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14448             LO_PATH=`cygpath -p -m "$PATH"`
14449         fi
14450         if test "$WIN_BUILD_ARCH" = "x64"; then
14451             # needed for msi packaging
14452             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14453         fi
14454         # .NET 4.6 and higher don't have bin directory
14455         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14456             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14457         fi
14458         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14459         pathmunge "$CSC_PATH" "before"
14460         pathmunge "$MIDL_PATH" "before"
14461         pathmunge "$AL_PATH" "before"
14462         pathmunge "$MSVC_MULTI_PATH" "before"
14463         pathmunge "$MSVC_BUILD_PATH" "before"
14464         if test -n "$MSBUILD_PATH" ; then
14465             pathmunge "$MSBUILD_PATH" "before"
14466         fi
14467         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14468         if test "$ENABLE_JAVA" != ""; then
14469             if test -d "$JAVA_HOME/jre/bin/client"; then
14470                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14471             fi
14472             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14473                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14474             fi
14475             pathmunge "$JAVA_HOME/bin" "before"
14476         fi
14477         pathmunge "$MSVC_HOST_PATH" "before"
14478         ;;
14480     solaris*)
14481         pathmunge "/usr/css/bin" "before"
14482         if test "$ENABLE_JAVA" != ""; then
14483             pathmunge "$JAVA_HOME/bin" "after"
14484         fi
14485         ;;
14486     esac
14489 AC_SUBST(LO_PATH)
14491 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14492 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14493     x_LO_ELFCHECK_ALLOWLIST=
14494 else
14495     x_LO_ELFCHECK_ALLOWLIST=[\#]
14497 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14498 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14500 libo_FUZZ_SUMMARY
14502 # Generate a configuration sha256 we can use for deps
14503 if test -f config_host.mk; then
14504     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14506 if test -f config_host_lang.mk; then
14507     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14510 CFLAGS=$my_original_CFLAGS
14511 CXXFLAGS=$my_original_CXXFLAGS
14512 CPPFLAGS=$my_original_CPPFLAGS
14514 AC_CONFIG_LINKS([include:include])
14516 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14517 # BUILD platform configuration] - otherwise breaks cross building
14518 AC_CONFIG_FILES([config_host.mk
14519                  config_host_lang.mk
14520                  Makefile
14521                  bin/bffvalidator.sh
14522                  bin/odfvalidator.sh
14523                  bin/officeotron.sh
14524                  hardened_runtime.xcent
14525                  instsetoo_native/util/openoffice.lst
14526                  sysui/desktop/macosx/Info.plist
14527                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14528 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14529 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14530 AC_CONFIG_HEADERS([config_host/config_clang.h])
14531 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14532 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14533 AC_CONFIG_HEADERS([config_host/config_eot.h])
14534 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14535 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14536 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14537 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14538 AC_CONFIG_HEADERS([config_host/config_features.h])
14539 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14540 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14541 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14542 AC_CONFIG_HEADERS([config_host/config_folders.h])
14543 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14544 AC_CONFIG_HEADERS([config_host/config_gio.h])
14545 AC_CONFIG_HEADERS([config_host/config_global.h])
14546 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14547 AC_CONFIG_HEADERS([config_host/config_java.h])
14548 AC_CONFIG_HEADERS([config_host/config_langs.h])
14549 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14550 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14551 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14552 AC_CONFIG_HEADERS([config_host/config_locales.h])
14553 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14554 AC_CONFIG_HEADERS([config_host/config_oox.h])
14555 AC_CONFIG_HEADERS([config_host/config_options.h])
14556 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14557 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14558 AC_CONFIG_HEADERS([config_host/config_skia.h])
14559 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14560 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14561 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14562 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14563 AC_CONFIG_HEADERS([config_host/config_version.h])
14564 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14565 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14566 AC_CONFIG_HEADERS([config_host/config_python.h])
14567 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14568 AC_OUTPUT
14570 if test "$CROSS_COMPILING" = TRUE; then
14571     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14574 # touch the config timestamp file
14575 if test ! -f config_host.mk.stamp; then
14576     echo > config_host.mk.stamp
14577 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14578     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14579 else
14580     echo > config_host.mk.stamp
14583 # touch the config lang timestamp file
14584 if test ! -f config_host_lang.mk.stamp; then
14585     echo > config_host_lang.mk.stamp
14586 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14587     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14588 else
14589     echo > config_host_lang.mk.stamp
14593 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14594         -a "$build_os" = "cygwin"; then
14596 cat << _EOS
14597 ****************************************************************************
14598 WARNING:
14599 Your make version is known to be horribly slow, and hard to debug
14600 problems with. To get a reasonably functional make please do:
14602 to install a pre-compiled binary make for Win32
14604  mkdir -p /opt/lo/bin
14605  cd /opt/lo/bin
14606  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14607  cp make-4.2.1-msvc.exe make
14608  chmod +x make
14610 to install from source:
14611 place yourself in a working directory of you choice.
14613  git clone git://git.savannah.gnu.org/make.git
14615  [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"]
14616  set PATH=%PATH%;C:\Cygwin\bin
14617  [or Cygwin64, if that is what you have]
14618  cd path-to-make-repo-you-cloned-above
14619  build_w32.bat --without-guile
14621 should result in a WinRel/gnumake.exe.
14622 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14624 Then re-run autogen.sh
14626 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14627 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14629 _EOS
14630 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14631     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14636 cat << _EOF
14637 ****************************************************************************
14639 To build, run:
14640 $GNUMAKE
14642 To view some help, run:
14643 $GNUMAKE help
14645 _EOF
14647 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14648     cat << _EOF
14649 After the build has finished successfully, you can immediately run what you built using the command:
14650 _EOF
14652     if test $_os = Darwin; then
14653         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14654     else
14655         echo instdir/program/soffice
14656     fi
14657     cat << _EOF
14659 If you want to run the smoketest, run:
14660 $GNUMAKE check
14662 _EOF
14665 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14666     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14667     cat "$WARNINGS_FILE_FOR_BUILD"
14668     echo
14671 if test -s "$WARNINGS_FILE"; then
14672     echo "HOST config ($WARNINGS_FILE)"
14673     cat "$WARNINGS_FILE"
14676 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: