Version 7.1.7.1, tag libreoffice-7.1.7.1
[LibreOffice.git] / configure.ac
blob98d6faf040cac6568369cfcba054a91b2d459f0d
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.1.7.1],[],[],[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 rm -f warn
206 have_WARNINGS="no"
207 add_warning()
209     if test "$have_WARNINGS" = "no"; then
210         echo "*************************************" > warn
211         have_WARNINGS="yes"
212         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
213             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
214             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
215         else
216             COLORWARN="* WARNING :"
217         fi
218     fi
219     echo "$COLORWARN $@" >> warn
222 dnl Some Mac User have the bad habit of letting a lot of crap
223 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
224 dnl that confuse the build.
225 dnl For the ones that use LODE, let's be nice and protect them
226 dnl from themselves
228 mac_sanitize_path()
230     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
231 dnl a common but nevertheless necessary thing that may be in a fancy
232 dnl path location is git, so make sure we have it
233     mac_git_path=`which git 2>/dev/null`
234     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
235         mac_path="$mac_path:`dirname $mac_git_path`"
236     fi
237 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
238 dnl path location is gpg, so make sure we find it
239     mac_gpg_path=`which gpg 2>/dev/null`
240     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
241         mac_path="$mac_path:`dirname $mac_gpg_path`"
242     fi
243     PATH="$mac_path"
244     unset mac_path
245     unset mac_git_path
246     unset mac_gpg_path
249 echo "********************************************************************"
250 echo "*"
251 echo "*   Running ${PACKAGE_NAME} build configuration."
252 echo "*"
253 echo "********************************************************************"
254 echo ""
256 dnl ===================================================================
257 dnl checks build and host OSes
258 dnl do this before argument processing to allow for platform dependent defaults
259 dnl ===================================================================
261 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
262 # Linux on WSL) trust that.
263 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
264     ac_cv_host="x86_64-pc-wsl"
265     ac_cv_host_cpu="x86_64"
266     ac_cv_host_os="wsl"
267     ac_cv_build="$ac_cv_host"
268     ac_cv_build_cpu="$ac_cv_host_cpu"
269     ac_cv_build_os="$ac_cv_host_os"
271     # Emulation of Cygwin's cygpath command for WSL.
272     cygpath()
273     {
274         if test -n "$UNITTEST_WSL_CYGPATH"; then
275             echo -n cygpath "$@" "==> "
276         fi
278         # Cygwin's real cygpath has a plethora of options but we use only a few here.
279         local args="$@"
280         local opt
281         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
282         OPTIND=1
284         while getopts dmuwlsp opt; do
285             case "$opt" in
286                 \?)
287                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
288                     ;;
289                 ?)
290                     eval opt_$opt=yes
291                     ;;
292             esac
293         done
295         shift $((OPTIND-1))
297         if test $# -ne 1; then
298             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
299         fi
301         local input="$1"
303         local result
305         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
306             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
308             if test -n "$opt_u"; then
309                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
310             fi
312             case "$input" in
313                 /mnt/*)
314                     # A Windows file in WSL format
315                     input=$(wslpath -w "$input")
316                     ;;
317                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
318                     # Already in Windows format
319                     ;;
320                 /*)
321                     input=$(wslpath -w "$input")
322                     ;;
323                 *)
324                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
325                     ;;
326             esac
327             if test -n "$opt_d" -o -n "$opt_s"; then
328                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
329             fi
330             if test -n "$opt_m"; then
331                 input="${input//\\//}"
332             fi
333             echo "$input"
334         else
335             # Print Unix path
337             case "$input" in
338                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
339                     wslpath -u "$input"
340                     ;;
341                 /)
342                     echo "$input"
343                     ;;
344                 *)
345                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
346                     ;;
347             esac
348         fi
349     }
351     if test -n "$UNITTEST_WSL_CYGPATH"; then
352         BUILDDIR=.
354         # Nothing special with these file names, just arbitrary ones picked to test with
355         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
356         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
357         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
359         # At least on my machine for instance this file does have an 8.3 name
360         cygpath -d /mnt/c/windows/WindowsUpdate.log
361         # But for instance this one doesn't
362         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
363         cygpath -ws /mnt/c/windows/WindowsUpdate.log
364         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ms /mnt/c/windows/WindowsUpdate.log
367         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
368         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
370         exit 0
371     fi
374 AC_CANONICAL_HOST
375 AC_CANONICAL_BUILD
377 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
378     BUILDDIR=.
379     GREP=grep
381     # Use of PathFormat must be after AC_CANONICAL_BUILD above
382     PathFormat /
383     printf "$formatted_path , $formatted_path_unix\n"
385     PathFormat $PWD
386     printf "$formatted_path , $formatted_path_unix\n"
388     PathFormat "$PROGRAMFILESX86"
389     printf "$formatted_path , $formatted_path_unix\n"
391     exit 0
394 AC_MSG_CHECKING([for product name])
395 PRODUCTNAME="AC_PACKAGE_NAME"
396 if test -n "$with_product_name" -a "$with_product_name" != no; then
397     PRODUCTNAME="$with_product_name"
399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
400     PRODUCTNAME="${PRODUCTNAME}Dev"
402 AC_MSG_RESULT([$PRODUCTNAME])
403 AC_SUBST(PRODUCTNAME)
404 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
405 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
407 dnl ===================================================================
408 dnl Our version is defined by the AC_INIT() at the top of this script.
409 dnl ===================================================================
411 AC_MSG_CHECKING([for package version])
412 if test -n "$with_package_version" -a "$with_package_version" != no; then
413     PACKAGE_VERSION="$with_package_version"
415 AC_MSG_RESULT([$PACKAGE_VERSION])
417 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
419 LIBO_VERSION_MAJOR=$1
420 LIBO_VERSION_MINOR=$2
421 LIBO_VERSION_MICRO=$3
422 LIBO_VERSION_PATCH=$4
424 LIBO_VERSION_SUFFIX=$5
426 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
427 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
428 # they get undoubled before actually passed to sed.
429 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
430 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
431 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
432 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
434 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
435 # three non-negative integers. Please find more information about CFBundleVersion at
436 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
438 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
439 # of at most three non-negative integers. Please find more information about
440 # CFBundleShortVersionString at
441 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
443 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
445 if test "$enable_macosx_sandbox" = yes; then
446     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
447     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
448 else
449     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
450     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
453 AC_SUBST(LIBO_VERSION_MAJOR)
454 AC_SUBST(LIBO_VERSION_MINOR)
455 AC_SUBST(LIBO_VERSION_MICRO)
456 AC_SUBST(LIBO_VERSION_PATCH)
457 AC_SUBST(LIBO_VERSION_SUFFIX)
458 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
459 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
460 AC_SUBST(MACOSX_BUNDLE_VERSION)
462 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
463 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
467 LIBO_THIS_YEAR=`date +%Y`
468 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
470 dnl ===================================================================
471 dnl Product version
472 dnl ===================================================================
473 AC_MSG_CHECKING([for product version])
474 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
475 AC_MSG_RESULT([$PRODUCTVERSION])
476 AC_SUBST(PRODUCTVERSION)
478 AC_PROG_EGREP
479 # AC_PROG_EGREP doesn't set GREP on all systems as well
480 AC_PATH_PROG(GREP, grep)
482 BUILDDIR=`pwd`
483 cd $srcdir
484 SRC_ROOT=`pwd`
485 cd $BUILDDIR
486 x_Cygwin=[\#]
488 dnl ======================================
489 dnl Required GObject introspection version
490 dnl ======================================
491 INTROSPECTION_REQUIRED_VERSION=1.32.0
493 dnl ===================================================================
494 dnl Search all the common names for GNU Make
495 dnl ===================================================================
496 AC_MSG_CHECKING([for GNU Make])
498 # try to use our own make if it is available and GNUMAKE was not already defined
499 if test -z "$GNUMAKE"; then
500     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
501         GNUMAKE="$LODE_HOME/opt/bin/make"
502     elif test -x "/opt/lo/bin/make"; then
503         GNUMAKE="/opt/lo/bin/make"
504     fi
507 GNUMAKE_WIN_NATIVE=
508 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
509     if test -n "$a"; then
510         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
511         if test $? -eq 0;  then
512             if test "$build_os" = "cygwin"; then
513                 if test -n "$($a -v | grep 'Built for Windows')" ; then
514                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
515                     GNUMAKE_WIN_NATIVE="TRUE"
516                 else
517                     GNUMAKE=`which $a`
518                 fi
519             else
520                 GNUMAKE=`which $a`
521             fi
522             break
523         fi
524     fi
525 done
526 AC_MSG_RESULT($GNUMAKE)
527 if test -z "$GNUMAKE"; then
528     AC_MSG_ERROR([not found. install GNU Make.])
529 else
530     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
531         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
532     fi
535 win_short_path_for_make()
537     local short_path="$1"
538     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
539         cygpath -sm "$short_path"
540     else
541         cygpath -u "$(cygpath -d "$short_path")"
542     fi
546 if test "$build_os" = "cygwin"; then
547     PathFormat "$SRC_ROOT"
548     SRC_ROOT="$formatted_path"
549     PathFormat "$BUILDDIR"
550     BUILDDIR="$formatted_path"
551     x_Cygwin=
552     AC_MSG_CHECKING(for explicit COMSPEC)
553     if test -z "$COMSPEC"; then
554         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
555     else
556         AC_MSG_RESULT([found: $COMSPEC])
557     fi
560 AC_SUBST(SRC_ROOT)
561 AC_SUBST(BUILDDIR)
562 AC_SUBST(x_Cygwin)
563 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
564 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
565 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
567 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
568     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
571 # need sed in os checks...
572 AC_PATH_PROGS(SED, sed)
573 if test -z "$SED"; then
574     AC_MSG_ERROR([install sed to run this script])
577 # Set the ENABLE_LTO variable
578 # ===================================================================
579 AC_MSG_CHECKING([whether to use link-time optimization])
580 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
581     ENABLE_LTO="TRUE"
582     AC_MSG_RESULT([yes])
583 else
584     ENABLE_LTO=""
585     AC_MSG_RESULT([no])
587 AC_SUBST(ENABLE_LTO)
589 AC_ARG_ENABLE(fuzz-options,
590     AS_HELP_STRING([--enable-fuzz-options],
591         [Randomly enable or disable each of those configurable options
592          that are supposed to be freely selectable without interdependencies,
593          or where bad interaction from interdependencies is automatically avoided.])
596 dnl ===================================================================
597 dnl When building for Android, --with-android-ndk,
598 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
599 dnl mandatory
600 dnl ===================================================================
602 AC_ARG_WITH(android-ndk,
603     AS_HELP_STRING([--with-android-ndk],
604         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
607 AC_ARG_WITH(android-ndk-toolchain-version,
608     AS_HELP_STRING([--with-android-ndk-toolchain-version],
609         [Specify which toolchain version to use, of those present in the
610         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
611         with_android_ndk_toolchain_version=clang5.0)
613 AC_ARG_WITH(android-sdk,
614     AS_HELP_STRING([--with-android-sdk],
615         [Specify location of the Android SDK. Mandatory when building for Android.]),
618 AC_ARG_WITH(android-api-level,
619     AS_HELP_STRING([--with-android-api-level],
620         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
623 ANDROID_NDK_HOME=
624 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
625     with_android_ndk="$SRC_ROOT/external/android-ndk"
627 if test -n "$with_android_ndk"; then
628     eval ANDROID_NDK_HOME=$with_android_ndk
630     # Set up a lot of pre-canned defaults
632     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
633         if test ! -f $ANDROID_NDK_HOME/source.properties; then
634             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
635         fi
636         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
637     else
638         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
639     fi
640     if test -z "$ANDROID_NDK_VERSION";  then
641         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
642     fi
643     case $ANDROID_NDK_VERSION in
644     r9*|r10*)
645         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
646         ;;
647     11.1.*|12.1.*|13.1.*|14.1.*)
648         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
649         ;;
650     16.*|17.*|18.*|19.*|20.*)
651         ;;
652     *)
653         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
654         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
655         ;;
656     esac
658     ANDROID_API_LEVEL=16
659     if test -n "$with_android_api_level" ; then
660         ANDROID_API_LEVEL="$with_android_api_level"
661     fi
663     android_cpu=$host_cpu
664     if test $host_cpu = arm; then
665         android_platform_prefix=arm-linux-androideabi
666         android_gnu_prefix=$android_platform_prefix
667         LLVM_TRIPLE=armv7a-linux-androideabi
668         ANDROID_APP_ABI=armeabi-v7a
669         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
670     elif test $host_cpu = aarch64; then
671         android_platform_prefix=aarch64-linux-android
672         android_gnu_prefix=$android_platform_prefix
673         LLVM_TRIPLE=$android_platform_prefix
674         # minimum android version that supports aarch64
675         if test "$ANDROID_API_LEVEL" -lt "21" ; then
676             ANDROID_API_LEVEL=21
677         fi
678         ANDROID_APP_ABI=arm64-v8a
679     elif test $host_cpu = x86_64; then
680         android_platform_prefix=x86_64-linux-android
681         android_gnu_prefix=$android_platform_prefix
682         LLVM_TRIPLE=$android_platform_prefix
683         # minimum android version that supports x86_64
684         ANDROID_API_LEVEL=21
685         ANDROID_APP_ABI=x86_64
686     else
687         # host_cpu is something like "i386" or "i686" I guess, NDK uses
688         # "x86" in some contexts
689         android_cpu=x86
690         android_platform_prefix=$android_cpu
691         android_gnu_prefix=i686-linux-android
692         LLVM_TRIPLE=$android_gnu_prefix
693         ANDROID_APP_ABI=x86
694     fi
696     case "$with_android_ndk_toolchain_version" in
697     clang5.0)
698         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
699         ;;
700     *)
701         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
702     esac
704     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
706     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
707     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
708     # manage to link the (app-specific) single huge .so that is built for the app in
709     # android/source/ if there is debug information in a significant part of the object files.
710     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
711     # all objects have been built with debug information.)
712     case $build_os in
713     linux-gnu*)
714         android_HOST_TAG=linux-x86_64
715         ;;
716     darwin*)
717         android_HOST_TAG=darwin-x86_64
718         ;;
719     *)
720         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
721         # ndk would also support windows and windows-x86_64
722         ;;
723     esac
724     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
725     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
726     dnl TODO: NSS build uses it...
727     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
728     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
730     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
731     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
732     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
733     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
734     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
736     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
737     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
738     if test "$ENABLE_LTO" = TRUE; then
739         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
740         # $CC and $CXX when building external libraries
741         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
742     fi
744     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
746     if test -z "$CC"; then
747         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
748         CC_BASE="clang"
749     fi
750     if test -z "$CXX"; then
751         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
752         CXX_BASE="clang++"
753     fi
755     # remember to download the ownCloud Android library later
756     BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
758 AC_SUBST(ANDROID_NDK_HOME)
759 AC_SUBST(ANDROID_APP_ABI)
760 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
762 dnl ===================================================================
763 dnl --with-android-sdk
764 dnl ===================================================================
765 ANDROID_SDK_HOME=
766 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
767     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
769 if test -n "$with_android_sdk"; then
770     eval ANDROID_SDK_HOME=$with_android_sdk
771     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
773 AC_SUBST(ANDROID_SDK_HOME)
775 AC_ARG_ENABLE([android-lok],
776     AS_HELP_STRING([--enable-android-lok],
777         [The Android app from the android/ subdir needs several tweaks all
778          over the place that break the LOK when used in the Online-based
779          Android app.  This switch indicates that the intent of this build is
780          actually the Online-based, non-modified LOK.])
782 ENABLE_ANDROID_LOK=
783 if test -n "$ANDROID_NDK_HOME" ; then
784     if test "$enable_android_lok" = yes; then
785         ENABLE_ANDROID_LOK=TRUE
786         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
787         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
788     else
789         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
790     fi
792 AC_SUBST([ENABLE_ANDROID_LOK])
794 libo_FUZZ_ARG_ENABLE([android-editing],
795     AS_HELP_STRING([--enable-android-editing],
796         [Enable the experimental editing feature on Android.])
798 ENABLE_ANDROID_EDITING=
799 if test "$enable_android_editing" = yes; then
800     ENABLE_ANDROID_EDITING=TRUE
802 AC_SUBST([ENABLE_ANDROID_EDITING])
804 dnl ===================================================================
805 dnl The following is a list of supported systems.
806 dnl Sequential to keep the logic very simple
807 dnl These values may be checked and reset later.
808 dnl ===================================================================
809 #defaults unless the os test overrides this:
810 test_randr=yes
811 test_xrender=yes
812 test_cups=yes
813 test_dbus=yes
814 test_fontconfig=yes
815 test_cairo=no
816 test_gdb_index=no
817 test_split_debug=no
819 # Default values, as such probably valid just for Linux, set
820 # differently below just for Mac OSX, but at least better than
821 # hardcoding these as we used to do. Much of this is duplicated also
822 # in solenv for old build system and for gbuild, ideally we should
823 # perhaps define stuff like this only here in configure.ac?
825 LINKFLAGSSHL="-shared"
826 PICSWITCH="-fpic"
827 DLLPOST=".so"
829 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
831 INSTROOTBASESUFFIX=
832 INSTROOTCONTENTSUFFIX=
833 SDKDIRNAME=sdk
835 HOST_PLATFORM="$host"
837 host_cpu_for_clang="$host_cpu"
839 case "$host_os" in
841 solaris*)
842     build_gstreamer_1_0=yes
843     test_freetype=yes
844     build_skia=yes
845     _os=SunOS
847     dnl ===========================================================
848     dnl Check whether we're using Solaris 10 - SPARC or Intel.
849     dnl ===========================================================
850     AC_MSG_CHECKING([the Solaris operating system release])
851     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
852     if test "$_os_release" -lt "10"; then
853         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
854     else
855         AC_MSG_RESULT([ok ($_os_release)])
856     fi
858     dnl Check whether we're using a SPARC or i386 processor
859     AC_MSG_CHECKING([the processor type])
860     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
861         AC_MSG_RESULT([ok ($host_cpu)])
862     else
863         AC_MSG_ERROR([only SPARC and i386 processors are supported])
864     fi
865     ;;
867 linux-gnu*|k*bsd*-gnu*)
868     build_gstreamer_1_0=yes
869     test_kf5=yes
870     test_gtk3_kde5=yes
871     build_skia=yes
872     test_gdb_index=yes
873     test_split_debug=yes
874     if test "$enable_fuzzers" != yes; then
875         test_freetype=yes
876         test_fontconfig=yes
877     else
878         test_freetype=no
879         test_fontconfig=no
880         BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
881     fi
882     _os=Linux
883     ;;
885 gnu)
886     test_randr=no
887     test_xrender=no
888     _os=GNU
889      ;;
891 cygwin*|wsl*)
893     # When building on Windows normally with MSVC under Cygwin,
894     # configure thinks that the host platform (the platform the
895     # built code will run on) is Cygwin, even if it obviously is
896     # Windows, which in Autoconf terminology is called
897     # "mingw32". (Which is misleading as MinGW is the name of the
898     # tool-chain, not an operating system.)
900     # Somewhat confusing, yes. But this configure script doesn't
901     # look at $host etc that much, it mostly uses its own $_os
902     # variable, set here in this case statement.
904     test_cups=no
905     test_dbus=no
906     test_randr=no
907     test_xrender=no
908     test_freetype=no
909     test_fontconfig=no
910     build_skia=yes
911     _os=WINNT
913     DLLPOST=".dll"
914     LINKFLAGSNOUNDEFS=
916     if test "$host_cpu" = "aarch64"; then
917         enable_gpgmepp=no
918         enable_coinmp=no
919         enable_firebird_sdbc=no
920     fi
921     ;;
923 darwin*|macos*) # macOS
924     test_randr=no
925     test_xrender=no
926     test_freetype=no
927     test_fontconfig=no
928     test_dbus=no
929     if test -n "$LODE_HOME" ; then
930         mac_sanitize_path
931         AC_MSG_NOTICE([sanitized the PATH to $PATH])
932     fi
933     _os=Darwin
934     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
935     INSTROOTCONTENTSUFFIX=/Contents
936     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
937     # See comment above the case "$host_os"
938     LINKFLAGSSHL="-dynamiclib -single_module"
940     # -fPIC is default
941     PICSWITCH=""
943     DLLPOST=".dylib"
945     # -undefined error is the default
946     LINKFLAGSNOUNDEFS=""
947     case "$host_cpu" in
948     aarch64|arm64)
949         case "$host_os" in
950         macos*)
951             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
952             # the "macos" part so be sure to use aarch64-apple-darwin for now.
953             HOST_PLATFORM=aarch64-apple-darwin
954             ;;
955         esac
957         # Apple's Clang uses "arm64"
958         host_cpu_for_clang=arm64
959     esac
962 ios*) # iOS
963     test_randr=no
964     test_xrender=no
965     test_freetype=no
966     test_fontconfig=no
967     test_dbus=no
968     if test -n "$LODE_HOME" ; then
969         mac_sanitize_path
970         AC_MSG_NOTICE([sanitized the PATH to $PATH])
971     fi
972     enable_gpgmepp=no
973     _os=iOS
974     test_cups=no
975     enable_mpl_subset=yes
976     enable_lotuswordpro=no
977     enable_coinmp=no
978     enable_lpsolve=no
979     enable_mariadb_sdbc=no
980     enable_postgresql_sdbc=no
981     enable_extension_integration=no
982     enable_report_builder=no
983     with_ppds=no
984     if test "$enable_ios_simulator" = "yes"; then
985         host=x86_64-apple-darwin
986     fi
987     # See comment above the case "$host_os"
988     LINKFLAGSSHL="-dynamiclib -single_module"
990     # -fPIC is default
991     PICSWITCH=""
993     DLLPOST=".dylib"
995     # -undefined error is the default
996     LINKFLAGSNOUNDEFS=""
998     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
999     # part, so use aarch64-apple-darwin for now.
1000     HOST_PLATFORM=aarch64-apple-darwin
1002     # Apple's Clang uses "arm64"
1003     host_cpu_for_clang=arm64
1006 freebsd*)
1007     build_gstreamer_1_0=yes
1008     test_kf5=yes
1009     test_gtk3_kde5=yes
1010     test_freetype=yes
1011     build_skia=yes
1012     AC_MSG_CHECKING([the FreeBSD operating system release])
1013     if test -n "$with_os_version"; then
1014         OSVERSION="$with_os_version"
1015     else
1016         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1017     fi
1018     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1019     AC_MSG_CHECKING([which thread library to use])
1020     if test "$OSVERSION" -lt "500016"; then
1021         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1022         PTHREAD_LIBS="-pthread"
1023     elif test "$OSVERSION" -lt "502102"; then
1024         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1025         PTHREAD_LIBS="-lc_r"
1026     else
1027         PTHREAD_CFLAGS=""
1028         PTHREAD_LIBS="-pthread"
1029     fi
1030     AC_MSG_RESULT([$PTHREAD_LIBS])
1031     _os=FreeBSD
1032     ;;
1034 *netbsd*)
1035     build_gstreamer_1_0=yes
1036     test_kf5=yes
1037     test_gtk3_kde5=yes
1038     test_freetype=yes
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     test_randr=no
1046     test_freetype=yes
1047     PTHREAD_LIBS=-pthread
1048     _os=AIX
1049     ;;
1051 openbsd*)
1052     test_freetype=yes
1053     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054     PTHREAD_LIBS="-pthread"
1055     _os=OpenBSD
1056     ;;
1058 dragonfly*)
1059     build_gstreamer_1_0=yes
1060     test_kf5=yes
1061     test_gtk3_kde5=yes
1062     test_freetype=yes
1063     build_skia=yes
1064     PTHREAD_LIBS="-pthread"
1065     _os=DragonFly
1066     ;;
1068 linux-android*)
1069     build_gstreamer_1_0=no
1070     enable_lotuswordpro=no
1071     enable_mpl_subset=yes
1072     enable_coinmp=yes
1073     enable_lpsolve=no
1074     enable_mariadb_sdbc=no
1075     enable_report_builder=no
1076     enable_odk=no
1077     enable_postgresql_sdbc=no
1078     enable_python=no
1079     test_cups=no
1080     test_dbus=no
1081     test_fontconfig=no
1082     test_freetype=no
1083     test_kf5=no
1084     test_qt5=no
1085     test_gtk3_kde5=no
1086     test_randr=no
1087     test_xrender=no
1088     _os=Android
1090     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1091     BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
1092     ;;
1094 haiku*)
1095     test_cups=no
1096     test_dbus=no
1097     test_randr=no
1098     test_xrender=no
1099     test_freetype=yes
1100     enable_odk=no
1101     enable_gstreamer_1_0=no
1102     enable_vlc=no
1103     enable_coinmp=no
1104     enable_pdfium=no
1105     enable_sdremote=no
1106     enable_postgresql_sdbc=no
1107     enable_firebird_sdbc=no
1108     _os=Haiku
1109     ;;
1112     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1113     ;;
1114 esac
1116 AC_SUBST(HOST_PLATFORM)
1118 if test "$_os" = "Android" ; then
1119     # Verify that the NDK and SDK options are proper
1120     if test -z "$with_android_ndk"; then
1121         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1122     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1123         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1124     fi
1126     if test -z "$ANDROID_SDK_HOME"; then
1127         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1128     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1129         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1130     fi
1132     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1133     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1134         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1135                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1136                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1137         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1138         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1139         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1140     fi
1141     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1142         AC_MSG_WARN([android support repository not found - install with
1143                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1144                      to allow the build to download the specified version of the android support libraries])
1145         add_warning "android support repository not found - install with"
1146         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1147         add_warning "to allow the build to download the specified version of the android support libraries"
1148     fi
1151 if test "$_os" = "AIX"; then
1152     AC_PATH_PROG(GAWK, gawk)
1153     if test -z "$GAWK"; then
1154         AC_MSG_ERROR([gawk not found in \$PATH])
1155     fi
1158 AC_SUBST(SDKDIRNAME)
1160 AC_SUBST(PTHREAD_CFLAGS)
1161 AC_SUBST(PTHREAD_LIBS)
1163 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1164 # By default use the ones specified by our build system,
1165 # but explicit override is possible.
1166 AC_MSG_CHECKING(for explicit AFLAGS)
1167 if test -n "$AFLAGS"; then
1168     AC_MSG_RESULT([$AFLAGS])
1169     x_AFLAGS=
1170 else
1171     AC_MSG_RESULT(no)
1172     x_AFLAGS=[\#]
1174 AC_MSG_CHECKING(for explicit CFLAGS)
1175 if test -n "$CFLAGS"; then
1176     AC_MSG_RESULT([$CFLAGS])
1177     x_CFLAGS=
1178 else
1179     AC_MSG_RESULT(no)
1180     x_CFLAGS=[\#]
1182 AC_MSG_CHECKING(for explicit CXXFLAGS)
1183 if test -n "$CXXFLAGS"; then
1184     AC_MSG_RESULT([$CXXFLAGS])
1185     x_CXXFLAGS=
1186 else
1187     AC_MSG_RESULT(no)
1188     x_CXXFLAGS=[\#]
1190 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1191 if test -n "$OBJCFLAGS"; then
1192     AC_MSG_RESULT([$OBJCFLAGS])
1193     x_OBJCFLAGS=
1194 else
1195     AC_MSG_RESULT(no)
1196     x_OBJCFLAGS=[\#]
1198 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1199 if test -n "$OBJCXXFLAGS"; then
1200     AC_MSG_RESULT([$OBJCXXFLAGS])
1201     x_OBJCXXFLAGS=
1202 else
1203     AC_MSG_RESULT(no)
1204     x_OBJCXXFLAGS=[\#]
1206 AC_MSG_CHECKING(for explicit LDFLAGS)
1207 if test -n "$LDFLAGS"; then
1208     AC_MSG_RESULT([$LDFLAGS])
1209     x_LDFLAGS=
1210 else
1211     AC_MSG_RESULT(no)
1212     x_LDFLAGS=[\#]
1214 AC_SUBST(AFLAGS)
1215 AC_SUBST(CFLAGS)
1216 AC_SUBST(CXXFLAGS)
1217 AC_SUBST(OBJCFLAGS)
1218 AC_SUBST(OBJCXXFLAGS)
1219 AC_SUBST(LDFLAGS)
1220 AC_SUBST(x_AFLAGS)
1221 AC_SUBST(x_CFLAGS)
1222 AC_SUBST(x_CXXFLAGS)
1223 AC_SUBST(x_OBJCFLAGS)
1224 AC_SUBST(x_OBJCXXFLAGS)
1225 AC_SUBST(x_LDFLAGS)
1227 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1228 my_original_CFLAGS=$CFLAGS
1229 my_original_CXXFLAGS=$CXXFLAGS
1230 my_original_CPPFLAGS=$CPPFLAGS
1232 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1233 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1234 dnl AC_PROG_CC internally.
1235 if test "$_os" != "WINNT"; then
1236     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1237     save_CFLAGS=$CFLAGS
1238     AC_PROG_CC
1239     CFLAGS=$save_CFLAGS
1240     if test -z "$CC_BASE"; then
1241         CC_BASE=`first_arg_basename "$CC"`
1242     fi
1245 if test "$_os" != "WINNT"; then
1246     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1247 else
1248     ENDIANNESS=little
1250 AC_SUBST(ENDIANNESS)
1252 if test $_os != "WINNT"; then
1253     save_LIBS="$LIBS"
1254     AC_SEARCH_LIBS([dlsym], [dl],
1255         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1256         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1257     LIBS="$save_LIBS"
1259 AC_SUBST(DLOPEN_LIBS)
1261 AC_ARG_ENABLE(ios-simulator,
1262     AS_HELP_STRING([--enable-ios-simulator],
1263         [build for iOS simulator])
1266 AC_ARG_ENABLE(ios-libreofficelight-app,
1267     AS_HELP_STRING([--enable-ios-libreofficelight-app],
1268         [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
1269          (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
1270          and also that its actual build (in Xcode) requires some obvious modifications to the project.])
1273 ENABLE_IOS_LIBREOFFICELIGHT_APP=
1274 if test "$enable_ios_libreofficelight_app" = yes; then
1275     ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
1277 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
1279 ###############################################################################
1280 # Extensions switches --enable/--disable
1281 ###############################################################################
1282 # By default these should be enabled unless having extra dependencies.
1283 # If there is extra dependency over configure options then the enable should
1284 # be automagic based on whether the requiring feature is enabled or not.
1285 # All this options change anything only with --enable-extension-integration.
1287 # The name of this option and its help string makes it sound as if
1288 # extensions are built anyway, just not integrated in the installer,
1289 # if you use --disable-extension-integration. Is that really the
1290 # case?
1292 libo_FUZZ_ARG_ENABLE(extension-integration,
1293     AS_HELP_STRING([--disable-extension-integration],
1294         [Disable integration of the built extensions in the installer of the
1295          product. Use this switch to disable the integration.])
1298 AC_ARG_ENABLE(avmedia,
1299     AS_HELP_STRING([--disable-avmedia],
1300         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1303 AC_ARG_ENABLE(database-connectivity,
1304     AS_HELP_STRING([--disable-database-connectivity],
1305         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1308 # This doesn't mean not building (or "integrating") extensions
1309 # (although it probably should; i.e. it should imply
1310 # --disable-extension-integration I guess), it means not supporting
1311 # any extension mechanism at all
1312 libo_FUZZ_ARG_ENABLE(extensions,
1313     AS_HELP_STRING([--disable-extensions],
1314         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1317 AC_ARG_ENABLE(scripting,
1318     AS_HELP_STRING([--disable-scripting],
1319         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1322 # This is mainly for Android and iOS, but could potentially be used in some
1323 # special case otherwise, too, so factored out as a separate setting
1325 AC_ARG_ENABLE(dynamic-loading,
1326     AS_HELP_STRING([--disable-dynamic-loading],
1327         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1330 libo_FUZZ_ARG_ENABLE(report-builder,
1331     AS_HELP_STRING([--disable-report-builder],
1332         [Disable the Report Builder.])
1335 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1336     AS_HELP_STRING([--enable-ext-wiki-publisher],
1337         [Enable the Wiki Publisher extension.])
1340 libo_FUZZ_ARG_ENABLE(lpsolve,
1341     AS_HELP_STRING([--disable-lpsolve],
1342         [Disable compilation of the lp solve solver ])
1344 libo_FUZZ_ARG_ENABLE(coinmp,
1345     AS_HELP_STRING([--disable-coinmp],
1346         [Disable compilation of the CoinMP solver ])
1349 libo_FUZZ_ARG_ENABLE(pdfimport,
1350     AS_HELP_STRING([--disable-pdfimport],
1351         [Disable building the PDF import feature.])
1354 libo_FUZZ_ARG_ENABLE(pdfium,
1355     AS_HELP_STRING([--disable-pdfium],
1356         [Disable building PDFium. Results in unsecure PDF signature verification.])
1359 libo_FUZZ_ARG_ENABLE(skia,
1360     AS_HELP_STRING([--disable-skia],
1361         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1364 ###############################################################################
1366 dnl ---------- *** ----------
1368 libo_FUZZ_ARG_ENABLE(mergelibs,
1369     AS_HELP_STRING([--enable-mergelibs],
1370         [Merge several of the smaller libraries into one big, "merged", one.])
1373 libo_FUZZ_ARG_ENABLE(breakpad,
1374     AS_HELP_STRING([--enable-breakpad],
1375         [Enables breakpad for crash reporting.])
1378 libo_FUZZ_ARG_ENABLE(crashdump,
1379     AS_HELP_STRING([--disable-crashdump],
1380         [Disable dump.ini and dump-file, when --enable-breakpad])
1383 AC_ARG_ENABLE(fetch-external,
1384     AS_HELP_STRING([--disable-fetch-external],
1385         [Disables fetching external tarballs from web sources.])
1388 AC_ARG_ENABLE(fuzzers,
1389     AS_HELP_STRING([--enable-fuzzers],
1390         [Enables building libfuzzer targets for fuzz testing.])
1393 libo_FUZZ_ARG_ENABLE(pch,
1394     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1395         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1396          Using 'system' will include only external headers, 'base' will add also headers
1397          from base modules, 'normal' will also add all headers except from the module built,
1398          'full' will use all suitable headers even from a module itself.])
1401 libo_FUZZ_ARG_ENABLE(epm,
1402     AS_HELP_STRING([--enable-epm],
1403         [LibreOffice includes self-packaging code, that requires epm, however epm is
1404          useless for large scale package building.])
1407 libo_FUZZ_ARG_ENABLE(odk,
1408     AS_HELP_STRING([--disable-odk],
1409         [LibreOffice includes an ODK, office development kit which some packagers may
1410          wish to build without.])
1413 AC_ARG_ENABLE(mpl-subset,
1414     AS_HELP_STRING([--enable-mpl-subset],
1415         [Don't compile any pieces which are not MPL or more liberally licensed])
1418 libo_FUZZ_ARG_ENABLE(evolution2,
1419     AS_HELP_STRING([--enable-evolution2],
1420         [Allows the built-in evolution 2 addressbook connectivity build to be
1421          enabled.])
1424 AC_ARG_ENABLE(avahi,
1425     AS_HELP_STRING([--enable-avahi],
1426         [Determines whether to use Avahi to advertise Impress to remote controls.])
1429 libo_FUZZ_ARG_ENABLE(werror,
1430     AS_HELP_STRING([--enable-werror],
1431         [Turn warnings to errors. (Has no effect in modules where the treating
1432          of warnings as errors is disabled explicitly.)]),
1435 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1436     AS_HELP_STRING([--enable-assert-always-abort],
1437         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1440 libo_FUZZ_ARG_ENABLE(dbgutil,
1441     AS_HELP_STRING([--enable-dbgutil],
1442         [Provide debugging support from --enable-debug and include additional debugging
1443          utilities such as object counting or more expensive checks.
1444          This is the recommended option for developers.
1445          Note that this makes the build ABI incompatible, it is not possible to mix object
1446          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1448 libo_FUZZ_ARG_ENABLE(debug,
1449     AS_HELP_STRING([--enable-debug],
1450         [Include debugging information, disable compiler optimization and inlining plus
1451          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1453 libo_FUZZ_ARG_ENABLE(split-debug,
1454     AS_HELP_STRING([--disable-split-debug],
1455         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1456          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1458 libo_FUZZ_ARG_ENABLE(gdb-index,
1459     AS_HELP_STRING([--disable-gdb-index],
1460         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1461          The feature requires the gold or lld linker.]))
1463 libo_FUZZ_ARG_ENABLE(sal-log,
1464     AS_HELP_STRING([--enable-sal-log],
1465         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1467 libo_FUZZ_ARG_ENABLE(symbols,
1468     AS_HELP_STRING([--enable-symbols],
1469         [Generate debug information.
1470          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1471          otherwise. It is possible to explicitly specify gbuild build targets
1472          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1473          everything in the directory; there is no ordering, more specific overrides
1474          more general, and disabling takes precedence).
1475          Example: --enable-symbols="all -sw/ -Library_sc".]))
1477 libo_FUZZ_ARG_ENABLE(optimized,
1478     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1479         [Whether to compile with optimization flags.
1480          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1481          otherwise. Using 'debug' will try to use only optimizations that should
1482          not interfere with debugging.]))
1484 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1485     AS_HELP_STRING([--disable-runtime-optimizations],
1486         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1487          JVM JIT) that are known to interact badly with certain dynamic analysis
1488          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1489          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1490          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1492 AC_ARG_WITH(valgrind,
1493     AS_HELP_STRING([--with-valgrind],
1494         [Make availability of Valgrind headers a hard requirement.]))
1496 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1497     AS_HELP_STRING([--enable-compiler-plugins],
1498         [Enable compiler plugins that will perform additional checks during
1499          building. Enabled automatically by --enable-dbgutil.
1500          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1501 COMPILER_PLUGINS_DEBUG=
1502 if test "$enable_compiler_plugins" = debug; then
1503     enable_compiler_plugins=yes
1504     COMPILER_PLUGINS_DEBUG=TRUE
1507 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1508     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1509         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1510          relevant in the --disable-compiler-plugins case.]))
1512 libo_FUZZ_ARG_ENABLE(ooenv,
1513     AS_HELP_STRING([--disable-ooenv],
1514         [Disable ooenv for the instdir installation.]))
1516 AC_ARG_ENABLE(lto,
1517     AS_HELP_STRING([--enable-lto],
1518         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1519          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1520          linker. For MSVC, this option is broken at the moment. This is experimental work
1521          in progress that shouldn't be used unless you are working on it.)]))
1523 AC_ARG_ENABLE(python,
1524     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1525         [Enables or disables Python support at run-time.
1526          Also specifies what Python to use at build-time.
1527          'fully-internal' even forces the internal version for uses of Python
1528          during the build.
1529          On macOS the only choices are
1530          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1531          ]))
1533 libo_FUZZ_ARG_ENABLE(gtk3,
1534     AS_HELP_STRING([--disable-gtk3],
1535         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1536 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1538 AC_ARG_ENABLE(introspection,
1539     AS_HELP_STRING([--enable-introspection],
1540         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1541          Linux distributions.)]))
1543 AC_ARG_ENABLE(split-app-modules,
1544     AS_HELP_STRING([--enable-split-app-modules],
1545         [Split file lists for app modules, e.g. base, calc.
1546          Has effect only with make distro-pack-install]),
1549 AC_ARG_ENABLE(split-opt-features,
1550     AS_HELP_STRING([--enable-split-opt-features],
1551         [Split file lists for some optional features, e.g. pyuno, testtool.
1552          Has effect only with make distro-pack-install]),
1555 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1556     AS_HELP_STRING([--disable-cairo-canvas],
1557         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1560 libo_FUZZ_ARG_ENABLE(dbus,
1561     AS_HELP_STRING([--disable-dbus],
1562         [Determines whether to enable features that depend on dbus.
1563          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1564 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1566 libo_FUZZ_ARG_ENABLE(sdremote,
1567     AS_HELP_STRING([--disable-sdremote],
1568         [Determines whether to enable Impress remote control (i.e. the server component).]),
1569 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1571 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1572     AS_HELP_STRING([--disable-sdremote-bluetooth],
1573         [Determines whether to build sdremote with bluetooth support.
1574          Requires dbus on Linux.]))
1576 libo_FUZZ_ARG_ENABLE(gio,
1577     AS_HELP_STRING([--disable-gio],
1578         [Determines whether to use the GIO support.]),
1579 ,test "${enable_gio+set}" = set || enable_gio=yes)
1581 AC_ARG_ENABLE(qt5,
1582     AS_HELP_STRING([--enable-qt5],
1583         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1584          available.]),
1587 AC_ARG_ENABLE(kf5,
1588     AS_HELP_STRING([--enable-kf5],
1589         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1590          KF5 are available.]),
1593 AC_ARG_ENABLE(kde5,
1594     AS_HELP_STRING([--enable-kde5],
1595         [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1598 AC_ARG_ENABLE(gtk3_kde5,
1599     AS_HELP_STRING([--enable-gtk3-kde5],
1600         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1601          platforms where Gtk3, Qt5 and Plasma is available.]),
1604 AC_ARG_ENABLE(gui,
1605     AS_HELP_STRING([--disable-gui],
1606         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1607 ,enable_gui=yes)
1609 libo_FUZZ_ARG_ENABLE(randr,
1610     AS_HELP_STRING([--disable-randr],
1611         [Disable RandR support in the vcl project.]),
1612 ,test "${enable_randr+set}" = set || enable_randr=yes)
1614 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1615     AS_HELP_STRING([--disable-gstreamer-1-0],
1616         [Disable building with the gstreamer 1.0 avmedia backend.]),
1617 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1619 libo_FUZZ_ARG_ENABLE(vlc,
1620     AS_HELP_STRING([--enable-vlc],
1621         [Enable building with the (experimental) VLC avmedia backend.]),
1622 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1624 libo_FUZZ_ARG_ENABLE(neon,
1625     AS_HELP_STRING([--disable-neon],
1626         [Disable neon and the compilation of webdav binding.]),
1629 libo_FUZZ_ARG_ENABLE([eot],
1630     [AS_HELP_STRING([--enable-eot],
1631         [Enable support for Embedded OpenType fonts.])],
1632 ,test "${enable_eot+set}" = set || enable_eot=no)
1634 libo_FUZZ_ARG_ENABLE(cve-tests,
1635     AS_HELP_STRING([--disable-cve-tests],
1636         [Prevent CVE tests to be executed]),
1639 libo_FUZZ_ARG_ENABLE(chart-tests,
1640     AS_HELP_STRING([--enable-chart-tests],
1641         [Executes chart XShape tests. In a perfect world these tests would be
1642          stable and everyone could run them, in reality it is best to run them
1643          only on a few machines that are known to work and maintained by people
1644          who can judge if a test failure is a regression or not.]),
1647 AC_ARG_ENABLE(build-unowinreg,
1648     AS_HELP_STRING([--enable-build-unowinreg],
1649         [Do not use the prebuilt unowinreg.dll. Build it instead. The MinGW C++
1650          compiler is needed on Linux.]),
1653 AC_ARG_ENABLE(build-opensymbol,
1654     AS_HELP_STRING([--enable-build-opensymbol],
1655         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1656          fontforge installed.]),
1659 AC_ARG_ENABLE(dependency-tracking,
1660     AS_HELP_STRING([--enable-dependency-tracking],
1661         [Do not reject slow dependency extractors.])[
1662   --disable-dependency-tracking
1663                           Disables generation of dependency information.
1664                           Speed up one-time builds.],
1667 AC_ARG_ENABLE(icecream,
1668     AS_HELP_STRING([--enable-icecream],
1669         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1670          It defaults to /opt/icecream for the location of the icecream gcc/g++
1671          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1674 AC_ARG_ENABLE(ld,
1675     AS_HELP_STRING([--enable-ld=<linker>],
1676         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1677          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1678          If <linker> contains any ':', the part before the first ':' is used as the value of
1679          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1680          needed for Clang 12).]),
1683 libo_FUZZ_ARG_ENABLE(cups,
1684     AS_HELP_STRING([--disable-cups],
1685         [Do not build cups support.])
1688 AC_ARG_ENABLE(ccache,
1689     AS_HELP_STRING([--disable-ccache],
1690         [Do not try to use ccache automatically.
1691          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1692          CC/CXX are not yet set, and --enable-icecream is not given, we
1693          attempt to use ccache. --disable-ccache disables ccache completely.
1694          Additionally ccache's depend mode is enabled if possible,
1695          use --enable-ccache=nodepend to enable ccache without depend mode.
1699 libo_FUZZ_ARG_ENABLE(online-update,
1700     AS_HELP_STRING([--enable-online-update],
1701         [Enable the online update service that will check for new versions of
1702          LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1703          If the value is "mar", the experimental Mozilla-like update will be
1704          enabled instead of the traditional update mechanism.]),
1707 AC_ARG_WITH(update-config,
1708     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1709                    [Path to the update config ini file]))
1711 libo_FUZZ_ARG_ENABLE(extension-update,
1712     AS_HELP_STRING([--disable-extension-update],
1713         [Disable possibility to update installed extensions.]),
1716 libo_FUZZ_ARG_ENABLE(release-build,
1717     AS_HELP_STRING([--enable-release-build],
1718         [Enable release build. Note that the "release build" choice is orthogonal to
1719          whether symbols are present, debug info is generated, or optimization
1720          is done.
1721          See http://wiki.documentfoundation.org/Development/DevBuild]),
1724 AC_ARG_ENABLE(windows-build-signing,
1725     AS_HELP_STRING([--enable-windows-build-signing],
1726         [Enable signing of windows binaries (*.exe, *.dll)]),
1729 AC_ARG_ENABLE(silent-msi,
1730     AS_HELP_STRING([--enable-silent-msi],
1731         [Enable MSI with LIMITUI=1 (silent install).]),
1734 AC_ARG_ENABLE(macosx-code-signing,
1735     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1736         [Sign executables, dylibs, frameworks and the app bundle. If you
1737          don't provide an identity the first suitable certificate
1738          in your keychain is used.]),
1741 AC_ARG_ENABLE(macosx-package-signing,
1742     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1743         [Create a .pkg suitable for uploading to the Mac App Store and sign
1744          it. If you don't provide an identity the first suitable certificate
1745          in your keychain is used.]),
1748 AC_ARG_ENABLE(macosx-sandbox,
1749     AS_HELP_STRING([--enable-macosx-sandbox],
1750         [Make the app bundle run in a sandbox. Requires code signing.
1751          Is required by apps distributed in the Mac App Store, and implies
1752          adherence to App Store rules.]),
1755 AC_ARG_WITH(macosx-bundle-identifier,
1756     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1757         [Define the macOS bundle identifier. Default is the somewhat weird
1758          org.libreoffice.script ("script", huh?).]),
1759 ,with_macosx_bundle_identifier=org.libreoffice.script)
1761 AC_ARG_WITH(product-name,
1762     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1763         [Define the product name. Default is AC_PACKAGE_NAME.]),
1764 ,with_product_name=$PRODUCTNAME)
1766 libo_FUZZ_ARG_ENABLE(community-flavor,
1767     AS_HELP_STRING([--disable-community-flavor],
1768         [Disable the Community branding.]),
1771 AC_ARG_WITH(package-version,
1772     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1773         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1776 libo_FUZZ_ARG_ENABLE(readonly-installset,
1777     AS_HELP_STRING([--enable-readonly-installset],
1778         [Prevents any attempts by LibreOffice to write into its installation. That means
1779          at least that no "system-wide" extensions can be added. Partly experimental work in
1780          progress, probably not fully implemented. Always enabled for macOS.]),
1783 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1784     AS_HELP_STRING([--disable-mariadb-sdbc],
1785         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1788 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1789     AS_HELP_STRING([--disable-postgresql-sdbc],
1790         [Disable the build of the PostgreSQL-SDBC driver.])
1793 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1794     AS_HELP_STRING([--disable-lotuswordpro],
1795         [Disable the build of the Lotus Word Pro filter.]),
1796 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1798 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1799     AS_HELP_STRING([--disable-firebird-sdbc],
1800         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1801 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1803 AC_ARG_ENABLE(bogus-pkg-config,
1804     AS_HELP_STRING([--enable-bogus-pkg-config],
1805         [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.]),
1808 AC_ARG_ENABLE(openssl,
1809     AS_HELP_STRING([--disable-openssl],
1810         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1811          components will either use GNUTLS or NSS. Work in progress,
1812          use only if you are hacking on it.]),
1813 ,enable_openssl=yes)
1815 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1816     AS_HELP_STRING([--enable-cipher-openssl-backend],
1817         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1818          Requires --enable-openssl.]))
1820 AC_ARG_ENABLE(library-bin-tar,
1821     AS_HELP_STRING([--enable-library-bin-tar],
1822         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1823         Some libraries can save their build result in a tarball
1824         stored in TARFILE_LOCATION. That binary tarball is
1825         uniquely identified by the source tarball,
1826         the content of the config_host.mk file and the content
1827         of the top-level directory in core for that library
1828         If this option is enabled, then if such a tarfile exist, it will be untarred
1829         instead of the source tarfile, and the build step will be skipped for that
1830         library.
1831         If a proper tarfile does not exist, then the normal source-based
1832         build is done for that library and a proper binary tarfile is created
1833         for the next time.]),
1836 AC_ARG_ENABLE(dconf,
1837     AS_HELP_STRING([--disable-dconf],
1838         [Disable the dconf configuration backend (enabled by default where
1839          available).]))
1841 libo_FUZZ_ARG_ENABLE(formula-logger,
1842     AS_HELP_STRING(
1843         [--enable-formula-logger],
1844         [Enable formula logger for logging formula calculation flow in Calc.]
1845     )
1848 AC_ARG_ENABLE(ldap,
1849     AS_HELP_STRING([--disable-ldap],
1850         [Disable LDAP support.]),
1851 ,enable_ldap=yes)
1853 AC_ARG_ENABLE(opencl,
1854     AS_HELP_STRING([--disable-opencl],
1855         [Disable OpenCL support.]),
1856 ,enable_opencl=yes)
1858 dnl ===================================================================
1859 dnl Optional Packages (--with/without-)
1860 dnl ===================================================================
1862 AC_ARG_WITH(gcc-home,
1863     AS_HELP_STRING([--with-gcc-home],
1864         [Specify the location of gcc/g++ manually. This can be used in conjunction
1865          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1866          non-default path.]),
1869 AC_ARG_WITH(gnu-patch,
1870     AS_HELP_STRING([--with-gnu-patch],
1871         [Specify location of GNU patch on Solaris or FreeBSD.]),
1874 AC_ARG_WITH(build-platform-configure-options,
1875     AS_HELP_STRING([--with-build-platform-configure-options],
1876         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1879 AC_ARG_WITH(gnu-cp,
1880     AS_HELP_STRING([--with-gnu-cp],
1881         [Specify location of GNU cp on Solaris or FreeBSD.]),
1884 AC_ARG_WITH(external-tar,
1885     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1886         [Specify an absolute path of where to find (and store) tarfiles.]),
1887     TARFILE_LOCATION=$withval ,
1890 AC_ARG_WITH(referenced-git,
1891     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1892         [Specify another checkout directory to reference. This makes use of
1893                  git submodule update --reference, and saves a lot of diskspace
1894                  when having multiple trees side-by-side.]),
1895     GIT_REFERENCE_SRC=$withval ,
1898 AC_ARG_WITH(linked-git,
1899     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1900         [Specify a directory where the repositories of submodules are located.
1901          This uses a method similar to git-new-workdir to get submodules.]),
1902     GIT_LINK_SRC=$withval ,
1905 AC_ARG_WITH(galleries,
1906     AS_HELP_STRING([--with-galleries],
1907         [Specify how galleries should be built. It is possible either to
1908          build these internally from source ("build"),
1909          or to disable them ("no")]),
1912 AC_ARG_WITH(theme,
1913     AS_HELP_STRING([--with-theme="theme1 theme2..."],
1914         [Choose which themes to include. By default those themes with an '*' are included.
1915          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1916          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1919 libo_FUZZ_ARG_WITH(helppack-integration,
1920     AS_HELP_STRING([--without-helppack-integration],
1921         [It will not integrate the helppacks to the installer
1922          of the product. Please use this switch to use the online help
1923          or separate help packages.]),
1926 libo_FUZZ_ARG_WITH(fonts,
1927     AS_HELP_STRING([--without-fonts],
1928         [LibreOffice includes some third-party fonts to provide a reliable basis for
1929          help content, templates, samples, etc. When these fonts are already
1930          known to be available on the system then you should use this option.]),
1933 AC_ARG_WITH(epm,
1934     AS_HELP_STRING([--with-epm],
1935         [Decides which epm to use. Default is to use the one from the system if
1936          one is built. When either this is not there or you say =internal epm
1937          will be built.]),
1940 AC_ARG_WITH(package-format,
1941     AS_HELP_STRING([--with-package-format],
1942         [Specify package format(s) for LibreOffice installation sets. The
1943          implicit --without-package-format leads to no installation sets being
1944          generated. Possible values: aix, archive, bsd, deb, dmg,
1945          installed, msi, pkg, and rpm.
1946          Example: --with-package-format='deb rpm']),
1949 AC_ARG_WITH(tls,
1950     AS_HELP_STRING([--with-tls],
1951         [Decides which TLS/SSL and cryptographic implementations to use for
1952          LibreOffice's code. Notice that this doesn't apply for depending
1953          libraries like "neon", for example. Default is to use NSS
1954          although OpenSSL is also possible. Notice that selecting NSS restricts
1955          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1956          restrict by now the usage of NSS in LO's code. Possible values:
1957          openssl, nss. Example: --with-tls="nss"]),
1960 AC_ARG_WITH(system-libs,
1961     AS_HELP_STRING([--with-system-libs],
1962         [Use libraries already on system -- enables all --with-system-* flags.]),
1965 AC_ARG_WITH(system-bzip2,
1966     AS_HELP_STRING([--with-system-bzip2],
1967         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1968     [with_system_bzip2="$with_system_libs"])
1970 AC_ARG_WITH(system-headers,
1971     AS_HELP_STRING([--with-system-headers],
1972         [Use headers already on system -- enables all --with-system-* flags for
1973          external packages whose headers are the only entities used i.e.
1974          boost/odbc/sane-header(s).]),,
1975     [with_system_headers="$with_system_libs"])
1977 AC_ARG_WITH(system-jars,
1978     AS_HELP_STRING([--without-system-jars],
1979         [When building with --with-system-libs, also the needed jars are expected
1980          on the system. Use this to disable that]),,
1981     [with_system_jars="$with_system_libs"])
1983 AC_ARG_WITH(system-cairo,
1984     AS_HELP_STRING([--with-system-cairo],
1985         [Use cairo libraries already on system.  Happens automatically for
1986          (implicit) --enable-gtk3.]))
1988 AC_ARG_WITH(system-epoxy,
1989     AS_HELP_STRING([--with-system-epoxy],
1990         [Use epoxy libraries already on system.  Happens automatically for
1991          (implicit) --enable-gtk3.]),,
1992        [with_system_epoxy="$with_system_libs"])
1994 AC_ARG_WITH(myspell-dicts,
1995     AS_HELP_STRING([--with-myspell-dicts],
1996         [Adds myspell dictionaries to the LibreOffice installation set]),
1999 AC_ARG_WITH(system-dicts,
2000     AS_HELP_STRING([--without-system-dicts],
2001         [Do not use dictionaries from system paths.]),
2004 AC_ARG_WITH(external-dict-dir,
2005     AS_HELP_STRING([--with-external-dict-dir],
2006         [Specify external dictionary dir.]),
2009 AC_ARG_WITH(external-hyph-dir,
2010     AS_HELP_STRING([--with-external-hyph-dir],
2011         [Specify external hyphenation pattern dir.]),
2014 AC_ARG_WITH(external-thes-dir,
2015     AS_HELP_STRING([--with-external-thes-dir],
2016         [Specify external thesaurus dir.]),
2019 AC_ARG_WITH(system-zlib,
2020     AS_HELP_STRING([--with-system-zlib],
2021         [Use zlib already on system.]),,
2022     [with_system_zlib=auto])
2024 AC_ARG_WITH(system-jpeg,
2025     AS_HELP_STRING([--with-system-jpeg],
2026         [Use jpeg already on system.]),,
2027     [with_system_jpeg="$with_system_libs"])
2029 AC_ARG_WITH(system-clucene,
2030     AS_HELP_STRING([--with-system-clucene],
2031         [Use clucene already on system.]),,
2032     [with_system_clucene="$with_system_libs"])
2034 AC_ARG_WITH(system-expat,
2035     AS_HELP_STRING([--with-system-expat],
2036         [Use expat already on system.]),,
2037     [with_system_expat="$with_system_libs"])
2039 AC_ARG_WITH(system-libxml,
2040     AS_HELP_STRING([--with-system-libxml],
2041         [Use libxml/libxslt already on system.]),,
2042     [with_system_libxml=auto])
2044 AC_ARG_WITH(system-icu,
2045     AS_HELP_STRING([--with-system-icu],
2046         [Use icu already on system.]),,
2047     [with_system_icu="$with_system_libs"])
2049 AC_ARG_WITH(system-ucpp,
2050     AS_HELP_STRING([--with-system-ucpp],
2051         [Use ucpp already on system.]),,
2052     [])
2054 AC_ARG_WITH(system-openldap,
2055     AS_HELP_STRING([--with-system-openldap],
2056         [Use the OpenLDAP LDAP SDK already on system.]),,
2057     [with_system_openldap="$with_system_libs"])
2059 libo_FUZZ_ARG_ENABLE(poppler,
2060     AS_HELP_STRING([--disable-poppler],
2061         [Disable building Poppler.])
2064 AC_ARG_WITH(system-poppler,
2065     AS_HELP_STRING([--with-system-poppler],
2066         [Use system poppler (only needed for PDF import).]),,
2067     [with_system_poppler="$with_system_libs"])
2069 libo_FUZZ_ARG_ENABLE(gpgmepp,
2070     AS_HELP_STRING([--disable-gpgmepp],
2071         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2074 AC_ARG_WITH(system-gpgmepp,
2075     AS_HELP_STRING([--with-system-gpgmepp],
2076         [Use gpgmepp already on system]),,
2077     [with_system_gpgmepp="$with_system_libs"])
2079 AC_ARG_WITH(system-apache-commons,
2080     AS_HELP_STRING([--with-system-apache-commons],
2081         [Use Apache commons libraries already on system.]),,
2082     [with_system_apache_commons="$with_system_jars"])
2084 AC_ARG_WITH(system-mariadb,
2085     AS_HELP_STRING([--with-system-mariadb],
2086         [Use MariaDB/MySQL libraries already on system.]),,
2087     [with_system_mariadb="$with_system_libs"])
2089 AC_ARG_ENABLE(bundle-mariadb,
2090     AS_HELP_STRING([--enable-bundle-mariadb],
2091         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2094 AC_ARG_WITH(system-postgresql,
2095     AS_HELP_STRING([--with-system-postgresql],
2096         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2097          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2098     [with_system_postgresql="$with_system_libs"])
2100 AC_ARG_WITH(libpq-path,
2101     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2102         [Use this PostgreSQL C interface (libpq) installation for building
2103          the PostgreSQL-SDBC extension.]),
2106 AC_ARG_WITH(system-firebird,
2107     AS_HELP_STRING([--with-system-firebird],
2108         [Use Firebird libraries already on system, for building the Firebird-SDBC
2109          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2110     [with_system_firebird="$with_system_libs"])
2112 AC_ARG_WITH(system-libtommath,
2113             AS_HELP_STRING([--with-system-libtommath],
2114                            [Use libtommath already on system]),,
2115             [with_system_libtommath="$with_system_libs"])
2117 AC_ARG_WITH(system-hsqldb,
2118     AS_HELP_STRING([--with-system-hsqldb],
2119         [Use hsqldb already on system.]))
2121 AC_ARG_WITH(hsqldb-jar,
2122     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2123         [Specify path to jarfile manually.]),
2124     HSQLDB_JAR=$withval)
2126 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2127     AS_HELP_STRING([--disable-scripting-beanshell],
2128         [Disable support for scripts in BeanShell.]),
2132 AC_ARG_WITH(system-beanshell,
2133     AS_HELP_STRING([--with-system-beanshell],
2134         [Use beanshell already on system.]),,
2135     [with_system_beanshell="$with_system_jars"])
2137 AC_ARG_WITH(beanshell-jar,
2138     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2139         [Specify path to jarfile manually.]),
2140     BSH_JAR=$withval)
2142 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2143     AS_HELP_STRING([--disable-scripting-javascript],
2144         [Disable support for scripts in JavaScript.]),
2148 AC_ARG_WITH(system-rhino,
2149     AS_HELP_STRING([--with-system-rhino],
2150         [Use rhino already on system.]),,)
2151 #    [with_system_rhino="$with_system_jars"])
2152 # Above is not used as we have different debug interface
2153 # patched into internal rhino. This code needs to be fixed
2154 # before we can enable it by default.
2156 AC_ARG_WITH(rhino-jar,
2157     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2158         [Specify path to jarfile manually.]),
2159     RHINO_JAR=$withval)
2161 AC_ARG_WITH(commons-logging-jar,
2162     AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2163         [Specify path to jarfile manually.]),
2164     COMMONS_LOGGING_JAR=$withval)
2166 AC_ARG_WITH(system-jfreereport,
2167     AS_HELP_STRING([--with-system-jfreereport],
2168         [Use JFreeReport already on system.]),,
2169     [with_system_jfreereport="$with_system_jars"])
2171 AC_ARG_WITH(sac-jar,
2172     AS_HELP_STRING([--with-sac-jar=JARFILE],
2173         [Specify path to jarfile manually.]),
2174     SAC_JAR=$withval)
2176 AC_ARG_WITH(libxml-jar,
2177     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2178         [Specify path to jarfile manually.]),
2179     LIBXML_JAR=$withval)
2181 AC_ARG_WITH(flute-jar,
2182     AS_HELP_STRING([--with-flute-jar=JARFILE],
2183         [Specify path to jarfile manually.]),
2184     FLUTE_JAR=$withval)
2186 AC_ARG_WITH(jfreereport-jar,
2187     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2188         [Specify path to jarfile manually.]),
2189     JFREEREPORT_JAR=$withval)
2191 AC_ARG_WITH(liblayout-jar,
2192     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2193         [Specify path to jarfile manually.]),
2194     LIBLAYOUT_JAR=$withval)
2196 AC_ARG_WITH(libloader-jar,
2197     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2198         [Specify path to jarfile manually.]),
2199     LIBLOADER_JAR=$withval)
2201 AC_ARG_WITH(libformula-jar,
2202     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2203         [Specify path to jarfile manually.]),
2204     LIBFORMULA_JAR=$withval)
2206 AC_ARG_WITH(librepository-jar,
2207     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2208         [Specify path to jarfile manually.]),
2209     LIBREPOSITORY_JAR=$withval)
2211 AC_ARG_WITH(libfonts-jar,
2212     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2213         [Specify path to jarfile manually.]),
2214     LIBFONTS_JAR=$withval)
2216 AC_ARG_WITH(libserializer-jar,
2217     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2218         [Specify path to jarfile manually.]),
2219     LIBSERIALIZER_JAR=$withval)
2221 AC_ARG_WITH(libbase-jar,
2222     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2223         [Specify path to jarfile manually.]),
2224     LIBBASE_JAR=$withval)
2226 AC_ARG_WITH(system-odbc,
2227     AS_HELP_STRING([--with-system-odbc],
2228         [Use the odbc headers already on system.]),,
2229     [with_system_odbc="auto"])
2231 AC_ARG_WITH(system-sane,
2232     AS_HELP_STRING([--with-system-sane],
2233         [Use sane.h already on system.]),,
2234     [with_system_sane="$with_system_headers"])
2236 AC_ARG_WITH(system-bluez,
2237     AS_HELP_STRING([--with-system-bluez],
2238         [Use bluetooth.h already on system.]),,
2239     [with_system_bluez="$with_system_headers"])
2241 AC_ARG_WITH(system-curl,
2242     AS_HELP_STRING([--with-system-curl],
2243         [Use curl already on system.]),,
2244     [with_system_curl=auto])
2246 AC_ARG_WITH(system-boost,
2247     AS_HELP_STRING([--with-system-boost],
2248         [Use boost already on system.]),,
2249     [with_system_boost="$with_system_headers"])
2251 AC_ARG_WITH(system-glm,
2252     AS_HELP_STRING([--with-system-glm],
2253         [Use glm already on system.]),,
2254     [with_system_glm="$with_system_headers"])
2256 AC_ARG_WITH(system-hunspell,
2257     AS_HELP_STRING([--with-system-hunspell],
2258         [Use libhunspell already on system.]),,
2259     [with_system_hunspell="$with_system_libs"])
2261 libo_FUZZ_ARG_ENABLE(qrcodegen,
2262     AS_HELP_STRING([--disable-qrcodegen],
2263         [Disable use of qrcodegen external library.]))
2265 AC_ARG_WITH(system-qrcodegen,
2266     AS_HELP_STRING([--with-system-qrcodegen],
2267         [Use libqrcodegen already on system.]),,
2268     [with_system_qrcodegen="$with_system_libs"])
2270 AC_ARG_WITH(system-box2d,
2271     AS_HELP_STRING([--with-system-box2d],
2272         [Use box2d already on system.]),,
2273     [with_system_box2d="$with_system_libs"])
2275 AC_ARG_WITH(system-mythes,
2276     AS_HELP_STRING([--with-system-mythes],
2277         [Use mythes already on system.]),,
2278     [with_system_mythes="$with_system_libs"])
2280 AC_ARG_WITH(system-altlinuxhyph,
2281     AS_HELP_STRING([--with-system-altlinuxhyph],
2282         [Use ALTLinuxhyph already on system.]),,
2283     [with_system_altlinuxhyph="$with_system_libs"])
2285 AC_ARG_WITH(system-lpsolve,
2286     AS_HELP_STRING([--with-system-lpsolve],
2287         [Use lpsolve already on system.]),,
2288     [with_system_lpsolve="$with_system_libs"])
2290 AC_ARG_WITH(system-coinmp,
2291     AS_HELP_STRING([--with-system-coinmp],
2292         [Use CoinMP already on system.]),,
2293     [with_system_coinmp="$with_system_libs"])
2295 AC_ARG_WITH(system-liblangtag,
2296     AS_HELP_STRING([--with-system-liblangtag],
2297         [Use liblangtag library already on system.]),,
2298     [with_system_liblangtag="$with_system_libs"])
2300 AC_ARG_WITH(webdav,
2301     AS_HELP_STRING([--with-webdav],
2302         [Specify which library to use for webdav implementation.
2303          Possible values: "neon", "serf", "no". The default value is "neon".
2304          Example: --with-webdav="serf"]),
2305     WITH_WEBDAV=$withval,
2306     WITH_WEBDAV="neon")
2308 AC_ARG_WITH(linker-hash-style,
2309     AS_HELP_STRING([--with-linker-hash-style],
2310         [Use linker with --hash-style=<style> when linking shared objects.
2311          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2312          if supported on the build system, and "sysv" otherwise.]))
2314 AC_ARG_WITH(jdk-home,
2315     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2316         [If you have installed JDK 9 or later on your system please supply the
2317          path here. Note that this is not the location of the java command but the
2318          location of the entire distribution. In case of cross-compiling, this
2319          is the JDK of the host os. Use --with-build-platform-configure-options
2320          to point to a different build platform JDK.]),
2323 AC_ARG_WITH(help,
2324     AS_HELP_STRING([--with-help],
2325         [Enable the build of help. There is a special parameter "common" that
2326          can be used to bundle only the common part, .e.g help-specific icons.
2327          This is useful when you build the helpcontent separately.])
2328     [
2329                           Usage:     --with-help    build the old local help
2330                                  --without-help     no local help (default)
2331                                  --with-help=html   build the new HTML local help
2332                                  --with-help=online build the new HTML online help
2333     ],
2336 AC_ARG_WITH(omindex,
2337    AS_HELP_STRING([--with-omindex],
2338         [Enable the support of xapian-omega index for online help.])
2339    [
2340                          Usage: --with-omindex=server prepare the pages for omindex
2341                                 but let xapian-omega be built in server.
2342                                 --with-omindex=noxap do not prepare online pages
2343                                 for xapian-omega
2344   ],
2347 libo_FUZZ_ARG_WITH(java,
2348     AS_HELP_STRING([--with-java=<java command>],
2349         [Specify the name of the Java interpreter command. Typically "java"
2350          which is the default.
2352          To build without support for Java components, applets, accessibility
2353          or the XML filters written in Java, use --without-java or --with-java=no.]),
2354     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2355     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2358 AC_ARG_WITH(jvm-path,
2359     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2360         [Use a specific JVM search path at runtime.
2361          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2364 AC_ARG_WITH(ant-home,
2365     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2366         [If you have installed Apache Ant on your system, please supply the path here.
2367          Note that this is not the location of the Ant binary but the location
2368          of the entire distribution.]),
2371 AC_ARG_WITH(symbol-config,
2372     AS_HELP_STRING([--with-symbol-config],
2373         [Configuration for the crashreport symbol upload]),
2374         [],
2375         [with_symbol_config=no])
2377 AC_ARG_WITH(export-validation,
2378     AS_HELP_STRING([--without-export-validation],
2379         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2380 ,with_export_validation=auto)
2382 AC_ARG_WITH(bffvalidator,
2383     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2384         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2385          Requires installed Microsoft Office Binary File Format Validator.
2386          Note: export-validation (--with-export-validation) is required to be turned on.
2387          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2388 ,with_bffvalidator=no)
2390 libo_FUZZ_ARG_WITH(junit,
2391     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2392         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2393          --without-junit disables those tests. Not relevant in the --without-java case.]),
2394 ,with_junit=yes)
2396 AC_ARG_WITH(hamcrest,
2397     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2398         [Specifies the hamcrest jar file to use for JUnit-based tests.
2399          --without-junit disables those tests. Not relevant in the --without-java case.]),
2400 ,with_hamcrest=yes)
2402 AC_ARG_WITH(perl-home,
2403     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2404         [If you have installed Perl 5 Distribution, on your system, please
2405          supply the path here. Note that this is not the location of the Perl
2406          binary but the location of the entire distribution.]),
2409 libo_FUZZ_ARG_WITH(doxygen,
2410     AS_HELP_STRING(
2411         [--with-doxygen=<absolute path to doxygen executable>],
2412         [Specifies the doxygen executable to use when generating ODK C/C++
2413          documentation. --without-doxygen disables generation of ODK C/C++
2414          documentation. Not relevant in the --disable-odk case.]),
2415 ,with_doxygen=yes)
2417 AC_ARG_WITH(visual-studio,
2418     AS_HELP_STRING([--with-visual-studio=<2019>],
2419         [Specify which Visual Studio version to use in case several are
2420          installed. Currently only 2019 (default) is supported.]),
2423 AC_ARG_WITH(windows-sdk,
2424     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2425         [Specify which Windows SDK, or "Windows Kit", version to use
2426          in case the one that came with the selected Visual Studio
2427          is not what you want for some reason. Note that not all compiler/SDK
2428          combinations are supported. The intent is that this option should not
2429          be needed.]),
2432 AC_ARG_WITH(lang,
2433     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2434         [Use this option to build LibreOffice with additional UI language support.
2435          English (US) is always included by default.
2436          Separate multiple languages with space.
2437          For all languages, use --with-lang=ALL.]),
2440 AC_ARG_WITH(locales,
2441     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2442         [Use this option to limit the locale information built in.
2443          Separate multiple locales with space.
2444          Very experimental and might well break stuff.
2445          Just a desperate measure to shrink code and data size.
2446          By default all the locales available is included.
2447          This option is completely unrelated to --with-lang.])
2448     [
2449                           Affects also our character encoding conversion
2450                           tables for encodings mainly targeted for a
2451                           particular locale, like EUC-CN and EUC-TW for
2452                           zh, ISO-2022-JP for ja.
2454                           Affects also our add-on break iterator data for
2455                           some languages.
2457                           For the default, all locales, don't use this switch at all.
2458                           Specifying just the language part of a locale means all matching
2459                           locales will be included.
2460     ],
2463 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2464 libo_FUZZ_ARG_WITH(krb5,
2465     AS_HELP_STRING([--with-krb5],
2466         [Enable MIT Kerberos 5 support in modules that support it.
2467          By default automatically enabled on platforms
2468          where a good system Kerberos 5 is available.]),
2471 libo_FUZZ_ARG_WITH(gssapi,
2472     AS_HELP_STRING([--with-gssapi],
2473         [Enable GSSAPI support in modules that support it.
2474          By default automatically enabled on platforms
2475          where a good system GSSAPI is available.]),
2478 AC_ARG_WITH(iwyu,
2479     AS_HELP_STRING([--with-iwyu],
2480         [Use given IWYU binary path to check unneeded includes instead of building.
2481          Use only if you are hacking on it.]),
2484 libo_FUZZ_ARG_WITH(lxml,
2485     AS_HELP_STRING([--without-lxml],
2486         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2487          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2488          report widget classes and ids.]),
2491 libo_FUZZ_ARG_WITH(latest-c++,
2492     AS_HELP_STRING([--with-latest-c++],
2493         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2494          published standard.]),,
2495         [with_latest_c__=no])
2497 dnl ===================================================================
2498 dnl Branding
2499 dnl ===================================================================
2501 AC_ARG_WITH(branding,
2502     AS_HELP_STRING([--with-branding=/path/to/images],
2503         [Use given path to retrieve branding images set.])
2504     [
2505                           Search for intro.png about.svg and logo.svg.
2506                           If any is missing, default ones will be used instead.
2508                           Search also progress.conf for progress
2509                           settings on intro screen :
2511                           PROGRESSBARCOLOR="255,255,255" Set color of
2512                           progress bar. Comma separated RGB decimal values.
2513                           PROGRESSSIZE="407,6" Set size of progress bar.
2514                           Comma separated decimal values (width, height).
2515                           PROGRESSPOSITION="61,317" Set position of progress
2516                           bar from left,top. Comma separated decimal values.
2517                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2518                           bar frame. Comma separated RGB decimal values.
2519                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2520                           bar text. Comma separated RGB decimal values.
2521                           PROGRESSTEXTBASELINE="287" Set vertical position of
2522                           progress bar text from top. Decimal value.
2524                           Default values will be used if not found.
2525     ],
2529 AC_ARG_WITH(extra-buildid,
2530     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2531         [Show addition build identification in about dialog.]),
2535 AC_ARG_WITH(vendor,
2536     AS_HELP_STRING([--with-vendor="John the Builder"],
2537         [Set vendor of the build.]),
2540 AC_ARG_WITH(android-package-name,
2541     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2542         [Set Android package name of the build.]),
2545 AC_ARG_WITH(compat-oowrappers,
2546     AS_HELP_STRING([--with-compat-oowrappers],
2547         [Install oo* wrappers in parallel with
2548          lo* ones to keep backward compatibility.
2549          Has effect only with make distro-pack-install]),
2552 AC_ARG_WITH(os-version,
2553     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2554         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2557 AC_ARG_WITH(mingw-cross-compiler,
2558     AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2559         [Specify the MinGW cross-compiler to use.
2560          When building on the ODK on Unix and building unowinreg.dll,
2561          specify the MinGW C++ cross-compiler.]),
2564 AC_ARG_WITH(idlc-cpp,
2565     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2566         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2569 AC_ARG_WITH(parallelism,
2570     AS_HELP_STRING([--with-parallelism],
2571         [Number of jobs to run simultaneously during build. Parallel builds can
2572         save a lot of time on multi-cpu machines. Defaults to the number of
2573         CPUs on the machine, unless you configure --enable-icecream - then to
2574         40.]),
2577 AC_ARG_WITH(all-tarballs,
2578     AS_HELP_STRING([--with-all-tarballs],
2579         [Download all external tarballs unconditionally]))
2581 AC_ARG_WITH(gdrive-client-id,
2582     AS_HELP_STRING([--with-gdrive-client-id],
2583         [Provides the client id of the application for OAuth2 authentication
2584         on Google Drive. If either this or --with-gdrive-client-secret is
2585         empty, the feature will be disabled]),
2588 AC_ARG_WITH(gdrive-client-secret,
2589     AS_HELP_STRING([--with-gdrive-client-secret],
2590         [Provides the client secret of the application for OAuth2
2591         authentication on Google Drive. If either this or
2592         --with-gdrive-client-id is empty, the feature will be disabled]),
2595 AC_ARG_WITH(alfresco-cloud-client-id,
2596     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2597         [Provides the client id of the application for OAuth2 authentication
2598         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2599         empty, the feature will be disabled]),
2602 AC_ARG_WITH(alfresco-cloud-client-secret,
2603     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2604         [Provides the client secret of the application for OAuth2
2605         authentication on Alfresco Cloud. If either this or
2606         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2609 AC_ARG_WITH(onedrive-client-id,
2610     AS_HELP_STRING([--with-onedrive-client-id],
2611         [Provides the client id of the application for OAuth2 authentication
2612         on OneDrive. If either this or --with-onedrive-client-secret is
2613         empty, the feature will be disabled]),
2616 AC_ARG_WITH(onedrive-client-secret,
2617     AS_HELP_STRING([--with-onedrive-client-secret],
2618         [Provides the client secret of the application for OAuth2
2619         authentication on OneDrive. If either this or
2620         --with-onedrive-client-id is empty, the feature will be disabled]),
2622 dnl ===================================================================
2623 dnl Do we want to use pre-build binary tarball for recompile
2624 dnl ===================================================================
2626 if test "$enable_library_bin_tar" = "yes" ; then
2627     USE_LIBRARY_BIN_TAR=TRUE
2628 else
2629     USE_LIBRARY_BIN_TAR=
2631 AC_SUBST(USE_LIBRARY_BIN_TAR)
2633 dnl ===================================================================
2634 dnl Test whether build target is Release Build
2635 dnl ===================================================================
2636 AC_MSG_CHECKING([whether build target is Release Build])
2637 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2638     AC_MSG_RESULT([no])
2639     ENABLE_RELEASE_BUILD=
2640     GET_TASK_ALLOW_ENTITLEMENT='
2641         <!-- We want to be able to debug a hardened process when not building for release -->
2642         <key>com.apple.security.get-task-allow</key>
2643         <true/>'
2644 else
2645     AC_MSG_RESULT([yes])
2646     ENABLE_RELEASE_BUILD=TRUE
2647     GET_TASK_ALLOW_ENTITLEMENT=''
2649 AC_SUBST(ENABLE_RELEASE_BUILD)
2650 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2652 AC_MSG_CHECKING([whether to build a Community flavor])
2653 if test -z "$enable_community_flavor" -o "$enable_community_flavor" == "yes"; then
2654     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2655     AC_MSG_RESULT([yes])
2656 else
2657     AC_MSG_RESULT([no])
2660 dnl ===================================================================
2661 dnl Test whether to sign Windows Build
2662 dnl ===================================================================
2663 AC_MSG_CHECKING([whether to sign windows build])
2664 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2665     AC_MSG_RESULT([yes])
2666     WINDOWS_BUILD_SIGNING="TRUE"
2667 else
2668     AC_MSG_RESULT([no])
2669     WINDOWS_BUILD_SIGNING="FALSE"
2671 AC_SUBST(WINDOWS_BUILD_SIGNING)
2673 dnl ===================================================================
2674 dnl MacOSX build and runtime environment options
2675 dnl ===================================================================
2677 AC_ARG_WITH(macosx-sdk,
2678     AS_HELP_STRING([--with-macosx-sdk=<version>],
2679         [Prefer a specific SDK for building.])
2680     [
2681                           If the requested SDK is not available, a search for the oldest one will be done.
2682                           With current Xcode versions, only the latest SDK is included, so this option is
2683                           not terribly useful. It works fine to build with a new SDK and run the result
2684                           on an older OS.
2686                           e. g.: --with-macosx-sdk=10.10
2688                           there are 3 options to control the MacOSX build:
2689                           --with-macosx-sdk (referred as 'sdk' below)
2690                           --with-macosx-version-min-required (referred as 'min' below)
2691                           --with-macosx-version-max-allowed (referred as 'max' below)
2693                           the connection between these value and the default they take is as follow:
2694                           ( ? means not specified on the command line, s means the SDK version found,
2695                           constraint: 8 <= x <= y <= z)
2697                           ==========================================
2698                            command line      || config result
2699                           ==========================================
2700                           min  | max  | sdk  || min   | max  | sdk  |
2701                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2702                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2703                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2704                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2705                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2706                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2707                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2708                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2711                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2712                           for a detailed technical explanation of these variables
2714                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2715     ],
2718 AC_ARG_WITH(macosx-version-min-required,
2719     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2720         [set the minimum OS version needed to run the built LibreOffice])
2721     [
2722                           e. g.: --with-macosx-version-min-required=10.10
2723                           see --with-macosx-sdk for more info
2724     ],
2727 AC_ARG_WITH(macosx-version-max-allowed,
2728     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2729         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2730     [
2731                           e. g.: --with-macosx-version-max-allowed=10.10
2732                           see --with-macosx-sdk for more info
2733     ],
2737 dnl ===================================================================
2738 dnl options for stuff used during cross-compilation build
2739 dnl Not quite superseded by --with-build-platform-configure-options.
2740 dnl TODO: check, if the "force" option is still needed anywhere.
2741 dnl ===================================================================
2743 AC_ARG_WITH(system-icu-for-build,
2744     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2745         [Use icu already on system for build tools (cross-compilation only).]))
2748 dnl ===================================================================
2749 dnl Check for incompatible options set by fuzzing, and reset those
2750 dnl automatically to working combinations
2751 dnl ===================================================================
2753 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2754         "$enable_dbus" != "$enable_avahi"; then
2755     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2756     enable_avahi=$enable_dbus
2759 add_lopath_after ()
2761     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2762         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2763     fi
2766 add_lopath_before ()
2768     local IFS=${P_SEP}
2769     local path_cleanup
2770     local dir
2771     for dir in $LO_PATH ; do
2772         if test "$dir" != "$1" ; then
2773             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2774         fi
2775     done
2776     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2779 dnl ===================================================================
2780 dnl check for required programs (grep, awk, sed, bash)
2781 dnl ===================================================================
2783 pathmunge ()
2785     local new_path
2786     if test -n "$1"; then
2787         if test "$build_os" = "cygwin"; then
2788             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2789                 PathFormat "$1"
2790                 new_path=`cygpath -sm "$formatted_path"`
2791             else
2792                 PathFormat "$1"
2793                 new_path=`cygpath -u "$formatted_path"`
2794             fi
2795         else
2796             new_path="$1"
2797         fi
2798         if test "$2" = "after"; then
2799             add_lopath_after "$new_path"
2800         else
2801             add_lopath_before "$new_path"
2802         fi
2803     fi
2806 AC_PROG_AWK
2807 AC_PATH_PROG( AWK, $AWK)
2808 if test -z "$AWK"; then
2809     AC_MSG_ERROR([install awk to run this script])
2812 AC_PATH_PROG(BASH, bash)
2813 if test -z "$BASH"; then
2814     AC_MSG_ERROR([bash not found in \$PATH])
2816 AC_SUBST(BASH)
2818 AC_MSG_CHECKING([for GNU or BSD tar])
2819 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2820     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2821     if test $? -eq 0;  then
2822         GNUTAR=$a
2823         break
2824     fi
2825 done
2826 AC_MSG_RESULT($GNUTAR)
2827 if test -z "$GNUTAR"; then
2828     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2830 AC_SUBST(GNUTAR)
2832 AC_MSG_CHECKING([for tar's option to strip components])
2833 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2834 if test $? -eq 0; then
2835     STRIP_COMPONENTS="--strip-components"
2836 else
2837     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2838     if test $? -eq 0; then
2839         STRIP_COMPONENTS="--strip-path"
2840     else
2841         STRIP_COMPONENTS="unsupported"
2842     fi
2844 AC_MSG_RESULT($STRIP_COMPONENTS)
2845 if test x$STRIP_COMPONENTS = xunsupported; then
2846     AC_MSG_ERROR([you need a tar that is able to strip components.])
2848 AC_SUBST(STRIP_COMPONENTS)
2850 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2851 dnl desktop OSes from "mobile" ones.
2853 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2854 dnl In other words, that when building for an OS that is not a
2855 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2857 dnl Note the direction of the implication; there is no assumption that
2858 dnl cross-compiling would imply a non-desktop OS.
2860 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2861     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2862     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2863     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2866 # Whether to build "avmedia" functionality or not.
2868 if test -z "$enable_avmedia"; then
2869     enable_avmedia=yes
2872 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2873 if test "$enable_avmedia" = yes; then
2874     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2875 else
2876     USE_AVMEDIA_DUMMY='TRUE'
2878 AC_SUBST(USE_AVMEDIA_DUMMY)
2880 # Decide whether to build database connectivity stuff (including
2881 # Base) or not. We probably don't want to on non-desktop OSes.
2882 if test -z "$enable_database_connectivity"; then
2883     # --disable-database-connectivity is unfinished work in progress
2884     # and the iOS test app doesn't link if we actually try to use it.
2885     # if test $_os != iOS -a $_os != Android; then
2886     if test $_os != iOS; then
2887         enable_database_connectivity=yes
2888     fi
2891 if test "$enable_database_connectivity" = yes; then
2892     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2893     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2896 if test -z "$enable_extensions"; then
2897     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2898     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2899         enable_extensions=yes
2900     fi
2903 if test "$enable_extensions" = yes; then
2904     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2905     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2908 if test -z "$enable_scripting"; then
2909     # Disable scripting for iOS unless specifically overridden
2910     # with --enable-scripting.
2911     if test $_os != iOS; then
2912         enable_scripting=yes
2913     fi
2916 DISABLE_SCRIPTING=''
2917 if test "$enable_scripting" = yes; then
2918     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2919     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2920 else
2921     DISABLE_SCRIPTING='TRUE'
2922     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2925 if test $_os = iOS -o $_os = Android; then
2926     # Disable dynamic_loading always for iOS and Android
2927     enable_dynamic_loading=no
2928 elif test -z "$enable_dynamic_loading"; then
2929     # Otherwise enable it unless specifically disabled
2930     enable_dynamic_loading=yes
2933 DISABLE_DYNLOADING=''
2934 if test "$enable_dynamic_loading" = yes; then
2935     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2936 else
2937     DISABLE_DYNLOADING='TRUE'
2939 AC_SUBST(DISABLE_DYNLOADING)
2941 # remember SYSBASE value
2942 AC_SUBST(SYSBASE)
2944 dnl ===================================================================
2945 dnl  Sort out various gallery compilation options
2946 dnl ===================================================================
2947 AC_MSG_CHECKING([how to build and package galleries])
2948 if test -n "${with_galleries}"; then
2949     if test "$with_galleries" = "build"; then
2950         WITH_GALLERY_BUILD=TRUE
2951         AC_MSG_RESULT([build from source images internally])
2952     elif test "$with_galleries" = "no"; then
2953         WITH_GALLERY_BUILD=
2954         AC_MSG_RESULT([disable non-internal gallery build])
2955     else
2956         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2957     fi
2958 else
2959     if test $_os != iOS -a $_os != Android; then
2960         WITH_GALLERY_BUILD=TRUE
2961         AC_MSG_RESULT([internal src images for desktop])
2962     else
2963         WITH_GALLERY_BUILD=
2964         AC_MSG_RESULT([disable src image build])
2965     fi
2967 AC_SUBST(WITH_GALLERY_BUILD)
2969 dnl ===================================================================
2970 dnl  Checks if ccache is available
2971 dnl ===================================================================
2972 CCACHE_DEPEND_MODE=
2973 if test "$_os" = "WINNT"; then
2974     # on windows/VC build do not use ccache
2975     CCACHE=""
2976 elif test "$enable_ccache" = "no"; then
2977     CCACHE=""
2978 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2979     case "%$CC%$CXX%" in
2980     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2981     # assume that's good then
2982     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2983         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2984         CCACHE_DEPEND_MODE=1
2985         ;;
2986     *)
2987         AC_PATH_PROG([CCACHE],[ccache],[not found])
2988         if test "$CCACHE" = "not found"; then
2989             CCACHE=""
2990         else
2991             CCACHE_DEPEND_MODE=1
2992             # Need to check for ccache version: otherwise prevents
2993             # caching of the results (like "-x objective-c++" for Mac)
2994             if test $_os = Darwin -o $_os = iOS; then
2995                 # Check ccache version
2996                 AC_MSG_CHECKING([whether version of ccache is suitable])
2997                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2998                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2999                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3000                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3001                 else
3002                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3003                     CCACHE=""
3004                     CCACHE_DEPEND_MODE=
3005                 fi
3006             fi
3007         fi
3008         ;;
3009     esac
3010 else
3011     CCACHE=""
3013 if test "$enable_ccache" = "nodepend"; then
3014     CCACHE_DEPEND_MODE=""
3016 AC_SUBST(CCACHE_DEPEND_MODE)
3018 if test "$CCACHE" != ""; then
3019     ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
3020     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3021     if test "$ccache_size" = ""; then
3022         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3023         if test "$ccache_size" = ""; then
3024             ccache_size=0
3025         fi
3026         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3027         if test $ccache_size -lt 1024; then
3028             CCACHE=""
3029             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3030             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3031         else
3032             # warn that ccache may be too small for debug build
3033             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3034             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3035         fi
3036     else
3037         if test $ccache_size -lt 5; then
3038             #warn that ccache may be too small for debug build
3039             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3040             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3041         fi
3042     fi
3045 dnl ===================================================================
3046 dnl  Checks for C compiler,
3047 dnl  The check for the C++ compiler is later on.
3048 dnl ===================================================================
3049 if test "$_os" != "WINNT"; then
3050     GCC_HOME_SET="true"
3051     AC_MSG_CHECKING([gcc home])
3052     if test -z "$with_gcc_home"; then
3053         if test "$enable_icecream" = "yes"; then
3054             if test -d "/usr/lib/icecc/bin"; then
3055                 GCC_HOME="/usr/lib/icecc/"
3056             elif test -d "/usr/libexec/icecc/bin"; then
3057                 GCC_HOME="/usr/libexec/icecc/"
3058             elif test -d "/opt/icecream/bin"; then
3059                 GCC_HOME="/opt/icecream/"
3060             else
3061                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3063             fi
3064         else
3065             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3066             GCC_HOME_SET="false"
3067         fi
3068     else
3069         GCC_HOME="$with_gcc_home"
3070     fi
3071     AC_MSG_RESULT($GCC_HOME)
3072     AC_SUBST(GCC_HOME)
3074     if test "$GCC_HOME_SET" = "true"; then
3075         if test -z "$CC"; then
3076             CC="$GCC_HOME/bin/gcc"
3077             CC_BASE="gcc"
3078         fi
3079         if test -z "$CXX"; then
3080             CXX="$GCC_HOME/bin/g++"
3081             CXX_BASE="g++"
3082         fi
3083     fi
3086 COMPATH=`dirname "$CC"`
3087 if test "$COMPATH" = "."; then
3088     AC_PATH_PROGS(COMPATH, $CC)
3089     dnl double square bracket to get single because of M4 quote...
3090     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3092 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3094 dnl ===================================================================
3095 dnl Java support
3096 dnl ===================================================================
3097 AC_MSG_CHECKING([whether to build with Java support])
3098 if test "$with_java" != "no"; then
3099     if test "$DISABLE_SCRIPTING" = TRUE; then
3100         AC_MSG_RESULT([no, overridden by --disable-scripting])
3101         ENABLE_JAVA=""
3102         with_java=no
3103     else
3104         AC_MSG_RESULT([yes])
3105         ENABLE_JAVA="TRUE"
3106         AC_DEFINE(HAVE_FEATURE_JAVA)
3107     fi
3108 else
3109     AC_MSG_RESULT([no])
3110     ENABLE_JAVA=""
3113 AC_SUBST(ENABLE_JAVA)
3115 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3117 dnl ENABLE_JAVA="" indicate no Java support at all
3119 dnl ===================================================================
3120 dnl Check macOS SDK and compiler
3121 dnl ===================================================================
3123 if test $_os = Darwin; then
3125     # If no --with-macosx-sdk option is given, look for one
3127     # The intent is that for "most" Mac-based developers, a suitable
3128     # SDK will be found automatically without any configure options.
3130     # For developers with a current Xcode, the lowest-numbered SDK
3131     # higher than or equal to the minimum required should be found.
3133     AC_MSG_CHECKING([what macOS SDK to use])
3134     for _macosx_sdk in ${with_macosx_sdk-11.3 11.1 11.0 10.15 10.14 10.13}; do
3135         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3136         if test -d "$MACOSX_SDK_PATH"; then
3137             with_macosx_sdk="${_macosx_sdk}"
3138             break
3139         else
3140             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3141             if test -d "$MACOSX_SDK_PATH"; then
3142                 with_macosx_sdk="${_macosx_sdk}"
3143                 break
3144             fi
3145         fi
3146     done
3147     if test ! -d "$MACOSX_SDK_PATH"; then
3148         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3149     fi
3151     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3153     case $with_macosx_sdk in
3154     10.13)
3155         MACOSX_SDK_VERSION=101300
3156         ;;
3157     10.14)
3158         MACOSX_SDK_VERSION=101400
3159         ;;
3160     10.15)
3161         MACOSX_SDK_VERSION=101500
3162         ;;
3163     11.0)
3164         MACOSX_SDK_VERSION=110000
3165         ;;
3166     11.1)
3167         MACOSX_SDK_VERSION=110100
3168         ;;
3169     11.3)
3170         MACOSX_SDK_VERSION=110300
3171         ;;
3172     *)
3173         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.3])
3174         ;;
3175     esac
3177     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3178         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3179     fi
3181     if test "$with_macosx_version_min_required" = "" ; then
3182         if test "$host_cpu" = x86_64; then
3183             with_macosx_version_min_required="10.10";
3184         else
3185             with_macosx_version_min_required="11.0";
3186         fi
3187     fi
3189     if test "$with_macosx_version_max_allowed" = "" ; then
3190         with_macosx_version_max_allowed="$with_macosx_sdk"
3191     fi
3193     # export this so that "xcrun" invocations later return matching values
3194     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3195     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3196     export DEVELOPER_DIR
3197     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3198     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3200     AC_MSG_CHECKING([whether Xcode is new enough])
3201     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3202     my_xcode_ver2=${my_xcode_ver1#Xcode }
3203     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3204     if test "$my_xcode_ver3" -ge 1103; then
3205         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3206     else
3207         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3208     fi
3210     case "$with_macosx_version_min_required" in
3211     10.10)
3212         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3213         ;;
3214     10.11)
3215         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3216         ;;
3217     10.12)
3218         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3219         ;;
3220     10.13)
3221         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3222         ;;
3223     10.14)
3224         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3225         ;;
3226     10.15)
3227         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3228         ;;
3229     10.16)
3230         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3231         ;;
3232     11.0)
3233         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3234         ;;
3235     11.1)
3236         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3237         ;;
3238     11.3)
3239         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3240         ;;
3241     *)
3242         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.3])
3243         ;;
3244     esac
3246     LIBTOOL=/usr/bin/libtool
3247     INSTALL_NAME_TOOL=install_name_tool
3248     if test -z "$save_CC"; then
3249         stdlib=-stdlib=libc++
3251         AC_MSG_CHECKING([what C compiler to use])
3252         CC="`xcrun -find clang`"
3253         CC_BASE=`first_arg_basename "$CC"`
3254         if test "$host_cpu" = x86_64; then
3255             CC+=" -target x86_64-apple-macos"
3256         else
3257             CC+=" -target arm64-apple-macos"
3258         fi
3259         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3260         AC_MSG_RESULT([$CC])
3262         AC_MSG_CHECKING([what C++ compiler to use])
3263         CXX="`xcrun -find clang++`"
3264         CXX_BASE=`first_arg_basename "$CXX"`
3265         if test "$host_cpu" = x86_64; then
3266             CXX+=" -target x86_64-apple-macos"
3267         else
3268             CXX+=" -target arm64-apple-macos"
3269         fi
3270         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3271         AC_MSG_RESULT([$CXX])
3273         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3274         AR=`xcrun -find ar`
3275         NM=`xcrun -find nm`
3276         STRIP=`xcrun -find strip`
3277         LIBTOOL=`xcrun -find libtool`
3278         RANLIB=`xcrun -find ranlib`
3279     fi
3281     case "$with_macosx_version_max_allowed" in
3282     10.10)
3283         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3284         ;;
3285     10.11)
3286         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3287         ;;
3288     10.12)
3289         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3290         ;;
3291     10.13)
3292         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3293         ;;
3294     10.14)
3295         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3296         ;;
3297     10.15)
3298         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3299         ;;
3300     11.0)
3301         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3302         ;;
3303     11.1)
3304         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3305         ;;
3306     11.3)
3307         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3308         ;;
3309     *)
3310         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.3])
3311         ;;
3312     esac
3314     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3315     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3316         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])
3317     else
3318         AC_MSG_RESULT([ok])
3319     fi
3321     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3322     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3323         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3324     else
3325         AC_MSG_RESULT([ok])
3326     fi
3327     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3328     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3330     AC_MSG_CHECKING([whether to do code signing])
3332     if test "$enable_macosx_code_signing" = yes; then
3333         # By default use the first suitable certificate (?).
3335         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3336         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3337         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3338         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3339         # "Developer ID Application" one.
3341         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3342         if test -n "$identity"; then
3343             MACOSX_CODESIGNING_IDENTITY=$identity
3344             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3345             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3346         else
3347             AC_MSG_ERROR([cannot determine identity to use])
3348         fi
3349     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3350         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3351         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3352         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3353     else
3354         AC_MSG_RESULT([no])
3355     fi
3357     AC_MSG_CHECKING([whether to create a Mac App Store package])
3359     if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3360         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3361     elif test "$enable_macosx_package_signing" = yes; then
3362         # By default use the first suitable certificate.
3363         # It should be a "3rd Party Mac Developer Installer" one
3365         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3366         if test -n "$identity"; then
3367             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3368             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3369             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3370         else
3371             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3372         fi
3373     elif test -n "$enable_macosx_package_signing"; then
3374         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3375         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3376         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3377     else
3378         AC_MSG_RESULT([no])
3379     fi
3381     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3382         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3383     fi
3385     AC_MSG_CHECKING([whether to sandbox the application])
3387     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3388         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3389     elif test "$enable_macosx_sandbox" = yes; then
3390         ENABLE_MACOSX_SANDBOX=TRUE
3391         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3392         AC_MSG_RESULT([yes])
3393     else
3394         AC_MSG_RESULT([no])
3395     fi
3397     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3398     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3399     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3401 AC_SUBST(MACOSX_SDK_PATH)
3402 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3403 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3404 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3405 AC_SUBST(INSTALL_NAME_TOOL)
3406 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3407 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3408 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3409 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3410 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3412 dnl ===================================================================
3413 dnl Check iOS SDK and compiler
3414 dnl ===================================================================
3416 if test $_os = iOS; then
3417     AC_MSG_CHECKING([what iOS SDK to use])
3418     current_sdk_ver=14.5
3419     older_sdk_vers="14.4 14.3 14.2 14.1 14.0 13.7"
3420     if test "$enable_ios_simulator" = "yes"; then
3421         platform=iPhoneSimulator
3422         versionmin=-mios-simulator-version-min=12.2
3423     else
3424         platform=iPhoneOS
3425         versionmin=-miphoneos-version-min=12.2
3426     fi
3427     xcode_developer=`xcode-select -print-path`
3429     for sdkver in $current_sdk_ver $older_sdk_vers; do
3430         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3431         if test -d $t; then
3432             sysroot=$t
3433             break
3434         fi
3435     done
3437     if test -z "$sysroot"; then
3438         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3439     fi
3441     AC_MSG_RESULT($sysroot)
3443     stdlib="-stdlib=libc++"
3445     AC_MSG_CHECKING([what C compiler to use])
3446     CC="`xcrun -find clang`"
3447     CC_BASE=`first_arg_basename "$CC"`
3448     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3449     AC_MSG_RESULT([$CC])
3451     AC_MSG_CHECKING([what C++ compiler to use])
3452     CXX="`xcrun -find clang++`"
3453     CXX_BASE=`first_arg_basename "$CXX"`
3454     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3455     AC_MSG_RESULT([$CXX])
3457     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3458     AR=`xcrun -find ar`
3459     NM=`xcrun -find nm`
3460     STRIP=`xcrun -find strip`
3461     LIBTOOL=`xcrun -find libtool`
3462     RANLIB=`xcrun -find ranlib`
3465 AC_MSG_CHECKING([whether to treat the installation as read-only])
3467 if test $_os = Darwin; then
3468     enable_readonly_installset=yes
3469 elif test "$enable_extensions" != yes; then
3470     enable_readonly_installset=yes
3472 if test "$enable_readonly_installset" = yes; then
3473     AC_MSG_RESULT([yes])
3474     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3475 else
3476     AC_MSG_RESULT([no])
3479 dnl ===================================================================
3480 dnl Structure of install set
3481 dnl ===================================================================
3483 if test $_os = Darwin; then
3484     LIBO_BIN_FOLDER=MacOS
3485     LIBO_ETC_FOLDER=Resources
3486     LIBO_LIBEXEC_FOLDER=MacOS
3487     LIBO_LIB_FOLDER=Frameworks
3488     LIBO_LIB_PYUNO_FOLDER=Resources
3489     LIBO_SHARE_FOLDER=Resources
3490     LIBO_SHARE_HELP_FOLDER=Resources/help
3491     LIBO_SHARE_JAVA_FOLDER=Resources/java
3492     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3493     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3494     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3495     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3496     LIBO_URE_BIN_FOLDER=MacOS
3497     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3498     LIBO_URE_LIB_FOLDER=Frameworks
3499     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3500     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3501 elif test $_os = WINNT; then
3502     LIBO_BIN_FOLDER=program
3503     LIBO_ETC_FOLDER=program
3504     LIBO_LIBEXEC_FOLDER=program
3505     LIBO_LIB_FOLDER=program
3506     LIBO_LIB_PYUNO_FOLDER=program
3507     LIBO_SHARE_FOLDER=share
3508     LIBO_SHARE_HELP_FOLDER=help
3509     LIBO_SHARE_JAVA_FOLDER=program/classes
3510     LIBO_SHARE_PRESETS_FOLDER=presets
3511     LIBO_SHARE_READMES_FOLDER=readmes
3512     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3513     LIBO_SHARE_SHELL_FOLDER=program/shell
3514     LIBO_URE_BIN_FOLDER=program
3515     LIBO_URE_ETC_FOLDER=program
3516     LIBO_URE_LIB_FOLDER=program
3517     LIBO_URE_MISC_FOLDER=program
3518     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3519 else
3520     LIBO_BIN_FOLDER=program
3521     LIBO_ETC_FOLDER=program
3522     LIBO_LIBEXEC_FOLDER=program
3523     LIBO_LIB_FOLDER=program
3524     LIBO_LIB_PYUNO_FOLDER=program
3525     LIBO_SHARE_FOLDER=share
3526     LIBO_SHARE_HELP_FOLDER=help
3527     LIBO_SHARE_JAVA_FOLDER=program/classes
3528     LIBO_SHARE_PRESETS_FOLDER=presets
3529     LIBO_SHARE_READMES_FOLDER=readmes
3530     if test "$enable_fuzzers" != yes; then
3531         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3532     else
3533         LIBO_SHARE_RESOURCE_FOLDER=resource
3534     fi
3535     LIBO_SHARE_SHELL_FOLDER=program/shell
3536     LIBO_URE_BIN_FOLDER=program
3537     LIBO_URE_ETC_FOLDER=program
3538     LIBO_URE_LIB_FOLDER=program
3539     LIBO_URE_MISC_FOLDER=program
3540     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3542 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3543 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3544 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3545 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3546 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3547 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3548 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3549 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3550 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3551 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3552 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3553 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3554 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3555 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3556 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3557 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3559 # Not all of them needed in config_host.mk, add more if need arises
3560 AC_SUBST(LIBO_BIN_FOLDER)
3561 AC_SUBST(LIBO_ETC_FOLDER)
3562 AC_SUBST(LIBO_LIB_FOLDER)
3563 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3564 AC_SUBST(LIBO_SHARE_FOLDER)
3565 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3566 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3567 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3568 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3569 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3570 AC_SUBST(LIBO_URE_BIN_FOLDER)
3571 AC_SUBST(LIBO_URE_ETC_FOLDER)
3572 AC_SUBST(LIBO_URE_LIB_FOLDER)
3573 AC_SUBST(LIBO_URE_MISC_FOLDER)
3574 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3576 dnl ===================================================================
3577 dnl Windows specific tests and stuff
3578 dnl ===================================================================
3580 reg_get_value()
3582     # Return value: $regvalue
3583     unset regvalue
3585     if test "$build_os" = "wsl"; then
3586         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3587         return
3588     fi
3590     local _regentry="/proc/registry${1}/${2}"
3591     if test -f "$_regentry"; then
3592         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3593         # Registry keys read via /proc/registry* are always \0 terminated!
3594         local _regvalue=$(tr -d '\0' < "$_regentry")
3595         if test $? -eq 0; then
3596             regvalue=$_regvalue
3597         fi
3598     fi
3601 # Get a value from the 32-bit side of the Registry
3602 reg_get_value_32()
3604     reg_get_value "32" "$1"
3607 # Get a value from the 64-bit side of the Registry
3608 reg_get_value_64()
3610     reg_get_value "64" "$1"
3613 case "$host_os" in
3614 cygwin*|wsl*)
3615     COM=MSC
3616     USING_X11=
3617     OS=WNT
3618     RTL_OS=Windows
3619     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3620         P_SEP=";"
3621     else
3622         P_SEP=:
3623     fi
3624     case "$host_cpu" in
3625     x86_64)
3626         CPUNAME=X86_64
3627         RTL_ARCH=X86_64
3628         PLATFORMID=windows_x86_64
3629         WINDOWS_X64=1
3630         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3631         WIN_HOST_ARCH="x64"
3632         WIN_MULTI_ARCH="x86"
3633         WIN_HOST_BITS=64
3634         ;;
3635     i*86)
3636         CPUNAME=INTEL
3637         RTL_ARCH=x86
3638         PLATFORMID=windows_x86
3639         WIN_HOST_ARCH="x86"
3640         WIN_HOST_BITS=32
3641         WIN_OTHER_ARCH="x64"
3642         ;;
3643     aarch64)
3644         CPUNAME=ARM64
3645         RTL_ARCH=arm64
3646         PLATFORMID=windows_arm64
3647         WINDOWS_X64=1
3648         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3649         WIN_HOST_ARCH="arm64"
3650         WIN_HOST_BITS=64
3651         with_ucrt_dir=no
3652         ;;
3653     *)
3654         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3655         ;;
3656     esac
3658     case "$build_cpu" in
3659     x86_64) WIN_BUILD_ARCH="x64" ;;
3660     i*86) WIN_BUILD_ARCH="x86" ;;
3661     aarch64) WIN_BUILD_ARCH="arm64" ;;
3662     *)
3663         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3664         ;;
3665     esac
3667     SCPDEFS="$SCPDEFS -D_MSC_VER"
3668     ;;
3669 esac
3671 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3672 # other-arch won't, but wouldn't break the build (x64 on x86).
3673 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3674     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3678 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3679     # To allow building Windows multi-arch releases without cross-tooling
3680     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3681         cross_compiling="yes"
3682     fi
3684 if test "$cross_compiling" = "yes"; then
3685     export CROSS_COMPILING=TRUE
3686 else
3687     CROSS_COMPILING=
3688     BUILD_TYPE="$BUILD_TYPE NATIVE"
3690 AC_SUBST(CROSS_COMPILING)
3692 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3693 # NOTE: must _not_ be used for bundled external libraries!
3694 ISYSTEM=
3695 if test "$GCC" = "yes"; then
3696     AC_MSG_CHECKING( for -isystem )
3697     save_CFLAGS=$CFLAGS
3698     CFLAGS="$CFLAGS -Werror"
3699     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3700     CFLAGS=$save_CFLAGS
3701     if test -n "$ISYSTEM"; then
3702         AC_MSG_RESULT(yes)
3703     else
3704         AC_MSG_RESULT(no)
3705     fi
3707 if test -z "$ISYSTEM"; then
3708     # fall back to using -I
3709     ISYSTEM=-I
3711 AC_SUBST(ISYSTEM)
3713 dnl ===================================================================
3714 dnl  Check which Visual Studio compiler is used
3715 dnl ===================================================================
3717 map_vs_year_to_version()
3719     # Return value: $vsversion
3721     unset vsversion
3723     case $1 in
3724     2019)
3725         vsversion=16;;
3726     *)
3727         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3728     esac
3731 vs_versions_to_check()
3733     # Args: $1 (optional) : versions to check, in the order of preference
3734     # Return value: $vsversions
3736     unset vsversions
3738     if test -n "$1"; then
3739         map_vs_year_to_version "$1"
3740         vsversions=$vsversion
3741     else
3742         # We accept only 2019
3743         vsversions="16"
3744     fi
3747 win_get_env_from_vsvars32bat()
3749     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3750     # Also seems to be located in another directory under the same name: vsvars32.bat
3751     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3752     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3753     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3754     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3755     local result
3756     if test "$build_os" = "wsl"; then
3757         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3758     else
3759         chmod +x $WRAPPERBATCHFILEPATH
3760         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3761     fi
3762     rm -f $WRAPPERBATCHFILEPATH
3763     printf '%s' "$result"
3766 find_ucrt()
3768     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3769     if test -n "$regvalue"; then
3770         PathFormat "$regvalue"
3771         UCRTSDKDIR=$formatted_path_unix
3772         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3773         UCRTVERSION=$regvalue
3774         # Rest if not exist
3775         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3776           UCRTSDKDIR=
3777         fi
3778     fi
3779     if test -z "$UCRTSDKDIR"; then
3780         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3781         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3782         if test -f "$ide_env_file"; then
3783             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3784             UCRTSDKDIR=$formatted_path
3785             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3786             dnl Hack needed at least by tml:
3787             if test "$UCRTVERSION" = 10.0.15063.0 \
3788                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3789                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3790             then
3791                 UCRTVERSION=10.0.14393.0
3792             fi
3793         else
3794           AC_MSG_ERROR([No UCRT found])
3795         fi
3796     fi
3799 find_msvc()
3801     # Find Visual C++ 2019
3802     # Args: $1 (optional) : The VS version year
3803     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3805     unset vctest vcnum vcnumwithdot vcbuildnumber
3807     vs_versions_to_check "$1"
3808     if test "$build_os" = wsl; then
3809         vswhere="$PROGRAMFILESX86"
3810     else
3811         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3812     fi
3813     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3814     PathFormat "$vswhere"
3815     vswhere=$formatted_path_unix
3816     for ver in $vsversions; do
3817         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3818         # Fall back to all MS products (this includes VC++ Build Tools)
3819         if ! test -n "$vswhereoutput"; then
3820             AC_MSG_CHECKING([VC++ Build Tools and similar])
3821             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3822         fi
3823         if test -n "$vswhereoutput"; then
3824             PathFormat "$vswhereoutput"
3825             vctest=$formatted_path_unix
3826             break
3827         fi
3828     done
3830     if test -n "$vctest"; then
3831         vcnumwithdot="$ver.0"
3832         case "$vcnumwithdot" in
3833         16.0)
3834             vcyear=2019
3835             vcnum=160
3836             ;;
3837         esac
3838         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3840     fi
3843 test_cl_exe()
3845     AC_MSG_CHECKING([$1 compiler])
3847     CL_EXE_PATH="$2/cl.exe"
3849     if test ! -f "$CL_EXE_PATH"; then
3850         if test "$1" = "multi-arch"; then
3851             AC_MSG_WARN([no compiler (cl.exe) in $2])
3852             return 1
3853         else
3854             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3855         fi
3856     fi
3858     dnl ===========================================================
3859     dnl  Check for the corresponding mspdb*.dll
3860     dnl ===========================================================
3862     # MSVC 15.0 has libraries from 14.0?
3863     mspdbnum="140"
3865     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3866         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3867     fi
3869     # The compiles has to find its shared libraries
3870     OLD_PATH="$PATH"
3871     TEMP_PATH=`cygpath -d "$2"`
3872     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3874     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3875         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3876     fi
3878     PATH="$OLD_PATH"
3880     AC_MSG_RESULT([$CL_EXE_PATH])
3883 SOLARINC=
3884 MSBUILD_PATH=
3885 DEVENV=
3886 if test "$_os" = "WINNT"; then
3887     AC_MSG_CHECKING([Visual C++])
3888     find_msvc "$with_visual_studio"
3889     if test -z "$vctest"; then
3890         if test -n "$with_visual_studio"; then
3891             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3892         else
3893             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3894         fi
3895     fi
3896     AC_MSG_RESULT([])
3898     VC_PRODUCT_DIR="$vctest/VC"
3899     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3901     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3902     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3903         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3904         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3905         if test $? -ne 0; then
3906             WIN_MULTI_ARCH=""
3907             WIN_OTHER_ARCH=""
3908         fi
3909     fi
3911     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3912         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3913         test_cl_exe "build" "$MSVC_BUILD_PATH"
3914     fi
3916     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3917         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3918         test_cl_exe "host" "$MSVC_HOST_PATH"
3919     else
3920         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3921     fi
3923     AC_MSG_CHECKING([for short pathname of VC product directory])
3924     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3925     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3927     UCRTSDKDIR=
3928     UCRTVERSION=
3930     AC_MSG_CHECKING([for UCRT location])
3931     find_ucrt
3932     # find_ucrt errors out if it doesn't find it
3933     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3934     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3935     ucrtincpath_formatted=$formatted_path
3936     # SOLARINC is used for external modules and must be set too.
3937     # And no, it's not sufficient to set SOLARINC only, as configure
3938     # itself doesn't honour it.
3939     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3940     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3941     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3942     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3944     AC_SUBST(UCRTSDKDIR)
3945     AC_SUBST(UCRTVERSION)
3947     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3948     # Find the proper version of MSBuild.exe to use based on the VS version
3949     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3950     if test -n "$regvalue" ; then
3951         AC_MSG_RESULT([found: $regvalue])
3952         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3953     else
3954         if test "$vcnumwithdot" = "16.0"; then
3955             if test "$WIN_BUILD_ARCH" != "x64"; then
3956                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3957             else
3958                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3959             fi
3960         else
3961             if test "$WIN_BUILD_ARCH" != "x64"; then
3962                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3963             else
3964                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3965             fi
3966         fi
3967         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3968         AC_MSG_RESULT([$regvalue])
3969     fi
3971     # Find the version of devenv.exe
3972     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3973     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3974     DEVENV_unix=$(cygpath -u "$DEVENV")
3975     if test ! -e "$DEVENV_unix"; then
3976         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3977     fi
3979     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3980     dnl needed when building CLR code:
3981     if test -z "$MSVC_CXX"; then
3982         # This gives us a posix path with 8.3 filename restrictions
3983         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3984     fi
3986     if test -z "$CC"; then
3987         CC=$MSVC_CXX
3988         CC_BASE=`first_arg_basename "$CC"`
3989     fi
3990     if test -z "$CXX"; then
3991         CXX=$MSVC_CXX
3992         CXX_BASE=`first_arg_basename "$CXX"`
3993     fi
3995     if test -n "$CC"; then
3996         # Remove /cl.exe from CC case insensitive
3997         AC_MSG_NOTICE([found Visual C++ $vcyear])
3999         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4000         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4002         PathFormat "$COMPATH"
4003         COMPATH=`win_short_path_for_make "$formatted_path"`
4005         VCVER=$vcnum
4007         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4008         # are always "better", we list them in reverse chronological order.
4010         case "$vcnum" in
4011         160)
4012             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4013             ;;
4014         esac
4016         # The expectation is that --with-windows-sdk should not need to be used
4017         if test -n "$with_windows_sdk"; then
4018             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4019             *" "$with_windows_sdk" "*)
4020                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4021                 ;;
4022             *)
4023                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4024                 ;;
4025             esac
4026         fi
4028         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4029         ac_objext=obj
4030         ac_exeext=exe
4032     else
4033         AC_MSG_ERROR([Visual C++ not found after all, huh])
4034     fi
4036     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4037     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4038         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4039         // between Visual Studio versions and _MSC_VER:
4040         #if _MSC_VER < 1924
4041         #error
4042         #endif
4043     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4045     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4046     # version of the Explorer extension (and maybe other small
4047     # bits, too) needed when installing a 32-bit LibreOffice on a
4048     # 64-bit OS. The 64-bit Explorer extension is a feature that
4049     # has been present since long in OOo. Don't confuse it with
4050     # building LibreOffice itself as 64-bit code.
4052     BUILD_X64=
4053     CXX_X64_BINARY=
4055     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4056         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4057         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4058              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4059         then
4060             BUILD_X64=TRUE
4061             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4062             AC_MSG_RESULT([found])
4063         else
4064             AC_MSG_RESULT([not found])
4065             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4066         fi
4067     elif test "$WIN_HOST_ARCH" = "x64"; then
4068         CXX_X64_BINARY=$CXX
4069     fi
4070     AC_SUBST(BUILD_X64)
4072     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4073     AC_SUBST(CXX_X64_BINARY)
4075     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4076     # needed to support TWAIN scan on both 32- and 64-bit systems
4078     case "$WIN_HOST_ARCH" in
4079     x64)
4080         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4081         if test -n "$CXX_X86_BINARY"; then
4082             BUILD_X86=TRUE
4083             AC_MSG_RESULT([preset])
4084         elif test -n "$WIN_MULTI_ARCH"; then
4085             BUILD_X86=TRUE
4086             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4087             CXX_X86_BINARY+=" /arch:SSE"
4088             AC_MSG_RESULT([found])
4089         else
4090             AC_MSG_RESULT([not found])
4091             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4092         fi
4093         ;;
4094     x86)
4095         BUILD_X86=TRUE
4096         CXX_X86_BINARY=$MSVC_CXX
4097         ;;
4098     esac
4099     AC_SUBST(BUILD_X86)
4100     AC_SUBST(CXX_X86_BINARY)
4102 AC_SUBST(VCVER)
4103 AC_SUBST(DEVENV)
4104 AC_SUBST(MSVC_CXX)
4107 # unowinreg.dll
4109 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4110 AC_SUBST(UNOWINREG_DLL)
4112 COM_IS_CLANG=
4113 AC_MSG_CHECKING([whether the compiler is actually Clang])
4114 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4115     #ifndef __clang__
4116     you lose
4117     #endif
4118     int foo=42;
4119     ]])],
4120     [AC_MSG_RESULT([yes])
4121      COM_IS_CLANG=TRUE],
4122     [AC_MSG_RESULT([no])])
4123 AC_SUBST(COM_IS_CLANG)
4125 CC_PLAIN=$CC
4126 CLANGVER=
4127 if test "$COM_IS_CLANG" = TRUE; then
4128     AC_MSG_CHECKING([whether Clang is new enough])
4129     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4130         #if !defined __apple_build_version__
4131         #error
4132         #endif
4133         ]])],
4134         [my_apple_clang=yes],[my_apple_clang=])
4135     if test "$my_apple_clang" = yes; then
4136         AC_MSG_RESULT([assumed yes (Apple Clang)])
4137     else
4138         if test "$_os" = WINNT; then
4139             dnl In which case, assume clang-cl:
4140             my_args="/EP /TC"
4141             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4142             dnl clang-cl:
4143             CC_PLAIN=
4144             for i in $CC; do
4145                 case $i in
4146                 -FIIntrin.h)
4147                     ;;
4148                 *)
4149                     CC_PLAIN="$CC_PLAIN $i"
4150                     ;;
4151                 esac
4152             done
4153         else
4154             my_args="-E -P"
4155         fi
4156         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4157         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4158         CLANGVER=`echo $clang_version \
4159             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4160         if test "$CLANGVER" -ge 50002; then
4161             AC_MSG_RESULT([yes ($clang_version)])
4162         else
4163             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4164         fi
4165         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4166         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4167     fi
4170 SHOWINCLUDES_PREFIX=
4171 if test "$_os" = WINNT; then
4172     dnl We need to guess the prefix of the -showIncludes output, it can be
4173     dnl localized
4174     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4175     echo "#include <stdlib.h>" > conftest.c
4176     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4177         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4178     rm -f conftest.c conftest.obj
4179     if test -z "$SHOWINCLUDES_PREFIX"; then
4180         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4181     else
4182         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4183     fi
4185 AC_SUBST(SHOWINCLUDES_PREFIX)
4188 # prefix C with ccache if needed
4190 if test "$CCACHE" != ""; then
4191     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4193     AC_LANG_PUSH([C])
4194     save_CFLAGS=$CFLAGS
4195     CFLAGS="$CFLAGS --ccache-skip -O2"
4196     dnl an empty program will do, we're checking the compiler flags
4197     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4198                       [use_ccache=yes], [use_ccache=no])
4199     CFLAGS=$save_CFLAGS
4200     if test $use_ccache = yes; then
4201         AC_MSG_RESULT([yes])
4202     else
4203         CC="$CCACHE $CC"
4204         CC_BASE="ccache $CC_BASE"
4205         AC_MSG_RESULT([no])
4206     fi
4207     AC_LANG_POP([C])
4210 # ===================================================================
4211 # check various GCC options that Clang does not support now but maybe
4212 # will somewhen in the future, check them even for GCC, so that the
4213 # flags are set
4214 # ===================================================================
4216 HAVE_GCC_GGDB2=
4217 if test "$GCC" = "yes"; then
4218     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4219     save_CFLAGS=$CFLAGS
4220     CFLAGS="$CFLAGS -Werror -ggdb2"
4221     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4222     CFLAGS=$save_CFLAGS
4223     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4224         AC_MSG_RESULT([yes])
4225     else
4226         AC_MSG_RESULT([no])
4227     fi
4229     if test "$host_cpu" = "m68k"; then
4230         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4231         save_CFLAGS=$CFLAGS
4232         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4233         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4234         CFLAGS=$save_CFLAGS
4235         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4236             AC_MSG_RESULT([yes])
4237         else
4238             AC_MSG_ERROR([no])
4239         fi
4240     fi
4242 AC_SUBST(HAVE_GCC_GGDB2)
4244 dnl ===================================================================
4245 dnl  Test the gcc version
4246 dnl ===================================================================
4247 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4248     AC_MSG_CHECKING([the GCC version])
4249     _gcc_version=`$CC -dumpversion`
4250     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4251         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4252     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4254     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4256     if test "$gcc_full_version" -lt 70000; then
4257         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4258     fi
4259 else
4260     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4261     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4262     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4263     # (which reports itself as GCC 4.2.1).
4264     GCC_VERSION=
4266 AC_SUBST(GCC_VERSION)
4268 dnl Set the ENABLE_DBGUTIL variable
4269 dnl ===================================================================
4270 AC_MSG_CHECKING([whether to build with additional debug utilities])
4271 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4272     ENABLE_DBGUTIL="TRUE"
4273     # this is an extra var so it can have different default on different MSVC
4274     # versions (in case there are version specific problems with it)
4275     MSVC_USE_DEBUG_RUNTIME="TRUE"
4277     AC_MSG_RESULT([yes])
4278     # cppunit and graphite expose STL in public headers
4279     if test "$with_system_cppunit" = "yes"; then
4280         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4281     else
4282         with_system_cppunit=no
4283     fi
4284     if test "$with_system_graphite" = "yes"; then
4285         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4286     else
4287         with_system_graphite=no
4288     fi
4289     if test "$with_system_orcus" = "yes"; then
4290         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4291     else
4292         with_system_orcus=no
4293     fi
4294     if test "$with_system_libcmis" = "yes"; then
4295         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4296     else
4297         with_system_libcmis=no
4298     fi
4299     if test "$with_system_hunspell" = "yes"; then
4300         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4301     else
4302         with_system_hunspell=no
4303     fi
4304     if test "$with_system_gpgmepp" = "yes"; then
4305         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4306     else
4307         with_system_gpgmepp=no
4308     fi
4309     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4310     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4311     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4312     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4313     # of those two is using the system variant:
4314     if test "$with_system_libnumbertext" = "yes"; then
4315         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4316     else
4317         with_system_libnumbertext=no
4318     fi
4319     if test "$with_system_libwps" = "yes"; then
4320         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4321     else
4322         with_system_libwps=no
4323     fi
4324 else
4325     ENABLE_DBGUTIL=""
4326     MSVC_USE_DEBUG_RUNTIME=""
4327     AC_MSG_RESULT([no])
4329 AC_SUBST(ENABLE_DBGUTIL)
4330 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4332 dnl Set the ENABLE_DEBUG variable.
4333 dnl ===================================================================
4334 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4335     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4337 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4338     if test -z "$libo_fuzzed_enable_debug"; then
4339         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4340     else
4341         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4342         enable_debug=yes
4343     fi
4346 AC_MSG_CHECKING([whether to do a debug build])
4347 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4348     ENABLE_DEBUG="TRUE"
4349     if test -n "$ENABLE_DBGUTIL" ; then
4350         AC_MSG_RESULT([yes (dbgutil)])
4351     else
4352         AC_MSG_RESULT([yes])
4353     fi
4354 else
4355     ENABLE_DEBUG=""
4356     AC_MSG_RESULT([no])
4358 AC_SUBST(ENABLE_DEBUG)
4360 dnl ===================================================================
4361 dnl Select the linker to use (gold/lld/ld.bfd).
4362 dnl This is done only after compiler checks (need to know if Clang is
4363 dnl used, for different defaults) and after checking if a debug build
4364 dnl is wanted (non-debug builds get the default linker if not explicitly
4365 dnl specified otherwise).
4366 dnl All checks for linker features/options should come after this.
4367 dnl ===================================================================
4368 check_use_ld()
4370     use_ld=-fuse-ld=${1%%:*}
4371     use_ld_path=${1#*:}
4372     if test "$use_ld_path" != "$1"; then
4373         use_ld="$use_ld --ld-path=$use_ld_path"
4374     fi
4375     use_ld_fail_if_error=$2
4376     use_ld_ok=
4377     AC_MSG_CHECKING([for $use_ld linker support])
4378     use_ld_ldflags_save="$LDFLAGS"
4379     LDFLAGS="$LDFLAGS $use_ld"
4380     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4381 #include <stdio.h>
4382         ],[
4383 printf ("hello world\n");
4384         ])], USE_LD=$use_ld, [])
4385     if test -n "$USE_LD"; then
4386         AC_MSG_RESULT( yes )
4387         use_ld_ok=yes
4388     else
4389         if test -n "$use_ld_fail_if_error"; then
4390             AC_MSG_ERROR( no )
4391         else
4392             AC_MSG_RESULT( no )
4393         fi
4394     fi
4395     if test -n "$use_ld_ok"; then
4396         dnl keep the value of LDFLAGS
4397         return 0
4398     fi
4399     LDFLAGS="$use_ld_ldflags_save"
4400     return 1
4402 USE_LD=
4403 if test "$enable_ld" != "no"; then
4404     if test "$GCC" = "yes"; then
4405         if test -n "$enable_ld"; then
4406             check_use_ld "$enable_ld" fail_if_error
4407         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4408             dnl non-debug builds default to the default linker
4409             true
4410         elif test -n "$COM_IS_CLANG"; then
4411             check_use_ld lld
4412             if test $? -ne 0; then
4413                 check_use_ld gold
4414             fi
4415         else
4416             # For gcc first try gold, new versions also support lld.
4417             check_use_ld gold
4418             if test $? -ne 0; then
4419                 check_use_ld lld
4420             fi
4421         fi
4422         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4423         rm conftest.out
4424         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4425         if test -z "$ld_used"; then
4426             ld_used="unknown"
4427         fi
4428         AC_MSG_CHECKING([for linker that is used])
4429         AC_MSG_RESULT([$ld_used])
4430         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4431             if echo "$ld_used" | grep -q "^GNU ld"; then
4432                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4433                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4434             fi
4435         fi
4436     else
4437         if test "$enable_ld" = "yes"; then
4438             AC_MSG_ERROR([--enable-ld not supported])
4439         fi
4440     fi
4442 AC_SUBST(USE_LD)
4444 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4445 if test "$GCC" = "yes"; then
4446     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4447     bsymbolic_functions_ldflags_save=$LDFLAGS
4448     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4449     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4450 #include <stdio.h>
4451         ],[
4452 printf ("hello world\n");
4453         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4454     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4455         AC_MSG_RESULT( found )
4456     else
4457         AC_MSG_RESULT( not found )
4458     fi
4459     LDFLAGS=$bsymbolic_functions_ldflags_save
4461 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4463 LD_GC_SECTIONS=
4464 if test "$GCC" = "yes"; then
4465     for flag in "--gc-sections" "-dead_strip"; do
4466         AC_MSG_CHECKING([for $flag linker support])
4467         ldflags_save=$LDFLAGS
4468         LDFLAGS="$LDFLAGS -Wl,$flag"
4469         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4470 #include <stdio.h>
4471             ],[
4472 printf ("hello world\n");
4473             ])],[
4474             LD_GC_SECTIONS="-Wl,$flag"
4475             AC_MSG_RESULT( found )
4476             ], [
4477             AC_MSG_RESULT( not found )
4478             ])
4479         LDFLAGS=$ldflags_save
4480         if test -n "$LD_GC_SECTIONS"; then
4481             break
4482         fi
4483     done
4485 AC_SUBST(LD_GC_SECTIONS)
4487 HAVE_GSPLIT_DWARF=
4488 if test "$enable_split_debug" != no; then
4489     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4490     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4491         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4492         save_CFLAGS=$CFLAGS
4493         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4494         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4495         CFLAGS=$save_CFLAGS
4496         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4497             AC_MSG_RESULT([yes])
4498         else
4499             if test "$enable_split_debug" = yes; then
4500                 AC_MSG_ERROR([no])
4501             else
4502                 AC_MSG_RESULT([no])
4503             fi
4504         fi
4505     fi
4506     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4507         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4508         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4509     fi
4511 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4513 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4514 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4515 save_CFLAGS=$CFLAGS
4516 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4517 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4518 CFLAGS=$save_CFLAGS
4519 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4520     AC_MSG_RESULT([yes])
4521 else
4522     AC_MSG_RESULT([no])
4524 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4526 ENABLE_GDB_INDEX=
4527 if test "$enable_gdb_index" != "no"; then
4528     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4529     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4530         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4531         save_CFLAGS=$CFLAGS
4532         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4533         have_ggnu_pubnames=
4534         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4535         if test "$have_ggnu_pubnames" != "TRUE"; then
4536             if test "$enable_gdb_index" = "yes"; then
4537                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4538             else
4539                 AC_MSG_RESULT( no )
4540             fi
4541         else
4542             AC_MSG_RESULT( yes )
4543             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4544             ldflags_save=$LDFLAGS
4545             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4546             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4547 #include <stdio.h>
4548                 ],[
4549 printf ("hello world\n");
4550                 ])], ENABLE_GDB_INDEX=TRUE, [])
4551             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4552                 AC_MSG_RESULT( yes )
4553             else
4554                 if test "$enable_gdb_index" = "yes"; then
4555                     AC_MSG_ERROR( no )
4556                 else
4557                     AC_MSG_RESULT( no )
4558                 fi
4559             fi
4560             LDFLAGS=$ldflags_save
4561         fi
4562         CFLAGS=$save_CFLAGS
4563         fi
4564     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4565         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4566         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4567     fi
4569 AC_SUBST(ENABLE_GDB_INDEX)
4571 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4572     enable_sal_log=yes
4574 if test "$enable_sal_log" = yes; then
4575     ENABLE_SAL_LOG=TRUE
4577 AC_SUBST(ENABLE_SAL_LOG)
4579 dnl Check for enable symbols option
4580 dnl ===================================================================
4581 AC_MSG_CHECKING([whether to generate debug information])
4582 if test -z "$enable_symbols"; then
4583     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4584         enable_symbols=yes
4585     else
4586         enable_symbols=no
4587     fi
4589 if test "$enable_symbols" = yes; then
4590     ENABLE_SYMBOLS_FOR=all
4591     AC_MSG_RESULT([yes])
4592 elif test "$enable_symbols" = no; then
4593     ENABLE_SYMBOLS_FOR=
4594     AC_MSG_RESULT([no])
4595 else
4596     # Selective debuginfo.
4597     ENABLE_SYMBOLS_FOR="$enable_symbols"
4598     AC_MSG_RESULT([for "$enable_symbols"])
4600 AC_SUBST(ENABLE_SYMBOLS_FOR)
4602 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4603     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4604     AC_MSG_CHECKING([whether enough memory is available for linking])
4605     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4606     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4607     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4608         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4609     else
4610         AC_MSG_RESULT([yes])
4611     fi
4614 ENABLE_OPTIMIZED=
4615 ENABLE_OPTIMIZED_DEBUG=
4616 AC_MSG_CHECKING([whether to compile with optimization flags])
4617 if test -z "$enable_optimized"; then
4618     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4619         enable_optimized=no
4620     else
4621         enable_optimized=yes
4622     fi
4624 if test "$enable_optimized" = yes; then
4625     ENABLE_OPTIMIZED=TRUE
4626     AC_MSG_RESULT([yes])
4627 elif test "$enable_optimized" = debug; then
4628     ENABLE_OPTIMIZED_DEBUG=TRUE
4629     AC_MSG_RESULT([yes (debug)])
4630     HAVE_GCC_OG=
4631     if test "$GCC" = "yes"; then
4632         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4633         save_CFLAGS=$CFLAGS
4634         CFLAGS="$CFLAGS -Werror -Og"
4635         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4636         CFLAGS=$save_CFLAGS
4637         if test "$HAVE_GCC_OG" = "TRUE"; then
4638             AC_MSG_RESULT([yes])
4639         else
4640             AC_MSG_RESULT([no])
4641         fi
4642     fi
4643     if test -z "$HAVE_GCC_OG"; then
4644         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4645     fi
4646 else
4647     AC_MSG_RESULT([no])
4649 AC_SUBST(ENABLE_OPTIMIZED)
4650 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4653 # determine CPUNAME, OS, ...
4654 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4656 case "$host_os" in
4658 aix*)
4659     COM=GCC
4660     CPUNAME=POWERPC
4661     USING_X11=TRUE
4662     OS=AIX
4663     RTL_OS=AIX
4664     RTL_ARCH=PowerPC
4665     PLATFORMID=aix_powerpc
4666     P_SEP=:
4667     ;;
4669 cygwin*|wsl*)
4670     # Already handled
4671     ;;
4673 darwin*|macos*)
4674     COM=GCC
4675     USING_X11=
4676     OS=MACOSX
4677     RTL_OS=MacOSX
4678     P_SEP=:
4680     case "$host_cpu" in
4681     aarch64|arm64)
4682         if test "$enable_ios_simulator" = "yes"; then
4683             OS=iOS
4684         else
4685             CPUNAME=AARCH64
4686             RTL_ARCH=AARCH64
4687             PLATFORMID=macosx_arm64
4688         fi
4689         ;;
4690     x86_64)
4691         if test "$enable_ios_simulator" = "yes"; then
4692             OS=iOS
4693         fi
4694         CPUNAME=X86_64
4695         RTL_ARCH=X86_64
4696         PLATFORMID=macosx_x86_64
4697         ;;
4698     *)
4699         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4700         ;;
4701     esac
4702     ;;
4704 ios*)
4705     COM=GCC
4706     USING_X11=
4707     OS=iOS
4708     RTL_OS=iOS
4709     P_SEP=:
4711     case "$host_cpu" in
4712     aarch64|arm64)
4713         if test "$enable_ios_simulator" = "yes"; then
4714             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4715         fi
4716         ;;
4717     *)
4718         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4719         ;;
4720     esac
4721     CPUNAME=AARCH64
4722     RTL_ARCH=AARCH64
4723     PLATFORMID=ios_arm64
4724     ;;
4726 dragonfly*)
4727     COM=GCC
4728     USING_X11=TRUE
4729     OS=DRAGONFLY
4730     RTL_OS=DragonFly
4731     P_SEP=:
4733     case "$host_cpu" in
4734     i*86)
4735         CPUNAME=INTEL
4736         RTL_ARCH=x86
4737         PLATFORMID=dragonfly_x86
4738         ;;
4739     x86_64)
4740         CPUNAME=X86_64
4741         RTL_ARCH=X86_64
4742         PLATFORMID=dragonfly_x86_64
4743         ;;
4744     *)
4745         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4746         ;;
4747     esac
4748     ;;
4750 freebsd*)
4751     COM=GCC
4752     USING_X11=TRUE
4753     RTL_OS=FreeBSD
4754     OS=FREEBSD
4755     P_SEP=:
4757     case "$host_cpu" in
4758     aarch64)
4759         CPUNAME=AARCH64
4760         PLATFORMID=freebsd_aarch64
4761         RTL_ARCH=AARCH64
4762         ;;
4763     i*86)
4764         CPUNAME=INTEL
4765         RTL_ARCH=x86
4766         PLATFORMID=freebsd_x86
4767         ;;
4768     x86_64|amd64)
4769         CPUNAME=X86_64
4770         RTL_ARCH=X86_64
4771         PLATFORMID=freebsd_x86_64
4772         ;;
4773     powerpc64)
4774         CPUNAME=POWERPC64
4775         RTL_ARCH=PowerPC_64
4776         PLATFORMID=freebsd_powerpc64
4777         ;;
4778     powerpc|powerpcspe)
4779         CPUNAME=POWERPC
4780         RTL_ARCH=PowerPC
4781         PLATFORMID=freebsd_powerpc
4782         ;;
4783     *)
4784         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4785         ;;
4786     esac
4787     ;;
4789 haiku*)
4790     COM=GCC
4791     USING_X11=
4792     GUIBASE=haiku
4793     RTL_OS=Haiku
4794     OS=HAIKU
4795     P_SEP=:
4797     case "$host_cpu" in
4798     i*86)
4799         CPUNAME=INTEL
4800         RTL_ARCH=x86
4801         PLATFORMID=haiku_x86
4802         ;;
4803     x86_64|amd64)
4804         CPUNAME=X86_64
4805         RTL_ARCH=X86_64
4806         PLATFORMID=haiku_x86_64
4807         ;;
4808     *)
4809         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4810         ;;
4811     esac
4812     ;;
4814 kfreebsd*)
4815     COM=GCC
4816     USING_X11=TRUE
4817     OS=LINUX
4818     RTL_OS=kFreeBSD
4819     P_SEP=:
4821     case "$host_cpu" in
4823     i*86)
4824         CPUNAME=INTEL
4825         RTL_ARCH=x86
4826         PLATFORMID=kfreebsd_x86
4827         ;;
4828     x86_64)
4829         CPUNAME=X86_64
4830         RTL_ARCH=X86_64
4831         PLATFORMID=kfreebsd_x86_64
4832         ;;
4833     *)
4834         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4835         ;;
4836     esac
4837     ;;
4839 linux-gnu*)
4840     COM=GCC
4841     USING_X11=TRUE
4842     OS=LINUX
4843     RTL_OS=Linux
4844     P_SEP=:
4846     case "$host_cpu" in
4848     aarch64)
4849         CPUNAME=AARCH64
4850         PLATFORMID=linux_aarch64
4851         RTL_ARCH=AARCH64
4852         ;;
4853     alpha)
4854         CPUNAME=AXP
4855         RTL_ARCH=ALPHA
4856         PLATFORMID=linux_alpha
4857         ;;
4858     arm*)
4859         CPUNAME=ARM
4860         EPM_FLAGS="-a arm"
4861         RTL_ARCH=ARM_EABI
4862         PLATFORMID=linux_arm_eabi
4863         case "$host_cpu" in
4864         arm*-linux)
4865             RTL_ARCH=ARM_OABI
4866             PLATFORMID=linux_arm_oabi
4867             ;;
4868         esac
4869         ;;
4870     hppa)
4871         CPUNAME=HPPA
4872         RTL_ARCH=HPPA
4873         EPM_FLAGS="-a hppa"
4874         PLATFORMID=linux_hppa
4875         ;;
4876     i*86)
4877         CPUNAME=INTEL
4878         RTL_ARCH=x86
4879         PLATFORMID=linux_x86
4880         ;;
4881     ia64)
4882         CPUNAME=IA64
4883         RTL_ARCH=IA64
4884         PLATFORMID=linux_ia64
4885         ;;
4886     mips)
4887         CPUNAME=GODSON
4888         RTL_ARCH=MIPS_EB
4889         EPM_FLAGS="-a mips"
4890         PLATFORMID=linux_mips_eb
4891         ;;
4892     mips64)
4893         CPUNAME=GODSON64
4894         RTL_ARCH=MIPS64_EB
4895         EPM_FLAGS="-a mips64"
4896         PLATFORMID=linux_mips64_eb
4897         ;;
4898     mips64el)
4899         CPUNAME=GODSON64
4900         RTL_ARCH=MIPS64_EL
4901         EPM_FLAGS="-a mips64el"
4902         PLATFORMID=linux_mips64_el
4903         ;;
4904     mipsel)
4905         CPUNAME=GODSON
4906         RTL_ARCH=MIPS_EL
4907         EPM_FLAGS="-a mipsel"
4908         PLATFORMID=linux_mips_el
4909         ;;
4910     m68k)
4911         CPUNAME=M68K
4912         RTL_ARCH=M68K
4913         PLATFORMID=linux_m68k
4914         ;;
4915     powerpc)
4916         CPUNAME=POWERPC
4917         RTL_ARCH=PowerPC
4918         PLATFORMID=linux_powerpc
4919         ;;
4920     powerpc64)
4921         CPUNAME=POWERPC64
4922         RTL_ARCH=PowerPC_64
4923         PLATFORMID=linux_powerpc64
4924         ;;
4925     powerpc64le)
4926         CPUNAME=POWERPC64
4927         RTL_ARCH=PowerPC_64_LE
4928         PLATFORMID=linux_powerpc64_le
4929         ;;
4930     sparc)
4931         CPUNAME=SPARC
4932         RTL_ARCH=SPARC
4933         PLATFORMID=linux_sparc
4934         ;;
4935     sparc64)
4936         CPUNAME=SPARC64
4937         RTL_ARCH=SPARC64
4938         PLATFORMID=linux_sparc64
4939         ;;
4940     s390)
4941         CPUNAME=S390
4942         RTL_ARCH=S390
4943         PLATFORMID=linux_s390
4944         ;;
4945     s390x)
4946         CPUNAME=S390X
4947         RTL_ARCH=S390x
4948         PLATFORMID=linux_s390x
4949         ;;
4950     x86_64)
4951         CPUNAME=X86_64
4952         RTL_ARCH=X86_64
4953         PLATFORMID=linux_x86_64
4954         ;;
4955     *)
4956         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4957         ;;
4958     esac
4959     ;;
4961 linux-android*)
4962     COM=GCC
4963     USING_X11=
4964     OS=ANDROID
4965     RTL_OS=Android
4966     P_SEP=:
4968     case "$host_cpu" in
4970     arm|armel)
4971         CPUNAME=ARM
4972         RTL_ARCH=ARM_EABI
4973         PLATFORMID=android_arm_eabi
4974         ;;
4975     aarch64)
4976         CPUNAME=AARCH64
4977         RTL_ARCH=AARCH64
4978         PLATFORMID=android_aarch64
4979         ;;
4980     i*86)
4981         CPUNAME=INTEL
4982         RTL_ARCH=x86
4983         PLATFORMID=android_x86
4984         ;;
4985     x86_64)
4986         CPUNAME=X86_64
4987         RTL_ARCH=X86_64
4988         PLATFORMID=android_x86_64
4989         ;;
4990     *)
4991         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4992         ;;
4993     esac
4994     ;;
4996 *netbsd*)
4997     COM=GCC
4998     USING_X11=TRUE
4999     OS=NETBSD
5000     RTL_OS=NetBSD
5001     P_SEP=:
5003     case "$host_cpu" in
5004     i*86)
5005         CPUNAME=INTEL
5006         RTL_ARCH=x86
5007         PLATFORMID=netbsd_x86
5008         ;;
5009     powerpc)
5010         CPUNAME=POWERPC
5011         RTL_ARCH=PowerPC
5012         PLATFORMID=netbsd_powerpc
5013         ;;
5014     sparc)
5015         CPUNAME=SPARC
5016         RTL_ARCH=SPARC
5017         PLATFORMID=netbsd_sparc
5018         ;;
5019     x86_64)
5020         CPUNAME=X86_64
5021         RTL_ARCH=X86_64
5022         PLATFORMID=netbsd_x86_64
5023         ;;
5024     *)
5025         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5026         ;;
5027     esac
5028     ;;
5030 openbsd*)
5031     COM=GCC
5032     USING_X11=TRUE
5033     OS=OPENBSD
5034     RTL_OS=OpenBSD
5035     P_SEP=:
5037     case "$host_cpu" in
5038     i*86)
5039         CPUNAME=INTEL
5040         RTL_ARCH=x86
5041         PLATFORMID=openbsd_x86
5042         ;;
5043     x86_64)
5044         CPUNAME=X86_64
5045         RTL_ARCH=X86_64
5046         PLATFORMID=openbsd_x86_64
5047         ;;
5048     *)
5049         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5050         ;;
5051     esac
5052     SOLARINC="$SOLARINC -I/usr/local/include"
5053     ;;
5055 solaris*)
5056     COM=GCC
5057     USING_X11=TRUE
5058     OS=SOLARIS
5059     RTL_OS=Solaris
5060     P_SEP=:
5062     case "$host_cpu" in
5063     i*86)
5064         CPUNAME=INTEL
5065         RTL_ARCH=x86
5066         PLATFORMID=solaris_x86
5067         ;;
5068     sparc)
5069         CPUNAME=SPARC
5070         RTL_ARCH=SPARC
5071         PLATFORMID=solaris_sparc
5072         ;;
5073     sparc64)
5074         CPUNAME=SPARC64
5075         RTL_ARCH=SPARC64
5076         PLATFORMID=solaris_sparc64
5077         ;;
5078     *)
5079         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5080         ;;
5081     esac
5082     SOLARINC="$SOLARINC -I/usr/local/include"
5083     ;;
5086     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5087     ;;
5088 esac
5090 if test "$with_x" = "no"; then
5091     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5094 DISABLE_GUI=""
5095 if test "$enable_gui" = "no"; then
5096     if test "$USING_X11" != TRUE; then
5097         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5098     fi
5099     USING_X11=
5100     DISABLE_GUI=TRUE
5101     AC_DEFINE(HAVE_FEATURE_UI,0)
5102     test_cairo=yes
5104 AC_SUBST(DISABLE_GUI)
5106 WORKDIR="${BUILDDIR}/workdir"
5107 INSTDIR="${BUILDDIR}/instdir"
5108 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5109 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5110 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5111 AC_SUBST(COM)
5112 AC_SUBST(CPUNAME)
5113 AC_SUBST(RTL_OS)
5114 AC_SUBST(RTL_ARCH)
5115 AC_SUBST(EPM_FLAGS)
5116 AC_SUBST(USING_X11)
5117 AC_SUBST([INSTDIR])
5118 AC_SUBST([INSTROOT])
5119 AC_SUBST([INSTROOTBASE])
5120 AC_SUBST(OS)
5121 AC_SUBST(P_SEP)
5122 AC_SUBST(WORKDIR)
5123 AC_SUBST(PLATFORMID)
5124 AC_SUBST(WINDOWS_X64)
5125 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5127 dnl ===================================================================
5128 dnl Test which package format to use
5129 dnl ===================================================================
5130 AC_MSG_CHECKING([which package format to use])
5131 if test -n "$with_package_format" -a "$with_package_format" != no; then
5132     for i in $with_package_format; do
5133         case "$i" in
5134         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5135             ;;
5136         *)
5137             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5138 aix - AIX software distribution
5139 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5140 deb - Debian software distribution
5141 pkg - Solaris software distribution
5142 rpm - RedHat software distribution
5144 LibreOffice additionally supports:
5145 archive - .tar.gz or .zip
5146 dmg - macOS .dmg
5147 installed - installation tree
5148 msi - Windows .msi
5149         ])
5150             ;;
5151         esac
5152     done
5153     # fakeroot is needed to ensure correct file ownerships/permissions
5154     # inside deb packages and tar archives created on Linux and Solaris.
5155     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5156         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5157         if test "$FAKEROOT" = "no"; then
5158             AC_MSG_ERROR(
5159                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5160         fi
5161     fi
5162     PKGFORMAT="$with_package_format"
5163     AC_MSG_RESULT([$PKGFORMAT])
5164 else
5165     PKGFORMAT=
5166     AC_MSG_RESULT([none])
5168 AC_SUBST(PKGFORMAT)
5170 dnl ===================================================================
5171 dnl Set up a different compiler to produce tools to run on the build
5172 dnl machine when doing cross-compilation
5173 dnl ===================================================================
5175 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5176 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5177 if test "$cross_compiling" = "yes"; then
5178     AC_MSG_CHECKING([for BUILD platform configuration])
5179     echo
5180     rm -rf CONF-FOR-BUILD config_build.mk
5181     mkdir CONF-FOR-BUILD
5182     # Here must be listed all files needed when running the configure script. In particular, also
5183     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5184     # keep them in the same order as there.
5185     (cd $SRC_ROOT && tar cf - \
5186         config.guess \
5187         bin/get_config_variables \
5188         solenv/bin/getcompver.awk \
5189         solenv/inc/langlist.mk \
5190         download.lst \
5191         config_host.mk.in \
5192         config_host_lang.mk.in \
5193         Makefile.in \
5194         bin/bffvalidator.sh.in \
5195         bin/odfvalidator.sh.in \
5196         bin/officeotron.sh.in \
5197         hardened_runtime.xcent.in \
5198         instsetoo_native/util/openoffice.lst.in \
5199         config_host/*.in \
5200         sysui/desktop/macosx/Info.plist.in) \
5201     | (cd CONF-FOR-BUILD && tar xf -)
5202     cp configure CONF-FOR-BUILD
5203     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5204     (
5205     unset COM USING_X11 OS CPUNAME
5206     unset CC CXX SYSBASE CFLAGS
5207     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5208     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5209     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5210     if test -n "$CC_FOR_BUILD"; then
5211         export CC="$CC_FOR_BUILD"
5212         CC_BASE=`first_arg_basename "$CC"`
5213     fi
5214     if test -n "$CXX_FOR_BUILD"; then
5215         export CXX="$CXX_FOR_BUILD"
5216         CXX_BASE=`first_arg_basename "$CXX"`
5217     fi
5218     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5219     cd CONF-FOR-BUILD
5221     sub_conf_opts=""
5222     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5223     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5224     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5225     if test -n "$ENABLE_JAVA"; then
5226         case "$_os" in
5227         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5228         Android)
5229             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5230             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5231             ;;
5232         *)
5233             if test -z "$with_jdk_home"; then
5234                 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.])
5235             fi
5236             ;;
5237         esac
5238     else
5239         sub_conf_opts="$sub_conf_opts --without-java"
5240     fi
5241     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5242     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5243     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5245     # Don't bother having configure look for stuff not needed for the build platform anyway
5246     ./configure \
5247         --build="$build_alias" \
5248         --disable-cups \
5249         --disable-firebird-sdbc \
5250         --disable-gpgmepp \
5251         --disable-gstreamer-1-0 \
5252         --disable-gtk3 \
5253         --disable-mariadb-sdbc \
5254         --disable-online-update \
5255         --disable-opencl \
5256         --disable-pdfimport \
5257         --disable-postgresql-sdbc \
5258         --disable-skia \
5259         --enable-icecream="$enable_icecream" \
5260         --without-doxygen \
5261         --without-webdav \
5262         --with-parallelism="$with_parallelism" \
5263         --with-theme="$with_theme" \
5264         --with-tls=openssl \
5265         $sub_conf_opts \
5266         --srcdir=$srcdir \
5267         2>&1 | sed -e 's/^/    /'
5268     test -f ./config_host.mk 2>/dev/null || exit
5270     # filter permitted build targets
5271     PERMITTED_BUILD_TARGETS="
5272         AVMEDIA
5273         BOOST
5274         CLUCENE
5275         DBCONNECTIVITY
5276         DESKTOP
5277         DYNLOADING
5278         EPOXY
5279         EXPAT
5280         GLM
5281         GRAPHITE
5282         HARFBUZZ
5283         ICU
5284         LCMS2
5285         LIBJPEG_TURBO
5286         LIBLANGTAG
5287         LibO
5288         LIBFFI
5289         LIBPN
5290         LIBXML2
5291         LIBXSLT
5292         MDDS
5293         NATIVE
5294         OPENSSL
5295         ORCUS
5296         PYTHON
5297         SCRIPTING
5298         ZLIB
5300     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5301     # newlined lists, to use grep as a filter
5302     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5303     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5304     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5305     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5307     cp config_host.mk ../config_build.mk
5308     cp config_host_lang.mk ../config_build_lang.mk
5309     mv config.log ../config.Build.log
5310     mkdir -p ../config_build
5311     mv config_host/*.h ../config_build
5313     # all these will get a _FOR_BUILD postfix
5314     DIRECT_FOR_BUILD_SETTINGS="
5315         CC
5316         CXX
5317         ILIB
5318         JAVA_HOME
5319         JAVAIFLAGS
5320         JDK
5321         LIBO_BIN_FOLDER
5322         LIBO_LIB_FOLDER
5323         LIBO_URE_LIB_FOLDER
5324         LIBO_URE_MISC_FOLDER
5325         OS
5326         SDKDIRNAME
5327         SYSTEM_LIBXML
5328         SYSTEM_LIBXSLT
5330     # these overwrite host config with build config
5331     OVERWRITING_SETTINGS="
5332         ANT
5333         ANT_HOME
5334         ANT_LIB
5335         HSQLDB_USE_JDBC_4_1
5336         JAVA_CLASSPATH_NOT_SET
5337         JAVA_SOURCE_VER
5338         JAVA_TARGET_VER
5339         JAVACFLAGS
5340         JAVACOMPILER
5341         JAVADOC
5342         JAVADOCISGJDOC
5344     # these need some special handling
5345     EXTRA_HANDLED_SETTINGS="
5346         INSTDIR
5347         INSTROOT
5348         PATH
5349         WORKDIR
5351     OLD_PATH=$PATH
5352     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5353     BUILD_PATH=$PATH
5354     PATH=$OLD_PATH
5356     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5357     echo "$line" >>build-config
5359     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5360         VV='$'$V
5361         VV=`eval "echo $VV"`
5362         if test -n "$VV"; then
5363             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5364             echo "$line" >>build-config
5365         fi
5366     done
5368     for V in $OVERWRITING_SETTINGS; do
5369         VV='$'$V
5370         VV=`eval "echo $VV"`
5371         if test -n "$VV"; then
5372             line=${V}='${'${V}:-$VV'}'
5373             echo "$line" >>build-config
5374         fi
5375     done
5377     for V in INSTDIR INSTROOT WORKDIR; do
5378         VV='$'$V
5379         VV=`eval "echo $VV"`
5380         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5381         if test -n "$VV"; then
5382             line="${V}_FOR_BUILD='$VV'"
5383             echo "$line" >>build-config
5384         fi
5385     done
5387     )
5388     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5389     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])
5390     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5391              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5393     eval `cat CONF-FOR-BUILD/build-config`
5395     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5397     rm -rf CONF-FOR-BUILD
5398 else
5399     OS_FOR_BUILD="$OS"
5400     CC_FOR_BUILD="$CC"
5401     CXX_FOR_BUILD="$CXX"
5402     INSTDIR_FOR_BUILD="$INSTDIR"
5403     INSTROOT_FOR_BUILD="$INSTROOT"
5404     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5405     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5406     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5407     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5408     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5409     WORKDIR_FOR_BUILD="$WORKDIR"
5411 AC_SUBST(OS_FOR_BUILD)
5412 AC_SUBST(INSTDIR_FOR_BUILD)
5413 AC_SUBST(INSTROOT_FOR_BUILD)
5414 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5415 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5416 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5417 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5418 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5419 AC_SUBST(WORKDIR_FOR_BUILD)
5420 AC_SUBST(CC_FOR_BUILD)
5421 AC_SUBST(CXX_FOR_BUILD)
5423 dnl ===================================================================
5424 dnl Check for syslog header
5425 dnl ===================================================================
5426 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5428 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5429 dnl ===================================================================
5430 AC_MSG_CHECKING([whether to turn warnings to errors])
5431 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5432     ENABLE_WERROR="TRUE"
5433     PYTHONWARNINGS="error"
5434     AC_MSG_RESULT([yes])
5435 else
5436     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5437         ENABLE_WERROR="TRUE"
5438         PYTHONWARNINGS="error"
5439         AC_MSG_RESULT([yes])
5440     else
5441         AC_MSG_RESULT([no])
5442     fi
5444 AC_SUBST(ENABLE_WERROR)
5445 AC_SUBST(PYTHONWARNINGS)
5447 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5448 dnl ===================================================================
5449 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5450 if test -z "$enable_assert_always_abort"; then
5451    if test "$ENABLE_DEBUG" = TRUE; then
5452        enable_assert_always_abort=yes
5453    else
5454        enable_assert_always_abort=no
5455    fi
5457 if test "$enable_assert_always_abort" = "yes"; then
5458     ASSERT_ALWAYS_ABORT="TRUE"
5459     AC_MSG_RESULT([yes])
5460 else
5461     ASSERT_ALWAYS_ABORT="FALSE"
5462     AC_MSG_RESULT([no])
5464 AC_SUBST(ASSERT_ALWAYS_ABORT)
5466 # Determine whether to use ooenv for the instdir installation
5467 # ===================================================================
5468 if test $_os != "WINNT" -a $_os != "Darwin"; then
5469     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5470     if test "$enable_ooenv" = "no"; then
5471         AC_MSG_RESULT([no])
5472     else
5473         ENABLE_OOENV="TRUE"
5474         AC_MSG_RESULT([yes])
5475     fi
5477 AC_SUBST(ENABLE_OOENV)
5479 if test "$USING_X11" != TRUE; then
5480     # be sure to do not mess with unneeded stuff
5481     test_randr=no
5482     test_xrender=no
5483     test_cups=no
5484     test_dbus=no
5485     build_gstreamer_1_0=no
5486     test_kf5=no
5487     test_qt5=no
5488     test_gtk3_kde5=no
5489     enable_cairo_canvas=no
5492 if test "$OS" = "HAIKU"; then
5493     enable_cairo_canvas=yes
5494     test_kf5=yes
5497 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5498     AC_MSG_WARN([The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!])
5499     add_warning "The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!"
5500     enable_kf5=yes
5503 if test "$test_kf5" = "yes"; then
5504     test_qt5=yes
5507 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5508     if test "$enable_qt5" = "no"; then
5509         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5510     else
5511         enable_qt5=yes
5512     fi
5515 dnl ===================================================================
5516 dnl check for cups support
5517 dnl ===================================================================
5518 ENABLE_CUPS=""
5520 if test "$enable_cups" = "no"; then
5521     test_cups=no
5524 AC_MSG_CHECKING([whether to enable CUPS support])
5525 if test "$test_cups" = "yes"; then
5526     ENABLE_CUPS="TRUE"
5527     AC_MSG_RESULT([yes])
5529     AC_MSG_CHECKING([whether cups support is present])
5530     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5531     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5532     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5533         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5534     fi
5536 else
5537     AC_MSG_RESULT([no])
5540 AC_SUBST(ENABLE_CUPS)
5542 # fontconfig checks
5543 if test "$test_fontconfig" = "yes"; then
5544     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5545     SYSTEM_FONTCONFIG=TRUE
5546     FilterLibs "${FONTCONFIG_LIBS}"
5547     FONTCONFIG_LIBS="${filteredlibs}"
5549 AC_SUBST(FONTCONFIG_CFLAGS)
5550 AC_SUBST(FONTCONFIG_LIBS)
5551 AC_SUBST([SYSTEM_FONTCONFIG])
5553 dnl whether to find & fetch external tarballs?
5554 dnl ===================================================================
5555 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5556    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5557        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5558    else
5559        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5560    fi
5562 if test -z "$TARFILE_LOCATION"; then
5563     if test -d "$SRC_ROOT/src" ; then
5564         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5565         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5566     fi
5567     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5568 else
5569     AbsolutePath "$TARFILE_LOCATION"
5570     PathFormat "${absolute_path}"
5571     TARFILE_LOCATION="${formatted_path}"
5573 AC_SUBST(TARFILE_LOCATION)
5575 AC_MSG_CHECKING([whether we want to fetch tarballs])
5576 if test "$enable_fetch_external" != "no"; then
5577     if test "$with_all_tarballs" = "yes"; then
5578         AC_MSG_RESULT([yes, all of them])
5579         DO_FETCH_TARBALLS="ALL"
5580     else
5581         AC_MSG_RESULT([yes, if we use them])
5582         DO_FETCH_TARBALLS="TRUE"
5583     fi
5584 else
5585     AC_MSG_RESULT([no])
5586     DO_FETCH_TARBALLS=
5588 AC_SUBST(DO_FETCH_TARBALLS)
5590 AC_MSG_CHECKING([whether to build help])
5591 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5592     BUILD_TYPE="$BUILD_TYPE HELP"
5593     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5594     case "$with_help" in
5595     "html")
5596         ENABLE_HTMLHELP=TRUE
5597         SCPDEFS="$SCPDEFS -DWITH_HELP"
5598         AC_MSG_RESULT([HTML])
5599         ;;
5600     "online")
5601         ENABLE_HTMLHELP=TRUE
5602         HELP_ONLINE=TRUE
5603         AC_MSG_RESULT([HTML])
5604         ;;
5605     yes)
5606         SCPDEFS="$SCPDEFS -DWITH_HELP"
5607         AC_MSG_RESULT([yes])
5608         ;;
5609     *)
5610         AC_MSG_ERROR([Unknown --with-help=$with_help])
5611         ;;
5612     esac
5613 else
5614     AC_MSG_RESULT([no])
5616 AC_SUBST([ENABLE_HTMLHELP])
5617 AC_SUBST([HELP_ONLINE])
5619 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5620 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5621     BUILD_TYPE="$BUILD_TYPE HELP"
5622     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5623     case "$with_omindex" in
5624     "server")
5625         ENABLE_HTMLHELP=TRUE
5626         HELP_ONLINE=TRUE
5627         HELP_OMINDEX_PAGE=TRUE
5628         AC_MSG_RESULT([SERVER])
5629         ;;
5630     "noxap")
5631         ENABLE_HTMLHELP=TRUE
5632         HELP_ONLINE=TRUE
5633         HELP_OMINDEX_PAGE=FALSE
5634         AC_MSG_RESULT([NOXAP])
5635         ;;
5636     *)
5637         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5638         ;;
5639     esac
5640 else
5641     HELP_OMINDEX_PAGE=FALSE
5642     AC_MSG_RESULT([no])
5644 AC_SUBST([ENABLE_HTMLHELP])
5645 AC_SUBST([HELP_OMINDEX_PAGE])
5646 AC_SUBST([HELP_ONLINE])
5649 dnl Test whether to include MySpell dictionaries
5650 dnl ===================================================================
5651 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5652 if test "$with_myspell_dicts" = "yes"; then
5653     AC_MSG_RESULT([yes])
5654     WITH_MYSPELL_DICTS=TRUE
5655     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5656     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5657 else
5658     AC_MSG_RESULT([no])
5659     WITH_MYSPELL_DICTS=
5661 AC_SUBST(WITH_MYSPELL_DICTS)
5663 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5664 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5665     if test "$with_system_dicts" = yes; then
5666         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5667     fi
5668     with_system_dicts=no
5671 AC_MSG_CHECKING([whether to use dicts from external paths])
5672 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5673     AC_MSG_RESULT([yes])
5674     SYSTEM_DICTS=TRUE
5675     AC_MSG_CHECKING([for spelling dictionary directory])
5676     if test -n "$with_external_dict_dir"; then
5677         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5678     else
5679         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5680         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5681             DICT_SYSTEM_DIR=file:///usr/share/myspell
5682         fi
5683     fi
5684     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5685     AC_MSG_CHECKING([for hyphenation patterns directory])
5686     if test -n "$with_external_hyph_dir"; then
5687         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5688     else
5689         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5690     fi
5691     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5692     AC_MSG_CHECKING([for thesaurus directory])
5693     if test -n "$with_external_thes_dir"; then
5694         THES_SYSTEM_DIR=file://$with_external_thes_dir
5695     else
5696         THES_SYSTEM_DIR=file:///usr/share/mythes
5697     fi
5698     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5699 else
5700     AC_MSG_RESULT([no])
5701     SYSTEM_DICTS=
5703 AC_SUBST(SYSTEM_DICTS)
5704 AC_SUBST(DICT_SYSTEM_DIR)
5705 AC_SUBST(HYPH_SYSTEM_DIR)
5706 AC_SUBST(THES_SYSTEM_DIR)
5708 dnl ===================================================================
5709 dnl Precompiled headers.
5710 ENABLE_PCH=""
5711 AC_MSG_CHECKING([whether to enable pch feature])
5712 if test -z "$enable_pch"; then
5713     if test "$_os" = "WINNT"; then
5714         # Enabled by default on Windows.
5715         enable_pch=yes
5716     else
5717         enable_pch=no
5718     fi
5720 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5721     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5723 if test "$enable_pch" = "system"; then
5724     ENABLE_PCH="1"
5725     AC_MSG_RESULT([yes (system headers)])
5726 elif test "$enable_pch" = "base"; then
5727     ENABLE_PCH="2"
5728     AC_MSG_RESULT([yes (system and base headers)])
5729 elif test "$enable_pch" = "normal"; then
5730     ENABLE_PCH="3"
5731     AC_MSG_RESULT([yes (normal)])
5732 elif test "$enable_pch" = "full"; then
5733     ENABLE_PCH="4"
5734     AC_MSG_RESULT([yes (full)])
5735 elif test "$enable_pch" = "yes"; then
5736     # Pick a suitable default.
5737     if test "$GCC" = "yes"; then
5738         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5739         # while making the PCHs larger and rebuilds more likely.
5740         ENABLE_PCH="2"
5741         AC_MSG_RESULT([yes (system and base headers)])
5742     else
5743         # With MSVC the highest level makes a significant difference,
5744         # and it was the default when there used to be no PCH levels.
5745         ENABLE_PCH="4"
5746         AC_MSG_RESULT([yes (full)])
5747     fi
5748 elif test "$enable_pch" = "no"; then
5749     AC_MSG_RESULT([no])
5750 else
5751     AC_MSG_ERROR([Unknown value for --enable-pch])
5753 AC_SUBST(ENABLE_PCH)
5754 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5755 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5756     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5757     if test "$CCACHE_BIN" != "not found"; then
5758         AC_MSG_CHECKING([ccache version])
5759         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5760         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5761         AC_MSG_RESULT([$CCACHE_VERSION])
5762         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5763         if test "$CCACHE_NUMVER" -gt "030701"; then
5764             AC_MSG_RESULT([yes])
5765         else
5766             AC_MSG_RESULT([no (not newer than 3.7.1)])
5767             CCACHE_DEPEND_MODE=
5768         fi
5769     fi
5772 PCH_INSTANTIATE_TEMPLATES=
5773 if test -n "$ENABLE_PCH"; then
5774     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5775     save_CFLAGS=$CFLAGS
5776     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5777     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5778     CFLAGS=$save_CFLAGS
5779     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5780         AC_MSG_RESULT(yes)
5781     else
5782         AC_MSG_RESULT(no)
5783     fi
5785 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5787 BUILDING_PCH_WITH_OBJ=
5788 if test -n "$ENABLE_PCH"; then
5789     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5790     save_CFLAGS=$CFLAGS
5791     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5792     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5793     CFLAGS=$save_CFLAGS
5794     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5795         AC_MSG_RESULT(yes)
5796     else
5797         AC_MSG_RESULT(no)
5798     fi
5800 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5802 PCH_CODEGEN=
5803 PCH_NO_CODEGEN=
5804 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5805     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5806     save_CFLAGS=$CFLAGS
5807     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5808     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5809         [
5810         PCH_CODEGEN="-fpch-codegen"
5811         PCH_NO_CODEGEN="-fno-pch-codegen"
5812         ],[])
5813     CFLAGS=$save_CFLAGS
5814     if test -n "$PCH_CODEGEN"; then
5815         AC_MSG_RESULT(yes)
5816     else
5817         AC_MSG_RESULT(no)
5818     fi
5820 AC_SUBST(PCH_CODEGEN)
5821 AC_SUBST(PCH_NO_CODEGEN)
5822 PCH_DEBUGINFO=
5823 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5824     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5825     save_CFLAGS=$CFLAGS
5826     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5827     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5828     CFLAGS=$save_CFLAGS
5829     if test -n "$PCH_DEBUGINFO"; then
5830         AC_MSG_RESULT(yes)
5831     else
5832         AC_MSG_RESULT(no)
5833     fi
5835 AC_SUBST(PCH_DEBUGINFO)
5837 TAB=`printf '\t'`
5839 AC_MSG_CHECKING([the GNU Make version])
5840 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5841 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5842 if test "$_make_longver" -ge "038200"; then
5843     AC_MSG_RESULT([$GNUMAKE $_make_version])
5845 elif test "$_make_longver" -ge "038100"; then
5846     if test "$build_os" = "cygwin"; then
5847         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5848     fi
5849     AC_MSG_RESULT([$GNUMAKE $_make_version])
5851     dnl ===================================================================
5852     dnl Search all the common names for sha1sum
5853     dnl ===================================================================
5854     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5855     if test -z "$SHA1SUM"; then
5856         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5857     elif test "$SHA1SUM" = "openssl"; then
5858         SHA1SUM="openssl sha1"
5859     fi
5860     AC_MSG_CHECKING([for GNU Make bug 20033])
5861     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5862     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5863 A := \$(wildcard *.a)
5865 .PHONY: all
5866 all: \$(A:.a=.b)
5867 <TAB>@echo survived bug20033.
5869 .PHONY: setup
5870 setup:
5871 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5873 define d1
5874 @echo lala \$(1)
5875 @sleep 1
5876 endef
5878 define d2
5879 @echo tyty \$(1)
5880 @sleep 1
5881 endef
5883 %.b : %.a
5884 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5885 <TAB>\$(call d1,\$(CHECKSUM)),\
5886 <TAB>\$(call d2,\$(CHECKSUM)))
5888     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5889         no_parallelism_make="YES"
5890         AC_MSG_RESULT([yes, disable parallelism])
5891     else
5892         AC_MSG_RESULT([no, keep parallelism enabled])
5893     fi
5894     rm -rf $TESTGMAKEBUG20033
5895 else
5896     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5899 # find if gnumake support file function
5900 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5901 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5902 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5903     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5905 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5906 \$(file >test.txt,Success )
5908 .PHONY: all
5909 all:
5910 <TAB>@cat test.txt
5913 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5914 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5915     HAVE_GNUMAKE_FILE_FUNC=TRUE
5916     AC_MSG_RESULT([yes])
5917 else
5918     AC_MSG_RESULT([no])
5920 rm -rf $TESTGMAKEFILEFUNC
5921 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5923 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5924 STALE_MAKE=
5925 if test "$_make_ver_check" = ""; then
5926    STALE_MAKE=TRUE
5929 HAVE_LD_HASH_STYLE=FALSE
5930 WITH_LINKER_HASH_STYLE=
5931 AC_MSG_CHECKING([for --hash-style gcc linker support])
5932 if test "$GCC" = "yes"; then
5933     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5934         hash_styles="gnu sysv"
5935     elif test "$with_linker_hash_style" = "no"; then
5936         hash_styles=
5937     else
5938         hash_styles="$with_linker_hash_style"
5939     fi
5941     for hash_style in $hash_styles; do
5942         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5943         hash_style_ldflags_save=$LDFLAGS
5944         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5946         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5947             [
5948 #include <stdio.h>
5949             ],[
5950 printf ("");
5951             ])],
5952             [
5953                   HAVE_LD_HASH_STYLE=TRUE
5954                   WITH_LINKER_HASH_STYLE=$hash_style
5955             ],
5956             [HAVE_LD_HASH_STYLE=FALSE],
5957             [HAVE_LD_HASH_STYLE=FALSE])
5958         LDFLAGS=$hash_style_ldflags_save
5959     done
5961     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5962         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5963     else
5964         AC_MSG_RESULT( no )
5965     fi
5966     LDFLAGS=$hash_style_ldflags_save
5967 else
5968     AC_MSG_RESULT( no )
5970 AC_SUBST(HAVE_LD_HASH_STYLE)
5971 AC_SUBST(WITH_LINKER_HASH_STYLE)
5973 dnl ===================================================================
5974 dnl Check whether there's a Perl version available.
5975 dnl ===================================================================
5976 if test -z "$with_perl_home"; then
5977     AC_PATH_PROG(PERL, perl)
5978 else
5979     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5980     _perl_path="$with_perl_home/bin/perl"
5981     if test -x "$_perl_path"; then
5982         PERL=$_perl_path
5983     else
5984         AC_MSG_ERROR([$_perl_path not found])
5985     fi
5988 dnl ===================================================================
5989 dnl Testing for Perl version 5 or greater.
5990 dnl $] is the Perl version variable, it is returned as an integer
5991 dnl ===================================================================
5992 if test "$PERL"; then
5993     AC_MSG_CHECKING([the Perl version])
5994     ${PERL} -e "exit($]);"
5995     _perl_version=$?
5996     if test "$_perl_version" -lt 5; then
5997         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5998     fi
5999     AC_MSG_RESULT([Perl $_perl_version])
6000 else
6001     AC_MSG_ERROR([Perl not found, install Perl 5])
6004 dnl ===================================================================
6005 dnl Testing for required Perl modules
6006 dnl ===================================================================
6008 AC_MSG_CHECKING([for required Perl modules])
6009 perl_use_string="use Cwd ; use Digest::MD5"
6010 if test "$_os" = "WINNT"; then
6011     if test -n "$PKGFORMAT"; then
6012         for i in $PKGFORMAT; do
6013             case "$i" in
6014             msi)
6015                 # for getting fonts versions to use in MSI
6016                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6017                 ;;
6018             esac
6019         done
6020     fi
6022 if test "$with_system_hsqldb" = "yes"; then
6023     perl_use_string="$perl_use_string ; use Archive::Zip"
6025 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6026     # OpenSSL needs that to build
6027     perl_use_string="$perl_use_string ; use FindBin"
6029 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6030     AC_MSG_RESULT([all modules found])
6031 else
6032     AC_MSG_RESULT([failed to find some modules])
6033     # Find out which modules are missing.
6034     for i in $perl_use_string; do
6035         if test "$i" != "use" -a "$i" != ";"; then
6036             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6037                 missing_perl_modules="$missing_perl_modules $i"
6038             fi
6039         fi
6040     done
6041     AC_MSG_ERROR([
6042     The missing Perl modules are: $missing_perl_modules
6043     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6046 dnl ===================================================================
6047 dnl Check for pkg-config
6048 dnl ===================================================================
6049 if test "$_os" != "WINNT"; then
6050     PKG_PROG_PKG_CONFIG
6053 if test "$_os" != "WINNT"; then
6055     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6056     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6057     # explicitly. Or put /path/to/compiler in PATH yourself.
6059     # Use wrappers for LTO
6060     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6061         AC_CHECK_TOOL(AR,gcc-ar)
6062         AC_CHECK_TOOL(NM,gcc-nm)
6063         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6064     else
6065         AC_CHECK_TOOL(AR,ar)
6066         AC_CHECK_TOOL(NM,nm)
6067         AC_CHECK_TOOL(RANLIB,ranlib)
6068     fi
6069     AC_CHECK_TOOL(OBJDUMP,objdump)
6070     AC_CHECK_TOOL(READELF,readelf)
6071     AC_CHECK_TOOL(STRIP,strip)
6072     if test "$_os" = "WINNT"; then
6073         AC_CHECK_TOOL(DLLTOOL,dlltool)
6074         AC_CHECK_TOOL(WINDRES,windres)
6075     fi
6077 AC_SUBST(AR)
6078 AC_SUBST(DLLTOOL)
6079 AC_SUBST(NM)
6080 AC_SUBST(OBJDUMP)
6081 AC_SUBST(PKG_CONFIG)
6082 AC_SUBST(RANLIB)
6083 AC_SUBST(READELF)
6084 AC_SUBST(STRIP)
6085 AC_SUBST(WINDRES)
6087 dnl ===================================================================
6088 dnl pkg-config checks on macOS
6089 dnl ===================================================================
6091 if test $_os = Darwin; then
6092     AC_MSG_CHECKING([for bogus pkg-config])
6093     if test -n "$PKG_CONFIG"; then
6094         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6095             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6096         else
6097             if test "$enable_bogus_pkg_config" = "yes"; then
6098                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6099             else
6100                 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.])
6101             fi
6102         fi
6103     else
6104         AC_MSG_RESULT([no, good])
6105     fi
6108 find_csc()
6110     # Return value: $csctest
6112     unset csctest
6114     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6115     if test -n "$regvalue"; then
6116         csctest=$regvalue
6117         return
6118     fi
6121 find_al()
6123     # Return value: $altest
6125     unset altest
6127     # We need this check to detect 4.6.1 or above.
6128     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6129         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6130         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6131             altest=$regvalue
6132             return
6133         fi
6134     done
6136     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6137         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6138         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6139             altest=$regvalue
6140             return
6141         fi
6142     done
6145 find_dotnetsdk46()
6147     unset frametest
6149     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6150         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6151         if test -n "$regvalue"; then
6152             frametest=$regvalue
6153             return
6154         fi
6155     done
6158 find_winsdk_version()
6160     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6161     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6163     unset winsdktest winsdkbinsubdir winsdklibsubdir
6165     case "$1" in
6166     8.0|8.0A)
6167         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6168         if test -n "$regvalue"; then
6169             winsdktest=$regvalue
6170             winsdklibsubdir=win8
6171             return
6172         fi
6173         ;;
6174     8.1|8.1A)
6175         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6176         if test -n "$regvalue"; then
6177             winsdktest=$regvalue
6178             winsdklibsubdir=winv6.3
6179             return
6180         fi
6181         ;;
6182     10.0)
6183         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6184         if test -n "$regvalue"; then
6185             winsdktest=$regvalue
6186             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6187             if test -n "$regvalue"; then
6188                 winsdkbinsubdir="$regvalue".0
6189                 winsdklibsubdir=$winsdkbinsubdir
6190                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6191                 local tmppath_unix=$(cygpath -u "$tmppath")
6192                 # test exist the SDK path
6193                 if test -d "$tmppath_unix"; then
6194                    # when path is convertible to a short path then path is okay
6195                    cygpath -d "$tmppath" >/dev/null 2>&1
6196                    if test $? -ne 0; then
6197                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6198                    fi
6199                 else
6200                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6201                 fi
6202             fi
6203             return
6204         fi
6205         ;;
6206     esac
6209 find_winsdk()
6211     # Return value: From find_winsdk_version
6213     unset winsdktest
6215     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6216         find_winsdk_version $ver
6217         if test -n "$winsdktest"; then
6218             return
6219         fi
6220     done
6223 find_msms()
6225     # Return value: $msmdir
6227     AC_MSG_CHECKING([for MSVC merge modules directory])
6228     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6229     local my_msm_dir
6231     case "$VCVER" in
6232         160)
6233         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6234         ;;
6235     esac
6236     for f in $my_msm_files; do
6237         echo "$as_me:$LINENO: searching for $f" >&5
6238     done
6240     msmdir=
6241     for ver in 14.0 15.0; do
6242         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6243         if test -n "$regvalue"; then
6244             for f in ${my_msm_files}; do
6245                 if test -e "$regvalue/${f}"; then
6246                     msmdir=$regvalue
6247                     break
6248                 fi
6249             done
6250         fi
6251     done
6252     dnl Is the following fallback really necessary, or was it added in response
6253     dnl to never having started Visual Studio on a given machine, so the
6254     dnl registry keys checked above had presumably not yet been created?
6255     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6256     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6257     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6258     dnl expanding to "C:\Program Files\Common Files"), which would need
6259     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6260     dnl obtain its value from cygwin:
6261     if test -z "$msmdir"; then
6262         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6263         for f in ${my_msm_files}; do
6264             if test -e "$my_msm_dir/${f}"; then
6265                 msmdir=$my_msm_dir
6266             fi
6267         done
6268     fi
6270     dnl Starting from MSVC 15.0, merge modules are located in different directory
6271     case "$VCVER" in
6272     160)
6273         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6274             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6275             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6276             for f in ${my_msm_files}; do
6277                 if test -e "$my_msm_dir/${f}"; then
6278                     msmdir=$my_msm_dir
6279                     break
6280                 fi
6281             done
6282         done
6283         ;;
6284     esac
6286     if test -n "$msmdir"; then
6287         msmdir=`cygpath -m "$msmdir"`
6288         AC_MSG_RESULT([$msmdir])
6289     else
6290         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6291             AC_MSG_FAILURE([not found])
6292         else
6293             AC_MSG_WARN([not found (check config.log)])
6294             add_warning "MSM none of ${my_msm_files} found"
6295         fi
6296     fi
6299 find_msvc_x64_dlls()
6301     # Return value: $msvcdllpath, $msvcdlls
6303     AC_MSG_CHECKING([for MSVC x64 DLL path])
6304     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6305     case "$VCVER" in
6306     160)
6307         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6308             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6309             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6310                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6311                 break
6312             fi
6313             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6314             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6315                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6316                 break
6317             fi
6318         done
6319         ;;
6320     esac
6321     AC_MSG_RESULT([$msvcdllpath])
6322     AC_MSG_CHECKING([for MSVC x64 DLLs])
6323     msvcdlls="msvcp140.dll vcruntime140.dll"
6324     for dll in $msvcdlls; do
6325         if ! test -f "$msvcdllpath/$dll"; then
6326             AC_MSG_FAILURE([missing $dll])
6327         fi
6328     done
6329     AC_MSG_RESULT([found all ($msvcdlls)])
6332 dnl =========================================
6333 dnl Check for the Windows  SDK.
6334 dnl =========================================
6335 if test "$_os" = "WINNT"; then
6336     AC_MSG_CHECKING([for Windows SDK])
6337     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6338         find_winsdk
6339         WINDOWS_SDK_HOME=$winsdktest
6341         # normalize if found
6342         if test -n "$WINDOWS_SDK_HOME"; then
6343             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6344             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6345         fi
6347         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6348     fi
6350     if test -n "$WINDOWS_SDK_HOME"; then
6351         # Remove a possible trailing backslash
6352         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6354         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6355              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6356              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6357             have_windows_sdk_headers=yes
6358         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6359              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6360              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6361             have_windows_sdk_headers=yes
6362         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6363              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6364              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6365             have_windows_sdk_headers=yes
6366         else
6367             have_windows_sdk_headers=no
6368         fi
6370         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6371             have_windows_sdk_libs=yes
6372         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6373             have_windows_sdk_libs=yes
6374         else
6375             have_windows_sdk_libs=no
6376         fi
6378         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6379             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6380 the  Windows SDK are installed.])
6381         fi
6382     fi
6384     if test -z "$WINDOWS_SDK_HOME"; then
6385         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6386     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6387         WINDOWS_SDK_VERSION=80
6388         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6389     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6390         WINDOWS_SDK_VERSION=81
6391         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6392     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6393         WINDOWS_SDK_VERSION=10
6394         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6395     else
6396         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6397     fi
6398     PathFormat "$WINDOWS_SDK_HOME"
6399     WINDOWS_SDK_HOME="$formatted_path"
6400     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6401     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6402         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6403         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6404             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6405         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6406             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6407         fi
6408     fi
6410     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6411     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6412     dnl but not in v8.0), so allow this to be overridden with a
6413     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6414     dnl and configuration error if no WiLangId.vbs is found would arguably be
6415     dnl better, but I do not know under which conditions exactly it is needed by
6416     dnl msiglobal.pm:
6417     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6418         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6419         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6420         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6421             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6422             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6423         fi
6424         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6425             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6426             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6427         fi
6428         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6429             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6430             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6431         fi
6432     fi
6433     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6434         if test -n "$with_package_format" -a "$with_package_format" != no; then
6435             for i in "$with_package_format"; do
6436                 if test "$i" = "msi"; then
6437                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6438                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6439                     fi
6440                 fi
6441             done
6442         fi
6443     fi
6445 AC_SUBST(WINDOWS_SDK_HOME)
6446 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6447 AC_SUBST(WINDOWS_SDK_VERSION)
6448 AC_SUBST(WINDOWS_SDK_WILANGID)
6450 if test "$build_os" = "cygwin"; then
6451     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6452     dnl dir, it also determines that dir's path w/o an arch segment if any,
6453     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6454     AC_MSG_CHECKING([for midl.exe])
6456     find_winsdk
6457     if test -n "$winsdkbinsubdir" \
6458         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6459     then
6460         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6461         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6462     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6463         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6464         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6465     elif test -f "$winsdktest/Bin/midl.exe"; then
6466         MIDL_PATH=$winsdktest/Bin
6467         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6468     fi
6469     if test ! -f "$MIDL_PATH/midl.exe"; then
6470         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6471     else
6472         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6473     fi
6475     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6476     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6478     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6479          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6480          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6481          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6482     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6483          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6484          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6485          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6486     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6487          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6488          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6489          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6490     else
6491         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6492     fi
6494     dnl Check csc.exe
6495     AC_MSG_CHECKING([for csc.exe])
6496     find_csc
6497     if test -f "$csctest/csc.exe"; then
6498         CSC_PATH="$csctest"
6499     fi
6500     if test ! -f "$CSC_PATH/csc.exe"; then
6501         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6502     else
6503         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6504     fi
6506     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6508     dnl Check al.exe
6509     AC_MSG_CHECKING([for al.exe])
6510     find_winsdk
6511     if test -n "$winsdkbinsubdir" \
6512         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6513     then
6514         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6515     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6516         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6517     elif test -f "$winsdktest/Bin/al.exe"; then
6518         AL_PATH="$winsdktest/Bin"
6519     fi
6521     if test -z "$AL_PATH"; then
6522         find_al
6523         if test -f "$altest/bin/al.exe"; then
6524             AL_PATH="$altest/bin"
6525         elif test -f "$altest/al.exe"; then
6526             AL_PATH="$altest"
6527         fi
6528     fi
6529     if test ! -f "$AL_PATH/al.exe"; then
6530         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6531     else
6532         AC_MSG_RESULT([$AL_PATH/al.exe])
6533     fi
6535     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6537     dnl Check mscoree.lib / .NET Framework dir
6538     AC_MSG_CHECKING(.NET Framework)
6539     find_dotnetsdk46
6540     PathFormat "$frametest"
6541     frametest="$formatted_path"
6542     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6543         DOTNET_FRAMEWORK_HOME="$frametest"
6544     else
6545         find_winsdk
6546         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6547             DOTNET_FRAMEWORK_HOME="$winsdktest"
6548         fi
6549     fi
6550     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
6551         AC_MSG_ERROR([mscoree.lib not found])
6552     fi
6553     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6555     PathFormat "$MIDL_PATH"
6556     MIDL_PATH="$formatted_path"
6558     PathFormat "$AL_PATH"
6559     AL_PATH="$formatted_path"
6561     PathFormat "$DOTNET_FRAMEWORK_HOME"
6562     DOTNET_FRAMEWORK_HOME="$formatted_path"
6564     PathFormat "$CSC_PATH"
6565     CSC_PATH="$formatted_path"
6568 dnl ===================================================================
6569 dnl Testing for C++ compiler and version...
6570 dnl ===================================================================
6572 if test "$_os" != "WINNT"; then
6573     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6574     save_CXXFLAGS=$CXXFLAGS
6575     AC_PROG_CXX
6576     CXXFLAGS=$save_CXXFLAGS
6577     if test -z "$CXX_BASE"; then
6578         CXX_BASE=`first_arg_basename "$CXX"`
6579     fi
6582 dnl check for GNU C++ compiler version
6583 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6584     AC_MSG_CHECKING([the GNU C++ compiler version])
6586     _gpp_version=`$CXX -dumpversion`
6587     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6589     if test "$_gpp_majmin" -lt "700"; then
6590         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6591     else
6592         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6593     fi
6595     dnl see https://code.google.com/p/android/issues/detail?id=41770
6596         glibcxx_threads=no
6597         AC_LANG_PUSH([C++])
6598         AC_REQUIRE_CPP
6599         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6600         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6601             #include <bits/c++config.h>]],[[
6602             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6603             && !defined(_GLIBCXX__PTHREADS) \
6604             && !defined(_GLIBCXX_HAS_GTHREADS)
6605             choke me
6606             #endif
6607         ]])],[AC_MSG_RESULT([yes])
6608         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6609         AC_LANG_POP([C++])
6610         if test $glibcxx_threads = yes; then
6611             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6612         fi
6614 AC_SUBST(BOOST_CXXFLAGS)
6617 # prefx CXX with ccache if needed
6619 if test "$CCACHE" != ""; then
6620     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6621     AC_LANG_PUSH([C++])
6622     save_CXXFLAGS=$CXXFLAGS
6623     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6624     dnl an empty program will do, we're checking the compiler flags
6625     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6626                       [use_ccache=yes], [use_ccache=no])
6627     if test $use_ccache = yes; then
6628         AC_MSG_RESULT([yes])
6629     else
6630         CXX="$CCACHE $CXX"
6631         CXX_BASE="ccache $CXX_BASE"
6632         AC_MSG_RESULT([no])
6633     fi
6634     CXXFLAGS=$save_CXXFLAGS
6635     AC_LANG_POP([C++])
6638 dnl ===================================================================
6639 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6640 dnl ===================================================================
6642 if test "$_os" != "WINNT"; then
6643     AC_PROG_CXXCPP
6645     dnl Check whether there's a C pre-processor.
6646     AC_PROG_CPP
6650 dnl ===================================================================
6651 dnl Find integral type sizes and alignments
6652 dnl ===================================================================
6654 if test "$_os" != "WINNT"; then
6656     AC_CHECK_SIZEOF(long)
6657     AC_CHECK_SIZEOF(short)
6658     AC_CHECK_SIZEOF(int)
6659     AC_CHECK_SIZEOF(long long)
6660     AC_CHECK_SIZEOF(double)
6661     AC_CHECK_SIZEOF(void*)
6663     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6664     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6665     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6666     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6667     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6669     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6670     m4_pattern_allow([AC_CHECK_ALIGNOF])
6671     m4_ifdef([AC_CHECK_ALIGNOF],
6672         [
6673             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6674             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6675             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6676             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6677         ],
6678         [
6679             case "$_os-$host_cpu" in
6680             Linux-i686)
6681                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6682                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6683                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6684                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6685                 ;;
6686             Linux-x86_64)
6687                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6688                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6689                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6690                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6691                 ;;
6692             *)
6693                 if test -z "$ac_cv_alignof_short" -o \
6694                         -z "$ac_cv_alignof_int" -o \
6695                         -z "$ac_cv_alignof_long" -o \
6696                         -z "$ac_cv_alignof_double"; then
6697                    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.])
6698                 fi
6699                 ;;
6700             esac
6701         ])
6703     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6704     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6705     if test $ac_cv_sizeof_long -eq 8; then
6706         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6707     elif test $ac_cv_sizeof_double -eq 8; then
6708         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6709     else
6710         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6711     fi
6713     dnl Check for large file support
6714     AC_SYS_LARGEFILE
6715     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6716         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6717     fi
6718     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6719         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6720     fi
6721 else
6722     # Hardcode for MSVC
6723     SAL_TYPES_SIZEOFSHORT=2
6724     SAL_TYPES_SIZEOFINT=4
6725     SAL_TYPES_SIZEOFLONG=4
6726     SAL_TYPES_SIZEOFLONGLONG=8
6727     if test $WIN_HOST_BITS -eq 32; then
6728         SAL_TYPES_SIZEOFPOINTER=4
6729     else
6730         SAL_TYPES_SIZEOFPOINTER=8
6731     fi
6732     SAL_TYPES_ALIGNMENT2=2
6733     SAL_TYPES_ALIGNMENT4=4
6734     SAL_TYPES_ALIGNMENT8=8
6735     LFS_CFLAGS=''
6737 AC_SUBST(LFS_CFLAGS)
6739 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6740 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6741 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6742 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6743 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6744 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6745 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6746 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6748 dnl ===================================================================
6749 dnl Check whether to enable runtime optimizations
6750 dnl ===================================================================
6751 ENABLE_RUNTIME_OPTIMIZATIONS=
6752 AC_MSG_CHECKING([whether to enable runtime optimizations])
6753 if test -z "$enable_runtime_optimizations"; then
6754     for i in $CC; do
6755         case $i in
6756         -fsanitize=*)
6757             enable_runtime_optimizations=no
6758             break
6759             ;;
6760         esac
6761     done
6763 if test "$enable_runtime_optimizations" != no; then
6764     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6765     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6766     AC_MSG_RESULT([yes])
6767 else
6768     AC_MSG_RESULT([no])
6770 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6772 dnl ===================================================================
6773 dnl Check if valgrind headers are available
6774 dnl ===================================================================
6775 ENABLE_VALGRIND=
6776 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6777     prev_cppflags=$CPPFLAGS
6778     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6779     # or where does it come from?
6780     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6781     AC_CHECK_HEADER([valgrind/valgrind.h],
6782         [ENABLE_VALGRIND=TRUE])
6783     CPPFLAGS=$prev_cppflags
6785 AC_SUBST([ENABLE_VALGRIND])
6786 if test -z "$ENABLE_VALGRIND"; then
6787     if test "$with_valgrind" = yes; then
6788         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6789     fi
6790     VALGRIND_CFLAGS=
6792 AC_SUBST([VALGRIND_CFLAGS])
6795 dnl ===================================================================
6796 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6797 dnl ===================================================================
6799 # We need at least the sys/sdt.h include header.
6800 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6801 if test "$SDT_H_FOUND" = "TRUE"; then
6802     # Found sys/sdt.h header, now make sure the c++ compiler works.
6803     # Old g++ versions had problems with probes in constructors/destructors.
6804     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6805     AC_LANG_PUSH([C++])
6806     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6807     #include <sys/sdt.h>
6808     class ProbeClass
6809     {
6810     private:
6811       int& ref;
6812       const char *name;
6814     public:
6815       ProbeClass(int& v, const char *n) : ref(v), name(n)
6816       {
6817         DTRACE_PROBE2(_test_, cons, name, ref);
6818       }
6820       void method(int min)
6821       {
6822         DTRACE_PROBE3(_test_, meth, name, ref, min);
6823         ref -= min;
6824       }
6826       ~ProbeClass()
6827       {
6828         DTRACE_PROBE2(_test_, dest, name, ref);
6829       }
6830     };
6831     ]],[[
6832     int i = 64;
6833     DTRACE_PROBE1(_test_, call, i);
6834     ProbeClass inst = ProbeClass(i, "call");
6835     inst.method(24);
6836     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6837           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6838     AC_LANG_POP([C++])
6840 AC_CONFIG_HEADERS([config_host/config_probes.h])
6842 dnl ===================================================================
6843 dnl GCC features
6844 dnl ===================================================================
6845 HAVE_GCC_STACK_CLASH_PROTECTION=
6846 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6847     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6848     save_CFLAGS=$CFLAGS
6849     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6850     AC_LINK_IFELSE(
6851         [AC_LANG_PROGRAM(, [[return 0;]])],
6852         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6853         [AC_MSG_RESULT([no])])
6854     CFLAGS=$save_CFLAGS
6856     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6857     save_CFLAGS=$CFLAGS
6858     CFLAGS="$CFLAGS -Werror -mno-avx"
6859     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6860     CFLAGS=$save_CFLAGS
6861     if test "$HAVE_GCC_AVX" = "TRUE"; then
6862         AC_MSG_RESULT([yes])
6863     else
6864         AC_MSG_RESULT([no])
6865     fi
6867     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6868     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6869     int v = 0;
6870     if (__sync_add_and_fetch(&v, 1) != 1 ||
6871         __sync_sub_and_fetch(&v, 1) != 0)
6872         return 1;
6873     __sync_synchronize();
6874     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6875         v != 1)
6876         return 1;
6877     return 0;
6878 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6879     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6880         AC_MSG_RESULT([yes])
6881         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6882     else
6883         AC_MSG_RESULT([no])
6884     fi
6886     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6887     AC_LANG_PUSH([C++])
6888     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6889             #include <cstddef>
6890             #include <cxxabi.h>
6891             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6892         ])], [
6893             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6894             AC_MSG_RESULT([yes])
6895         ], [AC_MSG_RESULT([no])])
6896     AC_LANG_POP([C++])
6898     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6899     AC_LANG_PUSH([C++])
6900     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6901             #include <cstddef>
6902             #include <cxxabi.h>
6903             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6904         ])], [
6905             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6906             AC_MSG_RESULT([yes])
6907         ], [AC_MSG_RESULT([no])])
6908     AC_LANG_POP([C++])
6910     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6911     AC_LANG_PUSH([C++])
6912     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6913             #include <cxxabi.h>
6914             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6915         ])], [
6916             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6917             AC_MSG_RESULT([yes])
6918         ], [AC_MSG_RESULT([no])])
6919     AC_LANG_POP([C++])
6921     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6922     AC_LANG_PUSH([C++])
6923     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6924             #include <cstddef>
6925             #include <cxxabi.h>
6926             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6927         ])], [
6928             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6929             AC_MSG_RESULT([yes])
6930         ], [AC_MSG_RESULT([no])])
6931     AC_LANG_POP([C++])
6933     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6934     AC_LANG_PUSH([C++])
6935     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6936             #include <cstddef>
6937             #include <cxxabi.h>
6938             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6939         ])], [
6940             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6941             AC_MSG_RESULT([yes])
6942         ], [AC_MSG_RESULT([no])])
6943     AC_LANG_POP([C++])
6945     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6946     AC_LANG_PUSH([C++])
6947     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6948             #include <cxxabi.h>
6949             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6950         ])], [
6951             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6952             AC_MSG_RESULT([yes])
6953         ], [AC_MSG_RESULT([no])])
6954     AC_LANG_POP([C++])
6956     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6957     AC_LANG_PUSH([C++])
6958     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6959             #include <cxxabi.h>
6960             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6961         ])], [
6962             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6963             AC_MSG_RESULT([yes])
6964         ], [AC_MSG_RESULT([no])])
6965     AC_LANG_POP([C++])
6967     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6968     AC_LANG_PUSH([C++])
6969     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6970             #include <cxxabi.h>
6971             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6972         ])], [
6973             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6974             AC_MSG_RESULT([yes])
6975         ], [AC_MSG_RESULT([no])])
6976     AC_LANG_POP([C++])
6978     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6979     AC_LANG_PUSH([C++])
6980     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6981             #include <cstddef>
6982             #include <cxxabi.h>
6983             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6984         ])], [
6985             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6986             AC_MSG_RESULT([yes])
6987         ], [AC_MSG_RESULT([no])])
6988     AC_LANG_POP([C++])
6990     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6991     AC_LANG_PUSH([C++])
6992     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6993             #include <cstddef>
6994             #include <cxxabi.h>
6995             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6996         ])], [
6997             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6998             AC_MSG_RESULT([yes])
6999         ], [AC_MSG_RESULT([no])])
7000     AC_LANG_POP([C++])
7003 AC_SUBST(HAVE_GCC_AVX)
7004 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7005 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7007 dnl ===================================================================
7008 dnl Identify the C++ library
7009 dnl ===================================================================
7011 AC_MSG_CHECKING([what the C++ library is])
7012 AC_LANG_PUSH([C++])
7013 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7014 #include <utility>
7015 #ifndef __GLIBCXX__
7016 foo bar
7017 #endif
7018 ]])],
7019     [CPP_LIBRARY=GLIBCXX
7020      cpp_library_name="GNU libstdc++"
7021     ],
7022     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7023 #include <utility>
7024 #ifndef _LIBCPP_VERSION
7025 foo bar
7026 #endif
7027 ]])],
7028     [CPP_LIBRARY=LIBCPP
7029      cpp_library_name="LLVM libc++"
7030      AC_DEFINE([HAVE_LIBCXX])
7031     ],
7032     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7033 #include <utility>
7034 #ifndef _MSC_VER
7035 foo bar
7036 #endif
7037 ]])],
7038     [CPP_LIBRARY=MSVCRT
7039      cpp_library_name="Microsoft"
7040     ],
7041     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7042 AC_MSG_RESULT([$cpp_library_name])
7043 AC_LANG_POP([C++])
7045 dnl ===================================================================
7046 dnl Check for gperf
7047 dnl ===================================================================
7048 AC_PATH_PROG(GPERF, gperf)
7049 if test -z "$GPERF"; then
7050     AC_MSG_ERROR([gperf not found but needed. Install it.])
7052 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7053     GPERF=`cygpath -m $GPERF`
7055 AC_MSG_CHECKING([whether gperf is new enough])
7056 my_gperf_ver1=$($GPERF --version | head -n 1)
7057 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7058 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7059 if test "$my_gperf_ver3" -ge 301; then
7060     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7061 else
7062     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7064 AC_SUBST(GPERF)
7066 dnl ===================================================================
7067 dnl Check for system libcmis
7068 dnl ===================================================================
7069 # libcmis requires curl and we can't build curl for iOS
7070 if test $_os != iOS; then
7071     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7072     ENABLE_LIBCMIS=TRUE
7073 else
7074     ENABLE_LIBCMIS=
7076 AC_SUBST(ENABLE_LIBCMIS)
7078 dnl ===================================================================
7079 dnl C++11
7080 dnl ===================================================================
7082 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7083 CXXFLAGS_CXX11=
7084 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7085     if test "$with_latest_c__" = yes; then
7086         CXXFLAGS_CXX11=-std:c++latest
7087     else
7088         CXXFLAGS_CXX11=-std:c++17
7089     fi
7090     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7091 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7092     my_flags='-std=c++17 -std=c++1z'
7093     if test "$with_latest_c__" = yes; then
7094         my_flags="-std=c++20 -std=c++2a $my_flags"
7095     fi
7096     for flag in $my_flags; do
7097         if test "$COM" = MSC; then
7098             flag="-Xclang $flag"
7099         fi
7100         save_CXXFLAGS=$CXXFLAGS
7101         CXXFLAGS="$CXXFLAGS $flag -Werror"
7102         if test "$SYSTEM_LIBCMIS" = TRUE; then
7103             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7104         fi
7105         AC_LANG_PUSH([C++])
7106         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7107             #include <algorithm>
7108             #include <functional>
7109             #include <vector>
7111             #if defined SYSTEM_LIBCMIS
7112             // See ucb/source/ucp/cmis/auth_provider.hxx:
7113             #if !defined __clang__
7114             #pragma GCC diagnostic push
7115             #pragma GCC diagnostic ignored "-Wdeprecated"
7116             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7117             #endif
7118             #include <libcmis/libcmis.hxx>
7119             #if !defined __clang__
7120             #pragma GCC diagnostic pop
7121             #endif
7122             #endif
7124             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7125                 std::sort(v.begin(), v.end(), fn);
7126             }
7127             ]])],[CXXFLAGS_CXX11=$flag])
7128         AC_LANG_POP([C++])
7129         CXXFLAGS=$save_CXXFLAGS
7130         if test -n "$CXXFLAGS_CXX11"; then
7131             break
7132         fi
7133     done
7135 if test -n "$CXXFLAGS_CXX11"; then
7136     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7137 else
7138     AC_MSG_ERROR(no)
7140 AC_SUBST(CXXFLAGS_CXX11)
7142 if test "$GCC" = "yes"; then
7143     save_CXXFLAGS=$CXXFLAGS
7144     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7145     CHECK_L_ATOMIC
7146     CXXFLAGS=$save_CXXFLAGS
7147     AC_SUBST(ATOMIC_LIB)
7150 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7151 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7152 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7153 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7154 dnl again towards 4.7.2:
7155 if test $CPP_LIBRARY = GLIBCXX; then
7156     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7157     AC_LANG_PUSH([C++])
7158     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7159 #include <list>
7160 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7161     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7162     //   GCC 4.7.0: 20120322
7163     //   GCC 4.7.1: 20120614
7164     // and using a range check is not possible as the mapping between
7165     // __GLIBCXX__ values and GCC versions is not monotonic
7166 /* ok */
7167 #else
7168 abi broken
7169 #endif
7170         ]])], [AC_MSG_RESULT(no, ok)],
7171         [AC_MSG_ERROR(yes)])
7172     AC_LANG_POP([C++])
7175 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7176 save_CXXFLAGS=$CXXFLAGS
7177 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7178 AC_LANG_PUSH([C++])
7180 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7181 #include <stddef.h>
7183 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7185 namespace
7187         struct b
7188         {
7189                 int i;
7190                 int j;
7191         };
7193 ]], [[
7194 struct a
7196         int i;
7197         int j;
7199 a thinga[]={{0,0}, {1,1}};
7200 b thingb[]={{0,0}, {1,1}};
7201 size_t i = sizeof(sal_n_array_size(thinga));
7202 size_t j = sizeof(sal_n_array_size(thingb));
7203 return !(i != 0 && j != 0);
7205     ], [ AC_MSG_RESULT(yes) ],
7206     [ AC_MSG_ERROR(no)])
7207 AC_LANG_POP([C++])
7208 CXXFLAGS=$save_CXXFLAGS
7210 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7211 if test "$GCC" = yes; then
7212     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7213     AC_LANG_PUSH([C++])
7214     save_CXXFLAGS=$CXXFLAGS
7215     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7216     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7217     CXXFLAGS=$save_CXXFLAGS
7218     AC_LANG_POP([C++])
7219     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7220         AC_MSG_RESULT([yes])
7221     else
7222         AC_MSG_RESULT([no])
7223     fi
7225 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7227 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7228 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7229 dnl from consteval constructor initializing const variable":
7230 AC_LANG_PUSH([C++])
7231 save_CXXFLAGS=$CXXFLAGS
7232 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7233 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7234         struct S {
7235             consteval S() { i = 1; }
7236             int i = 0;
7237         };
7238         S const s;
7239     ], [
7240         return (s.i == 1) ? 0 : 1;
7241     ])], [
7242         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7243         AC_MSG_RESULT([yes])
7244     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7245 CXXFLAGS=$save_CXXFLAGS
7246 AC_LANG_POP([C++])
7248 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7249 AC_LANG_PUSH([C++])
7250 save_CXXFLAGS=$CXXFLAGS
7251 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7252 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7253         #include <algorithm>
7254         #include <initializer_list>
7255         #include <vector>
7256         template<typename T> class S {
7257         private:
7258             std::vector<T> v_;
7259         public:
7260             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7261         };
7262         constinit S<int> s{3, 2, 1};
7263     ])], [
7264         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7265         AC_MSG_RESULT([yes])
7266     ], [AC_MSG_RESULT([no])])
7267 CXXFLAGS=$save_CXXFLAGS
7268 AC_LANG_POP([C++])
7270 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7271 AC_LANG_PUSH([C++])
7272 save_CXXFLAGS=$CXXFLAGS
7273 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7274 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7275         #include <span>
7276         #include <type_traits>
7277         // Don't check size_type directly, as it was called index_type before P1872R0:
7278         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7279     ])], [
7280         AC_DEFINE([HAVE_CPP_SPAN],[1])
7281         AC_MSG_RESULT([yes])
7282     ], [AC_MSG_RESULT([no])])
7283 CXXFLAGS=$save_CXXFLAGS
7284 AC_LANG_POP([C++])
7286 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7287 AC_LANG_PUSH([C++])
7288 save_CXXFLAGS=$CXXFLAGS
7289 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7290 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7291         struct S1 { S1(S1 &&); };
7292         struct S2: S1 {};
7293         S1 f(S2 s) { return s; }
7294     ])], [
7295         AC_DEFINE([HAVE_P1155R3],[1])
7296         AC_MSG_RESULT([yes])
7297     ], [AC_MSG_RESULT([no])])
7298 CXXFLAGS=$save_CXXFLAGS
7299 AC_LANG_POP([C++])
7301 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7302 dnl which is included in -Wextra anyway):
7303 HAVE_WDEPRECATED_COPY_DTOR=
7304 if test "$GCC" = yes; then
7305     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7306     AC_LANG_PUSH([C++])
7307     save_CXXFLAGS=$CXXFLAGS
7308     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7309     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7310             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7311             AC_MSG_RESULT([yes])
7312         ], [AC_MSG_RESULT([no])])
7313     CXXFLAGS=$save_CXXFLAGS
7314     AC_LANG_POP([C++])
7316 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7318 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7319 dnl uninitialized warning for code like
7321 dnl   OString f();
7322 dnl   boost::optional<OString> * g(bool b) {
7323 dnl       boost::optional<OString> o;
7324 dnl       if (b) o = f();
7325 dnl       return new boost::optional<OString>(o);
7326 dnl   }
7328 dnl (as is e.g. present, in a slightly more elaborate form, in
7329 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7330 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7331 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7332 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7333     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7334     AC_LANG_PUSH([C++])
7335     save_CXXFLAGS=$CXXFLAGS
7336     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7337     if test "$ENABLE_OPTIMIZED" = TRUE; then
7338         CXXFLAGS="$CXXFLAGS -O2"
7339     else
7340         CXXFLAGS="$CXXFLAGS -O0"
7341     fi
7342     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7343             #include <new>
7344             void f1(int);
7345             struct S1 {
7346                 ~S1() { f1(n); }
7347                 int n = 0;
7348             };
7349             struct S2 {
7350                 S2() {}
7351                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7352                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7353                 void set(S1 s) {
7354                     new (stg) S1(s);
7355                     init = true;
7356                 }
7357                 bool init = false;
7358                 char stg[sizeof (S1)];
7359             } ;
7360             S1 f2();
7361             S2 * f3(bool b) {
7362                 S2 o;
7363                 if (b) o.set(f2());
7364                 return new S2(o);
7365             }
7366         ]])], [AC_MSG_RESULT([no])], [
7367             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7368             AC_MSG_RESULT([yes])
7369         ])
7370     CXXFLAGS=$save_CXXFLAGS
7371     AC_LANG_POP([C++])
7373 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7375 dnl ===================================================================
7376 dnl CPU Intrinsics support - SSE, AVX
7377 dnl ===================================================================
7379 CXXFLAGS_INTRINSICS_SSE2=
7380 CXXFLAGS_INTRINSICS_SSSE3=
7381 CXXFLAGS_INTRINSICS_SSE41=
7382 CXXFLAGS_INTRINSICS_SSE42=
7383 CXXFLAGS_INTRINSICS_AVX=
7384 CXXFLAGS_INTRINSICS_AVX2=
7385 CXXFLAGS_INTRINSICS_AVX512=
7386 CXXFLAGS_INTRINSICS_F16C=
7387 CXXFLAGS_INTRINSICS_FMA=
7389 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7390     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7391     flag_sse2=-msse2
7392     flag_ssse3=-mssse3
7393     flag_sse41=-msse4.1
7394     flag_sse42=-msse4.2
7395     flag_avx=-mavx
7396     flag_avx2=-mavx2
7397     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7398     flag_f16c=-mf16c
7399     flag_fma=-mfma
7400 else
7401     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7402     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7403     # SSE2 seems to be SSE2+.
7404     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7405     # is not empty (and can be tested in gbuild).
7406     flag_sse2=-arch:SSE2
7407     flag_ssse3=-arch:SSE2
7408     flag_sse41=-arch:SSE2
7409     flag_sse42=-arch:SSE2
7410     flag_avx=-arch:AVX
7411     flag_avx2=-arch:AVX2
7412     flag_avx512=-arch:AVX512
7413     # These are part of -arch:AVX2
7414     flag_f16c=-arch:AVX2
7415     flag_fma=-arch:AVX2
7418 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7419 AC_LANG_PUSH([C++])
7420 save_CXXFLAGS=$CXXFLAGS
7421 CXXFLAGS="$CXXFLAGS $flag_sse2"
7422 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7423     #include <emmintrin.h>
7424     int main () {
7425         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7426         c = _mm_xor_si128 (a, b);
7427         return 0;
7428     }
7429     ])],
7430     [can_compile_sse2=yes],
7431     [can_compile_sse2=no])
7432 AC_LANG_POP([C++])
7433 CXXFLAGS=$save_CXXFLAGS
7434 AC_MSG_RESULT([${can_compile_sse2}])
7435 if test "${can_compile_sse2}" = "yes" ; then
7436     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7439 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7440 AC_LANG_PUSH([C++])
7441 save_CXXFLAGS=$CXXFLAGS
7442 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7443 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7444     #include <tmmintrin.h>
7445     int main () {
7446         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7447         c = _mm_maddubs_epi16 (a, b);
7448         return 0;
7449     }
7450     ])],
7451     [can_compile_ssse3=yes],
7452     [can_compile_ssse3=no])
7453 AC_LANG_POP([C++])
7454 CXXFLAGS=$save_CXXFLAGS
7455 AC_MSG_RESULT([${can_compile_ssse3}])
7456 if test "${can_compile_ssse3}" = "yes" ; then
7457     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7460 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7461 AC_LANG_PUSH([C++])
7462 save_CXXFLAGS=$CXXFLAGS
7463 CXXFLAGS="$CXXFLAGS $flag_sse41"
7464 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7465     #include <smmintrin.h>
7466     int main () {
7467         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7468         c = _mm_cmpeq_epi64 (a, b);
7469         return 0;
7470     }
7471     ])],
7472     [can_compile_sse41=yes],
7473     [can_compile_sse41=no])
7474 AC_LANG_POP([C++])
7475 CXXFLAGS=$save_CXXFLAGS
7476 AC_MSG_RESULT([${can_compile_sse41}])
7477 if test "${can_compile_sse41}" = "yes" ; then
7478     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7481 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7482 AC_LANG_PUSH([C++])
7483 save_CXXFLAGS=$CXXFLAGS
7484 CXXFLAGS="$CXXFLAGS $flag_sse42"
7485 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7486     #include <nmmintrin.h>
7487     int main () {
7488         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7489         c = _mm_cmpgt_epi64 (a, b);
7490         return 0;
7491     }
7492     ])],
7493     [can_compile_sse42=yes],
7494     [can_compile_sse42=no])
7495 AC_LANG_POP([C++])
7496 CXXFLAGS=$save_CXXFLAGS
7497 AC_MSG_RESULT([${can_compile_sse42}])
7498 if test "${can_compile_sse42}" = "yes" ; then
7499     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7502 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7503 AC_LANG_PUSH([C++])
7504 save_CXXFLAGS=$CXXFLAGS
7505 CXXFLAGS="$CXXFLAGS $flag_avx"
7506 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7507     #include <immintrin.h>
7508     int main () {
7509         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7510         c = _mm256_xor_ps(a, b);
7511         return 0;
7512     }
7513     ])],
7514     [can_compile_avx=yes],
7515     [can_compile_avx=no])
7516 AC_LANG_POP([C++])
7517 CXXFLAGS=$save_CXXFLAGS
7518 AC_MSG_RESULT([${can_compile_avx}])
7519 if test "${can_compile_avx}" = "yes" ; then
7520     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7523 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7524 AC_LANG_PUSH([C++])
7525 save_CXXFLAGS=$CXXFLAGS
7526 CXXFLAGS="$CXXFLAGS $flag_avx2"
7527 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7528     #include <immintrin.h>
7529     int main () {
7530         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7531         c = _mm256_maddubs_epi16(a, b);
7532         return 0;
7533     }
7534     ])],
7535     [can_compile_avx2=yes],
7536     [can_compile_avx2=no])
7537 AC_LANG_POP([C++])
7538 CXXFLAGS=$save_CXXFLAGS
7539 AC_MSG_RESULT([${can_compile_avx2}])
7540 if test "${can_compile_avx2}" = "yes" ; then
7541     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7544 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7545 AC_LANG_PUSH([C++])
7546 save_CXXFLAGS=$CXXFLAGS
7547 CXXFLAGS="$CXXFLAGS $flag_avx512"
7548 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7549     #include <immintrin.h>
7550     int main () {
7551         __m512i a = _mm512_loadu_si512(0);
7552         return 0;
7553     }
7554     ])],
7555     [can_compile_avx512=yes],
7556     [can_compile_avx512=no])
7557 AC_LANG_POP([C++])
7558 CXXFLAGS=$save_CXXFLAGS
7559 AC_MSG_RESULT([${can_compile_avx512}])
7560 if test "${can_compile_avx512}" = "yes" ; then
7561     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7564 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7565 AC_LANG_PUSH([C++])
7566 save_CXXFLAGS=$CXXFLAGS
7567 CXXFLAGS="$CXXFLAGS $flag_f16c"
7568 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7569     #include <immintrin.h>
7570     int main () {
7571         __m128i a = _mm_set1_epi32 (0);
7572         __m128 c;
7573         c = _mm_cvtph_ps(a);
7574         return 0;
7575     }
7576     ])],
7577     [can_compile_f16c=yes],
7578     [can_compile_f16c=no])
7579 AC_LANG_POP([C++])
7580 CXXFLAGS=$save_CXXFLAGS
7581 AC_MSG_RESULT([${can_compile_f16c}])
7582 if test "${can_compile_f16c}" = "yes" ; then
7583     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7586 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7587 AC_LANG_PUSH([C++])
7588 save_CXXFLAGS=$CXXFLAGS
7589 CXXFLAGS="$CXXFLAGS $flag_fma"
7590 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7591     #include <immintrin.h>
7592     int main () {
7593         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7594         d = _mm256_fmadd_ps(a, b, c);
7595         return 0;
7596     }
7597     ])],
7598     [can_compile_fma=yes],
7599     [can_compile_fma=no])
7600 AC_LANG_POP([C++])
7601 CXXFLAGS=$save_CXXFLAGS
7602 AC_MSG_RESULT([${can_compile_fma}])
7603 if test "${can_compile_fma}" = "yes" ; then
7604     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7607 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7608 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7609 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7610 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7611 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7612 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7613 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7614 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7615 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7617 dnl ===================================================================
7618 dnl system stl sanity tests
7619 dnl ===================================================================
7620 if test "$_os" != "WINNT"; then
7622     AC_LANG_PUSH([C++])
7624     save_CPPFLAGS="$CPPFLAGS"
7625     if test -n "$MACOSX_SDK_PATH"; then
7626         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7627     fi
7629     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7630     # only.
7631     if test "$CPP_LIBRARY" = GLIBCXX; then
7632         dnl gcc#19664, gcc#22482, rhbz#162935
7633         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7634         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7635         AC_MSG_RESULT([$stlvisok])
7636         if test "$stlvisok" = "no"; then
7637             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7638         fi
7639     fi
7641     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7642     # when we don't make any dynamic libraries?
7643     if test "$DISABLE_DYNLOADING" = ""; then
7644         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7645         cat > conftestlib1.cc <<_ACEOF
7646 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7647 struct S2: S1<int> { virtual ~S2(); };
7648 S2::~S2() {}
7649 _ACEOF
7650         cat > conftestlib2.cc <<_ACEOF
7651 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7652 struct S2: S1<int> { virtual ~S2(); };
7653 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7654 _ACEOF
7655         gccvisinlineshiddenok=yes
7656         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7657             gccvisinlineshiddenok=no
7658         else
7659             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7660             dnl known to not work with -z defs (unsetting which makes the test
7661             dnl moot, though):
7662             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7663             if test "$COM_IS_CLANG" = TRUE; then
7664                 for i in $CXX $CXXFLAGS; do
7665                     case $i in
7666                     -fsanitize=*)
7667                         my_linkflagsnoundefs=
7668                         break
7669                         ;;
7670                     esac
7671                 done
7672             fi
7673             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7674                 gccvisinlineshiddenok=no
7675             fi
7676         fi
7678         rm -fr libconftest*
7679         AC_MSG_RESULT([$gccvisinlineshiddenok])
7680         if test "$gccvisinlineshiddenok" = "no"; then
7681             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7682         fi
7683     fi
7685    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7686     cat >visibility.cxx <<_ACEOF
7687 #pragma GCC visibility push(hidden)
7688 struct __attribute__ ((visibility ("default"))) TestStruct {
7689   static void Init();
7691 __attribute__ ((visibility ("default"))) void TestFunc() {
7692   TestStruct::Init();
7694 _ACEOF
7695     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7696         gccvisbroken=yes
7697     else
7698         case "$host_cpu" in
7699         i?86|x86_64)
7700             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7701                 gccvisbroken=no
7702             else
7703                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7704                     gccvisbroken=no
7705                 else
7706                     gccvisbroken=yes
7707                 fi
7708             fi
7709             ;;
7710         *)
7711             gccvisbroken=no
7712             ;;
7713         esac
7714     fi
7715     rm -f visibility.s visibility.cxx
7717     AC_MSG_RESULT([$gccvisbroken])
7718     if test "$gccvisbroken" = "yes"; then
7719         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7720     fi
7722     CPPFLAGS="$save_CPPFLAGS"
7724     AC_LANG_POP([C++])
7727 dnl ===================================================================
7728 dnl  Clang++ tests
7729 dnl ===================================================================
7731 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7732 if test "$GCC" = "yes"; then
7733     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7734     AC_LANG_PUSH([C++])
7735     save_CXXFLAGS=$CXXFLAGS
7736     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7737     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7738     CXXFLAGS=$save_CXXFLAGS
7739     AC_LANG_POP([C++])
7740     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7741         AC_MSG_RESULT([yes])
7742     else
7743         AC_MSG_RESULT([no])
7744     fi
7746 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7748 dnl ===================================================================
7749 dnl Compiler plugins
7750 dnl ===================================================================
7752 COMPILER_PLUGINS=
7753 # currently only Clang
7755 if test "$COM_IS_CLANG" != "TRUE"; then
7756     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7757         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7758         enable_compiler_plugins=no
7759     fi
7762 COMPILER_PLUGINS_COM_IS_CLANG=
7763 if test "$COM_IS_CLANG" = "TRUE"; then
7764     if test -n "$enable_compiler_plugins"; then
7765         compiler_plugins="$enable_compiler_plugins"
7766     elif test -n "$ENABLE_DBGUTIL"; then
7767         compiler_plugins=test
7768     else
7769         compiler_plugins=no
7770     fi
7771     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7772         if test "$CLANGVER" -lt 50002; then
7773             if test "$compiler_plugins" = yes; then
7774                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7775             else
7776                 compiler_plugins=no
7777             fi
7778         fi
7779     fi
7780     if test "$compiler_plugins" != "no"; then
7781         dnl The prefix where Clang resides, override to where Clang resides if
7782         dnl using a source build:
7783         if test -z "$CLANGDIR"; then
7784             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7785         fi
7786         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7787         if test -z "$COMPILER_PLUGINS_CXX"; then
7788             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7789         fi
7790         clangbindir=$CLANGDIR/bin
7791         if test "$build_os" = "cygwin"; then
7792             clangbindir=$(cygpath -u "$clangbindir")
7793         fi
7794         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7795         if test -n "$LLVM_CONFIG"; then
7796             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7797             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7798             if test -z "$CLANGLIBDIR"; then
7799                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7800             fi
7801             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7802             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7803             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7804             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7805                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7806             fi
7807             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7808             clangobjdir=$($LLVM_CONFIG --obj-root)
7809             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7810                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7811             fi
7812         fi
7813         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7814         AC_LANG_PUSH([C++])
7815         save_CXX=$CXX
7816         save_CXXCPP=$CXXCPP
7817         save_CPPFLAGS=$CPPFLAGS
7818         save_CXXFLAGS=$CXXFLAGS
7819         save_LDFLAGS=$LDFLAGS
7820         save_LIBS=$LIBS
7821         CXX=$COMPILER_PLUGINS_CXX
7822         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7823         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7824         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7825         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7826             [COMPILER_PLUGINS=TRUE],
7827             [
7828             if test "$compiler_plugins" = "yes"; then
7829                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7830             else
7831                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7832                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7833             fi
7834             ])
7835         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7836         dnl comment in compilerplugins/Makefile-clang.mk:
7837         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7838             LDFLAGS=""
7839             AC_MSG_CHECKING([for clang libraries to use])
7840             if test -z "$CLANGTOOLLIBS"; then
7841                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7842  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7843                 AC_LINK_IFELSE([
7844                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7845                         [[ clang::FullSourceLoc().dump(); ]])
7846                 ],[CLANGTOOLLIBS="$LIBS"],[])
7847             fi
7848             if test -z "$CLANGTOOLLIBS"; then
7849                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7850                 AC_LINK_IFELSE([
7851                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7852                         [[ clang::FullSourceLoc().dump(); ]])
7853                 ],[CLANGTOOLLIBS="$LIBS"],[])
7854             fi
7855             AC_MSG_RESULT([$CLANGTOOLLIBS])
7856             if test -z "$CLANGTOOLLIBS"; then
7857                 if test "$compiler_plugins" = "yes"; then
7858                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7859                 else
7860                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7861                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7862                 fi
7863                 COMPILER_PLUGINS=
7864             fi
7865             if test -n "$COMPILER_PLUGINS"; then
7866                 if test -z "$CLANGSYSINCLUDE"; then
7867                     if test -n "$LLVM_CONFIG"; then
7868                         # Path to the clang system headers (no idea if there's a better way to get it).
7869                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7870                     fi
7871                 fi
7872             fi
7873         fi
7874         CXX=$save_CXX
7875         CXXCPP=$save_CXXCPP
7876         CPPFLAGS=$save_CPPFLAGS
7877         CXXFLAGS=$save_CXXFLAGS
7878         LDFLAGS=$save_LDFLAGS
7879         LIBS="$save_LIBS"
7880         AC_LANG_POP([C++])
7882         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7883         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7884             #ifndef __clang__
7885             you lose
7886             #endif
7887             int foo=42;
7888             ]])],
7889             [AC_MSG_RESULT([yes])
7890              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7891             [AC_MSG_RESULT([no])])
7892         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7893     fi
7894 else
7895     if test "$enable_compiler_plugins" = "yes"; then
7896         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7897     fi
7899 COMPILER_PLUGINS_ANALYZER_PCH=
7900 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7901     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7903 AC_SUBST(COMPILER_PLUGINS)
7904 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7905 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7906 AC_SUBST(COMPILER_PLUGINS_CXX)
7907 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7908 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7909 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7910 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7911 AC_SUBST(CLANGDIR)
7912 AC_SUBST(CLANGLIBDIR)
7913 AC_SUBST(CLANGTOOLLIBS)
7914 AC_SUBST(CLANGSYSINCLUDE)
7916 # Plugin to help linker.
7917 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7918 # This makes --enable-lto build with clang work.
7919 AC_SUBST(LD_PLUGIN)
7921 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7922 AC_SUBST(HAVE_POSIX_FALLOCATE)
7924 JITC_PROCESSOR_TYPE=""
7925 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7926     # IBMs JDK needs this...
7927     JITC_PROCESSOR_TYPE=6
7928     export JITC_PROCESSOR_TYPE
7930 AC_SUBST([JITC_PROCESSOR_TYPE])
7932 # Misc Windows Stuff
7933 AC_ARG_WITH(ucrt-dir,
7934     AS_HELP_STRING([--with-ucrt-dir],
7935         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7936         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7937         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7938             Windows6.1-KB2999226-x64.msu
7939             Windows6.1-KB2999226-x86.msu
7940             Windows8.1-KB2999226-x64.msu
7941             Windows8.1-KB2999226-x86.msu
7942             Windows8-RT-KB2999226-x64.msu
7943             Windows8-RT-KB2999226-x86.msu
7944         A zip archive including those files is available from Microsoft site:
7945         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7948 UCRT_REDISTDIR="$with_ucrt_dir"
7949 if test $_os = "WINNT"; then
7950     find_msvc_x64_dlls
7951     for i in $PKGFORMAT; do
7952         if test "$i" = msi; then
7953             find_msms
7954             break
7955         fi
7956     done
7957     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7958     MSVC_DLLS="$msvcdlls"
7959     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7960     # MSVC 15.3 changed it to VC141
7961     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7962         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7963     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7964         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7965     else
7966         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7967     fi
7969     if test "$UCRT_REDISTDIR" = "no"; then
7970         dnl explicitly disabled
7971         UCRT_REDISTDIR=""
7972     else
7973         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7974                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7975                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7976                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7977                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7978                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7979             UCRT_REDISTDIR=""
7980             if test -n "$PKGFORMAT"; then
7981                for i in $PKGFORMAT; do
7982                    case "$i" in
7983                    msi)
7984                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7985                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7986                        ;;
7987                    esac
7988                done
7989             fi
7990         fi
7991     fi
7994 AC_SUBST(UCRT_REDISTDIR)
7995 AC_SUBST(MSVC_DLL_PATH)
7996 AC_SUBST(MSVC_DLLS)
7997 AC_SUBST(MSM_PATH)
7999 dnl ===================================================================
8000 dnl Checks for Java
8001 dnl ===================================================================
8002 if test "$ENABLE_JAVA" != ""; then
8004     # Windows-specific tests
8005     if test "$build_os" = "cygwin"; then
8006         if test -z "$with_jdk_home"; then
8007             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8008             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8009             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8010             if test -n "$regvalue"; then
8011                 ver=$regvalue
8012                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8013                 reg_jdk_home=$regvalue
8014             fi
8016             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
8017                 with_jdk_home="$reg_jdk_home"
8018                 howfound="found automatically"
8019             else
8020                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8021             fi
8022         else
8023             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8024             howfound="you passed"
8025         fi
8026     fi
8028     # 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.
8029     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8030     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8031         with_jdk_home=`/usr/libexec/java_home`
8032     fi
8034     JAVA_HOME=; export JAVA_HOME
8035     if test -z "$with_jdk_home"; then
8036         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8037     else
8038         _java_path="$with_jdk_home/bin/$with_java"
8039         dnl Check if there is a Java interpreter at all.
8040         if test -x "$_java_path"; then
8041             JAVAINTERPRETER=$_java_path
8042         else
8043             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8044         fi
8045     fi
8047     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8048     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8049     dnl loaded by java to run JunitTests:
8050     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8051         shortjdkhome=`cygpath -d "$with_jdk_home"`
8052         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
8053             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8054             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8055         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
8056             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8057             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8058         fi
8060         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8061             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8062         fi
8063         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8064     elif test "$cross_compiling" != "yes"; then
8065         case $CPUNAME in
8066             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8067                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8068                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8069                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8070                 fi
8071                 ;;
8072             *) # assumption: everything else 32-bit
8073                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8074                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8075                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8076                 fi
8077                 ;;
8078         esac
8079     fi
8082 dnl ===================================================================
8083 dnl Checks for JDK.
8084 dnl ===================================================================
8086 # Whether all the complexity here actually is needed any more or not, no idea.
8088 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8089     _gij_longver=0
8090     AC_MSG_CHECKING([the installed JDK])
8091     if test -n "$JAVAINTERPRETER"; then
8092         dnl java -version sends output to stderr!
8093         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8094             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8095         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8096             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8097         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8098             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8099         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8100             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8101         else
8102             JDK=sun
8104             dnl Sun JDK specific tests
8105             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8106             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8108             if test "$_jdk_ver" -lt 10900; then
8109                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8110             fi
8111             if test "$_jdk_ver" -gt 10900; then
8112                 JAVA_CLASSPATH_NOT_SET=TRUE
8113             fi
8115             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8116             if test "$_os" = "WINNT"; then
8117                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8118             fi
8119             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8121             # set to limit VM usage for JunitTests
8122             JAVAIFLAGS=-Xmx64M
8123             # set to limit VM usage for javac
8124             JAVACFLAGS=-J-Xmx128M
8125         fi
8126     else
8127         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8128     fi
8129 else
8130     if test -z "$ENABLE_JAVA"; then
8131         dnl Java disabled
8132         JAVA_HOME=
8133         export JAVA_HOME
8134     elif test "$cross_compiling" = "yes"; then
8135         # Just assume compatibility of build and host JDK
8136         JDK=$JDK_FOR_BUILD
8137         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8138     fi
8141 dnl ===================================================================
8142 dnl Checks for javac
8143 dnl ===================================================================
8144 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8145     javacompiler="javac"
8146     : ${JAVA_SOURCE_VER=8}
8147     : ${JAVA_TARGET_VER=8}
8148     if test -z "$with_jdk_home"; then
8149         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8150     else
8151         _javac_path="$with_jdk_home/bin/$javacompiler"
8152         dnl Check if there is a Java compiler at all.
8153         if test -x "$_javac_path"; then
8154             JAVACOMPILER=$_javac_path
8155         fi
8156     fi
8157     if test -z "$JAVACOMPILER"; then
8158         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8159     fi
8160     if test "$build_os" = "cygwin"; then
8161         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8162             JAVACOMPILER="${JAVACOMPILER}.exe"
8163         fi
8164         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8165     fi
8168 dnl ===================================================================
8169 dnl Checks for javadoc
8170 dnl ===================================================================
8171 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8172     if test -z "$with_jdk_home"; then
8173         AC_PATH_PROG(JAVADOC, javadoc)
8174     else
8175         _javadoc_path="$with_jdk_home/bin/javadoc"
8176         dnl Check if there is a javadoc at all.
8177         if test -x "$_javadoc_path"; then
8178             JAVADOC=$_javadoc_path
8179         else
8180             AC_PATH_PROG(JAVADOC, javadoc)
8181         fi
8182     fi
8183     if test -z "$JAVADOC"; then
8184         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8185     fi
8186     if test "$build_os" = "cygwin"; then
8187         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8188             JAVADOC="${JAVADOC}.exe"
8189         fi
8190         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8191     fi
8193     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8194     JAVADOCISGJDOC="yes"
8195     fi
8197 AC_SUBST(JAVADOC)
8198 AC_SUBST(JAVADOCISGJDOC)
8200 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8201     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8202     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8203         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8204            # try to recover first by looking whether we have an alternative
8205            # system as in Debian or newer SuSEs where following /usr/bin/javac
8206            # over /etc/alternatives/javac leads to the right bindir where we
8207            # just need to strip a bit away to get a valid JAVA_HOME
8208            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8209         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8210             # maybe only one level of symlink (e.g. on Mac)
8211             JAVA_HOME=$(readlink $JAVACOMPILER)
8212             if test "$(dirname $JAVA_HOME)" = "."; then
8213                 # we've got no path to trim back
8214                 JAVA_HOME=""
8215             fi
8216         else
8217             # else warn
8218             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8219             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8220             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8221             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8222         fi
8223         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8224         if test "$JAVA_HOME" != "/usr"; then
8225             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8226                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8227                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8228                 dnl Tiger already returns a JDK path...
8229                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8230             else
8231                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8232                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8233                 dnl that checks which version to run
8234                 if test -f "$JAVA_HOME"; then
8235                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8236                 fi
8237             fi
8238         fi
8239     fi
8240     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8242     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8243     if test -z "$JAVA_HOME"; then
8244         if test "x$with_jdk_home" = "x"; then
8245             cat > findhome.java <<_ACEOF
8246 [import java.io.File;
8248 class findhome
8250     public static void main(String args[])
8251     {
8252         String jrelocation = System.getProperty("java.home");
8253         File jre = new File(jrelocation);
8254         System.out.println(jre.getParent());
8255     }
8257 _ACEOF
8258             AC_MSG_CHECKING([if javac works])
8259             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8260             AC_TRY_EVAL(javac_cmd)
8261             if test $? = 0 -a -f ./findhome.class; then
8262                 AC_MSG_RESULT([javac works])
8263             else
8264                 echo "configure: javac test failed" >&5
8265                 cat findhome.java >&5
8266                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8267             fi
8268             AC_MSG_CHECKING([if gij knows its java.home])
8269             JAVA_HOME=`$JAVAINTERPRETER findhome`
8270             if test $? = 0 -a "$JAVA_HOME" != ""; then
8271                 AC_MSG_RESULT([$JAVA_HOME])
8272             else
8273                 echo "configure: java test failed" >&5
8274                 cat findhome.java >&5
8275                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8276             fi
8277             # clean-up after ourselves
8278             rm -f ./findhome.java ./findhome.class
8279         else
8280             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8281         fi
8282     fi
8284     # now check if $JAVA_HOME is really valid
8285     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8286         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8287             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8288             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8289             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8290             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8291             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8292             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8293         fi
8294     fi
8295     PathFormat "$JAVA_HOME"
8296     JAVA_HOME="$formatted_path"
8299 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8300     "$_os" != Darwin
8301 then
8302     AC_MSG_CHECKING([for JAWT lib])
8303     if test "$_os" = WINNT; then
8304         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8305         JAWTLIB=jawt.lib
8306     else
8307         case "$host_cpu" in
8308         arm*)
8309             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8310             JAVA_ARCH=$my_java_arch
8311             ;;
8312         i*86)
8313             my_java_arch=i386
8314             ;;
8315         m68k)
8316             my_java_arch=m68k
8317             ;;
8318         powerpc)
8319             my_java_arch=ppc
8320             ;;
8321         powerpc64)
8322             my_java_arch=ppc64
8323             ;;
8324         powerpc64le)
8325             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8326             JAVA_ARCH=$my_java_arch
8327             ;;
8328         sparc64)
8329             my_java_arch=sparcv9
8330             ;;
8331         x86_64)
8332             my_java_arch=amd64
8333             ;;
8334         *)
8335             my_java_arch=$host_cpu
8336             ;;
8337         esac
8338         # This is where JDK9 puts the library
8339         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8340             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8341         else
8342             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8343         fi
8344         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8345     fi
8346     AC_MSG_RESULT([$JAWTLIB])
8348 AC_SUBST(JAWTLIB)
8350 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8351     case "$host_os" in
8353     aix*)
8354         JAVAINC="-I$JAVA_HOME/include"
8355         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8356         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8357         ;;
8359     cygwin*|wsl*)
8360         JAVAINC="-I$JAVA_HOME/include/win32"
8361         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8362         ;;
8364     darwin*|macos*)
8365         if test -d "$JAVA_HOME/include/darwin"; then
8366             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8367         else
8368             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8369         fi
8370         ;;
8372     dragonfly*)
8373         JAVAINC="-I$JAVA_HOME/include"
8374         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8375         ;;
8377     freebsd*)
8378         JAVAINC="-I$JAVA_HOME/include"
8379         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8380         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8381         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8382         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8383         ;;
8385     k*bsd*-gnu*)
8386         JAVAINC="-I$JAVA_HOME/include"
8387         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8388         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8389         ;;
8391     linux-gnu*)
8392         JAVAINC="-I$JAVA_HOME/include"
8393         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8394         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8395         ;;
8397     *netbsd*)
8398         JAVAINC="-I$JAVA_HOME/include"
8399         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8400         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8401        ;;
8403     openbsd*)
8404         JAVAINC="-I$JAVA_HOME/include"
8405         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8406         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8407         ;;
8409     solaris*)
8410         JAVAINC="-I$JAVA_HOME/include"
8411         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8412         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8413         ;;
8414     esac
8416 SOLARINC="$SOLARINC $JAVAINC"
8418 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8419     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8420     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8421     JDK_FOR_BUILD=$JDK
8424 AC_SUBST(JAVACFLAGS)
8425 AC_SUBST(JAVACOMPILER)
8426 AC_SUBST(JAVAINTERPRETER)
8427 AC_SUBST(JAVAIFLAGS)
8428 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8429 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8430 AC_SUBST(JAVA_HOME)
8431 AC_SUBST(JAVA_HOME_FOR_BUILD)
8432 AC_SUBST(JDK)
8433 AC_SUBST(JDK_FOR_BUILD)
8434 AC_SUBST(JAVA_SOURCE_VER)
8435 AC_SUBST(JAVA_TARGET_VER)
8438 dnl ===================================================================
8439 dnl Export file validation
8440 dnl ===================================================================
8441 AC_MSG_CHECKING([whether to enable export file validation])
8442 if test "$with_export_validation" != "no"; then
8443     if test -z "$ENABLE_JAVA"; then
8444         if test "$with_export_validation" = "yes"; then
8445             AC_MSG_ERROR([requested, but Java is disabled])
8446         else
8447             AC_MSG_RESULT([no, as Java is disabled])
8448         fi
8449     elif ! test -d "${SRC_ROOT}/schema"; then
8450         if test "$with_export_validation" = "yes"; then
8451             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8452         else
8453             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8454         fi
8455     else
8456         AC_MSG_RESULT([yes])
8457         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8459         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8460         if test -z "$ODFVALIDATOR"; then
8461             # remember to download the ODF toolkit with validator later
8462             AC_MSG_NOTICE([no odfvalidator found, will download it])
8463             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8464             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8466             # and fetch name of odfvalidator jar name from download.lst
8467             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8468             AC_SUBST(ODFVALIDATOR_JAR)
8470             if test -z "$ODFVALIDATOR_JAR"; then
8471                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8472             fi
8473         fi
8474         if test "$build_os" = "cygwin"; then
8475             # In case of Cygwin it will be executed from Windows,
8476             # so we need to run bash and absolute path to validator
8477             # so instead of "odfvalidator" it will be
8478             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8479             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8480         else
8481             ODFVALIDATOR="sh $ODFVALIDATOR"
8482         fi
8483         AC_SUBST(ODFVALIDATOR)
8486         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8487         if test -z "$OFFICEOTRON"; then
8488             # remember to download the officeotron with validator later
8489             AC_MSG_NOTICE([no officeotron found, will download it])
8490             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8491             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8493             # and fetch name of officeotron jar name from download.lst
8494             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8495             AC_SUBST(OFFICEOTRON_JAR)
8497             if test -z "$OFFICEOTRON_JAR"; then
8498                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8499             fi
8500         else
8501             # check version of existing officeotron
8502             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8503             if test 0"$OFFICEOTRON_VER" -lt 704; then
8504                 AC_MSG_ERROR([officeotron too old])
8505             fi
8506         fi
8507         if test "$build_os" = "cygwin"; then
8508             # In case of Cygwin it will be executed from Windows,
8509             # so we need to run bash and absolute path to validator
8510             # so instead of "odfvalidator" it will be
8511             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8512             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8513         else
8514             OFFICEOTRON="sh $OFFICEOTRON"
8515         fi
8516     fi
8517     AC_SUBST(OFFICEOTRON)
8518 else
8519     AC_MSG_RESULT([no])
8522 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8523 if test "$with_bffvalidator" != "no"; then
8524     AC_DEFINE(HAVE_BFFVALIDATOR)
8526     if test "$with_export_validation" = "no"; then
8527         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8528     fi
8530     if test "$with_bffvalidator" = "yes"; then
8531         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8532     else
8533         BFFVALIDATOR="$with_bffvalidator"
8534     fi
8536     if test "$build_os" = "cygwin"; then
8537         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8538             AC_MSG_RESULT($BFFVALIDATOR)
8539         else
8540             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8541         fi
8542     elif test -n "$BFFVALIDATOR"; then
8543         # We are not in Cygwin but need to run Windows binary with wine
8544         AC_PATH_PROGS(WINE, wine)
8546         # so swap in a shell wrapper that converts paths transparently
8547         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8548         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8549         AC_SUBST(BFFVALIDATOR_EXE)
8550         AC_MSG_RESULT($BFFVALIDATOR)
8551     else
8552         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8553     fi
8554     AC_SUBST(BFFVALIDATOR)
8555 else
8556     AC_MSG_RESULT([no])
8559 dnl ===================================================================
8560 dnl Check for C preprocessor to use
8561 dnl ===================================================================
8562 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8563 if test -n "$with_idlc_cpp"; then
8564     AC_MSG_RESULT([$with_idlc_cpp])
8565     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8566 else
8567     AC_MSG_RESULT([ucpp])
8568     AC_MSG_CHECKING([which ucpp tp use])
8569     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8570         AC_MSG_RESULT([external])
8571         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8572     else
8573         AC_MSG_RESULT([internal])
8574         BUILD_TYPE="$BUILD_TYPE UCPP"
8575     fi
8577 AC_SUBST(SYSTEM_UCPP)
8579 dnl ===================================================================
8580 dnl Check for epm (not needed for Windows)
8581 dnl ===================================================================
8582 AC_MSG_CHECKING([whether to enable EPM for packing])
8583 if test "$enable_epm" = "yes"; then
8584     AC_MSG_RESULT([yes])
8585     if test "$_os" != "WINNT"; then
8586         if test $_os = Darwin; then
8587             EPM=internal
8588         elif test -n "$with_epm"; then
8589             EPM=$with_epm
8590         else
8591             AC_PATH_PROG(EPM, epm, no)
8592         fi
8593         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8594             AC_MSG_NOTICE([EPM will be built.])
8595             BUILD_TYPE="$BUILD_TYPE EPM"
8596             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8597         else
8598             # Gentoo has some epm which is something different...
8599             AC_MSG_CHECKING([whether the found epm is the right epm])
8600             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8601                 AC_MSG_RESULT([yes])
8602             else
8603                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8604             fi
8605             AC_MSG_CHECKING([epm version])
8606             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8607             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8608                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8609                 AC_MSG_RESULT([OK, >= 3.7])
8610             else
8611                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8612                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8613             fi
8614         fi
8615     fi
8617     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8618         AC_MSG_CHECKING([for rpm])
8619         for a in "$RPM" rpmbuild rpm; do
8620             $a --usage >/dev/null 2> /dev/null
8621             if test $? -eq 0; then
8622                 RPM=$a
8623                 break
8624             else
8625                 $a --version >/dev/null 2> /dev/null
8626                 if test $? -eq 0; then
8627                     RPM=$a
8628                     break
8629                 fi
8630             fi
8631         done
8632         if test -z "$RPM"; then
8633             AC_MSG_ERROR([not found])
8634         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8635             RPM_PATH=`which $RPM`
8636             AC_MSG_RESULT([$RPM_PATH])
8637             SCPDEFS="$SCPDEFS -DWITH_RPM"
8638         else
8639             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8640         fi
8641     fi
8642     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8643         AC_PATH_PROG(DPKG, dpkg, no)
8644         if test "$DPKG" = "no"; then
8645             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8646         fi
8647     fi
8648     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8649        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8650         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8651             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8652                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8653                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8654                     AC_MSG_RESULT([yes])
8655                 else
8656                     AC_MSG_RESULT([no])
8657                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8658                         _pt="rpm"
8659                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8660                         add_warning "the rpms will need to be installed with --nodeps"
8661                     else
8662                         _pt="pkg"
8663                     fi
8664                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8665                     add_warning "the ${_pt}s will not be relocatable"
8666                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8667                                  relocation will work, you need to patch your epm with the
8668                                  patch in epm/epm-3.7.patch or build with
8669                                  --with-epm=internal which will build a suitable epm])
8670                 fi
8671             fi
8672         fi
8673     fi
8674     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8675         AC_PATH_PROG(PKGMK, pkgmk, no)
8676         if test "$PKGMK" = "no"; then
8677             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8678         fi
8679     fi
8680     AC_SUBST(RPM)
8681     AC_SUBST(DPKG)
8682     AC_SUBST(PKGMK)
8683 else
8684     for i in $PKGFORMAT; do
8685         case "$i" in
8686         aix | bsd | deb | pkg | rpm | native | portable)
8687             AC_MSG_ERROR(
8688                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8689             ;;
8690         esac
8691     done
8692     AC_MSG_RESULT([no])
8693     EPM=NO
8695 AC_SUBST(EPM)
8697 ENABLE_LWP=
8698 if test "$enable_lotuswordpro" = "yes"; then
8699     ENABLE_LWP="TRUE"
8701 AC_SUBST(ENABLE_LWP)
8703 dnl ===================================================================
8704 dnl Check for building ODK
8705 dnl ===================================================================
8706 if test "$enable_odk" = no; then
8707     unset DOXYGEN
8708 else
8709     if test "$with_doxygen" = no; then
8710         AC_MSG_CHECKING([for doxygen])
8711         unset DOXYGEN
8712         AC_MSG_RESULT([no])
8713     else
8714         if test "$with_doxygen" = yes; then
8715             AC_PATH_PROG([DOXYGEN], [doxygen])
8716             if test -z "$DOXYGEN"; then
8717                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8718             fi
8719             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8720                 if ! dot -V 2>/dev/null; then
8721                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8722                 fi
8723             fi
8724         else
8725             AC_MSG_CHECKING([for doxygen])
8726             DOXYGEN=$with_doxygen
8727             AC_MSG_RESULT([$DOXYGEN])
8728         fi
8729         if test -n "$DOXYGEN"; then
8730             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8731             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8732             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8733                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8734             fi
8735         fi
8736     fi
8738 AC_SUBST([DOXYGEN])
8740 AC_MSG_CHECKING([whether to build the ODK])
8741 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8742     AC_MSG_RESULT([yes])
8744     if test "$with_java" != "no"; then
8745         AC_MSG_CHECKING([whether to build unowinreg.dll])
8746         if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8747             # build on Win by default
8748             enable_build_unowinreg=yes
8749         fi
8750         if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8751             AC_MSG_RESULT([no])
8752             BUILD_UNOWINREG=
8753         else
8754             AC_MSG_RESULT([yes])
8755             BUILD_UNOWINREG=TRUE
8756         fi
8757         if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8758             if test -z "$with_mingw_cross_compiler"; then
8759                 dnl Guess...
8760                 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8761             elif test -x "$with_mingw_cross_compiler"; then
8762                  MINGWCXX="$with_mingw_cross_compiler"
8763             else
8764                 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8765             fi
8767             if test "$MINGWCXX" = "false"; then
8768                 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8769             fi
8771             mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8772             if test -x "$mingwstrip_test"; then
8773                 MINGWSTRIP="$mingwstrip_test"
8774             else
8775                 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8776             fi
8778             if test "$MINGWSTRIP" = "false"; then
8779                 AC_MSG_ERROR(MinGW32 binutils not found.)
8780             fi
8781         fi
8782     fi
8783     BUILD_TYPE="$BUILD_TYPE ODK"
8784 else
8785     AC_MSG_RESULT([no])
8786     BUILD_UNOWINREG=
8788 AC_SUBST(BUILD_UNOWINREG)
8789 AC_SUBST(MINGWCXX)
8790 AC_SUBST(MINGWSTRIP)
8792 dnl ===================================================================
8793 dnl Check for system zlib
8794 dnl ===================================================================
8795 if test "$with_system_zlib" = "auto"; then
8796     case "$_os" in
8797     WINNT)
8798         with_system_zlib="$with_system_libs"
8799         ;;
8800     *)
8801         if test "$enable_fuzzers" != "yes"; then
8802             with_system_zlib=yes
8803         else
8804             with_system_zlib=no
8805         fi
8806         ;;
8807     esac
8810 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8811 dnl and has no pkg-config for it at least on some tinderboxes,
8812 dnl so leaving that out for now
8813 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8814 AC_MSG_CHECKING([which zlib to use])
8815 if test "$with_system_zlib" = "yes"; then
8816     AC_MSG_RESULT([external])
8817     SYSTEM_ZLIB=TRUE
8818     AC_CHECK_HEADER(zlib.h, [],
8819         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8820     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8821         [AC_MSG_ERROR(zlib not found or functional)], [])
8822 else
8823     AC_MSG_RESULT([internal])
8824     SYSTEM_ZLIB=
8825     BUILD_TYPE="$BUILD_TYPE ZLIB"
8826     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8827     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8829 AC_SUBST(ZLIB_CFLAGS)
8830 AC_SUBST(ZLIB_LIBS)
8831 AC_SUBST(SYSTEM_ZLIB)
8833 dnl ===================================================================
8834 dnl Check for system jpeg
8835 dnl ===================================================================
8836 AC_MSG_CHECKING([which libjpeg to use])
8837 if test "$with_system_jpeg" = "yes"; then
8838     AC_MSG_RESULT([external])
8839     SYSTEM_LIBJPEG=TRUE
8840     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8841         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8842     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8843         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8844 else
8845     SYSTEM_LIBJPEG=
8846     AC_MSG_RESULT([internal, libjpeg-turbo])
8847     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8848     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8849     if test "$COM" = "MSC"; then
8850         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8851     else
8852         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8853     fi
8855     case "$host_cpu" in
8856     x86_64 | amd64 | i*86 | x86 | ia32)
8857         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8858         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8859             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8860                 NASM="$LODE_HOME/opt/bin/nasm"
8861             elif test -x "/opt/lo/bin/nasm"; then
8862                 NASM="/opt/lo/bin/nasm"
8863             fi
8864         fi
8866         if test -n "$NASM"; then
8867             AC_MSG_CHECKING([for object file format of host system])
8868             case "$host_os" in
8869               cygwin* | mingw* | pw32* | wsl*)
8870                 case "$host_cpu" in
8871                   x86_64)
8872                     objfmt='Win64-COFF'
8873                     ;;
8874                   *)
8875                     objfmt='Win32-COFF'
8876                     ;;
8877                 esac
8878               ;;
8879               msdosdjgpp* | go32*)
8880                 objfmt='COFF'
8881               ;;
8882               os2-emx*) # not tested
8883                 objfmt='MSOMF' # obj
8884               ;;
8885               linux*coff* | linux*oldld*)
8886                 objfmt='COFF' # ???
8887               ;;
8888               linux*aout*)
8889                 objfmt='a.out'
8890               ;;
8891               linux*)
8892                 case "$host_cpu" in
8893                   x86_64)
8894                     objfmt='ELF64'
8895                     ;;
8896                   *)
8897                     objfmt='ELF'
8898                     ;;
8899                 esac
8900               ;;
8901               kfreebsd* | freebsd* | netbsd* | openbsd*)
8902                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8903                   objfmt='BSD-a.out'
8904                 else
8905                   case "$host_cpu" in
8906                     x86_64 | amd64)
8907                       objfmt='ELF64'
8908                       ;;
8909                     *)
8910                       objfmt='ELF'
8911                       ;;
8912                   esac
8913                 fi
8914               ;;
8915               solaris* | sunos* | sysv* | sco*)
8916                 case "$host_cpu" in
8917                   x86_64)
8918                     objfmt='ELF64'
8919                     ;;
8920                   *)
8921                     objfmt='ELF'
8922                     ;;
8923                 esac
8924               ;;
8925               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8926                 case "$host_cpu" in
8927                   x86_64)
8928                     objfmt='Mach-O64'
8929                     ;;
8930                   *)
8931                     objfmt='Mach-O'
8932                     ;;
8933                 esac
8934               ;;
8935               *)
8936                 objfmt='ELF ?'
8937               ;;
8938             esac
8940             AC_MSG_RESULT([$objfmt])
8941             if test "$objfmt" = 'ELF ?'; then
8942               objfmt='ELF'
8943               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8944             fi
8946             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8947             case "$objfmt" in
8948               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8949               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8950               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8951               COFF)       NAFLAGS='-fcoff -DCOFF';;
8952               a.out)      NAFLAGS='-faout -DAOUT';;
8953               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8954               ELF)        NAFLAGS='-felf -DELF';;
8955               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8956               RDF)        NAFLAGS='-frdf -DRDF';;
8957               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8958               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8959             esac
8960             AC_MSG_RESULT([$NAFLAGS])
8962             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8963             cat > conftest.asm << EOF
8964             [%line __oline__ "configure"
8965                     section .text
8966                     global  _main,main
8967             _main:
8968             main:   xor     eax,eax
8969                     ret
8970             ]
8972             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8973             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8974               AC_MSG_RESULT(yes)
8975             else
8976               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8977               cat conftest.asm >&AS_MESSAGE_LOG_FD
8978               rm -rf conftest*
8979               AC_MSG_RESULT(no)
8980               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8981               NASM=""
8982             fi
8984         fi
8986         if test -z "$NASM"; then
8987 cat << _EOS
8988 ****************************************************************************
8989 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8990 To get one please:
8992 _EOS
8993             if test "$build_os" = "cygwin"; then
8994 cat << _EOS
8995 install a pre-compiled binary for Win32
8997 mkdir -p /opt/lo/bin
8998 cd /opt/lo/bin
8999 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9000 chmod +x nasm
9002 or get and install one from http://www.nasm.us/
9004 Then re-run autogen.sh
9006 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9007 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9009 _EOS
9010             else
9011 cat << _EOS
9012 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9014 _EOS
9015             fi
9016             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9017             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9018         fi
9019       ;;
9020     esac
9023 AC_SUBST(NASM)
9024 AC_SUBST(LIBJPEG_CFLAGS)
9025 AC_SUBST(LIBJPEG_LIBS)
9026 AC_SUBST(SYSTEM_LIBJPEG)
9028 dnl ===================================================================
9029 dnl Check for system clucene
9030 dnl ===================================================================
9031 dnl we should rather be using
9032 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9033 dnl but the contribs-lib check seems tricky
9034 AC_MSG_CHECKING([which clucene to use])
9035 if test "$with_system_clucene" = "yes"; then
9036     AC_MSG_RESULT([external])
9037     SYSTEM_CLUCENE=TRUE
9038     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9039     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9040     FilterLibs "${CLUCENE_LIBS}"
9041     CLUCENE_LIBS="${filteredlibs}"
9042     AC_LANG_PUSH([C++])
9043     save_CXXFLAGS=$CXXFLAGS
9044     save_CPPFLAGS=$CPPFLAGS
9045     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9046     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9047     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9048     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9049     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9050                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9051     CXXFLAGS=$save_CXXFLAGS
9052     CPPFLAGS=$save_CPPFLAGS
9053     AC_LANG_POP([C++])
9055     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9056 else
9057     AC_MSG_RESULT([internal])
9058     SYSTEM_CLUCENE=
9059     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9061 AC_SUBST(SYSTEM_CLUCENE)
9062 AC_SUBST(CLUCENE_CFLAGS)
9063 AC_SUBST(CLUCENE_LIBS)
9065 dnl ===================================================================
9066 dnl Check for system expat
9067 dnl ===================================================================
9068 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9070 dnl ===================================================================
9071 dnl Check for system xmlsec
9072 dnl ===================================================================
9073 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9075 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9076 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9077     ENABLE_EOT="TRUE"
9078     AC_DEFINE([ENABLE_EOT])
9079     AC_MSG_RESULT([yes])
9081     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9082 else
9083     ENABLE_EOT=
9084     AC_MSG_RESULT([no])
9086 AC_SUBST([ENABLE_EOT])
9088 dnl ===================================================================
9089 dnl Check for DLP libs
9090 dnl ===================================================================
9091 AS_IF([test "$COM" = "MSC"],
9092       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9093       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9095 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9097 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9099 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9101 AS_IF([test "$COM" = "MSC"],
9102       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9103       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9105 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9107 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9109 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9110 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9112 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9114 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9116 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9118 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9119 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9121 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9122 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9124 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9126 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9127 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9129 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9131 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9133 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9135 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9137 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9138 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9140 dnl ===================================================================
9141 dnl Check for system lcms2
9142 dnl ===================================================================
9143 if test "$with_system_lcms2" != "yes"; then
9144     SYSTEM_LCMS2=
9146 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9147 if test "$GCC" = "yes"; then
9148     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9150 if test "$COM" = "MSC"; then # override the above
9151     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9154 dnl ===================================================================
9155 dnl Check for system cppunit
9156 dnl ===================================================================
9157 if test "$_os" != "Android" ; then
9158     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9161 dnl ===================================================================
9162 dnl Check whether freetype is available
9163 dnl ===================================================================
9164 if test  "$test_freetype" = "yes"; then
9165     AC_MSG_CHECKING([whether freetype is available])
9166     # FreeType has 3 different kinds of versions
9167     # * release, like 2.4.10
9168     # * libtool, like 13.0.7 (this what pkg-config returns)
9169     # * soname
9170     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9171     #
9172     # 9.9.3 is 2.2.0
9173     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9174     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9175     FilterLibs "${FREETYPE_LIBS}"
9176     FREETYPE_LIBS="${filteredlibs}"
9177     SYSTEM_FREETYPE=TRUE
9178 else
9179     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9180     if test "x$ac_config_site_64bit_host" = xYES; then
9181         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9182     else
9183         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9184     fi
9186 AC_SUBST(FREETYPE_CFLAGS)
9187 AC_SUBST(FREETYPE_LIBS)
9188 AC_SUBST([SYSTEM_FREETYPE])
9190 # ===================================================================
9191 # Check for system libxslt
9192 # to prevent incompatibilities between internal libxml2 and external libxslt,
9193 # or vice versa, use with_system_libxml here
9194 # ===================================================================
9195 if test "$with_system_libxml" = "auto"; then
9196     case "$_os" in
9197     WINNT|iOS|Android)
9198         with_system_libxml="$with_system_libs"
9199         ;;
9200     *)
9201         if test "$enable_fuzzers" != "yes"; then
9202             with_system_libxml=yes
9203         else
9204             with_system_libxml=no
9205         fi
9206         ;;
9207     esac
9210 AC_MSG_CHECKING([which libxslt to use])
9211 if test "$with_system_libxml" = "yes"; then
9212     AC_MSG_RESULT([external])
9213     SYSTEM_LIBXSLT=TRUE
9214     if test "$_os" = "Darwin"; then
9215         dnl make sure to use SDK path
9216         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9217         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9218         dnl omit -L/usr/lib
9219         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9220         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9221     else
9222         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9223         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9224         FilterLibs "${LIBXSLT_LIBS}"
9225         LIBXSLT_LIBS="${filteredlibs}"
9226         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9227         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9228         FilterLibs "${LIBEXSLT_LIBS}"
9229         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9230     fi
9232     dnl Check for xsltproc
9233     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9234     if test "$XSLTPROC" = "no"; then
9235         AC_MSG_ERROR([xsltproc is required])
9236     fi
9237 else
9238     AC_MSG_RESULT([internal])
9239     SYSTEM_LIBXSLT=
9240     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9242 AC_SUBST(SYSTEM_LIBXSLT)
9243 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9244     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9246 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9248 AC_SUBST(LIBEXSLT_CFLAGS)
9249 AC_SUBST(LIBEXSLT_LIBS)
9250 AC_SUBST(LIBXSLT_CFLAGS)
9251 AC_SUBST(LIBXSLT_LIBS)
9252 AC_SUBST(XSLTPROC)
9254 # ===================================================================
9255 # Check for system libxml
9256 # ===================================================================
9257 AC_MSG_CHECKING([which libxml to use])
9258 if test "$with_system_libxml" = "yes"; then
9259     AC_MSG_RESULT([external])
9260     SYSTEM_LIBXML=TRUE
9261     if test "$_os" = "Darwin"; then
9262         dnl make sure to use SDK path
9263         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9264         dnl omit -L/usr/lib
9265         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9266     elif test $_os = iOS; then
9267         dnl make sure to use SDK path
9268         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9269         LIBXML_CFLAGS="-I$usr/include/libxml2"
9270         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9271     else
9272         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9273         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9274         FilterLibs "${LIBXML_LIBS}"
9275         LIBXML_LIBS="${filteredlibs}"
9276     fi
9278     dnl Check for xmllint
9279     AC_PATH_PROG(XMLLINT, xmllint, no)
9280     if test "$XMLLINT" = "no"; then
9281         AC_MSG_ERROR([xmllint is required])
9282     fi
9283 else
9284     AC_MSG_RESULT([internal])
9285     SYSTEM_LIBXML=
9286     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9287     if test "$COM" = "MSC"; then
9288         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9289     fi
9290     if test "$COM" = "MSC"; then
9291         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9292     else
9293         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9294         if test "$_os" = Android; then
9295             LIBXML_LIBS="$LIBXML_LIBS -lm"
9296         fi
9297     fi
9298     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9300 AC_SUBST(SYSTEM_LIBXML)
9301 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9302     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9304 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9305 AC_SUBST(LIBXML_CFLAGS)
9306 AC_SUBST(LIBXML_LIBS)
9307 AC_SUBST(XMLLINT)
9309 # =====================================================================
9310 # Checking for a Python interpreter with version >= 3.3.
9311 # Optionally user can pass an option to configure, i. e.
9312 # ./configure PYTHON=/usr/bin/python
9313 # =====================================================================
9314 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9315     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9316     enable_python=internal
9318 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9319     if test -n "$PYTHON"; then
9320         PYTHON_FOR_BUILD=$PYTHON
9321     else
9322         # This allows a lack of system python with no error, we use internal one in that case.
9323         AM_PATH_PYTHON([3.3],, [:])
9324         # Clean PYTHON_VERSION checked below if cross-compiling
9325         PYTHON_VERSION=""
9326         if test "$PYTHON" != ":"; then
9327             PYTHON_FOR_BUILD=$PYTHON
9328         fi
9329     fi
9331 AC_SUBST(PYTHON_FOR_BUILD)
9333 # Checks for Python to use for Pyuno
9334 AC_MSG_CHECKING([which Python to use for Pyuno])
9335 case "$enable_python" in
9336 no|disable)
9337     if test -z $PYTHON_FOR_BUILD; then
9338         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9339         # requirement from the choice whether to include Python stuff in the installer, but why
9340         # bother?
9341         AC_MSG_ERROR([Python is required at build time.])
9342     fi
9343     enable_python=no
9344     AC_MSG_RESULT([none])
9345     ;;
9346 ""|yes|auto)
9347     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9348         AC_MSG_RESULT([no, overridden by --disable-scripting])
9349         enable_python=no
9350     elif test $build_os = cygwin; then
9351         dnl When building on Windows we don't attempt to use any installed
9352         dnl "system"  Python.
9353         AC_MSG_RESULT([fully internal])
9354         enable_python=internal
9355     elif test "$cross_compiling" = yes; then
9356         AC_MSG_RESULT([system])
9357         enable_python=system
9358     else
9359         # Unset variables set by the above AM_PATH_PYTHON so that
9360         # we actually do check anew.
9361         AC_MSG_RESULT([])
9362         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
9363         AM_PATH_PYTHON([3.3],, [:])
9364         AC_MSG_CHECKING([which Python to use for Pyuno])
9365         if test "$PYTHON" = ":"; then
9366             if test -z "$PYTHON_FOR_BUILD"; then
9367                 AC_MSG_RESULT([fully internal])
9368             else
9369                 AC_MSG_RESULT([internal])
9370             fi
9371             enable_python=internal
9372         else
9373             AC_MSG_RESULT([system])
9374             enable_python=system
9375         fi
9376     fi
9377     ;;
9378 internal)
9379     AC_MSG_RESULT([internal])
9380     ;;
9381 fully-internal)
9382     AC_MSG_RESULT([fully internal])
9383     enable_python=internal
9384     ;;
9385 system)
9386     AC_MSG_RESULT([system])
9387     if test "$_os" = Darwin; then
9388         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9389     fi
9390     ;;
9392     AC_MSG_ERROR([Incorrect --enable-python option])
9393     ;;
9394 esac
9396 if test $enable_python != no; then
9397     BUILD_TYPE="$BUILD_TYPE PYUNO"
9400 if test $enable_python = system; then
9401     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9402         # Fallback: Accept these in the environment, or as set above
9403         # for MacOSX.
9404         :
9405     elif test "$cross_compiling" != yes; then
9406         # Unset variables set by the above AM_PATH_PYTHON so that
9407         # we actually do check anew.
9408         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
9409         # This causes an error if no python command is found
9410         AM_PATH_PYTHON([3.3])
9411         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9412         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9413         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9414         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9415         if test -z "$PKG_CONFIG"; then
9416             PYTHON_CFLAGS="-I$python_include"
9417             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9418         elif $PKG_CONFIG --exists python-$python_version-embed; then
9419             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9420             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9421         elif $PKG_CONFIG --exists python-$python_version; then
9422             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9423             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9424         else
9425             PYTHON_CFLAGS="-I$python_include"
9426             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9427         fi
9428         FilterLibs "${PYTHON_LIBS}"
9429         PYTHON_LIBS="${filteredlibs}"
9430     else
9431         dnl How to find out the cross-compilation Python installation path?
9432         AC_MSG_CHECKING([for python version])
9433         AS_IF([test -n "$PYTHON_VERSION"],
9434               [AC_MSG_RESULT([$PYTHON_VERSION])],
9435               [AC_MSG_RESULT([not found])
9436                AC_MSG_ERROR([no usable python found])])
9437         test -n "$PYTHON_CFLAGS" && break
9438     fi
9440     dnl Check if the headers really work
9441     save_CPPFLAGS="$CPPFLAGS"
9442     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9443     AC_CHECK_HEADER(Python.h)
9444     CPPFLAGS="$save_CPPFLAGS"
9446     # let the PYTHON_FOR_BUILD match the same python installation that
9447     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9448     # better for PythonTests.
9449     PYTHON_FOR_BUILD=$PYTHON
9452 if test "$with_lxml" != no; then
9453     if test -z "$PYTHON_FOR_BUILD"; then
9454         case $build_os in
9455             cygwin)
9456                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9457                 ;;
9458             *)
9459                 if test "$cross_compiling" != yes ; then
9460                     BUILD_TYPE="$BUILD_TYPE LXML"
9461                 fi
9462                 ;;
9463         esac
9464     else
9465         AC_MSG_CHECKING([for python lxml])
9466         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9467             AC_MSG_RESULT([yes])
9468         else
9469             case $build_os in
9470                 cygwin)
9471                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9472                     ;;
9473                 *)
9474                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9475                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9476                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9477                         else
9478                             BUILD_TYPE="$BUILD_TYPE LXML"
9479                             AC_MSG_RESULT([no, using internal lxml])
9480                         fi
9481                     else
9482                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9483                     fi
9484                     ;;
9485             esac
9486         fi
9487     fi
9490 dnl By now enable_python should be "system", "internal" or "no"
9491 case $enable_python in
9492 system)
9493     SYSTEM_PYTHON=TRUE
9495     if test "x$ac_cv_header_Python_h" != "xyes"; then
9496        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9497     fi
9499     AC_LANG_PUSH(C)
9500     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9501     AC_MSG_CHECKING([for correct python library version])
9502        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9503 #include <Python.h>
9505 int main(int argc, char **argv) {
9506    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9507    else return 1;
9509        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9510     AC_LANG_POP(C)
9512     dnl FIXME Check if the Python library can be linked with, too?
9513     ;;
9515 internal)
9516     SYSTEM_PYTHON=
9517     PYTHON_VERSION_MAJOR=3
9518     PYTHON_VERSION_MINOR=8
9519     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.8
9520     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9521         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9522     fi
9523     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9524     BUILD_TYPE="$BUILD_TYPE PYTHON"
9525     if test "$OS" = LINUX -o "$OS" = WNT ; then
9526         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9527     fi
9528     # Embedded Python dies without Home set
9529     if test "$HOME" = ""; then
9530         export HOME=""
9531     fi
9532     ;;
9534     DISABLE_PYTHON=TRUE
9535     SYSTEM_PYTHON=
9536     ;;
9538     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9539     ;;
9540 esac
9542 AC_SUBST(DISABLE_PYTHON)
9543 AC_SUBST(SYSTEM_PYTHON)
9544 AC_SUBST(PYTHON_CFLAGS)
9545 AC_SUBST(PYTHON_LIBS)
9546 AC_SUBST(PYTHON_VERSION)
9547 AC_SUBST(PYTHON_VERSION_MAJOR)
9548 AC_SUBST(PYTHON_VERSION_MINOR)
9550 ENABLE_MARIADBC=
9551 MARIADBC_MAJOR=1
9552 MARIADBC_MINOR=0
9553 MARIADBC_MICRO=2
9554 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9555 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9556     ENABLE_MARIADBC=TRUE
9557     AC_MSG_RESULT([yes])
9558     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9559 else
9560     AC_MSG_RESULT([no])
9562 AC_SUBST(ENABLE_MARIADBC)
9563 AC_SUBST(MARIADBC_MAJOR)
9564 AC_SUBST(MARIADBC_MINOR)
9565 AC_SUBST(MARIADBC_MICRO)
9567 if test "$ENABLE_MARIADBC" = "TRUE"; then
9568     dnl ===================================================================
9569     dnl Check for system MariaDB
9570     dnl ===================================================================
9571     AC_MSG_CHECKING([which MariaDB to use])
9572     if test "$with_system_mariadb" = "yes"; then
9573         AC_MSG_RESULT([external])
9574         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9575         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9576         if test -z "$MARIADBCONFIG"; then
9577             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9578             if test -z "$MARIADBCONFIG"; then
9579                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9580                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9581             fi
9582         fi
9583         AC_MSG_CHECKING([MariaDB version])
9584         MARIADB_VERSION=`$MARIADBCONFIG --version`
9585         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9586         if test "$MARIADB_MAJOR" -ge "5"; then
9587             AC_MSG_RESULT([OK])
9588         else
9589             AC_MSG_ERROR([too old, use 5.0.x or later])
9590         fi
9591         AC_MSG_CHECKING([for MariaDB Client library])
9592         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9593         if test "$COM_IS_CLANG" = TRUE; then
9594             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9595         fi
9596         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9597         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9598         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9599         dnl linux32:
9600         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9601             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9602             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9603                 | sed -e 's|/lib64/|/lib/|')
9604         fi
9605         FilterLibs "${MARIADB_LIBS}"
9606         MARIADB_LIBS="${filteredlibs}"
9607         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9608         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9609         if test "$enable_bundle_mariadb" = "yes"; then
9610             AC_MSG_RESULT([yes])
9611             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9612             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9614 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9616 /g' | grep -E '(mysqlclient|mariadb)')
9617             if test "$_os" = "Darwin"; then
9618                 LIBMARIADB=${LIBMARIADB}.dylib
9619             elif test "$_os" = "WINNT"; then
9620                 LIBMARIADB=${LIBMARIADB}.dll
9621             else
9622                 LIBMARIADB=${LIBMARIADB}.so
9623             fi
9624             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9625             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9626             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9627                 AC_MSG_RESULT([found.])
9628                 PathFormat "$LIBMARIADB_PATH"
9629                 LIBMARIADB_PATH="$formatted_path"
9630             else
9631                 AC_MSG_ERROR([not found.])
9632             fi
9633         else
9634             AC_MSG_RESULT([no])
9635             BUNDLE_MARIADB_CONNECTOR_C=
9636         fi
9637     else
9638         AC_MSG_RESULT([internal])
9639         SYSTEM_MARIADB_CONNECTOR_C=
9640         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9641         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9642         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9643     fi
9645     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9646     AC_SUBST(MARIADB_CFLAGS)
9647     AC_SUBST(MARIADB_LIBS)
9648     AC_SUBST(LIBMARIADB)
9649     AC_SUBST(LIBMARIADB_PATH)
9650     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9653 dnl ===================================================================
9654 dnl Check for system hsqldb
9655 dnl ===================================================================
9656 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9657     HSQLDB_USE_JDBC_4_1=
9658     AC_MSG_CHECKING([which hsqldb to use])
9659     if test "$with_system_hsqldb" = "yes"; then
9660         AC_MSG_RESULT([external])
9661         SYSTEM_HSQLDB=TRUE
9662         if test -z $HSQLDB_JAR; then
9663             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9664         fi
9665         if ! test -f $HSQLDB_JAR; then
9666                AC_MSG_ERROR(hsqldb.jar not found.)
9667         fi
9668         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9669         export HSQLDB_JAR
9670         if $PERL -e \
9671            'use Archive::Zip;
9672             my $file = "$ENV{'HSQLDB_JAR'}";
9673             my $zip = Archive::Zip->new( $file );
9674             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9675             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9676             {
9677                 push @l, split(/\n/, $mf);
9678                 foreach my $line (@l)
9679                 {
9680                     if ($line =~ m/Specification-Version:/)
9681                     {
9682                         ($t, $version) = split (/:/,$line);
9683                         $version =~ s/^\s//;
9684                         ($a, $b, $c, $d) = split (/\./,$version);
9685                         if ($c == "0" && $d > "8")
9686                         {
9687                             exit 0;
9688                         }
9689                         else
9690                         {
9691                             exit 1;
9692                         }
9693                     }
9694                 }
9695             }
9696             else
9697             {
9698                 exit 1;
9699             }'; then
9700             AC_MSG_RESULT([yes])
9701         else
9702             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9703         fi
9704     else
9705         AC_MSG_RESULT([internal])
9706         SYSTEM_HSQLDB=
9707         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9708         NEED_ANT=TRUE
9709         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9710         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9711         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9712             AC_MSG_RESULT([yes])
9713             HSQLDB_USE_JDBC_4_1=TRUE
9714         else
9715             AC_MSG_RESULT([no])
9716         fi
9717     fi
9718 else
9719     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9720         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9721     fi
9723 AC_SUBST(SYSTEM_HSQLDB)
9724 AC_SUBST(HSQLDB_JAR)
9725 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9727 dnl ===================================================================
9728 dnl Check for PostgreSQL stuff
9729 dnl ===================================================================
9730 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9731 if test "x$enable_postgresql_sdbc" != "xno"; then
9732     AC_MSG_RESULT([yes])
9733     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9735     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9736         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9737     fi
9738     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9739         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9740     fi
9742     postgres_interface=""
9743     if test "$with_system_postgresql" = "yes"; then
9744         postgres_interface="external PostgreSQL"
9745         SYSTEM_POSTGRESQL=TRUE
9746         if test "$_os" = Darwin; then
9747             supp_path=''
9748             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9749                 pg_supp_path="$P_SEP$d$pg_supp_path"
9750             done
9751         fi
9752         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9753         if test -n "$PGCONFIG"; then
9754             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9755             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9756         else
9757             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9758               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9759               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9760             ],[
9761               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9762             ])
9763         fi
9764         FilterLibs "${POSTGRESQL_LIB}"
9765         POSTGRESQL_LIB="${filteredlibs}"
9766     else
9767         # if/when anything else than PostgreSQL uses Kerberos,
9768         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9769         WITH_KRB5=
9770         WITH_GSSAPI=
9771         case "$_os" in
9772         Darwin)
9773             # macOS has system MIT Kerberos 5 since 10.4
9774             if test "$with_krb5" != "no"; then
9775                 WITH_KRB5=TRUE
9776                 save_LIBS=$LIBS
9777                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9778                 # that the libraries where these functions are located on macOS will change, is it?
9779                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9780                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9781                 KRB5_LIBS=$LIBS
9782                 LIBS=$save_LIBS
9783                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9784                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9785                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9786                 LIBS=$save_LIBS
9787             fi
9788             if test "$with_gssapi" != "no"; then
9789                 WITH_GSSAPI=TRUE
9790                 save_LIBS=$LIBS
9791                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9792                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9793                 GSSAPI_LIBS=$LIBS
9794                 LIBS=$save_LIBS
9795             fi
9796             ;;
9797         WINNT)
9798             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9799                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9800             fi
9801             ;;
9802         Linux|GNU|*BSD|DragonFly)
9803             if test "$with_krb5" != "no"; then
9804                 WITH_KRB5=TRUE
9805                 save_LIBS=$LIBS
9806                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9807                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9808                 KRB5_LIBS=$LIBS
9809                 LIBS=$save_LIBS
9810                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9811                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9812                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9813                 LIBS=$save_LIBS
9814             fi
9815             if test "$with_gssapi" != "no"; then
9816                 WITH_GSSAPI=TRUE
9817                 save_LIBS=$LIBS
9818                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9819                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9820                 GSSAPI_LIBS=$LIBS
9821                 LIBS=$save_LIBS
9822             fi
9823             ;;
9824         *)
9825             if test "$with_krb5" = "yes"; then
9826                 WITH_KRB5=TRUE
9827                 save_LIBS=$LIBS
9828                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9829                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9830                 KRB5_LIBS=$LIBS
9831                 LIBS=$save_LIBS
9832                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9833                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9834                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9835                 LIBS=$save_LIBS
9836             fi
9837             if test "$with_gssapi" = "yes"; then
9838                 WITH_GSSAPI=TRUE
9839                 save_LIBS=$LIBS
9840                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9841                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9842                 LIBS=$save_LIBS
9843                 GSSAPI_LIBS=$LIBS
9844             fi
9845         esac
9847         if test -n "$with_libpq_path"; then
9848             SYSTEM_POSTGRESQL=TRUE
9849             postgres_interface="external libpq"
9850             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9851             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9852         else
9853             SYSTEM_POSTGRESQL=
9854             postgres_interface="internal"
9855             POSTGRESQL_LIB=""
9856             POSTGRESQL_INC="%OVERRIDE_ME%"
9857             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9858         fi
9859     fi
9861     AC_MSG_CHECKING([PostgreSQL C interface])
9862     AC_MSG_RESULT([$postgres_interface])
9864     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9865         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9866         save_CFLAGS=$CFLAGS
9867         save_CPPFLAGS=$CPPFLAGS
9868         save_LIBS=$LIBS
9869         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9870         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9871         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9872         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9873             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9874         CFLAGS=$save_CFLAGS
9875         CPPFLAGS=$save_CPPFLAGS
9876         LIBS=$save_LIBS
9877     fi
9878     BUILD_POSTGRESQL_SDBC=TRUE
9879 else
9880     AC_MSG_RESULT([no])
9882 AC_SUBST(WITH_KRB5)
9883 AC_SUBST(WITH_GSSAPI)
9884 AC_SUBST(GSSAPI_LIBS)
9885 AC_SUBST(KRB5_LIBS)
9886 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9887 AC_SUBST(SYSTEM_POSTGRESQL)
9888 AC_SUBST(POSTGRESQL_INC)
9889 AC_SUBST(POSTGRESQL_LIB)
9891 dnl ===================================================================
9892 dnl Check for Firebird stuff
9893 dnl ===================================================================
9894 ENABLE_FIREBIRD_SDBC=
9895 if test "$enable_firebird_sdbc" = "yes" ; then
9896     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9898     dnl ===================================================================
9899     dnl Check for system Firebird
9900     dnl ===================================================================
9901     AC_MSG_CHECKING([which Firebird to use])
9902     if test "$with_system_firebird" = "yes"; then
9903         AC_MSG_RESULT([external])
9904         SYSTEM_FIREBIRD=TRUE
9905         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9906         if test -z "$FIREBIRDCONFIG"; then
9907             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9908             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9909                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9910             ])
9911             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9912         else
9913             AC_MSG_NOTICE([fb_config found])
9914             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9915             AC_MSG_CHECKING([for Firebird Client library])
9916             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9917             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9918             FilterLibs "${FIREBIRD_LIBS}"
9919             FIREBIRD_LIBS="${filteredlibs}"
9920         fi
9921         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9922         AC_MSG_CHECKING([Firebird version])
9923         if test -n "${FIREBIRD_VERSION}"; then
9924             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9925             if test "$FIREBIRD_MAJOR" -ge "3"; then
9926                 AC_MSG_RESULT([OK])
9927             else
9928                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
9929             fi
9930         else
9931             save_CFLAGS="${CFLAGS}"
9932             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9933             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9934 #if defined(FB_API_VER) && FB_API_VER == 30
9935 int fb_api_is_30(void) { return 0; }
9936 #else
9937 #error "Wrong Firebird API version"
9938 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9939             CFLAGS="$save_CFLAGS"
9940         fi
9941         ENABLE_FIREBIRD_SDBC=TRUE
9942         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9943     elif test "$enable_database_connectivity" != yes; then
9944         AC_MSG_RESULT([none])
9945     elif test "$cross_compiling" = "yes"; then
9946         AC_MSG_RESULT([none])
9947     else
9948         dnl Embedded Firebird has version 3.0
9949         dnl We need libatomic_ops for any non X86/X64 system
9950         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9951             dnl ===================================================================
9952             dnl Check for system libatomic_ops
9953             dnl ===================================================================
9954             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9955             if test "$with_system_libatomic_ops" = "yes"; then
9956                 SYSTEM_LIBATOMIC_OPS=TRUE
9957                 AC_CHECK_HEADERS(atomic_ops.h, [],
9958                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9959             else
9960                 SYSTEM_LIBATOMIC_OPS=
9961                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9962                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9963                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9964             fi
9965         fi
9967         AC_MSG_RESULT([internal])
9968         SYSTEM_FIREBIRD=
9969         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9970         FIREBIRD_LIBS="-lfbclient"
9972         if test "$with_system_libtommath" = "yes"; then
9973             SYSTEM_LIBTOMMATH=TRUE
9974             dnl check for tommath presence
9975             save_LIBS=$LIBS
9976             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9977             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9978             LIBS=$save_LIBS
9979         else
9980             SYSTEM_LIBTOMMATH=
9981             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9982             LIBTOMMATH_LIBS="-ltommath"
9983             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9984         fi
9986         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9987         ENABLE_FIREBIRD_SDBC=TRUE
9988         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9989     fi
9991 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9992 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9993 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9994 AC_SUBST(LIBATOMIC_OPS_LIBS)
9995 AC_SUBST(SYSTEM_FIREBIRD)
9996 AC_SUBST(FIREBIRD_CFLAGS)
9997 AC_SUBST(FIREBIRD_LIBS)
9998 AC_SUBST(SYSTEM_LIBTOMMATH)
9999 AC_SUBST(LIBTOMMATH_CFLAGS)
10000 AC_SUBST(LIBTOMMATH_LIBS)
10002 dnl ===================================================================
10003 dnl Check for system curl
10004 dnl ===================================================================
10005 AC_MSG_CHECKING([which libcurl to use])
10006 if test "$with_system_curl" = "auto"; then
10007     with_system_curl="$with_system_libs"
10010 if test "$with_system_curl" = "yes"; then
10011     AC_MSG_RESULT([external])
10012     SYSTEM_CURL=TRUE
10014     # First try PKGCONFIG and then fall back
10015     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10017     if test -n "$CURL_PKG_ERRORS"; then
10018         AC_PATH_PROG(CURLCONFIG, curl-config)
10019         if test -z "$CURLCONFIG"; then
10020             AC_MSG_ERROR([curl development files not found])
10021         fi
10022         CURL_LIBS=`$CURLCONFIG --libs`
10023         FilterLibs "${CURL_LIBS}"
10024         CURL_LIBS="${filteredlibs}"
10025         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10026         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10028         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10029         case $curl_version in
10030         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10031         dnl so they need to be doubled to end up in the configure script
10032         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10033             AC_MSG_RESULT([yes])
10034             ;;
10035         *)
10036             AC_MSG_ERROR([no, you have $curl_version])
10037             ;;
10038         esac
10039     fi
10041     ENABLE_CURL=TRUE
10042 else
10043     AC_MSG_RESULT([internal])
10044     SYSTEM_CURL=
10045     BUILD_TYPE="$BUILD_TYPE CURL"
10046     ENABLE_CURL=TRUE
10048 AC_SUBST(SYSTEM_CURL)
10049 AC_SUBST(CURL_CFLAGS)
10050 AC_SUBST(CURL_LIBS)
10051 AC_SUBST(ENABLE_CURL)
10053 dnl ===================================================================
10054 dnl Check for system boost
10055 dnl ===================================================================
10056 AC_MSG_CHECKING([which boost to use])
10057 if test "$with_system_boost" = "yes"; then
10058     AC_MSG_RESULT([external])
10059     SYSTEM_BOOST=TRUE
10060     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10061     AX_BOOST_DATE_TIME
10062     AX_BOOST_FILESYSTEM
10063     AX_BOOST_IOSTREAMS
10064     AX_BOOST_LOCALE
10065     AC_LANG_PUSH([C++])
10066     save_CXXFLAGS=$CXXFLAGS
10067     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10068     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10069        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10070     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10071        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10072     CXXFLAGS=$save_CXXFLAGS
10073     AC_LANG_POP([C++])
10074     # this is in m4/ax_boost_base.m4
10075     FilterLibs "${BOOST_LDFLAGS}"
10076     BOOST_LDFLAGS="${filteredlibs}"
10077 else
10078     AC_MSG_RESULT([internal])
10079     BUILD_TYPE="$BUILD_TYPE BOOST"
10080     SYSTEM_BOOST=
10081     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10082         # use warning-suppressing wrapper headers
10083         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10084     else
10085         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10086     fi
10088 AC_SUBST(SYSTEM_BOOST)
10090 dnl ===================================================================
10091 dnl Check for system mdds
10092 dnl ===================================================================
10093 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10095 dnl ===================================================================
10096 dnl Check for system glm
10097 dnl ===================================================================
10098 AC_MSG_CHECKING([which glm to use])
10099 if test "$with_system_glm" = "yes"; then
10100     AC_MSG_RESULT([external])
10101     SYSTEM_GLM=TRUE
10102     AC_LANG_PUSH([C++])
10103     AC_CHECK_HEADER([glm/glm.hpp], [],
10104        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10105     AC_LANG_POP([C++])
10106 else
10107     AC_MSG_RESULT([internal])
10108     BUILD_TYPE="$BUILD_TYPE GLM"
10109     SYSTEM_GLM=
10110     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10112 AC_SUBST([GLM_CFLAGS])
10113 AC_SUBST([SYSTEM_GLM])
10115 dnl ===================================================================
10116 dnl Check for system odbc
10117 dnl ===================================================================
10118 AC_MSG_CHECKING([which odbc headers to use])
10119 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
10120     AC_MSG_RESULT([external])
10121     SYSTEM_ODBC_HEADERS=TRUE
10123     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10124         save_CPPFLAGS=$CPPFLAGS
10125         find_winsdk
10126         PathFormat "$winsdktest"
10127         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"
10128         AC_CHECK_HEADER(sqlext.h, [],
10129             [AC_MSG_ERROR(odbc not found. install odbc)],
10130             [#include <windows.h>])
10131         CPPFLAGS=$save_CPPFLAGS
10132     else
10133         AC_CHECK_HEADER(sqlext.h, [],
10134             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10135     fi
10136 elif test "$enable_database_connectivity" != yes; then
10137     AC_MSG_RESULT([none])
10138 else
10139     AC_MSG_RESULT([internal])
10140     SYSTEM_ODBC_HEADERS=
10142 AC_SUBST(SYSTEM_ODBC_HEADERS)
10144 dnl ===================================================================
10145 dnl Enable LDAP support
10146 dnl ===================================================================
10148 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10149 AC_MSG_CHECKING([whether to enable LDAP support])
10150     if test "$enable_ldap" != "yes"; then
10151         AC_MSG_RESULT([no])
10152         ENABLE_LDAP=""
10153         enable_ldap=no
10154     else
10155         AC_MSG_RESULT([yes])
10156         ENABLE_LDAP="TRUE"
10157     fi
10159 AC_SUBST(ENABLE_LDAP)
10161 dnl ===================================================================
10162 dnl Check for system openldap
10163 dnl ===================================================================
10165 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10166 AC_MSG_CHECKING([which openldap library to use])
10167 if test "$with_system_openldap" = "yes"; then
10168     AC_MSG_RESULT([external])
10169     SYSTEM_OPENLDAP=TRUE
10170     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10171     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10172     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10173 else
10174     AC_MSG_RESULT([internal])
10175     SYSTEM_OPENLDAP=
10176     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10179 AC_SUBST(SYSTEM_OPENLDAP)
10181 dnl ===================================================================
10182 dnl Check for system NSS
10183 dnl ===================================================================
10184 if test "$enable_fuzzers" != "yes"; then
10185     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10186     AC_DEFINE(HAVE_FEATURE_NSS)
10187     ENABLE_NSS="TRUE"
10188     AC_DEFINE(ENABLE_NSS)
10189 elif test $_os != iOS ; then
10190     with_tls=openssl
10192 AC_SUBST(ENABLE_NSS)
10194 dnl ===================================================================
10195 dnl Check for TLS/SSL and cryptographic implementation to use
10196 dnl ===================================================================
10197 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10198 if test -n "$with_tls"; then
10199     case $with_tls in
10200     openssl)
10201         AC_DEFINE(USE_TLS_OPENSSL)
10202         TLS=OPENSSL
10203         AC_MSG_RESULT([$TLS])
10205         if test "$enable_openssl" != "yes"; then
10206             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10207         fi
10209         # warn that OpenSSL has been selected but not all TLS code has this option
10210         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10211         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10212         ;;
10213     nss)
10214         AC_DEFINE(USE_TLS_NSS)
10215         TLS=NSS
10216         AC_MSG_RESULT([$TLS])
10217         ;;
10218     no)
10219         AC_MSG_RESULT([none])
10220         AC_MSG_WARN([Skipping TLS/SSL])
10221         ;;
10222     *)
10223         AC_MSG_RESULT([])
10224         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10225 openssl - OpenSSL
10226 nss - Mozilla's Network Security Services (NSS)
10227     ])
10228         ;;
10229     esac
10230 else
10231     # default to using NSS, it results in smaller oox lib
10232     AC_DEFINE(USE_TLS_NSS)
10233     TLS=NSS
10234     AC_MSG_RESULT([$TLS])
10236 AC_SUBST(TLS)
10238 dnl ===================================================================
10239 dnl Check for system sane
10240 dnl ===================================================================
10241 AC_MSG_CHECKING([which sane header to use])
10242 if test "$with_system_sane" = "yes"; then
10243     AC_MSG_RESULT([external])
10244     AC_CHECK_HEADER(sane/sane.h, [],
10245       [AC_MSG_ERROR(sane not found. install sane)], [])
10246 else
10247     AC_MSG_RESULT([internal])
10248     BUILD_TYPE="$BUILD_TYPE SANE"
10251 dnl ===================================================================
10252 dnl Check for system icu
10253 dnl ===================================================================
10254 SYSTEM_GENBRK=
10255 SYSTEM_GENCCODE=
10256 SYSTEM_GENCMN=
10258 ICU_MAJOR=68
10259 ICU_MINOR=1
10260 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10261 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10262 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10263 AC_MSG_CHECKING([which icu to use])
10264 if test "$with_system_icu" = "yes"; then
10265     AC_MSG_RESULT([external])
10266     SYSTEM_ICU=TRUE
10267     AC_LANG_PUSH([C++])
10268     AC_MSG_CHECKING([for unicode/rbbi.h])
10269     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10270     AC_LANG_POP([C++])
10272     if test "$cross_compiling" != "yes"; then
10273         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10274         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10275         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10276         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10277     fi
10279     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10280         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10281         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10282         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10283         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10284         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10285             AC_MSG_RESULT([yes])
10286         else
10287             AC_MSG_RESULT([no])
10288             if test "$with_system_icu_for_build" != "force"; then
10289                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10290 You can use --with-system-icu-for-build=force to use it anyway.])
10291             fi
10292         fi
10293     fi
10295     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10296         # using the system icu tools can lead to version confusion, use the
10297         # ones from the build environment when cross-compiling
10298         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10299         if test -z "$SYSTEM_GENBRK"; then
10300             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10301         fi
10302         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10303         if test -z "$SYSTEM_GENCCODE"; then
10304             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10305         fi
10306         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10307         if test -z "$SYSTEM_GENCMN"; then
10308             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10309         fi
10310         if test "$ICU_MAJOR" -ge "49"; then
10311             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10312             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10313             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10314         else
10315             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10316             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10317             ICU_RECLASSIFIED_HEBREW_LETTER=
10318         fi
10319     fi
10321     if test "$cross_compiling" = "yes"; then
10322         if test "$ICU_MAJOR" -ge "50"; then
10323             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10324             ICU_MINOR=""
10325         fi
10326     fi
10327 else
10328     AC_MSG_RESULT([internal])
10329     SYSTEM_ICU=
10330     BUILD_TYPE="$BUILD_TYPE ICU"
10331     # surprisingly set these only for "internal" (to be used by various other
10332     # external libs): the system icu-config is quite unhelpful and spits out
10333     # dozens of weird flags and also default path -I/usr/include
10334     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10335     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10337 if test "$ICU_MAJOR" -ge "59"; then
10338     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10339     # with -std=c++11 but not all external libraries can be built with that,
10340     # for those use a bit-compatible typedef uint16_t UChar; see
10341     # icu/source/common/unicode/umachine.h
10342     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10343 else
10344     ICU_UCHAR_TYPE=""
10346 AC_SUBST(SYSTEM_ICU)
10347 AC_SUBST(SYSTEM_GENBRK)
10348 AC_SUBST(SYSTEM_GENCCODE)
10349 AC_SUBST(SYSTEM_GENCMN)
10350 AC_SUBST(ICU_MAJOR)
10351 AC_SUBST(ICU_MINOR)
10352 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10353 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10354 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10355 AC_SUBST(ICU_CFLAGS)
10356 AC_SUBST(ICU_LIBS)
10357 AC_SUBST(ICU_UCHAR_TYPE)
10359 dnl ==================================================================
10360 dnl Breakpad
10361 dnl ==================================================================
10362 DEFAULT_CRASHDUMP_VALUE="true"
10363 AC_MSG_CHECKING([whether to enable breakpad])
10364 if test "$enable_breakpad" != yes; then
10365     AC_MSG_RESULT([no])
10366 else
10367     AC_MSG_RESULT([yes])
10368     ENABLE_BREAKPAD="TRUE"
10369     AC_DEFINE(ENABLE_BREAKPAD)
10370     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10371     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10373     AC_MSG_CHECKING([for disable crash dump])
10374     if test "$enable_crashdump" = no; then
10375         DEFAULT_CRASHDUMP_VALUE="false"
10376         AC_MSG_RESULT([yes])
10377     else
10378        AC_MSG_RESULT([no])
10379     fi
10381     AC_MSG_CHECKING([for crashreport config])
10382     if test "$with_symbol_config" = "no"; then
10383         BREAKPAD_SYMBOL_CONFIG="invalid"
10384         AC_MSG_RESULT([no])
10385     else
10386         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10387         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10388         AC_MSG_RESULT([yes])
10389     fi
10390     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10392 AC_SUBST(ENABLE_BREAKPAD)
10393 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10395 dnl ==================================================================
10396 dnl libfuzzer
10397 dnl ==================================================================
10398 AC_MSG_CHECKING([whether to enable fuzzers])
10399 if test "$enable_fuzzers" != yes; then
10400     AC_MSG_RESULT([no])
10401 else
10402     AC_MSG_RESULT([yes])
10403     ENABLE_FUZZERS="TRUE"
10404     AC_DEFINE([ENABLE_FUZZERS],1)
10405     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10407 AC_SUBST(ENABLE_FUZZERS)
10409 dnl ===================================================================
10410 dnl Orcus
10411 dnl ===================================================================
10412 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10413 if test "$with_system_orcus" != "yes"; then
10414     if test "$SYSTEM_BOOST" = "TRUE"; then
10415         # ===========================================================
10416         # Determine if we are going to need to link with Boost.System
10417         # ===========================================================
10418         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10419         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10420         dnl in documentation has no effect.
10421         AC_MSG_CHECKING([if we need to link with Boost.System])
10422         AC_LANG_PUSH([C++])
10423         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10424                 @%:@include <boost/version.hpp>
10425             ]],[[
10426                 #if BOOST_VERSION >= 105000
10427                 #   error yes, we need to link with Boost.System
10428                 #endif
10429             ]])],[
10430                 AC_MSG_RESULT([no])
10431             ],[
10432                 AC_MSG_RESULT([yes])
10433                 AX_BOOST_SYSTEM
10434         ])
10435         AC_LANG_POP([C++])
10436     fi
10438 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10439 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10440 AC_SUBST([BOOST_SYSTEM_LIB])
10441 AC_SUBST(SYSTEM_LIBORCUS)
10443 dnl ===================================================================
10444 dnl HarfBuzz
10445 dnl ===================================================================
10446 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10447                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10448                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10450 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10451                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10452                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10454 if test "$COM" = "MSC"; then # override the above
10455     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10456     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10459 if test "$with_system_harfbuzz" = "yes"; then
10460     if test "$with_system_graphite" = "no"; then
10461         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10462     fi
10463     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10464     save_LIBS="$LIBS"
10465     save_CFLAGS="$CFLAGS"
10466     LIBS="$LIBS $HARFBUZZ_LIBS"
10467     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10468     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10469     LIBS="$save_LIBS"
10470     CFLAGS="$save_CFLAGS"
10471 else
10472     if test "$with_system_graphite" = "yes"; then
10473         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10474     fi
10477 AC_MSG_CHECKING([whether to use X11])
10478 dnl ***************************************
10479 dnl testing for X libraries and includes...
10480 dnl ***************************************
10481 if test "$USING_X11" = TRUE; then
10482     AC_DEFINE(HAVE_FEATURE_X11)
10484 AC_MSG_RESULT([$USING_X11])
10486 if test "$USING_X11" = TRUE; then
10487     AC_PATH_X
10488     AC_PATH_XTRA
10489     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10491     if test -z "$x_includes"; then
10492         x_includes="default_x_includes"
10493     fi
10494     if test -z "$x_libraries"; then
10495         x_libraries="default_x_libraries"
10496     fi
10497     CFLAGS="$CFLAGS $X_CFLAGS"
10498     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10499     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10500 else
10501     x_includes="no_x_includes"
10502     x_libraries="no_x_libraries"
10505 if test "$USING_X11" = TRUE; then
10506     dnl ===================================================================
10507     dnl Check for extension headers
10508     dnl ===================================================================
10509     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10510      [#include <X11/extensions/shape.h>])
10512     # vcl needs ICE and SM
10513     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10514     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10515         [AC_MSG_ERROR(ICE library not found)])
10516     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10517     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10518         [AC_MSG_ERROR(SM library not found)])
10521 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10522     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10523     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10526 dnl ===================================================================
10527 dnl Check for system Xrender
10528 dnl ===================================================================
10529 AC_MSG_CHECKING([whether to use Xrender])
10530 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10531     AC_MSG_RESULT([yes])
10532     PKG_CHECK_MODULES(XRENDER, xrender)
10533     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10534     FilterLibs "${XRENDER_LIBS}"
10535     XRENDER_LIBS="${filteredlibs}"
10536     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10537       [AC_MSG_ERROR(libXrender not found or functional)], [])
10538     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10539       [AC_MSG_ERROR(Xrender not found. install X)], [])
10540 else
10541     AC_MSG_RESULT([no])
10543 AC_SUBST(XRENDER_CFLAGS)
10544 AC_SUBST(XRENDER_LIBS)
10546 dnl ===================================================================
10547 dnl Check for XRandr
10548 dnl ===================================================================
10549 AC_MSG_CHECKING([whether to enable RandR support])
10550 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10551     AC_MSG_RESULT([yes])
10552     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10553     if test "$ENABLE_RANDR" != "TRUE"; then
10554         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10555                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10556         XRANDR_CFLAGS=" "
10557         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10558           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10559         XRANDR_LIBS="-lXrandr "
10560         ENABLE_RANDR="TRUE"
10561     fi
10562     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10563     FilterLibs "${XRANDR_LIBS}"
10564     XRANDR_LIBS="${filteredlibs}"
10565 else
10566     ENABLE_RANDR=""
10567     AC_MSG_RESULT([no])
10569 AC_SUBST(XRANDR_CFLAGS)
10570 AC_SUBST(XRANDR_LIBS)
10571 AC_SUBST(ENABLE_RANDR)
10573 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10574     if test -z "$WITH_WEBDAV"; then
10575         WITH_WEBDAV="serf"
10576     fi
10578 if test $_os = iOS -o $_os = Android; then
10579     WITH_WEBDAV="no"
10581 AC_MSG_CHECKING([for webdav library])
10582 case "$WITH_WEBDAV" in
10583 serf)
10584     AC_MSG_RESULT([serf])
10585     # Check for system apr-util
10586     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10587                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10588                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10589     if test "$COM" = "MSC"; then
10590         APR_LIB_DIR="LibR"
10591         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10592         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10593     fi
10595     # Check for system serf
10596     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10597                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10598     if test "$COM" = "MSC"; then
10599         SERF_LIB_DIR="Release"
10600         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10601         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10602     fi
10603     ;;
10604 neon)
10605     AC_MSG_RESULT([neon])
10606     # Check for system neon
10607     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10608     if test "$with_system_neon" = "yes"; then
10609         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10610     else
10611         NEON_VERSION=0312
10612     fi
10613     AC_SUBST(NEON_VERSION)
10614     ;;
10616     AC_MSG_RESULT([none, disabled])
10617     WITH_WEBDAV=""
10618     ;;
10619 esac
10620 AC_SUBST(WITH_WEBDAV)
10622 dnl ===================================================================
10623 dnl Check for disabling cve_tests
10624 dnl ===================================================================
10625 AC_MSG_CHECKING([whether to execute CVE tests])
10626 # If not explicitly enabled or disabled, default
10627 if test -z "$enable_cve_tests"; then
10628     case "$OS" in
10629     WNT)
10630         # Default cves off for Windows with its wild and wonderful
10631         # variety of AV software kicking in and panicking
10632         enable_cve_tests=no
10633         ;;
10634     *)
10635         # otherwise yes
10636         enable_cve_tests=yes
10637         ;;
10638     esac
10640 if test "$enable_cve_tests" = "no"; then
10641     AC_MSG_RESULT([no])
10642     DISABLE_CVE_TESTS=TRUE
10643     AC_SUBST(DISABLE_CVE_TESTS)
10644 else
10645     AC_MSG_RESULT([yes])
10648 dnl ===================================================================
10649 dnl Check for enabling chart XShape tests
10650 dnl ===================================================================
10651 AC_MSG_CHECKING([whether to execute chart XShape tests])
10652 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10653     AC_MSG_RESULT([yes])
10654     ENABLE_CHART_TESTS=TRUE
10655     AC_SUBST(ENABLE_CHART_TESTS)
10656 else
10657     AC_MSG_RESULT([no])
10660 dnl ===================================================================
10661 dnl Check for system openssl
10662 dnl ===================================================================
10663 DISABLE_OPENSSL=
10664 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10665 if test "$enable_openssl" = "yes"; then
10666     AC_MSG_RESULT([no])
10667     if test "$_os" = Darwin ; then
10668         # OpenSSL is deprecated when building for 10.7 or later.
10669         #
10670         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10671         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10673         with_system_openssl=no
10674         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10675     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10676             && test "$with_system_openssl" != "no"; then
10677         with_system_openssl=yes
10678         SYSTEM_OPENSSL=TRUE
10679         OPENSSL_CFLAGS=
10680         OPENSSL_LIBS="-lssl -lcrypto"
10681     else
10682         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10683     fi
10684     if test "$with_system_openssl" = "yes"; then
10685         AC_MSG_CHECKING([whether openssl supports SHA512])
10686         AC_LANG_PUSH([C])
10687         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10688             SHA512_CTX context;
10689 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10690         AC_LANG_POP(C)
10691     fi
10692 else
10693     AC_MSG_RESULT([yes])
10694     DISABLE_OPENSSL=TRUE
10696     # warn that although OpenSSL is disabled, system libraries may depend on it
10697     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10698     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10701 AC_SUBST([DISABLE_OPENSSL])
10703 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10704     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10705         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10706         enable_cipher_openssl_backend=no
10707     else
10708         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10709     fi
10711 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10712 ENABLE_CIPHER_OPENSSL_BACKEND=
10713 if test "$enable_cipher_openssl_backend" = yes; then
10714     AC_MSG_RESULT([yes])
10715     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10716 else
10717     AC_MSG_RESULT([no])
10719 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10721 dnl ===================================================================
10722 dnl Check for building gnutls
10723 dnl ===================================================================
10724 AC_MSG_CHECKING([whether to use gnutls])
10725 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10726     AC_MSG_RESULT([yes])
10727     AM_PATH_LIBGCRYPT()
10728     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10729         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10730                       available in the system to use as replacement.]]))
10731     FilterLibs "${LIBGCRYPT_LIBS}"
10732     LIBGCRYPT_LIBS="${filteredlibs}"
10733 else
10734     AC_MSG_RESULT([no])
10737 AC_SUBST([LIBGCRYPT_CFLAGS])
10738 AC_SUBST([LIBGCRYPT_LIBS])
10740 dnl ===================================================================
10741 dnl Check for system redland
10742 dnl ===================================================================
10743 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10744 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10745 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10746 if test "$with_system_redland" = "yes"; then
10747     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10748             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10749 else
10750     RAPTOR_MAJOR="0"
10751     RASQAL_MAJOR="3"
10752     REDLAND_MAJOR="0"
10754 AC_SUBST(RAPTOR_MAJOR)
10755 AC_SUBST(RASQAL_MAJOR)
10756 AC_SUBST(REDLAND_MAJOR)
10758 dnl ===================================================================
10759 dnl Check for system hunspell
10760 dnl ===================================================================
10761 AC_MSG_CHECKING([which libhunspell to use])
10762 if test "$_os" = iOS; then
10763    AC_MSG_RESULT([none])
10764 elif test "$with_system_hunspell" = "yes"; then
10765     AC_MSG_RESULT([external])
10766     SYSTEM_HUNSPELL=TRUE
10767     AC_LANG_PUSH([C++])
10768     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10769     if test "$HUNSPELL_PC" != "TRUE"; then
10770         AC_CHECK_HEADER(hunspell.hxx, [],
10771             [
10772             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10773             [AC_MSG_ERROR(hunspell headers not found.)], [])
10774             ], [])
10775         AC_CHECK_LIB([hunspell], [main], [:],
10776            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10777         HUNSPELL_LIBS=-lhunspell
10778     fi
10779     AC_LANG_POP([C++])
10780     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10781     FilterLibs "${HUNSPELL_LIBS}"
10782     HUNSPELL_LIBS="${filteredlibs}"
10783 else
10784     AC_MSG_RESULT([internal])
10785     SYSTEM_HUNSPELL=
10786     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10787     if test "$COM" = "MSC"; then
10788         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10789     else
10790         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10791     fi
10792     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10794 AC_SUBST(SYSTEM_HUNSPELL)
10795 AC_SUBST(HUNSPELL_CFLAGS)
10796 AC_SUBST(HUNSPELL_LIBS)
10798 dnl ===================================================================
10799 dnl Check for system qrcodegen
10800 dnl ===================================================================
10801 AC_MSG_CHECKING([whether to use libqrcodegen])
10802 if test "$enable_qrcodegen" = "no"; then
10803     AC_MSG_RESULT([no])
10804     ENABLE_QRCODEGEN=
10805     SYSTEM_QRCODEGEN=
10806 else
10807     AC_MSG_RESULT([yes])
10808     ENABLE_QRCODEGEN=TRUE
10809     AC_MSG_CHECKING([which libqrcodegen to use])
10810     if test "$with_system_qrcodegen" = "yes"; then
10811         AC_MSG_RESULT([external])
10812         SYSTEM_QRCODEGEN=TRUE
10813         AC_LANG_PUSH([C++])
10814         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10815             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10816         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10817             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10818         QRCODEGEN_LIBS=-lqrcodegencpp
10819         AC_LANG_POP([C++])
10820         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10821         FilterLibs "${QRCODEGEN_LIBS}"
10822         QRCODEGEN_LIBS="${filteredlibs}"
10823     else
10824         AC_MSG_RESULT([internal])
10825         SYSTEM_QRCODEGEN=
10826         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10827     fi
10828     if test "$ENABLE_QRCODEGEN" = TRUE; then
10829         AC_DEFINE(ENABLE_QRCODEGEN)
10830     fi
10832 AC_SUBST(SYSTEM_QRCODEGEN)
10833 AC_SUBST(ENABLE_QRCODEGEN)
10834 AC_SUBST(QRCODEGEN_CFLAGS)
10835 AC_SUBST(QRCODEGEN_LIBS)
10837 dnl ===================================================================
10838 dnl Check for system box2d
10839 dnl ===================================================================
10840 AC_MSG_CHECKING([which box2d to use])
10841 if test "$with_system_box2d" = "yes"; then
10842     AC_MSG_RESULT([external])
10843     SYSTEM_BOX2D=TRUE
10844     AC_LANG_PUSH([C++])
10845     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10846         [BOX2D_H_FOUND='FALSE'])
10847     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10848         _BOX2D_LIB=box2d
10849         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10850     else
10851         # fail this. there's no other alternative to check when we are here.
10852         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10853                 [AC_MSG_ERROR(box2d headers not found.)])
10854         _BOX2D_LIB=Box2D
10855         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10856     fi
10857     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10858         [ AC_MSG_ERROR(box2d library not found.) ], [])
10859     BOX2D_LIBS=-l$_BOX2D_LIB
10860     AC_LANG_POP([C++])
10861     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10862     FilterLibs "${BOX2D_LIBS}"
10863     BOX2D_LIBS="${filteredlibs}"
10864 else
10865     AC_MSG_RESULT([internal])
10866     SYSTEM_BOX2D=
10867     BUILD_TYPE="$BUILD_TYPE BOX2D"
10869 AC_SUBST(SYSTEM_BOX2D)
10870 AC_SUBST(BOX2D_CFLAGS)
10871 AC_SUBST(BOX2D_LIBS)
10873 dnl ===================================================================
10874 dnl Checking for altlinuxhyph
10875 dnl ===================================================================
10876 AC_MSG_CHECKING([which altlinuxhyph to use])
10877 if test "$with_system_altlinuxhyph" = "yes"; then
10878     AC_MSG_RESULT([external])
10879     SYSTEM_HYPH=TRUE
10880     AC_CHECK_HEADER(hyphen.h, [],
10881        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10882     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10883        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10884        [#include <hyphen.h>])
10885     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10886         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10887     if test -z "$HYPHEN_LIB"; then
10888         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10889            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10890     fi
10891     if test -z "$HYPHEN_LIB"; then
10892         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10893            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10894     fi
10895 else
10896     AC_MSG_RESULT([internal])
10897     SYSTEM_HYPH=
10898     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10899     if test "$COM" = "MSC"; then
10900         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10901     else
10902         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10903     fi
10905 AC_SUBST(SYSTEM_HYPH)
10906 AC_SUBST(HYPHEN_LIB)
10908 dnl ===================================================================
10909 dnl Checking for mythes
10910 dnl ===================================================================
10911 AC_MSG_CHECKING([which mythes to use])
10912 if test "$_os" = iOS; then
10913    AC_MSG_RESULT([none])
10914 elif test "$with_system_mythes" = "yes"; then
10915     AC_MSG_RESULT([external])
10916     SYSTEM_MYTHES=TRUE
10917     AC_LANG_PUSH([C++])
10918     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10919     if test "$MYTHES_PKGCONFIG" = "no"; then
10920         AC_CHECK_HEADER(mythes.hxx, [],
10921             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10922         AC_CHECK_LIB([mythes-1.2], [main], [:],
10923             [ MYTHES_FOUND=no], [])
10924     if test "$MYTHES_FOUND" = "no"; then
10925         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10926                 [ MYTHES_FOUND=no], [])
10927     fi
10928     if test "$MYTHES_FOUND" = "no"; then
10929         AC_MSG_ERROR([mythes library not found!.])
10930     fi
10931     fi
10932     AC_LANG_POP([C++])
10933     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10934     FilterLibs "${MYTHES_LIBS}"
10935     MYTHES_LIBS="${filteredlibs}"
10936 else
10937     AC_MSG_RESULT([internal])
10938     SYSTEM_MYTHES=
10939     BUILD_TYPE="$BUILD_TYPE MYTHES"
10940     if test "$COM" = "MSC"; then
10941         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10942     else
10943         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10944     fi
10946 AC_SUBST(SYSTEM_MYTHES)
10947 AC_SUBST(MYTHES_CFLAGS)
10948 AC_SUBST(MYTHES_LIBS)
10950 dnl ===================================================================
10951 dnl How should we build the linear programming solver ?
10952 dnl ===================================================================
10954 ENABLE_COINMP=
10955 AC_MSG_CHECKING([whether to build with CoinMP])
10956 if test "$enable_coinmp" != "no"; then
10957     ENABLE_COINMP=TRUE
10958     AC_MSG_RESULT([yes])
10959     if test "$with_system_coinmp" = "yes"; then
10960         SYSTEM_COINMP=TRUE
10961         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10962         FilterLibs "${COINMP_LIBS}"
10963         COINMP_LIBS="${filteredlibs}"
10964     else
10965         BUILD_TYPE="$BUILD_TYPE COINMP"
10966     fi
10967 else
10968     AC_MSG_RESULT([no])
10970 AC_SUBST(ENABLE_COINMP)
10971 AC_SUBST(SYSTEM_COINMP)
10972 AC_SUBST(COINMP_CFLAGS)
10973 AC_SUBST(COINMP_LIBS)
10975 ENABLE_LPSOLVE=
10976 AC_MSG_CHECKING([whether to build with lpsolve])
10977 if test "$enable_lpsolve" != "no"; then
10978     ENABLE_LPSOLVE=TRUE
10979     AC_MSG_RESULT([yes])
10980 else
10981     AC_MSG_RESULT([no])
10983 AC_SUBST(ENABLE_LPSOLVE)
10985 if test "$ENABLE_LPSOLVE" = TRUE; then
10986     AC_MSG_CHECKING([which lpsolve to use])
10987     if test "$with_system_lpsolve" = "yes"; then
10988         AC_MSG_RESULT([external])
10989         SYSTEM_LPSOLVE=TRUE
10990         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10991            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10992         save_LIBS=$LIBS
10993         # some systems need this. Like Ubuntu...
10994         AC_CHECK_LIB(m, floor)
10995         AC_CHECK_LIB(dl, dlopen)
10996         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10997             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10998         LIBS=$save_LIBS
10999     else
11000         AC_MSG_RESULT([internal])
11001         SYSTEM_LPSOLVE=
11002         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11003     fi
11005 AC_SUBST(SYSTEM_LPSOLVE)
11007 dnl ===================================================================
11008 dnl Checking for libexttextcat
11009 dnl ===================================================================
11010 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11011 if test "$with_system_libexttextcat" = "yes"; then
11012     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11014 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11016 dnl ===================================================================
11017 dnl Checking for libnumbertext
11018 dnl ===================================================================
11019 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11020 if test "$with_system_libnumbertext" = "yes"; then
11021     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11022     SYSTEM_LIBNUMBERTEXT=YES
11023 else
11024     SYSTEM_LIBNUMBERTEXT=
11025     AC_LANG_PUSH([C++])
11026     save_CPPFLAGS=$CPPFLAGS
11027     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11028     AC_CHECK_HEADERS([codecvt regex])
11029     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11030             [ LIBNUMBERTEXT_CFLAGS=''
11031               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11032                            Enable libnumbertext fallback (missing number to number name conversion).])
11033             ])
11034     CPPFLAGS=$save_CPPFLAGS
11035     AC_LANG_POP([C++])
11037 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11038 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11039 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11041 dnl ***************************************
11042 dnl testing libc version for Linux...
11043 dnl ***************************************
11044 if test "$_os" = "Linux"; then
11045     AC_MSG_CHECKING([whether libc is >= 2.1.1])
11046     exec 6>/dev/null # no output
11047     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11048     exec 6>&1 # output on again
11049     if test "$HAVE_LIBC"; then
11050         AC_MSG_RESULT([yes])
11051     else
11052         AC_MSG_ERROR([no, upgrade libc])
11053     fi
11056 dnl =========================================
11057 dnl Check for uuidgen
11058 dnl =========================================
11059 if test "$_os" = "WINNT"; then
11060     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11061     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11062     UUIDGEN=uuidgen.exe
11063     AC_SUBST(UUIDGEN)
11064 else
11065     AC_PATH_PROG([UUIDGEN], [uuidgen])
11066     if test -z "$UUIDGEN"; then
11067         AC_MSG_WARN([uuid is needed for building installation sets])
11068     fi
11071 dnl ***************************************
11072 dnl Checking for bison and flex
11073 dnl ***************************************
11074 AC_PATH_PROG(BISON, bison)
11075 if test -z "$BISON"; then
11076     AC_MSG_ERROR([no bison found in \$PATH, install it])
11077 else
11078     AC_MSG_CHECKING([the bison version])
11079     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11080     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11081     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11082     dnl cause
11083     dnl
11084     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]
11085     dnl   typedef union YYSTYPE
11086     dnl           ~~~~~~^~~~~~~
11087     dnl
11088     dnl while at least 3.4.1 is know to be good:
11089     if test "$COMPILER_PLUGINS" = TRUE; then
11090         if test "$_bison_longver" -lt 2004; then
11091             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11092         fi
11093     else
11094         if test "$_bison_longver" -lt 2000; then
11095             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11096         fi
11097     fi
11099 AC_SUBST([BISON])
11101 AC_PATH_PROG(FLEX, flex)
11102 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11103     FLEX=`cygpath -m $FLEX`
11105 if test -z "$FLEX"; then
11106     AC_MSG_ERROR([no flex found in \$PATH, install it])
11107 else
11108     AC_MSG_CHECKING([the flex version])
11109     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11110     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11111         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11112     fi
11114 AC_SUBST([FLEX])
11115 dnl ***************************************
11116 dnl Checking for patch
11117 dnl ***************************************
11118 AC_PATH_PROG(PATCH, patch)
11119 if test -z "$PATCH"; then
11120     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11123 dnl On Solaris or macOS, check if --with-gnu-patch was used
11124 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11125     if test -z "$with_gnu_patch"; then
11126         GNUPATCH=$PATCH
11127     else
11128         if test -x "$with_gnu_patch"; then
11129             GNUPATCH=$with_gnu_patch
11130         else
11131             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11132         fi
11133     fi
11135     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11136     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11137         AC_MSG_RESULT([yes])
11138     else
11139         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11140     fi
11141 else
11142     GNUPATCH=$PATCH
11145 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11146     GNUPATCH=`cygpath -m $GNUPATCH`
11149 dnl We also need to check for --with-gnu-cp
11151 if test -z "$with_gnu_cp"; then
11152     # check the place where the good stuff is hidden on Solaris...
11153     if test -x /usr/gnu/bin/cp; then
11154         GNUCP=/usr/gnu/bin/cp
11155     else
11156         AC_PATH_PROGS(GNUCP, gnucp cp)
11157     fi
11158     if test -z $GNUCP; then
11159         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11160     fi
11161 else
11162     if test -x "$with_gnu_cp"; then
11163         GNUCP=$with_gnu_cp
11164     else
11165         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11166     fi
11169 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11170     GNUCP=`cygpath -m $GNUCP`
11173 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11174 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11175     AC_MSG_RESULT([yes])
11176 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11177     AC_MSG_RESULT([yes])
11178 else
11179     case "$build_os" in
11180     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11181         x_GNUCP=[\#]
11182         GNUCP=''
11183         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11184         ;;
11185     *)
11186         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11187         ;;
11188     esac
11191 AC_SUBST(GNUPATCH)
11192 AC_SUBST(GNUCP)
11193 AC_SUBST(x_GNUCP)
11195 dnl ***************************************
11196 dnl testing assembler path
11197 dnl ***************************************
11198 ML_EXE=""
11199 if test "$_os" = "WINNT"; then
11200     case "$WIN_HOST_ARCH" in
11201     x86) assembler=ml.exe ;;
11202     x64) assembler=ml64.exe ;;
11203     arm64) assembler=armasm64.exe ;;
11204     esac
11206     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11207     if test -f "$MSVC_HOST_PATH/$assembler"; then
11208         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11209         AC_MSG_RESULT([$ML_EXE])
11210     else
11211         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11212     fi
11215 AC_SUBST(ML_EXE)
11217 dnl ===================================================================
11218 dnl We need zip and unzip
11219 dnl ===================================================================
11220 AC_PATH_PROG(ZIP, zip)
11221 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11222 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11223     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],,)
11226 AC_PATH_PROG(UNZIP, unzip)
11227 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11229 dnl ===================================================================
11230 dnl Zip must be a specific type for different build types.
11231 dnl ===================================================================
11232 if test $build_os = cygwin; then
11233     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11234         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11235     fi
11238 dnl ===================================================================
11239 dnl We need touch with -h option support.
11240 dnl ===================================================================
11241 AC_PATH_PROG(TOUCH, touch)
11242 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11243 touch warn
11244 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11245     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],,)
11248 dnl ===================================================================
11249 dnl Check for system epoxy
11250 dnl ===================================================================
11251 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11253 dnl ===================================================================
11254 dnl Set vcl option: coordinate device in double or sal_Int32
11255 dnl ===================================================================
11257 dnl disabled for now, we don't want subtle differences between OSs
11258 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11259 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11260 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11261 dnl     AC_MSG_RESULT([double])
11262 dnl else
11263 dnl     AC_MSG_RESULT([sal_Int32])
11264 dnl fi
11266 dnl ===================================================================
11267 dnl Test which vclplugs have to be built.
11268 dnl ===================================================================
11269 R=""
11270 if test "$USING_X11" != TRUE; then
11271     enable_gtk3=no
11274 ENABLE_GTK3=""
11275 if test "x$enable_gtk3" = "xyes"; then
11276     ENABLE_GTK3="TRUE"
11277     AC_DEFINE(ENABLE_GTK3)
11278     R="$R gtk3"
11280 AC_SUBST(ENABLE_GTK3)
11282 ENABLE_GTK3_KDE5=""
11283 if test "x$enable_gtk3_kde5" = "xyes"; then
11284     ENABLE_GTK3_KDE5="TRUE"
11285     AC_DEFINE(ENABLE_GTK3_KDE5)
11286     R="$R gtk3_kde5"
11288 AC_SUBST(ENABLE_GTK3_KDE5)
11290 ENABLE_QT5=""
11291 if test "x$enable_qt5" = "xyes"; then
11292     ENABLE_QT5="TRUE"
11293     AC_DEFINE(ENABLE_QT5)
11294     R="$R qt5"
11296 AC_SUBST(ENABLE_QT5)
11298 ENABLE_KF5=""
11299 if test "x$enable_kf5" = "xyes"; then
11300     ENABLE_KF5="TRUE"
11301     AC_DEFINE(ENABLE_KF5)
11302     R="$R kf5"
11304 AC_SUBST(ENABLE_KF5)
11306 GTK3_CFLAGS=""
11307 GTK3_LIBS=""
11308 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11309     if test "$with_system_cairo" = no; then
11310         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11311     fi
11312     : ${with_system_cairo:=yes}
11313     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)
11314     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11315     FilterLibs "${GTK3_LIBS}"
11316     GTK3_LIBS="${filteredlibs}"
11318     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11319     if test "$with_system_epoxy" != "yes"; then
11320         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11321         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11322                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11323     fi
11325 AC_SUBST(GTK3_LIBS)
11326 AC_SUBST(GTK3_CFLAGS)
11328 if test "$enable_introspection" = yes; then
11329     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11330         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11331     else
11332         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11333     fi
11336 if test "$_os" = "WINNT"; then
11337     R="$R win"
11338 elif test "$_os" = "Darwin"; then
11339     R="$R osx"
11340 elif test "$_os" = "iOS"; then
11341     R="ios (builtin)"
11344 build_vcl_plugins="$R"
11345 if test -z "$build_vcl_plugins"; then
11346     build_vcl_plugins="none"
11348 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11350 dnl ===================================================================
11351 dnl check for dbus support
11352 dnl ===================================================================
11353 ENABLE_DBUS=""
11354 DBUS_CFLAGS=""
11355 DBUS_LIBS=""
11356 DBUS_GLIB_CFLAGS=""
11357 DBUS_GLIB_LIBS=""
11358 DBUS_HAVE_GLIB=""
11360 if test "$enable_dbus" = "no"; then
11361     test_dbus=no
11364 AC_MSG_CHECKING([whether to enable DBUS support])
11365 if test "$test_dbus" = "yes"; then
11366     ENABLE_DBUS="TRUE"
11367     AC_MSG_RESULT([yes])
11368     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11369     AC_DEFINE(ENABLE_DBUS)
11370     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11371     FilterLibs "${DBUS_LIBS}"
11372     DBUS_LIBS="${filteredlibs}"
11374     # Glib is needed for BluetoothServer
11375     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11376     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11377         [
11378             DBUS_HAVE_GLIB="TRUE"
11379             AC_DEFINE(DBUS_HAVE_GLIB,1)
11380         ],
11381         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11382     )
11383 else
11384     AC_MSG_RESULT([no])
11387 AC_SUBST(ENABLE_DBUS)
11388 AC_SUBST(DBUS_CFLAGS)
11389 AC_SUBST(DBUS_LIBS)
11390 AC_SUBST(DBUS_GLIB_CFLAGS)
11391 AC_SUBST(DBUS_GLIB_LIBS)
11392 AC_SUBST(DBUS_HAVE_GLIB)
11394 AC_MSG_CHECKING([whether to enable Impress remote control])
11395 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11396     AC_MSG_RESULT([yes])
11397     ENABLE_SDREMOTE=TRUE
11398     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11400     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11401         # The Bluetooth code doesn't compile with macOS SDK 10.15
11402         if test "$enable_sdremote_bluetooth" = yes; then
11403             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11404         fi
11405         enable_sdremote_bluetooth=no
11406     fi
11407     # If not explicitly enabled or disabled, default
11408     if test -z "$enable_sdremote_bluetooth"; then
11409         case "$OS" in
11410         LINUX|MACOSX|WNT)
11411             # Default to yes for these
11412             enable_sdremote_bluetooth=yes
11413             ;;
11414         *)
11415             # otherwise no
11416             enable_sdremote_bluetooth=no
11417             ;;
11418         esac
11419     fi
11420     # $enable_sdremote_bluetooth is guaranteed non-empty now
11422     if test "$enable_sdremote_bluetooth" != "no"; then
11423         if test "$OS" = "LINUX"; then
11424             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11425                 AC_MSG_RESULT([yes])
11426                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11427                 dnl ===================================================================
11428                 dnl Check for system bluez
11429                 dnl ===================================================================
11430                 AC_MSG_CHECKING([which Bluetooth header to use])
11431                 if test "$with_system_bluez" = "yes"; then
11432                     AC_MSG_RESULT([external])
11433                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11434                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11435                     SYSTEM_BLUEZ=TRUE
11436                 else
11437                     AC_MSG_RESULT([internal])
11438                     SYSTEM_BLUEZ=
11439                 fi
11440             else
11441                 AC_MSG_RESULT([no, dbus disabled])
11442                 ENABLE_SDREMOTE_BLUETOOTH=
11443                 SYSTEM_BLUEZ=
11444             fi
11445         else
11446             AC_MSG_RESULT([yes])
11447             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11448             SYSTEM_BLUEZ=
11449         fi
11450     else
11451         AC_MSG_RESULT([no])
11452         ENABLE_SDREMOTE_BLUETOOTH=
11453         SYSTEM_BLUEZ=
11454     fi
11455 else
11456     ENABLE_SDREMOTE=
11457     SYSTEM_BLUEZ=
11458     AC_MSG_RESULT([no])
11460 AC_SUBST(ENABLE_SDREMOTE)
11461 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11462 AC_SUBST(SYSTEM_BLUEZ)
11464 dnl ===================================================================
11465 dnl Check whether to enable GIO support
11466 dnl ===================================================================
11467 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11468     AC_MSG_CHECKING([whether to enable GIO support])
11469     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11470         dnl Need at least 2.26 for the dbus support.
11471         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11472                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11473         if test "$ENABLE_GIO" = "TRUE"; then
11474             AC_DEFINE(ENABLE_GIO)
11475             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11476             FilterLibs "${GIO_LIBS}"
11477             GIO_LIBS="${filteredlibs}"
11478         fi
11479     else
11480         AC_MSG_RESULT([no])
11481     fi
11483 AC_SUBST(ENABLE_GIO)
11484 AC_SUBST(GIO_CFLAGS)
11485 AC_SUBST(GIO_LIBS)
11488 dnl ===================================================================
11490 SPLIT_APP_MODULES=""
11491 if test "$enable_split_app_modules" = "yes"; then
11492     SPLIT_APP_MODULES="TRUE"
11494 AC_SUBST(SPLIT_APP_MODULES)
11496 SPLIT_OPT_FEATURES=""
11497 if test "$enable_split_opt_features" = "yes"; then
11498     SPLIT_OPT_FEATURES="TRUE"
11500 AC_SUBST(SPLIT_OPT_FEATURES)
11502 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11503     if test "$enable_cairo_canvas" = yes; then
11504         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11505     fi
11506     enable_cairo_canvas=no
11507 elif test -z "$enable_cairo_canvas"; then
11508     enable_cairo_canvas=yes
11511 ENABLE_CAIRO_CANVAS=""
11512 if test "$enable_cairo_canvas" = "yes"; then
11513     test_cairo=yes
11514     ENABLE_CAIRO_CANVAS="TRUE"
11515     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11517 AC_SUBST(ENABLE_CAIRO_CANVAS)
11519 dnl ===================================================================
11520 dnl Check whether the GStreamer libraries are available.
11521 dnl ===================================================================
11523 ENABLE_GSTREAMER_1_0=""
11525 if test "$build_gstreamer_1_0" = "yes"; then
11527     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11528     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11529         ENABLE_GSTREAMER_1_0="TRUE"
11530         AC_MSG_RESULT([yes])
11531         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11532         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11533         FilterLibs "${GSTREAMER_1_0_LIBS}"
11534         GSTREAMER_1_0_LIBS="${filteredlibs}"
11535         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11536     else
11537         AC_MSG_RESULT([no])
11538     fi
11540 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11541 AC_SUBST(GSTREAMER_1_0_LIBS)
11542 AC_SUBST(ENABLE_GSTREAMER_1_0)
11544 dnl ===================================================================
11545 dnl Check whether to build the VLC avmedia backend
11546 dnl ===================================================================
11548 ENABLE_VLC=""
11550 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11551 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11552     ENABLE_VLC="TRUE"
11553     AC_MSG_RESULT([yes])
11554 else
11555     AC_MSG_RESULT([no])
11557 AC_SUBST(ENABLE_VLC)
11559 ENABLE_OPENGL_TRANSITIONS=
11560 ENABLE_OPENGL_CANVAS=
11561 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11562    : # disable
11563 elif test "$_os" = "Darwin"; then
11564     # We use frameworks on macOS, no need for detail checks
11565     ENABLE_OPENGL_TRANSITIONS=TRUE
11566     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11567     ENABLE_OPENGL_CANVAS=TRUE
11568 elif test $_os = WINNT; then
11569     ENABLE_OPENGL_TRANSITIONS=TRUE
11570     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11571     ENABLE_OPENGL_CANVAS=TRUE
11572 else
11573     if test "$USING_X11" = TRUE; then
11574         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11575         ENABLE_OPENGL_TRANSITIONS=TRUE
11576         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11577         ENABLE_OPENGL_CANVAS=TRUE
11578     fi
11581 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11582 AC_SUBST(ENABLE_OPENGL_CANVAS)
11584 dnl =================================================
11585 dnl Check whether to build with OpenCL support.
11586 dnl =================================================
11588 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11589     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11590     # platform (optional at run-time, used through clew).
11591     BUILD_TYPE="$BUILD_TYPE OPENCL"
11592     AC_DEFINE(HAVE_FEATURE_OPENCL)
11595 dnl =================================================
11596 dnl Check whether to build with dconf support.
11597 dnl =================================================
11599 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11600     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11601         if test "$enable_dconf" = yes; then
11602             AC_MSG_ERROR([dconf not found])
11603         else
11604             enable_dconf=no
11605         fi])
11607 AC_MSG_CHECKING([whether to enable dconf])
11608 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11609     DCONF_CFLAGS=
11610     DCONF_LIBS=
11611     ENABLE_DCONF=
11612     AC_MSG_RESULT([no])
11613 else
11614     ENABLE_DCONF=TRUE
11615     AC_DEFINE(ENABLE_DCONF)
11616     AC_MSG_RESULT([yes])
11618 AC_SUBST([DCONF_CFLAGS])
11619 AC_SUBST([DCONF_LIBS])
11620 AC_SUBST([ENABLE_DCONF])
11622 # pdf import?
11623 AC_MSG_CHECKING([whether to build the PDF import feature])
11624 ENABLE_PDFIMPORT=
11625 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11626     AC_MSG_RESULT([yes])
11627     ENABLE_PDFIMPORT=TRUE
11628     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11629 else
11630     AC_MSG_RESULT([no])
11633 # Pdfium?
11634 AC_MSG_CHECKING([whether to build PDFium])
11635 ENABLE_PDFIUM=
11636 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11637     AC_MSG_RESULT([yes])
11638     ENABLE_PDFIUM=TRUE
11639     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11640     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11641 else
11642     AC_MSG_RESULT([no])
11644 AC_SUBST(ENABLE_PDFIUM)
11646 dnl ===================================================================
11647 dnl Check for poppler
11648 dnl ===================================================================
11649 ENABLE_POPPLER=
11650 AC_MSG_CHECKING([whether to build Poppler])
11651 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11652     AC_MSG_RESULT([yes])
11653     ENABLE_POPPLER=TRUE
11654     AC_DEFINE(HAVE_FEATURE_POPPLER)
11655 else
11656     AC_MSG_RESULT([no])
11658 AC_SUBST(ENABLE_POPPLER)
11660 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11661     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11664 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11665     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11668 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11669     dnl ===================================================================
11670     dnl Check for system poppler
11671     dnl ===================================================================
11672     AC_MSG_CHECKING([which PDF import poppler to use])
11673     if test "$with_system_poppler" = "yes"; then
11674         AC_MSG_RESULT([external])
11675         SYSTEM_POPPLER=TRUE
11676         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11677         AC_LANG_PUSH([C++])
11678         save_CXXFLAGS=$CXXFLAGS
11679         save_CPPFLAGS=$CPPFLAGS
11680         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11681         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11682         AC_CHECK_HEADER([cpp/poppler-version.h],
11683             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11684             [])
11685         CXXFLAGS=$save_CXXFLAGS
11686         CPPFLAGS=$save_CPPFLAGS
11687         AC_LANG_POP([C++])
11688         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11690         FilterLibs "${POPPLER_LIBS}"
11691         POPPLER_LIBS="${filteredlibs}"
11692     else
11693         AC_MSG_RESULT([internal])
11694         SYSTEM_POPPLER=
11695         BUILD_TYPE="$BUILD_TYPE POPPLER"
11696         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11697     fi
11698     AC_DEFINE([ENABLE_PDFIMPORT],1)
11700 AC_SUBST(ENABLE_PDFIMPORT)
11701 AC_SUBST(SYSTEM_POPPLER)
11702 AC_SUBST(POPPLER_CFLAGS)
11703 AC_SUBST(POPPLER_LIBS)
11705 # Skia?
11706 AC_MSG_CHECKING([whether to build Skia])
11707 ENABLE_SKIA=
11708 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11709     if test "$enable_skia" = "debug"; then
11710         AC_MSG_RESULT([yes (debug)])
11711         ENABLE_SKIA_DEBUG=TRUE
11712     else
11713         AC_MSG_RESULT([yes])
11714         ENABLE_SKIA_DEBUG=
11715     fi
11716     ENABLE_SKIA=TRUE
11717     AC_DEFINE(HAVE_FEATURE_SKIA)
11718     BUILD_TYPE="$BUILD_TYPE SKIA"
11719 else
11720     AC_MSG_RESULT([no])
11722 AC_SUBST(ENABLE_SKIA)
11723 AC_SUBST(ENABLE_SKIA_DEBUG)
11725 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11726 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11727 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11728 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11729 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11730 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11731 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11732 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11733 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11734 HAVE_LO_CLANG_DLLEXPORTINLINES=
11736 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11737     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11738         AC_MSG_CHECKING([for Clang])
11739         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11740     else
11741         if test "$_os" = "WINNT"; then
11742             AC_MSG_CHECKING([for clang-cl])
11743             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11744                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11745                 dnl explicitly set -m32/-m64
11746                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11747                 LO_CLANG_CXX="$LO_CLANG_CC"
11748                 AC_MSG_RESULT([$LO_CLANG_CC])
11749             else
11750                 AC_MSG_RESULT([no])
11751             fi
11752         else
11753             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11754             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11755         fi
11756     fi
11757     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11758         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11759         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11760         if test "$clang2_ver" -lt 50002; then
11761             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11762             LO_CLANG_CC=
11763             LO_CLANG_CXX=
11764         fi
11765     fi
11766     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
11767         save_CXX="$CXX"
11768         CXX="$LO_CLANG_CXX"
11769         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
11770         AC_LANG_PUSH([C++])
11771         save_CXXFLAGS=$CXXFLAGS
11772         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
11773         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
11774                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
11775                 AC_MSG_RESULT([yes])
11776             ], [AC_MSG_RESULT([no])])
11777         CXXFLAGS=$save_CXXFLAGS
11778         AC_LANG_POP([C++])
11779         CXX="$save_CXX"
11780         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
11781             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.])
11782         fi
11783     fi
11784     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11785         # Skia is the default on Windows, so hard-require Clang.
11786         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11787         if test "$_os" = "WINNT"; then
11788             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11789         else
11790             AC_MSG_WARN([Clang compiler not found.])
11791         fi
11792     else
11794         save_CXX="$CXX"
11795         CXX="$LO_CLANG_CXX"
11796         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11797         flag_sse2=-msse2
11798         flag_ssse3=-mssse3
11799         flag_sse41=-msse4.1
11800         flag_sse42=-msse4.2
11801         flag_avx=-mavx
11802         flag_avx2=-mavx2
11803         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11804         flag_f16c=-mf16c
11805         flag_fma=-mfma
11807         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11808         AC_LANG_PUSH([C++])
11809         save_CXXFLAGS=$CXXFLAGS
11810         CXXFLAGS="$CXXFLAGS $flag_sse2"
11811         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11812             #include <emmintrin.h>
11813             int main () {
11814                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11815                 c = _mm_xor_si128 (a, b);
11816                 return 0;
11817             }
11818             ])],
11819             [can_compile_sse2=yes],
11820             [can_compile_sse2=no])
11821         AC_LANG_POP([C++])
11822         CXXFLAGS=$save_CXXFLAGS
11823         AC_MSG_RESULT([${can_compile_sse2}])
11824         if test "${can_compile_sse2}" = "yes" ; then
11825             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11826         fi
11828         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11829         AC_LANG_PUSH([C++])
11830         save_CXXFLAGS=$CXXFLAGS
11831         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11832         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11833             #include <tmmintrin.h>
11834             int main () {
11835                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11836                 c = _mm_maddubs_epi16 (a, b);
11837                 return 0;
11838             }
11839             ])],
11840             [can_compile_ssse3=yes],
11841             [can_compile_ssse3=no])
11842         AC_LANG_POP([C++])
11843         CXXFLAGS=$save_CXXFLAGS
11844         AC_MSG_RESULT([${can_compile_ssse3}])
11845         if test "${can_compile_ssse3}" = "yes" ; then
11846             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11847         fi
11849         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11850         AC_LANG_PUSH([C++])
11851         save_CXXFLAGS=$CXXFLAGS
11852         CXXFLAGS="$CXXFLAGS $flag_sse41"
11853         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11854             #include <smmintrin.h>
11855             int main () {
11856                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11857                 c = _mm_cmpeq_epi64 (a, b);
11858                 return 0;
11859             }
11860             ])],
11861             [can_compile_sse41=yes],
11862             [can_compile_sse41=no])
11863         AC_LANG_POP([C++])
11864         CXXFLAGS=$save_CXXFLAGS
11865         AC_MSG_RESULT([${can_compile_sse41}])
11866         if test "${can_compile_sse41}" = "yes" ; then
11867             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11868         fi
11870         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11871         AC_LANG_PUSH([C++])
11872         save_CXXFLAGS=$CXXFLAGS
11873         CXXFLAGS="$CXXFLAGS $flag_sse42"
11874         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11875             #include <nmmintrin.h>
11876             int main () {
11877                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11878                 c = _mm_cmpgt_epi64 (a, b);
11879                 return 0;
11880             }
11881             ])],
11882             [can_compile_sse42=yes],
11883             [can_compile_sse42=no])
11884         AC_LANG_POP([C++])
11885         CXXFLAGS=$save_CXXFLAGS
11886         AC_MSG_RESULT([${can_compile_sse42}])
11887         if test "${can_compile_sse42}" = "yes" ; then
11888             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11889         fi
11891         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11892         AC_LANG_PUSH([C++])
11893         save_CXXFLAGS=$CXXFLAGS
11894         CXXFLAGS="$CXXFLAGS $flag_avx"
11895         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11896             #include <immintrin.h>
11897             int main () {
11898                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11899                 c = _mm256_xor_ps(a, b);
11900                 return 0;
11901             }
11902             ])],
11903             [can_compile_avx=yes],
11904             [can_compile_avx=no])
11905         AC_LANG_POP([C++])
11906         CXXFLAGS=$save_CXXFLAGS
11907         AC_MSG_RESULT([${can_compile_avx}])
11908         if test "${can_compile_avx}" = "yes" ; then
11909             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11910         fi
11912         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11913         AC_LANG_PUSH([C++])
11914         save_CXXFLAGS=$CXXFLAGS
11915         CXXFLAGS="$CXXFLAGS $flag_avx2"
11916         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11917             #include <immintrin.h>
11918             int main () {
11919                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11920                 c = _mm256_maddubs_epi16(a, b);
11921                 return 0;
11922             }
11923             ])],
11924             [can_compile_avx2=yes],
11925             [can_compile_avx2=no])
11926         AC_LANG_POP([C++])
11927         CXXFLAGS=$save_CXXFLAGS
11928         AC_MSG_RESULT([${can_compile_avx2}])
11929         if test "${can_compile_avx2}" = "yes" ; then
11930             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11931         fi
11933         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11934         AC_LANG_PUSH([C++])
11935         save_CXXFLAGS=$CXXFLAGS
11936         CXXFLAGS="$CXXFLAGS $flag_avx512"
11937         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11938             #include <immintrin.h>
11939             int main () {
11940                 __m512i a = _mm512_loadu_si512(0);
11941                 return 0;
11942             }
11943             ])],
11944             [can_compile_avx512=yes],
11945             [can_compile_avx512=no])
11946         AC_LANG_POP([C++])
11947         CXXFLAGS=$save_CXXFLAGS
11948         AC_MSG_RESULT([${can_compile_avx512}])
11949         if test "${can_compile_avx512}" = "yes" ; then
11950             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11951         fi
11953         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11954         AC_LANG_PUSH([C++])
11955         save_CXXFLAGS=$CXXFLAGS
11956         CXXFLAGS="$CXXFLAGS $flag_f16c"
11957         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11958             #include <immintrin.h>
11959             int main () {
11960                 __m128i a = _mm_set1_epi32 (0);
11961                 __m128 c;
11962                 c = _mm_cvtph_ps(a);
11963                 return 0;
11964             }
11965             ])],
11966             [can_compile_f16c=yes],
11967             [can_compile_f16c=no])
11968         AC_LANG_POP([C++])
11969         CXXFLAGS=$save_CXXFLAGS
11970         AC_MSG_RESULT([${can_compile_f16c}])
11971         if test "${can_compile_f16c}" = "yes" ; then
11972             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11973         fi
11975         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11976         AC_LANG_PUSH([C++])
11977         save_CXXFLAGS=$CXXFLAGS
11978         CXXFLAGS="$CXXFLAGS $flag_fma"
11979         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11980             #include <immintrin.h>
11981             int main () {
11982                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11983                 d = _mm256_fmadd_ps(a, b, c);
11984                 return 0;
11985             }
11986             ])],
11987             [can_compile_fma=yes],
11988             [can_compile_fma=no])
11989         AC_LANG_POP([C++])
11990         CXXFLAGS=$save_CXXFLAGS
11991         AC_MSG_RESULT([${can_compile_fma}])
11992         if test "${can_compile_fma}" = "yes" ; then
11993             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11994         fi
11996         CXX="$save_CXX"
11997     fi
12000 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12002 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12003     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12004     AC_LANG_PUSH([C])
12005     save_CC="$CC"
12006     CC="$LO_CLANG_CC"
12007     save_CFLAGS=$CFLAGS
12008     CFLAGS="$CFLAGS --ccache-skip -O2"
12009     dnl an empty program will do, we're checking the compiler flags
12010     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12011                       [use_ccache=yes], [use_ccache=no])
12012     CFLAGS=$save_CFLAGS
12013     CC=$save_CC
12014     if test $use_ccache = yes; then
12015         AC_MSG_RESULT([yes])
12016     else
12017         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12018         AC_MSG_RESULT([no])
12019     fi
12020     AC_LANG_POP([C])
12022     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12023     AC_LANG_PUSH([C++])
12024     save_CXX="$CXX"
12025     CXX="$LO_CLANG_CXX"
12026     save_CXXFLAGS=$CXXFLAGS
12027     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12028     dnl an empty program will do, we're checking the compiler flags
12029     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12030                       [use_ccache=yes], [use_ccache=no])
12031     if test $use_ccache = yes; then
12032         AC_MSG_RESULT([yes])
12033     else
12034         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12035         AC_MSG_RESULT([no])
12036     fi
12037     CXXFLAGS=$save_CXXFLAGS
12038     CXX=$save_CXX
12039     AC_LANG_POP([C++])
12042 AC_SUBST(LO_CLANG_CC)
12043 AC_SUBST(LO_CLANG_CXX)
12044 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12045 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12046 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12047 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12048 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12049 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12050 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12051 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12052 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12053 AC_SUBST(CLANG_USE_LD)
12054 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12056 SYSTEM_GPGMEPP=
12058 if test "$enable_gpgmepp" = no; then
12059     AC_MSG_CHECKING([whether to enable gpgmepp])
12060     AC_MSG_RESULT([no])
12061 elif test "$enable_mpl_subset" = "yes"; then
12062     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12063     AC_MSG_RESULT([yes])
12064 elif test "$enable_fuzzers" = "yes"; then
12065     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12066     AC_MSG_RESULT([yes])
12067 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12068     dnl ===================================================================
12069     dnl Check for system gpgme
12070     dnl ===================================================================
12071     AC_MSG_CHECKING([which gpgmepp to use])
12072     if test "$with_system_gpgmepp" = "yes"; then
12073         AC_MSG_RESULT([external])
12074         SYSTEM_GPGMEPP=TRUE
12076         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12077         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12078             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12079         # progress_callback is the only func with plain C linkage
12080         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12081         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12082             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12083         AC_CHECK_HEADER(gpgme.h, [],
12084             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12085     else
12086         AC_MSG_RESULT([internal])
12087         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12088         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12090         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12091         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12092         if test "$_os" != "WINNT"; then
12093             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12094             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12095         fi
12096     fi
12097     ENABLE_GPGMEPP=TRUE
12098     AC_DEFINE([HAVE_FEATURE_GPGME])
12099     AC_PATH_PROG(GPG, gpg)
12100     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12101     # so let's exclude that manually for the moment
12102     if test -n "$GPG" -a "$_os" != "WINNT"; then
12103         # make sure we not only have a working gpgme, but a full working
12104         # gpg installation to run OpenPGP signature verification
12105         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12106     fi
12107     if test "$_os" = "Linux"; then
12108       uid=`id -u`
12109       AC_MSG_CHECKING([for /run/user/$uid])
12110       if test -d /run/user/$uid; then
12111         AC_MSG_RESULT([yes])
12112         AC_PATH_PROG(GPGCONF, gpgconf)
12114         # Older versions of gpgconf are not working as expected, since
12115         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12116         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12117         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12118         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12119         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12120         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12121         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12122           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12123           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12124           if $GPGCONF --dump-options > /dev/null ; then
12125             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12126               AC_MSG_RESULT([yes])
12127               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12128               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12129             else
12130               AC_MSG_RESULT([no])
12131             fi
12132           else
12133             AC_MSG_RESULT([no. missing or broken gpgconf?])
12134           fi
12135         else
12136           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12137         fi
12138       else
12139         AC_MSG_RESULT([no])
12140      fi
12141    fi
12143 AC_SUBST(ENABLE_GPGMEPP)
12144 AC_SUBST(SYSTEM_GPGMEPP)
12145 AC_SUBST(GPG_ERROR_CFLAGS)
12146 AC_SUBST(GPG_ERROR_LIBS)
12147 AC_SUBST(LIBASSUAN_CFLAGS)
12148 AC_SUBST(LIBASSUAN_LIBS)
12149 AC_SUBST(GPGMEPP_CFLAGS)
12150 AC_SUBST(GPGMEPP_LIBS)
12152 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12153 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12154     AC_MSG_RESULT([yes])
12155     ENABLE_MEDIAWIKI=TRUE
12156     BUILD_TYPE="$BUILD_TYPE XSLTML"
12157     if test  "x$with_java" = "xno"; then
12158         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12159     fi
12160 else
12161     AC_MSG_RESULT([no])
12162     ENABLE_MEDIAWIKI=
12163     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12165 AC_SUBST(ENABLE_MEDIAWIKI)
12167 AC_MSG_CHECKING([whether to build the Report Builder])
12168 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12169     AC_MSG_RESULT([yes])
12170     ENABLE_REPORTBUILDER=TRUE
12171     AC_MSG_CHECKING([which jfreereport libs to use])
12172     if test "$with_system_jfreereport" = "yes"; then
12173         SYSTEM_JFREEREPORT=TRUE
12174         AC_MSG_RESULT([external])
12175         if test -z $SAC_JAR; then
12176             SAC_JAR=/usr/share/java/sac.jar
12177         fi
12178         if ! test -f $SAC_JAR; then
12179              AC_MSG_ERROR(sac.jar not found.)
12180         fi
12182         if test -z $LIBXML_JAR; then
12183             if test -f /usr/share/java/libxml-1.0.0.jar; then
12184                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12185             elif test -f /usr/share/java/libxml.jar; then
12186                 LIBXML_JAR=/usr/share/java/libxml.jar
12187             else
12188                 AC_MSG_ERROR(libxml.jar replacement not found.)
12189             fi
12190         elif ! test -f $LIBXML_JAR; then
12191             AC_MSG_ERROR(libxml.jar not found.)
12192         fi
12194         if test -z $FLUTE_JAR; then
12195             if test -f /usr/share/java/flute-1.3.0.jar; then
12196                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12197             elif test -f /usr/share/java/flute.jar; then
12198                 FLUTE_JAR=/usr/share/java/flute.jar
12199             else
12200                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12201             fi
12202         elif ! test -f $FLUTE_JAR; then
12203             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12204         fi
12206         if test -z $JFREEREPORT_JAR; then
12207             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12208                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12209             elif test -f /usr/share/java/flow-engine.jar; then
12210                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12211             else
12212                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12213             fi
12214         elif ! test -f  $JFREEREPORT_JAR; then
12215                 AC_MSG_ERROR(jfreereport.jar not found.)
12216         fi
12218         if test -z $LIBLAYOUT_JAR; then
12219             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12220                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12221             elif test -f /usr/share/java/liblayout.jar; then
12222                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12223             else
12224                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12225             fi
12226         elif ! test -f $LIBLAYOUT_JAR; then
12227                 AC_MSG_ERROR(liblayout.jar not found.)
12228         fi
12230         if test -z $LIBLOADER_JAR; then
12231             if test -f /usr/share/java/libloader-1.0.0.jar; then
12232                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12233             elif test -f /usr/share/java/libloader.jar; then
12234                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12235             else
12236                 AC_MSG_ERROR(libloader.jar replacement not found.)
12237             fi
12238         elif ! test -f  $LIBLOADER_JAR; then
12239             AC_MSG_ERROR(libloader.jar not found.)
12240         fi
12242         if test -z $LIBFORMULA_JAR; then
12243             if test -f /usr/share/java/libformula-0.2.0.jar; then
12244                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12245             elif test -f /usr/share/java/libformula.jar; then
12246                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12247             else
12248                 AC_MSG_ERROR(libformula.jar replacement not found.)
12249             fi
12250         elif ! test -f $LIBFORMULA_JAR; then
12251                 AC_MSG_ERROR(libformula.jar not found.)
12252         fi
12254         if test -z $LIBREPOSITORY_JAR; then
12255             if test -f /usr/share/java/librepository-1.0.0.jar; then
12256                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12257             elif test -f /usr/share/java/librepository.jar; then
12258                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12259             else
12260                 AC_MSG_ERROR(librepository.jar replacement not found.)
12261             fi
12262         elif ! test -f $LIBREPOSITORY_JAR; then
12263             AC_MSG_ERROR(librepository.jar not found.)
12264         fi
12266         if test -z $LIBFONTS_JAR; then
12267             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12268                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12269             elif test -f /usr/share/java/libfonts.jar; then
12270                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12271             else
12272                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12273             fi
12274         elif ! test -f $LIBFONTS_JAR; then
12275                 AC_MSG_ERROR(libfonts.jar not found.)
12276         fi
12278         if test -z $LIBSERIALIZER_JAR; then
12279             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12280                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12281             elif test -f /usr/share/java/libserializer.jar; then
12282                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12283             else
12284                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12285             fi
12286         elif ! test -f $LIBSERIALIZER_JAR; then
12287                 AC_MSG_ERROR(libserializer.jar not found.)
12288         fi
12290         if test -z $LIBBASE_JAR; then
12291             if test -f /usr/share/java/libbase-1.0.0.jar; then
12292                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12293             elif test -f /usr/share/java/libbase.jar; then
12294                 LIBBASE_JAR=/usr/share/java/libbase.jar
12295             else
12296                 AC_MSG_ERROR(libbase.jar replacement not found.)
12297             fi
12298         elif ! test -f $LIBBASE_JAR; then
12299             AC_MSG_ERROR(libbase.jar not found.)
12300         fi
12302     else
12303         AC_MSG_RESULT([internal])
12304         SYSTEM_JFREEREPORT=
12305         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12306         NEED_ANT=TRUE
12307     fi
12308 else
12309     AC_MSG_RESULT([no])
12310     ENABLE_REPORTBUILDER=
12311     SYSTEM_JFREEREPORT=
12313 AC_SUBST(ENABLE_REPORTBUILDER)
12314 AC_SUBST(SYSTEM_JFREEREPORT)
12315 AC_SUBST(SAC_JAR)
12316 AC_SUBST(LIBXML_JAR)
12317 AC_SUBST(FLUTE_JAR)
12318 AC_SUBST(JFREEREPORT_JAR)
12319 AC_SUBST(LIBBASE_JAR)
12320 AC_SUBST(LIBLAYOUT_JAR)
12321 AC_SUBST(LIBLOADER_JAR)
12322 AC_SUBST(LIBFORMULA_JAR)
12323 AC_SUBST(LIBREPOSITORY_JAR)
12324 AC_SUBST(LIBFONTS_JAR)
12325 AC_SUBST(LIBSERIALIZER_JAR)
12327 # this has to be here because both the Wiki Publisher and the SRB use
12328 # commons-logging
12329 COMMONS_LOGGING_VERSION=1.2
12330 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12331     AC_MSG_CHECKING([which Apache commons-* libs to use])
12332     if test "$with_system_apache_commons" = "yes"; then
12333         SYSTEM_APACHE_COMMONS=TRUE
12334         AC_MSG_RESULT([external])
12335         if test -z $COMMONS_LOGGING_JAR; then
12336             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12337                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12338            elif test -f /usr/share/java/commons-logging.jar; then
12339                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12340             else
12341                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12342             fi
12343         elif ! test -f $COMMONS_LOGGING_JAR; then
12344             AC_MSG_ERROR(commons-logging.jar not found.)
12345         fi
12346     else
12347         AC_MSG_RESULT([internal])
12348         SYSTEM_APACHE_COMMONS=
12349         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12350         NEED_ANT=TRUE
12351     fi
12353 AC_SUBST(SYSTEM_APACHE_COMMONS)
12354 AC_SUBST(COMMONS_LOGGING_JAR)
12355 AC_SUBST(COMMONS_LOGGING_VERSION)
12357 # scripting provider for BeanShell?
12358 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12359 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12360     AC_MSG_RESULT([yes])
12361     ENABLE_SCRIPTING_BEANSHELL=TRUE
12363     dnl ===================================================================
12364     dnl Check for system beanshell
12365     dnl ===================================================================
12366     AC_MSG_CHECKING([which beanshell to use])
12367     if test "$with_system_beanshell" = "yes"; then
12368         AC_MSG_RESULT([external])
12369         SYSTEM_BSH=TRUE
12370         if test -z $BSH_JAR; then
12371             BSH_JAR=/usr/share/java/bsh.jar
12372         fi
12373         if ! test -f $BSH_JAR; then
12374             AC_MSG_ERROR(bsh.jar not found.)
12375         fi
12376     else
12377         AC_MSG_RESULT([internal])
12378         SYSTEM_BSH=
12379         BUILD_TYPE="$BUILD_TYPE BSH"
12380     fi
12381 else
12382     AC_MSG_RESULT([no])
12383     ENABLE_SCRIPTING_BEANSHELL=
12384     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12386 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12387 AC_SUBST(SYSTEM_BSH)
12388 AC_SUBST(BSH_JAR)
12390 # scripting provider for JavaScript?
12391 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12392 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12393     AC_MSG_RESULT([yes])
12394     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12396     dnl ===================================================================
12397     dnl Check for system rhino
12398     dnl ===================================================================
12399     AC_MSG_CHECKING([which rhino to use])
12400     if test "$with_system_rhino" = "yes"; then
12401         AC_MSG_RESULT([external])
12402         SYSTEM_RHINO=TRUE
12403         if test -z $RHINO_JAR; then
12404             RHINO_JAR=/usr/share/java/js.jar
12405         fi
12406         if ! test -f $RHINO_JAR; then
12407             AC_MSG_ERROR(js.jar not found.)
12408         fi
12409     else
12410         AC_MSG_RESULT([internal])
12411         SYSTEM_RHINO=
12412         BUILD_TYPE="$BUILD_TYPE RHINO"
12413         NEED_ANT=TRUE
12414     fi
12415 else
12416     AC_MSG_RESULT([no])
12417     ENABLE_SCRIPTING_JAVASCRIPT=
12418     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12420 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12421 AC_SUBST(SYSTEM_RHINO)
12422 AC_SUBST(RHINO_JAR)
12424 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12425 # paths should be added to library search path. So lets put all 64-bit
12426 # platforms there.
12427 supports_multilib=
12428 case "$host_cpu" in
12429 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12430     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12431         supports_multilib="yes"
12432     fi
12433     ;;
12435     ;;
12436 esac
12438 dnl ===================================================================
12439 dnl QT5 Integration
12440 dnl ===================================================================
12442 QT5_CFLAGS=""
12443 QT5_LIBS=""
12444 QMAKE5="qmake"
12445 MOC5="moc"
12446 QT5_GOBJECT_CFLAGS=""
12447 QT5_GOBJECT_LIBS=""
12448 QT5_HAVE_GOBJECT=""
12449 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12450         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12451         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12452 then
12453     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12454     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12456     if test -n "$supports_multilib"; then
12457         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12458     fi
12460     qt5_test_include="QtWidgets/qapplication.h"
12461     qt5_test_library="libQt5Widgets.so"
12463     dnl Check for qmake5
12464     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12465     if test "$QMAKE5" = "no"; then
12466         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12467     else
12468         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12469         if test -z "$qmake5_test_ver"; then
12470             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12471         fi
12472         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12473         qt5_minimal_minor="6"
12474         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12475             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12476         else
12477             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12478         fi
12479     fi
12481     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12482     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12484     AC_MSG_CHECKING([for Qt5 headers])
12485     qt5_incdir="no"
12486     for inc_dir in $qt5_incdirs; do
12487         if test -r "$inc_dir/$qt5_test_include"; then
12488             qt5_incdir="$inc_dir"
12489             break
12490         fi
12491     done
12492     AC_MSG_RESULT([$qt5_incdir])
12493     if test "x$qt5_incdir" = "xno"; then
12494         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12495     fi
12496     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12497     AC_LANG_PUSH([C++])
12498     save_CPPFLAGS=$CPPFLAGS
12499     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12500     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12501         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12502     CPPFLAGS=$save_CPPFLAGS
12503     AC_LANG_POP([C++])
12505     AC_MSG_CHECKING([for Qt5 libraries])
12506     qt5_libdir="no"
12507     for lib_dir in $qt5_libdirs; do
12508         if test -r "$lib_dir/$qt5_test_library"; then
12509             qt5_libdir="$lib_dir"
12510             break
12511         fi
12512     done
12513     AC_MSG_RESULT([$qt5_libdir])
12514     if test "x$qt5_libdir" = "xno"; then
12515         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12516     fi
12518     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12519     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12520     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12522     if test "$USING_X11" = TRUE; then
12523         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12524         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12525             QT5_HAVE_XCB_ICCCM=1
12526             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12527         ],[
12528             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)])
12529             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12530         ])
12531         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12532         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12533         QT5_USING_X11=1
12534         AC_DEFINE(QT5_USING_X11)
12535     fi
12537     dnl Check for Meta Object Compiler
12539     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12540     if test "$MOC5" = "no"; then
12541         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12542 the root of your Qt installation by exporting QT5DIR before running "configure".])
12543     fi
12545     if test "$build_gstreamer_1_0" = "yes"; then
12546         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12547                 QT5_HAVE_GOBJECT=1
12548                 AC_DEFINE(QT5_HAVE_GOBJECT)
12549             ],
12550             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12551         )
12552     fi
12554 AC_SUBST(QT5_CFLAGS)
12555 AC_SUBST(QT5_LIBS)
12556 AC_SUBST(MOC5)
12557 AC_SUBST(QT5_GOBJECT_CFLAGS)
12558 AC_SUBST(QT5_GOBJECT_LIBS)
12559 AC_SUBST(QT5_HAVE_GOBJECT)
12561 dnl ===================================================================
12562 dnl KF5 Integration
12563 dnl ===================================================================
12565 KF5_CFLAGS=""
12566 KF5_LIBS=""
12567 KF5_CONFIG="kf5-config"
12568 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12569         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12570 then
12571     if test "$OS" = "HAIKU"; then
12572         haiku_arch="`echo $RTL_ARCH | tr X x`"
12573         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12574         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12575     fi
12577     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12578     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12579     if test -n "$supports_multilib"; then
12580         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12581     fi
12583     kf5_test_include="KF5/kcoreaddons_version.h"
12584     kf5_test_library="libKF5CoreAddons.so"
12585     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12587     dnl kf5 KDE4 support compatibility installed
12588     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12589     if test "$KF5_CONFIG" != "no"; then
12590         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12591         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12592     fi
12594     dnl Check for KF5 headers
12595     AC_MSG_CHECKING([for KF5 headers])
12596     kf5_incdir="no"
12597     for kf5_check in $kf5_incdirs; do
12598         if test -r "$kf5_check/$kf5_test_include"; then
12599             kf5_incdir="$kf5_check/KF5"
12600             break
12601         fi
12602     done
12603     AC_MSG_RESULT([$kf5_incdir])
12604     if test "x$kf5_incdir" = "xno"; then
12605         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12606     fi
12608     dnl Check for KF5 libraries
12609     AC_MSG_CHECKING([for KF5 libraries])
12610     kf5_libdir="no"
12611     for kf5_check in $kf5_libdirs; do
12612         if test -r "$kf5_check/$kf5_test_library"; then
12613             kf5_libdir="$kf5_check"
12614             break
12615         fi
12616     done
12618     AC_MSG_RESULT([$kf5_libdir])
12619     if test "x$kf5_libdir" = "xno"; then
12620         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12621     fi
12623     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"
12624     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12625     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12627     if test "$USING_X11" = TRUE; then
12628         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12629     fi
12631     AC_LANG_PUSH([C++])
12632     save_CXXFLAGS=$CXXFLAGS
12633     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12634     AC_MSG_CHECKING([whether KDE is >= 5.0])
12635        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12636 #include <kcoreaddons_version.h>
12638 int main(int argc, char **argv) {
12639        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12640        else return 1;
12642        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12643     CXXFLAGS=$save_CXXFLAGS
12644     AC_LANG_POP([C++])
12646 AC_SUBST(KF5_CFLAGS)
12647 AC_SUBST(KF5_LIBS)
12649 dnl ===================================================================
12650 dnl Test whether to include Evolution 2 support
12651 dnl ===================================================================
12652 AC_MSG_CHECKING([whether to enable evolution 2 support])
12653 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12654     AC_MSG_RESULT([yes])
12655     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12656     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12657     FilterLibs "${GOBJECT_LIBS}"
12658     GOBJECT_LIBS="${filteredlibs}"
12659     ENABLE_EVOAB2="TRUE"
12660 else
12661     ENABLE_EVOAB2=""
12662     AC_MSG_RESULT([no])
12664 AC_SUBST(ENABLE_EVOAB2)
12665 AC_SUBST(GOBJECT_CFLAGS)
12666 AC_SUBST(GOBJECT_LIBS)
12668 dnl ===================================================================
12669 dnl Test which themes to include
12670 dnl ===================================================================
12671 AC_MSG_CHECKING([which themes to include])
12672 # if none given use default subset of available themes
12673 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12674     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"
12677 WITH_THEMES=""
12678 if test "x$with_theme" != "xno"; then
12679     for theme in $with_theme; do
12680         case $theme in
12681         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" ;;
12682         default) real_theme=colibre ;;
12683         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12684         esac
12685         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12686     done
12688 AC_MSG_RESULT([$WITH_THEMES])
12689 AC_SUBST([WITH_THEMES])
12690 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12691 for theme in $with_theme; do
12692     case $theme in
12693     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12694     *) ;;
12695     esac
12696 done
12698 dnl ===================================================================
12699 dnl Test whether to integrate helppacks into the product's installer
12700 dnl ===================================================================
12701 AC_MSG_CHECKING([for helppack integration])
12702 if test "$with_helppack_integration" = "no"; then
12703     AC_MSG_RESULT([no integration])
12704 else
12705     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12706     AC_MSG_RESULT([integration])
12709 ###############################################################################
12710 # Extensions checking
12711 ###############################################################################
12712 AC_MSG_CHECKING([for extensions integration])
12713 if test "x$enable_extension_integration" != "xno"; then
12714     WITH_EXTENSION_INTEGRATION=TRUE
12715     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12716     AC_MSG_RESULT([yes, use integration])
12717 else
12718     WITH_EXTENSION_INTEGRATION=
12719     AC_MSG_RESULT([no, do not integrate])
12721 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12723 dnl Should any extra extensions be included?
12724 dnl There are standalone tests for each of these below.
12725 WITH_EXTRA_EXTENSIONS=
12726 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12728 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12729 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12730 if test "x$with_java" != "xno"; then
12731     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12732     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12735 AC_MSG_CHECKING([whether to build opens___.ttf])
12736 if test "$enable_build_opensymbol" = "yes"; then
12737     AC_MSG_RESULT([yes])
12738     AC_PATH_PROG(FONTFORGE, fontforge)
12739     if test -z "$FONTFORGE"; then
12740         AC_MSG_ERROR([fontforge not installed])
12741     fi
12742 else
12743     AC_MSG_RESULT([no])
12744     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12745     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12747 AC_SUBST(OPENSYMBOL_TTF)
12748 AC_SUBST(FONTFORGE)
12750 dnl ===================================================================
12751 dnl Test whether to include fonts
12752 dnl ===================================================================
12753 AC_MSG_CHECKING([whether to include third-party fonts])
12754 if test "$with_fonts" != "no"; then
12755     AC_MSG_RESULT([yes])
12756     WITH_FONTS=TRUE
12757     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12758     AC_DEFINE(HAVE_MORE_FONTS)
12759 else
12760     AC_MSG_RESULT([no])
12761     WITH_FONTS=
12762     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12764 AC_SUBST(WITH_FONTS)
12767 dnl ===================================================================
12768 dnl Test whether to enable online update service
12769 dnl ===================================================================
12770 AC_MSG_CHECKING([whether to enable online update])
12771 ENABLE_ONLINE_UPDATE=
12772 ENABLE_ONLINE_UPDATE_MAR=
12773 UPDATE_CONFIG=
12774 if test "$enable_online_update" = ""; then
12775     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12776         AC_MSG_RESULT([yes])
12777         ENABLE_ONLINE_UPDATE="TRUE"
12778     else
12779         AC_MSG_RESULT([no])
12780     fi
12781 else
12782     if test "$enable_online_update" = "mar"; then
12783         AC_MSG_RESULT([yes - MAR-based online update])
12784         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12785         if test "$with_update_config" = ""; then
12786             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12787         fi
12788         UPDATE_CONFIG="$with_update_config"
12789         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12790     elif test "$enable_online_update" = "yes"; then
12791         AC_MSG_RESULT([yes])
12792         ENABLE_ONLINE_UPDATE="TRUE"
12793     else
12794         AC_MSG_RESULT([no])
12795     fi
12797 AC_SUBST(ENABLE_ONLINE_UPDATE)
12798 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12799 AC_SUBST(UPDATE_CONFIG)
12801 dnl ===================================================================
12802 dnl Test whether we need bzip2
12803 dnl ===================================================================
12804 SYSTEM_BZIP2=
12805 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12806     AC_MSG_CHECKING([whether to use system bzip2])
12807     if test "$with_system_bzip2" = yes; then
12808         SYSTEM_BZIP2=TRUE
12809         AC_MSG_RESULT([yes])
12810         PKG_CHECK_MODULES(BZIP2, bzip2)
12811         FilterLibs "${BZIP2_LIBS}"
12812         BZIP2_LIBS="${filteredlibs}"
12813     else
12814         AC_MSG_RESULT([no])
12815         BUILD_TYPE="$BUILD_TYPE BZIP2"
12816     fi
12818 AC_SUBST(SYSTEM_BZIP2)
12819 AC_SUBST(BZIP2_CFLAGS)
12820 AC_SUBST(BZIP2_LIBS)
12822 dnl ===================================================================
12823 dnl Test whether to enable extension update
12824 dnl ===================================================================
12825 AC_MSG_CHECKING([whether to enable extension update])
12826 ENABLE_EXTENSION_UPDATE=
12827 if test "x$enable_extension_update" = "xno"; then
12828     AC_MSG_RESULT([no])
12829 else
12830     AC_MSG_RESULT([yes])
12831     ENABLE_EXTENSION_UPDATE="TRUE"
12832     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12833     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12835 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12838 dnl ===================================================================
12839 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12840 dnl ===================================================================
12841 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12842 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12843     AC_MSG_RESULT([no])
12844     ENABLE_SILENT_MSI=
12845 else
12846     AC_MSG_RESULT([yes])
12847     ENABLE_SILENT_MSI=TRUE
12848     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12850 AC_SUBST(ENABLE_SILENT_MSI)
12852 AC_MSG_CHECKING([whether and how to use Xinerama])
12853 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12854     if test "$x_libraries" = "default_x_libraries"; then
12855         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12856         if test "x$XINERAMALIB" = x; then
12857            XINERAMALIB="/usr/lib"
12858         fi
12859     else
12860         XINERAMALIB="$x_libraries"
12861     fi
12862     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12863         # we have both versions, let the user decide but use the dynamic one
12864         # per default
12865         USE_XINERAMA=TRUE
12866         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12867             XINERAMA_LINK=dynamic
12868         else
12869             XINERAMA_LINK=static
12870         fi
12871     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12872         # we have only the dynamic version
12873         USE_XINERAMA=TRUE
12874         XINERAMA_LINK=dynamic
12875     elif test -e "$XINERAMALIB/libXinerama.a"; then
12876         # static version
12877         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12878             USE_XINERAMA=TRUE
12879             XINERAMA_LINK=static
12880         else
12881             USE_XINERAMA=
12882             XINERAMA_LINK=none
12883         fi
12884     else
12885         # no Xinerama
12886         USE_XINERAMA=
12887         XINERAMA_LINK=none
12888     fi
12889     if test "$USE_XINERAMA" = "TRUE"; then
12890         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12891         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12892             [AC_MSG_ERROR(Xinerama header not found.)], [])
12893         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12894         if test "x$XEXTLIB" = x; then
12895            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12896         fi
12897         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12898         if test "$_os" = "FreeBSD"; then
12899             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12900         fi
12901         if test "$_os" = "Linux"; then
12902             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12903         fi
12904         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12905             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12906     else
12907         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12908     fi
12909 else
12910     USE_XINERAMA=
12911     XINERAMA_LINK=none
12912     AC_MSG_RESULT([no])
12914 AC_SUBST(USE_XINERAMA)
12915 AC_SUBST(XINERAMA_LINK)
12917 dnl ===================================================================
12918 dnl Test whether to build cairo or rely on the system version
12919 dnl ===================================================================
12921 if test "$USING_X11" = TRUE; then
12922     # Used in vcl/Library_vclplug_gen.mk
12923     test_cairo=yes
12926 if test "$test_cairo" = "yes"; then
12927     AC_MSG_CHECKING([whether to use the system cairo])
12929     : ${with_system_cairo:=$with_system_libs}
12930     if test "$with_system_cairo" = "yes"; then
12931         SYSTEM_CAIRO=TRUE
12932         AC_MSG_RESULT([yes])
12934         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12935         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12936         FilterLibs "${CAIRO_LIBS}"
12937         CAIRO_LIBS="${filteredlibs}"
12939         if test "$test_xrender" = "yes"; then
12940             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12941             AC_LANG_PUSH([C])
12942             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12943 #ifdef PictStandardA8
12944 #else
12945       return fail;
12946 #endif
12947 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12949             AC_LANG_POP([C])
12950         fi
12951     else
12952         SYSTEM_CAIRO=
12953         AC_MSG_RESULT([no])
12955         BUILD_TYPE="$BUILD_TYPE CAIRO"
12956     fi
12959 AC_SUBST(SYSTEM_CAIRO)
12960 AC_SUBST(CAIRO_CFLAGS)
12961 AC_SUBST(CAIRO_LIBS)
12963 dnl ===================================================================
12964 dnl Test whether to use avahi
12965 dnl ===================================================================
12966 if test "$_os" = "WINNT"; then
12967     # Windows uses bundled mDNSResponder
12968     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12969 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12970     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12971                       [ENABLE_AVAHI="TRUE"])
12972     AC_DEFINE(HAVE_FEATURE_AVAHI)
12973     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12974     FilterLibs "${AVAHI_LIBS}"
12975     AVAHI_LIBS="${filteredlibs}"
12978 AC_SUBST(ENABLE_AVAHI)
12979 AC_SUBST(AVAHI_CFLAGS)
12980 AC_SUBST(AVAHI_LIBS)
12982 dnl ===================================================================
12983 dnl Test whether to use liblangtag
12984 dnl ===================================================================
12985 SYSTEM_LIBLANGTAG=
12986 AC_MSG_CHECKING([whether to use system liblangtag])
12987 if test "$with_system_liblangtag" = yes; then
12988     SYSTEM_LIBLANGTAG=TRUE
12989     AC_MSG_RESULT([yes])
12990     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12991     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12992     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12993     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12994     FilterLibs "${LIBLANGTAG_LIBS}"
12995     LIBLANGTAG_LIBS="${filteredlibs}"
12996 else
12997     SYSTEM_LIBLANGTAG=
12998     AC_MSG_RESULT([no])
12999     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13000     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13001     if test "$COM" = "MSC"; then
13002         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13003     else
13004         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13005     fi
13007 AC_SUBST(SYSTEM_LIBLANGTAG)
13008 AC_SUBST(LIBLANGTAG_CFLAGS)
13009 AC_SUBST(LIBLANGTAG_LIBS)
13011 dnl ===================================================================
13012 dnl Test whether to build libpng or rely on the system version
13013 dnl ===================================================================
13015 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13017 dnl ===================================================================
13018 dnl Check for runtime JVM search path
13019 dnl ===================================================================
13020 if test "$ENABLE_JAVA" != ""; then
13021     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13022     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13023         AC_MSG_RESULT([yes])
13024         if ! test -d "$with_jvm_path"; then
13025             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13026         fi
13027         if ! test -d "$with_jvm_path"jvm; then
13028             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13029         fi
13030         JVM_ONE_PATH_CHECK="$with_jvm_path"
13031         AC_SUBST(JVM_ONE_PATH_CHECK)
13032     else
13033         AC_MSG_RESULT([no])
13034     fi
13037 dnl ===================================================================
13038 dnl Test for the presence of Ant and that it works
13039 dnl ===================================================================
13041 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13042     ANT_HOME=; export ANT_HOME
13043     WITH_ANT_HOME=; export WITH_ANT_HOME
13044     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13045         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13046             if test "$_os" = "WINNT"; then
13047                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13048             else
13049                 with_ant_home="$LODE_HOME/opt/ant"
13050             fi
13051         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13052             with_ant_home="$LODE_HOME/opt/ant"
13053         fi
13054     fi
13055     if test -z "$with_ant_home"; then
13056         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13057     else
13058         if test "$_os" = "WINNT"; then
13059             # AC_PATH_PROGS needs unix path
13060             with_ant_home=`cygpath -u "$with_ant_home"`
13061         fi
13062         AbsolutePath "$with_ant_home"
13063         with_ant_home=$absolute_path
13064         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13065         WITH_ANT_HOME=$with_ant_home
13066         ANT_HOME=$with_ant_home
13067     fi
13069     if test -z "$ANT"; then
13070         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13071     else
13072         # resolve relative or absolute symlink
13073         while test -h "$ANT"; do
13074             a_cwd=`pwd`
13075             a_basename=`basename "$ANT"`
13076             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13077             cd "`dirname "$ANT"`"
13078             cd "`dirname "$a_script"`"
13079             ANT="`pwd`"/"`basename "$a_script"`"
13080             cd "$a_cwd"
13081         done
13083         AC_MSG_CHECKING([if $ANT works])
13084         mkdir -p conftest.dir
13085         a_cwd=$(pwd)
13086         cd conftest.dir
13087         cat > conftest.java << EOF
13088         public class conftest {
13089             int testmethod(int a, int b) {
13090                     return a + b;
13091             }
13092         }
13095         cat > conftest.xml << EOF
13096         <project name="conftest" default="conftest">
13097         <target name="conftest">
13098             <javac srcdir="." includes="conftest.java">
13099             </javac>
13100         </target>
13101         </project>
13104         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13105         if test $? = 0 -a -f ./conftest.class; then
13106             AC_MSG_RESULT([Ant works])
13107             if test -z "$WITH_ANT_HOME"; then
13108                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13109                 if test -z "$ANT_HOME"; then
13110                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13111                 fi
13112             else
13113                 ANT_HOME="$WITH_ANT_HOME"
13114             fi
13115         else
13116             echo "configure: Ant test failed" >&5
13117             cat conftest.java >&5
13118             cat conftest.xml >&5
13119             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13120         fi
13121         cd "$a_cwd"
13122         rm -fr conftest.dir
13123     fi
13124     if test -z "$ANT_HOME"; then
13125         ANT_HOME="NO_ANT_HOME"
13126     else
13127         PathFormat "$ANT_HOME"
13128         ANT_HOME="$formatted_path"
13129         PathFormat "$ANT"
13130         ANT="$formatted_path"
13131     fi
13133     dnl Checking for ant.jar
13134     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13135         AC_MSG_CHECKING([Ant lib directory])
13136         if test -f $ANT_HOME/lib/ant.jar; then
13137             ANT_LIB="$ANT_HOME/lib"
13138         else
13139             if test -f $ANT_HOME/ant.jar; then
13140                 ANT_LIB="$ANT_HOME"
13141             else
13142                 if test -f /usr/share/java/ant.jar; then
13143                     ANT_LIB=/usr/share/java
13144                 else
13145                     if test -f /usr/share/ant-core/lib/ant.jar; then
13146                         ANT_LIB=/usr/share/ant-core/lib
13147                     else
13148                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13149                             ANT_LIB="$ANT_HOME/lib/ant"
13150                         else
13151                             if test -f /usr/share/lib/ant/ant.jar; then
13152                                 ANT_LIB=/usr/share/lib/ant
13153                             else
13154                                 AC_MSG_ERROR([Ant libraries not found!])
13155                             fi
13156                         fi
13157                     fi
13158                 fi
13159             fi
13160         fi
13161         PathFormat "$ANT_LIB"
13162         ANT_LIB="$formatted_path"
13163         AC_MSG_RESULT([Ant lib directory found.])
13164     fi
13166     ant_minver=1.6.0
13167     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13169     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13170     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13171     ant_version_major=`echo $ant_version | cut -d. -f1`
13172     ant_version_minor=`echo $ant_version | cut -d. -f2`
13173     echo "configure: ant_version $ant_version " >&5
13174     echo "configure: ant_version_major $ant_version_major " >&5
13175     echo "configure: ant_version_minor $ant_version_minor " >&5
13176     if test "$ant_version_major" -ge "2"; then
13177         AC_MSG_RESULT([yes, $ant_version])
13178     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13179         AC_MSG_RESULT([yes, $ant_version])
13180     else
13181         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13182     fi
13184     rm -f conftest* core core.* *.core
13186 AC_SUBST(ANT)
13187 AC_SUBST(ANT_HOME)
13188 AC_SUBST(ANT_LIB)
13190 OOO_JUNIT_JAR=
13191 HAMCREST_JAR=
13192 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13193     AC_MSG_CHECKING([for JUnit 4])
13194     if test "$with_junit" = "yes"; then
13195         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13196             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13197         elif test -e /usr/share/java/junit4.jar; then
13198             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13199         else
13200            if test -e /usr/share/lib/java/junit.jar; then
13201               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13202            else
13203               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13204            fi
13205         fi
13206     else
13207         OOO_JUNIT_JAR=$with_junit
13208     fi
13209     if test "$_os" = "WINNT"; then
13210         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13211     fi
13212     printf 'import org.junit.Before;' > conftest.java
13213     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13214         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13215     else
13216         AC_MSG_ERROR(
13217 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13218  specify its pathname via --with-junit=..., or disable it via --without-junit])
13219     fi
13220     rm -f conftest.class conftest.java
13221     if test $OOO_JUNIT_JAR != ""; then
13222         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13223     fi
13225     AC_MSG_CHECKING([for included Hamcrest])
13226     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13227     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13228         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13229     else
13230         AC_MSG_RESULT([Not included])
13231         AC_MSG_CHECKING([for standalone hamcrest jar.])
13232         if test "$with_hamcrest" = "yes"; then
13233             if test -e /usr/share/lib/java/hamcrest.jar; then
13234                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13235             elif test -e /usr/share/java/hamcrest/core.jar; then
13236                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13237             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13238                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13239             else
13240                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13241             fi
13242         else
13243             HAMCREST_JAR=$with_hamcrest
13244         fi
13245         if test "$_os" = "WINNT"; then
13246             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13247         fi
13248         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13249             AC_MSG_RESULT([$HAMCREST_JAR])
13250         else
13251             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),
13252                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13253         fi
13254     fi
13255     rm -f conftest.class conftest.java
13257 AC_SUBST(OOO_JUNIT_JAR)
13258 AC_SUBST(HAMCREST_JAR)
13261 AC_SUBST(SCPDEFS)
13264 # check for wget and curl
13266 WGET=
13267 CURL=
13269 if test "$enable_fetch_external" != "no"; then
13271 CURL=`which curl 2>/dev/null`
13273 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13274     # wget new enough?
13275     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13276     if test $? -eq 0; then
13277         WGET=$i
13278         break
13279     fi
13280 done
13282 if test -z "$WGET" -a -z "$CURL"; then
13283     AC_MSG_ERROR([neither wget nor curl found!])
13288 AC_SUBST(WGET)
13289 AC_SUBST(CURL)
13292 # check for sha256sum
13294 SHA256SUM=
13296 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13297     eval "$i -a 256 --version" > /dev/null 2>&1
13298     ret=$?
13299     if test $ret -eq 0; then
13300         SHA256SUM="$i -a 256"
13301         break
13302     fi
13303 done
13305 if test -z "$SHA256SUM"; then
13306     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13307         eval "$i --version" > /dev/null 2>&1
13308         ret=$?
13309         if test $ret -eq 0; then
13310             SHA256SUM=$i
13311             break
13312         fi
13313     done
13316 if test -z "$SHA256SUM"; then
13317     AC_MSG_ERROR([no sha256sum found!])
13320 AC_SUBST(SHA256SUM)
13322 dnl ===================================================================
13323 dnl Dealing with l10n options
13324 dnl ===================================================================
13325 AC_MSG_CHECKING([which languages to be built])
13326 # get list of all languages
13327 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13328 # the sed command does the following:
13329 #   + if a line ends with a backslash, append the next line to it
13330 #   + adds " on the beginning of the value (after =)
13331 #   + adds " at the end of the value
13332 #   + removes en-US; we want to put it on the beginning
13333 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13334 [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)]
13335 ALL_LANGS="en-US $completelangiso"
13336 # check the configured localizations
13337 WITH_LANG="$with_lang"
13339 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13340 # (Norwegian is "nb" and "nn".)
13341 if test "$WITH_LANG" = "no"; then
13342     WITH_LANG=
13345 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13346     AC_MSG_RESULT([en-US])
13347 else
13348     AC_MSG_RESULT([$WITH_LANG])
13349     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13350     if test -z "$MSGFMT"; then
13351         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13352             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13353         elif test -x "/opt/lo/bin/msgfmt"; then
13354             MSGFMT="/opt/lo/bin/msgfmt"
13355         else
13356             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13357             if test -z "$MSGFMT"; then
13358                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13359             fi
13360         fi
13361     fi
13362     if test -z "$MSGUNIQ"; then
13363         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13364             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13365         elif test -x "/opt/lo/bin/msguniq"; then
13366             MSGUNIQ="/opt/lo/bin/msguniq"
13367         else
13368             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13369             if test -z "$MSGUNIQ"; then
13370                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13371             fi
13372         fi
13373     fi
13375 AC_SUBST(MSGFMT)
13376 AC_SUBST(MSGUNIQ)
13377 # check that the list is valid
13378 for lang in $WITH_LANG; do
13379     test "$lang" = "ALL" && continue
13380     # need to check for the exact string, so add space before and after the list of all languages
13381     for vl in $ALL_LANGS; do
13382         if test "$vl" = "$lang"; then
13383            break
13384         fi
13385     done
13386     if test "$vl" != "$lang"; then
13387         # if you're reading this - you prolly quoted your languages remove the quotes ...
13388         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13389     fi
13390 done
13391 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13392     echo $WITH_LANG | grep -q en-US
13393     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13395 # list with substituted ALL
13396 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13397 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13398 test "$WITH_LANG" = "en-US" && WITH_LANG=
13399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13400     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13401     ALL_LANGS=`echo $ALL_LANGS qtz`
13403 AC_SUBST(ALL_LANGS)
13404 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13405 AC_SUBST(WITH_LANG)
13406 AC_SUBST(WITH_LANG_LIST)
13407 AC_SUBST(GIT_NEEDED_SUBMODULES)
13409 WITH_POOR_HELP_LOCALIZATIONS=
13410 if test -d "$SRC_ROOT/translations/source"; then
13411     for l in `ls -1 $SRC_ROOT/translations/source`; do
13412         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13413             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13414         fi
13415     done
13417 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13419 if test -n "$with_locales"; then
13420     WITH_LOCALES="$with_locales"
13422     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13423     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13424     # config_host/config_locales.h.in
13425     for locale in $WITH_LOCALES; do
13426         lang=${locale%_*}
13428         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13430         case $lang in
13431         hi|mr*ne)
13432             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13433             ;;
13434         bg|ru)
13435             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13436             ;;
13437         esac
13438     done
13439 else
13440     AC_DEFINE(WITH_LOCALE_ALL)
13442 AC_SUBST(WITH_LOCALES)
13444 dnl git submodule update --reference
13445 dnl ===================================================================
13446 if test -n "${GIT_REFERENCE_SRC}"; then
13447     for repo in ${GIT_NEEDED_SUBMODULES}; do
13448         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13449             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13450         fi
13451     done
13453 AC_SUBST(GIT_REFERENCE_SRC)
13455 dnl git submodules linked dirs
13456 dnl ===================================================================
13457 if test -n "${GIT_LINK_SRC}"; then
13458     for repo in ${GIT_NEEDED_SUBMODULES}; do
13459         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13460             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13461         fi
13462     done
13464 AC_SUBST(GIT_LINK_SRC)
13466 dnl branding
13467 dnl ===================================================================
13468 AC_MSG_CHECKING([for alternative branding images directory])
13469 # initialize mapped arrays
13470 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13471 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13473 if test -z "$with_branding" -o "$with_branding" = "no"; then
13474     AC_MSG_RESULT([none])
13475     DEFAULT_BRAND_IMAGES="$brand_files"
13476 else
13477     if ! test -d $with_branding ; then
13478         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13479     else
13480         AC_MSG_RESULT([$with_branding])
13481         CUSTOM_BRAND_DIR="$with_branding"
13482         for lfile in $brand_files
13483         do
13484             if ! test -f $with_branding/$lfile ; then
13485                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13486                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13487             else
13488                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13489             fi
13490         done
13491         check_for_progress="yes"
13492     fi
13494 AC_SUBST([BRAND_INTRO_IMAGES])
13495 AC_SUBST([CUSTOM_BRAND_DIR])
13496 AC_SUBST([CUSTOM_BRAND_IMAGES])
13497 AC_SUBST([DEFAULT_BRAND_IMAGES])
13500 AC_MSG_CHECKING([for 'intro' progress settings])
13501 PROGRESSBARCOLOR=
13502 PROGRESSSIZE=
13503 PROGRESSPOSITION=
13504 PROGRESSFRAMECOLOR=
13505 PROGRESSTEXTCOLOR=
13506 PROGRESSTEXTBASELINE=
13508 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13509     source "$with_branding/progress.conf"
13510     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13511 else
13512     AC_MSG_RESULT([none])
13515 AC_SUBST(PROGRESSBARCOLOR)
13516 AC_SUBST(PROGRESSSIZE)
13517 AC_SUBST(PROGRESSPOSITION)
13518 AC_SUBST(PROGRESSFRAMECOLOR)
13519 AC_SUBST(PROGRESSTEXTCOLOR)
13520 AC_SUBST(PROGRESSTEXTBASELINE)
13523 dnl ===================================================================
13524 dnl Custom build version
13525 dnl ===================================================================
13526 AC_MSG_CHECKING([for extra build ID])
13527 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13528     EXTRA_BUILDID="$with_extra_buildid"
13530 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13531 if test -n "$EXTRA_BUILDID" ; then
13532     AC_MSG_RESULT([$EXTRA_BUILDID])
13533 else
13534     AC_MSG_RESULT([not set])
13536 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13538 OOO_VENDOR=
13539 AC_MSG_CHECKING([for vendor])
13540 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13541     OOO_VENDOR="$USERNAME"
13543     if test -z "$OOO_VENDOR"; then
13544         OOO_VENDOR="$USER"
13545     fi
13547     if test -z "$OOO_VENDOR"; then
13548         OOO_VENDOR="`id -u -n`"
13549     fi
13551     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13552 else
13553     OOO_VENDOR="$with_vendor"
13554     AC_MSG_RESULT([$OOO_VENDOR])
13556 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13557 AC_SUBST(OOO_VENDOR)
13559 if test "$_os" = "Android" ; then
13560     ANDROID_PACKAGE_NAME=
13561     AC_MSG_CHECKING([for Android package name])
13562     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13563         if test -n "$ENABLE_DEBUG"; then
13564             # Default to the package name that makes ndk-gdb happy.
13565             ANDROID_PACKAGE_NAME="org.libreoffice"
13566         else
13567             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13568         fi
13570         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13571     else
13572         ANDROID_PACKAGE_NAME="$with_android_package_name"
13573         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13574     fi
13575     AC_SUBST(ANDROID_PACKAGE_NAME)
13578 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13579 if test "$with_compat_oowrappers" = "yes"; then
13580     WITH_COMPAT_OOWRAPPERS=TRUE
13581     AC_MSG_RESULT(yes)
13582 else
13583     WITH_COMPAT_OOWRAPPERS=
13584     AC_MSG_RESULT(no)
13586 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13588 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13589 AC_MSG_CHECKING([for install dirname])
13590 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13591     INSTALLDIRNAME="$with_install_dirname"
13593 AC_MSG_RESULT([$INSTALLDIRNAME])
13594 AC_SUBST(INSTALLDIRNAME)
13596 AC_MSG_CHECKING([for prefix])
13597 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13598 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13599 PREFIXDIR="$prefix"
13600 AC_MSG_RESULT([$PREFIXDIR])
13601 AC_SUBST(PREFIXDIR)
13603 LIBDIR=[$(eval echo $(eval echo $libdir))]
13604 AC_SUBST(LIBDIR)
13606 DATADIR=[$(eval echo $(eval echo $datadir))]
13607 AC_SUBST(DATADIR)
13609 MANDIR=[$(eval echo $(eval echo $mandir))]
13610 AC_SUBST(MANDIR)
13612 DOCDIR=[$(eval echo $(eval echo $docdir))]
13613 AC_SUBST(DOCDIR)
13615 BINDIR=[$(eval echo $(eval echo $bindir))]
13616 AC_SUBST(BINDIR)
13618 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13619 AC_SUBST(INSTALLDIR)
13621 TESTINSTALLDIR="${BUILDDIR}/test-install"
13622 AC_SUBST(TESTINSTALLDIR)
13625 # ===================================================================
13626 # OAuth2 id and secrets
13627 # ===================================================================
13629 AC_MSG_CHECKING([for Google Drive client id and secret])
13630 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13631     AC_MSG_RESULT([not set])
13632     GDRIVE_CLIENT_ID="\"\""
13633     GDRIVE_CLIENT_SECRET="\"\""
13634 else
13635     AC_MSG_RESULT([set])
13636     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13637     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13639 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13640 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13642 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13643 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13644     AC_MSG_RESULT([not set])
13645     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13646     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13647 else
13648     AC_MSG_RESULT([set])
13649     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13650     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13652 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13653 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13655 AC_MSG_CHECKING([for OneDrive client id and secret])
13656 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13657     AC_MSG_RESULT([not set])
13658     ONEDRIVE_CLIENT_ID="\"\""
13659     ONEDRIVE_CLIENT_SECRET="\"\""
13660 else
13661     AC_MSG_RESULT([set])
13662     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13663     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13665 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13666 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13669 dnl ===================================================================
13670 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13671 dnl --enable-dependency-tracking configure option
13672 dnl ===================================================================
13673 AC_MSG_CHECKING([whether to enable dependency tracking])
13674 if test "$enable_dependency_tracking" = "no"; then
13675     nodep=TRUE
13676     AC_MSG_RESULT([no])
13677 else
13678     AC_MSG_RESULT([yes])
13680 AC_SUBST(nodep)
13682 dnl ===================================================================
13683 dnl Number of CPUs to use during the build
13684 dnl ===================================================================
13685 AC_MSG_CHECKING([for number of processors to use])
13686 # plain --with-parallelism is just the default
13687 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13688     if test "$with_parallelism" = "no"; then
13689         PARALLELISM=0
13690     else
13691         PARALLELISM=$with_parallelism
13692     fi
13693 else
13694     if test "$enable_icecream" = "yes"; then
13695         PARALLELISM="40"
13696     else
13697         case `uname -s` in
13699         Darwin|FreeBSD|NetBSD|OpenBSD)
13700             PARALLELISM=`sysctl -n hw.ncpu`
13701             ;;
13703         Linux)
13704             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13705         ;;
13706         # what else than above does profit here *and* has /proc?
13707         *)
13708             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13709             ;;
13710         esac
13712         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13713         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13714     fi
13717 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13718     if test -z "$with_parallelism"; then
13719             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13720             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13721             PARALLELISM="1"
13722     else
13723         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."
13724     fi
13727 if test $PARALLELISM -eq 0; then
13728     AC_MSG_RESULT([explicit make -j option needed])
13729 else
13730     AC_MSG_RESULT([$PARALLELISM])
13732 AC_SUBST(PARALLELISM)
13734 IWYU_PATH="$with_iwyu"
13735 AC_SUBST(IWYU_PATH)
13736 if test ! -z "$IWYU_PATH"; then
13737     if test ! -f "$IWYU_PATH"; then
13738         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13739     fi
13743 # Set up ILIB for MSVC build
13745 ILIB1=
13746 if test "$build_os" = "cygwin"; then
13747     ILIB="."
13748     if test -n "$JAVA_HOME"; then
13749         ILIB="$ILIB;$JAVA_HOME/lib"
13750     fi
13751     ILIB1=-link
13752     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13753     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13754     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13755     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13756     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13757         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13758         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13759     fi
13760     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13761     ucrtlibpath_formatted=$formatted_path
13762     ILIB="$ILIB;$ucrtlibpath_formatted"
13763     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13764     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13765         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13766     else
13767         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13768     fi
13770     if test "$cross_compiling" != "yes"; then
13771         ILIB_FOR_BUILD="$ILIB"
13772     fi
13774 AC_SUBST(ILIB)
13775 AC_SUBST(ILIB_FOR_BUILD)
13777 # ===================================================================
13778 # Creating bigger shared library to link against
13779 # ===================================================================
13780 AC_MSG_CHECKING([whether to create huge library])
13781 MERGELIBS=
13783 if test $_os = iOS -o $_os = Android; then
13784     # Never any point in mergelibs for these as we build just static
13785     # libraries anyway...
13786     enable_mergelibs=no
13789 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13790     if test $_os != Linux -a $_os != WINNT; then
13791         add_warning "--enable-mergelibs is not tested for this platform"
13792     fi
13793     MERGELIBS="TRUE"
13794     AC_MSG_RESULT([yes])
13795     AC_DEFINE(ENABLE_MERGELIBS)
13796 else
13797     AC_MSG_RESULT([no])
13799 AC_SUBST([MERGELIBS])
13801 dnl ===================================================================
13802 dnl icerun is a wrapper that stops us spawning tens of processes
13803 dnl locally - for tools that can't be executed on the compile cluster
13804 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13805 dnl ===================================================================
13806 AC_MSG_CHECKING([whether to use icerun wrapper])
13807 ICECREAM_RUN=
13808 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13809     ICECREAM_RUN=icerun
13810     AC_MSG_RESULT([yes])
13811 else
13812     AC_MSG_RESULT([no])
13814 AC_SUBST(ICECREAM_RUN)
13816 dnl ===================================================================
13817 dnl Setup the ICECC_VERSION for the build the same way it was set for
13818 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13819 dnl ===================================================================
13820 x_ICECC_VERSION=[\#]
13821 if test -n "$ICECC_VERSION" ; then
13822     x_ICECC_VERSION=
13824 AC_SUBST(x_ICECC_VERSION)
13825 AC_SUBST(ICECC_VERSION)
13827 dnl ===================================================================
13829 AC_MSG_CHECKING([MPL subset])
13830 MPL_SUBSET=
13832 if test "$enable_mpl_subset" = "yes"; then
13833     warn_report=false
13834     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13835         warn_report=true
13836     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13837         warn_report=true
13838     fi
13839     if test "$warn_report" = "true"; then
13840         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13841     fi
13842     if test "x$enable_postgresql_sdbc" != "xno"; then
13843         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13844     fi
13845     if test "$enable_lotuswordpro" = "yes"; then
13846         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13847     fi
13848     if test "$WITH_WEBDAV" = "neon"; then
13849         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13850     fi
13851     if test -n "$ENABLE_POPPLER"; then
13852         if test "x$SYSTEM_POPPLER" = "x"; then
13853             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13854         fi
13855     fi
13856     # cf. m4/libo_check_extension.m4
13857     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13858         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13859     fi
13860     for theme in $WITH_THEMES; do
13861         case $theme in
13862         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13863             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13864         *) : ;;
13865         esac
13866     done
13868     ENABLE_OPENGL_TRANSITIONS=
13870     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13871         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13872     fi
13874     MPL_SUBSET="TRUE"
13875     AC_DEFINE(MPL_HAVE_SUBSET)
13876     AC_MSG_RESULT([only])
13877 else
13878     AC_MSG_RESULT([no restrictions])
13880 AC_SUBST(MPL_SUBSET)
13882 dnl ===================================================================
13884 AC_MSG_CHECKING([formula logger])
13885 ENABLE_FORMULA_LOGGER=
13887 if test "x$enable_formula_logger" = "xyes"; then
13888     AC_MSG_RESULT([yes])
13889     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13890     ENABLE_FORMULA_LOGGER=TRUE
13891 elif test -n "$ENABLE_DBGUTIL" ; then
13892     AC_MSG_RESULT([yes])
13893     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13894     ENABLE_FORMULA_LOGGER=TRUE
13895 else
13896     AC_MSG_RESULT([no])
13899 AC_SUBST(ENABLE_FORMULA_LOGGER)
13901 dnl ===================================================================
13902 dnl Checking for active Antivirus software.
13903 dnl ===================================================================
13905 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13906     AC_MSG_CHECKING([for active Antivirus software])
13907     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13908     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13909         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13910             AC_MSG_RESULT([found])
13911             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13912             echo $EICAR_STRING > $SRC_ROOT/eicar
13913             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13914             rm $SRC_ROOT/eicar
13915             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13916                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13917             fi
13918             echo $EICAR_STRING > $BUILDDIR/eicar
13919             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13920             rm $BUILDDIR/eicar
13921             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13922                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13923             fi
13924             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"
13925         else
13926             AC_MSG_RESULT([not found])
13927         fi
13928     else
13929         AC_MSG_RESULT([n/a])
13930     fi
13933 dnl ===================================================================
13934 dnl Setting up the environment.
13935 dnl ===================================================================
13936 AC_MSG_NOTICE([setting up the build environment variables...])
13938 AC_SUBST(COMPATH)
13940 if test "$build_os" = "cygwin"; then
13941     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13942         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13943         ATL_INCLUDE="$COMPATH/atlmfc/include"
13944     elif test -d "$COMPATH/atlmfc/lib"; then
13945         ATL_LIB="$COMPATH/atlmfc/lib"
13946         ATL_INCLUDE="$COMPATH/atlmfc/include"
13947     else
13948         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13949         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13950     fi
13951     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13952     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13953     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13955     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13956     PathFormat "/usr/bin/find.exe"
13957     FIND="$formatted_path"
13958     PathFormat "/usr/bin/sort.exe"
13959     SORT="$formatted_path"
13960     PathFormat "/usr/bin/grep.exe"
13961     WIN_GREP="$formatted_path"
13962     PathFormat "/usr/bin/ls.exe"
13963     WIN_LS="$formatted_path"
13964     PathFormat "/usr/bin/touch.exe"
13965     WIN_TOUCH="$formatted_path"
13966 else
13967     FIND=find
13968     SORT=sort
13971 AC_SUBST(ATL_INCLUDE)
13972 AC_SUBST(ATL_LIB)
13973 AC_SUBST(FIND)
13974 AC_SUBST(SORT)
13975 AC_SUBST(WIN_GREP)
13976 AC_SUBST(WIN_LS)
13977 AC_SUBST(WIN_TOUCH)
13979 AC_SUBST(BUILD_TYPE)
13981 AC_SUBST(SOLARINC)
13983 PathFormat "$PERL"
13984 PERL="$formatted_path"
13985 AC_SUBST(PERL)
13987 if test -n "$TMPDIR"; then
13988     TEMP_DIRECTORY="$TMPDIR"
13989 else
13990     TEMP_DIRECTORY="/tmp"
13992 if test "$build_os" = "cygwin"; then
13993     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13995 AC_SUBST(TEMP_DIRECTORY)
13997 # setup the PATH for the environment
13998 if test -n "$LO_PATH_FOR_BUILD"; then
13999     LO_PATH="$LO_PATH_FOR_BUILD"
14000     case "$host_os" in
14001     cygwin*|wsl*)
14002         pathmunge "$MSVC_HOST_PATH" "before"
14003         ;;
14004     esac
14005 else
14006     LO_PATH="$PATH"
14008     case "$host_os" in
14010     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14011         if test "$ENABLE_JAVA" != ""; then
14012             pathmunge "$JAVA_HOME/bin" "after"
14013         fi
14014         ;;
14016     cygwin*|wsl*)
14017         # Win32 make needs native paths
14018         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14019             LO_PATH=`cygpath -p -m "$PATH"`
14020         fi
14021         if test "$WIN_BUILD_ARCH" = "x64"; then
14022             # needed for msi packaging
14023             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14024         fi
14025         # .NET 4.6 and higher don't have bin directory
14026         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14027             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14028         fi
14029         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14030         pathmunge "$CSC_PATH" "before"
14031         pathmunge "$MIDL_PATH" "before"
14032         pathmunge "$AL_PATH" "before"
14033         pathmunge "$MSVC_MULTI_PATH" "before"
14034         pathmunge "$MSVC_BUILD_PATH" "before"
14035         if test -n "$MSBUILD_PATH" ; then
14036             pathmunge "$MSBUILD_PATH" "before"
14037         fi
14038         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14039         if test "$ENABLE_JAVA" != ""; then
14040             if test -d "$JAVA_HOME/jre/bin/client"; then
14041                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14042             fi
14043             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14044                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14045             fi
14046             pathmunge "$JAVA_HOME/bin" "before"
14047         fi
14048         pathmunge "$MSVC_HOST_PATH" "before"
14049         ;;
14051     solaris*)
14052         pathmunge "/usr/css/bin" "before"
14053         if test "$ENABLE_JAVA" != ""; then
14054             pathmunge "$JAVA_HOME/bin" "after"
14055         fi
14056         ;;
14057     esac
14060 AC_SUBST(LO_PATH)
14062 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14063 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14064     x_LO_ELFCHECK_ALLOWLIST=
14065 else
14066     x_LO_ELFCHECK_ALLOWLIST=[\#]
14068 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14069 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14071 libo_FUZZ_SUMMARY
14073 # Generate a configuration sha256 we can use for deps
14074 if test -f config_host.mk; then
14075     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14077 if test -f config_host_lang.mk; then
14078     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14081 CFLAGS=$my_original_CFLAGS
14082 CXXFLAGS=$my_original_CXXFLAGS
14083 CPPFLAGS=$my_original_CPPFLAGS
14085 AC_CONFIG_LINKS([include:include])
14087 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14088 # BUILD platform configuration] - otherwise breaks cross building
14089 AC_CONFIG_FILES([config_host.mk
14090                  config_host_lang.mk
14091                  Makefile
14092                  bin/bffvalidator.sh
14093                  bin/odfvalidator.sh
14094                  bin/officeotron.sh
14095                  hardened_runtime.xcent
14096                  instsetoo_native/util/openoffice.lst
14097                  sysui/desktop/macosx/Info.plist])
14098 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14099 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14100 AC_CONFIG_HEADERS([config_host/config_clang.h])
14101 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14102 AC_CONFIG_HEADERS([config_host/config_eot.h])
14103 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14104 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14105 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14106 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14107 AC_CONFIG_HEADERS([config_host/config_features.h])
14108 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14109 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14110 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14111 AC_CONFIG_HEADERS([config_host/config_folders.h])
14112 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14113 AC_CONFIG_HEADERS([config_host/config_gio.h])
14114 AC_CONFIG_HEADERS([config_host/config_global.h])
14115 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14116 AC_CONFIG_HEADERS([config_host/config_java.h])
14117 AC_CONFIG_HEADERS([config_host/config_langs.h])
14118 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14119 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14120 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14121 AC_CONFIG_HEADERS([config_host/config_locales.h])
14122 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14123 AC_CONFIG_HEADERS([config_host/config_oox.h])
14124 AC_CONFIG_HEADERS([config_host/config_options.h])
14125 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14126 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14127 AC_CONFIG_HEADERS([config_host/config_skia.h])
14128 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14129 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14130 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14131 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14132 AC_CONFIG_HEADERS([config_host/config_version.h])
14133 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14134 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14135 AC_CONFIG_HEADERS([config_host/config_python.h])
14136 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14137 AC_OUTPUT
14139 if test "$CROSS_COMPILING" = TRUE; then
14140     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14143 # touch the config timestamp file
14144 if test ! -f config_host.mk.stamp; then
14145     echo > config_host.mk.stamp
14146 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14147     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14148 else
14149     echo > config_host.mk.stamp
14152 # touch the config lang timestamp file
14153 if test ! -f config_host_lang.mk.stamp; then
14154     echo > config_host_lang.mk.stamp
14155 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14156     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14157 else
14158     echo > config_host_lang.mk.stamp
14162 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14163         -a "$build_os" = "cygwin"; then
14165 cat << _EOS
14166 ****************************************************************************
14167 WARNING:
14168 Your make version is known to be horribly slow, and hard to debug
14169 problems with. To get a reasonably functional make please do:
14171 to install a pre-compiled binary make for Win32
14173  mkdir -p /opt/lo/bin
14174  cd /opt/lo/bin
14175  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14176  cp make-4.2.1-msvc.exe make
14177  chmod +x make
14179 to install from source:
14180 place yourself in a working directory of you choice.
14182  git clone git://git.savannah.gnu.org/make.git
14184  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14185  set PATH=%PATH%;C:\Cygwin\bin
14186  [or Cygwin64, if that is what you have]
14187  cd path-to-make-repo-you-cloned-above
14188  build_w32.bat --without-guile
14190 should result in a WinRel/gnumake.exe.
14191 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14193 Then re-run autogen.sh
14195 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14196 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14198 _EOS
14199 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14200     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14205 cat << _EOF
14206 ****************************************************************************
14208 To build, run:
14209 $GNUMAKE
14211 To view some help, run:
14212 $GNUMAKE help
14214 _EOF
14216 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14217     cat << _EOF
14218 After the build has finished successfully, you can immediately run what you built using the command:
14219 _EOF
14221     if test $_os = Darwin; then
14222         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14223     else
14224         echo instdir/program/soffice
14225     fi
14226     cat << _EOF
14228 If you want to run the smoketest, run:
14229 $GNUMAKE check
14231 _EOF
14234 if test -f warn; then
14235     cat warn
14236     rm warn
14239 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: