Resolves tdf#138127 - Use document color for border widget
[LibreOffice.git] / configure.ac
blobbc71599f53c808d0b6ceae5d3875d3b5dd6e4ddb
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.2.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 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-opensymbol,
1648     AS_HELP_STRING([--enable-build-opensymbol],
1649         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1650          fontforge installed.]),
1653 AC_ARG_ENABLE(dependency-tracking,
1654     AS_HELP_STRING([--enable-dependency-tracking],
1655         [Do not reject slow dependency extractors.])[
1656   --disable-dependency-tracking
1657                           Disables generation of dependency information.
1658                           Speed up one-time builds.],
1661 AC_ARG_ENABLE(icecream,
1662     AS_HELP_STRING([--enable-icecream],
1663         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1664          It defaults to /opt/icecream for the location of the icecream gcc/g++
1665          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1668 AC_ARG_ENABLE(ld,
1669     AS_HELP_STRING([--enable-ld=<linker>],
1670         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1671          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1672          If <linker> contains any ':', the part before the first ':' is used as the value of
1673          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1674          needed for Clang 12).]),
1677 libo_FUZZ_ARG_ENABLE(cups,
1678     AS_HELP_STRING([--disable-cups],
1679         [Do not build cups support.])
1682 AC_ARG_ENABLE(ccache,
1683     AS_HELP_STRING([--disable-ccache],
1684         [Do not try to use ccache automatically.
1685          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1686          CC/CXX are not yet set, and --enable-icecream is not given, we
1687          attempt to use ccache. --disable-ccache disables ccache completely.
1688          Additionally ccache's depend mode is enabled if possible,
1689          use --enable-ccache=nodepend to enable ccache without depend mode.
1693 libo_FUZZ_ARG_ENABLE(online-update,
1694     AS_HELP_STRING([--enable-online-update],
1695         [Enable the online update service that will check for new versions of
1696          LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1697          If the value is "mar", the experimental Mozilla-like update will be
1698          enabled instead of the traditional update mechanism.]),
1701 AC_ARG_WITH(update-config,
1702     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1703                    [Path to the update config ini file]))
1705 libo_FUZZ_ARG_ENABLE(extension-update,
1706     AS_HELP_STRING([--disable-extension-update],
1707         [Disable possibility to update installed extensions.]),
1710 libo_FUZZ_ARG_ENABLE(release-build,
1711     AS_HELP_STRING([--enable-release-build],
1712         [Enable release build. Note that the "release build" choice is orthogonal to
1713          whether symbols are present, debug info is generated, or optimization
1714          is done.
1715          See http://wiki.documentfoundation.org/Development/DevBuild]),
1718 AC_ARG_ENABLE(windows-build-signing,
1719     AS_HELP_STRING([--enable-windows-build-signing],
1720         [Enable signing of windows binaries (*.exe, *.dll)]),
1723 AC_ARG_ENABLE(silent-msi,
1724     AS_HELP_STRING([--enable-silent-msi],
1725         [Enable MSI with LIMITUI=1 (silent install).]),
1728 AC_ARG_ENABLE(macosx-code-signing,
1729     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1730         [Sign executables, dylibs, frameworks and the app bundle. If you
1731          don't provide an identity the first suitable certificate
1732          in your keychain is used.]),
1735 AC_ARG_ENABLE(macosx-package-signing,
1736     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1737         [Create a .pkg suitable for uploading to the Mac App Store and sign
1738          it. If you don't provide an identity the first suitable certificate
1739          in your keychain is used.]),
1742 AC_ARG_ENABLE(macosx-sandbox,
1743     AS_HELP_STRING([--enable-macosx-sandbox],
1744         [Make the app bundle run in a sandbox. Requires code signing.
1745          Is required by apps distributed in the Mac App Store, and implies
1746          adherence to App Store rules.]),
1749 AC_ARG_WITH(macosx-bundle-identifier,
1750     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1751         [Define the macOS bundle identifier. Default is the somewhat weird
1752          org.libreoffice.script ("script", huh?).]),
1753 ,with_macosx_bundle_identifier=org.libreoffice.script)
1755 AC_ARG_WITH(product-name,
1756     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1757         [Define the product name. Default is AC_PACKAGE_NAME.]),
1758 ,with_product_name=$PRODUCTNAME)
1760 AC_ARG_WITH(package-version,
1761     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1762         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1765 libo_FUZZ_ARG_ENABLE(readonly-installset,
1766     AS_HELP_STRING([--enable-readonly-installset],
1767         [Prevents any attempts by LibreOffice to write into its installation. That means
1768          at least that no "system-wide" extensions can be added. Partly experimental work in
1769          progress, probably not fully implemented. Always enabled for macOS.]),
1772 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1773     AS_HELP_STRING([--disable-mariadb-sdbc],
1774         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1777 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1778     AS_HELP_STRING([--disable-postgresql-sdbc],
1779         [Disable the build of the PostgreSQL-SDBC driver.])
1782 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1783     AS_HELP_STRING([--disable-lotuswordpro],
1784         [Disable the build of the Lotus Word Pro filter.]),
1785 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1787 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1788     AS_HELP_STRING([--disable-firebird-sdbc],
1789         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1790 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1792 AC_ARG_ENABLE(bogus-pkg-config,
1793     AS_HELP_STRING([--enable-bogus-pkg-config],
1794         [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.]),
1797 AC_ARG_ENABLE(openssl,
1798     AS_HELP_STRING([--disable-openssl],
1799         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1800          components will either use GNUTLS or NSS. Work in progress,
1801          use only if you are hacking on it.]),
1802 ,enable_openssl=yes)
1804 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1805     AS_HELP_STRING([--enable-cipher-openssl-backend],
1806         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1807          Requires --enable-openssl.]))
1809 AC_ARG_ENABLE(library-bin-tar,
1810     AS_HELP_STRING([--enable-library-bin-tar],
1811         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1812         Some libraries can save their build result in a tarball
1813         stored in TARFILE_LOCATION. That binary tarball is
1814         uniquely identified by the source tarball,
1815         the content of the config_host.mk file and the content
1816         of the top-level directory in core for that library
1817         If this option is enabled, then if such a tarfile exist, it will be untarred
1818         instead of the source tarfile, and the build step will be skipped for that
1819         library.
1820         If a proper tarfile does not exist, then the normal source-based
1821         build is done for that library and a proper binary tarfile is created
1822         for the next time.]),
1825 AC_ARG_ENABLE(dconf,
1826     AS_HELP_STRING([--disable-dconf],
1827         [Disable the dconf configuration backend (enabled by default where
1828          available).]))
1830 libo_FUZZ_ARG_ENABLE(formula-logger,
1831     AS_HELP_STRING(
1832         [--enable-formula-logger],
1833         [Enable formula logger for logging formula calculation flow in Calc.]
1834     )
1837 AC_ARG_ENABLE(ldap,
1838     AS_HELP_STRING([--disable-ldap],
1839         [Disable LDAP support.]),
1840 ,enable_ldap=yes)
1842 AC_ARG_ENABLE(opencl,
1843     AS_HELP_STRING([--disable-opencl],
1844         [Disable OpenCL support.]),
1845 ,enable_opencl=yes)
1847 dnl ===================================================================
1848 dnl Optional Packages (--with/without-)
1849 dnl ===================================================================
1851 AC_ARG_WITH(gcc-home,
1852     AS_HELP_STRING([--with-gcc-home],
1853         [Specify the location of gcc/g++ manually. This can be used in conjunction
1854          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1855          non-default path.]),
1858 AC_ARG_WITH(gnu-patch,
1859     AS_HELP_STRING([--with-gnu-patch],
1860         [Specify location of GNU patch on Solaris or FreeBSD.]),
1863 AC_ARG_WITH(build-platform-configure-options,
1864     AS_HELP_STRING([--with-build-platform-configure-options],
1865         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1868 AC_ARG_WITH(gnu-cp,
1869     AS_HELP_STRING([--with-gnu-cp],
1870         [Specify location of GNU cp on Solaris or FreeBSD.]),
1873 AC_ARG_WITH(external-tar,
1874     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1875         [Specify an absolute path of where to find (and store) tarfiles.]),
1876     TARFILE_LOCATION=$withval ,
1879 AC_ARG_WITH(referenced-git,
1880     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1881         [Specify another checkout directory to reference. This makes use of
1882                  git submodule update --reference, and saves a lot of diskspace
1883                  when having multiple trees side-by-side.]),
1884     GIT_REFERENCE_SRC=$withval ,
1887 AC_ARG_WITH(linked-git,
1888     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1889         [Specify a directory where the repositories of submodules are located.
1890          This uses a method similar to git-new-workdir to get submodules.]),
1891     GIT_LINK_SRC=$withval ,
1894 AC_ARG_WITH(galleries,
1895     AS_HELP_STRING([--with-galleries],
1896         [Specify how galleries should be built. It is possible either to
1897          build these internally from source ("build"),
1898          or to disable them ("no")]),
1901 AC_ARG_WITH(theme,
1902     AS_HELP_STRING([--with-theme="theme1 theme2..."],
1903         [Choose which themes to include. By default those themes with an '*' are included.
1904          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1905          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1908 libo_FUZZ_ARG_WITH(helppack-integration,
1909     AS_HELP_STRING([--without-helppack-integration],
1910         [It will not integrate the helppacks to the installer
1911          of the product. Please use this switch to use the online help
1912          or separate help packages.]),
1915 libo_FUZZ_ARG_WITH(fonts,
1916     AS_HELP_STRING([--without-fonts],
1917         [LibreOffice includes some third-party fonts to provide a reliable basis for
1918          help content, templates, samples, etc. When these fonts are already
1919          known to be available on the system then you should use this option.]),
1922 AC_ARG_WITH(epm,
1923     AS_HELP_STRING([--with-epm],
1924         [Decides which epm to use. Default is to use the one from the system if
1925          one is built. When either this is not there or you say =internal epm
1926          will be built.]),
1929 AC_ARG_WITH(package-format,
1930     AS_HELP_STRING([--with-package-format],
1931         [Specify package format(s) for LibreOffice installation sets. The
1932          implicit --without-package-format leads to no installation sets being
1933          generated. Possible values: aix, archive, bsd, deb, dmg,
1934          installed, msi, pkg, and rpm.
1935          Example: --with-package-format='deb rpm']),
1938 AC_ARG_WITH(tls,
1939     AS_HELP_STRING([--with-tls],
1940         [Decides which TLS/SSL and cryptographic implementations to use for
1941          LibreOffice's code. Notice that this doesn't apply for depending
1942          libraries like "neon", for example. Default is to use NSS
1943          although OpenSSL is also possible. Notice that selecting NSS restricts
1944          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1945          restrict by now the usage of NSS in LO's code. Possible values:
1946          openssl, nss. Example: --with-tls="nss"]),
1949 AC_ARG_WITH(system-libs,
1950     AS_HELP_STRING([--with-system-libs],
1951         [Use libraries already on system -- enables all --with-system-* flags.]),
1954 AC_ARG_WITH(system-bzip2,
1955     AS_HELP_STRING([--with-system-bzip2],
1956         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1957     [with_system_bzip2="$with_system_libs"])
1959 AC_ARG_WITH(system-headers,
1960     AS_HELP_STRING([--with-system-headers],
1961         [Use headers already on system -- enables all --with-system-* flags for
1962          external packages whose headers are the only entities used i.e.
1963          boost/odbc/sane-header(s).]),,
1964     [with_system_headers="$with_system_libs"])
1966 AC_ARG_WITH(system-jars,
1967     AS_HELP_STRING([--without-system-jars],
1968         [When building with --with-system-libs, also the needed jars are expected
1969          on the system. Use this to disable that]),,
1970     [with_system_jars="$with_system_libs"])
1972 AC_ARG_WITH(system-cairo,
1973     AS_HELP_STRING([--with-system-cairo],
1974         [Use cairo libraries already on system.  Happens automatically for
1975          (implicit) --enable-gtk3.]))
1977 AC_ARG_WITH(system-epoxy,
1978     AS_HELP_STRING([--with-system-epoxy],
1979         [Use epoxy libraries already on system.  Happens automatically for
1980          (implicit) --enable-gtk3.]),,
1981        [with_system_epoxy="$with_system_libs"])
1983 AC_ARG_WITH(myspell-dicts,
1984     AS_HELP_STRING([--with-myspell-dicts],
1985         [Adds myspell dictionaries to the LibreOffice installation set]),
1988 AC_ARG_WITH(system-dicts,
1989     AS_HELP_STRING([--without-system-dicts],
1990         [Do not use dictionaries from system paths.]),
1993 AC_ARG_WITH(external-dict-dir,
1994     AS_HELP_STRING([--with-external-dict-dir],
1995         [Specify external dictionary dir.]),
1998 AC_ARG_WITH(external-hyph-dir,
1999     AS_HELP_STRING([--with-external-hyph-dir],
2000         [Specify external hyphenation pattern dir.]),
2003 AC_ARG_WITH(external-thes-dir,
2004     AS_HELP_STRING([--with-external-thes-dir],
2005         [Specify external thesaurus dir.]),
2008 AC_ARG_WITH(system-zlib,
2009     AS_HELP_STRING([--with-system-zlib],
2010         [Use zlib already on system.]),,
2011     [with_system_zlib=auto])
2013 AC_ARG_WITH(system-jpeg,
2014     AS_HELP_STRING([--with-system-jpeg],
2015         [Use jpeg already on system.]),,
2016     [with_system_jpeg="$with_system_libs"])
2018 AC_ARG_WITH(system-clucene,
2019     AS_HELP_STRING([--with-system-clucene],
2020         [Use clucene already on system.]),,
2021     [with_system_clucene="$with_system_libs"])
2023 AC_ARG_WITH(system-expat,
2024     AS_HELP_STRING([--with-system-expat],
2025         [Use expat already on system.]),,
2026     [with_system_expat="$with_system_libs"])
2028 AC_ARG_WITH(system-libxml,
2029     AS_HELP_STRING([--with-system-libxml],
2030         [Use libxml/libxslt already on system.]),,
2031     [with_system_libxml=auto])
2033 AC_ARG_WITH(system-icu,
2034     AS_HELP_STRING([--with-system-icu],
2035         [Use icu already on system.]),,
2036     [with_system_icu="$with_system_libs"])
2038 AC_ARG_WITH(system-ucpp,
2039     AS_HELP_STRING([--with-system-ucpp],
2040         [Use ucpp already on system.]),,
2041     [])
2043 AC_ARG_WITH(system-openldap,
2044     AS_HELP_STRING([--with-system-openldap],
2045         [Use the OpenLDAP LDAP SDK already on system.]),,
2046     [with_system_openldap="$with_system_libs"])
2048 libo_FUZZ_ARG_ENABLE(poppler,
2049     AS_HELP_STRING([--disable-poppler],
2050         [Disable building Poppler.])
2053 AC_ARG_WITH(system-poppler,
2054     AS_HELP_STRING([--with-system-poppler],
2055         [Use system poppler (only needed for PDF import).]),,
2056     [with_system_poppler="$with_system_libs"])
2058 libo_FUZZ_ARG_ENABLE(gpgmepp,
2059     AS_HELP_STRING([--disable-gpgmepp],
2060         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2063 AC_ARG_WITH(system-gpgmepp,
2064     AS_HELP_STRING([--with-system-gpgmepp],
2065         [Use gpgmepp already on system]),,
2066     [with_system_gpgmepp="$with_system_libs"])
2068 AC_ARG_WITH(system-apache-commons,
2069     AS_HELP_STRING([--with-system-apache-commons],
2070         [Use Apache commons libraries already on system.]),,
2071     [with_system_apache_commons="$with_system_jars"])
2073 AC_ARG_WITH(system-mariadb,
2074     AS_HELP_STRING([--with-system-mariadb],
2075         [Use MariaDB/MySQL libraries already on system.]),,
2076     [with_system_mariadb="$with_system_libs"])
2078 AC_ARG_ENABLE(bundle-mariadb,
2079     AS_HELP_STRING([--enable-bundle-mariadb],
2080         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2083 AC_ARG_WITH(system-postgresql,
2084     AS_HELP_STRING([--with-system-postgresql],
2085         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2086          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2087     [with_system_postgresql="$with_system_libs"])
2089 AC_ARG_WITH(libpq-path,
2090     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2091         [Use this PostgreSQL C interface (libpq) installation for building
2092          the PostgreSQL-SDBC extension.]),
2095 AC_ARG_WITH(system-firebird,
2096     AS_HELP_STRING([--with-system-firebird],
2097         [Use Firebird libraries already on system, for building the Firebird-SDBC
2098          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2099     [with_system_firebird="$with_system_libs"])
2101 AC_ARG_WITH(system-libtommath,
2102             AS_HELP_STRING([--with-system-libtommath],
2103                            [Use libtommath already on system]),,
2104             [with_system_libtommath="$with_system_libs"])
2106 AC_ARG_WITH(system-hsqldb,
2107     AS_HELP_STRING([--with-system-hsqldb],
2108         [Use hsqldb already on system.]))
2110 AC_ARG_WITH(hsqldb-jar,
2111     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2112         [Specify path to jarfile manually.]),
2113     HSQLDB_JAR=$withval)
2115 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2116     AS_HELP_STRING([--disable-scripting-beanshell],
2117         [Disable support for scripts in BeanShell.]),
2121 AC_ARG_WITH(system-beanshell,
2122     AS_HELP_STRING([--with-system-beanshell],
2123         [Use beanshell already on system.]),,
2124     [with_system_beanshell="$with_system_jars"])
2126 AC_ARG_WITH(beanshell-jar,
2127     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2128         [Specify path to jarfile manually.]),
2129     BSH_JAR=$withval)
2131 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2132     AS_HELP_STRING([--disable-scripting-javascript],
2133         [Disable support for scripts in JavaScript.]),
2137 AC_ARG_WITH(system-rhino,
2138     AS_HELP_STRING([--with-system-rhino],
2139         [Use rhino already on system.]),,)
2140 #    [with_system_rhino="$with_system_jars"])
2141 # Above is not used as we have different debug interface
2142 # patched into internal rhino. This code needs to be fixed
2143 # before we can enable it by default.
2145 AC_ARG_WITH(rhino-jar,
2146     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2147         [Specify path to jarfile manually.]),
2148     RHINO_JAR=$withval)
2150 AC_ARG_WITH(commons-logging-jar,
2151     AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2152         [Specify path to jarfile manually.]),
2153     COMMONS_LOGGING_JAR=$withval)
2155 AC_ARG_WITH(system-jfreereport,
2156     AS_HELP_STRING([--with-system-jfreereport],
2157         [Use JFreeReport already on system.]),,
2158     [with_system_jfreereport="$with_system_jars"])
2160 AC_ARG_WITH(sac-jar,
2161     AS_HELP_STRING([--with-sac-jar=JARFILE],
2162         [Specify path to jarfile manually.]),
2163     SAC_JAR=$withval)
2165 AC_ARG_WITH(libxml-jar,
2166     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2167         [Specify path to jarfile manually.]),
2168     LIBXML_JAR=$withval)
2170 AC_ARG_WITH(flute-jar,
2171     AS_HELP_STRING([--with-flute-jar=JARFILE],
2172         [Specify path to jarfile manually.]),
2173     FLUTE_JAR=$withval)
2175 AC_ARG_WITH(jfreereport-jar,
2176     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2177         [Specify path to jarfile manually.]),
2178     JFREEREPORT_JAR=$withval)
2180 AC_ARG_WITH(liblayout-jar,
2181     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2182         [Specify path to jarfile manually.]),
2183     LIBLAYOUT_JAR=$withval)
2185 AC_ARG_WITH(libloader-jar,
2186     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2187         [Specify path to jarfile manually.]),
2188     LIBLOADER_JAR=$withval)
2190 AC_ARG_WITH(libformula-jar,
2191     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2192         [Specify path to jarfile manually.]),
2193     LIBFORMULA_JAR=$withval)
2195 AC_ARG_WITH(librepository-jar,
2196     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2197         [Specify path to jarfile manually.]),
2198     LIBREPOSITORY_JAR=$withval)
2200 AC_ARG_WITH(libfonts-jar,
2201     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2202         [Specify path to jarfile manually.]),
2203     LIBFONTS_JAR=$withval)
2205 AC_ARG_WITH(libserializer-jar,
2206     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2207         [Specify path to jarfile manually.]),
2208     LIBSERIALIZER_JAR=$withval)
2210 AC_ARG_WITH(libbase-jar,
2211     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2212         [Specify path to jarfile manually.]),
2213     LIBBASE_JAR=$withval)
2215 AC_ARG_WITH(system-odbc,
2216     AS_HELP_STRING([--with-system-odbc],
2217         [Use the odbc headers already on system.]),,
2218     [with_system_odbc="auto"])
2220 AC_ARG_WITH(system-sane,
2221     AS_HELP_STRING([--with-system-sane],
2222         [Use sane.h already on system.]),,
2223     [with_system_sane="$with_system_headers"])
2225 AC_ARG_WITH(system-bluez,
2226     AS_HELP_STRING([--with-system-bluez],
2227         [Use bluetooth.h already on system.]),,
2228     [with_system_bluez="$with_system_headers"])
2230 AC_ARG_WITH(system-curl,
2231     AS_HELP_STRING([--with-system-curl],
2232         [Use curl already on system.]),,
2233     [with_system_curl=auto])
2235 AC_ARG_WITH(system-boost,
2236     AS_HELP_STRING([--with-system-boost],
2237         [Use boost already on system.]),,
2238     [with_system_boost="$with_system_headers"])
2240 AC_ARG_WITH(system-glm,
2241     AS_HELP_STRING([--with-system-glm],
2242         [Use glm already on system.]),,
2243     [with_system_glm="$with_system_headers"])
2245 AC_ARG_WITH(system-hunspell,
2246     AS_HELP_STRING([--with-system-hunspell],
2247         [Use libhunspell already on system.]),,
2248     [with_system_hunspell="$with_system_libs"])
2250 libo_FUZZ_ARG_ENABLE(qrcodegen,
2251     AS_HELP_STRING([--disable-qrcodegen],
2252         [Disable use of qrcodegen external library.]))
2254 AC_ARG_WITH(system-qrcodegen,
2255     AS_HELP_STRING([--with-system-qrcodegen],
2256         [Use libqrcodegen already on system.]),,
2257     [with_system_qrcodegen="$with_system_libs"])
2259 AC_ARG_WITH(system-box2d,
2260     AS_HELP_STRING([--with-system-box2d],
2261         [Use box2d already on system.]),,
2262     [with_system_box2d="$with_system_libs"])
2264 AC_ARG_WITH(system-mythes,
2265     AS_HELP_STRING([--with-system-mythes],
2266         [Use mythes already on system.]),,
2267     [with_system_mythes="$with_system_libs"])
2269 AC_ARG_WITH(system-altlinuxhyph,
2270     AS_HELP_STRING([--with-system-altlinuxhyph],
2271         [Use ALTLinuxhyph already on system.]),,
2272     [with_system_altlinuxhyph="$with_system_libs"])
2274 AC_ARG_WITH(system-lpsolve,
2275     AS_HELP_STRING([--with-system-lpsolve],
2276         [Use lpsolve already on system.]),,
2277     [with_system_lpsolve="$with_system_libs"])
2279 AC_ARG_WITH(system-coinmp,
2280     AS_HELP_STRING([--with-system-coinmp],
2281         [Use CoinMP already on system.]),,
2282     [with_system_coinmp="$with_system_libs"])
2284 AC_ARG_WITH(system-liblangtag,
2285     AS_HELP_STRING([--with-system-liblangtag],
2286         [Use liblangtag library already on system.]),,
2287     [with_system_liblangtag="$with_system_libs"])
2289 AC_ARG_WITH(webdav,
2290     AS_HELP_STRING([--with-webdav],
2291         [Specify which library to use for webdav implementation.
2292          Possible values: "neon", "serf", "no". The default value is "neon".
2293          Example: --with-webdav="serf"]),
2294     WITH_WEBDAV=$withval,
2295     WITH_WEBDAV="neon")
2297 AC_ARG_WITH(linker-hash-style,
2298     AS_HELP_STRING([--with-linker-hash-style],
2299         [Use linker with --hash-style=<style> when linking shared objects.
2300          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2301          if supported on the build system, and "sysv" otherwise.]))
2303 AC_ARG_WITH(jdk-home,
2304     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2305         [If you have installed JDK 9 or later on your system please supply the
2306          path here. Note that this is not the location of the java command but the
2307          location of the entire distribution. In case of cross-compiling, this
2308          is the JDK of the host os. Use --with-build-platform-configure-options
2309          to point to a different build platform JDK.]),
2312 AC_ARG_WITH(help,
2313     AS_HELP_STRING([--with-help],
2314         [Enable the build of help. There is a special parameter "common" that
2315          can be used to bundle only the common part, .e.g help-specific icons.
2316          This is useful when you build the helpcontent separately.])
2317     [
2318                           Usage:     --with-help    build the old local help
2319                                  --without-help     no local help (default)
2320                                  --with-help=html   build the new HTML local help
2321                                  --with-help=online build the new HTML online help
2322     ],
2325 AC_ARG_WITH(omindex,
2326    AS_HELP_STRING([--with-omindex],
2327         [Enable the support of xapian-omega index for online help.])
2328    [
2329                          Usage: --with-omindex=server prepare the pages for omindex
2330                                 but let xapian-omega be built in server.
2331                                 --with-omindex=noxap do not prepare online pages
2332                                 for xapian-omega
2333   ],
2336 libo_FUZZ_ARG_WITH(java,
2337     AS_HELP_STRING([--with-java=<java command>],
2338         [Specify the name of the Java interpreter command. Typically "java"
2339          which is the default.
2341          To build without support for Java components, applets, accessibility
2342          or the XML filters written in Java, use --without-java or --with-java=no.]),
2343     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2344     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2347 AC_ARG_WITH(jvm-path,
2348     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2349         [Use a specific JVM search path at runtime.
2350          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2353 AC_ARG_WITH(ant-home,
2354     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2355         [If you have installed Apache Ant on your system, please supply the path here.
2356          Note that this is not the location of the Ant binary but the location
2357          of the entire distribution.]),
2360 AC_ARG_WITH(symbol-config,
2361     AS_HELP_STRING([--with-symbol-config],
2362         [Configuration for the crashreport symbol upload]),
2363         [],
2364         [with_symbol_config=no])
2366 AC_ARG_WITH(export-validation,
2367     AS_HELP_STRING([--without-export-validation],
2368         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2369 ,with_export_validation=auto)
2371 AC_ARG_WITH(bffvalidator,
2372     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2373         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2374          Requires installed Microsoft Office Binary File Format Validator.
2375          Note: export-validation (--with-export-validation) is required to be turned on.
2376          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2377 ,with_bffvalidator=no)
2379 libo_FUZZ_ARG_WITH(junit,
2380     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2381         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2382          --without-junit disables those tests. Not relevant in the --without-java case.]),
2383 ,with_junit=yes)
2385 AC_ARG_WITH(hamcrest,
2386     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2387         [Specifies the hamcrest jar file to use for JUnit-based tests.
2388          --without-junit disables those tests. Not relevant in the --without-java case.]),
2389 ,with_hamcrest=yes)
2391 AC_ARG_WITH(perl-home,
2392     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2393         [If you have installed Perl 5 Distribution, on your system, please
2394          supply the path here. Note that this is not the location of the Perl
2395          binary but the location of the entire distribution.]),
2398 libo_FUZZ_ARG_WITH(doxygen,
2399     AS_HELP_STRING(
2400         [--with-doxygen=<absolute path to doxygen executable>],
2401         [Specifies the doxygen executable to use when generating ODK C/C++
2402          documentation. --without-doxygen disables generation of ODK C/C++
2403          documentation. Not relevant in the --disable-odk case.]),
2404 ,with_doxygen=yes)
2406 AC_ARG_WITH(visual-studio,
2407     AS_HELP_STRING([--with-visual-studio=<2019>],
2408         [Specify which Visual Studio version to use in case several are
2409          installed. Currently only 2019 (default) is supported.]),
2412 AC_ARG_WITH(windows-sdk,
2413     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2414         [Specify which Windows SDK, or "Windows Kit", version to use
2415          in case the one that came with the selected Visual Studio
2416          is not what you want for some reason. Note that not all compiler/SDK
2417          combinations are supported. The intent is that this option should not
2418          be needed.]),
2421 AC_ARG_WITH(lang,
2422     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2423         [Use this option to build LibreOffice with additional UI language support.
2424          English (US) is always included by default.
2425          Separate multiple languages with space.
2426          For all languages, use --with-lang=ALL.]),
2429 AC_ARG_WITH(locales,
2430     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2431         [Use this option to limit the locale information built in.
2432          Separate multiple locales with space.
2433          Very experimental and might well break stuff.
2434          Just a desperate measure to shrink code and data size.
2435          By default all the locales available is included.
2436          This option is completely unrelated to --with-lang.])
2437     [
2438                           Affects also our character encoding conversion
2439                           tables for encodings mainly targeted for a
2440                           particular locale, like EUC-CN and EUC-TW for
2441                           zh, ISO-2022-JP for ja.
2443                           Affects also our add-on break iterator data for
2444                           some languages.
2446                           For the default, all locales, don't use this switch at all.
2447                           Specifying just the language part of a locale means all matching
2448                           locales will be included.
2449     ],
2452 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2453 libo_FUZZ_ARG_WITH(krb5,
2454     AS_HELP_STRING([--with-krb5],
2455         [Enable MIT Kerberos 5 support in modules that support it.
2456          By default automatically enabled on platforms
2457          where a good system Kerberos 5 is available.]),
2460 libo_FUZZ_ARG_WITH(gssapi,
2461     AS_HELP_STRING([--with-gssapi],
2462         [Enable GSSAPI support in modules that support it.
2463          By default automatically enabled on platforms
2464          where a good system GSSAPI is available.]),
2467 AC_ARG_WITH(iwyu,
2468     AS_HELP_STRING([--with-iwyu],
2469         [Use given IWYU binary path to check unneeded includes instead of building.
2470          Use only if you are hacking on it.]),
2473 libo_FUZZ_ARG_WITH(lxml,
2474     AS_HELP_STRING([--without-lxml],
2475         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2476          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2477          report widget classes and ids.]),
2480 libo_FUZZ_ARG_WITH(latest-c++,
2481     AS_HELP_STRING([--with-latest-c++],
2482         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2483          published standard.]),,
2484         [with_latest_c__=no])
2486 dnl ===================================================================
2487 dnl Branding
2488 dnl ===================================================================
2490 AC_ARG_WITH(branding,
2491     AS_HELP_STRING([--with-branding=/path/to/images],
2492         [Use given path to retrieve branding images set.])
2493     [
2494                           Search for intro.png about.svg and logo.svg.
2495                           If any is missing, default ones will be used instead.
2497                           Search also progress.conf for progress
2498                           settings on intro screen :
2500                           PROGRESSBARCOLOR="255,255,255" Set color of
2501                           progress bar. Comma separated RGB decimal values.
2502                           PROGRESSSIZE="407,6" Set size of progress bar.
2503                           Comma separated decimal values (width, height).
2504                           PROGRESSPOSITION="61,317" Set position of progress
2505                           bar from left,top. Comma separated decimal values.
2506                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2507                           bar frame. Comma separated RGB decimal values.
2508                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2509                           bar text. Comma separated RGB decimal values.
2510                           PROGRESSTEXTBASELINE="287" Set vertical position of
2511                           progress bar text from top. Decimal value.
2513                           Default values will be used if not found.
2514     ],
2518 AC_ARG_WITH(extra-buildid,
2519     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2520         [Show addition build identification in about dialog.]),
2524 AC_ARG_WITH(vendor,
2525     AS_HELP_STRING([--with-vendor="John the Builder"],
2526         [Set vendor of the build.]),
2529 AC_ARG_WITH(android-package-name,
2530     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2531         [Set Android package name of the build.]),
2534 AC_ARG_WITH(compat-oowrappers,
2535     AS_HELP_STRING([--with-compat-oowrappers],
2536         [Install oo* wrappers in parallel with
2537          lo* ones to keep backward compatibility.
2538          Has effect only with make distro-pack-install]),
2541 AC_ARG_WITH(os-version,
2542     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2543         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2546 AC_ARG_WITH(idlc-cpp,
2547     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2548         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2551 AC_ARG_WITH(parallelism,
2552     AS_HELP_STRING([--with-parallelism],
2553         [Number of jobs to run simultaneously during build. Parallel builds can
2554         save a lot of time on multi-cpu machines. Defaults to the number of
2555         CPUs on the machine, unless you configure --enable-icecream - then to
2556         40.]),
2559 AC_ARG_WITH(all-tarballs,
2560     AS_HELP_STRING([--with-all-tarballs],
2561         [Download all external tarballs unconditionally]))
2563 AC_ARG_WITH(gdrive-client-id,
2564     AS_HELP_STRING([--with-gdrive-client-id],
2565         [Provides the client id of the application for OAuth2 authentication
2566         on Google Drive. If either this or --with-gdrive-client-secret is
2567         empty, the feature will be disabled]),
2570 AC_ARG_WITH(gdrive-client-secret,
2571     AS_HELP_STRING([--with-gdrive-client-secret],
2572         [Provides the client secret of the application for OAuth2
2573         authentication on Google Drive. If either this or
2574         --with-gdrive-client-id is empty, the feature will be disabled]),
2577 AC_ARG_WITH(alfresco-cloud-client-id,
2578     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2579         [Provides the client id of the application for OAuth2 authentication
2580         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2581         empty, the feature will be disabled]),
2584 AC_ARG_WITH(alfresco-cloud-client-secret,
2585     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2586         [Provides the client secret of the application for OAuth2
2587         authentication on Alfresco Cloud. If either this or
2588         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2591 AC_ARG_WITH(onedrive-client-id,
2592     AS_HELP_STRING([--with-onedrive-client-id],
2593         [Provides the client id of the application for OAuth2 authentication
2594         on OneDrive. If either this or --with-onedrive-client-secret is
2595         empty, the feature will be disabled]),
2598 AC_ARG_WITH(onedrive-client-secret,
2599     AS_HELP_STRING([--with-onedrive-client-secret],
2600         [Provides the client secret of the application for OAuth2
2601         authentication on OneDrive. If either this or
2602         --with-onedrive-client-id is empty, the feature will be disabled]),
2604 dnl ===================================================================
2605 dnl Do we want to use pre-build binary tarball for recompile
2606 dnl ===================================================================
2608 if test "$enable_library_bin_tar" = "yes" ; then
2609     USE_LIBRARY_BIN_TAR=TRUE
2610 else
2611     USE_LIBRARY_BIN_TAR=
2613 AC_SUBST(USE_LIBRARY_BIN_TAR)
2615 dnl ===================================================================
2616 dnl Test whether build target is Release Build
2617 dnl ===================================================================
2618 AC_MSG_CHECKING([whether build target is Release Build])
2619 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2620     AC_MSG_RESULT([no])
2621     ENABLE_RELEASE_BUILD=
2622     GET_TASK_ALLOW_ENTITLEMENT='
2623         <!-- We want to be able to debug a hardened process when not building for release -->
2624         <key>com.apple.security.get-task-allow</key>
2625         <true/>'
2626 else
2627     AC_MSG_RESULT([yes])
2628     ENABLE_RELEASE_BUILD=TRUE
2629     GET_TASK_ALLOW_ENTITLEMENT=''
2631 AC_SUBST(ENABLE_RELEASE_BUILD)
2632 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2634 dnl ===================================================================
2635 dnl Test whether to sign Windows Build
2636 dnl ===================================================================
2637 AC_MSG_CHECKING([whether to sign windows build])
2638 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2639     AC_MSG_RESULT([yes])
2640     WINDOWS_BUILD_SIGNING="TRUE"
2641 else
2642     AC_MSG_RESULT([no])
2643     WINDOWS_BUILD_SIGNING="FALSE"
2645 AC_SUBST(WINDOWS_BUILD_SIGNING)
2647 dnl ===================================================================
2648 dnl MacOSX build and runtime environment options
2649 dnl ===================================================================
2651 AC_ARG_WITH(macosx-sdk,
2652     AS_HELP_STRING([--with-macosx-sdk=<version>],
2653         [Prefer a specific SDK for building.])
2654     [
2655                           If the requested SDK is not available, a search for the oldest one will be done.
2656                           With current Xcode versions, only the latest SDK is included, so this option is
2657                           not terribly useful. It works fine to build with a new SDK and run the result
2658                           on an older OS.
2660                           e. g.: --with-macosx-sdk=10.10
2662                           there are 3 options to control the MacOSX build:
2663                           --with-macosx-sdk (referred as 'sdk' below)
2664                           --with-macosx-version-min-required (referred as 'min' below)
2665                           --with-macosx-version-max-allowed (referred as 'max' below)
2667                           the connection between these value and the default they take is as follow:
2668                           ( ? means not specified on the command line, s means the SDK version found,
2669                           constraint: 8 <= x <= y <= z)
2671                           ==========================================
2672                            command line      || config result
2673                           ==========================================
2674                           min  | max  | sdk  || min   | max  | sdk  |
2675                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2676                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2677                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2678                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2679                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2680                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2681                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2682                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2685                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2686                           for a detailed technical explanation of these variables
2688                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2689     ],
2692 AC_ARG_WITH(macosx-version-min-required,
2693     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2694         [set the minimum OS version needed to run the built LibreOffice])
2695     [
2696                           e. g.: --with-macosx-version-min-required=10.10
2697                           see --with-macosx-sdk for more info
2698     ],
2701 AC_ARG_WITH(macosx-version-max-allowed,
2702     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2703         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2704     [
2705                           e. g.: --with-macosx-version-max-allowed=10.10
2706                           see --with-macosx-sdk for more info
2707     ],
2711 dnl ===================================================================
2712 dnl options for stuff used during cross-compilation build
2713 dnl Not quite superseded by --with-build-platform-configure-options.
2714 dnl TODO: check, if the "force" option is still needed anywhere.
2715 dnl ===================================================================
2717 AC_ARG_WITH(system-icu-for-build,
2718     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2719         [Use icu already on system for build tools (cross-compilation only).]))
2722 dnl ===================================================================
2723 dnl Check for incompatible options set by fuzzing, and reset those
2724 dnl automatically to working combinations
2725 dnl ===================================================================
2727 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2728         "$enable_dbus" != "$enable_avahi"; then
2729     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2730     enable_avahi=$enable_dbus
2733 add_lopath_after ()
2735     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2736         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2737     fi
2740 add_lopath_before ()
2742     local IFS=${P_SEP}
2743     local path_cleanup
2744     local dir
2745     for dir in $LO_PATH ; do
2746         if test "$dir" != "$1" ; then
2747             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2748         fi
2749     done
2750     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2753 dnl ===================================================================
2754 dnl check for required programs (grep, awk, sed, bash)
2755 dnl ===================================================================
2757 pathmunge ()
2759     local new_path
2760     if test -n "$1"; then
2761         if test "$build_os" = "cygwin"; then
2762             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2763                 PathFormat "$1"
2764                 new_path=`cygpath -sm "$formatted_path"`
2765             else
2766                 PathFormat "$1"
2767                 new_path=`cygpath -u "$formatted_path"`
2768             fi
2769         else
2770             new_path="$1"
2771         fi
2772         if test "$2" = "after"; then
2773             add_lopath_after "$new_path"
2774         else
2775             add_lopath_before "$new_path"
2776         fi
2777     fi
2780 AC_PROG_AWK
2781 AC_PATH_PROG( AWK, $AWK)
2782 if test -z "$AWK"; then
2783     AC_MSG_ERROR([install awk to run this script])
2786 AC_PATH_PROG(BASH, bash)
2787 if test -z "$BASH"; then
2788     AC_MSG_ERROR([bash not found in \$PATH])
2790 AC_SUBST(BASH)
2792 AC_MSG_CHECKING([for GNU or BSD tar])
2793 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2794     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2795     if test $? -eq 0;  then
2796         GNUTAR=$a
2797         break
2798     fi
2799 done
2800 AC_MSG_RESULT($GNUTAR)
2801 if test -z "$GNUTAR"; then
2802     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2804 AC_SUBST(GNUTAR)
2806 AC_MSG_CHECKING([for tar's option to strip components])
2807 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2808 if test $? -eq 0; then
2809     STRIP_COMPONENTS="--strip-components"
2810 else
2811     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2812     if test $? -eq 0; then
2813         STRIP_COMPONENTS="--strip-path"
2814     else
2815         STRIP_COMPONENTS="unsupported"
2816     fi
2818 AC_MSG_RESULT($STRIP_COMPONENTS)
2819 if test x$STRIP_COMPONENTS = xunsupported; then
2820     AC_MSG_ERROR([you need a tar that is able to strip components.])
2822 AC_SUBST(STRIP_COMPONENTS)
2824 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2825 dnl desktop OSes from "mobile" ones.
2827 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2828 dnl In other words, that when building for an OS that is not a
2829 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2831 dnl Note the direction of the implication; there is no assumption that
2832 dnl cross-compiling would imply a non-desktop OS.
2834 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2835     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2836     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2837     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2840 # Whether to build "avmedia" functionality or not.
2842 if test -z "$enable_avmedia"; then
2843     enable_avmedia=yes
2846 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2847 if test "$enable_avmedia" = yes; then
2848     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2849 else
2850     USE_AVMEDIA_DUMMY='TRUE'
2852 AC_SUBST(USE_AVMEDIA_DUMMY)
2854 # Decide whether to build database connectivity stuff (including
2855 # Base) or not. We probably don't want to on non-desktop OSes.
2856 if test -z "$enable_database_connectivity"; then
2857     # --disable-database-connectivity is unfinished work in progress
2858     # and the iOS test app doesn't link if we actually try to use it.
2859     # if test $_os != iOS -a $_os != Android; then
2860     if test $_os != iOS; then
2861         enable_database_connectivity=yes
2862     fi
2865 if test "$enable_database_connectivity" = yes; then
2866     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2867     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2870 if test -z "$enable_extensions"; then
2871     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2872     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2873         enable_extensions=yes
2874     fi
2877 if test "$enable_extensions" = yes; then
2878     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2879     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2882 if test -z "$enable_scripting"; then
2883     # Disable scripting for iOS unless specifically overridden
2884     # with --enable-scripting.
2885     if test $_os != iOS; then
2886         enable_scripting=yes
2887     fi
2890 DISABLE_SCRIPTING=''
2891 if test "$enable_scripting" = yes; then
2892     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2893     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2894 else
2895     DISABLE_SCRIPTING='TRUE'
2896     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2899 if test $_os = iOS -o $_os = Android; then
2900     # Disable dynamic_loading always for iOS and Android
2901     enable_dynamic_loading=no
2902 elif test -z "$enable_dynamic_loading"; then
2903     # Otherwise enable it unless specifically disabled
2904     enable_dynamic_loading=yes
2907 DISABLE_DYNLOADING=''
2908 if test "$enable_dynamic_loading" = yes; then
2909     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2910 else
2911     DISABLE_DYNLOADING='TRUE'
2913 AC_SUBST(DISABLE_DYNLOADING)
2915 # remember SYSBASE value
2916 AC_SUBST(SYSBASE)
2918 dnl ===================================================================
2919 dnl  Sort out various gallery compilation options
2920 dnl ===================================================================
2921 AC_MSG_CHECKING([how to build and package galleries])
2922 if test -n "${with_galleries}"; then
2923     if test "$with_galleries" = "build"; then
2924         WITH_GALLERY_BUILD=TRUE
2925         AC_MSG_RESULT([build from source images internally])
2926     elif test "$with_galleries" = "no"; then
2927         WITH_GALLERY_BUILD=
2928         AC_MSG_RESULT([disable non-internal gallery build])
2929     else
2930         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2931     fi
2932 else
2933     if test $_os != iOS -a $_os != Android; then
2934         WITH_GALLERY_BUILD=TRUE
2935         AC_MSG_RESULT([internal src images for desktop])
2936     else
2937         WITH_GALLERY_BUILD=
2938         AC_MSG_RESULT([disable src image build])
2939     fi
2941 AC_SUBST(WITH_GALLERY_BUILD)
2943 dnl ===================================================================
2944 dnl  Checks if ccache is available
2945 dnl ===================================================================
2946 CCACHE_DEPEND_MODE=
2947 if test "$_os" = "WINNT"; then
2948     # on windows/VC build do not use ccache
2949     CCACHE=""
2950 elif test "$enable_ccache" = "no"; then
2951     CCACHE=""
2952 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2953     case "%$CC%$CXX%" in
2954     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2955     # assume that's good then
2956     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2957         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2958         CCACHE_DEPEND_MODE=1
2959         ;;
2960     *)
2961         AC_PATH_PROG([CCACHE],[ccache],[not found])
2962         if test "$CCACHE" = "not found"; then
2963             CCACHE=""
2964         else
2965             CCACHE_DEPEND_MODE=1
2966             # Need to check for ccache version: otherwise prevents
2967             # caching of the results (like "-x objective-c++" for Mac)
2968             if test $_os = Darwin -o $_os = iOS; then
2969                 # Check ccache version
2970                 AC_MSG_CHECKING([whether version of ccache is suitable])
2971                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2972                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2973                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2974                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
2975                 else
2976                     AC_MSG_RESULT([no, $CCACHE_VERSION])
2977                     CCACHE=""
2978                     CCACHE_DEPEND_MODE=
2979                 fi
2980             fi
2981         fi
2982         ;;
2983     esac
2984 else
2985     CCACHE=""
2987 if test "$enable_ccache" = "nodepend"; then
2988     CCACHE_DEPEND_MODE=""
2990 AC_SUBST(CCACHE_DEPEND_MODE)
2992 if test "$CCACHE" != ""; then
2993     ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2994     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2995     if test "$ccache_size" = ""; then
2996         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2997         if test "$ccache_size" = ""; then
2998             ccache_size=0
2999         fi
3000         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3001         if test $ccache_size -lt 1024; then
3002             CCACHE=""
3003             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3004             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3005         else
3006             # warn that ccache may be too small for debug build
3007             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3008             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3009         fi
3010     else
3011         if test $ccache_size -lt 5; then
3012             #warn that ccache may be too small for debug build
3013             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3014             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3015         fi
3016     fi
3019 dnl ===================================================================
3020 dnl  Checks for C compiler,
3021 dnl  The check for the C++ compiler is later on.
3022 dnl ===================================================================
3023 if test "$_os" != "WINNT"; then
3024     GCC_HOME_SET="true"
3025     AC_MSG_CHECKING([gcc home])
3026     if test -z "$with_gcc_home"; then
3027         if test "$enable_icecream" = "yes"; then
3028             if test -d "/usr/lib/icecc/bin"; then
3029                 GCC_HOME="/usr/lib/icecc/"
3030             elif test -d "/usr/libexec/icecc/bin"; then
3031                 GCC_HOME="/usr/libexec/icecc/"
3032             elif test -d "/opt/icecream/bin"; then
3033                 GCC_HOME="/opt/icecream/"
3034             else
3035                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3037             fi
3038         else
3039             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3040             GCC_HOME_SET="false"
3041         fi
3042     else
3043         GCC_HOME="$with_gcc_home"
3044     fi
3045     AC_MSG_RESULT($GCC_HOME)
3046     AC_SUBST(GCC_HOME)
3048     if test "$GCC_HOME_SET" = "true"; then
3049         if test -z "$CC"; then
3050             CC="$GCC_HOME/bin/gcc"
3051             CC_BASE="gcc"
3052         fi
3053         if test -z "$CXX"; then
3054             CXX="$GCC_HOME/bin/g++"
3055             CXX_BASE="g++"
3056         fi
3057     fi
3060 COMPATH=`dirname "$CC"`
3061 if test "$COMPATH" = "."; then
3062     AC_PATH_PROGS(COMPATH, $CC)
3063     dnl double square bracket to get single because of M4 quote...
3064     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3066 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3068 dnl ===================================================================
3069 dnl Java support
3070 dnl ===================================================================
3071 AC_MSG_CHECKING([whether to build with Java support])
3072 if test "$with_java" != "no"; then
3073     if test "$DISABLE_SCRIPTING" = TRUE; then
3074         AC_MSG_RESULT([no, overridden by --disable-scripting])
3075         ENABLE_JAVA=""
3076         with_java=no
3077     else
3078         AC_MSG_RESULT([yes])
3079         ENABLE_JAVA="TRUE"
3080         AC_DEFINE(HAVE_FEATURE_JAVA)
3081     fi
3082 else
3083     AC_MSG_RESULT([no])
3084     ENABLE_JAVA=""
3087 AC_SUBST(ENABLE_JAVA)
3089 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3091 dnl ENABLE_JAVA="" indicate no Java support at all
3093 dnl ===================================================================
3094 dnl Check macOS SDK and compiler
3095 dnl ===================================================================
3097 if test $_os = Darwin; then
3099     # If no --with-macosx-sdk option is given, look for one
3101     # The intent is that for "most" Mac-based developers, a suitable
3102     # SDK will be found automatically without any configure options.
3104     # For developers with a current Xcode, the lowest-numbered SDK
3105     # higher than or equal to the minimum required should be found.
3107     AC_MSG_CHECKING([what macOS SDK to use])
3108     for _macosx_sdk in ${with_macosx_sdk-11.0 10.15 10.14 10.13}; do
3109         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3110         if test -d "$MACOSX_SDK_PATH"; then
3111             with_macosx_sdk="${_macosx_sdk}"
3112             break
3113         else
3114             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3115             if test -d "$MACOSX_SDK_PATH"; then
3116                 with_macosx_sdk="${_macosx_sdk}"
3117                 break
3118             fi
3119         fi
3120     done
3121     if test ! -d "$MACOSX_SDK_PATH"; then
3122         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3123     fi
3125     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3127     case $with_macosx_sdk in
3128     10.13)
3129         MACOSX_SDK_VERSION=101300
3130         ;;
3131     10.14)
3132         MACOSX_SDK_VERSION=101400
3133         ;;
3134     10.15)
3135         MACOSX_SDK_VERSION=101500
3136         ;;
3137     11.0)
3138         MACOSX_SDK_VERSION=110000
3139         ;;
3140     *)
3141         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.0])
3142         ;;
3143     esac
3145     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3146         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3147     fi
3149     if test "$with_macosx_version_min_required" = "" ; then
3150         if test "$host_cpu" = x86_64; then
3151             with_macosx_version_min_required="10.10";
3152         else
3153             with_macosx_version_min_required="11.0";
3154         fi
3155     fi
3157     if test "$with_macosx_version_max_allowed" = "" ; then
3158         with_macosx_version_max_allowed="$with_macosx_sdk"
3159     fi
3161     # export this so that "xcrun" invocations later return matching values
3162     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3163     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3164     export DEVELOPER_DIR
3165     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3166     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3168     AC_MSG_CHECKING([whether Xcode is new enough])
3169     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3170     my_xcode_ver2=${my_xcode_ver1#Xcode }
3171     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3172     if test "$my_xcode_ver3" -ge 1103; then
3173         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3174     else
3175         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3176     fi
3178     case "$with_macosx_version_min_required" in
3179     10.10)
3180         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3181         ;;
3182     10.11)
3183         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3184         ;;
3185     10.12)
3186         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3187         ;;
3188     10.13)
3189         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3190         ;;
3191     10.14)
3192         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3193         ;;
3194     10.15)
3195         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3196         ;;
3197     10.16)
3198         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3199         ;;
3200     11.0)
3201         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3202         ;;
3203     *)
3204         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.0])
3205         ;;
3206     esac
3208     LIBTOOL=/usr/bin/libtool
3209     INSTALL_NAME_TOOL=install_name_tool
3210     if test -z "$save_CC"; then
3211         stdlib=-stdlib=libc++
3213         AC_MSG_CHECKING([what C compiler to use])
3214         CC="`xcrun -find clang`"
3215         CC_BASE=`first_arg_basename "$CC"`
3216         if test "$host_cpu" = x86_64; then
3217             CC+=" -target x86_64-apple-macos"
3218         else
3219             CC+=" -target arm64-apple-macos"
3220         fi
3221         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3222         AC_MSG_RESULT([$CC])
3224         AC_MSG_CHECKING([what C++ compiler to use])
3225         CXX="`xcrun -find clang++`"
3226         CXX_BASE=`first_arg_basename "$CXX"`
3227         if test "$host_cpu" = x86_64; then
3228             CXX+=" -target x86_64-apple-macos"
3229         else
3230             CXX+=" -target arm64-apple-macos"
3231         fi
3232         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3233         AC_MSG_RESULT([$CXX])
3235         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3236         AR=`xcrun -find ar`
3237         NM=`xcrun -find nm`
3238         STRIP=`xcrun -find strip`
3239         LIBTOOL=`xcrun -find libtool`
3240         RANLIB=`xcrun -find ranlib`
3241     fi
3243     case "$with_macosx_version_max_allowed" in
3244     10.10)
3245         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3246         ;;
3247     10.11)
3248         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3249         ;;
3250     10.12)
3251         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3252         ;;
3253     10.13)
3254         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3255         ;;
3256     10.14)
3257         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3258         ;;
3259     10.15)
3260         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3261         ;;
3262     11.0)
3263         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3264         ;;
3265     *)
3266         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.0])
3267         ;;
3268     esac
3270     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3271     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3272         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])
3273     else
3274         AC_MSG_RESULT([ok])
3275     fi
3277     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3278     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3279         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3280     else
3281         AC_MSG_RESULT([ok])
3282     fi
3283     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3284     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3286     AC_MSG_CHECKING([whether to do code signing])
3288     if test "$enable_macosx_code_signing" = yes; then
3289         # By default use the first suitable certificate (?).
3291         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3292         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3293         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3294         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3295         # "Developer ID Application" one.
3297         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3298         if test -n "$identity"; then
3299             MACOSX_CODESIGNING_IDENTITY=$identity
3300             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3301             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3302         else
3303             AC_MSG_ERROR([cannot determine identity to use])
3304         fi
3305     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3306         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3307         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3308         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3309     else
3310         AC_MSG_RESULT([no])
3311     fi
3313     AC_MSG_CHECKING([whether to create a Mac App Store package])
3315     if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3316         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3317     elif test "$enable_macosx_package_signing" = yes; then
3318         # By default use the first suitable certificate.
3319         # It should be a "3rd Party Mac Developer Installer" one
3321         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3322         if test -n "$identity"; then
3323             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3324             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3325             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3326         else
3327             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3328         fi
3329     elif test -n "$enable_macosx_package_signing"; then
3330         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3331         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3332         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3333     else
3334         AC_MSG_RESULT([no])
3335     fi
3337     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3338         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3339     fi
3341     AC_MSG_CHECKING([whether to sandbox the application])
3343     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3344         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3345     elif test "$enable_macosx_sandbox" = yes; then
3346         ENABLE_MACOSX_SANDBOX=TRUE
3347         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3348         AC_MSG_RESULT([yes])
3349     else
3350         AC_MSG_RESULT([no])
3351     fi
3353     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3354     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3355     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3357 AC_SUBST(MACOSX_SDK_PATH)
3358 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3359 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3360 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3361 AC_SUBST(INSTALL_NAME_TOOL)
3362 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3363 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3364 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3365 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3366 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3368 dnl ===================================================================
3369 dnl Check iOS SDK and compiler
3370 dnl ===================================================================
3372 if test $_os = iOS; then
3373     AC_MSG_CHECKING([what iOS SDK to use])
3374     current_sdk_ver=14.2
3375     older_sdk_vers="14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3376     if test "$enable_ios_simulator" = "yes"; then
3377         platform=iPhoneSimulator
3378         versionmin=-mios-simulator-version-min=12.2
3379     else
3380         platform=iPhoneOS
3381         versionmin=-miphoneos-version-min=12.2
3382     fi
3383     xcode_developer=`xcode-select -print-path`
3385     for sdkver in $current_sdk_ver $older_sdk_vers; do
3386         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3387         if test -d $t; then
3388             sysroot=$t
3389             break
3390         fi
3391     done
3393     if test -z "$sysroot"; then
3394         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3395     fi
3397     AC_MSG_RESULT($sysroot)
3399     stdlib="-stdlib=libc++"
3401     AC_MSG_CHECKING([what C compiler to use])
3402     CC="`xcrun -find clang`"
3403     CC_BASE=`first_arg_basename "$CC"`
3404     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3405     AC_MSG_RESULT([$CC])
3407     AC_MSG_CHECKING([what C++ compiler to use])
3408     CXX="`xcrun -find clang++`"
3409     CXX_BASE=`first_arg_basename "$CXX"`
3410     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3411     AC_MSG_RESULT([$CXX])
3413     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3414     AR=`xcrun -find ar`
3415     NM=`xcrun -find nm`
3416     STRIP=`xcrun -find strip`
3417     LIBTOOL=`xcrun -find libtool`
3418     RANLIB=`xcrun -find ranlib`
3421 AC_MSG_CHECKING([whether to treat the installation as read-only])
3423 if test $_os = Darwin; then
3424     enable_readonly_installset=yes
3425 elif test "$enable_extensions" != yes; then
3426     enable_readonly_installset=yes
3428 if test "$enable_readonly_installset" = yes; then
3429     AC_MSG_RESULT([yes])
3430     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3431 else
3432     AC_MSG_RESULT([no])
3435 dnl ===================================================================
3436 dnl Structure of install set
3437 dnl ===================================================================
3439 if test $_os = Darwin; then
3440     LIBO_BIN_FOLDER=MacOS
3441     LIBO_ETC_FOLDER=Resources
3442     LIBO_LIBEXEC_FOLDER=MacOS
3443     LIBO_LIB_FOLDER=Frameworks
3444     LIBO_LIB_PYUNO_FOLDER=Resources
3445     LIBO_SHARE_FOLDER=Resources
3446     LIBO_SHARE_HELP_FOLDER=Resources/help
3447     LIBO_SHARE_JAVA_FOLDER=Resources/java
3448     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3449     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3450     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3451     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3452     LIBO_URE_BIN_FOLDER=MacOS
3453     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3454     LIBO_URE_LIB_FOLDER=Frameworks
3455     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3456     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3457 elif test $_os = WINNT; then
3458     LIBO_BIN_FOLDER=program
3459     LIBO_ETC_FOLDER=program
3460     LIBO_LIBEXEC_FOLDER=program
3461     LIBO_LIB_FOLDER=program
3462     LIBO_LIB_PYUNO_FOLDER=program
3463     LIBO_SHARE_FOLDER=share
3464     LIBO_SHARE_HELP_FOLDER=help
3465     LIBO_SHARE_JAVA_FOLDER=program/classes
3466     LIBO_SHARE_PRESETS_FOLDER=presets
3467     LIBO_SHARE_READMES_FOLDER=readmes
3468     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3469     LIBO_SHARE_SHELL_FOLDER=program/shell
3470     LIBO_URE_BIN_FOLDER=program
3471     LIBO_URE_ETC_FOLDER=program
3472     LIBO_URE_LIB_FOLDER=program
3473     LIBO_URE_MISC_FOLDER=program
3474     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3475 else
3476     LIBO_BIN_FOLDER=program
3477     LIBO_ETC_FOLDER=program
3478     LIBO_LIBEXEC_FOLDER=program
3479     LIBO_LIB_FOLDER=program
3480     LIBO_LIB_PYUNO_FOLDER=program
3481     LIBO_SHARE_FOLDER=share
3482     LIBO_SHARE_HELP_FOLDER=help
3483     LIBO_SHARE_JAVA_FOLDER=program/classes
3484     LIBO_SHARE_PRESETS_FOLDER=presets
3485     LIBO_SHARE_READMES_FOLDER=readmes
3486     if test "$enable_fuzzers" != yes; then
3487         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3488     else
3489         LIBO_SHARE_RESOURCE_FOLDER=resource
3490     fi
3491     LIBO_SHARE_SHELL_FOLDER=program/shell
3492     LIBO_URE_BIN_FOLDER=program
3493     LIBO_URE_ETC_FOLDER=program
3494     LIBO_URE_LIB_FOLDER=program
3495     LIBO_URE_MISC_FOLDER=program
3496     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3498 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3499 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3500 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3501 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3502 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3503 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3504 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3505 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3506 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3507 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3508 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3509 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3510 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3511 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3515 # Not all of them needed in config_host.mk, add more if need arises
3516 AC_SUBST(LIBO_BIN_FOLDER)
3517 AC_SUBST(LIBO_ETC_FOLDER)
3518 AC_SUBST(LIBO_LIB_FOLDER)
3519 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3520 AC_SUBST(LIBO_SHARE_FOLDER)
3521 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3522 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3523 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3524 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3525 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3526 AC_SUBST(LIBO_URE_BIN_FOLDER)
3527 AC_SUBST(LIBO_URE_ETC_FOLDER)
3528 AC_SUBST(LIBO_URE_LIB_FOLDER)
3529 AC_SUBST(LIBO_URE_MISC_FOLDER)
3530 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3532 dnl ===================================================================
3533 dnl Windows specific tests and stuff
3534 dnl ===================================================================
3536 reg_get_value()
3538     # Return value: $regvalue
3539     unset regvalue
3541     if test "$build_os" = "wsl"; then
3542         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3543         return
3544     fi
3546     local _regentry="/proc/registry${1}/${2}"
3547     if test -f "$_regentry"; then
3548         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3549         # Registry keys read via /proc/registry* are always \0 terminated!
3550         local _regvalue=$(tr -d '\0' < "$_regentry")
3551         if test $? -eq 0; then
3552             regvalue=$_regvalue
3553         fi
3554     fi
3557 # Get a value from the 32-bit side of the Registry
3558 reg_get_value_32()
3560     reg_get_value "32" "$1"
3563 # Get a value from the 64-bit side of the Registry
3564 reg_get_value_64()
3566     reg_get_value "64" "$1"
3569 case "$host_os" in
3570 cygwin*|wsl*)
3571     COM=MSC
3572     USING_X11=
3573     OS=WNT
3574     RTL_OS=Windows
3575     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3576         P_SEP=";"
3577     else
3578         P_SEP=:
3579     fi
3580     case "$host_cpu" in
3581     x86_64)
3582         CPUNAME=X86_64
3583         RTL_ARCH=X86_64
3584         PLATFORMID=windows_x86_64
3585         WINDOWS_X64=1
3586         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3587         WIN_HOST_ARCH="x64"
3588         WIN_MULTI_ARCH="x86"
3589         WIN_HOST_BITS=64
3590         ;;
3591     i*86)
3592         CPUNAME=INTEL
3593         RTL_ARCH=x86
3594         PLATFORMID=windows_x86
3595         WIN_HOST_ARCH="x86"
3596         WIN_HOST_BITS=32
3597         WIN_OTHER_ARCH="x64"
3598         ;;
3599     aarch64)
3600         CPUNAME=ARM64
3601         RTL_ARCH=arm64
3602         PLATFORMID=windows_arm64
3603         WINDOWS_X64=1
3604         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3605         WIN_HOST_ARCH="arm64"
3606         WIN_HOST_BITS=64
3607         with_ucrt_dir=no
3608         ;;
3609     *)
3610         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3611         ;;
3612     esac
3614     case "$build_cpu" in
3615     x86_64) WIN_BUILD_ARCH="x64" ;;
3616     i*86) WIN_BUILD_ARCH="x86" ;;
3617     aarch64) WIN_BUILD_ARCH="arm64" ;;
3618     *)
3619         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3620         ;;
3621     esac
3623     SCPDEFS="$SCPDEFS -D_MSC_VER"
3624     ;;
3625 esac
3627 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3628 # other-arch won't, but wouldn't break the build (x64 on x86).
3629 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3630     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3634 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3635     # To allow building Windows multi-arch releases without cross-tooling
3636     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3637         cross_compiling="yes"
3638     fi
3640 if test "$cross_compiling" = "yes"; then
3641     export CROSS_COMPILING=TRUE
3642 else
3643     CROSS_COMPILING=
3644     BUILD_TYPE="$BUILD_TYPE NATIVE"
3646 AC_SUBST(CROSS_COMPILING)
3648 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3649 # NOTE: must _not_ be used for bundled external libraries!
3650 ISYSTEM=
3651 if test "$GCC" = "yes"; then
3652     AC_MSG_CHECKING( for -isystem )
3653     save_CFLAGS=$CFLAGS
3654     CFLAGS="$CFLAGS -Werror"
3655     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3656     CFLAGS=$save_CFLAGS
3657     if test -n "$ISYSTEM"; then
3658         AC_MSG_RESULT(yes)
3659     else
3660         AC_MSG_RESULT(no)
3661     fi
3663 if test -z "$ISYSTEM"; then
3664     # fall back to using -I
3665     ISYSTEM=-I
3667 AC_SUBST(ISYSTEM)
3669 dnl ===================================================================
3670 dnl  Check which Visual Studio compiler is used
3671 dnl ===================================================================
3673 map_vs_year_to_version()
3675     # Return value: $vsversion
3677     unset vsversion
3679     case $1 in
3680     2019)
3681         vsversion=16;;
3682     *)
3683         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3684     esac
3687 vs_versions_to_check()
3689     # Args: $1 (optional) : versions to check, in the order of preference
3690     # Return value: $vsversions
3692     unset vsversions
3694     if test -n "$1"; then
3695         map_vs_year_to_version "$1"
3696         vsversions=$vsversion
3697     else
3698         # We accept only 2019
3699         vsversions="16"
3700     fi
3703 win_get_env_from_vsvars32bat()
3705     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3706     # Also seems to be located in another directory under the same name: vsvars32.bat
3707     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3708     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3709     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3710     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3711     local result
3712     if test "$build_os" = "wsl"; then
3713         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3714     else
3715         chmod +x $WRAPPERBATCHFILEPATH
3716         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3717     fi
3718     rm -f $WRAPPERBATCHFILEPATH
3719     printf '%s' "$result"
3722 find_ucrt()
3724     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3725     if test -n "$regvalue"; then
3726         PathFormat "$regvalue"
3727         UCRTSDKDIR=$formatted_path_unix
3728         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3729         UCRTVERSION=$regvalue
3730         # Rest if not exist
3731         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3732           UCRTSDKDIR=
3733         fi
3734     fi
3735     if test -z "$UCRTSDKDIR"; then
3736         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3737         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3738         if test -f "$ide_env_file"; then
3739             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3740             UCRTSDKDIR=$formatted_path
3741             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3742             dnl Hack needed at least by tml:
3743             if test "$UCRTVERSION" = 10.0.15063.0 \
3744                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3745                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3746             then
3747                 UCRTVERSION=10.0.14393.0
3748             fi
3749         else
3750           AC_MSG_ERROR([No UCRT found])
3751         fi
3752     fi
3755 find_msvc()
3757     # Find Visual C++ 2019
3758     # Args: $1 (optional) : The VS version year
3759     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3761     unset vctest vcnum vcnumwithdot vcbuildnumber
3763     vs_versions_to_check "$1"
3764     if test "$build_os" = wsl; then
3765         vswhere="$PROGRAMFILESX86"
3766     else
3767         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3768     fi
3769     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3770     PathFormat "$vswhere"
3771     vswhere=$formatted_path_unix
3772     for ver in $vsversions; do
3773         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3774         # Fall back to all MS products (this includes VC++ Build Tools)
3775         if ! test -n "$vswhereoutput"; then
3776             AC_MSG_CHECKING([VC++ Build Tools and similar])
3777             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3778         fi
3779         if test -n "$vswhereoutput"; then
3780             PathFormat "$vswhereoutput"
3781             vctest=$formatted_path_unix
3782             break
3783         fi
3784     done
3786     if test -n "$vctest"; then
3787         vcnumwithdot="$ver.0"
3788         case "$vcnumwithdot" in
3789         16.0)
3790             vcyear=2019
3791             vcnum=160
3792             ;;
3793         esac
3794         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3796     fi
3799 test_cl_exe()
3801     AC_MSG_CHECKING([$1 compiler])
3803     CL_EXE_PATH="$2/cl.exe"
3805     if test ! -f "$CL_EXE_PATH"; then
3806         if test "$1" = "multi-arch"; then
3807             AC_MSG_WARN([no compiler (cl.exe) in $2])
3808             return 1
3809         else
3810             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3811         fi
3812     fi
3814     dnl ===========================================================
3815     dnl  Check for the corresponding mspdb*.dll
3816     dnl ===========================================================
3818     # MSVC 15.0 has libraries from 14.0?
3819     mspdbnum="140"
3821     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3822         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3823     fi
3825     # The compiles has to find its shared libraries
3826     OLD_PATH="$PATH"
3827     TEMP_PATH=`cygpath -d "$2"`
3828     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3830     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3831         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3832     fi
3834     PATH="$OLD_PATH"
3836     AC_MSG_RESULT([$CL_EXE_PATH])
3839 SOLARINC=
3840 MSBUILD_PATH=
3841 DEVENV=
3842 if test "$_os" = "WINNT"; then
3843     AC_MSG_CHECKING([Visual C++])
3844     find_msvc "$with_visual_studio"
3845     if test -z "$vctest"; then
3846         if test -n "$with_visual_studio"; then
3847             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3848         else
3849             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3850         fi
3851     fi
3852     AC_MSG_RESULT([])
3854     VC_PRODUCT_DIR="$vctest/VC"
3855     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3857     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3858     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3859         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3860         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3861         if test $? -ne 0; then
3862             WIN_MULTI_ARCH=""
3863             WIN_OTHER_ARCH=""
3864         fi
3865     fi
3867     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3868         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3869         test_cl_exe "build" "$MSVC_BUILD_PATH"
3870     fi
3872     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3873         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3874         test_cl_exe "host" "$MSVC_HOST_PATH"
3875     else
3876         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3877     fi
3879     AC_MSG_CHECKING([for short pathname of VC product directory])
3880     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3881     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3883     UCRTSDKDIR=
3884     UCRTVERSION=
3886     AC_MSG_CHECKING([for UCRT location])
3887     find_ucrt
3888     # find_ucrt errors out if it doesn't find it
3889     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3890     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3891     ucrtincpath_formatted=$formatted_path
3892     # SOLARINC is used for external modules and must be set too.
3893     # And no, it's not sufficient to set SOLARINC only, as configure
3894     # itself doesn't honour it.
3895     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3896     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3897     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3898     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3900     AC_SUBST(UCRTSDKDIR)
3901     AC_SUBST(UCRTVERSION)
3903     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3904     # Find the proper version of MSBuild.exe to use based on the VS version
3905     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3906     if test -n "$regvalue" ; then
3907         AC_MSG_RESULT([found: $regvalue])
3908         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3909     else
3910         if test "$vcnumwithdot" = "16.0"; then
3911             if test "$WIN_BUILD_ARCH" != "x64"; then
3912                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3913             else
3914                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3915             fi
3916         else
3917             if test "$WIN_BUILD_ARCH" != "x64"; then
3918                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3919             else
3920                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3921             fi
3922         fi
3923         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3924         AC_MSG_RESULT([$regvalue])
3925     fi
3927     # Find the version of devenv.exe
3928     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3929     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3930     DEVENV_unix=$(cygpath -u "$DEVENV")
3931     if test ! -e "$DEVENV_unix"; then
3932         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3933     fi
3935     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3936     dnl needed when building CLR code:
3937     if test -z "$MSVC_CXX"; then
3938         # This gives us a posix path with 8.3 filename restrictions
3939         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3940     fi
3942     if test -z "$CC"; then
3943         CC=$MSVC_CXX
3944         CC_BASE=`first_arg_basename "$CC"`
3945     fi
3946     if test -z "$CXX"; then
3947         CXX=$MSVC_CXX
3948         CXX_BASE=`first_arg_basename "$CXX"`
3949     fi
3951     if test -n "$CC"; then
3952         # Remove /cl.exe from CC case insensitive
3953         AC_MSG_NOTICE([found Visual C++ $vcyear])
3955         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3956         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3958         PathFormat "$COMPATH"
3959         COMPATH=`win_short_path_for_make "$formatted_path"`
3961         VCVER=$vcnum
3963         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
3964         # are always "better", we list them in reverse chronological order.
3966         case "$vcnum" in
3967         160)
3968             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3969             ;;
3970         esac
3972         # The expectation is that --with-windows-sdk should not need to be used
3973         if test -n "$with_windows_sdk"; then
3974             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3975             *" "$with_windows_sdk" "*)
3976                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3977                 ;;
3978             *)
3979                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3980                 ;;
3981             esac
3982         fi
3984         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3985         ac_objext=obj
3986         ac_exeext=exe
3988     else
3989         AC_MSG_ERROR([Visual C++ not found after all, huh])
3990     fi
3992     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
3993     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3994         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
3995         // between Visual Studio versions and _MSC_VER:
3996         #if _MSC_VER < 1924
3997         #error
3998         #endif
3999     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4001     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4002     # version of the Explorer extension (and maybe other small
4003     # bits, too) needed when installing a 32-bit LibreOffice on a
4004     # 64-bit OS. The 64-bit Explorer extension is a feature that
4005     # has been present since long in OOo. Don't confuse it with
4006     # building LibreOffice itself as 64-bit code.
4008     BUILD_X64=
4009     CXX_X64_BINARY=
4011     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4012         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4013         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4014              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4015         then
4016             BUILD_X64=TRUE
4017             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4018             AC_MSG_RESULT([found])
4019         else
4020             AC_MSG_RESULT([not found])
4021             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4022         fi
4023     elif test "$WIN_HOST_ARCH" = "x64"; then
4024         CXX_X64_BINARY=$CXX
4025     fi
4026     AC_SUBST(BUILD_X64)
4028     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4029     AC_SUBST(CXX_X64_BINARY)
4031     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4032     # needed to support TWAIN scan on both 32- and 64-bit systems
4034     case "$WIN_HOST_ARCH" in
4035     x64)
4036         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4037         if test -n "$CXX_X86_BINARY"; then
4038             BUILD_X86=TRUE
4039             AC_MSG_RESULT([preset])
4040         elif test -n "$WIN_MULTI_ARCH"; then
4041             BUILD_X86=TRUE
4042             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4043             CXX_X86_BINARY+=" /arch:SSE"
4044             AC_MSG_RESULT([found])
4045         else
4046             AC_MSG_RESULT([not found])
4047             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4048         fi
4049         ;;
4050     x86)
4051         BUILD_X86=TRUE
4052         CXX_X86_BINARY=$MSVC_CXX
4053         ;;
4054     esac
4055     AC_SUBST(BUILD_X86)
4056     AC_SUBST(CXX_X86_BINARY)
4058 AC_SUBST(VCVER)
4059 AC_SUBST(DEVENV)
4060 AC_SUBST(MSVC_CXX)
4062 COM_IS_CLANG=
4063 AC_MSG_CHECKING([whether the compiler is actually Clang])
4064 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4065     #ifndef __clang__
4066     you lose
4067     #endif
4068     int foo=42;
4069     ]])],
4070     [AC_MSG_RESULT([yes])
4071      COM_IS_CLANG=TRUE],
4072     [AC_MSG_RESULT([no])])
4073 AC_SUBST(COM_IS_CLANG)
4075 CC_PLAIN=$CC
4076 CLANGVER=
4077 if test "$COM_IS_CLANG" = TRUE; then
4078     AC_MSG_CHECKING([whether Clang is new enough])
4079     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4080         #if !defined __apple_build_version__
4081         #error
4082         #endif
4083         ]])],
4084         [my_apple_clang=yes],[my_apple_clang=])
4085     if test "$my_apple_clang" = yes; then
4086         AC_MSG_RESULT([assumed yes (Apple Clang)])
4087     else
4088         if test "$_os" = WINNT; then
4089             dnl In which case, assume clang-cl:
4090             my_args="/EP /TC"
4091             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4092             dnl clang-cl:
4093             CC_PLAIN=
4094             for i in $CC; do
4095                 case $i in
4096                 -FIIntrin.h)
4097                     ;;
4098                 *)
4099                     CC_PLAIN="$CC_PLAIN $i"
4100                     ;;
4101                 esac
4102             done
4103         else
4104             my_args="-E -P"
4105         fi
4106         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4107         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4108         CLANGVER=`echo $clang_version \
4109             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4110         if test "$CLANGVER" -ge 50002; then
4111             AC_MSG_RESULT([yes ($clang_version)])
4112         else
4113             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4114         fi
4115         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4116         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4117     fi
4120 SHOWINCLUDES_PREFIX=
4121 if test "$_os" = WINNT; then
4122     dnl We need to guess the prefix of the -showIncludes output, it can be
4123     dnl localized
4124     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4125     echo "#include <stdlib.h>" > conftest.c
4126     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4127         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4128     rm -f conftest.c conftest.obj
4129     if test -z "$SHOWINCLUDES_PREFIX"; then
4130         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4131     else
4132         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4133     fi
4135 AC_SUBST(SHOWINCLUDES_PREFIX)
4138 # prefix C with ccache if needed
4140 if test "$CCACHE" != ""; then
4141     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4143     AC_LANG_PUSH([C])
4144     save_CFLAGS=$CFLAGS
4145     CFLAGS="$CFLAGS --ccache-skip -O2"
4146     dnl an empty program will do, we're checking the compiler flags
4147     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4148                       [use_ccache=yes], [use_ccache=no])
4149     CFLAGS=$save_CFLAGS
4150     if test $use_ccache = yes; then
4151         AC_MSG_RESULT([yes])
4152     else
4153         CC="$CCACHE $CC"
4154         CC_BASE="ccache $CC_BASE"
4155         AC_MSG_RESULT([no])
4156     fi
4157     AC_LANG_POP([C])
4160 # ===================================================================
4161 # check various GCC options that Clang does not support now but maybe
4162 # will somewhen in the future, check them even for GCC, so that the
4163 # flags are set
4164 # ===================================================================
4166 HAVE_GCC_GGDB2=
4167 if test "$GCC" = "yes"; then
4168     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4169     save_CFLAGS=$CFLAGS
4170     CFLAGS="$CFLAGS -Werror -ggdb2"
4171     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4172     CFLAGS=$save_CFLAGS
4173     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4174         AC_MSG_RESULT([yes])
4175     else
4176         AC_MSG_RESULT([no])
4177     fi
4179     if test "$host_cpu" = "m68k"; then
4180         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4181         save_CFLAGS=$CFLAGS
4182         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4183         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4184         CFLAGS=$save_CFLAGS
4185         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4186             AC_MSG_RESULT([yes])
4187         else
4188             AC_MSG_ERROR([no])
4189         fi
4190     fi
4192 AC_SUBST(HAVE_GCC_GGDB2)
4194 dnl ===================================================================
4195 dnl  Test the gcc version
4196 dnl ===================================================================
4197 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4198     AC_MSG_CHECKING([the GCC version])
4199     _gcc_version=`$CC -dumpversion`
4200     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4201         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4202     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4204     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4206     if test "$gcc_full_version" -lt 70000; then
4207         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4208     fi
4209 else
4210     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4211     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4212     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4213     # (which reports itself as GCC 4.2.1).
4214     GCC_VERSION=
4216 AC_SUBST(GCC_VERSION)
4218 dnl Set the ENABLE_DBGUTIL variable
4219 dnl ===================================================================
4220 AC_MSG_CHECKING([whether to build with additional debug utilities])
4221 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4222     ENABLE_DBGUTIL="TRUE"
4223     # this is an extra var so it can have different default on different MSVC
4224     # versions (in case there are version specific problems with it)
4225     MSVC_USE_DEBUG_RUNTIME="TRUE"
4227     AC_MSG_RESULT([yes])
4228     # cppunit and graphite expose STL in public headers
4229     if test "$with_system_cppunit" = "yes"; then
4230         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4231     else
4232         with_system_cppunit=no
4233     fi
4234     if test "$with_system_graphite" = "yes"; then
4235         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4236     else
4237         with_system_graphite=no
4238     fi
4239     if test "$with_system_orcus" = "yes"; then
4240         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4241     else
4242         with_system_orcus=no
4243     fi
4244     if test "$with_system_libcmis" = "yes"; then
4245         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4246     else
4247         with_system_libcmis=no
4248     fi
4249     if test "$with_system_hunspell" = "yes"; then
4250         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4251     else
4252         with_system_hunspell=no
4253     fi
4254     if test "$with_system_gpgmepp" = "yes"; then
4255         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4256     else
4257         with_system_gpgmepp=no
4258     fi
4259     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4260     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4261     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4262     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4263     # of those two is using the system variant:
4264     if test "$with_system_libnumbertext" = "yes"; then
4265         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4266     else
4267         with_system_libnumbertext=no
4268     fi
4269     if test "$with_system_libwps" = "yes"; then
4270         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4271     else
4272         with_system_libwps=no
4273     fi
4274 else
4275     ENABLE_DBGUTIL=""
4276     MSVC_USE_DEBUG_RUNTIME=""
4277     AC_MSG_RESULT([no])
4279 AC_SUBST(ENABLE_DBGUTIL)
4280 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4282 dnl Set the ENABLE_DEBUG variable.
4283 dnl ===================================================================
4284 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4285     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4287 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4288     if test -z "$libo_fuzzed_enable_debug"; then
4289         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4290     else
4291         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4292         enable_debug=yes
4293     fi
4296 AC_MSG_CHECKING([whether to do a debug build])
4297 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4298     ENABLE_DEBUG="TRUE"
4299     if test -n "$ENABLE_DBGUTIL" ; then
4300         AC_MSG_RESULT([yes (dbgutil)])
4301     else
4302         AC_MSG_RESULT([yes])
4303     fi
4304 else
4305     ENABLE_DEBUG=""
4306     AC_MSG_RESULT([no])
4308 AC_SUBST(ENABLE_DEBUG)
4310 dnl ===================================================================
4311 dnl Select the linker to use (gold/lld/ld.bfd).
4312 dnl This is done only after compiler checks (need to know if Clang is
4313 dnl used, for different defaults) and after checking if a debug build
4314 dnl is wanted (non-debug builds get the default linker if not explicitly
4315 dnl specified otherwise).
4316 dnl All checks for linker features/options should come after this.
4317 dnl ===================================================================
4318 check_use_ld()
4320     use_ld=-fuse-ld=${1%%:*}
4321     use_ld_path=${1#*:}
4322     if test "$use_ld_path" != "$1"; then
4323         use_ld="$use_ld --ld-path=$use_ld_path"
4324     fi
4325     use_ld_fail_if_error=$2
4326     use_ld_ok=
4327     AC_MSG_CHECKING([for $use_ld linker support])
4328     use_ld_ldflags_save="$LDFLAGS"
4329     LDFLAGS="$LDFLAGS $use_ld"
4330     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4331 #include <stdio.h>
4332         ],[
4333 printf ("hello world\n");
4334         ])], USE_LD=$use_ld, [])
4335     if test -n "$USE_LD"; then
4336         AC_MSG_RESULT( yes )
4337         use_ld_ok=yes
4338     else
4339         if test -n "$use_ld_fail_if_error"; then
4340             AC_MSG_ERROR( no )
4341         else
4342             AC_MSG_RESULT( no )
4343         fi
4344     fi
4345     if test -n "$use_ld_ok"; then
4346         dnl keep the value of LDFLAGS
4347         return 0
4348     fi
4349     LDFLAGS="$use_ld_ldflags_save"
4350     return 1
4352 USE_LD=
4353 if test "$enable_ld" != "no"; then
4354     if test "$GCC" = "yes"; then
4355         if test -n "$enable_ld"; then
4356             check_use_ld "$enable_ld" fail_if_error
4357         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4358             dnl non-debug builds default to the default linker
4359             true
4360         elif test -n "$COM_IS_CLANG"; then
4361             check_use_ld lld
4362             if test $? -ne 0; then
4363                 check_use_ld gold
4364             fi
4365         else
4366             # For gcc first try gold, new versions also support lld.
4367             check_use_ld gold
4368             if test $? -ne 0; then
4369                 check_use_ld lld
4370             fi
4371         fi
4372         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4373         rm conftest.out
4374         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4375         if test -z "$ld_used"; then
4376             ld_used="unknown"
4377         fi
4378         AC_MSG_CHECKING([for linker that is used])
4379         AC_MSG_RESULT([$ld_used])
4380         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4381             if echo "$ld_used" | grep -q "^GNU ld"; then
4382                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4383                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4384             fi
4385         fi
4386     else
4387         if test "$enable_ld" = "yes"; then
4388             AC_MSG_ERROR([--enable-ld not supported])
4389         fi
4390     fi
4392 AC_SUBST(USE_LD)
4394 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4395 if test "$GCC" = "yes"; then
4396     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4397     bsymbolic_functions_ldflags_save=$LDFLAGS
4398     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4399     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4400 #include <stdio.h>
4401         ],[
4402 printf ("hello world\n");
4403         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4404     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4405         AC_MSG_RESULT( found )
4406     else
4407         AC_MSG_RESULT( not found )
4408     fi
4409     LDFLAGS=$bsymbolic_functions_ldflags_save
4411 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4413 LD_GC_SECTIONS=
4414 if test "$GCC" = "yes"; then
4415     for flag in "--gc-sections" "-dead_strip"; do
4416         AC_MSG_CHECKING([for $flag linker support])
4417         ldflags_save=$LDFLAGS
4418         LDFLAGS="$LDFLAGS -Wl,$flag"
4419         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4420 #include <stdio.h>
4421             ],[
4422 printf ("hello world\n");
4423             ])],[
4424             LD_GC_SECTIONS="-Wl,$flag"
4425             AC_MSG_RESULT( found )
4426             ], [
4427             AC_MSG_RESULT( not found )
4428             ])
4429         LDFLAGS=$ldflags_save
4430         if test -n "$LD_GC_SECTIONS"; then
4431             break
4432         fi
4433     done
4435 AC_SUBST(LD_GC_SECTIONS)
4437 HAVE_GSPLIT_DWARF=
4438 if test "$enable_split_debug" != no; then
4439     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4440     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4441         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4442         save_CFLAGS=$CFLAGS
4443         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4444         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4445         CFLAGS=$save_CFLAGS
4446         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4447             AC_MSG_RESULT([yes])
4448         else
4449             if test "$enable_split_debug" = yes; then
4450                 AC_MSG_ERROR([no])
4451             else
4452                 AC_MSG_RESULT([no])
4453             fi
4454         fi
4455     fi
4456     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4457         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4458         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4459     fi
4461 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4463 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4464 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4465 save_CFLAGS=$CFLAGS
4466 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4467 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4468 CFLAGS=$save_CFLAGS
4469 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4470     AC_MSG_RESULT([yes])
4471 else
4472     AC_MSG_RESULT([no])
4474 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4476 ENABLE_GDB_INDEX=
4477 if test "$enable_gdb_index" != "no"; then
4478     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4479     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4480         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4481         save_CFLAGS=$CFLAGS
4482         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4483         have_ggnu_pubnames=
4484         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4485         if test "$have_ggnu_pubnames" != "TRUE"; then
4486             if test "$enable_gdb_index" = "yes"; then
4487                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4488             else
4489                 AC_MSG_RESULT( no )
4490             fi
4491         else
4492             AC_MSG_RESULT( yes )
4493             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4494             ldflags_save=$LDFLAGS
4495             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4496             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4497 #include <stdio.h>
4498                 ],[
4499 printf ("hello world\n");
4500                 ])], ENABLE_GDB_INDEX=TRUE, [])
4501             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4502                 AC_MSG_RESULT( yes )
4503             else
4504                 if test "$enable_gdb_index" = "yes"; then
4505                     AC_MSG_ERROR( no )
4506                 else
4507                     AC_MSG_RESULT( no )
4508                 fi
4509             fi
4510             LDFLAGS=$ldflags_save
4511         fi
4512         CFLAGS=$save_CFLAGS
4513         fi
4514     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4515         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4516         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4517     fi
4519 AC_SUBST(ENABLE_GDB_INDEX)
4521 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4522     enable_sal_log=yes
4524 if test "$enable_sal_log" = yes; then
4525     ENABLE_SAL_LOG=TRUE
4527 AC_SUBST(ENABLE_SAL_LOG)
4529 dnl Check for enable symbols option
4530 dnl ===================================================================
4531 AC_MSG_CHECKING([whether to generate debug information])
4532 if test -z "$enable_symbols"; then
4533     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4534         enable_symbols=yes
4535     else
4536         enable_symbols=no
4537     fi
4539 if test "$enable_symbols" = yes; then
4540     ENABLE_SYMBOLS_FOR=all
4541     AC_MSG_RESULT([yes])
4542 elif test "$enable_symbols" = no; then
4543     ENABLE_SYMBOLS_FOR=
4544     AC_MSG_RESULT([no])
4545 else
4546     # Selective debuginfo.
4547     ENABLE_SYMBOLS_FOR="$enable_symbols"
4548     AC_MSG_RESULT([for "$enable_symbols"])
4550 AC_SUBST(ENABLE_SYMBOLS_FOR)
4552 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4553     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4554     AC_MSG_CHECKING([whether enough memory is available for linking])
4555     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4556     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4557     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4558         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4559     else
4560         AC_MSG_RESULT([yes])
4561     fi
4564 ENABLE_OPTIMIZED=
4565 ENABLE_OPTIMIZED_DEBUG=
4566 AC_MSG_CHECKING([whether to compile with optimization flags])
4567 if test -z "$enable_optimized"; then
4568     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4569         enable_optimized=no
4570     else
4571         enable_optimized=yes
4572     fi
4574 if test "$enable_optimized" = yes; then
4575     ENABLE_OPTIMIZED=TRUE
4576     AC_MSG_RESULT([yes])
4577 elif test "$enable_optimized" = debug; then
4578     ENABLE_OPTIMIZED_DEBUG=TRUE
4579     AC_MSG_RESULT([yes (debug)])
4580     HAVE_GCC_OG=
4581     if test "$GCC" = "yes"; then
4582         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4583         save_CFLAGS=$CFLAGS
4584         CFLAGS="$CFLAGS -Werror -Og"
4585         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4586         CFLAGS=$save_CFLAGS
4587         if test "$HAVE_GCC_OG" = "TRUE"; then
4588             AC_MSG_RESULT([yes])
4589         else
4590             AC_MSG_RESULT([no])
4591         fi
4592     fi
4593     if test -z "$HAVE_GCC_OG"; then
4594         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4595     fi
4596 else
4597     AC_MSG_RESULT([no])
4599 AC_SUBST(ENABLE_OPTIMIZED)
4600 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4603 # determine CPUNAME, OS, ...
4604 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4606 case "$host_os" in
4608 aix*)
4609     COM=GCC
4610     CPUNAME=POWERPC
4611     USING_X11=TRUE
4612     OS=AIX
4613     RTL_OS=AIX
4614     RTL_ARCH=PowerPC
4615     PLATFORMID=aix_powerpc
4616     P_SEP=:
4617     ;;
4619 cygwin*|wsl*)
4620     # Already handled
4621     ;;
4623 darwin*|macos*)
4624     COM=GCC
4625     USING_X11=
4626     OS=MACOSX
4627     RTL_OS=MacOSX
4628     P_SEP=:
4630     case "$host_cpu" in
4631     aarch64|arm64)
4632         if test "$enable_ios_simulator" = "yes"; then
4633             OS=iOS
4634         else
4635             CPUNAME=AARCH64
4636             RTL_ARCH=AARCH64
4637             PLATFORMID=macosx_arm64
4638         fi
4639         ;;
4640     x86_64)
4641         if test "$enable_ios_simulator" = "yes"; then
4642             OS=iOS
4643         fi
4644         CPUNAME=X86_64
4645         RTL_ARCH=X86_64
4646         PLATFORMID=macosx_x86_64
4647         ;;
4648     *)
4649         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4650         ;;
4651     esac
4652     ;;
4654 ios*)
4655     COM=GCC
4656     USING_X11=
4657     OS=iOS
4658     RTL_OS=iOS
4659     P_SEP=:
4661     case "$host_cpu" in
4662     aarch64|arm64)
4663         if test "$enable_ios_simulator" = "yes"; then
4664             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4665         fi
4666         ;;
4667     *)
4668         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4669         ;;
4670     esac
4671     CPUNAME=AARCH64
4672     RTL_ARCH=AARCH64
4673     PLATFORMID=ios_arm64
4674     ;;
4676 dragonfly*)
4677     COM=GCC
4678     USING_X11=TRUE
4679     OS=DRAGONFLY
4680     RTL_OS=DragonFly
4681     P_SEP=:
4683     case "$host_cpu" in
4684     i*86)
4685         CPUNAME=INTEL
4686         RTL_ARCH=x86
4687         PLATFORMID=dragonfly_x86
4688         ;;
4689     x86_64)
4690         CPUNAME=X86_64
4691         RTL_ARCH=X86_64
4692         PLATFORMID=dragonfly_x86_64
4693         ;;
4694     *)
4695         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4696         ;;
4697     esac
4698     ;;
4700 freebsd*)
4701     COM=GCC
4702     USING_X11=TRUE
4703     RTL_OS=FreeBSD
4704     OS=FREEBSD
4705     P_SEP=:
4707     case "$host_cpu" in
4708     aarch64)
4709         CPUNAME=AARCH64
4710         PLATFORMID=freebsd_aarch64
4711         RTL_ARCH=AARCH64
4712         ;;
4713     i*86)
4714         CPUNAME=INTEL
4715         RTL_ARCH=x86
4716         PLATFORMID=freebsd_x86
4717         ;;
4718     x86_64|amd64)
4719         CPUNAME=X86_64
4720         RTL_ARCH=X86_64
4721         PLATFORMID=freebsd_x86_64
4722         ;;
4723     powerpc64)
4724         CPUNAME=POWERPC64
4725         RTL_ARCH=PowerPC_64
4726         PLATFORMID=freebsd_powerpc64
4727         ;;
4728     powerpc|powerpcspe)
4729         CPUNAME=POWERPC
4730         RTL_ARCH=PowerPC
4731         PLATFORMID=freebsd_powerpc
4732         ;;
4733     *)
4734         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4735         ;;
4736     esac
4737     ;;
4739 haiku*)
4740     COM=GCC
4741     USING_X11=
4742     GUIBASE=haiku
4743     RTL_OS=Haiku
4744     OS=HAIKU
4745     P_SEP=:
4747     case "$host_cpu" in
4748     i*86)
4749         CPUNAME=INTEL
4750         RTL_ARCH=x86
4751         PLATFORMID=haiku_x86
4752         ;;
4753     x86_64|amd64)
4754         CPUNAME=X86_64
4755         RTL_ARCH=X86_64
4756         PLATFORMID=haiku_x86_64
4757         ;;
4758     *)
4759         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4760         ;;
4761     esac
4762     ;;
4764 kfreebsd*)
4765     COM=GCC
4766     USING_X11=TRUE
4767     OS=LINUX
4768     RTL_OS=kFreeBSD
4769     P_SEP=:
4771     case "$host_cpu" in
4773     i*86)
4774         CPUNAME=INTEL
4775         RTL_ARCH=x86
4776         PLATFORMID=kfreebsd_x86
4777         ;;
4778     x86_64)
4779         CPUNAME=X86_64
4780         RTL_ARCH=X86_64
4781         PLATFORMID=kfreebsd_x86_64
4782         ;;
4783     *)
4784         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4785         ;;
4786     esac
4787     ;;
4789 linux-gnu*)
4790     COM=GCC
4791     USING_X11=TRUE
4792     OS=LINUX
4793     RTL_OS=Linux
4794     P_SEP=:
4796     case "$host_cpu" in
4798     aarch64)
4799         CPUNAME=AARCH64
4800         PLATFORMID=linux_aarch64
4801         RTL_ARCH=AARCH64
4802         ;;
4803     alpha)
4804         CPUNAME=AXP
4805         RTL_ARCH=ALPHA
4806         PLATFORMID=linux_alpha
4807         ;;
4808     arm*)
4809         CPUNAME=ARM
4810         EPM_FLAGS="-a arm"
4811         RTL_ARCH=ARM_EABI
4812         PLATFORMID=linux_arm_eabi
4813         case "$host_cpu" in
4814         arm*-linux)
4815             RTL_ARCH=ARM_OABI
4816             PLATFORMID=linux_arm_oabi
4817             ;;
4818         esac
4819         ;;
4820     hppa)
4821         CPUNAME=HPPA
4822         RTL_ARCH=HPPA
4823         EPM_FLAGS="-a hppa"
4824         PLATFORMID=linux_hppa
4825         ;;
4826     i*86)
4827         CPUNAME=INTEL
4828         RTL_ARCH=x86
4829         PLATFORMID=linux_x86
4830         ;;
4831     ia64)
4832         CPUNAME=IA64
4833         RTL_ARCH=IA64
4834         PLATFORMID=linux_ia64
4835         ;;
4836     mips)
4837         CPUNAME=GODSON
4838         RTL_ARCH=MIPS_EB
4839         EPM_FLAGS="-a mips"
4840         PLATFORMID=linux_mips_eb
4841         ;;
4842     mips64)
4843         CPUNAME=GODSON64
4844         RTL_ARCH=MIPS64_EB
4845         EPM_FLAGS="-a mips64"
4846         PLATFORMID=linux_mips64_eb
4847         ;;
4848     mips64el)
4849         CPUNAME=GODSON64
4850         RTL_ARCH=MIPS64_EL
4851         EPM_FLAGS="-a mips64el"
4852         PLATFORMID=linux_mips64_el
4853         ;;
4854     mipsel)
4855         CPUNAME=GODSON
4856         RTL_ARCH=MIPS_EL
4857         EPM_FLAGS="-a mipsel"
4858         PLATFORMID=linux_mips_el
4859         ;;
4860     m68k)
4861         CPUNAME=M68K
4862         RTL_ARCH=M68K
4863         PLATFORMID=linux_m68k
4864         ;;
4865     powerpc)
4866         CPUNAME=POWERPC
4867         RTL_ARCH=PowerPC
4868         PLATFORMID=linux_powerpc
4869         ;;
4870     powerpc64)
4871         CPUNAME=POWERPC64
4872         RTL_ARCH=PowerPC_64
4873         PLATFORMID=linux_powerpc64
4874         ;;
4875     powerpc64le)
4876         CPUNAME=POWERPC64
4877         RTL_ARCH=PowerPC_64_LE
4878         PLATFORMID=linux_powerpc64_le
4879         ;;
4880     sparc)
4881         CPUNAME=SPARC
4882         RTL_ARCH=SPARC
4883         PLATFORMID=linux_sparc
4884         ;;
4885     sparc64)
4886         CPUNAME=SPARC64
4887         RTL_ARCH=SPARC64
4888         PLATFORMID=linux_sparc64
4889         ;;
4890     s390)
4891         CPUNAME=S390
4892         RTL_ARCH=S390
4893         PLATFORMID=linux_s390
4894         ;;
4895     s390x)
4896         CPUNAME=S390X
4897         RTL_ARCH=S390x
4898         PLATFORMID=linux_s390x
4899         ;;
4900     x86_64)
4901         CPUNAME=X86_64
4902         RTL_ARCH=X86_64
4903         PLATFORMID=linux_x86_64
4904         ;;
4905     *)
4906         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4907         ;;
4908     esac
4909     ;;
4911 linux-android*)
4912     COM=GCC
4913     USING_X11=
4914     OS=ANDROID
4915     RTL_OS=Android
4916     P_SEP=:
4918     case "$host_cpu" in
4920     arm|armel)
4921         CPUNAME=ARM
4922         RTL_ARCH=ARM_EABI
4923         PLATFORMID=android_arm_eabi
4924         ;;
4925     aarch64)
4926         CPUNAME=AARCH64
4927         RTL_ARCH=AARCH64
4928         PLATFORMID=android_aarch64
4929         ;;
4930     i*86)
4931         CPUNAME=INTEL
4932         RTL_ARCH=x86
4933         PLATFORMID=android_x86
4934         ;;
4935     x86_64)
4936         CPUNAME=X86_64
4937         RTL_ARCH=X86_64
4938         PLATFORMID=android_x86_64
4939         ;;
4940     *)
4941         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4942         ;;
4943     esac
4944     ;;
4946 *netbsd*)
4947     COM=GCC
4948     USING_X11=TRUE
4949     OS=NETBSD
4950     RTL_OS=NetBSD
4951     P_SEP=:
4953     case "$host_cpu" in
4954     i*86)
4955         CPUNAME=INTEL
4956         RTL_ARCH=x86
4957         PLATFORMID=netbsd_x86
4958         ;;
4959     powerpc)
4960         CPUNAME=POWERPC
4961         RTL_ARCH=PowerPC
4962         PLATFORMID=netbsd_powerpc
4963         ;;
4964     sparc)
4965         CPUNAME=SPARC
4966         RTL_ARCH=SPARC
4967         PLATFORMID=netbsd_sparc
4968         ;;
4969     x86_64)
4970         CPUNAME=X86_64
4971         RTL_ARCH=X86_64
4972         PLATFORMID=netbsd_x86_64
4973         ;;
4974     *)
4975         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4976         ;;
4977     esac
4978     ;;
4980 openbsd*)
4981     COM=GCC
4982     USING_X11=TRUE
4983     OS=OPENBSD
4984     RTL_OS=OpenBSD
4985     P_SEP=:
4987     case "$host_cpu" in
4988     i*86)
4989         CPUNAME=INTEL
4990         RTL_ARCH=x86
4991         PLATFORMID=openbsd_x86
4992         ;;
4993     x86_64)
4994         CPUNAME=X86_64
4995         RTL_ARCH=X86_64
4996         PLATFORMID=openbsd_x86_64
4997         ;;
4998     *)
4999         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5000         ;;
5001     esac
5002     SOLARINC="$SOLARINC -I/usr/local/include"
5003     ;;
5005 solaris*)
5006     COM=GCC
5007     USING_X11=TRUE
5008     OS=SOLARIS
5009     RTL_OS=Solaris
5010     P_SEP=:
5012     case "$host_cpu" in
5013     i*86)
5014         CPUNAME=INTEL
5015         RTL_ARCH=x86
5016         PLATFORMID=solaris_x86
5017         ;;
5018     sparc)
5019         CPUNAME=SPARC
5020         RTL_ARCH=SPARC
5021         PLATFORMID=solaris_sparc
5022         ;;
5023     sparc64)
5024         CPUNAME=SPARC64
5025         RTL_ARCH=SPARC64
5026         PLATFORMID=solaris_sparc64
5027         ;;
5028     *)
5029         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5030         ;;
5031     esac
5032     SOLARINC="$SOLARINC -I/usr/local/include"
5033     ;;
5036     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5037     ;;
5038 esac
5040 if test "$with_x" = "no"; then
5041     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5044 DISABLE_GUI=""
5045 if test "$enable_gui" = "no"; then
5046     if test "$USING_X11" != TRUE; then
5047         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5048     fi
5049     USING_X11=
5050     DISABLE_GUI=TRUE
5051     AC_DEFINE(HAVE_FEATURE_UI,0)
5052     test_cairo=yes
5054 AC_SUBST(DISABLE_GUI)
5056 WORKDIR="${BUILDDIR}/workdir"
5057 INSTDIR="${BUILDDIR}/instdir"
5058 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5059 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5060 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5061 AC_SUBST(COM)
5062 AC_SUBST(CPUNAME)
5063 AC_SUBST(RTL_OS)
5064 AC_SUBST(RTL_ARCH)
5065 AC_SUBST(EPM_FLAGS)
5066 AC_SUBST(USING_X11)
5067 AC_SUBST([INSTDIR])
5068 AC_SUBST([INSTROOT])
5069 AC_SUBST([INSTROOTBASE])
5070 AC_SUBST(OS)
5071 AC_SUBST(P_SEP)
5072 AC_SUBST(WORKDIR)
5073 AC_SUBST(PLATFORMID)
5074 AC_SUBST(WINDOWS_X64)
5075 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5077 dnl ===================================================================
5078 dnl Test which package format to use
5079 dnl ===================================================================
5080 AC_MSG_CHECKING([which package format to use])
5081 if test -n "$with_package_format" -a "$with_package_format" != no; then
5082     for i in $with_package_format; do
5083         case "$i" in
5084         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5085             ;;
5086         *)
5087             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5088 aix - AIX software distribution
5089 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5090 deb - Debian software distribution
5091 pkg - Solaris software distribution
5092 rpm - RedHat software distribution
5094 LibreOffice additionally supports:
5095 archive - .tar.gz or .zip
5096 dmg - macOS .dmg
5097 installed - installation tree
5098 msi - Windows .msi
5099         ])
5100             ;;
5101         esac
5102     done
5103     # fakeroot is needed to ensure correct file ownerships/permissions
5104     # inside deb packages and tar archives created on Linux and Solaris.
5105     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5106         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5107         if test "$FAKEROOT" = "no"; then
5108             AC_MSG_ERROR(
5109                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5110         fi
5111     fi
5112     PKGFORMAT="$with_package_format"
5113     AC_MSG_RESULT([$PKGFORMAT])
5114 else
5115     PKGFORMAT=
5116     AC_MSG_RESULT([none])
5118 AC_SUBST(PKGFORMAT)
5120 dnl ===================================================================
5121 dnl Set up a different compiler to produce tools to run on the build
5122 dnl machine when doing cross-compilation
5123 dnl ===================================================================
5125 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5126 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5127 if test "$cross_compiling" = "yes"; then
5128     AC_MSG_CHECKING([for BUILD platform configuration])
5129     echo
5130     rm -rf CONF-FOR-BUILD config_build.mk
5131     mkdir CONF-FOR-BUILD
5132     # Here must be listed all files needed when running the configure script. In particular, also
5133     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5134     # keep them in the same order as there.
5135     (cd $SRC_ROOT && tar cf - \
5136         config.guess \
5137         bin/get_config_variables \
5138         solenv/bin/getcompver.awk \
5139         solenv/inc/langlist.mk \
5140         download.lst \
5141         config_host.mk.in \
5142         config_host_lang.mk.in \
5143         Makefile.in \
5144         bin/bffvalidator.sh.in \
5145         bin/odfvalidator.sh.in \
5146         bin/officeotron.sh.in \
5147         hardened_runtime.xcent.in \
5148         instsetoo_native/util/openoffice.lst.in \
5149         config_host/*.in \
5150         sysui/desktop/macosx/Info.plist.in) \
5151     | (cd CONF-FOR-BUILD && tar xf -)
5152     cp configure CONF-FOR-BUILD
5153     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5154     (
5155     unset COM USING_X11 OS CPUNAME
5156     unset CC CXX SYSBASE CFLAGS
5157     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5158     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5159     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5160     if test -n "$CC_FOR_BUILD"; then
5161         export CC="$CC_FOR_BUILD"
5162         CC_BASE=`first_arg_basename "$CC"`
5163     fi
5164     if test -n "$CXX_FOR_BUILD"; then
5165         export CXX="$CXX_FOR_BUILD"
5166         CXX_BASE=`first_arg_basename "$CXX"`
5167     fi
5168     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5169     cd CONF-FOR-BUILD
5171     sub_conf_opts=""
5172     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5173     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5174     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5175     if test -n "$ENABLE_JAVA"; then
5176         case "$_os" in
5177         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5178         Android)
5179             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5180             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5181             ;;
5182         *)
5183             if test -z "$with_jdk_home"; then
5184                 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.])
5185             fi
5186             ;;
5187         esac
5188     else
5189         sub_conf_opts="$sub_conf_opts --without-java"
5190     fi
5191     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5192     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5193     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5195     # Don't bother having configure look for stuff not needed for the build platform anyway
5196     ./configure \
5197         --build="$build_alias" \
5198         --disable-cups \
5199         --disable-firebird-sdbc \
5200         --disable-gpgmepp \
5201         --disable-gstreamer-1-0 \
5202         --disable-gtk3 \
5203         --disable-mariadb-sdbc \
5204         --disable-online-update \
5205         --disable-opencl \
5206         --disable-pdfimport \
5207         --disable-postgresql-sdbc \
5208         --disable-skia \
5209         --enable-icecream="$enable_icecream" \
5210         --without-doxygen \
5211         --without-webdav \
5212         --with-parallelism="$with_parallelism" \
5213         --with-theme="$with_theme" \
5214         --with-tls=openssl \
5215         $sub_conf_opts \
5216         --srcdir=$srcdir \
5217         2>&1 | sed -e 's/^/    /'
5218     test -f ./config_host.mk 2>/dev/null || exit
5220     # filter permitted build targets
5221     PERMITTED_BUILD_TARGETS="
5222         AVMEDIA
5223         BOOST
5224         CLUCENE
5225         DBCONNECTIVITY
5226         DESKTOP
5227         DYNLOADING
5228         EPOXY
5229         EXPAT
5230         GLM
5231         GRAPHITE
5232         HARFBUZZ
5233         ICU
5234         LCMS2
5235         LIBJPEG_TURBO
5236         LIBLANGTAG
5237         LibO
5238         LIBFFI
5239         LIBPN
5240         LIBXML2
5241         LIBXSLT
5242         MDDS
5243         NATIVE
5244         OPENSSL
5245         ORCUS
5246         PYTHON
5247         SCRIPTING
5248         ZLIB
5250     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5251     # newlined lists, to use grep as a filter
5252     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5253     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5254     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5255     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5257     cp config_host.mk ../config_build.mk
5258     cp config_host_lang.mk ../config_build_lang.mk
5259     mv config.log ../config.Build.log
5260     mkdir -p ../config_build
5261     mv config_host/*.h ../config_build
5263     # all these will get a _FOR_BUILD postfix
5264     DIRECT_FOR_BUILD_SETTINGS="
5265         CC
5266         CXX
5267         ILIB
5268         JAVA_HOME
5269         JAVAIFLAGS
5270         JDK
5271         LIBO_BIN_FOLDER
5272         LIBO_LIB_FOLDER
5273         LIBO_URE_LIB_FOLDER
5274         LIBO_URE_MISC_FOLDER
5275         OS
5276         SDKDIRNAME
5277         SYSTEM_LIBXML
5278         SYSTEM_LIBXSLT
5280     # these overwrite host config with build config
5281     OVERWRITING_SETTINGS="
5282         ANT
5283         ANT_HOME
5284         ANT_LIB
5285         HSQLDB_USE_JDBC_4_1
5286         JAVA_CLASSPATH_NOT_SET
5287         JAVA_SOURCE_VER
5288         JAVA_TARGET_VER
5289         JAVACFLAGS
5290         JAVACOMPILER
5291         JAVADOC
5292         JAVADOCISGJDOC
5294     # these need some special handling
5295     EXTRA_HANDLED_SETTINGS="
5296         INSTDIR
5297         INSTROOT
5298         PATH
5299         WORKDIR
5301     OLD_PATH=$PATH
5302     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5303     BUILD_PATH=$PATH
5304     PATH=$OLD_PATH
5306     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5307     echo "$line" >>build-config
5309     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5310         VV='$'$V
5311         VV=`eval "echo $VV"`
5312         if test -n "$VV"; then
5313             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5314             echo "$line" >>build-config
5315         fi
5316     done
5318     for V in $OVERWRITING_SETTINGS; do
5319         VV='$'$V
5320         VV=`eval "echo $VV"`
5321         if test -n "$VV"; then
5322             line=${V}='${'${V}:-$VV'}'
5323             echo "$line" >>build-config
5324         fi
5325     done
5327     for V in INSTDIR INSTROOT WORKDIR; do
5328         VV='$'$V
5329         VV=`eval "echo $VV"`
5330         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5331         if test -n "$VV"; then
5332             line="${V}_FOR_BUILD='$VV'"
5333             echo "$line" >>build-config
5334         fi
5335     done
5337     )
5338     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5339     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])
5340     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5341              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5343     eval `cat CONF-FOR-BUILD/build-config`
5345     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5347     rm -rf CONF-FOR-BUILD
5348 else
5349     OS_FOR_BUILD="$OS"
5350     CC_FOR_BUILD="$CC"
5351     CXX_FOR_BUILD="$CXX"
5352     INSTDIR_FOR_BUILD="$INSTDIR"
5353     INSTROOT_FOR_BUILD="$INSTROOT"
5354     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5355     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5356     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5357     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5358     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5359     WORKDIR_FOR_BUILD="$WORKDIR"
5361 AC_SUBST(OS_FOR_BUILD)
5362 AC_SUBST(INSTDIR_FOR_BUILD)
5363 AC_SUBST(INSTROOT_FOR_BUILD)
5364 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5365 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5366 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5367 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5368 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5369 AC_SUBST(WORKDIR_FOR_BUILD)
5370 AC_SUBST(CC_FOR_BUILD)
5371 AC_SUBST(CXX_FOR_BUILD)
5373 dnl ===================================================================
5374 dnl Check for syslog header
5375 dnl ===================================================================
5376 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5378 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5379 dnl ===================================================================
5380 AC_MSG_CHECKING([whether to turn warnings to errors])
5381 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5382     ENABLE_WERROR="TRUE"
5383     PYTHONWARNINGS="error"
5384     AC_MSG_RESULT([yes])
5385 else
5386     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5387         ENABLE_WERROR="TRUE"
5388         PYTHONWARNINGS="error"
5389         AC_MSG_RESULT([yes])
5390     else
5391         AC_MSG_RESULT([no])
5392     fi
5394 AC_SUBST(ENABLE_WERROR)
5395 AC_SUBST(PYTHONWARNINGS)
5397 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5398 dnl ===================================================================
5399 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5400 if test -z "$enable_assert_always_abort"; then
5401    if test "$ENABLE_DEBUG" = TRUE; then
5402        enable_assert_always_abort=yes
5403    else
5404        enable_assert_always_abort=no
5405    fi
5407 if test "$enable_assert_always_abort" = "yes"; then
5408     ASSERT_ALWAYS_ABORT="TRUE"
5409     AC_MSG_RESULT([yes])
5410 else
5411     ASSERT_ALWAYS_ABORT="FALSE"
5412     AC_MSG_RESULT([no])
5414 AC_SUBST(ASSERT_ALWAYS_ABORT)
5416 # Determine whether to use ooenv for the instdir installation
5417 # ===================================================================
5418 if test $_os != "WINNT" -a $_os != "Darwin"; then
5419     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5420     if test "$enable_ooenv" = "no"; then
5421         AC_MSG_RESULT([no])
5422     else
5423         ENABLE_OOENV="TRUE"
5424         AC_MSG_RESULT([yes])
5425     fi
5427 AC_SUBST(ENABLE_OOENV)
5429 if test "$USING_X11" != TRUE; then
5430     # be sure to do not mess with unneeded stuff
5431     test_randr=no
5432     test_xrender=no
5433     test_cups=no
5434     test_dbus=no
5435     build_gstreamer_1_0=no
5436     test_kf5=no
5437     test_qt5=no
5438     test_gtk3_kde5=no
5439     enable_cairo_canvas=no
5442 if test "$OS" = "HAIKU"; then
5443     enable_cairo_canvas=yes
5444     test_kf5=yes
5447 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5448     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!])
5449     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!"
5450     enable_kf5=yes
5453 if test "$test_kf5" = "yes"; then
5454     test_qt5=yes
5457 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5458     if test "$enable_qt5" = "no"; then
5459         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5460     else
5461         enable_qt5=yes
5462     fi
5465 dnl ===================================================================
5466 dnl check for cups support
5467 dnl ===================================================================
5468 ENABLE_CUPS=""
5470 if test "$enable_cups" = "no"; then
5471     test_cups=no
5474 AC_MSG_CHECKING([whether to enable CUPS support])
5475 if test "$test_cups" = "yes"; then
5476     ENABLE_CUPS="TRUE"
5477     AC_MSG_RESULT([yes])
5479     AC_MSG_CHECKING([whether cups support is present])
5480     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5481     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5482     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5483         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5484     fi
5486 else
5487     AC_MSG_RESULT([no])
5490 AC_SUBST(ENABLE_CUPS)
5492 # fontconfig checks
5493 if test "$test_fontconfig" = "yes"; then
5494     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5495     SYSTEM_FONTCONFIG=TRUE
5496     FilterLibs "${FONTCONFIG_LIBS}"
5497     FONTCONFIG_LIBS="${filteredlibs}"
5499 AC_SUBST(FONTCONFIG_CFLAGS)
5500 AC_SUBST(FONTCONFIG_LIBS)
5501 AC_SUBST([SYSTEM_FONTCONFIG])
5503 dnl whether to find & fetch external tarballs?
5504 dnl ===================================================================
5505 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5506    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5507        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5508    else
5509        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5510    fi
5512 if test -z "$TARFILE_LOCATION"; then
5513     if test -d "$SRC_ROOT/src" ; then
5514         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5515         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5516     fi
5517     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5518 else
5519     AbsolutePath "$TARFILE_LOCATION"
5520     PathFormat "${absolute_path}"
5521     TARFILE_LOCATION="${formatted_path}"
5523 AC_SUBST(TARFILE_LOCATION)
5525 AC_MSG_CHECKING([whether we want to fetch tarballs])
5526 if test "$enable_fetch_external" != "no"; then
5527     if test "$with_all_tarballs" = "yes"; then
5528         AC_MSG_RESULT([yes, all of them])
5529         DO_FETCH_TARBALLS="ALL"
5530     else
5531         AC_MSG_RESULT([yes, if we use them])
5532         DO_FETCH_TARBALLS="TRUE"
5533     fi
5534 else
5535     AC_MSG_RESULT([no])
5536     DO_FETCH_TARBALLS=
5538 AC_SUBST(DO_FETCH_TARBALLS)
5540 AC_MSG_CHECKING([whether to build help])
5541 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5542     BUILD_TYPE="$BUILD_TYPE HELP"
5543     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5544     case "$with_help" in
5545     "html")
5546         ENABLE_HTMLHELP=TRUE
5547         SCPDEFS="$SCPDEFS -DWITH_HELP"
5548         AC_MSG_RESULT([HTML])
5549         ;;
5550     "online")
5551         ENABLE_HTMLHELP=TRUE
5552         HELP_ONLINE=TRUE
5553         AC_MSG_RESULT([HTML])
5554         ;;
5555     yes)
5556         SCPDEFS="$SCPDEFS -DWITH_HELP"
5557         AC_MSG_RESULT([yes])
5558         ;;
5559     *)
5560         AC_MSG_ERROR([Unknown --with-help=$with_help])
5561         ;;
5562     esac
5563 else
5564     AC_MSG_RESULT([no])
5566 AC_SUBST([ENABLE_HTMLHELP])
5567 AC_SUBST([HELP_ONLINE])
5569 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5570 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5571     BUILD_TYPE="$BUILD_TYPE HELP"
5572     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5573     case "$with_omindex" in
5574     "server")
5575         ENABLE_HTMLHELP=TRUE
5576         HELP_ONLINE=TRUE
5577         HELP_OMINDEX_PAGE=TRUE
5578         AC_MSG_RESULT([SERVER])
5579         ;;
5580     "noxap")
5581         ENABLE_HTMLHELP=TRUE
5582         HELP_ONLINE=TRUE
5583         HELP_OMINDEX_PAGE=FALSE
5584         AC_MSG_RESULT([NOXAP])
5585         ;;
5586     *)
5587         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5588         ;;
5589     esac
5590 else
5591     HELP_OMINDEX_PAGE=FALSE
5592     AC_MSG_RESULT([no])
5594 AC_SUBST([ENABLE_HTMLHELP])
5595 AC_SUBST([HELP_OMINDEX_PAGE])
5596 AC_SUBST([HELP_ONLINE])
5599 dnl Test whether to include MySpell dictionaries
5600 dnl ===================================================================
5601 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5602 if test "$with_myspell_dicts" = "yes"; then
5603     AC_MSG_RESULT([yes])
5604     WITH_MYSPELL_DICTS=TRUE
5605     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5606     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5607 else
5608     AC_MSG_RESULT([no])
5609     WITH_MYSPELL_DICTS=
5611 AC_SUBST(WITH_MYSPELL_DICTS)
5613 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5614 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5615     if test "$with_system_dicts" = yes; then
5616         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5617     fi
5618     with_system_dicts=no
5621 AC_MSG_CHECKING([whether to use dicts from external paths])
5622 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5623     AC_MSG_RESULT([yes])
5624     SYSTEM_DICTS=TRUE
5625     AC_MSG_CHECKING([for spelling dictionary directory])
5626     if test -n "$with_external_dict_dir"; then
5627         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5628     else
5629         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5630         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5631             DICT_SYSTEM_DIR=file:///usr/share/myspell
5632         fi
5633     fi
5634     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5635     AC_MSG_CHECKING([for hyphenation patterns directory])
5636     if test -n "$with_external_hyph_dir"; then
5637         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5638     else
5639         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5640     fi
5641     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5642     AC_MSG_CHECKING([for thesaurus directory])
5643     if test -n "$with_external_thes_dir"; then
5644         THES_SYSTEM_DIR=file://$with_external_thes_dir
5645     else
5646         THES_SYSTEM_DIR=file:///usr/share/mythes
5647     fi
5648     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5649 else
5650     AC_MSG_RESULT([no])
5651     SYSTEM_DICTS=
5653 AC_SUBST(SYSTEM_DICTS)
5654 AC_SUBST(DICT_SYSTEM_DIR)
5655 AC_SUBST(HYPH_SYSTEM_DIR)
5656 AC_SUBST(THES_SYSTEM_DIR)
5658 dnl ===================================================================
5659 dnl Precompiled headers.
5660 ENABLE_PCH=""
5661 AC_MSG_CHECKING([whether to enable pch feature])
5662 if test -z "$enable_pch"; then
5663     if test "$_os" = "WINNT"; then
5664         # Enabled by default on Windows.
5665         enable_pch=yes
5666     else
5667         enable_pch=no
5668     fi
5670 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5671     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5673 if test "$enable_pch" = "system"; then
5674     ENABLE_PCH="1"
5675     AC_MSG_RESULT([yes (system headers)])
5676 elif test "$enable_pch" = "base"; then
5677     ENABLE_PCH="2"
5678     AC_MSG_RESULT([yes (system and base headers)])
5679 elif test "$enable_pch" = "normal"; then
5680     ENABLE_PCH="3"
5681     AC_MSG_RESULT([yes (normal)])
5682 elif test "$enable_pch" = "full"; then
5683     ENABLE_PCH="4"
5684     AC_MSG_RESULT([yes (full)])
5685 elif test "$enable_pch" = "yes"; then
5686     # Pick a suitable default.
5687     if test "$GCC" = "yes"; then
5688         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5689         # while making the PCHs larger and rebuilds more likely.
5690         ENABLE_PCH="2"
5691         AC_MSG_RESULT([yes (system and base headers)])
5692     else
5693         # With MSVC the highest level makes a significant difference,
5694         # and it was the default when there used to be no PCH levels.
5695         ENABLE_PCH="4"
5696         AC_MSG_RESULT([yes (full)])
5697     fi
5698 elif test "$enable_pch" = "no"; then
5699     AC_MSG_RESULT([no])
5700 else
5701     AC_MSG_ERROR([Unknown value for --enable-pch])
5703 AC_SUBST(ENABLE_PCH)
5704 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5705 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5706     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5707     if test "$CCACHE_BIN" != "not found"; then
5708         AC_MSG_CHECKING([ccache version])
5709         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5710         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5711         AC_MSG_RESULT([$CCACHE_VERSION])
5712         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5713         if test "$CCACHE_NUMVER" -gt "030701"; then
5714             AC_MSG_RESULT([yes])
5715         else
5716             AC_MSG_RESULT([no (not newer than 3.7.1)])
5717             CCACHE_DEPEND_MODE=
5718         fi
5719     fi
5722 PCH_INSTANTIATE_TEMPLATES=
5723 if test -n "$ENABLE_PCH"; then
5724     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5725     save_CFLAGS=$CFLAGS
5726     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5727     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5728     CFLAGS=$save_CFLAGS
5729     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5730         AC_MSG_RESULT(yes)
5731     else
5732         AC_MSG_RESULT(no)
5733     fi
5735 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5737 BUILDING_PCH_WITH_OBJ=
5738 if test -n "$ENABLE_PCH"; then
5739     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5740     save_CFLAGS=$CFLAGS
5741     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5742     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5743     CFLAGS=$save_CFLAGS
5744     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5745         AC_MSG_RESULT(yes)
5746     else
5747         AC_MSG_RESULT(no)
5748     fi
5750 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5752 PCH_CODEGEN=
5753 PCH_NO_CODEGEN=
5754 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5755     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5756     save_CFLAGS=$CFLAGS
5757     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5758     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5759         [
5760         PCH_CODEGEN="-fpch-codegen"
5761         PCH_NO_CODEGEN="-fno-pch-codegen"
5762         ],[])
5763     CFLAGS=$save_CFLAGS
5764     if test -n "$PCH_CODEGEN"; then
5765         AC_MSG_RESULT(yes)
5766     else
5767         AC_MSG_RESULT(no)
5768     fi
5770 AC_SUBST(PCH_CODEGEN)
5771 AC_SUBST(PCH_NO_CODEGEN)
5772 PCH_DEBUGINFO=
5773 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5774     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5775     save_CFLAGS=$CFLAGS
5776     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5777     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5778     CFLAGS=$save_CFLAGS
5779     if test -n "$PCH_DEBUGINFO"; then
5780         AC_MSG_RESULT(yes)
5781     else
5782         AC_MSG_RESULT(no)
5783     fi
5785 AC_SUBST(PCH_DEBUGINFO)
5787 TAB=`printf '\t'`
5789 AC_MSG_CHECKING([the GNU Make version])
5790 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5791 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5792 if test "$_make_longver" -ge "038200"; then
5793     AC_MSG_RESULT([$GNUMAKE $_make_version])
5795 elif test "$_make_longver" -ge "038100"; then
5796     if test "$build_os" = "cygwin"; then
5797         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5798     fi
5799     AC_MSG_RESULT([$GNUMAKE $_make_version])
5801     dnl ===================================================================
5802     dnl Search all the common names for sha1sum
5803     dnl ===================================================================
5804     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5805     if test -z "$SHA1SUM"; then
5806         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5807     elif test "$SHA1SUM" = "openssl"; then
5808         SHA1SUM="openssl sha1"
5809     fi
5810     AC_MSG_CHECKING([for GNU Make bug 20033])
5811     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5812     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5813 A := \$(wildcard *.a)
5815 .PHONY: all
5816 all: \$(A:.a=.b)
5817 <TAB>@echo survived bug20033.
5819 .PHONY: setup
5820 setup:
5821 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5823 define d1
5824 @echo lala \$(1)
5825 @sleep 1
5826 endef
5828 define d2
5829 @echo tyty \$(1)
5830 @sleep 1
5831 endef
5833 %.b : %.a
5834 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5835 <TAB>\$(call d1,\$(CHECKSUM)),\
5836 <TAB>\$(call d2,\$(CHECKSUM)))
5838     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5839         no_parallelism_make="YES"
5840         AC_MSG_RESULT([yes, disable parallelism])
5841     else
5842         AC_MSG_RESULT([no, keep parallelism enabled])
5843     fi
5844     rm -rf $TESTGMAKEBUG20033
5845 else
5846     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5849 # find if gnumake support file function
5850 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5851 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5852 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5853     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5855 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5856 \$(file >test.txt,Success )
5858 .PHONY: all
5859 all:
5860 <TAB>@cat test.txt
5863 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5864 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5865     HAVE_GNUMAKE_FILE_FUNC=TRUE
5866     AC_MSG_RESULT([yes])
5867 else
5868     AC_MSG_RESULT([no])
5870 rm -rf $TESTGMAKEFILEFUNC
5871 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5872 AC_SUBST(GNUMAKE_WIN_NATIVE)
5874 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5875 STALE_MAKE=
5876 if test "$_make_ver_check" = ""; then
5877    STALE_MAKE=TRUE
5880 HAVE_LD_HASH_STYLE=FALSE
5881 WITH_LINKER_HASH_STYLE=
5882 AC_MSG_CHECKING([for --hash-style gcc linker support])
5883 if test "$GCC" = "yes"; then
5884     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5885         hash_styles="gnu sysv"
5886     elif test "$with_linker_hash_style" = "no"; then
5887         hash_styles=
5888     else
5889         hash_styles="$with_linker_hash_style"
5890     fi
5892     for hash_style in $hash_styles; do
5893         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5894         hash_style_ldflags_save=$LDFLAGS
5895         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5897         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5898             [
5899 #include <stdio.h>
5900             ],[
5901 printf ("");
5902             ])],
5903             [
5904                   HAVE_LD_HASH_STYLE=TRUE
5905                   WITH_LINKER_HASH_STYLE=$hash_style
5906             ],
5907             [HAVE_LD_HASH_STYLE=FALSE],
5908             [HAVE_LD_HASH_STYLE=FALSE])
5909         LDFLAGS=$hash_style_ldflags_save
5910     done
5912     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5913         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5914     else
5915         AC_MSG_RESULT( no )
5916     fi
5917     LDFLAGS=$hash_style_ldflags_save
5918 else
5919     AC_MSG_RESULT( no )
5921 AC_SUBST(HAVE_LD_HASH_STYLE)
5922 AC_SUBST(WITH_LINKER_HASH_STYLE)
5924 dnl ===================================================================
5925 dnl Check whether there's a Perl version available.
5926 dnl ===================================================================
5927 if test -z "$with_perl_home"; then
5928     AC_PATH_PROG(PERL, perl)
5929 else
5930     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5931     _perl_path="$with_perl_home/bin/perl"
5932     if test -x "$_perl_path"; then
5933         PERL=$_perl_path
5934     else
5935         AC_MSG_ERROR([$_perl_path not found])
5936     fi
5939 dnl ===================================================================
5940 dnl Testing for Perl version 5 or greater.
5941 dnl $] is the Perl version variable, it is returned as an integer
5942 dnl ===================================================================
5943 if test "$PERL"; then
5944     AC_MSG_CHECKING([the Perl version])
5945     ${PERL} -e "exit($]);"
5946     _perl_version=$?
5947     if test "$_perl_version" -lt 5; then
5948         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5949     fi
5950     AC_MSG_RESULT([Perl $_perl_version])
5951 else
5952     AC_MSG_ERROR([Perl not found, install Perl 5])
5955 dnl ===================================================================
5956 dnl Testing for required Perl modules
5957 dnl ===================================================================
5959 AC_MSG_CHECKING([for required Perl modules])
5960 perl_use_string="use Cwd ; use Digest::MD5"
5961 if test "$_os" = "WINNT"; then
5962     if test -n "$PKGFORMAT"; then
5963         for i in $PKGFORMAT; do
5964             case "$i" in
5965             msi)
5966                 # for getting fonts versions to use in MSI
5967                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5968                 ;;
5969             esac
5970         done
5971     fi
5973 if test "$with_system_hsqldb" = "yes"; then
5974     perl_use_string="$perl_use_string ; use Archive::Zip"
5976 if test "$with_system_openssl" != "yes"; then
5977     # OpenSSL needs that to build
5978     perl_use_string="$perl_use_string ; use FindBin"
5980 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5981     AC_MSG_RESULT([all modules found])
5982 else
5983     AC_MSG_RESULT([failed to find some modules])
5984     # Find out which modules are missing.
5985     for i in $perl_use_string; do
5986         if test "$i" != "use" -a "$i" != ";"; then
5987             if ! $PERL -e "use $i;">/dev/null 2>&1; then
5988                 missing_perl_modules="$missing_perl_modules $i"
5989             fi
5990         fi
5991     done
5992     AC_MSG_ERROR([
5993     The missing Perl modules are: $missing_perl_modules
5994     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
5997 dnl ===================================================================
5998 dnl Check for pkg-config
5999 dnl ===================================================================
6000 if test "$_os" != "WINNT"; then
6001     PKG_PROG_PKG_CONFIG
6004 if test "$_os" != "WINNT"; then
6006     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6007     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6008     # explicitly. Or put /path/to/compiler in PATH yourself.
6010     # Use wrappers for LTO
6011     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6012         AC_CHECK_TOOL(AR,gcc-ar)
6013         AC_CHECK_TOOL(NM,gcc-nm)
6014         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6015     else
6016         AC_CHECK_TOOL(AR,ar)
6017         AC_CHECK_TOOL(NM,nm)
6018         AC_CHECK_TOOL(RANLIB,ranlib)
6019     fi
6020     AC_CHECK_TOOL(OBJDUMP,objdump)
6021     AC_CHECK_TOOL(READELF,readelf)
6022     AC_CHECK_TOOL(STRIP,strip)
6023     if test "$_os" = "WINNT"; then
6024         AC_CHECK_TOOL(DLLTOOL,dlltool)
6025         AC_CHECK_TOOL(WINDRES,windres)
6026     fi
6028 AC_SUBST(AR)
6029 AC_SUBST(DLLTOOL)
6030 AC_SUBST(NM)
6031 AC_SUBST(OBJDUMP)
6032 AC_SUBST(PKG_CONFIG)
6033 AC_SUBST(RANLIB)
6034 AC_SUBST(READELF)
6035 AC_SUBST(STRIP)
6036 AC_SUBST(WINDRES)
6038 dnl ===================================================================
6039 dnl pkg-config checks on macOS
6040 dnl ===================================================================
6042 if test $_os = Darwin; then
6043     AC_MSG_CHECKING([for bogus pkg-config])
6044     if test -n "$PKG_CONFIG"; then
6045         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6046             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6047         else
6048             if test "$enable_bogus_pkg_config" = "yes"; then
6049                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6050             else
6051                 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.])
6052             fi
6053         fi
6054     else
6055         AC_MSG_RESULT([no, good])
6056     fi
6059 find_csc()
6061     # Return value: $csctest
6063     unset csctest
6065     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6066     if test -n "$regvalue"; then
6067         csctest=$regvalue
6068         return
6069     fi
6072 find_al()
6074     # Return value: $altest
6076     unset altest
6078     # We need this check to detect 4.6.1 or above.
6079     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6080         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6081         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6082             altest=$regvalue
6083             return
6084         fi
6085     done
6087     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6088         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6089         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6090             altest=$regvalue
6091             return
6092         fi
6093     done
6096 find_dotnetsdk46()
6098     unset frametest
6100     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6101         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6102         if test -n "$regvalue"; then
6103             frametest=$regvalue
6104             return
6105         fi
6106     done
6109 find_winsdk_version()
6111     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6112     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6114     unset winsdktest winsdkbinsubdir winsdklibsubdir
6116     case "$1" in
6117     8.0|8.0A)
6118         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6119         if test -n "$regvalue"; then
6120             winsdktest=$regvalue
6121             winsdklibsubdir=win8
6122             return
6123         fi
6124         ;;
6125     8.1|8.1A)
6126         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6127         if test -n "$regvalue"; then
6128             winsdktest=$regvalue
6129             winsdklibsubdir=winv6.3
6130             return
6131         fi
6132         ;;
6133     10.0)
6134         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6135         if test -n "$regvalue"; then
6136             winsdktest=$regvalue
6137             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6138             if test -n "$regvalue"; then
6139                 winsdkbinsubdir="$regvalue".0
6140                 winsdklibsubdir=$winsdkbinsubdir
6141                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6142                 local tmppath_unix=$(cygpath -u "$tmppath")
6143                 # test exist the SDK path
6144                 if test -d "$tmppath_unix"; then
6145                    # when path is convertible to a short path then path is okay
6146                    cygpath -d "$tmppath" >/dev/null 2>&1
6147                    if test $? -ne 0; then
6148                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6149                    fi
6150                 else
6151                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6152                 fi
6153             fi
6154             return
6155         fi
6156         ;;
6157     esac
6160 find_winsdk()
6162     # Return value: From find_winsdk_version
6164     unset winsdktest
6166     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6167         find_winsdk_version $ver
6168         if test -n "$winsdktest"; then
6169             return
6170         fi
6171     done
6174 find_msms()
6176     # Return value: $msmdir
6178     AC_MSG_CHECKING([for MSVC merge modules directory])
6179     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6180     local my_msm_dir
6182     case "$VCVER" in
6183         160)
6184         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6185         ;;
6186     esac
6187     for f in $my_msm_files; do
6188         echo "$as_me:$LINENO: searching for $f" >&5
6189     done
6191     msmdir=
6192     for ver in 14.0 15.0; do
6193         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6194         if test -n "$regvalue"; then
6195             for f in ${my_msm_files}; do
6196                 if test -e "$regvalue/${f}"; then
6197                     msmdir=$regvalue
6198                     break
6199                 fi
6200             done
6201         fi
6202     done
6203     dnl Is the following fallback really necessary, or was it added in response
6204     dnl to never having started Visual Studio on a given machine, so the
6205     dnl registry keys checked above had presumably not yet been created?
6206     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6207     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6208     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6209     dnl expanding to "C:\Program Files\Common Files"), which would need
6210     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6211     dnl obtain its value from cygwin:
6212     if test -z "$msmdir"; then
6213         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6214         for f in ${my_msm_files}; do
6215             if test -e "$my_msm_dir/${f}"; then
6216                 msmdir=$my_msm_dir
6217             fi
6218         done
6219     fi
6221     dnl Starting from MSVC 15.0, merge modules are located in different directory
6222     case "$VCVER" in
6223     160)
6224         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6225             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6226             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6227             for f in ${my_msm_files}; do
6228                 if test -e "$my_msm_dir/${f}"; then
6229                     msmdir=$my_msm_dir
6230                     break
6231                 fi
6232             done
6233         done
6234         ;;
6235     esac
6237     if test -n "$msmdir"; then
6238         msmdir=`cygpath -m "$msmdir"`
6239         AC_MSG_RESULT([$msmdir])
6240     else
6241         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6242             AC_MSG_FAILURE([not found])
6243         else
6244             AC_MSG_WARN([not found (check config.log)])
6245             add_warning "MSM none of ${my_msm_files} found"
6246         fi
6247     fi
6250 find_msvc_x64_dlls()
6252     # Return value: $msvcdllpath, $msvcdlls
6254     AC_MSG_CHECKING([for MSVC x64 DLL path])
6255     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6256     case "$VCVER" in
6257     160)
6258         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6259             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6260             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6261                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6262                 break
6263             fi
6264             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6265             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6266                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6267                 break
6268             fi
6269         done
6270         ;;
6271     esac
6272     AC_MSG_RESULT([$msvcdllpath])
6273     AC_MSG_CHECKING([for MSVC x64 DLLs])
6274     msvcdlls="msvcp140.dll vcruntime140.dll"
6275     for dll in $msvcdlls; do
6276         if ! test -f "$msvcdllpath/$dll"; then
6277             AC_MSG_FAILURE([missing $dll])
6278         fi
6279     done
6280     AC_MSG_RESULT([found all ($msvcdlls)])
6283 dnl =========================================
6284 dnl Check for the Windows  SDK.
6285 dnl =========================================
6286 if test "$_os" = "WINNT"; then
6287     AC_MSG_CHECKING([for Windows SDK])
6288     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6289         find_winsdk
6290         WINDOWS_SDK_HOME=$winsdktest
6292         # normalize if found
6293         if test -n "$WINDOWS_SDK_HOME"; then
6294             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6295             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6296         fi
6298         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6299     fi
6301     if test -n "$WINDOWS_SDK_HOME"; then
6302         # Remove a possible trailing backslash
6303         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6305         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6306              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6307              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6308             have_windows_sdk_headers=yes
6309         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6310              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6311              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6312             have_windows_sdk_headers=yes
6313         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6314              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6315              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6316             have_windows_sdk_headers=yes
6317         else
6318             have_windows_sdk_headers=no
6319         fi
6321         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6322             have_windows_sdk_libs=yes
6323         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6324             have_windows_sdk_libs=yes
6325         else
6326             have_windows_sdk_libs=no
6327         fi
6329         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6330             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6331 the  Windows SDK are installed.])
6332         fi
6333     fi
6335     if test -z "$WINDOWS_SDK_HOME"; then
6336         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6337     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6338         WINDOWS_SDK_VERSION=80
6339         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6340     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6341         WINDOWS_SDK_VERSION=81
6342         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6343     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6344         WINDOWS_SDK_VERSION=10
6345         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6346     else
6347         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6348     fi
6349     PathFormat "$WINDOWS_SDK_HOME"
6350     WINDOWS_SDK_HOME="$formatted_path"
6351     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6352     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6353         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6354         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6355             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6356         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6357             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6358         fi
6359     fi
6361     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6362     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6363     dnl but not in v8.0), so allow this to be overridden with a
6364     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6365     dnl and configuration error if no WiLangId.vbs is found would arguably be
6366     dnl better, but I do not know under which conditions exactly it is needed by
6367     dnl msiglobal.pm:
6368     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6369         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6370         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6371         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6372             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6373             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6374         fi
6375         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6376             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6377             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6378         fi
6379         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6380             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6381             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6382         fi
6383     fi
6384     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6385         if test -n "$with_package_format" -a "$with_package_format" != no; then
6386             for i in "$with_package_format"; do
6387                 if test "$i" = "msi"; then
6388                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6389                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6390                     fi
6391                 fi
6392             done
6393         fi
6394     fi
6396 AC_SUBST(WINDOWS_SDK_HOME)
6397 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6398 AC_SUBST(WINDOWS_SDK_VERSION)
6399 AC_SUBST(WINDOWS_SDK_WILANGID)
6401 if test "$build_os" = "cygwin"; then
6402     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6403     dnl dir, it also determines that dir's path w/o an arch segment if any,
6404     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6405     AC_MSG_CHECKING([for midl.exe])
6407     find_winsdk
6408     if test -n "$winsdkbinsubdir" \
6409         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6410     then
6411         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6412         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6413     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6414         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6415         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6416     elif test -f "$winsdktest/Bin/midl.exe"; then
6417         MIDL_PATH=$winsdktest/Bin
6418         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6419     fi
6420     if test ! -f "$MIDL_PATH/midl.exe"; then
6421         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6422     else
6423         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6424     fi
6426     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6427     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6429     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6430          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6431          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6432          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6433     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6434          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6435          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6436          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6437     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6438          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6439          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6440          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6441     else
6442         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6443     fi
6445     dnl Check csc.exe
6446     AC_MSG_CHECKING([for csc.exe])
6447     find_csc
6448     if test -f "$csctest/csc.exe"; then
6449         CSC_PATH="$csctest"
6450     fi
6451     if test ! -f "$CSC_PATH/csc.exe"; then
6452         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6453     else
6454         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6455     fi
6457     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6459     dnl Check al.exe
6460     AC_MSG_CHECKING([for al.exe])
6461     find_winsdk
6462     if test -n "$winsdkbinsubdir" \
6463         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6464     then
6465         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6466     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6467         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6468     elif test -f "$winsdktest/Bin/al.exe"; then
6469         AL_PATH="$winsdktest/Bin"
6470     fi
6472     if test -z "$AL_PATH"; then
6473         find_al
6474         if test -f "$altest/bin/al.exe"; then
6475             AL_PATH="$altest/bin"
6476         elif test -f "$altest/al.exe"; then
6477             AL_PATH="$altest"
6478         fi
6479     fi
6480     if test ! -f "$AL_PATH/al.exe"; then
6481         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6482     else
6483         AC_MSG_RESULT([$AL_PATH/al.exe])
6484     fi
6486     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6488     dnl Check mscoree.lib / .NET Framework dir
6489     AC_MSG_CHECKING(.NET Framework)
6490     find_dotnetsdk46
6491     PathFormat "$frametest"
6492     frametest="$formatted_path"
6493     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6494         DOTNET_FRAMEWORK_HOME="$frametest"
6495     else
6496         find_winsdk
6497         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6498             DOTNET_FRAMEWORK_HOME="$winsdktest"
6499         fi
6500     fi
6501     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
6502         AC_MSG_ERROR([mscoree.lib not found])
6503     fi
6504     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6506     PathFormat "$MIDL_PATH"
6507     MIDL_PATH="$formatted_path"
6509     PathFormat "$AL_PATH"
6510     AL_PATH="$formatted_path"
6512     PathFormat "$DOTNET_FRAMEWORK_HOME"
6513     DOTNET_FRAMEWORK_HOME="$formatted_path"
6515     PathFormat "$CSC_PATH"
6516     CSC_PATH="$formatted_path"
6519 dnl ===================================================================
6520 dnl Testing for C++ compiler and version...
6521 dnl ===================================================================
6523 if test "$_os" != "WINNT"; then
6524     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6525     save_CXXFLAGS=$CXXFLAGS
6526     AC_PROG_CXX
6527     CXXFLAGS=$save_CXXFLAGS
6528     if test -z "$CXX_BASE"; then
6529         CXX_BASE=`first_arg_basename "$CXX"`
6530     fi
6533 dnl check for GNU C++ compiler version
6534 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6535     AC_MSG_CHECKING([the GNU C++ compiler version])
6537     _gpp_version=`$CXX -dumpversion`
6538     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6540     if test "$_gpp_majmin" -lt "700"; then
6541         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6542     else
6543         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6544     fi
6546     dnl see https://code.google.com/p/android/issues/detail?id=41770
6547         glibcxx_threads=no
6548         AC_LANG_PUSH([C++])
6549         AC_REQUIRE_CPP
6550         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6551         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6552             #include <bits/c++config.h>]],[[
6553             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6554             && !defined(_GLIBCXX__PTHREADS) \
6555             && !defined(_GLIBCXX_HAS_GTHREADS)
6556             choke me
6557             #endif
6558         ]])],[AC_MSG_RESULT([yes])
6559         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6560         AC_LANG_POP([C++])
6561         if test $glibcxx_threads = yes; then
6562             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6563         fi
6565 AC_SUBST(BOOST_CXXFLAGS)
6568 # prefx CXX with ccache if needed
6570 if test "$CCACHE" != ""; then
6571     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6572     AC_LANG_PUSH([C++])
6573     save_CXXFLAGS=$CXXFLAGS
6574     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6575     dnl an empty program will do, we're checking the compiler flags
6576     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6577                       [use_ccache=yes], [use_ccache=no])
6578     if test $use_ccache = yes; then
6579         AC_MSG_RESULT([yes])
6580     else
6581         CXX="$CCACHE $CXX"
6582         CXX_BASE="ccache $CXX_BASE"
6583         AC_MSG_RESULT([no])
6584     fi
6585     CXXFLAGS=$save_CXXFLAGS
6586     AC_LANG_POP([C++])
6589 dnl ===================================================================
6590 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6591 dnl ===================================================================
6593 if test "$_os" != "WINNT"; then
6594     AC_PROG_CXXCPP
6596     dnl Check whether there's a C pre-processor.
6597     AC_PROG_CPP
6601 dnl ===================================================================
6602 dnl Find integral type sizes and alignments
6603 dnl ===================================================================
6605 if test "$_os" != "WINNT"; then
6607     AC_CHECK_SIZEOF(long)
6608     AC_CHECK_SIZEOF(short)
6609     AC_CHECK_SIZEOF(int)
6610     AC_CHECK_SIZEOF(long long)
6611     AC_CHECK_SIZEOF(double)
6612     AC_CHECK_SIZEOF(void*)
6614     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6615     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6616     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6617     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6618     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6620     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6621     m4_pattern_allow([AC_CHECK_ALIGNOF])
6622     m4_ifdef([AC_CHECK_ALIGNOF],
6623         [
6624             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6625             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6626             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6627             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6628         ],
6629         [
6630             case "$_os-$host_cpu" in
6631             Linux-i686)
6632                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6633                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6634                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6635                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6636                 ;;
6637             Linux-x86_64)
6638                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6639                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6640                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6641                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6642                 ;;
6643             *)
6644                 if test -z "$ac_cv_alignof_short" -o \
6645                         -z "$ac_cv_alignof_int" -o \
6646                         -z "$ac_cv_alignof_long" -o \
6647                         -z "$ac_cv_alignof_double"; then
6648                    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.])
6649                 fi
6650                 ;;
6651             esac
6652         ])
6654     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6655     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6656     if test $ac_cv_sizeof_long -eq 8; then
6657         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6658     elif test $ac_cv_sizeof_double -eq 8; then
6659         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6660     else
6661         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6662     fi
6664     dnl Check for large file support
6665     AC_SYS_LARGEFILE
6666     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6667         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6668     fi
6669     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6670         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6671     fi
6672 else
6673     # Hardcode for MSVC
6674     SAL_TYPES_SIZEOFSHORT=2
6675     SAL_TYPES_SIZEOFINT=4
6676     SAL_TYPES_SIZEOFLONG=4
6677     SAL_TYPES_SIZEOFLONGLONG=8
6678     if test $WIN_HOST_BITS -eq 32; then
6679         SAL_TYPES_SIZEOFPOINTER=4
6680     else
6681         SAL_TYPES_SIZEOFPOINTER=8
6682     fi
6683     SAL_TYPES_ALIGNMENT2=2
6684     SAL_TYPES_ALIGNMENT4=4
6685     SAL_TYPES_ALIGNMENT8=8
6686     LFS_CFLAGS=''
6688 AC_SUBST(LFS_CFLAGS)
6690 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6691 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6692 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6693 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6694 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6695 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6696 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6697 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6699 dnl ===================================================================
6700 dnl Check whether to enable runtime optimizations
6701 dnl ===================================================================
6702 ENABLE_RUNTIME_OPTIMIZATIONS=
6703 AC_MSG_CHECKING([whether to enable runtime optimizations])
6704 if test -z "$enable_runtime_optimizations"; then
6705     for i in $CC; do
6706         case $i in
6707         -fsanitize=*)
6708             enable_runtime_optimizations=no
6709             break
6710             ;;
6711         esac
6712     done
6714 if test "$enable_runtime_optimizations" != no; then
6715     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6716     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6717     AC_MSG_RESULT([yes])
6718 else
6719     AC_MSG_RESULT([no])
6721 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6723 dnl ===================================================================
6724 dnl Check if valgrind headers are available
6725 dnl ===================================================================
6726 ENABLE_VALGRIND=
6727 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6728     prev_cppflags=$CPPFLAGS
6729     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6730     # or where does it come from?
6731     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6732     AC_CHECK_HEADER([valgrind/valgrind.h],
6733         [ENABLE_VALGRIND=TRUE])
6734     CPPFLAGS=$prev_cppflags
6736 AC_SUBST([ENABLE_VALGRIND])
6737 if test -z "$ENABLE_VALGRIND"; then
6738     if test "$with_valgrind" = yes; then
6739         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6740     fi
6741     VALGRIND_CFLAGS=
6743 AC_SUBST([VALGRIND_CFLAGS])
6746 dnl ===================================================================
6747 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6748 dnl ===================================================================
6750 # We need at least the sys/sdt.h include header.
6751 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6752 if test "$SDT_H_FOUND" = "TRUE"; then
6753     # Found sys/sdt.h header, now make sure the c++ compiler works.
6754     # Old g++ versions had problems with probes in constructors/destructors.
6755     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6756     AC_LANG_PUSH([C++])
6757     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6758     #include <sys/sdt.h>
6759     class ProbeClass
6760     {
6761     private:
6762       int& ref;
6763       const char *name;
6765     public:
6766       ProbeClass(int& v, const char *n) : ref(v), name(n)
6767       {
6768         DTRACE_PROBE2(_test_, cons, name, ref);
6769       }
6771       void method(int min)
6772       {
6773         DTRACE_PROBE3(_test_, meth, name, ref, min);
6774         ref -= min;
6775       }
6777       ~ProbeClass()
6778       {
6779         DTRACE_PROBE2(_test_, dest, name, ref);
6780       }
6781     };
6782     ]],[[
6783     int i = 64;
6784     DTRACE_PROBE1(_test_, call, i);
6785     ProbeClass inst = ProbeClass(i, "call");
6786     inst.method(24);
6787     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6788           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6789     AC_LANG_POP([C++])
6791 AC_CONFIG_HEADERS([config_host/config_probes.h])
6793 dnl ===================================================================
6794 dnl GCC features
6795 dnl ===================================================================
6796 HAVE_GCC_STACK_CLASH_PROTECTION=
6797 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6798     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6799     save_CFLAGS=$CFLAGS
6800     CFLAGS="$CFLAGS -fstack-clash-protection"
6801     AC_LINK_IFELSE(
6802         [AC_LANG_PROGRAM(, [[return 0;]])],
6803         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6804         [AC_MSG_RESULT([no])])
6805     CFLAGS=$save_CFLAGS
6807     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6808     save_CFLAGS=$CFLAGS
6809     CFLAGS="$CFLAGS -Werror -mno-avx"
6810     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6811     CFLAGS=$save_CFLAGS
6812     if test "$HAVE_GCC_AVX" = "TRUE"; then
6813         AC_MSG_RESULT([yes])
6814     else
6815         AC_MSG_RESULT([no])
6816     fi
6818     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6819     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6820     int v = 0;
6821     if (__sync_add_and_fetch(&v, 1) != 1 ||
6822         __sync_sub_and_fetch(&v, 1) != 0)
6823         return 1;
6824     __sync_synchronize();
6825     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6826         v != 1)
6827         return 1;
6828     return 0;
6829 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6830     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6831         AC_MSG_RESULT([yes])
6832         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6833     else
6834         AC_MSG_RESULT([no])
6835     fi
6837     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6838     AC_LANG_PUSH([C++])
6839     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6840             #include <cstddef>
6841             #include <cxxabi.h>
6842             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6843         ])], [
6844             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6845             AC_MSG_RESULT([yes])
6846         ], [AC_MSG_RESULT([no])])
6847     AC_LANG_POP([C++])
6849     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6850     AC_LANG_PUSH([C++])
6851     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6852             #include <cstddef>
6853             #include <cxxabi.h>
6854             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6855         ])], [
6856             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6857             AC_MSG_RESULT([yes])
6858         ], [AC_MSG_RESULT([no])])
6859     AC_LANG_POP([C++])
6861     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6862     AC_LANG_PUSH([C++])
6863     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6864             #include <cxxabi.h>
6865             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6866         ])], [
6867             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6868             AC_MSG_RESULT([yes])
6869         ], [AC_MSG_RESULT([no])])
6870     AC_LANG_POP([C++])
6872     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6873     AC_LANG_PUSH([C++])
6874     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6875             #include <cstddef>
6876             #include <cxxabi.h>
6877             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6878         ])], [
6879             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6880             AC_MSG_RESULT([yes])
6881         ], [AC_MSG_RESULT([no])])
6882     AC_LANG_POP([C++])
6884     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6885     AC_LANG_PUSH([C++])
6886     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6887             #include <cstddef>
6888             #include <cxxabi.h>
6889             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6890         ])], [
6891             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6892             AC_MSG_RESULT([yes])
6893         ], [AC_MSG_RESULT([no])])
6894     AC_LANG_POP([C++])
6896     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6897     AC_LANG_PUSH([C++])
6898     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6899             #include <cxxabi.h>
6900             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6901         ])], [
6902             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6903             AC_MSG_RESULT([yes])
6904         ], [AC_MSG_RESULT([no])])
6905     AC_LANG_POP([C++])
6907     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6908     AC_LANG_PUSH([C++])
6909     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6910             #include <cxxabi.h>
6911             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6912         ])], [
6913             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6914             AC_MSG_RESULT([yes])
6915         ], [AC_MSG_RESULT([no])])
6916     AC_LANG_POP([C++])
6918     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6919     AC_LANG_PUSH([C++])
6920     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6921             #include <cxxabi.h>
6922             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6923         ])], [
6924             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6925             AC_MSG_RESULT([yes])
6926         ], [AC_MSG_RESULT([no])])
6927     AC_LANG_POP([C++])
6929     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6930     AC_LANG_PUSH([C++])
6931     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6932             #include <cstddef>
6933             #include <cxxabi.h>
6934             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6935         ])], [
6936             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6937             AC_MSG_RESULT([yes])
6938         ], [AC_MSG_RESULT([no])])
6939     AC_LANG_POP([C++])
6941     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6942     AC_LANG_PUSH([C++])
6943     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6944             #include <cstddef>
6945             #include <cxxabi.h>
6946             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6947         ])], [
6948             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6949             AC_MSG_RESULT([yes])
6950         ], [AC_MSG_RESULT([no])])
6951     AC_LANG_POP([C++])
6954 AC_SUBST(HAVE_GCC_AVX)
6955 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6956 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6958 dnl ===================================================================
6959 dnl Identify the C++ library
6960 dnl ===================================================================
6962 AC_MSG_CHECKING([what the C++ library is])
6963 AC_LANG_PUSH([C++])
6964 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6965 #include <utility>
6966 #ifndef __GLIBCXX__
6967 foo bar
6968 #endif
6969 ]])],
6970     [CPP_LIBRARY=GLIBCXX
6971      cpp_library_name="GNU libstdc++"
6972     ],
6973     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6974 #include <utility>
6975 #ifndef _LIBCPP_VERSION
6976 foo bar
6977 #endif
6978 ]])],
6979     [CPP_LIBRARY=LIBCPP
6980      cpp_library_name="LLVM libc++"
6981      AC_DEFINE([HAVE_LIBCXX])
6982     ],
6983     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6984 #include <utility>
6985 #ifndef _MSC_VER
6986 foo bar
6987 #endif
6988 ]])],
6989     [CPP_LIBRARY=MSVCRT
6990      cpp_library_name="Microsoft"
6991     ],
6992     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
6993 AC_MSG_RESULT([$cpp_library_name])
6994 AC_LANG_POP([C++])
6996 dnl ===================================================================
6997 dnl Check for gperf
6998 dnl ===================================================================
6999 AC_PATH_PROG(GPERF, gperf)
7000 if test -z "$GPERF"; then
7001     AC_MSG_ERROR([gperf not found but needed. Install it.])
7003 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7004     GPERF=`cygpath -m $GPERF`
7006 AC_MSG_CHECKING([whether gperf is new enough])
7007 my_gperf_ver1=$($GPERF --version | head -n 1)
7008 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7009 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7010 if test "$my_gperf_ver3" -ge 301; then
7011     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7012 else
7013     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7015 AC_SUBST(GPERF)
7017 dnl ===================================================================
7018 dnl Check for system libcmis
7019 dnl ===================================================================
7020 # libcmis requires curl and we can't build curl for iOS
7021 if test $_os != iOS; then
7022     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7023     ENABLE_LIBCMIS=TRUE
7024 else
7025     ENABLE_LIBCMIS=
7027 AC_SUBST(ENABLE_LIBCMIS)
7029 dnl ===================================================================
7030 dnl C++11
7031 dnl ===================================================================
7033 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7034 CXXFLAGS_CXX11=
7035 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7036     if test "$with_latest_c__" = yes; then
7037         CXXFLAGS_CXX11=-std:c++latest
7038     else
7039         CXXFLAGS_CXX11=-std:c++17
7040     fi
7041     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7042 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7043     my_flags='-std=c++17 -std=c++1z'
7044     if test "$with_latest_c__" = yes; then
7045         my_flags="-std=c++2b -std=c++20 -std=c++2a $my_flags"
7046     fi
7047     for flag in $my_flags; do
7048         if test "$COM" = MSC; then
7049             flag="-Xclang $flag"
7050         fi
7051         save_CXXFLAGS=$CXXFLAGS
7052         CXXFLAGS="$CXXFLAGS $flag -Werror"
7053         if test "$SYSTEM_LIBCMIS" = TRUE; then
7054             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7055         fi
7056         AC_LANG_PUSH([C++])
7057         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7058             #include <algorithm>
7059             #include <functional>
7060             #include <vector>
7062             #if defined SYSTEM_LIBCMIS
7063             // See ucb/source/ucp/cmis/auth_provider.hxx:
7064             #if !defined __clang__
7065             #pragma GCC diagnostic push
7066             #pragma GCC diagnostic ignored "-Wdeprecated"
7067             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7068             #endif
7069             #include <libcmis/libcmis.hxx>
7070             #if !defined __clang__
7071             #pragma GCC diagnostic pop
7072             #endif
7073             #endif
7075             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7076                 std::sort(v.begin(), v.end(), fn);
7077             }
7078             ]])],[CXXFLAGS_CXX11=$flag])
7079         AC_LANG_POP([C++])
7080         CXXFLAGS=$save_CXXFLAGS
7081         if test -n "$CXXFLAGS_CXX11"; then
7082             break
7083         fi
7084     done
7086 if test -n "$CXXFLAGS_CXX11"; then
7087     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7088 else
7089     AC_MSG_ERROR(no)
7091 AC_SUBST(CXXFLAGS_CXX11)
7093 if test "$GCC" = "yes"; then
7094     save_CXXFLAGS=$CXXFLAGS
7095     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7096     CHECK_L_ATOMIC
7097     CXXFLAGS=$save_CXXFLAGS
7098     AC_SUBST(ATOMIC_LIB)
7101 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7102 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7103 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7104 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7105 dnl again towards 4.7.2:
7106 if test $CPP_LIBRARY = GLIBCXX; then
7107     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7108     AC_LANG_PUSH([C++])
7109     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7110 #include <list>
7111 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7112     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7113     //   GCC 4.7.0: 20120322
7114     //   GCC 4.7.1: 20120614
7115     // and using a range check is not possible as the mapping between
7116     // __GLIBCXX__ values and GCC versions is not monotonic
7117 /* ok */
7118 #else
7119 abi broken
7120 #endif
7121         ]])], [AC_MSG_RESULT(no, ok)],
7122         [AC_MSG_ERROR(yes)])
7123     AC_LANG_POP([C++])
7126 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7127 save_CXXFLAGS=$CXXFLAGS
7128 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7129 AC_LANG_PUSH([C++])
7131 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7132 #include <stddef.h>
7134 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7136 namespace
7138         struct b
7139         {
7140                 int i;
7141                 int j;
7142         };
7144 ]], [[
7145 struct a
7147         int i;
7148         int j;
7150 a thinga[]={{0,0}, {1,1}};
7151 b thingb[]={{0,0}, {1,1}};
7152 size_t i = sizeof(sal_n_array_size(thinga));
7153 size_t j = sizeof(sal_n_array_size(thingb));
7154 return !(i != 0 && j != 0);
7156     ], [ AC_MSG_RESULT(yes) ],
7157     [ AC_MSG_ERROR(no)])
7158 AC_LANG_POP([C++])
7159 CXXFLAGS=$save_CXXFLAGS
7161 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7162 if test "$GCC" = yes; then
7163     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7164     AC_LANG_PUSH([C++])
7165     save_CXXFLAGS=$CXXFLAGS
7166     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7167     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7168     CXXFLAGS=$save_CXXFLAGS
7169     AC_LANG_POP([C++])
7170     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7171         AC_MSG_RESULT([yes])
7172     else
7173         AC_MSG_RESULT([no])
7174     fi
7176 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7178 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7179 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7180 dnl from consteval constructor initializing const variable":
7181 AC_LANG_PUSH([C++])
7182 save_CXXFLAGS=$CXXFLAGS
7183 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7184 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7185         struct S {
7186             consteval S() { i = 1; }
7187             int i = 0;
7188         };
7189         S const s;
7190     ], [
7191         return (s.i == 1) ? 0 : 1;
7192     ])], [
7193         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7194         AC_MSG_RESULT([yes])
7195     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7196 CXXFLAGS=$save_CXXFLAGS
7197 AC_LANG_POP([C++])
7199 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7200 AC_LANG_PUSH([C++])
7201 save_CXXFLAGS=$CXXFLAGS
7202 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7203 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7204         #include <algorithm>
7205         #include <initializer_list>
7206         #include <vector>
7207         template<typename T> class S {
7208         private:
7209             std::vector<T> v_;
7210         public:
7211             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7212         };
7213         constinit S<int> s{3, 2, 1};
7214     ])], [
7215         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7216         AC_MSG_RESULT([yes])
7217     ], [AC_MSG_RESULT([no])])
7218 CXXFLAGS=$save_CXXFLAGS
7219 AC_LANG_POP([C++])
7221 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7222 AC_LANG_PUSH([C++])
7223 save_CXXFLAGS=$CXXFLAGS
7224 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7225 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7226         #include <span>
7227         #include <type_traits>
7228         // Don't check size_type directly, as it was called index_type before P1872R0:
7229         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7230     ])], [
7231         AC_DEFINE([HAVE_CPP_SPAN],[1])
7232         AC_MSG_RESULT([yes])
7233     ], [AC_MSG_RESULT([no])])
7234 CXXFLAGS=$save_CXXFLAGS
7235 AC_LANG_POP([C++])
7237 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7238 AC_LANG_PUSH([C++])
7239 save_CXXFLAGS=$CXXFLAGS
7240 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7241 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7242         struct S1 { S1(S1 &&); };
7243         struct S2: S1 {};
7244         S1 f(S2 s) { return s; }
7245     ])], [
7246         AC_DEFINE([HAVE_P1155R3],[1])
7247         AC_MSG_RESULT([yes])
7248     ], [AC_MSG_RESULT([no])])
7249 CXXFLAGS=$save_CXXFLAGS
7250 AC_LANG_POP([C++])
7252 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7253 dnl which is included in -Wextra anyway):
7254 HAVE_WDEPRECATED_COPY_DTOR=
7255 if test "$GCC" = yes; then
7256     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7257     AC_LANG_PUSH([C++])
7258     save_CXXFLAGS=$CXXFLAGS
7259     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7260     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7261             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7262             AC_MSG_RESULT([yes])
7263         ], [AC_MSG_RESULT([no])])
7264     CXXFLAGS=$save_CXXFLAGS
7265     AC_LANG_POP([C++])
7267 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7269 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7270 dnl uninitialized warning for code like
7272 dnl   OString f();
7273 dnl   boost::optional<OString> * g(bool b) {
7274 dnl       boost::optional<OString> o;
7275 dnl       if (b) o = f();
7276 dnl       return new boost::optional<OString>(o);
7277 dnl   }
7279 dnl (as is e.g. present, in a slightly more elaborate form, in
7280 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7281 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7282 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7283 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7284     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7285     AC_LANG_PUSH([C++])
7286     save_CXXFLAGS=$CXXFLAGS
7287     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7288     if test "$ENABLE_OPTIMIZED" = TRUE; then
7289         CXXFLAGS="$CXXFLAGS -O2"
7290     else
7291         CXXFLAGS="$CXXFLAGS -O0"
7292     fi
7293     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7294             #include <new>
7295             void f1(int);
7296             struct S1 {
7297                 ~S1() { f1(n); }
7298                 int n = 0;
7299             };
7300             struct S2 {
7301                 S2() {}
7302                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7303                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7304                 void set(S1 s) {
7305                     new (stg) S1(s);
7306                     init = true;
7307                 }
7308                 bool init = false;
7309                 char stg[sizeof (S1)];
7310             } ;
7311             S1 f2();
7312             S2 * f3(bool b) {
7313                 S2 o;
7314                 if (b) o.set(f2());
7315                 return new S2(o);
7316             }
7317         ]])], [AC_MSG_RESULT([no])], [
7318             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7319             AC_MSG_RESULT([yes])
7320         ])
7321     CXXFLAGS=$save_CXXFLAGS
7322     AC_LANG_POP([C++])
7324 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7326 dnl ===================================================================
7327 dnl CPU Intrinsics support - SSE, AVX
7328 dnl ===================================================================
7330 CXXFLAGS_INTRINSICS_SSE2=
7331 CXXFLAGS_INTRINSICS_SSSE3=
7332 CXXFLAGS_INTRINSICS_SSE41=
7333 CXXFLAGS_INTRINSICS_SSE42=
7334 CXXFLAGS_INTRINSICS_AVX=
7335 CXXFLAGS_INTRINSICS_AVX2=
7336 CXXFLAGS_INTRINSICS_AVX512=
7337 CXXFLAGS_INTRINSICS_F16C=
7338 CXXFLAGS_INTRINSICS_FMA=
7340 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7341     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7342     flag_sse2=-msse2
7343     flag_ssse3=-mssse3
7344     flag_sse41=-msse4.1
7345     flag_sse42=-msse4.2
7346     flag_avx=-mavx
7347     flag_avx2=-mavx2
7348     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7349     flag_f16c=-mf16c
7350     flag_fma=-mfma
7351 else
7352     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7353     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7354     # SSE2 seems to be SSE2+.
7355     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7356     # is not empty (and can be tested in gbuild).
7357     flag_sse2=-arch:SSE2
7358     flag_ssse3=-arch:SSE2
7359     flag_sse41=-arch:SSE2
7360     flag_sse42=-arch:SSE2
7361     flag_avx=-arch:AVX
7362     flag_avx2=-arch:AVX2
7363     flag_avx512=-arch:AVX512
7364     # These are part of -arch:AVX2
7365     flag_f16c=-arch:AVX2
7366     flag_fma=-arch:AVX2
7369 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7370 AC_LANG_PUSH([C++])
7371 save_CXXFLAGS=$CXXFLAGS
7372 CXXFLAGS="$CXXFLAGS $flag_sse2"
7373 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7374     #include <emmintrin.h>
7375     int main () {
7376         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7377         c = _mm_xor_si128 (a, b);
7378         return 0;
7379     }
7380     ])],
7381     [can_compile_sse2=yes],
7382     [can_compile_sse2=no])
7383 AC_LANG_POP([C++])
7384 CXXFLAGS=$save_CXXFLAGS
7385 AC_MSG_RESULT([${can_compile_sse2}])
7386 if test "${can_compile_sse2}" = "yes" ; then
7387     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7390 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7391 AC_LANG_PUSH([C++])
7392 save_CXXFLAGS=$CXXFLAGS
7393 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7394 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7395     #include <tmmintrin.h>
7396     int main () {
7397         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7398         c = _mm_maddubs_epi16 (a, b);
7399         return 0;
7400     }
7401     ])],
7402     [can_compile_ssse3=yes],
7403     [can_compile_ssse3=no])
7404 AC_LANG_POP([C++])
7405 CXXFLAGS=$save_CXXFLAGS
7406 AC_MSG_RESULT([${can_compile_ssse3}])
7407 if test "${can_compile_ssse3}" = "yes" ; then
7408     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7411 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7412 AC_LANG_PUSH([C++])
7413 save_CXXFLAGS=$CXXFLAGS
7414 CXXFLAGS="$CXXFLAGS $flag_sse41"
7415 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7416     #include <smmintrin.h>
7417     int main () {
7418         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7419         c = _mm_cmpeq_epi64 (a, b);
7420         return 0;
7421     }
7422     ])],
7423     [can_compile_sse41=yes],
7424     [can_compile_sse41=no])
7425 AC_LANG_POP([C++])
7426 CXXFLAGS=$save_CXXFLAGS
7427 AC_MSG_RESULT([${can_compile_sse41}])
7428 if test "${can_compile_sse41}" = "yes" ; then
7429     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7432 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7433 AC_LANG_PUSH([C++])
7434 save_CXXFLAGS=$CXXFLAGS
7435 CXXFLAGS="$CXXFLAGS $flag_sse42"
7436 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7437     #include <nmmintrin.h>
7438     int main () {
7439         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7440         c = _mm_cmpgt_epi64 (a, b);
7441         return 0;
7442     }
7443     ])],
7444     [can_compile_sse42=yes],
7445     [can_compile_sse42=no])
7446 AC_LANG_POP([C++])
7447 CXXFLAGS=$save_CXXFLAGS
7448 AC_MSG_RESULT([${can_compile_sse42}])
7449 if test "${can_compile_sse42}" = "yes" ; then
7450     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7453 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7454 AC_LANG_PUSH([C++])
7455 save_CXXFLAGS=$CXXFLAGS
7456 CXXFLAGS="$CXXFLAGS $flag_avx"
7457 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7458     #include <immintrin.h>
7459     int main () {
7460         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7461         c = _mm256_xor_ps(a, b);
7462         return 0;
7463     }
7464     ])],
7465     [can_compile_avx=yes],
7466     [can_compile_avx=no])
7467 AC_LANG_POP([C++])
7468 CXXFLAGS=$save_CXXFLAGS
7469 AC_MSG_RESULT([${can_compile_avx}])
7470 if test "${can_compile_avx}" = "yes" ; then
7471     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7474 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7475 AC_LANG_PUSH([C++])
7476 save_CXXFLAGS=$CXXFLAGS
7477 CXXFLAGS="$CXXFLAGS $flag_avx2"
7478 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7479     #include <immintrin.h>
7480     int main () {
7481         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7482         c = _mm256_maddubs_epi16(a, b);
7483         return 0;
7484     }
7485     ])],
7486     [can_compile_avx2=yes],
7487     [can_compile_avx2=no])
7488 AC_LANG_POP([C++])
7489 CXXFLAGS=$save_CXXFLAGS
7490 AC_MSG_RESULT([${can_compile_avx2}])
7491 if test "${can_compile_avx2}" = "yes" ; then
7492     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7495 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7496 AC_LANG_PUSH([C++])
7497 save_CXXFLAGS=$CXXFLAGS
7498 CXXFLAGS="$CXXFLAGS $flag_avx512"
7499 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7500     #include <immintrin.h>
7501     int main () {
7502         __m512i a = _mm512_loadu_si512(0);
7503         return 0;
7504     }
7505     ])],
7506     [can_compile_avx512=yes],
7507     [can_compile_avx512=no])
7508 AC_LANG_POP([C++])
7509 CXXFLAGS=$save_CXXFLAGS
7510 AC_MSG_RESULT([${can_compile_avx512}])
7511 if test "${can_compile_avx512}" = "yes" ; then
7512     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7515 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7516 AC_LANG_PUSH([C++])
7517 save_CXXFLAGS=$CXXFLAGS
7518 CXXFLAGS="$CXXFLAGS $flag_f16c"
7519 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7520     #include <immintrin.h>
7521     int main () {
7522         __m128i a = _mm_set1_epi32 (0);
7523         __m128 c;
7524         c = _mm_cvtph_ps(a);
7525         return 0;
7526     }
7527     ])],
7528     [can_compile_f16c=yes],
7529     [can_compile_f16c=no])
7530 AC_LANG_POP([C++])
7531 CXXFLAGS=$save_CXXFLAGS
7532 AC_MSG_RESULT([${can_compile_f16c}])
7533 if test "${can_compile_f16c}" = "yes" ; then
7534     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7537 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7538 AC_LANG_PUSH([C++])
7539 save_CXXFLAGS=$CXXFLAGS
7540 CXXFLAGS="$CXXFLAGS $flag_fma"
7541 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7542     #include <immintrin.h>
7543     int main () {
7544         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7545         d = _mm256_fmadd_ps(a, b, c);
7546         return 0;
7547     }
7548     ])],
7549     [can_compile_fma=yes],
7550     [can_compile_fma=no])
7551 AC_LANG_POP([C++])
7552 CXXFLAGS=$save_CXXFLAGS
7553 AC_MSG_RESULT([${can_compile_fma}])
7554 if test "${can_compile_fma}" = "yes" ; then
7555     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7558 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7559 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7560 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7561 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7562 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7563 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7564 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7565 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7566 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7568 dnl ===================================================================
7569 dnl system stl sanity tests
7570 dnl ===================================================================
7571 if test "$_os" != "WINNT"; then
7573     AC_LANG_PUSH([C++])
7575     save_CPPFLAGS="$CPPFLAGS"
7576     if test -n "$MACOSX_SDK_PATH"; then
7577         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7578     fi
7580     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7581     # only.
7582     if test "$CPP_LIBRARY" = GLIBCXX; then
7583         dnl gcc#19664, gcc#22482, rhbz#162935
7584         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7585         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7586         AC_MSG_RESULT([$stlvisok])
7587         if test "$stlvisok" = "no"; then
7588             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7589         fi
7590     fi
7592     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7593     # when we don't make any dynamic libraries?
7594     if test "$DISABLE_DYNLOADING" = ""; then
7595         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7596         cat > conftestlib1.cc <<_ACEOF
7597 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7598 struct S2: S1<int> { virtual ~S2(); };
7599 S2::~S2() {}
7600 _ACEOF
7601         cat > conftestlib2.cc <<_ACEOF
7602 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7603 struct S2: S1<int> { virtual ~S2(); };
7604 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7605 _ACEOF
7606         gccvisinlineshiddenok=yes
7607         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7608             gccvisinlineshiddenok=no
7609         else
7610             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7611             dnl known to not work with -z defs (unsetting which makes the test
7612             dnl moot, though):
7613             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7614             if test "$COM_IS_CLANG" = TRUE; then
7615                 for i in $CXX $CXXFLAGS; do
7616                     case $i in
7617                     -fsanitize=*)
7618                         my_linkflagsnoundefs=
7619                         break
7620                         ;;
7621                     esac
7622                 done
7623             fi
7624             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7625                 gccvisinlineshiddenok=no
7626             fi
7627         fi
7629         rm -fr libconftest*
7630         AC_MSG_RESULT([$gccvisinlineshiddenok])
7631         if test "$gccvisinlineshiddenok" = "no"; then
7632             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7633         fi
7634     fi
7636    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7637     cat >visibility.cxx <<_ACEOF
7638 #pragma GCC visibility push(hidden)
7639 struct __attribute__ ((visibility ("default"))) TestStruct {
7640   static void Init();
7642 __attribute__ ((visibility ("default"))) void TestFunc() {
7643   TestStruct::Init();
7645 _ACEOF
7646     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7647         gccvisbroken=yes
7648     else
7649         case "$host_cpu" in
7650         i?86|x86_64)
7651             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7652                 gccvisbroken=no
7653             else
7654                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7655                     gccvisbroken=no
7656                 else
7657                     gccvisbroken=yes
7658                 fi
7659             fi
7660             ;;
7661         *)
7662             gccvisbroken=no
7663             ;;
7664         esac
7665     fi
7666     rm -f visibility.s visibility.cxx
7668     AC_MSG_RESULT([$gccvisbroken])
7669     if test "$gccvisbroken" = "yes"; then
7670         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7671     fi
7673     CPPFLAGS="$save_CPPFLAGS"
7675     AC_LANG_POP([C++])
7678 dnl ===================================================================
7679 dnl  Clang++ tests
7680 dnl ===================================================================
7682 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7683 if test "$GCC" = "yes"; then
7684     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7685     AC_LANG_PUSH([C++])
7686     save_CXXFLAGS=$CXXFLAGS
7687     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7688     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7689     CXXFLAGS=$save_CXXFLAGS
7690     AC_LANG_POP([C++])
7691     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7692         AC_MSG_RESULT([yes])
7693     else
7694         AC_MSG_RESULT([no])
7695     fi
7697 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7699 dnl ===================================================================
7700 dnl Compiler plugins
7701 dnl ===================================================================
7703 COMPILER_PLUGINS=
7704 # currently only Clang
7706 if test "$COM_IS_CLANG" != "TRUE"; then
7707     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7708         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7709         enable_compiler_plugins=no
7710     fi
7713 COMPILER_PLUGINS_COM_IS_CLANG=
7714 if test "$COM_IS_CLANG" = "TRUE"; then
7715     if test -n "$enable_compiler_plugins"; then
7716         compiler_plugins="$enable_compiler_plugins"
7717     elif test -n "$ENABLE_DBGUTIL"; then
7718         compiler_plugins=test
7719     else
7720         compiler_plugins=no
7721     fi
7722     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7723         if test "$CLANGVER" -lt 50002; then
7724             if test "$compiler_plugins" = yes; then
7725                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7726             else
7727                 compiler_plugins=no
7728             fi
7729         fi
7730     fi
7731     if test "$compiler_plugins" != "no"; then
7732         dnl The prefix where Clang resides, override to where Clang resides if
7733         dnl using a source build:
7734         if test -z "$CLANGDIR"; then
7735             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7736         fi
7737         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7738         if test -z "$COMPILER_PLUGINS_CXX"; then
7739             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7740         fi
7741         clangbindir=$CLANGDIR/bin
7742         if test "$build_os" = "cygwin"; then
7743             clangbindir=$(cygpath -u "$clangbindir")
7744         fi
7745         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7746         if test -n "$LLVM_CONFIG"; then
7747             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7748             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7749             if test -z "$CLANGLIBDIR"; then
7750                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7751             fi
7752             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7753             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7754             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7755             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7756                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7757             fi
7758             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7759             clangobjdir=$($LLVM_CONFIG --obj-root)
7760             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7761                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7762             fi
7763         fi
7764         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7765         AC_LANG_PUSH([C++])
7766         save_CXX=$CXX
7767         save_CXXCPP=$CXXCPP
7768         save_CPPFLAGS=$CPPFLAGS
7769         save_CXXFLAGS=$CXXFLAGS
7770         save_LDFLAGS=$LDFLAGS
7771         save_LIBS=$LIBS
7772         CXX=$COMPILER_PLUGINS_CXX
7773         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7774         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7775         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7776         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7777             [COMPILER_PLUGINS=TRUE],
7778             [
7779             if test "$compiler_plugins" = "yes"; then
7780                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7781             else
7782                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7783                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7784             fi
7785             ])
7786         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7787         dnl comment in compilerplugins/Makefile-clang.mk:
7788         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7789             LDFLAGS=""
7790             AC_MSG_CHECKING([for clang libraries to use])
7791             if test -z "$CLANGTOOLLIBS"; then
7792                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7793  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7794                 AC_LINK_IFELSE([
7795                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7796                         [[ clang::FullSourceLoc().dump(); ]])
7797                 ],[CLANGTOOLLIBS="$LIBS"],[])
7798             fi
7799             if test -z "$CLANGTOOLLIBS"; then
7800                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7801                 AC_LINK_IFELSE([
7802                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7803                         [[ clang::FullSourceLoc().dump(); ]])
7804                 ],[CLANGTOOLLIBS="$LIBS"],[])
7805             fi
7806             AC_MSG_RESULT([$CLANGTOOLLIBS])
7807             if test -z "$CLANGTOOLLIBS"; then
7808                 if test "$compiler_plugins" = "yes"; then
7809                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7810                 else
7811                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7812                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7813                 fi
7814                 COMPILER_PLUGINS=
7815             fi
7816             if test -n "$COMPILER_PLUGINS"; then
7817                 if test -z "$CLANGSYSINCLUDE"; then
7818                     if test -n "$LLVM_CONFIG"; then
7819                         # Path to the clang system headers (no idea if there's a better way to get it).
7820                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7821                     fi
7822                 fi
7823             fi
7824         fi
7825         CXX=$save_CXX
7826         CXXCPP=$save_CXXCPP
7827         CPPFLAGS=$save_CPPFLAGS
7828         CXXFLAGS=$save_CXXFLAGS
7829         LDFLAGS=$save_LDFLAGS
7830         LIBS="$save_LIBS"
7831         AC_LANG_POP([C++])
7833         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7834         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7835             #ifndef __clang__
7836             you lose
7837             #endif
7838             int foo=42;
7839             ]])],
7840             [AC_MSG_RESULT([yes])
7841              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7842             [AC_MSG_RESULT([no])])
7843         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7844     fi
7845 else
7846     if test "$enable_compiler_plugins" = "yes"; then
7847         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7848     fi
7850 COMPILER_PLUGINS_ANALYZER_PCH=
7851 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7852     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7854 AC_SUBST(COMPILER_PLUGINS)
7855 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7856 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7857 AC_SUBST(COMPILER_PLUGINS_CXX)
7858 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7859 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7860 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7861 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7862 AC_SUBST(CLANGDIR)
7863 AC_SUBST(CLANGLIBDIR)
7864 AC_SUBST(CLANGTOOLLIBS)
7865 AC_SUBST(CLANGSYSINCLUDE)
7867 # Plugin to help linker.
7868 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7869 # This makes --enable-lto build with clang work.
7870 AC_SUBST(LD_PLUGIN)
7872 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7873 AC_SUBST(HAVE_POSIX_FALLOCATE)
7875 JITC_PROCESSOR_TYPE=""
7876 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7877     # IBMs JDK needs this...
7878     JITC_PROCESSOR_TYPE=6
7879     export JITC_PROCESSOR_TYPE
7881 AC_SUBST([JITC_PROCESSOR_TYPE])
7883 # Misc Windows Stuff
7884 AC_ARG_WITH(ucrt-dir,
7885     AS_HELP_STRING([--with-ucrt-dir],
7886         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7887         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7888         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7889             Windows6.1-KB2999226-x64.msu
7890             Windows6.1-KB2999226-x86.msu
7891             Windows8.1-KB2999226-x64.msu
7892             Windows8.1-KB2999226-x86.msu
7893             Windows8-RT-KB2999226-x64.msu
7894             Windows8-RT-KB2999226-x86.msu
7895         A zip archive including those files is available from Microsoft site:
7896         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7899 UCRT_REDISTDIR="$with_ucrt_dir"
7900 if test $_os = "WINNT"; then
7901     find_msvc_x64_dlls
7902     for i in $PKGFORMAT; do
7903         if test "$i" = msi; then
7904             find_msms
7905             break
7906         fi
7907     done
7908     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7909     MSVC_DLLS="$msvcdlls"
7910     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7911     # MSVC 15.3 changed it to VC141
7912     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7913         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7914     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7915         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7916     else
7917         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7918     fi
7920     if test "$UCRT_REDISTDIR" = "no"; then
7921         dnl explicitly disabled
7922         UCRT_REDISTDIR=""
7923     else
7924         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7925                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7926                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7927                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7928                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7929                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7930             UCRT_REDISTDIR=""
7931             if test -n "$PKGFORMAT"; then
7932                for i in $PKGFORMAT; do
7933                    case "$i" in
7934                    msi)
7935                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7936                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7937                        ;;
7938                    esac
7939                done
7940             fi
7941         fi
7942     fi
7945 AC_SUBST(UCRT_REDISTDIR)
7946 AC_SUBST(MSVC_DLL_PATH)
7947 AC_SUBST(MSVC_DLLS)
7948 AC_SUBST(MSM_PATH)
7950 dnl ===================================================================
7951 dnl Checks for Java
7952 dnl ===================================================================
7953 if test "$ENABLE_JAVA" != ""; then
7955     # Windows-specific tests
7956     if test "$build_os" = "cygwin"; then
7957         if test -z "$with_jdk_home"; then
7958             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7959             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7960             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7961             if test -n "$regvalue"; then
7962                 ver=$regvalue
7963                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7964                 reg_jdk_home=$regvalue
7965             fi
7967             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7968                 with_jdk_home="$reg_jdk_home"
7969                 howfound="found automatically"
7970             else
7971                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7972             fi
7973         else
7974             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7975             howfound="you passed"
7976         fi
7977     fi
7979     # 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.
7980     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
7981     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
7982         with_jdk_home=`/usr/libexec/java_home`
7983     fi
7985     JAVA_HOME=; export JAVA_HOME
7986     if test -z "$with_jdk_home"; then
7987         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
7988     else
7989         _java_path="$with_jdk_home/bin/$with_java"
7990         dnl Check if there is a Java interpreter at all.
7991         if test -x "$_java_path"; then
7992             JAVAINTERPRETER=$_java_path
7993         else
7994             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
7995         fi
7996     fi
7998     dnl Check that the JDK found is correct architecture (at least 2 reasons to
7999     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8000     dnl loaded by java to run JunitTests:
8001     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8002         shortjdkhome=`cygpath -d "$with_jdk_home"`
8003         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
8004             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8005             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8006         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
8007             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8008             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8009         fi
8011         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8012             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8013         fi
8014         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8015     elif test "$cross_compiling" != "yes"; then
8016         case $CPUNAME in
8017             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8018                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8019                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8020                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8021                 fi
8022                 ;;
8023             *) # assumption: everything else 32-bit
8024                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8025                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8026                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8027                 fi
8028                 ;;
8029         esac
8030     fi
8033 dnl ===================================================================
8034 dnl Checks for JDK.
8035 dnl ===================================================================
8037 # Whether all the complexity here actually is needed any more or not, no idea.
8039 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8040     _gij_longver=0
8041     AC_MSG_CHECKING([the installed JDK])
8042     if test -n "$JAVAINTERPRETER"; then
8043         dnl java -version sends output to stderr!
8044         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8045             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8046         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8047             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8048         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8049             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8050         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8051             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8052         else
8053             JDK=sun
8055             dnl Sun JDK specific tests
8056             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8057             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8059             if test "$_jdk_ver" -lt 10900; then
8060                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8061             fi
8062             if test "$_jdk_ver" -gt 10900; then
8063                 JAVA_CLASSPATH_NOT_SET=TRUE
8064             fi
8066             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8067             if test "$_os" = "WINNT"; then
8068                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8069             fi
8070             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8072             # set to limit VM usage for JunitTests
8073             JAVAIFLAGS=-Xmx64M
8074             # set to limit VM usage for javac
8075             JAVACFLAGS=-J-Xmx128M
8076         fi
8077     else
8078         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8079     fi
8080 else
8081     if test -z "$ENABLE_JAVA"; then
8082         dnl Java disabled
8083         JAVA_HOME=
8084         export JAVA_HOME
8085     elif test "$cross_compiling" = "yes"; then
8086         # Just assume compatibility of build and host JDK
8087         JDK=$JDK_FOR_BUILD
8088         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8089     fi
8092 dnl ===================================================================
8093 dnl Checks for javac
8094 dnl ===================================================================
8095 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8096     javacompiler="javac"
8097     : ${JAVA_SOURCE_VER=8}
8098     : ${JAVA_TARGET_VER=8}
8099     if test -z "$with_jdk_home"; then
8100         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8101     else
8102         _javac_path="$with_jdk_home/bin/$javacompiler"
8103         dnl Check if there is a Java compiler at all.
8104         if test -x "$_javac_path"; then
8105             JAVACOMPILER=$_javac_path
8106         fi
8107     fi
8108     if test -z "$JAVACOMPILER"; then
8109         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8110     fi
8111     if test "$build_os" = "cygwin"; then
8112         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8113             JAVACOMPILER="${JAVACOMPILER}.exe"
8114         fi
8115         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8116     fi
8119 dnl ===================================================================
8120 dnl Checks for javadoc
8121 dnl ===================================================================
8122 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8123     if test -z "$with_jdk_home"; then
8124         AC_PATH_PROG(JAVADOC, javadoc)
8125     else
8126         _javadoc_path="$with_jdk_home/bin/javadoc"
8127         dnl Check if there is a javadoc at all.
8128         if test -x "$_javadoc_path"; then
8129             JAVADOC=$_javadoc_path
8130         else
8131             AC_PATH_PROG(JAVADOC, javadoc)
8132         fi
8133     fi
8134     if test -z "$JAVADOC"; then
8135         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8136     fi
8137     if test "$build_os" = "cygwin"; then
8138         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8139             JAVADOC="${JAVADOC}.exe"
8140         fi
8141         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8142     fi
8144     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8145     JAVADOCISGJDOC="yes"
8146     fi
8148 AC_SUBST(JAVADOC)
8149 AC_SUBST(JAVADOCISGJDOC)
8151 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8152     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8153     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8154         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8155            # try to recover first by looking whether we have an alternative
8156            # system as in Debian or newer SuSEs where following /usr/bin/javac
8157            # over /etc/alternatives/javac leads to the right bindir where we
8158            # just need to strip a bit away to get a valid JAVA_HOME
8159            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8160         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8161             # maybe only one level of symlink (e.g. on Mac)
8162             JAVA_HOME=$(readlink $JAVACOMPILER)
8163             if test "$(dirname $JAVA_HOME)" = "."; then
8164                 # we've got no path to trim back
8165                 JAVA_HOME=""
8166             fi
8167         else
8168             # else warn
8169             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8170             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8171             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8172             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8173         fi
8174         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8175         if test "$JAVA_HOME" != "/usr"; then
8176             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8177                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8178                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8179                 dnl Tiger already returns a JDK path...
8180                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8181             else
8182                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8183                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8184                 dnl that checks which version to run
8185                 if test -f "$JAVA_HOME"; then
8186                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8187                 fi
8188             fi
8189         fi
8190     fi
8191     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8193     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8194     if test -z "$JAVA_HOME"; then
8195         if test "x$with_jdk_home" = "x"; then
8196             cat > findhome.java <<_ACEOF
8197 [import java.io.File;
8199 class findhome
8201     public static void main(String args[])
8202     {
8203         String jrelocation = System.getProperty("java.home");
8204         File jre = new File(jrelocation);
8205         System.out.println(jre.getParent());
8206     }
8208 _ACEOF
8209             AC_MSG_CHECKING([if javac works])
8210             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8211             AC_TRY_EVAL(javac_cmd)
8212             if test $? = 0 -a -f ./findhome.class; then
8213                 AC_MSG_RESULT([javac works])
8214             else
8215                 echo "configure: javac test failed" >&5
8216                 cat findhome.java >&5
8217                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8218             fi
8219             AC_MSG_CHECKING([if gij knows its java.home])
8220             JAVA_HOME=`$JAVAINTERPRETER findhome`
8221             if test $? = 0 -a "$JAVA_HOME" != ""; then
8222                 AC_MSG_RESULT([$JAVA_HOME])
8223             else
8224                 echo "configure: java test failed" >&5
8225                 cat findhome.java >&5
8226                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8227             fi
8228             # clean-up after ourselves
8229             rm -f ./findhome.java ./findhome.class
8230         else
8231             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8232         fi
8233     fi
8235     # now check if $JAVA_HOME is really valid
8236     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8237         case "${JAVA_HOME}" in
8238             /Library/Java/JavaVirtualMachines/*)
8239                 ;;
8240             *)
8241                 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8242                 ;;
8243         esac
8244         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8245             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8246             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8247             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8248             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8249             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8250             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8251         fi
8252     fi
8253     PathFormat "$JAVA_HOME"
8254     JAVA_HOME="$formatted_path"
8257 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8258     "$_os" != Darwin
8259 then
8260     AC_MSG_CHECKING([for JAWT lib])
8261     if test "$_os" = WINNT; then
8262         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8263         JAWTLIB=jawt.lib
8264     else
8265         case "$host_cpu" in
8266         arm*)
8267             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8268             JAVA_ARCH=$my_java_arch
8269             ;;
8270         i*86)
8271             my_java_arch=i386
8272             ;;
8273         m68k)
8274             my_java_arch=m68k
8275             ;;
8276         powerpc)
8277             my_java_arch=ppc
8278             ;;
8279         powerpc64)
8280             my_java_arch=ppc64
8281             ;;
8282         powerpc64le)
8283             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8284             JAVA_ARCH=$my_java_arch
8285             ;;
8286         sparc64)
8287             my_java_arch=sparcv9
8288             ;;
8289         x86_64)
8290             my_java_arch=amd64
8291             ;;
8292         *)
8293             my_java_arch=$host_cpu
8294             ;;
8295         esac
8296         # This is where JDK9 puts the library
8297         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8298             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8299         else
8300             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8301         fi
8302         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8303     fi
8304     AC_MSG_RESULT([$JAWTLIB])
8306 AC_SUBST(JAWTLIB)
8308 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8309     case "$host_os" in
8311     aix*)
8312         JAVAINC="-I$JAVA_HOME/include"
8313         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8314         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8315         ;;
8317     cygwin*|wsl*)
8318         JAVAINC="-I$JAVA_HOME/include/win32"
8319         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8320         ;;
8322     darwin*)
8323         if test -d "$JAVA_HOME/include/darwin"; then
8324             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8325         else
8326             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8327         fi
8328         ;;
8330     dragonfly*)
8331         JAVAINC="-I$JAVA_HOME/include"
8332         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8333         ;;
8335     freebsd*)
8336         JAVAINC="-I$JAVA_HOME/include"
8337         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8338         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8339         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8340         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8341         ;;
8343     k*bsd*-gnu*)
8344         JAVAINC="-I$JAVA_HOME/include"
8345         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8346         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8347         ;;
8349     linux-gnu*)
8350         JAVAINC="-I$JAVA_HOME/include"
8351         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8352         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8353         ;;
8355     *netbsd*)
8356         JAVAINC="-I$JAVA_HOME/include"
8357         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8358         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8359        ;;
8361     openbsd*)
8362         JAVAINC="-I$JAVA_HOME/include"
8363         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8364         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8365         ;;
8367     solaris*)
8368         JAVAINC="-I$JAVA_HOME/include"
8369         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8370         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8371         ;;
8372     esac
8374 SOLARINC="$SOLARINC $JAVAINC"
8376 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8377     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8378     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8379     JDK_FOR_BUILD=$JDK
8382 AC_SUBST(JAVACFLAGS)
8383 AC_SUBST(JAVACOMPILER)
8384 AC_SUBST(JAVAINTERPRETER)
8385 AC_SUBST(JAVAIFLAGS)
8386 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8387 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8388 AC_SUBST(JAVA_HOME)
8389 AC_SUBST(JAVA_HOME_FOR_BUILD)
8390 AC_SUBST(JDK)
8391 AC_SUBST(JDK_FOR_BUILD)
8392 AC_SUBST(JAVA_SOURCE_VER)
8393 AC_SUBST(JAVA_TARGET_VER)
8396 dnl ===================================================================
8397 dnl Export file validation
8398 dnl ===================================================================
8399 AC_MSG_CHECKING([whether to enable export file validation])
8400 if test "$with_export_validation" != "no"; then
8401     if test -z "$ENABLE_JAVA"; then
8402         if test "$with_export_validation" = "yes"; then
8403             AC_MSG_ERROR([requested, but Java is disabled])
8404         else
8405             AC_MSG_RESULT([no, as Java is disabled])
8406         fi
8407     elif ! test -d "${SRC_ROOT}/schema"; then
8408         if test "$with_export_validation" = "yes"; then
8409             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8410         else
8411             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8412         fi
8413     else
8414         AC_MSG_RESULT([yes])
8415         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8417         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8418         if test -z "$ODFVALIDATOR"; then
8419             # remember to download the ODF toolkit with validator later
8420             AC_MSG_NOTICE([no odfvalidator found, will download it])
8421             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8422             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8424             # and fetch name of odfvalidator jar name from download.lst
8425             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8426             AC_SUBST(ODFVALIDATOR_JAR)
8428             if test -z "$ODFVALIDATOR_JAR"; then
8429                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8430             fi
8431         fi
8432         if test "$build_os" = "cygwin"; then
8433             # In case of Cygwin it will be executed from Windows,
8434             # so we need to run bash and absolute path to validator
8435             # so instead of "odfvalidator" it will be
8436             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8437             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8438         else
8439             ODFVALIDATOR="sh $ODFVALIDATOR"
8440         fi
8441         AC_SUBST(ODFVALIDATOR)
8444         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8445         if test -z "$OFFICEOTRON"; then
8446             # remember to download the officeotron with validator later
8447             AC_MSG_NOTICE([no officeotron found, will download it])
8448             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8449             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8451             # and fetch name of officeotron jar name from download.lst
8452             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8453             AC_SUBST(OFFICEOTRON_JAR)
8455             if test -z "$OFFICEOTRON_JAR"; then
8456                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8457             fi
8458         else
8459             # check version of existing officeotron
8460             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8461             if test 0"$OFFICEOTRON_VER" -lt 704; then
8462                 AC_MSG_ERROR([officeotron too old])
8463             fi
8464         fi
8465         if test "$build_os" = "cygwin"; then
8466             # In case of Cygwin it will be executed from Windows,
8467             # so we need to run bash and absolute path to validator
8468             # so instead of "odfvalidator" it will be
8469             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8470             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8471         else
8472             OFFICEOTRON="sh $OFFICEOTRON"
8473         fi
8474     fi
8475     AC_SUBST(OFFICEOTRON)
8476 else
8477     AC_MSG_RESULT([no])
8480 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8481 if test "$with_bffvalidator" != "no"; then
8482     AC_DEFINE(HAVE_BFFVALIDATOR)
8484     if test "$with_export_validation" = "no"; then
8485         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8486     fi
8488     if test "$with_bffvalidator" = "yes"; then
8489         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8490     else
8491         BFFVALIDATOR="$with_bffvalidator"
8492     fi
8494     if test "$build_os" = "cygwin"; then
8495         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8496             AC_MSG_RESULT($BFFVALIDATOR)
8497         else
8498             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8499         fi
8500     elif test -n "$BFFVALIDATOR"; then
8501         # We are not in Cygwin but need to run Windows binary with wine
8502         AC_PATH_PROGS(WINE, wine)
8504         # so swap in a shell wrapper that converts paths transparently
8505         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8506         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8507         AC_SUBST(BFFVALIDATOR_EXE)
8508         AC_MSG_RESULT($BFFVALIDATOR)
8509     else
8510         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8511     fi
8512     AC_SUBST(BFFVALIDATOR)
8513 else
8514     AC_MSG_RESULT([no])
8517 dnl ===================================================================
8518 dnl Check for C preprocessor to use
8519 dnl ===================================================================
8520 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8521 if test -n "$with_idlc_cpp"; then
8522     AC_MSG_RESULT([$with_idlc_cpp])
8523     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8524 else
8525     AC_MSG_RESULT([ucpp])
8526     AC_MSG_CHECKING([which ucpp tp use])
8527     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8528         AC_MSG_RESULT([external])
8529         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8530     else
8531         AC_MSG_RESULT([internal])
8532         BUILD_TYPE="$BUILD_TYPE UCPP"
8533     fi
8535 AC_SUBST(SYSTEM_UCPP)
8537 dnl ===================================================================
8538 dnl Check for epm (not needed for Windows)
8539 dnl ===================================================================
8540 AC_MSG_CHECKING([whether to enable EPM for packing])
8541 if test "$enable_epm" = "yes"; then
8542     AC_MSG_RESULT([yes])
8543     if test "$_os" != "WINNT"; then
8544         if test $_os = Darwin; then
8545             EPM=internal
8546         elif test -n "$with_epm"; then
8547             EPM=$with_epm
8548         else
8549             AC_PATH_PROG(EPM, epm, no)
8550         fi
8551         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8552             AC_MSG_NOTICE([EPM will be built.])
8553             BUILD_TYPE="$BUILD_TYPE EPM"
8554             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8555         else
8556             # Gentoo has some epm which is something different...
8557             AC_MSG_CHECKING([whether the found epm is the right epm])
8558             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8559                 AC_MSG_RESULT([yes])
8560             else
8561                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8562             fi
8563             AC_MSG_CHECKING([epm version])
8564             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8565             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8566                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8567                 AC_MSG_RESULT([OK, >= 3.7])
8568             else
8569                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8570                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8571             fi
8572         fi
8573     fi
8575     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8576         AC_MSG_CHECKING([for rpm])
8577         for a in "$RPM" rpmbuild rpm; do
8578             $a --usage >/dev/null 2> /dev/null
8579             if test $? -eq 0; then
8580                 RPM=$a
8581                 break
8582             else
8583                 $a --version >/dev/null 2> /dev/null
8584                 if test $? -eq 0; then
8585                     RPM=$a
8586                     break
8587                 fi
8588             fi
8589         done
8590         if test -z "$RPM"; then
8591             AC_MSG_ERROR([not found])
8592         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8593             RPM_PATH=`which $RPM`
8594             AC_MSG_RESULT([$RPM_PATH])
8595             SCPDEFS="$SCPDEFS -DWITH_RPM"
8596         else
8597             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8598         fi
8599     fi
8600     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8601         AC_PATH_PROG(DPKG, dpkg, no)
8602         if test "$DPKG" = "no"; then
8603             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8604         fi
8605     fi
8606     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8607        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8608         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8609             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8610                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8611                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8612                     AC_MSG_RESULT([yes])
8613                 else
8614                     AC_MSG_RESULT([no])
8615                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8616                         _pt="rpm"
8617                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8618                         add_warning "the rpms will need to be installed with --nodeps"
8619                     else
8620                         _pt="pkg"
8621                     fi
8622                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8623                     add_warning "the ${_pt}s will not be relocatable"
8624                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8625                                  relocation will work, you need to patch your epm with the
8626                                  patch in epm/epm-3.7.patch or build with
8627                                  --with-epm=internal which will build a suitable epm])
8628                 fi
8629             fi
8630         fi
8631     fi
8632     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8633         AC_PATH_PROG(PKGMK, pkgmk, no)
8634         if test "$PKGMK" = "no"; then
8635             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8636         fi
8637     fi
8638     AC_SUBST(RPM)
8639     AC_SUBST(DPKG)
8640     AC_SUBST(PKGMK)
8641 else
8642     for i in $PKGFORMAT; do
8643         case "$i" in
8644         aix | bsd | deb | pkg | rpm | native | portable)
8645             AC_MSG_ERROR(
8646                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8647             ;;
8648         esac
8649     done
8650     AC_MSG_RESULT([no])
8651     EPM=NO
8653 AC_SUBST(EPM)
8655 ENABLE_LWP=
8656 if test "$enable_lotuswordpro" = "yes"; then
8657     ENABLE_LWP="TRUE"
8659 AC_SUBST(ENABLE_LWP)
8661 dnl ===================================================================
8662 dnl Check for building ODK
8663 dnl ===================================================================
8664 if test "$enable_odk" = no; then
8665     unset DOXYGEN
8666 else
8667     if test "$with_doxygen" = no; then
8668         AC_MSG_CHECKING([for doxygen])
8669         unset DOXYGEN
8670         AC_MSG_RESULT([no])
8671     else
8672         if test "$with_doxygen" = yes; then
8673             AC_PATH_PROG([DOXYGEN], [doxygen])
8674             if test -z "$DOXYGEN"; then
8675                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8676             fi
8677             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8678                 if ! dot -V 2>/dev/null; then
8679                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8680                 fi
8681             fi
8682         else
8683             AC_MSG_CHECKING([for doxygen])
8684             DOXYGEN=$with_doxygen
8685             AC_MSG_RESULT([$DOXYGEN])
8686         fi
8687         if test -n "$DOXYGEN"; then
8688             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8689             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8690             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8691                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8692             fi
8693         fi
8694     fi
8696 AC_SUBST([DOXYGEN])
8698 AC_MSG_CHECKING([whether to build the ODK])
8699 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8700     AC_MSG_RESULT([yes])
8701     BUILD_TYPE="$BUILD_TYPE ODK"
8702 else
8703     AC_MSG_RESULT([no])
8706 dnl ===================================================================
8707 dnl Check for system zlib
8708 dnl ===================================================================
8709 if test "$with_system_zlib" = "auto"; then
8710     case "$_os" in
8711     WINNT)
8712         with_system_zlib="$with_system_libs"
8713         ;;
8714     *)
8715         if test "$enable_fuzzers" != "yes"; then
8716             with_system_zlib=yes
8717         else
8718             with_system_zlib=no
8719         fi
8720         ;;
8721     esac
8724 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8725 dnl and has no pkg-config for it at least on some tinderboxes,
8726 dnl so leaving that out for now
8727 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8728 AC_MSG_CHECKING([which zlib to use])
8729 if test "$with_system_zlib" = "yes"; then
8730     AC_MSG_RESULT([external])
8731     SYSTEM_ZLIB=TRUE
8732     AC_CHECK_HEADER(zlib.h, [],
8733         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8734     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8735         [AC_MSG_ERROR(zlib not found or functional)], [])
8736 else
8737     AC_MSG_RESULT([internal])
8738     SYSTEM_ZLIB=
8739     BUILD_TYPE="$BUILD_TYPE ZLIB"
8740     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8741     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8743 AC_SUBST(ZLIB_CFLAGS)
8744 AC_SUBST(ZLIB_LIBS)
8745 AC_SUBST(SYSTEM_ZLIB)
8747 dnl ===================================================================
8748 dnl Check for system jpeg
8749 dnl ===================================================================
8750 AC_MSG_CHECKING([which libjpeg to use])
8751 if test "$with_system_jpeg" = "yes"; then
8752     AC_MSG_RESULT([external])
8753     SYSTEM_LIBJPEG=TRUE
8754     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8755         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8756     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8757         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8758 else
8759     SYSTEM_LIBJPEG=
8760     AC_MSG_RESULT([internal, libjpeg-turbo])
8761     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8762     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8763     if test "$COM" = "MSC"; then
8764         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8765     else
8766         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8767     fi
8769     case "$host_cpu" in
8770     x86_64 | amd64 | i*86 | x86 | ia32)
8771         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8772         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8773             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8774                 NASM="$LODE_HOME/opt/bin/nasm"
8775             elif test -x "/opt/lo/bin/nasm"; then
8776                 NASM="/opt/lo/bin/nasm"
8777             fi
8778         fi
8780         if test -n "$NASM"; then
8781             AC_MSG_CHECKING([for object file format of host system])
8782             case "$host_os" in
8783               cygwin* | mingw* | pw32* | wsl*)
8784                 case "$host_cpu" in
8785                   x86_64)
8786                     objfmt='Win64-COFF'
8787                     ;;
8788                   *)
8789                     objfmt='Win32-COFF'
8790                     ;;
8791                 esac
8792               ;;
8793               msdosdjgpp* | go32*)
8794                 objfmt='COFF'
8795               ;;
8796               os2-emx*) # not tested
8797                 objfmt='MSOMF' # obj
8798               ;;
8799               linux*coff* | linux*oldld*)
8800                 objfmt='COFF' # ???
8801               ;;
8802               linux*aout*)
8803                 objfmt='a.out'
8804               ;;
8805               linux*)
8806                 case "$host_cpu" in
8807                   x86_64)
8808                     objfmt='ELF64'
8809                     ;;
8810                   *)
8811                     objfmt='ELF'
8812                     ;;
8813                 esac
8814               ;;
8815               kfreebsd* | freebsd* | netbsd* | openbsd*)
8816                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8817                   objfmt='BSD-a.out'
8818                 else
8819                   case "$host_cpu" in
8820                     x86_64 | amd64)
8821                       objfmt='ELF64'
8822                       ;;
8823                     *)
8824                       objfmt='ELF'
8825                       ;;
8826                   esac
8827                 fi
8828               ;;
8829               solaris* | sunos* | sysv* | sco*)
8830                 case "$host_cpu" in
8831                   x86_64)
8832                     objfmt='ELF64'
8833                     ;;
8834                   *)
8835                     objfmt='ELF'
8836                     ;;
8837                 esac
8838               ;;
8839               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8840                 case "$host_cpu" in
8841                   x86_64)
8842                     objfmt='Mach-O64'
8843                     ;;
8844                   *)
8845                     objfmt='Mach-O'
8846                     ;;
8847                 esac
8848               ;;
8849               *)
8850                 objfmt='ELF ?'
8851               ;;
8852             esac
8854             AC_MSG_RESULT([$objfmt])
8855             if test "$objfmt" = 'ELF ?'; then
8856               objfmt='ELF'
8857               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8858             fi
8860             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8861             case "$objfmt" in
8862               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8863               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8864               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8865               COFF)       NAFLAGS='-fcoff -DCOFF';;
8866               a.out)      NAFLAGS='-faout -DAOUT';;
8867               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8868               ELF)        NAFLAGS='-felf -DELF';;
8869               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8870               RDF)        NAFLAGS='-frdf -DRDF';;
8871               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8872               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8873             esac
8874             AC_MSG_RESULT([$NAFLAGS])
8876             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8877             cat > conftest.asm << EOF
8878             [%line __oline__ "configure"
8879                     section .text
8880                     global  _main,main
8881             _main:
8882             main:   xor     eax,eax
8883                     ret
8884             ]
8886             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8887             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8888               AC_MSG_RESULT(yes)
8889             else
8890               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8891               cat conftest.asm >&AS_MESSAGE_LOG_FD
8892               rm -rf conftest*
8893               AC_MSG_RESULT(no)
8894               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8895               NASM=""
8896             fi
8898         fi
8900         if test -z "$NASM"; then
8901 cat << _EOS
8902 ****************************************************************************
8903 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8904 To get one please:
8906 _EOS
8907             if test "$build_os" = "cygwin"; then
8908 cat << _EOS
8909 install a pre-compiled binary for Win32
8911 mkdir -p /opt/lo/bin
8912 cd /opt/lo/bin
8913 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8914 chmod +x nasm
8916 or get and install one from http://www.nasm.us/
8918 Then re-run autogen.sh
8920 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8921 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8923 _EOS
8924             else
8925 cat << _EOS
8926 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8928 _EOS
8929             fi
8930             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8931             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8932         fi
8933       ;;
8934     esac
8937 AC_SUBST(NASM)
8938 AC_SUBST(LIBJPEG_CFLAGS)
8939 AC_SUBST(LIBJPEG_LIBS)
8940 AC_SUBST(SYSTEM_LIBJPEG)
8942 dnl ===================================================================
8943 dnl Check for system clucene
8944 dnl ===================================================================
8945 dnl we should rather be using
8946 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8947 dnl but the contribs-lib check seems tricky
8948 AC_MSG_CHECKING([which clucene to use])
8949 if test "$with_system_clucene" = "yes"; then
8950     AC_MSG_RESULT([external])
8951     SYSTEM_CLUCENE=TRUE
8952     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8953     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8954     FilterLibs "${CLUCENE_LIBS}"
8955     CLUCENE_LIBS="${filteredlibs}"
8956     AC_LANG_PUSH([C++])
8957     save_CXXFLAGS=$CXXFLAGS
8958     save_CPPFLAGS=$CPPFLAGS
8959     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8960     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8961     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8962     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8963     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8964                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8965     CXXFLAGS=$save_CXXFLAGS
8966     CPPFLAGS=$save_CPPFLAGS
8967     AC_LANG_POP([C++])
8969     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8970 else
8971     AC_MSG_RESULT([internal])
8972     SYSTEM_CLUCENE=
8973     BUILD_TYPE="$BUILD_TYPE CLUCENE"
8975 AC_SUBST(SYSTEM_CLUCENE)
8976 AC_SUBST(CLUCENE_CFLAGS)
8977 AC_SUBST(CLUCENE_LIBS)
8979 dnl ===================================================================
8980 dnl Check for system expat
8981 dnl ===================================================================
8982 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8984 dnl ===================================================================
8985 dnl Check for system xmlsec
8986 dnl ===================================================================
8987 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
8989 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
8990 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
8991     ENABLE_EOT="TRUE"
8992     AC_DEFINE([ENABLE_EOT])
8993     AC_MSG_RESULT([yes])
8995     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
8996 else
8997     ENABLE_EOT=
8998     AC_MSG_RESULT([no])
9000 AC_SUBST([ENABLE_EOT])
9002 dnl ===================================================================
9003 dnl Check for DLP libs
9004 dnl ===================================================================
9005 AS_IF([test "$COM" = "MSC"],
9006       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9007       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9009 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9011 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9013 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9015 AS_IF([test "$COM" = "MSC"],
9016       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9017       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9019 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9021 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9023 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9024 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9026 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9028 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9030 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9032 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9033 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9035 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9036 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9038 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9040 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9041 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9043 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9045 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9047 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9049 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9051 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9052 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9054 dnl ===================================================================
9055 dnl Check for system lcms2
9056 dnl ===================================================================
9057 if test "$with_system_lcms2" != "yes"; then
9058     SYSTEM_LCMS2=
9060 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9061 if test "$GCC" = "yes"; then
9062     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9064 if test "$COM" = "MSC"; then # override the above
9065     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9068 dnl ===================================================================
9069 dnl Check for system cppunit
9070 dnl ===================================================================
9071 if test "$_os" != "Android" ; then
9072     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9075 dnl ===================================================================
9076 dnl Check whether freetype is available
9077 dnl ===================================================================
9078 if test  "$test_freetype" = "yes"; then
9079     AC_MSG_CHECKING([whether freetype is available])
9080     # FreeType has 3 different kinds of versions
9081     # * release, like 2.4.10
9082     # * libtool, like 13.0.7 (this what pkg-config returns)
9083     # * soname
9084     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9085     #
9086     # 9.9.3 is 2.2.0
9087     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9088     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9089     FilterLibs "${FREETYPE_LIBS}"
9090     FREETYPE_LIBS="${filteredlibs}"
9091     SYSTEM_FREETYPE=TRUE
9092 else
9093     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9094     if test "x$ac_config_site_64bit_host" = xYES; then
9095         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9096     else
9097         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9098     fi
9100 AC_SUBST(FREETYPE_CFLAGS)
9101 AC_SUBST(FREETYPE_LIBS)
9102 AC_SUBST([SYSTEM_FREETYPE])
9104 # ===================================================================
9105 # Check for system libxslt
9106 # to prevent incompatibilities between internal libxml2 and external libxslt,
9107 # or vice versa, use with_system_libxml here
9108 # ===================================================================
9109 if test "$with_system_libxml" = "auto"; then
9110     case "$_os" in
9111     WINNT|iOS|Android)
9112         with_system_libxml="$with_system_libs"
9113         ;;
9114     *)
9115         if test "$enable_fuzzers" != "yes"; then
9116             with_system_libxml=yes
9117         else
9118             with_system_libxml=no
9119         fi
9120         ;;
9121     esac
9124 AC_MSG_CHECKING([which libxslt to use])
9125 if test "$with_system_libxml" = "yes"; then
9126     AC_MSG_RESULT([external])
9127     SYSTEM_LIBXSLT=TRUE
9128     if test "$_os" = "Darwin"; then
9129         dnl make sure to use SDK path
9130         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9131         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9132         dnl omit -L/usr/lib
9133         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9134         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9135     else
9136         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9137         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9138         FilterLibs "${LIBXSLT_LIBS}"
9139         LIBXSLT_LIBS="${filteredlibs}"
9140         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9141         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9142         FilterLibs "${LIBEXSLT_LIBS}"
9143         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9144     fi
9146     dnl Check for xsltproc
9147     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9148     if test "$XSLTPROC" = "no"; then
9149         AC_MSG_ERROR([xsltproc is required])
9150     fi
9151 else
9152     AC_MSG_RESULT([internal])
9153     SYSTEM_LIBXSLT=
9154     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9156 AC_SUBST(SYSTEM_LIBXSLT)
9157 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9158     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9160 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9162 AC_SUBST(LIBEXSLT_CFLAGS)
9163 AC_SUBST(LIBEXSLT_LIBS)
9164 AC_SUBST(LIBXSLT_CFLAGS)
9165 AC_SUBST(LIBXSLT_LIBS)
9166 AC_SUBST(XSLTPROC)
9168 # ===================================================================
9169 # Check for system libxml
9170 # ===================================================================
9171 AC_MSG_CHECKING([which libxml to use])
9172 if test "$with_system_libxml" = "yes"; then
9173     AC_MSG_RESULT([external])
9174     SYSTEM_LIBXML=TRUE
9175     if test "$_os" = "Darwin"; then
9176         dnl make sure to use SDK path
9177         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9178         dnl omit -L/usr/lib
9179         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9180     elif test $_os = iOS; then
9181         dnl make sure to use SDK path
9182         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9183         LIBXML_CFLAGS="-I$usr/include/libxml2"
9184         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9185     else
9186         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9187         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9188         FilterLibs "${LIBXML_LIBS}"
9189         LIBXML_LIBS="${filteredlibs}"
9190     fi
9192     dnl Check for xmllint
9193     AC_PATH_PROG(XMLLINT, xmllint, no)
9194     if test "$XMLLINT" = "no"; then
9195         AC_MSG_ERROR([xmllint is required])
9196     fi
9197 else
9198     AC_MSG_RESULT([internal])
9199     SYSTEM_LIBXML=
9200     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9201     if test "$COM" = "MSC"; then
9202         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9203     fi
9204     if test "$COM" = "MSC"; then
9205         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9206     else
9207         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9208         if test "$_os" = Android; then
9209             LIBXML_LIBS="$LIBXML_LIBS -lm"
9210         fi
9211     fi
9212     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9214 AC_SUBST(SYSTEM_LIBXML)
9215 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9216     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9218 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9219 AC_SUBST(LIBXML_CFLAGS)
9220 AC_SUBST(LIBXML_LIBS)
9221 AC_SUBST(XMLLINT)
9223 # =====================================================================
9224 # Checking for a Python interpreter with version >= 3.3.
9225 # Optionally user can pass an option to configure, i. e.
9226 # ./configure PYTHON=/usr/bin/python
9227 # =====================================================================
9228 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9229     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9230     enable_python=internal
9232 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9233     if test -n "$PYTHON"; then
9234         PYTHON_FOR_BUILD=$PYTHON
9235     else
9236         # This allows a lack of system python with no error, we use internal one in that case.
9237         AM_PATH_PYTHON([3.3],, [:])
9238         # Clean PYTHON_VERSION checked below if cross-compiling
9239         PYTHON_VERSION=""
9240         if test "$PYTHON" != ":"; then
9241             PYTHON_FOR_BUILD=$PYTHON
9242         fi
9243     fi
9245 AC_SUBST(PYTHON_FOR_BUILD)
9247 # Checks for Python to use for Pyuno
9248 AC_MSG_CHECKING([which Python to use for Pyuno])
9249 case "$enable_python" in
9250 no|disable)
9251     if test -z $PYTHON_FOR_BUILD; then
9252         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9253         # requirement from the choice whether to include Python stuff in the installer, but why
9254         # bother?
9255         AC_MSG_ERROR([Python is required at build time.])
9256     fi
9257     enable_python=no
9258     AC_MSG_RESULT([none])
9259     ;;
9260 ""|yes|auto)
9261     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9262         AC_MSG_RESULT([no, overridden by --disable-scripting])
9263         enable_python=no
9264     elif test $build_os = cygwin; then
9265         dnl When building on Windows we don't attempt to use any installed
9266         dnl "system"  Python.
9267         AC_MSG_RESULT([fully internal])
9268         enable_python=internal
9269     elif test "$cross_compiling" = yes; then
9270         AC_MSG_RESULT([system])
9271         enable_python=system
9272     else
9273         # Unset variables set by the above AM_PATH_PYTHON so that
9274         # we actually do check anew.
9275         AC_MSG_RESULT([])
9276         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
9277         AM_PATH_PYTHON([3.3],, [:])
9278         AC_MSG_CHECKING([which Python to use for Pyuno])
9279         if test "$PYTHON" = ":"; then
9280             if test -z "$PYTHON_FOR_BUILD"; then
9281                 AC_MSG_RESULT([fully internal])
9282             else
9283                 AC_MSG_RESULT([internal])
9284             fi
9285             enable_python=internal
9286         else
9287             AC_MSG_RESULT([system])
9288             enable_python=system
9289         fi
9290     fi
9291     ;;
9292 internal)
9293     AC_MSG_RESULT([internal])
9294     ;;
9295 fully-internal)
9296     AC_MSG_RESULT([fully internal])
9297     enable_python=internal
9298     ;;
9299 system)
9300     AC_MSG_RESULT([system])
9301     if test "$_os" = Darwin; then
9302         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9303     fi
9304     ;;
9306     AC_MSG_ERROR([Incorrect --enable-python option])
9307     ;;
9308 esac
9310 if test $enable_python != no; then
9311     BUILD_TYPE="$BUILD_TYPE PYUNO"
9314 if test $enable_python = system; then
9315     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9316         # Fallback: Accept these in the environment, or as set above
9317         # for MacOSX.
9318         :
9319     elif test "$cross_compiling" != yes; then
9320         # Unset variables set by the above AM_PATH_PYTHON so that
9321         # we actually do check anew.
9322         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
9323         # This causes an error if no python command is found
9324         AM_PATH_PYTHON([3.3])
9325         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9326         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9327         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9328         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9329         if test -z "$PKG_CONFIG"; then
9330             PYTHON_CFLAGS="-I$python_include"
9331             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9332         elif $PKG_CONFIG --exists python-$python_version-embed; then
9333             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9334             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9335         elif $PKG_CONFIG --exists python-$python_version; then
9336             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9337             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9338         else
9339             PYTHON_CFLAGS="-I$python_include"
9340             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9341         fi
9342         FilterLibs "${PYTHON_LIBS}"
9343         PYTHON_LIBS="${filteredlibs}"
9344     else
9345         dnl How to find out the cross-compilation Python installation path?
9346         AC_MSG_CHECKING([for python version])
9347         AS_IF([test -n "$PYTHON_VERSION"],
9348               [AC_MSG_RESULT([$PYTHON_VERSION])],
9349               [AC_MSG_RESULT([not found])
9350                AC_MSG_ERROR([no usable python found])])
9351         test -n "$PYTHON_CFLAGS" && break
9352     fi
9354     dnl Check if the headers really work
9355     save_CPPFLAGS="$CPPFLAGS"
9356     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9357     AC_CHECK_HEADER(Python.h)
9358     CPPFLAGS="$save_CPPFLAGS"
9360     # let the PYTHON_FOR_BUILD match the same python installation that
9361     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9362     # better for PythonTests.
9363     PYTHON_FOR_BUILD=$PYTHON
9366 if test "$with_lxml" != no; then
9367     if test -z "$PYTHON_FOR_BUILD"; then
9368         case $build_os in
9369             cygwin)
9370                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9371                 ;;
9372             *)
9373                 if test "$cross_compiling" != yes ; then
9374                     BUILD_TYPE="$BUILD_TYPE LXML"
9375                 fi
9376                 ;;
9377         esac
9378     else
9379         AC_MSG_CHECKING([for python lxml])
9380         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9381             AC_MSG_RESULT([yes])
9382         else
9383             case $build_os in
9384                 cygwin)
9385                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9386                     ;;
9387                 *)
9388                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9389                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9390                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9391                         else
9392                             BUILD_TYPE="$BUILD_TYPE LXML"
9393                             AC_MSG_RESULT([no, using internal lxml])
9394                         fi
9395                     else
9396                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9397                     fi
9398                     ;;
9399             esac
9400         fi
9401     fi
9404 dnl By now enable_python should be "system", "internal" or "no"
9405 case $enable_python in
9406 system)
9407     SYSTEM_PYTHON=TRUE
9409     if test "x$ac_cv_header_Python_h" != "xyes"; then
9410        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9411     fi
9413     AC_LANG_PUSH(C)
9414     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9415     AC_MSG_CHECKING([for correct python library version])
9416        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9417 #include <Python.h>
9419 int main(int argc, char **argv) {
9420    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9421    else return 1;
9423        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9424     AC_LANG_POP(C)
9426     dnl FIXME Check if the Python library can be linked with, too?
9427     ;;
9429 internal)
9430     SYSTEM_PYTHON=
9431     PYTHON_VERSION_MAJOR=3
9432     PYTHON_VERSION_MINOR=8
9433     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9434     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9435         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9436     fi
9437     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9438     BUILD_TYPE="$BUILD_TYPE PYTHON"
9439     if test "$OS" = LINUX -o "$OS" = WNT ; then
9440         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9441     fi
9442     # Embedded Python dies without Home set
9443     if test "$HOME" = ""; then
9444         export HOME=""
9445     fi
9446     ;;
9448     DISABLE_PYTHON=TRUE
9449     SYSTEM_PYTHON=
9450     ;;
9452     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9453     ;;
9454 esac
9456 AC_SUBST(DISABLE_PYTHON)
9457 AC_SUBST(SYSTEM_PYTHON)
9458 AC_SUBST(PYTHON_CFLAGS)
9459 AC_SUBST(PYTHON_LIBS)
9460 AC_SUBST(PYTHON_VERSION)
9461 AC_SUBST(PYTHON_VERSION_MAJOR)
9462 AC_SUBST(PYTHON_VERSION_MINOR)
9464 ENABLE_MARIADBC=
9465 MARIADBC_MAJOR=1
9466 MARIADBC_MINOR=0
9467 MARIADBC_MICRO=2
9468 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9469 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9470     ENABLE_MARIADBC=TRUE
9471     AC_MSG_RESULT([yes])
9472     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9473 else
9474     AC_MSG_RESULT([no])
9476 AC_SUBST(ENABLE_MARIADBC)
9477 AC_SUBST(MARIADBC_MAJOR)
9478 AC_SUBST(MARIADBC_MINOR)
9479 AC_SUBST(MARIADBC_MICRO)
9481 if test "$ENABLE_MARIADBC" = "TRUE"; then
9482     dnl ===================================================================
9483     dnl Check for system MariaDB
9484     dnl ===================================================================
9485     AC_MSG_CHECKING([which MariaDB to use])
9486     if test "$with_system_mariadb" = "yes"; then
9487         AC_MSG_RESULT([external])
9488         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9489         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9490         if test -z "$MARIADBCONFIG"; then
9491             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9492             if test -z "$MARIADBCONFIG"; then
9493                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9494                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9495             fi
9496         fi
9497         AC_MSG_CHECKING([MariaDB version])
9498         MARIADB_VERSION=`$MARIADBCONFIG --version`
9499         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9500         if test "$MARIADB_MAJOR" -ge "5"; then
9501             AC_MSG_RESULT([OK])
9502         else
9503             AC_MSG_ERROR([too old, use 5.0.x or later])
9504         fi
9505         AC_MSG_CHECKING([for MariaDB Client library])
9506         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9507         if test "$COM_IS_CLANG" = TRUE; then
9508             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9509         fi
9510         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9511         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9512         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9513         dnl linux32:
9514         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9515             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9516             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9517                 | sed -e 's|/lib64/|/lib/|')
9518         fi
9519         FilterLibs "${MARIADB_LIBS}"
9520         MARIADB_LIBS="${filteredlibs}"
9521         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9522         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9523         if test "$enable_bundle_mariadb" = "yes"; then
9524             AC_MSG_RESULT([yes])
9525             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9526             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9528 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9530 /g' | grep -E '(mysqlclient|mariadb)')
9531             if test "$_os" = "Darwin"; then
9532                 LIBMARIADB=${LIBMARIADB}.dylib
9533             elif test "$_os" = "WINNT"; then
9534                 LIBMARIADB=${LIBMARIADB}.dll
9535             else
9536                 LIBMARIADB=${LIBMARIADB}.so
9537             fi
9538             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9539             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9540             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9541                 AC_MSG_RESULT([found.])
9542                 PathFormat "$LIBMARIADB_PATH"
9543                 LIBMARIADB_PATH="$formatted_path"
9544             else
9545                 AC_MSG_ERROR([not found.])
9546             fi
9547         else
9548             AC_MSG_RESULT([no])
9549             BUNDLE_MARIADB_CONNECTOR_C=
9550         fi
9551     else
9552         AC_MSG_RESULT([internal])
9553         SYSTEM_MARIADB_CONNECTOR_C=
9554         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9555         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9556         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9557     fi
9559     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9560     AC_SUBST(MARIADB_CFLAGS)
9561     AC_SUBST(MARIADB_LIBS)
9562     AC_SUBST(LIBMARIADB)
9563     AC_SUBST(LIBMARIADB_PATH)
9564     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9567 dnl ===================================================================
9568 dnl Check for system hsqldb
9569 dnl ===================================================================
9570 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9571     HSQLDB_USE_JDBC_4_1=
9572     AC_MSG_CHECKING([which hsqldb to use])
9573     if test "$with_system_hsqldb" = "yes"; then
9574         AC_MSG_RESULT([external])
9575         SYSTEM_HSQLDB=TRUE
9576         if test -z $HSQLDB_JAR; then
9577             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9578         fi
9579         if ! test -f $HSQLDB_JAR; then
9580                AC_MSG_ERROR(hsqldb.jar not found.)
9581         fi
9582         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9583         export HSQLDB_JAR
9584         if $PERL -e \
9585            'use Archive::Zip;
9586             my $file = "$ENV{'HSQLDB_JAR'}";
9587             my $zip = Archive::Zip->new( $file );
9588             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9589             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9590             {
9591                 push @l, split(/\n/, $mf);
9592                 foreach my $line (@l)
9593                 {
9594                     if ($line =~ m/Specification-Version:/)
9595                     {
9596                         ($t, $version) = split (/:/,$line);
9597                         $version =~ s/^\s//;
9598                         ($a, $b, $c, $d) = split (/\./,$version);
9599                         if ($c == "0" && $d > "8")
9600                         {
9601                             exit 0;
9602                         }
9603                         else
9604                         {
9605                             exit 1;
9606                         }
9607                     }
9608                 }
9609             }
9610             else
9611             {
9612                 exit 1;
9613             }'; then
9614             AC_MSG_RESULT([yes])
9615         else
9616             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9617         fi
9618     else
9619         AC_MSG_RESULT([internal])
9620         SYSTEM_HSQLDB=
9621         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9622         NEED_ANT=TRUE
9623         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9624         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9625         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9626             AC_MSG_RESULT([yes])
9627             HSQLDB_USE_JDBC_4_1=TRUE
9628         else
9629             AC_MSG_RESULT([no])
9630         fi
9631     fi
9632 else
9633     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9634         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9635     fi
9637 AC_SUBST(SYSTEM_HSQLDB)
9638 AC_SUBST(HSQLDB_JAR)
9639 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9641 dnl ===================================================================
9642 dnl Check for PostgreSQL stuff
9643 dnl ===================================================================
9644 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9645 if test "x$enable_postgresql_sdbc" != "xno"; then
9646     AC_MSG_RESULT([yes])
9647     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9649     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9650         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9651     fi
9652     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9653         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9654     fi
9656     postgres_interface=""
9657     if test "$with_system_postgresql" = "yes"; then
9658         postgres_interface="external PostgreSQL"
9659         SYSTEM_POSTGRESQL=TRUE
9660         if test "$_os" = Darwin; then
9661             supp_path=''
9662             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9663                 pg_supp_path="$P_SEP$d$pg_supp_path"
9664             done
9665         fi
9666         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9667         if test -n "$PGCONFIG"; then
9668             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9669             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9670         else
9671             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9672               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9673               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9674             ],[
9675               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9676             ])
9677         fi
9678         FilterLibs "${POSTGRESQL_LIB}"
9679         POSTGRESQL_LIB="${filteredlibs}"
9680     else
9681         # if/when anything else than PostgreSQL uses Kerberos,
9682         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9683         WITH_KRB5=
9684         WITH_GSSAPI=
9685         case "$_os" in
9686         Darwin)
9687             # macOS has system MIT Kerberos 5 since 10.4
9688             if test "$with_krb5" != "no"; then
9689                 WITH_KRB5=TRUE
9690                 save_LIBS=$LIBS
9691                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9692                 # that the libraries where these functions are located on macOS will change, is it?
9693                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9694                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9695                 KRB5_LIBS=$LIBS
9696                 LIBS=$save_LIBS
9697                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9698                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9699                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9700                 LIBS=$save_LIBS
9701             fi
9702             if test "$with_gssapi" != "no"; then
9703                 WITH_GSSAPI=TRUE
9704                 save_LIBS=$LIBS
9705                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9706                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9707                 GSSAPI_LIBS=$LIBS
9708                 LIBS=$save_LIBS
9709             fi
9710             ;;
9711         WINNT)
9712             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9713                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9714             fi
9715             ;;
9716         Linux|GNU|*BSD|DragonFly)
9717             if test "$with_krb5" != "no"; then
9718                 WITH_KRB5=TRUE
9719                 save_LIBS=$LIBS
9720                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9721                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9722                 KRB5_LIBS=$LIBS
9723                 LIBS=$save_LIBS
9724                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9725                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9726                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9727                 LIBS=$save_LIBS
9728             fi
9729             if test "$with_gssapi" != "no"; then
9730                 WITH_GSSAPI=TRUE
9731                 save_LIBS=$LIBS
9732                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9733                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9734                 GSSAPI_LIBS=$LIBS
9735                 LIBS=$save_LIBS
9736             fi
9737             ;;
9738         *)
9739             if test "$with_krb5" = "yes"; then
9740                 WITH_KRB5=TRUE
9741                 save_LIBS=$LIBS
9742                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9743                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9744                 KRB5_LIBS=$LIBS
9745                 LIBS=$save_LIBS
9746                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9747                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9748                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9749                 LIBS=$save_LIBS
9750             fi
9751             if test "$with_gssapi" = "yes"; then
9752                 WITH_GSSAPI=TRUE
9753                 save_LIBS=$LIBS
9754                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9755                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9756                 LIBS=$save_LIBS
9757                 GSSAPI_LIBS=$LIBS
9758             fi
9759         esac
9761         if test -n "$with_libpq_path"; then
9762             SYSTEM_POSTGRESQL=TRUE
9763             postgres_interface="external libpq"
9764             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9765             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9766         else
9767             SYSTEM_POSTGRESQL=
9768             postgres_interface="internal"
9769             POSTGRESQL_LIB=""
9770             POSTGRESQL_INC="%OVERRIDE_ME%"
9771             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9772         fi
9773     fi
9775     AC_MSG_CHECKING([PostgreSQL C interface])
9776     AC_MSG_RESULT([$postgres_interface])
9778     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9779         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9780         save_CFLAGS=$CFLAGS
9781         save_CPPFLAGS=$CPPFLAGS
9782         save_LIBS=$LIBS
9783         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9784         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9785         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9786         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9787             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9788         CFLAGS=$save_CFLAGS
9789         CPPFLAGS=$save_CPPFLAGS
9790         LIBS=$save_LIBS
9791     fi
9792     BUILD_POSTGRESQL_SDBC=TRUE
9793 else
9794     AC_MSG_RESULT([no])
9796 AC_SUBST(WITH_KRB5)
9797 AC_SUBST(WITH_GSSAPI)
9798 AC_SUBST(GSSAPI_LIBS)
9799 AC_SUBST(KRB5_LIBS)
9800 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9801 AC_SUBST(SYSTEM_POSTGRESQL)
9802 AC_SUBST(POSTGRESQL_INC)
9803 AC_SUBST(POSTGRESQL_LIB)
9805 dnl ===================================================================
9806 dnl Check for Firebird stuff
9807 dnl ===================================================================
9808 ENABLE_FIREBIRD_SDBC=
9809 if test "$enable_firebird_sdbc" = "yes" ; then
9810     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9812     dnl ===================================================================
9813     dnl Check for system Firebird
9814     dnl ===================================================================
9815     AC_MSG_CHECKING([which Firebird to use])
9816     if test "$with_system_firebird" = "yes"; then
9817         AC_MSG_RESULT([external])
9818         SYSTEM_FIREBIRD=TRUE
9819         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9820         if test -z "$FIREBIRDCONFIG"; then
9821             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9822             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9823                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9824             ])
9825             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9826         else
9827             AC_MSG_NOTICE([fb_config found])
9828             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9829             AC_MSG_CHECKING([for Firebird Client library])
9830             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9831             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9832             FilterLibs "${FIREBIRD_LIBS}"
9833             FIREBIRD_LIBS="${filteredlibs}"
9834         fi
9835         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9836         AC_MSG_CHECKING([Firebird version])
9837         if test -n "${FIREBIRD_VERSION}"; then
9838             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9839             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9840             if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9841                 AC_MSG_RESULT([OK])
9842             else
9843                 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9844             fi
9845         else
9846             save_CFLAGS="${CFLAGS}"
9847             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9848             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9849 #if defined(FB_API_VER) && FB_API_VER == 30
9850 int fb_api_is_30(void) { return 0; }
9851 #else
9852 #error "Wrong Firebird API version"
9853 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9854             CFLAGS="$save_CFLAGS"
9855         fi
9856         ENABLE_FIREBIRD_SDBC=TRUE
9857         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9858     elif test "$enable_database_connectivity" != yes; then
9859         AC_MSG_RESULT([none])
9860     elif test "$cross_compiling" = "yes"; then
9861         AC_MSG_RESULT([none])
9862     else
9863         dnl Embedded Firebird has version 3.0
9864         AC_DEFINE(HAVE_FIREBIRD_30, 1)
9865         dnl We need libatomic_ops for any non X86/X64 system
9866         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9867             dnl ===================================================================
9868             dnl Check for system libatomic_ops
9869             dnl ===================================================================
9870             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9871             if test "$with_system_libatomic_ops" = "yes"; then
9872                 SYSTEM_LIBATOMIC_OPS=TRUE
9873                 AC_CHECK_HEADERS(atomic_ops.h, [],
9874                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9875             else
9876                 SYSTEM_LIBATOMIC_OPS=
9877                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9878                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9879                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9880             fi
9881         fi
9883         AC_MSG_RESULT([internal])
9884         SYSTEM_FIREBIRD=
9885         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9886         FIREBIRD_LIBS="-lfbclient"
9888         if test "$with_system_libtommath" = "yes"; then
9889             SYSTEM_LIBTOMMATH=TRUE
9890             dnl check for tommath presence
9891             save_LIBS=$LIBS
9892             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9893             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9894             LIBS=$save_LIBS
9895         else
9896             SYSTEM_LIBTOMMATH=
9897             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9898             LIBTOMMATH_LIBS="-ltommath"
9899             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9900         fi
9902         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9903         ENABLE_FIREBIRD_SDBC=TRUE
9904         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9905     fi
9907 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9908 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9909 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9910 AC_SUBST(LIBATOMIC_OPS_LIBS)
9911 AC_SUBST(SYSTEM_FIREBIRD)
9912 AC_SUBST(FIREBIRD_CFLAGS)
9913 AC_SUBST(FIREBIRD_LIBS)
9914 AC_SUBST(SYSTEM_LIBTOMMATH)
9915 AC_SUBST(LIBTOMMATH_CFLAGS)
9916 AC_SUBST(LIBTOMMATH_LIBS)
9918 dnl ===================================================================
9919 dnl Check for system curl
9920 dnl ===================================================================
9921 AC_MSG_CHECKING([which libcurl to use])
9922 if test "$with_system_curl" = "auto"; then
9923     with_system_curl="$with_system_libs"
9926 if test "$with_system_curl" = "yes"; then
9927     AC_MSG_RESULT([external])
9928     SYSTEM_CURL=TRUE
9930     # First try PKGCONFIG and then fall back
9931     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9933     if test -n "$CURL_PKG_ERRORS"; then
9934         AC_PATH_PROG(CURLCONFIG, curl-config)
9935         if test -z "$CURLCONFIG"; then
9936             AC_MSG_ERROR([curl development files not found])
9937         fi
9938         CURL_LIBS=`$CURLCONFIG --libs`
9939         FilterLibs "${CURL_LIBS}"
9940         CURL_LIBS="${filteredlibs}"
9941         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9942         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9944         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9945         case $curl_version in
9946         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9947         dnl so they need to be doubled to end up in the configure script
9948         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9949             AC_MSG_RESULT([yes])
9950             ;;
9951         *)
9952             AC_MSG_ERROR([no, you have $curl_version])
9953             ;;
9954         esac
9955     fi
9957     ENABLE_CURL=TRUE
9958 else
9959     AC_MSG_RESULT([internal])
9960     SYSTEM_CURL=
9961     BUILD_TYPE="$BUILD_TYPE CURL"
9962     ENABLE_CURL=TRUE
9964 AC_SUBST(SYSTEM_CURL)
9965 AC_SUBST(CURL_CFLAGS)
9966 AC_SUBST(CURL_LIBS)
9967 AC_SUBST(ENABLE_CURL)
9969 dnl ===================================================================
9970 dnl Check for system boost
9971 dnl ===================================================================
9972 AC_MSG_CHECKING([which boost to use])
9973 if test "$with_system_boost" = "yes"; then
9974     AC_MSG_RESULT([external])
9975     SYSTEM_BOOST=TRUE
9976     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
9977     AX_BOOST_DATE_TIME
9978     AX_BOOST_FILESYSTEM
9979     AX_BOOST_IOSTREAMS
9980     AX_BOOST_LOCALE
9981     AC_LANG_PUSH([C++])
9982     save_CXXFLAGS=$CXXFLAGS
9983     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
9984     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
9985        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
9986     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
9987        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
9988     CXXFLAGS=$save_CXXFLAGS
9989     AC_LANG_POP([C++])
9990     # this is in m4/ax_boost_base.m4
9991     FilterLibs "${BOOST_LDFLAGS}"
9992     BOOST_LDFLAGS="${filteredlibs}"
9993 else
9994     AC_MSG_RESULT([internal])
9995     BUILD_TYPE="$BUILD_TYPE BOOST"
9996     SYSTEM_BOOST=
9997     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
9998         # use warning-suppressing wrapper headers
9999         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10000     else
10001         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10002     fi
10004 AC_SUBST(SYSTEM_BOOST)
10006 dnl ===================================================================
10007 dnl Check for system mdds
10008 dnl ===================================================================
10009 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10011 dnl ===================================================================
10012 dnl Check for system glm
10013 dnl ===================================================================
10014 AC_MSG_CHECKING([which glm to use])
10015 if test "$with_system_glm" = "yes"; then
10016     AC_MSG_RESULT([external])
10017     SYSTEM_GLM=TRUE
10018     AC_LANG_PUSH([C++])
10019     AC_CHECK_HEADER([glm/glm.hpp], [],
10020        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10021     AC_LANG_POP([C++])
10022 else
10023     AC_MSG_RESULT([internal])
10024     BUILD_TYPE="$BUILD_TYPE GLM"
10025     SYSTEM_GLM=
10026     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10028 AC_SUBST([GLM_CFLAGS])
10029 AC_SUBST([SYSTEM_GLM])
10031 dnl ===================================================================
10032 dnl Check for system odbc
10033 dnl ===================================================================
10034 AC_MSG_CHECKING([which odbc headers to use])
10035 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
10036     AC_MSG_RESULT([external])
10037     SYSTEM_ODBC_HEADERS=TRUE
10039     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10040         save_CPPFLAGS=$CPPFLAGS
10041         find_winsdk
10042         PathFormat "$winsdktest"
10043         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"
10044         AC_CHECK_HEADER(sqlext.h, [],
10045             [AC_MSG_ERROR(odbc not found. install odbc)],
10046             [#include <windows.h>])
10047         CPPFLAGS=$save_CPPFLAGS
10048     else
10049         AC_CHECK_HEADER(sqlext.h, [],
10050             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10051     fi
10052 elif test "$enable_database_connectivity" != yes; then
10053     AC_MSG_RESULT([none])
10054 else
10055     AC_MSG_RESULT([internal])
10056     SYSTEM_ODBC_HEADERS=
10058 AC_SUBST(SYSTEM_ODBC_HEADERS)
10060 dnl ===================================================================
10061 dnl Enable LDAP support
10062 dnl ===================================================================
10064 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10065 AC_MSG_CHECKING([whether to enable LDAP support])
10066     if test "$enable_ldap" != "yes"; then
10067         AC_MSG_RESULT([no])
10068         ENABLE_LDAP=""
10069         enable_ldap=no
10070     else
10071         AC_MSG_RESULT([yes])
10072         ENABLE_LDAP="TRUE"
10073     fi
10075 AC_SUBST(ENABLE_LDAP)
10077 dnl ===================================================================
10078 dnl Check for system openldap
10079 dnl ===================================================================
10081 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10082 AC_MSG_CHECKING([which openldap library to use])
10083 if test "$with_system_openldap" = "yes"; then
10084     AC_MSG_RESULT([external])
10085     SYSTEM_OPENLDAP=TRUE
10086     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10087     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10088     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10089 else
10090     AC_MSG_RESULT([internal])
10091     SYSTEM_OPENLDAP=
10092     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10095 AC_SUBST(SYSTEM_OPENLDAP)
10097 dnl ===================================================================
10098 dnl Check for system NSS
10099 dnl ===================================================================
10100 if test "$enable_fuzzers" != "yes"; then
10101     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10102     AC_DEFINE(HAVE_FEATURE_NSS)
10103     ENABLE_NSS="TRUE"
10104     AC_DEFINE(ENABLE_NSS)
10105 elif test $_os != iOS ; then
10106     with_tls=openssl
10108 AC_SUBST(ENABLE_NSS)
10110 dnl ===================================================================
10111 dnl Check for TLS/SSL and cryptographic implementation to use
10112 dnl ===================================================================
10113 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10114 if test -n "$with_tls"; then
10115     case $with_tls in
10116     openssl)
10117         AC_DEFINE(USE_TLS_OPENSSL)
10118         TLS=OPENSSL
10119         AC_MSG_RESULT([$TLS])
10121         if test "$enable_openssl" != "yes"; then
10122             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10123         fi
10125         # warn that OpenSSL has been selected but not all TLS code has this option
10126         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10127         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10128         ;;
10129     nss)
10130         AC_DEFINE(USE_TLS_NSS)
10131         TLS=NSS
10132         AC_MSG_RESULT([$TLS])
10133         ;;
10134     no)
10135         AC_MSG_RESULT([none])
10136         AC_MSG_WARN([Skipping TLS/SSL])
10137         ;;
10138     *)
10139         AC_MSG_RESULT([])
10140         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10141 openssl - OpenSSL
10142 nss - Mozilla's Network Security Services (NSS)
10143     ])
10144         ;;
10145     esac
10146 else
10147     # default to using NSS, it results in smaller oox lib
10148     AC_DEFINE(USE_TLS_NSS)
10149     TLS=NSS
10150     AC_MSG_RESULT([$TLS])
10152 AC_SUBST(TLS)
10154 dnl ===================================================================
10155 dnl Check for system sane
10156 dnl ===================================================================
10157 AC_MSG_CHECKING([which sane header to use])
10158 if test "$with_system_sane" = "yes"; then
10159     AC_MSG_RESULT([external])
10160     AC_CHECK_HEADER(sane/sane.h, [],
10161       [AC_MSG_ERROR(sane not found. install sane)], [])
10162 else
10163     AC_MSG_RESULT([internal])
10164     BUILD_TYPE="$BUILD_TYPE SANE"
10167 dnl ===================================================================
10168 dnl Check for system icu
10169 dnl ===================================================================
10170 SYSTEM_GENBRK=
10171 SYSTEM_GENCCODE=
10172 SYSTEM_GENCMN=
10174 ICU_MAJOR=68
10175 ICU_MINOR=1
10176 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10177 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10178 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10179 AC_MSG_CHECKING([which icu to use])
10180 if test "$with_system_icu" = "yes"; then
10181     AC_MSG_RESULT([external])
10182     SYSTEM_ICU=TRUE
10183     AC_LANG_PUSH([C++])
10184     AC_MSG_CHECKING([for unicode/rbbi.h])
10185     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10186     AC_LANG_POP([C++])
10188     if test "$cross_compiling" != "yes"; then
10189         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10190         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10191         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10192         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10193     fi
10195     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10196         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10197         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10198         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10199         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10200         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10201             AC_MSG_RESULT([yes])
10202         else
10203             AC_MSG_RESULT([no])
10204             if test "$with_system_icu_for_build" != "force"; then
10205                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10206 You can use --with-system-icu-for-build=force to use it anyway.])
10207             fi
10208         fi
10209     fi
10211     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10212         # using the system icu tools can lead to version confusion, use the
10213         # ones from the build environment when cross-compiling
10214         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10215         if test -z "$SYSTEM_GENBRK"; then
10216             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10217         fi
10218         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10219         if test -z "$SYSTEM_GENCCODE"; then
10220             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10221         fi
10222         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10223         if test -z "$SYSTEM_GENCMN"; then
10224             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10225         fi
10226         if test "$ICU_MAJOR" -ge "49"; then
10227             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10228             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10229             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10230         else
10231             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10232             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10233             ICU_RECLASSIFIED_HEBREW_LETTER=
10234         fi
10235     fi
10237     if test "$cross_compiling" = "yes"; then
10238         if test "$ICU_MAJOR" -ge "50"; then
10239             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10240             ICU_MINOR=""
10241         fi
10242     fi
10243 else
10244     AC_MSG_RESULT([internal])
10245     SYSTEM_ICU=
10246     BUILD_TYPE="$BUILD_TYPE ICU"
10247     # surprisingly set these only for "internal" (to be used by various other
10248     # external libs): the system icu-config is quite unhelpful and spits out
10249     # dozens of weird flags and also default path -I/usr/include
10250     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10251     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10253 if test "$ICU_MAJOR" -ge "59"; then
10254     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10255     # with -std=c++11 but not all external libraries can be built with that,
10256     # for those use a bit-compatible typedef uint16_t UChar; see
10257     # icu/source/common/unicode/umachine.h
10258     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10259 else
10260     ICU_UCHAR_TYPE=""
10262 AC_SUBST(SYSTEM_ICU)
10263 AC_SUBST(SYSTEM_GENBRK)
10264 AC_SUBST(SYSTEM_GENCCODE)
10265 AC_SUBST(SYSTEM_GENCMN)
10266 AC_SUBST(ICU_MAJOR)
10267 AC_SUBST(ICU_MINOR)
10268 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10269 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10270 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10271 AC_SUBST(ICU_CFLAGS)
10272 AC_SUBST(ICU_LIBS)
10273 AC_SUBST(ICU_UCHAR_TYPE)
10275 dnl ==================================================================
10276 dnl Breakpad
10277 dnl ==================================================================
10278 DEFAULT_CRASHDUMP_VALUE="true"
10279 AC_MSG_CHECKING([whether to enable breakpad])
10280 if test "$enable_breakpad" != yes; then
10281     AC_MSG_RESULT([no])
10282 else
10283     AC_MSG_RESULT([yes])
10284     ENABLE_BREAKPAD="TRUE"
10285     AC_DEFINE(ENABLE_BREAKPAD)
10286     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10287     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10289     AC_MSG_CHECKING([for disable crash dump])
10290     if test "$enable_crashdump" = no; then
10291         DEFAULT_CRASHDUMP_VALUE="false"
10292         AC_MSG_RESULT([yes])
10293     else
10294        AC_MSG_RESULT([no])
10295     fi
10297     AC_MSG_CHECKING([for crashreport config])
10298     if test "$with_symbol_config" = "no"; then
10299         BREAKPAD_SYMBOL_CONFIG="invalid"
10300         AC_MSG_RESULT([no])
10301     else
10302         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10303         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10304         AC_MSG_RESULT([yes])
10305     fi
10306     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10308 AC_SUBST(ENABLE_BREAKPAD)
10309 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10311 dnl ==================================================================
10312 dnl libfuzzer
10313 dnl ==================================================================
10314 AC_MSG_CHECKING([whether to enable fuzzers])
10315 if test "$enable_fuzzers" != yes; then
10316     AC_MSG_RESULT([no])
10317 else
10318     AC_MSG_RESULT([yes])
10319     ENABLE_FUZZERS="TRUE"
10320     AC_DEFINE([ENABLE_FUZZERS],1)
10321     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10323 AC_SUBST(ENABLE_FUZZERS)
10325 dnl ===================================================================
10326 dnl Orcus
10327 dnl ===================================================================
10328 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10329 if test "$with_system_orcus" != "yes"; then
10330     if test "$SYSTEM_BOOST" = "TRUE"; then
10331         # ===========================================================
10332         # Determine if we are going to need to link with Boost.System
10333         # ===========================================================
10334         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10335         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10336         dnl in documentation has no effect.
10337         AC_MSG_CHECKING([if we need to link with Boost.System])
10338         AC_LANG_PUSH([C++])
10339         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10340                 @%:@include <boost/version.hpp>
10341             ]],[[
10342                 #if BOOST_VERSION >= 105000
10343                 #   error yes, we need to link with Boost.System
10344                 #endif
10345             ]])],[
10346                 AC_MSG_RESULT([no])
10347             ],[
10348                 AC_MSG_RESULT([yes])
10349                 AX_BOOST_SYSTEM
10350         ])
10351         AC_LANG_POP([C++])
10352     fi
10354 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10355 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10356 AC_SUBST([BOOST_SYSTEM_LIB])
10357 AC_SUBST(SYSTEM_LIBORCUS)
10359 dnl ===================================================================
10360 dnl HarfBuzz
10361 dnl ===================================================================
10362 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10363                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10364                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10366 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10367                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10368                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10370 if test "$COM" = "MSC"; then # override the above
10371     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10372     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10375 if test "$with_system_harfbuzz" = "yes"; then
10376     if test "$with_system_graphite" = "no"; then
10377         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10378     fi
10379     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10380     save_LIBS="$LIBS"
10381     save_CFLAGS="$CFLAGS"
10382     LIBS="$LIBS $HARFBUZZ_LIBS"
10383     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10384     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10385     LIBS="$save_LIBS"
10386     CFLAGS="$save_CFLAGS"
10387 else
10388     if test "$with_system_graphite" = "yes"; then
10389         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10390     fi
10393 AC_MSG_CHECKING([whether to use X11])
10394 dnl ***************************************
10395 dnl testing for X libraries and includes...
10396 dnl ***************************************
10397 if test "$USING_X11" = TRUE; then
10398     AC_DEFINE(HAVE_FEATURE_X11)
10400 AC_MSG_RESULT([$USING_X11])
10402 if test "$USING_X11" = TRUE; then
10403     AC_PATH_X
10404     AC_PATH_XTRA
10405     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10407     if test -z "$x_includes"; then
10408         x_includes="default_x_includes"
10409     fi
10410     if test -z "$x_libraries"; then
10411         x_libraries="default_x_libraries"
10412     fi
10413     CFLAGS="$CFLAGS $X_CFLAGS"
10414     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10415     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10416 else
10417     x_includes="no_x_includes"
10418     x_libraries="no_x_libraries"
10421 if test "$USING_X11" = TRUE; then
10422     dnl ===================================================================
10423     dnl Check for extension headers
10424     dnl ===================================================================
10425     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10426      [#include <X11/extensions/shape.h>])
10428     # vcl needs ICE and SM
10429     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10430     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10431         [AC_MSG_ERROR(ICE library not found)])
10432     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10433     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10434         [AC_MSG_ERROR(SM library not found)])
10437 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10438     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10439     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10442 dnl ===================================================================
10443 dnl Check for system Xrender
10444 dnl ===================================================================
10445 AC_MSG_CHECKING([whether to use Xrender])
10446 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10447     AC_MSG_RESULT([yes])
10448     PKG_CHECK_MODULES(XRENDER, xrender)
10449     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10450     FilterLibs "${XRENDER_LIBS}"
10451     XRENDER_LIBS="${filteredlibs}"
10452     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10453       [AC_MSG_ERROR(libXrender not found or functional)], [])
10454     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10455       [AC_MSG_ERROR(Xrender not found. install X)], [])
10456 else
10457     AC_MSG_RESULT([no])
10459 AC_SUBST(XRENDER_CFLAGS)
10460 AC_SUBST(XRENDER_LIBS)
10462 dnl ===================================================================
10463 dnl Check for XRandr
10464 dnl ===================================================================
10465 AC_MSG_CHECKING([whether to enable RandR support])
10466 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10467     AC_MSG_RESULT([yes])
10468     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10469     if test "$ENABLE_RANDR" != "TRUE"; then
10470         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10471                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10472         XRANDR_CFLAGS=" "
10473         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10474           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10475         XRANDR_LIBS="-lXrandr "
10476         ENABLE_RANDR="TRUE"
10477     fi
10478     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10479     FilterLibs "${XRANDR_LIBS}"
10480     XRANDR_LIBS="${filteredlibs}"
10481 else
10482     ENABLE_RANDR=""
10483     AC_MSG_RESULT([no])
10485 AC_SUBST(XRANDR_CFLAGS)
10486 AC_SUBST(XRANDR_LIBS)
10487 AC_SUBST(ENABLE_RANDR)
10489 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10490     if test -z "$WITH_WEBDAV"; then
10491         WITH_WEBDAV="serf"
10492     fi
10494 if test $_os = iOS -o $_os = Android; then
10495     WITH_WEBDAV="no"
10497 AC_MSG_CHECKING([for webdav library])
10498 case "$WITH_WEBDAV" in
10499 serf)
10500     AC_MSG_RESULT([serf])
10501     # Check for system apr-util
10502     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10503                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10504                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10505     if test "$COM" = "MSC"; then
10506         APR_LIB_DIR="LibR"
10507         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10508         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10509     fi
10511     # Check for system serf
10512     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10513                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10514     if test "$COM" = "MSC"; then
10515         SERF_LIB_DIR="Release"
10516         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10517         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10518     fi
10519     ;;
10520 neon)
10521     AC_MSG_RESULT([neon])
10522     # Check for system neon
10523     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10524     if test "$with_system_neon" = "yes"; then
10525         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10526     else
10527         NEON_VERSION=0311
10528     fi
10529     AC_SUBST(NEON_VERSION)
10530     ;;
10532     AC_MSG_RESULT([none, disabled])
10533     WITH_WEBDAV=""
10534     ;;
10535 esac
10536 AC_SUBST(WITH_WEBDAV)
10538 dnl ===================================================================
10539 dnl Check for disabling cve_tests
10540 dnl ===================================================================
10541 AC_MSG_CHECKING([whether to execute CVE tests])
10542 # If not explicitly enabled or disabled, default
10543 if test -z "$enable_cve_tests"; then
10544     case "$OS" in
10545     WNT)
10546         # Default cves off for Windows with its wild and wonderful
10547         # variety of AV software kicking in and panicking
10548         enable_cve_tests=no
10549         ;;
10550     *)
10551         # otherwise yes
10552         enable_cve_tests=yes
10553         ;;
10554     esac
10556 if test "$enable_cve_tests" = "no"; then
10557     AC_MSG_RESULT([no])
10558     DISABLE_CVE_TESTS=TRUE
10559     AC_SUBST(DISABLE_CVE_TESTS)
10560 else
10561     AC_MSG_RESULT([yes])
10564 dnl ===================================================================
10565 dnl Check for enabling chart XShape tests
10566 dnl ===================================================================
10567 AC_MSG_CHECKING([whether to execute chart XShape tests])
10568 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10569     AC_MSG_RESULT([yes])
10570     ENABLE_CHART_TESTS=TRUE
10571     AC_SUBST(ENABLE_CHART_TESTS)
10572 else
10573     AC_MSG_RESULT([no])
10576 dnl ===================================================================
10577 dnl Check for system openssl
10578 dnl ===================================================================
10579 DISABLE_OPENSSL=
10580 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10581 if test "$enable_openssl" = "yes"; then
10582     AC_MSG_RESULT([no])
10583     if test "$_os" = Darwin ; then
10584         # OpenSSL is deprecated when building for 10.7 or later.
10585         #
10586         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10587         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10589         with_system_openssl=no
10590         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10591     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10592             && test "$with_system_openssl" != "no"; then
10593         with_system_openssl=yes
10594         SYSTEM_OPENSSL=TRUE
10595         OPENSSL_CFLAGS=
10596         OPENSSL_LIBS="-lssl -lcrypto"
10597     else
10598         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10599     fi
10600     if test "$with_system_openssl" = "yes"; then
10601         AC_MSG_CHECKING([whether openssl supports SHA512])
10602         AC_LANG_PUSH([C])
10603         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10604             SHA512_CTX context;
10605 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10606         AC_LANG_POP(C)
10607     fi
10608 else
10609     AC_MSG_RESULT([yes])
10610     DISABLE_OPENSSL=TRUE
10612     # warn that although OpenSSL is disabled, system libraries may depend on it
10613     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10614     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10617 AC_SUBST([DISABLE_OPENSSL])
10619 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10620     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10621         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10622         enable_cipher_openssl_backend=no
10623     else
10624         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10625     fi
10627 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10628 ENABLE_CIPHER_OPENSSL_BACKEND=
10629 if test "$enable_cipher_openssl_backend" = yes; then
10630     AC_MSG_RESULT([yes])
10631     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10632 else
10633     AC_MSG_RESULT([no])
10635 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10637 dnl ===================================================================
10638 dnl Check for building gnutls
10639 dnl ===================================================================
10640 AC_MSG_CHECKING([whether to use gnutls])
10641 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10642     AC_MSG_RESULT([yes])
10643     AM_PATH_LIBGCRYPT()
10644     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10645         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10646                       available in the system to use as replacement.]]))
10647     FilterLibs "${LIBGCRYPT_LIBS}"
10648     LIBGCRYPT_LIBS="${filteredlibs}"
10649 else
10650     AC_MSG_RESULT([no])
10653 AC_SUBST([LIBGCRYPT_CFLAGS])
10654 AC_SUBST([LIBGCRYPT_LIBS])
10656 dnl ===================================================================
10657 dnl Check for system redland
10658 dnl ===================================================================
10659 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10660 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10661 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10662 if test "$with_system_redland" = "yes"; then
10663     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10664             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10665 else
10666     RAPTOR_MAJOR="0"
10667     RASQAL_MAJOR="3"
10668     REDLAND_MAJOR="0"
10670 AC_SUBST(RAPTOR_MAJOR)
10671 AC_SUBST(RASQAL_MAJOR)
10672 AC_SUBST(REDLAND_MAJOR)
10674 dnl ===================================================================
10675 dnl Check for system hunspell
10676 dnl ===================================================================
10677 AC_MSG_CHECKING([which libhunspell to use])
10678 if test "$_os" = iOS; then
10679    AC_MSG_RESULT([none])
10680 elif test "$with_system_hunspell" = "yes"; then
10681     AC_MSG_RESULT([external])
10682     SYSTEM_HUNSPELL=TRUE
10683     AC_LANG_PUSH([C++])
10684     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10685     if test "$HUNSPELL_PC" != "TRUE"; then
10686         AC_CHECK_HEADER(hunspell.hxx, [],
10687             [
10688             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10689             [AC_MSG_ERROR(hunspell headers not found.)], [])
10690             ], [])
10691         AC_CHECK_LIB([hunspell], [main], [:],
10692            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10693         HUNSPELL_LIBS=-lhunspell
10694     fi
10695     AC_LANG_POP([C++])
10696     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10697     FilterLibs "${HUNSPELL_LIBS}"
10698     HUNSPELL_LIBS="${filteredlibs}"
10699 else
10700     AC_MSG_RESULT([internal])
10701     SYSTEM_HUNSPELL=
10702     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10703     if test "$COM" = "MSC"; then
10704         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10705     else
10706         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10707     fi
10708     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10710 AC_SUBST(SYSTEM_HUNSPELL)
10711 AC_SUBST(HUNSPELL_CFLAGS)
10712 AC_SUBST(HUNSPELL_LIBS)
10714 dnl ===================================================================
10715 dnl Check for system qrcodegen
10716 dnl ===================================================================
10717 AC_MSG_CHECKING([whether to use libqrcodegen])
10718 if test "$enable_qrcodegen" = "no"; then
10719     AC_MSG_RESULT([no])
10720     ENABLE_QRCODEGEN=
10721     SYSTEM_QRCODEGEN=
10722 else
10723     AC_MSG_RESULT([yes])
10724     ENABLE_QRCODEGEN=TRUE
10725     AC_MSG_CHECKING([which libqrcodegen to use])
10726     if test "$with_system_qrcodegen" = "yes"; then
10727         AC_MSG_RESULT([external])
10728         SYSTEM_QRCODEGEN=TRUE
10729         AC_LANG_PUSH([C++])
10730         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10731             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10732         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10733             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10734         QRCODEGEN_LIBS=-lqrcodegencpp
10735         AC_LANG_POP([C++])
10736         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10737         FilterLibs "${QRCODEGEN_LIBS}"
10738         QRCODEGEN_LIBS="${filteredlibs}"
10739     else
10740         AC_MSG_RESULT([internal])
10741         SYSTEM_QRCODEGEN=
10742         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10743     fi
10744     if test "$ENABLE_QRCODEGEN" = TRUE; then
10745         AC_DEFINE(ENABLE_QRCODEGEN)
10746     fi
10748 AC_SUBST(SYSTEM_QRCODEGEN)
10749 AC_SUBST(ENABLE_QRCODEGEN)
10750 AC_SUBST(QRCODEGEN_CFLAGS)
10751 AC_SUBST(QRCODEGEN_LIBS)
10753 dnl ===================================================================
10754 dnl Check for system box2d
10755 dnl ===================================================================
10756 AC_MSG_CHECKING([which box2d to use])
10757 if test "$with_system_box2d" = "yes"; then
10758     AC_MSG_RESULT([external])
10759     SYSTEM_BOX2D=TRUE
10760     AC_LANG_PUSH([C++])
10761     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10762         [BOX2D_H_FOUND='FALSE'])
10763     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10764         _BOX2D_LIB=box2d
10765         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10766     else
10767         # fail this. there's no other alternative to check when we are here.
10768         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10769                 [AC_MSG_ERROR(box2d headers not found.)])
10770         _BOX2D_LIB=Box2D
10771         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10772     fi
10773     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10774         [ AC_MSG_ERROR(box2d library not found.) ], [])
10775     BOX2D_LIBS=-l$_BOX2D_LIB
10776     AC_LANG_POP([C++])
10777     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10778     FilterLibs "${BOX2D_LIBS}"
10779     BOX2D_LIBS="${filteredlibs}"
10780 else
10781     AC_MSG_RESULT([internal])
10782     SYSTEM_BOX2D=
10783     BUILD_TYPE="$BUILD_TYPE BOX2D"
10785 AC_SUBST(SYSTEM_BOX2D)
10786 AC_SUBST(BOX2D_CFLAGS)
10787 AC_SUBST(BOX2D_LIBS)
10789 dnl ===================================================================
10790 dnl Checking for altlinuxhyph
10791 dnl ===================================================================
10792 AC_MSG_CHECKING([which altlinuxhyph to use])
10793 if test "$with_system_altlinuxhyph" = "yes"; then
10794     AC_MSG_RESULT([external])
10795     SYSTEM_HYPH=TRUE
10796     AC_CHECK_HEADER(hyphen.h, [],
10797        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10798     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10799        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10800        [#include <hyphen.h>])
10801     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10802         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10803     if test -z "$HYPHEN_LIB"; then
10804         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10805            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10806     fi
10807     if test -z "$HYPHEN_LIB"; then
10808         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10809            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10810     fi
10811 else
10812     AC_MSG_RESULT([internal])
10813     SYSTEM_HYPH=
10814     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10815     if test "$COM" = "MSC"; then
10816         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10817     else
10818         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10819     fi
10821 AC_SUBST(SYSTEM_HYPH)
10822 AC_SUBST(HYPHEN_LIB)
10824 dnl ===================================================================
10825 dnl Checking for mythes
10826 dnl ===================================================================
10827 AC_MSG_CHECKING([which mythes to use])
10828 if test "$_os" = iOS; then
10829    AC_MSG_RESULT([none])
10830 elif test "$with_system_mythes" = "yes"; then
10831     AC_MSG_RESULT([external])
10832     SYSTEM_MYTHES=TRUE
10833     AC_LANG_PUSH([C++])
10834     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10835     if test "$MYTHES_PKGCONFIG" = "no"; then
10836         AC_CHECK_HEADER(mythes.hxx, [],
10837             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10838         AC_CHECK_LIB([mythes-1.2], [main], [:],
10839             [ MYTHES_FOUND=no], [])
10840     if test "$MYTHES_FOUND" = "no"; then
10841         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10842                 [ MYTHES_FOUND=no], [])
10843     fi
10844     if test "$MYTHES_FOUND" = "no"; then
10845         AC_MSG_ERROR([mythes library not found!.])
10846     fi
10847     fi
10848     AC_LANG_POP([C++])
10849     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10850     FilterLibs "${MYTHES_LIBS}"
10851     MYTHES_LIBS="${filteredlibs}"
10852 else
10853     AC_MSG_RESULT([internal])
10854     SYSTEM_MYTHES=
10855     BUILD_TYPE="$BUILD_TYPE MYTHES"
10856     if test "$COM" = "MSC"; then
10857         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10858     else
10859         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10860     fi
10862 AC_SUBST(SYSTEM_MYTHES)
10863 AC_SUBST(MYTHES_CFLAGS)
10864 AC_SUBST(MYTHES_LIBS)
10866 dnl ===================================================================
10867 dnl How should we build the linear programming solver ?
10868 dnl ===================================================================
10870 ENABLE_COINMP=
10871 AC_MSG_CHECKING([whether to build with CoinMP])
10872 if test "$enable_coinmp" != "no"; then
10873     ENABLE_COINMP=TRUE
10874     AC_MSG_RESULT([yes])
10875     if test "$with_system_coinmp" = "yes"; then
10876         SYSTEM_COINMP=TRUE
10877         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10878         FilterLibs "${COINMP_LIBS}"
10879         COINMP_LIBS="${filteredlibs}"
10880     else
10881         BUILD_TYPE="$BUILD_TYPE COINMP"
10882     fi
10883 else
10884     AC_MSG_RESULT([no])
10886 AC_SUBST(ENABLE_COINMP)
10887 AC_SUBST(SYSTEM_COINMP)
10888 AC_SUBST(COINMP_CFLAGS)
10889 AC_SUBST(COINMP_LIBS)
10891 ENABLE_LPSOLVE=
10892 AC_MSG_CHECKING([whether to build with lpsolve])
10893 if test "$enable_lpsolve" != "no"; then
10894     ENABLE_LPSOLVE=TRUE
10895     AC_MSG_RESULT([yes])
10896 else
10897     AC_MSG_RESULT([no])
10899 AC_SUBST(ENABLE_LPSOLVE)
10901 if test "$ENABLE_LPSOLVE" = TRUE; then
10902     AC_MSG_CHECKING([which lpsolve to use])
10903     if test "$with_system_lpsolve" = "yes"; then
10904         AC_MSG_RESULT([external])
10905         SYSTEM_LPSOLVE=TRUE
10906         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10907            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10908         save_LIBS=$LIBS
10909         # some systems need this. Like Ubuntu...
10910         AC_CHECK_LIB(m, floor)
10911         AC_CHECK_LIB(dl, dlopen)
10912         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10913             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10914         LIBS=$save_LIBS
10915     else
10916         AC_MSG_RESULT([internal])
10917         SYSTEM_LPSOLVE=
10918         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10919     fi
10921 AC_SUBST(SYSTEM_LPSOLVE)
10923 dnl ===================================================================
10924 dnl Checking for libexttextcat
10925 dnl ===================================================================
10926 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10927 if test "$with_system_libexttextcat" = "yes"; then
10928     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10930 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10932 dnl ===================================================================
10933 dnl Checking for libnumbertext
10934 dnl ===================================================================
10935 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10936 if test "$with_system_libnumbertext" = "yes"; then
10937     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10938     SYSTEM_LIBNUMBERTEXT=YES
10939 else
10940     SYSTEM_LIBNUMBERTEXT=
10941     AC_LANG_PUSH([C++])
10942     save_CPPFLAGS=$CPPFLAGS
10943     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10944     AC_CHECK_HEADERS([codecvt regex])
10945     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10946             [ LIBNUMBERTEXT_CFLAGS=''
10947               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10948                            Enable libnumbertext fallback (missing number to number name conversion).])
10949             ])
10950     CPPFLAGS=$save_CPPFLAGS
10951     AC_LANG_POP([C++])
10953 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10954 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10955 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10957 dnl ***************************************
10958 dnl testing libc version for Linux...
10959 dnl ***************************************
10960 if test "$_os" = "Linux"; then
10961     AC_MSG_CHECKING([whether libc is >= 2.1.1])
10962     exec 6>/dev/null # no output
10963     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10964     exec 6>&1 # output on again
10965     if test "$HAVE_LIBC"; then
10966         AC_MSG_RESULT([yes])
10967     else
10968         AC_MSG_ERROR([no, upgrade libc])
10969     fi
10972 dnl =========================================
10973 dnl Check for uuidgen
10974 dnl =========================================
10975 if test "$_os" = "WINNT"; then
10976     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
10977     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
10978     UUIDGEN=uuidgen.exe
10979     AC_SUBST(UUIDGEN)
10980 else
10981     AC_PATH_PROG([UUIDGEN], [uuidgen])
10982     if test -z "$UUIDGEN"; then
10983         AC_MSG_WARN([uuid is needed for building installation sets])
10984     fi
10987 dnl ***************************************
10988 dnl Checking for bison and flex
10989 dnl ***************************************
10990 AC_PATH_PROG(BISON, bison)
10991 if test -z "$BISON"; then
10992     AC_MSG_ERROR([no bison found in \$PATH, install it])
10993 else
10994     AC_MSG_CHECKING([the bison version])
10995     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
10996     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
10997     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
10998     dnl cause
10999     dnl
11000     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]
11001     dnl   typedef union YYSTYPE
11002     dnl           ~~~~~~^~~~~~~
11003     dnl
11004     dnl while at least 3.4.1 is know to be good:
11005     if test "$COMPILER_PLUGINS" = TRUE; then
11006         if test "$_bison_longver" -lt 2004; then
11007             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11008         fi
11009     else
11010         if test "$_bison_longver" -lt 2000; then
11011             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11012         fi
11013     fi
11015 AC_SUBST([BISON])
11017 AC_PATH_PROG(FLEX, flex)
11018 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11019     FLEX=`cygpath -m $FLEX`
11021 if test -z "$FLEX"; then
11022     AC_MSG_ERROR([no flex found in \$PATH, install it])
11023 else
11024     AC_MSG_CHECKING([the flex version])
11025     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11026     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11027         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11028     fi
11030 AC_SUBST([FLEX])
11031 dnl ***************************************
11032 dnl Checking for patch
11033 dnl ***************************************
11034 AC_PATH_PROG(PATCH, patch)
11035 if test -z "$PATCH"; then
11036     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11039 dnl On Solaris or macOS, check if --with-gnu-patch was used
11040 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11041     if test -z "$with_gnu_patch"; then
11042         GNUPATCH=$PATCH
11043     else
11044         if test -x "$with_gnu_patch"; then
11045             GNUPATCH=$with_gnu_patch
11046         else
11047             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11048         fi
11049     fi
11051     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11052     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11053         AC_MSG_RESULT([yes])
11054     else
11055         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11056     fi
11057 else
11058     GNUPATCH=$PATCH
11061 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11062     GNUPATCH=`cygpath -m $GNUPATCH`
11065 dnl We also need to check for --with-gnu-cp
11067 if test -z "$with_gnu_cp"; then
11068     # check the place where the good stuff is hidden on Solaris...
11069     if test -x /usr/gnu/bin/cp; then
11070         GNUCP=/usr/gnu/bin/cp
11071     else
11072         AC_PATH_PROGS(GNUCP, gnucp cp)
11073     fi
11074     if test -z $GNUCP; then
11075         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11076     fi
11077 else
11078     if test -x "$with_gnu_cp"; then
11079         GNUCP=$with_gnu_cp
11080     else
11081         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11082     fi
11085 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11086     GNUCP=`cygpath -m $GNUCP`
11089 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11090 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11091     AC_MSG_RESULT([yes])
11092 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11093     AC_MSG_RESULT([yes])
11094 else
11095     case "$build_os" in
11096     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11097         x_GNUCP=[\#]
11098         GNUCP=''
11099         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11100         ;;
11101     *)
11102         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11103         ;;
11104     esac
11107 AC_SUBST(GNUPATCH)
11108 AC_SUBST(GNUCP)
11109 AC_SUBST(x_GNUCP)
11111 dnl ***************************************
11112 dnl testing assembler path
11113 dnl ***************************************
11114 ML_EXE=""
11115 if test "$_os" = "WINNT"; then
11116     case "$WIN_HOST_ARCH" in
11117     x86) assembler=ml.exe ;;
11118     x64) assembler=ml64.exe ;;
11119     arm64) assembler=armasm64.exe ;;
11120     esac
11122     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11123     if test -f "$MSVC_HOST_PATH/$assembler"; then
11124         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11125         AC_MSG_RESULT([$ML_EXE])
11126     else
11127         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11128     fi
11131 AC_SUBST(ML_EXE)
11133 dnl ===================================================================
11134 dnl We need zip and unzip
11135 dnl ===================================================================
11136 AC_PATH_PROG(ZIP, zip)
11137 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11138 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11139     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],,)
11142 AC_PATH_PROG(UNZIP, unzip)
11143 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11145 dnl ===================================================================
11146 dnl Zip must be a specific type for different build types.
11147 dnl ===================================================================
11148 if test $build_os = cygwin; then
11149     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11150         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11151     fi
11154 dnl ===================================================================
11155 dnl We need touch with -h option support.
11156 dnl ===================================================================
11157 AC_PATH_PROG(TOUCH, touch)
11158 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11159 touch warn
11160 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11161     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],,)
11164 dnl ===================================================================
11165 dnl Check for system epoxy
11166 dnl ===================================================================
11167 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11169 dnl ===================================================================
11170 dnl Set vcl option: coordinate device in double or sal_Int32
11171 dnl ===================================================================
11173 dnl disabled for now, we don't want subtle differences between OSs
11174 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11175 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11176 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11177 dnl     AC_MSG_RESULT([double])
11178 dnl else
11179 dnl     AC_MSG_RESULT([sal_Int32])
11180 dnl fi
11182 dnl ===================================================================
11183 dnl Test which vclplugs have to be built.
11184 dnl ===================================================================
11185 R=""
11186 if test "$USING_X11" != TRUE; then
11187     enable_gtk3=no
11190 ENABLE_GTK3=""
11191 if test "x$enable_gtk3" = "xyes"; then
11192     ENABLE_GTK3="TRUE"
11193     AC_DEFINE(ENABLE_GTK3)
11194     R="$R gtk3"
11196 AC_SUBST(ENABLE_GTK3)
11198 ENABLE_GTK3_KDE5=""
11199 if test "x$enable_gtk3_kde5" = "xyes"; then
11200     ENABLE_GTK3_KDE5="TRUE"
11201     AC_DEFINE(ENABLE_GTK3_KDE5)
11202     R="$R gtk3_kde5"
11204 AC_SUBST(ENABLE_GTK3_KDE5)
11206 ENABLE_QT5=""
11207 if test "x$enable_qt5" = "xyes"; then
11208     ENABLE_QT5="TRUE"
11209     AC_DEFINE(ENABLE_QT5)
11210     R="$R qt5"
11212 AC_SUBST(ENABLE_QT5)
11214 ENABLE_KF5=""
11215 if test "x$enable_kf5" = "xyes"; then
11216     ENABLE_KF5="TRUE"
11217     AC_DEFINE(ENABLE_KF5)
11218     R="$R kf5"
11220 AC_SUBST(ENABLE_KF5)
11222 GTK3_CFLAGS=""
11223 GTK3_LIBS=""
11224 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11225     if test "$with_system_cairo" = no; then
11226         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11227     fi
11228     : ${with_system_cairo:=yes}
11229     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)
11230     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11231     FilterLibs "${GTK3_LIBS}"
11232     GTK3_LIBS="${filteredlibs}"
11234     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11235     if test "$with_system_epoxy" != "yes"; then
11236         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11237         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11238                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11239     fi
11241 AC_SUBST(GTK3_LIBS)
11242 AC_SUBST(GTK3_CFLAGS)
11244 if test "$enable_introspection" = yes; then
11245     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11246         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11247     else
11248         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11249     fi
11252 if test "$_os" = "WINNT"; then
11253     R="$R win"
11254 elif test "$_os" = "Darwin"; then
11255     R="$R osx"
11256 elif test "$_os" = "iOS"; then
11257     R="ios (builtin)"
11260 build_vcl_plugins="$R"
11261 if test -z "$build_vcl_plugins"; then
11262     build_vcl_plugins="none"
11264 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11266 dnl ===================================================================
11267 dnl check for dbus support
11268 dnl ===================================================================
11269 ENABLE_DBUS=""
11270 DBUS_CFLAGS=""
11271 DBUS_LIBS=""
11272 DBUS_GLIB_CFLAGS=""
11273 DBUS_GLIB_LIBS=""
11274 DBUS_HAVE_GLIB=""
11276 if test "$enable_dbus" = "no"; then
11277     test_dbus=no
11280 AC_MSG_CHECKING([whether to enable DBUS support])
11281 if test "$test_dbus" = "yes"; then
11282     ENABLE_DBUS="TRUE"
11283     AC_MSG_RESULT([yes])
11284     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11285     AC_DEFINE(ENABLE_DBUS)
11286     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11287     FilterLibs "${DBUS_LIBS}"
11288     DBUS_LIBS="${filteredlibs}"
11290     # Glib is needed for BluetoothServer
11291     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11292     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11293         [
11294             DBUS_HAVE_GLIB="TRUE"
11295             AC_DEFINE(DBUS_HAVE_GLIB,1)
11296         ],
11297         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11298     )
11299 else
11300     AC_MSG_RESULT([no])
11303 AC_SUBST(ENABLE_DBUS)
11304 AC_SUBST(DBUS_CFLAGS)
11305 AC_SUBST(DBUS_LIBS)
11306 AC_SUBST(DBUS_GLIB_CFLAGS)
11307 AC_SUBST(DBUS_GLIB_LIBS)
11308 AC_SUBST(DBUS_HAVE_GLIB)
11310 AC_MSG_CHECKING([whether to enable Impress remote control])
11311 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11312     AC_MSG_RESULT([yes])
11313     ENABLE_SDREMOTE=TRUE
11314     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11316     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11317         # The Bluetooth code doesn't compile with macOS SDK 10.15
11318         if test "$enable_sdremote_bluetooth" = yes; then
11319             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11320         fi
11321         enable_sdremote_bluetooth=no
11322     fi
11323     # If not explicitly enabled or disabled, default
11324     if test -z "$enable_sdremote_bluetooth"; then
11325         case "$OS" in
11326         LINUX|MACOSX|WNT)
11327             # Default to yes for these
11328             enable_sdremote_bluetooth=yes
11329             ;;
11330         *)
11331             # otherwise no
11332             enable_sdremote_bluetooth=no
11333             ;;
11334         esac
11335     fi
11336     # $enable_sdremote_bluetooth is guaranteed non-empty now
11338     if test "$enable_sdremote_bluetooth" != "no"; then
11339         if test "$OS" = "LINUX"; then
11340             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11341                 AC_MSG_RESULT([yes])
11342                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11343                 dnl ===================================================================
11344                 dnl Check for system bluez
11345                 dnl ===================================================================
11346                 AC_MSG_CHECKING([which Bluetooth header to use])
11347                 if test "$with_system_bluez" = "yes"; then
11348                     AC_MSG_RESULT([external])
11349                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11350                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11351                     SYSTEM_BLUEZ=TRUE
11352                 else
11353                     AC_MSG_RESULT([internal])
11354                     SYSTEM_BLUEZ=
11355                 fi
11356             else
11357                 AC_MSG_RESULT([no, dbus disabled])
11358                 ENABLE_SDREMOTE_BLUETOOTH=
11359                 SYSTEM_BLUEZ=
11360             fi
11361         else
11362             AC_MSG_RESULT([yes])
11363             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11364             SYSTEM_BLUEZ=
11365         fi
11366     else
11367         AC_MSG_RESULT([no])
11368         ENABLE_SDREMOTE_BLUETOOTH=
11369         SYSTEM_BLUEZ=
11370     fi
11371 else
11372     ENABLE_SDREMOTE=
11373     SYSTEM_BLUEZ=
11374     AC_MSG_RESULT([no])
11376 AC_SUBST(ENABLE_SDREMOTE)
11377 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11378 AC_SUBST(SYSTEM_BLUEZ)
11380 dnl ===================================================================
11381 dnl Check whether to enable GIO support
11382 dnl ===================================================================
11383 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11384     AC_MSG_CHECKING([whether to enable GIO support])
11385     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11386         dnl Need at least 2.26 for the dbus support.
11387         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11388                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11389         if test "$ENABLE_GIO" = "TRUE"; then
11390             AC_DEFINE(ENABLE_GIO)
11391             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11392             FilterLibs "${GIO_LIBS}"
11393             GIO_LIBS="${filteredlibs}"
11394         fi
11395     else
11396         AC_MSG_RESULT([no])
11397     fi
11399 AC_SUBST(ENABLE_GIO)
11400 AC_SUBST(GIO_CFLAGS)
11401 AC_SUBST(GIO_LIBS)
11404 dnl ===================================================================
11406 SPLIT_APP_MODULES=""
11407 if test "$enable_split_app_modules" = "yes"; then
11408     SPLIT_APP_MODULES="TRUE"
11410 AC_SUBST(SPLIT_APP_MODULES)
11412 SPLIT_OPT_FEATURES=""
11413 if test "$enable_split_opt_features" = "yes"; then
11414     SPLIT_OPT_FEATURES="TRUE"
11416 AC_SUBST(SPLIT_OPT_FEATURES)
11418 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11419     if test "$enable_cairo_canvas" = yes; then
11420         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11421     fi
11422     enable_cairo_canvas=no
11423 elif test -z "$enable_cairo_canvas"; then
11424     enable_cairo_canvas=yes
11427 ENABLE_CAIRO_CANVAS=""
11428 if test "$enable_cairo_canvas" = "yes"; then
11429     test_cairo=yes
11430     ENABLE_CAIRO_CANVAS="TRUE"
11431     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11433 AC_SUBST(ENABLE_CAIRO_CANVAS)
11435 dnl ===================================================================
11436 dnl Check whether the GStreamer libraries are available.
11437 dnl ===================================================================
11439 ENABLE_GSTREAMER_1_0=""
11441 if test "$build_gstreamer_1_0" = "yes"; then
11443     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11444     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11445         ENABLE_GSTREAMER_1_0="TRUE"
11446         AC_MSG_RESULT([yes])
11447         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11448         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11449         FilterLibs "${GSTREAMER_1_0_LIBS}"
11450         GSTREAMER_1_0_LIBS="${filteredlibs}"
11451         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11452     else
11453         AC_MSG_RESULT([no])
11454     fi
11456 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11457 AC_SUBST(GSTREAMER_1_0_LIBS)
11458 AC_SUBST(ENABLE_GSTREAMER_1_0)
11460 dnl ===================================================================
11461 dnl Check whether to build the VLC avmedia backend
11462 dnl ===================================================================
11464 ENABLE_VLC=""
11466 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11467 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11468     ENABLE_VLC="TRUE"
11469     AC_MSG_RESULT([yes])
11470 else
11471     AC_MSG_RESULT([no])
11473 AC_SUBST(ENABLE_VLC)
11475 ENABLE_OPENGL_TRANSITIONS=
11476 ENABLE_OPENGL_CANVAS=
11477 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11478    : # disable
11479 elif test "$_os" = "Darwin"; then
11480     # We use frameworks on macOS, no need for detail checks
11481     ENABLE_OPENGL_TRANSITIONS=TRUE
11482     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11483     ENABLE_OPENGL_CANVAS=TRUE
11484 elif test $_os = WINNT; then
11485     ENABLE_OPENGL_TRANSITIONS=TRUE
11486     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11487     ENABLE_OPENGL_CANVAS=TRUE
11488 else
11489     if test "$USING_X11" = TRUE; then
11490         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11491         ENABLE_OPENGL_TRANSITIONS=TRUE
11492         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11493         ENABLE_OPENGL_CANVAS=TRUE
11494     fi
11497 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11498 AC_SUBST(ENABLE_OPENGL_CANVAS)
11500 dnl =================================================
11501 dnl Check whether to build with OpenCL support.
11502 dnl =================================================
11504 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11505     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11506     # platform (optional at run-time, used through clew).
11507     BUILD_TYPE="$BUILD_TYPE OPENCL"
11508     AC_DEFINE(HAVE_FEATURE_OPENCL)
11511 dnl =================================================
11512 dnl Check whether to build with dconf support.
11513 dnl =================================================
11515 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11516     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11517         if test "$enable_dconf" = yes; then
11518             AC_MSG_ERROR([dconf not found])
11519         else
11520             enable_dconf=no
11521         fi])
11523 AC_MSG_CHECKING([whether to enable dconf])
11524 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11525     DCONF_CFLAGS=
11526     DCONF_LIBS=
11527     ENABLE_DCONF=
11528     AC_MSG_RESULT([no])
11529 else
11530     ENABLE_DCONF=TRUE
11531     AC_DEFINE(ENABLE_DCONF)
11532     AC_MSG_RESULT([yes])
11534 AC_SUBST([DCONF_CFLAGS])
11535 AC_SUBST([DCONF_LIBS])
11536 AC_SUBST([ENABLE_DCONF])
11538 # pdf import?
11539 AC_MSG_CHECKING([whether to build the PDF import feature])
11540 ENABLE_PDFIMPORT=
11541 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11542     AC_MSG_RESULT([yes])
11543     ENABLE_PDFIMPORT=TRUE
11544     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11545 else
11546     AC_MSG_RESULT([no])
11549 # Pdfium?
11550 AC_MSG_CHECKING([whether to build PDFium])
11551 ENABLE_PDFIUM=
11552 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11553     AC_MSG_RESULT([yes])
11554     ENABLE_PDFIUM=TRUE
11555     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11556     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11557 else
11558     AC_MSG_RESULT([no])
11560 AC_SUBST(ENABLE_PDFIUM)
11562 dnl ===================================================================
11563 dnl Check for poppler
11564 dnl ===================================================================
11565 ENABLE_POPPLER=
11566 AC_MSG_CHECKING([whether to build Poppler])
11567 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11568     AC_MSG_RESULT([yes])
11569     ENABLE_POPPLER=TRUE
11570     AC_DEFINE(HAVE_FEATURE_POPPLER)
11571 else
11572     AC_MSG_RESULT([no])
11574 AC_SUBST(ENABLE_POPPLER)
11576 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11577     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11580 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11581     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11584 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11585     dnl ===================================================================
11586     dnl Check for system poppler
11587     dnl ===================================================================
11588     AC_MSG_CHECKING([which PDF import poppler to use])
11589     if test "$with_system_poppler" = "yes"; then
11590         AC_MSG_RESULT([external])
11591         SYSTEM_POPPLER=TRUE
11592         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11593         AC_LANG_PUSH([C++])
11594         save_CXXFLAGS=$CXXFLAGS
11595         save_CPPFLAGS=$CPPFLAGS
11596         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11597         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11598         AC_CHECK_HEADER([cpp/poppler-version.h],
11599             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11600             [])
11601         CXXFLAGS=$save_CXXFLAGS
11602         CPPFLAGS=$save_CPPFLAGS
11603         AC_LANG_POP([C++])
11604         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11606         FilterLibs "${POPPLER_LIBS}"
11607         POPPLER_LIBS="${filteredlibs}"
11608     else
11609         AC_MSG_RESULT([internal])
11610         SYSTEM_POPPLER=
11611         BUILD_TYPE="$BUILD_TYPE POPPLER"
11612         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11613     fi
11614     AC_DEFINE([ENABLE_PDFIMPORT],1)
11616 AC_SUBST(ENABLE_PDFIMPORT)
11617 AC_SUBST(SYSTEM_POPPLER)
11618 AC_SUBST(POPPLER_CFLAGS)
11619 AC_SUBST(POPPLER_LIBS)
11621 # Skia?
11622 AC_MSG_CHECKING([whether to build Skia])
11623 ENABLE_SKIA=
11624 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11625     if test "$enable_skia" = "debug"; then
11626         AC_MSG_RESULT([yes (debug)])
11627         ENABLE_SKIA_DEBUG=TRUE
11628     else
11629         AC_MSG_RESULT([yes])
11630         ENABLE_SKIA_DEBUG=
11631     fi
11632     ENABLE_SKIA=TRUE
11633     AC_DEFINE(HAVE_FEATURE_SKIA)
11634     BUILD_TYPE="$BUILD_TYPE SKIA"
11635 else
11636     AC_MSG_RESULT([no])
11638 AC_SUBST(ENABLE_SKIA)
11639 AC_SUBST(ENABLE_SKIA_DEBUG)
11641 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11642 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11643 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11644 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11645 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11646 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11647 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11648 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11649 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11651 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11652     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11653         AC_MSG_CHECKING([for Clang])
11654         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11655     else
11656         if test "$_os" = "WINNT"; then
11657             AC_MSG_CHECKING([for clang-cl])
11658             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11659                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11660                 dnl explicitly set -m32/-m64
11661                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11662                 LO_CLANG_CXX="$LO_CLANG_CC"
11663                 AC_MSG_RESULT([$LO_CLANG_CC])
11664             else
11665                 AC_MSG_RESULT([no])
11666             fi
11667         else
11668             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11669             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11670         fi
11671     fi
11672     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11673         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11674         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11675         if test "$clang2_ver" -lt 50002; then
11676             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11677             LO_CLANG_CC=
11678             LO_CLANG_CXX=
11679         fi
11680     fi
11681     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11682         # Skia is the default on Windows, so hard-require Clang.
11683         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11684         if test "$_os" = "WINNT"; then
11685             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11686         else
11687             AC_MSG_WARN([Clang compiler not found.])
11688         fi
11689     else
11691         save_CXX="$CXX"
11692         CXX="$LO_CLANG_CXX"
11693         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11694         flag_sse2=-msse2
11695         flag_ssse3=-mssse3
11696         flag_sse41=-msse4.1
11697         flag_sse42=-msse4.2
11698         flag_avx=-mavx
11699         flag_avx2=-mavx2
11700         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11701         flag_f16c=-mf16c
11702         flag_fma=-mfma
11704         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11705         AC_LANG_PUSH([C++])
11706         save_CXXFLAGS=$CXXFLAGS
11707         CXXFLAGS="$CXXFLAGS $flag_sse2"
11708         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11709             #include <emmintrin.h>
11710             int main () {
11711                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11712                 c = _mm_xor_si128 (a, b);
11713                 return 0;
11714             }
11715             ])],
11716             [can_compile_sse2=yes],
11717             [can_compile_sse2=no])
11718         AC_LANG_POP([C++])
11719         CXXFLAGS=$save_CXXFLAGS
11720         AC_MSG_RESULT([${can_compile_sse2}])
11721         if test "${can_compile_sse2}" = "yes" ; then
11722             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11723         fi
11725         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11726         AC_LANG_PUSH([C++])
11727         save_CXXFLAGS=$CXXFLAGS
11728         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11729         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11730             #include <tmmintrin.h>
11731             int main () {
11732                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11733                 c = _mm_maddubs_epi16 (a, b);
11734                 return 0;
11735             }
11736             ])],
11737             [can_compile_ssse3=yes],
11738             [can_compile_ssse3=no])
11739         AC_LANG_POP([C++])
11740         CXXFLAGS=$save_CXXFLAGS
11741         AC_MSG_RESULT([${can_compile_ssse3}])
11742         if test "${can_compile_ssse3}" = "yes" ; then
11743             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11744         fi
11746         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11747         AC_LANG_PUSH([C++])
11748         save_CXXFLAGS=$CXXFLAGS
11749         CXXFLAGS="$CXXFLAGS $flag_sse41"
11750         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11751             #include <smmintrin.h>
11752             int main () {
11753                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11754                 c = _mm_cmpeq_epi64 (a, b);
11755                 return 0;
11756             }
11757             ])],
11758             [can_compile_sse41=yes],
11759             [can_compile_sse41=no])
11760         AC_LANG_POP([C++])
11761         CXXFLAGS=$save_CXXFLAGS
11762         AC_MSG_RESULT([${can_compile_sse41}])
11763         if test "${can_compile_sse41}" = "yes" ; then
11764             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11765         fi
11767         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11768         AC_LANG_PUSH([C++])
11769         save_CXXFLAGS=$CXXFLAGS
11770         CXXFLAGS="$CXXFLAGS $flag_sse42"
11771         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11772             #include <nmmintrin.h>
11773             int main () {
11774                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11775                 c = _mm_cmpgt_epi64 (a, b);
11776                 return 0;
11777             }
11778             ])],
11779             [can_compile_sse42=yes],
11780             [can_compile_sse42=no])
11781         AC_LANG_POP([C++])
11782         CXXFLAGS=$save_CXXFLAGS
11783         AC_MSG_RESULT([${can_compile_sse42}])
11784         if test "${can_compile_sse42}" = "yes" ; then
11785             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11786         fi
11788         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11789         AC_LANG_PUSH([C++])
11790         save_CXXFLAGS=$CXXFLAGS
11791         CXXFLAGS="$CXXFLAGS $flag_avx"
11792         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11793             #include <immintrin.h>
11794             int main () {
11795                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11796                 c = _mm256_xor_ps(a, b);
11797                 return 0;
11798             }
11799             ])],
11800             [can_compile_avx=yes],
11801             [can_compile_avx=no])
11802         AC_LANG_POP([C++])
11803         CXXFLAGS=$save_CXXFLAGS
11804         AC_MSG_RESULT([${can_compile_avx}])
11805         if test "${can_compile_avx}" = "yes" ; then
11806             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11807         fi
11809         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11810         AC_LANG_PUSH([C++])
11811         save_CXXFLAGS=$CXXFLAGS
11812         CXXFLAGS="$CXXFLAGS $flag_avx2"
11813         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11814             #include <immintrin.h>
11815             int main () {
11816                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11817                 c = _mm256_maddubs_epi16(a, b);
11818                 return 0;
11819             }
11820             ])],
11821             [can_compile_avx2=yes],
11822             [can_compile_avx2=no])
11823         AC_LANG_POP([C++])
11824         CXXFLAGS=$save_CXXFLAGS
11825         AC_MSG_RESULT([${can_compile_avx2}])
11826         if test "${can_compile_avx2}" = "yes" ; then
11827             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11828         fi
11830         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11831         AC_LANG_PUSH([C++])
11832         save_CXXFLAGS=$CXXFLAGS
11833         CXXFLAGS="$CXXFLAGS $flag_avx512"
11834         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11835             #include <immintrin.h>
11836             int main () {
11837                 __m512i a = _mm512_loadu_si512(0);
11838                 return 0;
11839             }
11840             ])],
11841             [can_compile_avx512=yes],
11842             [can_compile_avx512=no])
11843         AC_LANG_POP([C++])
11844         CXXFLAGS=$save_CXXFLAGS
11845         AC_MSG_RESULT([${can_compile_avx512}])
11846         if test "${can_compile_avx512}" = "yes" ; then
11847             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11848         fi
11850         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11851         AC_LANG_PUSH([C++])
11852         save_CXXFLAGS=$CXXFLAGS
11853         CXXFLAGS="$CXXFLAGS $flag_f16c"
11854         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11855             #include <immintrin.h>
11856             int main () {
11857                 __m128i a = _mm_set1_epi32 (0);
11858                 __m128 c;
11859                 c = _mm_cvtph_ps(a);
11860                 return 0;
11861             }
11862             ])],
11863             [can_compile_f16c=yes],
11864             [can_compile_f16c=no])
11865         AC_LANG_POP([C++])
11866         CXXFLAGS=$save_CXXFLAGS
11867         AC_MSG_RESULT([${can_compile_f16c}])
11868         if test "${can_compile_f16c}" = "yes" ; then
11869             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11870         fi
11872         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11873         AC_LANG_PUSH([C++])
11874         save_CXXFLAGS=$CXXFLAGS
11875         CXXFLAGS="$CXXFLAGS $flag_fma"
11876         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11877             #include <immintrin.h>
11878             int main () {
11879                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11880                 d = _mm256_fmadd_ps(a, b, c);
11881                 return 0;
11882             }
11883             ])],
11884             [can_compile_fma=yes],
11885             [can_compile_fma=no])
11886         AC_LANG_POP([C++])
11887         CXXFLAGS=$save_CXXFLAGS
11888         AC_MSG_RESULT([${can_compile_fma}])
11889         if test "${can_compile_fma}" = "yes" ; then
11890             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11891         fi
11893         CXX="$save_CXX"
11894     fi
11897 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11899 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11900     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11901     AC_LANG_PUSH([C])
11902     save_CC="$CC"
11903     CC="$LO_CLANG_CC"
11904     save_CFLAGS=$CFLAGS
11905     CFLAGS="$CFLAGS --ccache-skip -O2"
11906     dnl an empty program will do, we're checking the compiler flags
11907     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11908                       [use_ccache=yes], [use_ccache=no])
11909     CFLAGS=$save_CFLAGS
11910     CC=$save_CC
11911     if test $use_ccache = yes; then
11912         AC_MSG_RESULT([yes])
11913     else
11914         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11915         AC_MSG_RESULT([no])
11916     fi
11917     AC_LANG_POP([C])
11919     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11920     AC_LANG_PUSH([C++])
11921     save_CXX="$CXX"
11922     CXX="$LO_CLANG_CXX"
11923     save_CXXFLAGS=$CXXFLAGS
11924     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11925     dnl an empty program will do, we're checking the compiler flags
11926     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11927                       [use_ccache=yes], [use_ccache=no])
11928     if test $use_ccache = yes; then
11929         AC_MSG_RESULT([yes])
11930     else
11931         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11932         AC_MSG_RESULT([no])
11933     fi
11934     CXXFLAGS=$save_CXXFLAGS
11935     CXX=$save_CXX
11936     AC_LANG_POP([C++])
11939 AC_SUBST(LO_CLANG_CC)
11940 AC_SUBST(LO_CLANG_CXX)
11941 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
11942 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
11943 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
11944 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
11945 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
11946 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
11947 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
11948 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
11949 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
11950 AC_SUBST(CLANG_USE_LD)
11952 SYSTEM_GPGMEPP=
11954 if test "$enable_gpgmepp" = no; then
11955     AC_MSG_CHECKING([whether to enable gpgmepp])
11956     AC_MSG_RESULT([no])
11957 elif test "$enable_mpl_subset" = "yes"; then
11958     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11959     AC_MSG_RESULT([yes])
11960 elif test "$enable_fuzzers" = "yes"; then
11961     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11962     AC_MSG_RESULT([yes])
11963 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11964     dnl ===================================================================
11965     dnl Check for system gpgme
11966     dnl ===================================================================
11967     AC_MSG_CHECKING([which gpgmepp to use])
11968     if test "$with_system_gpgmepp" = "yes"; then
11969         AC_MSG_RESULT([external])
11970         SYSTEM_GPGMEPP=TRUE
11972         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11973         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11974             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11975         # progress_callback is the only func with plain C linkage
11976         # checking for it also filters out older, KDE-dependent libgpgmepp versions
11977         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11978             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11979         AC_CHECK_HEADER(gpgme.h, [],
11980             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11981     else
11982         AC_MSG_RESULT([internal])
11983         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
11984         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
11986         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
11987         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
11988         if test "$_os" != "WINNT"; then
11989             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
11990             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
11991         fi
11992     fi
11993     ENABLE_GPGMEPP=TRUE
11994     AC_DEFINE([HAVE_FEATURE_GPGME])
11995     AC_PATH_PROG(GPG, gpg)
11996     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
11997     # so let's exclude that manually for the moment
11998     if test -n "$GPG" -a "$_os" != "WINNT"; then
11999         # make sure we not only have a working gpgme, but a full working
12000         # gpg installation to run OpenPGP signature verification
12001         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12002     fi
12003     if test "$_os" = "Linux"; then
12004       uid=`id -u`
12005       AC_MSG_CHECKING([for /run/user/$uid])
12006       if test -d /run/user/$uid; then
12007         AC_MSG_RESULT([yes])
12008         AC_PATH_PROG(GPGCONF, gpgconf)
12010         # Older versions of gpgconf are not working as expected, since
12011         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12012         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12013         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12014         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12015         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12016         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12017         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12018           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12019           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12020           if $GPGCONF --dump-options > /dev/null ; then
12021             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12022               AC_MSG_RESULT([yes])
12023               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12024               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12025             else
12026               AC_MSG_RESULT([no])
12027             fi
12028           else
12029             AC_MSG_RESULT([no. missing or broken gpgconf?])
12030           fi
12031         else
12032           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12033         fi
12034       else
12035         AC_MSG_RESULT([no])
12036      fi
12037    fi
12039 AC_SUBST(ENABLE_GPGMEPP)
12040 AC_SUBST(SYSTEM_GPGMEPP)
12041 AC_SUBST(GPG_ERROR_CFLAGS)
12042 AC_SUBST(GPG_ERROR_LIBS)
12043 AC_SUBST(LIBASSUAN_CFLAGS)
12044 AC_SUBST(LIBASSUAN_LIBS)
12045 AC_SUBST(GPGMEPP_CFLAGS)
12046 AC_SUBST(GPGMEPP_LIBS)
12048 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12049 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12050     AC_MSG_RESULT([yes])
12051     ENABLE_MEDIAWIKI=TRUE
12052     BUILD_TYPE="$BUILD_TYPE XSLTML"
12053     if test  "x$with_java" = "xno"; then
12054         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12055     fi
12056 else
12057     AC_MSG_RESULT([no])
12058     ENABLE_MEDIAWIKI=
12059     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12061 AC_SUBST(ENABLE_MEDIAWIKI)
12063 AC_MSG_CHECKING([whether to build the Report Builder])
12064 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12065     AC_MSG_RESULT([yes])
12066     ENABLE_REPORTBUILDER=TRUE
12067     AC_MSG_CHECKING([which jfreereport libs to use])
12068     if test "$with_system_jfreereport" = "yes"; then
12069         SYSTEM_JFREEREPORT=TRUE
12070         AC_MSG_RESULT([external])
12071         if test -z $SAC_JAR; then
12072             SAC_JAR=/usr/share/java/sac.jar
12073         fi
12074         if ! test -f $SAC_JAR; then
12075              AC_MSG_ERROR(sac.jar not found.)
12076         fi
12078         if test -z $LIBXML_JAR; then
12079             if test -f /usr/share/java/libxml-1.0.0.jar; then
12080                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12081             elif test -f /usr/share/java/libxml.jar; then
12082                 LIBXML_JAR=/usr/share/java/libxml.jar
12083             else
12084                 AC_MSG_ERROR(libxml.jar replacement not found.)
12085             fi
12086         elif ! test -f $LIBXML_JAR; then
12087             AC_MSG_ERROR(libxml.jar not found.)
12088         fi
12090         if test -z $FLUTE_JAR; then
12091             if test -f /usr/share/java/flute-1.3.0.jar; then
12092                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12093             elif test -f /usr/share/java/flute.jar; then
12094                 FLUTE_JAR=/usr/share/java/flute.jar
12095             else
12096                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12097             fi
12098         elif ! test -f $FLUTE_JAR; then
12099             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12100         fi
12102         if test -z $JFREEREPORT_JAR; then
12103             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12104                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12105             elif test -f /usr/share/java/flow-engine.jar; then
12106                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12107             else
12108                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12109             fi
12110         elif ! test -f  $JFREEREPORT_JAR; then
12111                 AC_MSG_ERROR(jfreereport.jar not found.)
12112         fi
12114         if test -z $LIBLAYOUT_JAR; then
12115             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12116                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12117             elif test -f /usr/share/java/liblayout.jar; then
12118                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12119             else
12120                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12121             fi
12122         elif ! test -f $LIBLAYOUT_JAR; then
12123                 AC_MSG_ERROR(liblayout.jar not found.)
12124         fi
12126         if test -z $LIBLOADER_JAR; then
12127             if test -f /usr/share/java/libloader-1.0.0.jar; then
12128                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12129             elif test -f /usr/share/java/libloader.jar; then
12130                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12131             else
12132                 AC_MSG_ERROR(libloader.jar replacement not found.)
12133             fi
12134         elif ! test -f  $LIBLOADER_JAR; then
12135             AC_MSG_ERROR(libloader.jar not found.)
12136         fi
12138         if test -z $LIBFORMULA_JAR; then
12139             if test -f /usr/share/java/libformula-0.2.0.jar; then
12140                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12141             elif test -f /usr/share/java/libformula.jar; then
12142                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12143             else
12144                 AC_MSG_ERROR(libformula.jar replacement not found.)
12145             fi
12146         elif ! test -f $LIBFORMULA_JAR; then
12147                 AC_MSG_ERROR(libformula.jar not found.)
12148         fi
12150         if test -z $LIBREPOSITORY_JAR; then
12151             if test -f /usr/share/java/librepository-1.0.0.jar; then
12152                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12153             elif test -f /usr/share/java/librepository.jar; then
12154                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12155             else
12156                 AC_MSG_ERROR(librepository.jar replacement not found.)
12157             fi
12158         elif ! test -f $LIBREPOSITORY_JAR; then
12159             AC_MSG_ERROR(librepository.jar not found.)
12160         fi
12162         if test -z $LIBFONTS_JAR; then
12163             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12164                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12165             elif test -f /usr/share/java/libfonts.jar; then
12166                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12167             else
12168                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12169             fi
12170         elif ! test -f $LIBFONTS_JAR; then
12171                 AC_MSG_ERROR(libfonts.jar not found.)
12172         fi
12174         if test -z $LIBSERIALIZER_JAR; then
12175             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12176                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12177             elif test -f /usr/share/java/libserializer.jar; then
12178                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12179             else
12180                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12181             fi
12182         elif ! test -f $LIBSERIALIZER_JAR; then
12183                 AC_MSG_ERROR(libserializer.jar not found.)
12184         fi
12186         if test -z $LIBBASE_JAR; then
12187             if test -f /usr/share/java/libbase-1.0.0.jar; then
12188                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12189             elif test -f /usr/share/java/libbase.jar; then
12190                 LIBBASE_JAR=/usr/share/java/libbase.jar
12191             else
12192                 AC_MSG_ERROR(libbase.jar replacement not found.)
12193             fi
12194         elif ! test -f $LIBBASE_JAR; then
12195             AC_MSG_ERROR(libbase.jar not found.)
12196         fi
12198     else
12199         AC_MSG_RESULT([internal])
12200         SYSTEM_JFREEREPORT=
12201         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12202         NEED_ANT=TRUE
12203     fi
12204 else
12205     AC_MSG_RESULT([no])
12206     ENABLE_REPORTBUILDER=
12207     SYSTEM_JFREEREPORT=
12209 AC_SUBST(ENABLE_REPORTBUILDER)
12210 AC_SUBST(SYSTEM_JFREEREPORT)
12211 AC_SUBST(SAC_JAR)
12212 AC_SUBST(LIBXML_JAR)
12213 AC_SUBST(FLUTE_JAR)
12214 AC_SUBST(JFREEREPORT_JAR)
12215 AC_SUBST(LIBBASE_JAR)
12216 AC_SUBST(LIBLAYOUT_JAR)
12217 AC_SUBST(LIBLOADER_JAR)
12218 AC_SUBST(LIBFORMULA_JAR)
12219 AC_SUBST(LIBREPOSITORY_JAR)
12220 AC_SUBST(LIBFONTS_JAR)
12221 AC_SUBST(LIBSERIALIZER_JAR)
12223 # this has to be here because both the Wiki Publisher and the SRB use
12224 # commons-logging
12225 COMMONS_LOGGING_VERSION=1.2
12226 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12227     AC_MSG_CHECKING([which Apache commons-* libs to use])
12228     if test "$with_system_apache_commons" = "yes"; then
12229         SYSTEM_APACHE_COMMONS=TRUE
12230         AC_MSG_RESULT([external])
12231         if test -z $COMMONS_LOGGING_JAR; then
12232             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12233                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12234            elif test -f /usr/share/java/commons-logging.jar; then
12235                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12236             else
12237                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12238             fi
12239         elif ! test -f $COMMONS_LOGGING_JAR; then
12240             AC_MSG_ERROR(commons-logging.jar not found.)
12241         fi
12242     else
12243         AC_MSG_RESULT([internal])
12244         SYSTEM_APACHE_COMMONS=
12245         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12246         NEED_ANT=TRUE
12247     fi
12249 AC_SUBST(SYSTEM_APACHE_COMMONS)
12250 AC_SUBST(COMMONS_LOGGING_JAR)
12251 AC_SUBST(COMMONS_LOGGING_VERSION)
12253 # scripting provider for BeanShell?
12254 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12255 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12256     AC_MSG_RESULT([yes])
12257     ENABLE_SCRIPTING_BEANSHELL=TRUE
12259     dnl ===================================================================
12260     dnl Check for system beanshell
12261     dnl ===================================================================
12262     AC_MSG_CHECKING([which beanshell to use])
12263     if test "$with_system_beanshell" = "yes"; then
12264         AC_MSG_RESULT([external])
12265         SYSTEM_BSH=TRUE
12266         if test -z $BSH_JAR; then
12267             BSH_JAR=/usr/share/java/bsh.jar
12268         fi
12269         if ! test -f $BSH_JAR; then
12270             AC_MSG_ERROR(bsh.jar not found.)
12271         fi
12272     else
12273         AC_MSG_RESULT([internal])
12274         SYSTEM_BSH=
12275         BUILD_TYPE="$BUILD_TYPE BSH"
12276     fi
12277 else
12278     AC_MSG_RESULT([no])
12279     ENABLE_SCRIPTING_BEANSHELL=
12280     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12282 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12283 AC_SUBST(SYSTEM_BSH)
12284 AC_SUBST(BSH_JAR)
12286 # scripting provider for JavaScript?
12287 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12288 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12289     AC_MSG_RESULT([yes])
12290     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12292     dnl ===================================================================
12293     dnl Check for system rhino
12294     dnl ===================================================================
12295     AC_MSG_CHECKING([which rhino to use])
12296     if test "$with_system_rhino" = "yes"; then
12297         AC_MSG_RESULT([external])
12298         SYSTEM_RHINO=TRUE
12299         if test -z $RHINO_JAR; then
12300             RHINO_JAR=/usr/share/java/js.jar
12301         fi
12302         if ! test -f $RHINO_JAR; then
12303             AC_MSG_ERROR(js.jar not found.)
12304         fi
12305     else
12306         AC_MSG_RESULT([internal])
12307         SYSTEM_RHINO=
12308         BUILD_TYPE="$BUILD_TYPE RHINO"
12309         NEED_ANT=TRUE
12310     fi
12311 else
12312     AC_MSG_RESULT([no])
12313     ENABLE_SCRIPTING_JAVASCRIPT=
12314     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12316 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12317 AC_SUBST(SYSTEM_RHINO)
12318 AC_SUBST(RHINO_JAR)
12320 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12321 # paths should be added to library search path. So lets put all 64-bit
12322 # platforms there.
12323 supports_multilib=
12324 case "$host_cpu" in
12325 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12326     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12327         supports_multilib="yes"
12328     fi
12329     ;;
12331     ;;
12332 esac
12334 dnl ===================================================================
12335 dnl QT5 Integration
12336 dnl ===================================================================
12338 QT5_CFLAGS=""
12339 QT5_LIBS=""
12340 QMAKE5="qmake"
12341 MOC5="moc"
12342 QT5_GOBJECT_CFLAGS=""
12343 QT5_GOBJECT_LIBS=""
12344 QT5_HAVE_GOBJECT=""
12345 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12346         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12347         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12348 then
12349     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12350     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12352     if test -n "$supports_multilib"; then
12353         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12354     fi
12356     qt5_test_include="QtWidgets/qapplication.h"
12357     qt5_test_library="libQt5Widgets.so"
12359     dnl Check for qmake5
12360     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12361     if test "$QMAKE5" = "no"; then
12362         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12363     else
12364         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12365         if test -z "$qmake5_test_ver"; then
12366             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12367         fi
12368         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12369         qt5_minimal_minor="6"
12370         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12371             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12372         else
12373             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12374         fi
12375     fi
12377     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12378     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12380     AC_MSG_CHECKING([for Qt5 headers])
12381     qt5_incdir="no"
12382     for inc_dir in $qt5_incdirs; do
12383         if test -r "$inc_dir/$qt5_test_include"; then
12384             qt5_incdir="$inc_dir"
12385             break
12386         fi
12387     done
12388     AC_MSG_RESULT([$qt5_incdir])
12389     if test "x$qt5_incdir" = "xno"; then
12390         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12391     fi
12392     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12393     AC_LANG_PUSH([C++])
12394     save_CPPFLAGS=$CPPFLAGS
12395     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12396     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12397         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12398     CPPFLAGS=$save_CPPFLAGS
12399     AC_LANG_POP([C++])
12401     AC_MSG_CHECKING([for Qt5 libraries])
12402     qt5_libdir="no"
12403     for lib_dir in $qt5_libdirs; do
12404         if test -r "$lib_dir/$qt5_test_library"; then
12405             qt5_libdir="$lib_dir"
12406             break
12407         fi
12408     done
12409     AC_MSG_RESULT([$qt5_libdir])
12410     if test "x$qt5_libdir" = "xno"; then
12411         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12412     fi
12414     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12415     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12416     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12418     if test "$USING_X11" = TRUE; then
12419         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12420         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12421             QT5_HAVE_XCB_ICCCM=1
12422             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12423         ],[
12424             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)])
12425             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12426         ])
12427         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12428         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12429         QT5_USING_X11=1
12430         AC_DEFINE(QT5_USING_X11)
12431     fi
12433     dnl Check for Meta Object Compiler
12435     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12436     if test "$MOC5" = "no"; then
12437         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12438 the root of your Qt installation by exporting QT5DIR before running "configure".])
12439     fi
12441     if test "$build_gstreamer_1_0" = "yes"; then
12442         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12443                 QT5_HAVE_GOBJECT=1
12444                 AC_DEFINE(QT5_HAVE_GOBJECT)
12445             ],
12446             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12447         )
12448     fi
12450 AC_SUBST(QT5_CFLAGS)
12451 AC_SUBST(QT5_LIBS)
12452 AC_SUBST(MOC5)
12453 AC_SUBST(QT5_GOBJECT_CFLAGS)
12454 AC_SUBST(QT5_GOBJECT_LIBS)
12455 AC_SUBST(QT5_HAVE_GOBJECT)
12457 dnl ===================================================================
12458 dnl KF5 Integration
12459 dnl ===================================================================
12461 KF5_CFLAGS=""
12462 KF5_LIBS=""
12463 KF5_CONFIG="kf5-config"
12464 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12465         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12466 then
12467     if test "$OS" = "HAIKU"; then
12468         haiku_arch="`echo $RTL_ARCH | tr X x`"
12469         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12470         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12471     fi
12473     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12474     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12475     if test -n "$supports_multilib"; then
12476         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12477     fi
12479     kf5_test_include="KF5/kcoreaddons_version.h"
12480     kf5_test_library="libKF5CoreAddons.so"
12481     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12483     dnl kf5 KDE4 support compatibility installed
12484     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12485     if test "$KF5_CONFIG" != "no"; then
12486         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12487         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12488     fi
12490     dnl Check for KF5 headers
12491     AC_MSG_CHECKING([for KF5 headers])
12492     kf5_incdir="no"
12493     for kf5_check in $kf5_incdirs; do
12494         if test -r "$kf5_check/$kf5_test_include"; then
12495             kf5_incdir="$kf5_check/KF5"
12496             break
12497         fi
12498     done
12499     AC_MSG_RESULT([$kf5_incdir])
12500     if test "x$kf5_incdir" = "xno"; then
12501         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12502     fi
12504     dnl Check for KF5 libraries
12505     AC_MSG_CHECKING([for KF5 libraries])
12506     kf5_libdir="no"
12507     for kf5_check in $kf5_libdirs; do
12508         if test -r "$kf5_check/$kf5_test_library"; then
12509             kf5_libdir="$kf5_check"
12510             break
12511         fi
12512     done
12514     AC_MSG_RESULT([$kf5_libdir])
12515     if test "x$kf5_libdir" = "xno"; then
12516         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12517     fi
12519     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"
12520     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12521     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12523     if test "$USING_X11" = TRUE; then
12524         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12525     fi
12527     AC_LANG_PUSH([C++])
12528     save_CXXFLAGS=$CXXFLAGS
12529     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12530     AC_MSG_CHECKING([whether KDE is >= 5.0])
12531        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12532 #include <kcoreaddons_version.h>
12534 int main(int argc, char **argv) {
12535        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12536        else return 1;
12538        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12539     CXXFLAGS=$save_CXXFLAGS
12540     AC_LANG_POP([C++])
12542 AC_SUBST(KF5_CFLAGS)
12543 AC_SUBST(KF5_LIBS)
12545 dnl ===================================================================
12546 dnl Test whether to include Evolution 2 support
12547 dnl ===================================================================
12548 AC_MSG_CHECKING([whether to enable evolution 2 support])
12549 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12550     AC_MSG_RESULT([yes])
12551     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12552     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12553     FilterLibs "${GOBJECT_LIBS}"
12554     GOBJECT_LIBS="${filteredlibs}"
12555     ENABLE_EVOAB2="TRUE"
12556 else
12557     ENABLE_EVOAB2=""
12558     AC_MSG_RESULT([no])
12560 AC_SUBST(ENABLE_EVOAB2)
12561 AC_SUBST(GOBJECT_CFLAGS)
12562 AC_SUBST(GOBJECT_LIBS)
12564 dnl ===================================================================
12565 dnl Test which themes to include
12566 dnl ===================================================================
12567 AC_MSG_CHECKING([which themes to include])
12568 # if none given use default subset of available themes
12569 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12570     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"
12573 WITH_THEMES=""
12574 if test "x$with_theme" != "xno"; then
12575     for theme in $with_theme; do
12576         case $theme in
12577         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" ;;
12578         default) real_theme=colibre ;;
12579         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12580         esac
12581         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12582     done
12584 AC_MSG_RESULT([$WITH_THEMES])
12585 AC_SUBST([WITH_THEMES])
12586 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12587 for theme in $with_theme; do
12588     case $theme in
12589     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12590     *) ;;
12591     esac
12592 done
12594 dnl ===================================================================
12595 dnl Test whether to integrate helppacks into the product's installer
12596 dnl ===================================================================
12597 AC_MSG_CHECKING([for helppack integration])
12598 if test "$with_helppack_integration" = "no"; then
12599     AC_MSG_RESULT([no integration])
12600 else
12601     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12602     AC_MSG_RESULT([integration])
12605 ###############################################################################
12606 # Extensions checking
12607 ###############################################################################
12608 AC_MSG_CHECKING([for extensions integration])
12609 if test "x$enable_extension_integration" != "xno"; then
12610     WITH_EXTENSION_INTEGRATION=TRUE
12611     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12612     AC_MSG_RESULT([yes, use integration])
12613 else
12614     WITH_EXTENSION_INTEGRATION=
12615     AC_MSG_RESULT([no, do not integrate])
12617 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12619 dnl Should any extra extensions be included?
12620 dnl There are standalone tests for each of these below.
12621 WITH_EXTRA_EXTENSIONS=
12622 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12624 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12625 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12626 if test "x$with_java" != "xno"; then
12627     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12628     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12631 AC_MSG_CHECKING([whether to build opens___.ttf])
12632 if test "$enable_build_opensymbol" = "yes"; then
12633     AC_MSG_RESULT([yes])
12634     AC_PATH_PROG(FONTFORGE, fontforge)
12635     if test -z "$FONTFORGE"; then
12636         AC_MSG_ERROR([fontforge not installed])
12637     fi
12638 else
12639     AC_MSG_RESULT([no])
12640     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12641     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12643 AC_SUBST(OPENSYMBOL_TTF)
12644 AC_SUBST(FONTFORGE)
12646 dnl ===================================================================
12647 dnl Test whether to include fonts
12648 dnl ===================================================================
12649 AC_MSG_CHECKING([whether to include third-party fonts])
12650 if test "$with_fonts" != "no"; then
12651     AC_MSG_RESULT([yes])
12652     WITH_FONTS=TRUE
12653     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12654     AC_DEFINE(HAVE_MORE_FONTS)
12655 else
12656     AC_MSG_RESULT([no])
12657     WITH_FONTS=
12658     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12660 AC_SUBST(WITH_FONTS)
12663 dnl ===================================================================
12664 dnl Test whether to enable online update service
12665 dnl ===================================================================
12666 AC_MSG_CHECKING([whether to enable online update])
12667 ENABLE_ONLINE_UPDATE=
12668 ENABLE_ONLINE_UPDATE_MAR=
12669 UPDATE_CONFIG=
12670 if test "$enable_online_update" = ""; then
12671     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12672         AC_MSG_RESULT([yes])
12673         ENABLE_ONLINE_UPDATE="TRUE"
12674     else
12675         AC_MSG_RESULT([no])
12676     fi
12677 else
12678     if test "$enable_online_update" = "mar"; then
12679         AC_MSG_RESULT([yes - MAR-based online update])
12680         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12681         if test "$with_update_config" = ""; then
12682             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12683         fi
12684         UPDATE_CONFIG="$with_update_config"
12685         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12686     elif test "$enable_online_update" = "yes"; then
12687         AC_MSG_RESULT([yes])
12688         ENABLE_ONLINE_UPDATE="TRUE"
12689     else
12690         AC_MSG_RESULT([no])
12691     fi
12693 AC_SUBST(ENABLE_ONLINE_UPDATE)
12694 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12695 AC_SUBST(UPDATE_CONFIG)
12697 dnl ===================================================================
12698 dnl Test whether we need bzip2
12699 dnl ===================================================================
12700 SYSTEM_BZIP2=
12701 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12702     AC_MSG_CHECKING([whether to use system bzip2])
12703     if test "$with_system_bzip2" = yes; then
12704         SYSTEM_BZIP2=TRUE
12705         AC_MSG_RESULT([yes])
12706         PKG_CHECK_MODULES(BZIP2, bzip2)
12707         FilterLibs "${BZIP2_LIBS}"
12708         BZIP2_LIBS="${filteredlibs}"
12709     else
12710         AC_MSG_RESULT([no])
12711         BUILD_TYPE="$BUILD_TYPE BZIP2"
12712     fi
12714 AC_SUBST(SYSTEM_BZIP2)
12715 AC_SUBST(BZIP2_CFLAGS)
12716 AC_SUBST(BZIP2_LIBS)
12718 dnl ===================================================================
12719 dnl Test whether to enable extension update
12720 dnl ===================================================================
12721 AC_MSG_CHECKING([whether to enable extension update])
12722 ENABLE_EXTENSION_UPDATE=
12723 if test "x$enable_extension_update" = "xno"; then
12724     AC_MSG_RESULT([no])
12725 else
12726     AC_MSG_RESULT([yes])
12727     ENABLE_EXTENSION_UPDATE="TRUE"
12728     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12729     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12731 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12734 dnl ===================================================================
12735 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12736 dnl ===================================================================
12737 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12738 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12739     AC_MSG_RESULT([no])
12740     ENABLE_SILENT_MSI=
12741 else
12742     AC_MSG_RESULT([yes])
12743     ENABLE_SILENT_MSI=TRUE
12744     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12746 AC_SUBST(ENABLE_SILENT_MSI)
12748 AC_MSG_CHECKING([whether and how to use Xinerama])
12749 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12750     if test "$x_libraries" = "default_x_libraries"; then
12751         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12752         if test "x$XINERAMALIB" = x; then
12753            XINERAMALIB="/usr/lib"
12754         fi
12755     else
12756         XINERAMALIB="$x_libraries"
12757     fi
12758     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12759         # we have both versions, let the user decide but use the dynamic one
12760         # per default
12761         USE_XINERAMA=TRUE
12762         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12763             XINERAMA_LINK=dynamic
12764         else
12765             XINERAMA_LINK=static
12766         fi
12767     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12768         # we have only the dynamic version
12769         USE_XINERAMA=TRUE
12770         XINERAMA_LINK=dynamic
12771     elif test -e "$XINERAMALIB/libXinerama.a"; then
12772         # static version
12773         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12774             USE_XINERAMA=TRUE
12775             XINERAMA_LINK=static
12776         else
12777             USE_XINERAMA=
12778             XINERAMA_LINK=none
12779         fi
12780     else
12781         # no Xinerama
12782         USE_XINERAMA=
12783         XINERAMA_LINK=none
12784     fi
12785     if test "$USE_XINERAMA" = "TRUE"; then
12786         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12787         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12788             [AC_MSG_ERROR(Xinerama header not found.)], [])
12789         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12790         if test "x$XEXTLIB" = x; then
12791            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12792         fi
12793         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12794         if test "$_os" = "FreeBSD"; then
12795             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12796         fi
12797         if test "$_os" = "Linux"; then
12798             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12799         fi
12800         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12801             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12802     else
12803         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12804     fi
12805 else
12806     USE_XINERAMA=
12807     XINERAMA_LINK=none
12808     AC_MSG_RESULT([no])
12810 AC_SUBST(USE_XINERAMA)
12811 AC_SUBST(XINERAMA_LINK)
12813 dnl ===================================================================
12814 dnl Test whether to build cairo or rely on the system version
12815 dnl ===================================================================
12817 if test "$USING_X11" = TRUE; then
12818     # Used in vcl/Library_vclplug_gen.mk
12819     test_cairo=yes
12822 if test "$test_cairo" = "yes"; then
12823     AC_MSG_CHECKING([whether to use the system cairo])
12825     : ${with_system_cairo:=$with_system_libs}
12826     if test "$with_system_cairo" = "yes"; then
12827         SYSTEM_CAIRO=TRUE
12828         AC_MSG_RESULT([yes])
12830         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12831         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12832         FilterLibs "${CAIRO_LIBS}"
12833         CAIRO_LIBS="${filteredlibs}"
12835         if test "$test_xrender" = "yes"; then
12836             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12837             AC_LANG_PUSH([C])
12838             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12839 #ifdef PictStandardA8
12840 #else
12841       return fail;
12842 #endif
12843 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12845             AC_LANG_POP([C])
12846         fi
12847     else
12848         SYSTEM_CAIRO=
12849         AC_MSG_RESULT([no])
12851         BUILD_TYPE="$BUILD_TYPE CAIRO"
12852     fi
12855 AC_SUBST(SYSTEM_CAIRO)
12856 AC_SUBST(CAIRO_CFLAGS)
12857 AC_SUBST(CAIRO_LIBS)
12859 dnl ===================================================================
12860 dnl Test whether to use avahi
12861 dnl ===================================================================
12862 if test "$_os" = "WINNT"; then
12863     # Windows uses bundled mDNSResponder
12864     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12865 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12866     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12867                       [ENABLE_AVAHI="TRUE"])
12868     AC_DEFINE(HAVE_FEATURE_AVAHI)
12869     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12870     FilterLibs "${AVAHI_LIBS}"
12871     AVAHI_LIBS="${filteredlibs}"
12874 AC_SUBST(ENABLE_AVAHI)
12875 AC_SUBST(AVAHI_CFLAGS)
12876 AC_SUBST(AVAHI_LIBS)
12878 dnl ===================================================================
12879 dnl Test whether to use liblangtag
12880 dnl ===================================================================
12881 SYSTEM_LIBLANGTAG=
12882 AC_MSG_CHECKING([whether to use system liblangtag])
12883 if test "$with_system_liblangtag" = yes; then
12884     SYSTEM_LIBLANGTAG=TRUE
12885     AC_MSG_RESULT([yes])
12886     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12887     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12888     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12889     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12890     FilterLibs "${LIBLANGTAG_LIBS}"
12891     LIBLANGTAG_LIBS="${filteredlibs}"
12892 else
12893     SYSTEM_LIBLANGTAG=
12894     AC_MSG_RESULT([no])
12895     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12896     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12897     if test "$COM" = "MSC"; then
12898         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12899     else
12900         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12901     fi
12903 AC_SUBST(SYSTEM_LIBLANGTAG)
12904 AC_SUBST(LIBLANGTAG_CFLAGS)
12905 AC_SUBST(LIBLANGTAG_LIBS)
12907 dnl ===================================================================
12908 dnl Test whether to build libpng or rely on the system version
12909 dnl ===================================================================
12911 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12913 dnl ===================================================================
12914 dnl Check for runtime JVM search path
12915 dnl ===================================================================
12916 if test "$ENABLE_JAVA" != ""; then
12917     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12918     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12919         AC_MSG_RESULT([yes])
12920         if ! test -d "$with_jvm_path"; then
12921             AC_MSG_ERROR(["$with_jvm_path" not a directory])
12922         fi
12923         if ! test -d "$with_jvm_path"jvm; then
12924             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12925         fi
12926         JVM_ONE_PATH_CHECK="$with_jvm_path"
12927         AC_SUBST(JVM_ONE_PATH_CHECK)
12928     else
12929         AC_MSG_RESULT([no])
12930     fi
12933 dnl ===================================================================
12934 dnl Test for the presence of Ant and that it works
12935 dnl ===================================================================
12937 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
12938     ANT_HOME=; export ANT_HOME
12939     WITH_ANT_HOME=; export WITH_ANT_HOME
12940     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12941         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12942             if test "$_os" = "WINNT"; then
12943                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12944             else
12945                 with_ant_home="$LODE_HOME/opt/ant"
12946             fi
12947         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
12948             with_ant_home="$LODE_HOME/opt/ant"
12949         fi
12950     fi
12951     if test -z "$with_ant_home"; then
12952         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12953     else
12954         if test "$_os" = "WINNT"; then
12955             # AC_PATH_PROGS needs unix path
12956             with_ant_home=`cygpath -u "$with_ant_home"`
12957         fi
12958         AbsolutePath "$with_ant_home"
12959         with_ant_home=$absolute_path
12960         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12961         WITH_ANT_HOME=$with_ant_home
12962         ANT_HOME=$with_ant_home
12963     fi
12965     if test -z "$ANT"; then
12966         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12967     else
12968         # resolve relative or absolute symlink
12969         while test -h "$ANT"; do
12970             a_cwd=`pwd`
12971             a_basename=`basename "$ANT"`
12972             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12973             cd "`dirname "$ANT"`"
12974             cd "`dirname "$a_script"`"
12975             ANT="`pwd`"/"`basename "$a_script"`"
12976             cd "$a_cwd"
12977         done
12979         AC_MSG_CHECKING([if $ANT works])
12980         mkdir -p conftest.dir
12981         a_cwd=$(pwd)
12982         cd conftest.dir
12983         cat > conftest.java << EOF
12984         public class conftest {
12985             int testmethod(int a, int b) {
12986                     return a + b;
12987             }
12988         }
12991         cat > conftest.xml << EOF
12992         <project name="conftest" default="conftest">
12993         <target name="conftest">
12994             <javac srcdir="." includes="conftest.java">
12995             </javac>
12996         </target>
12997         </project>
13000         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13001         if test $? = 0 -a -f ./conftest.class; then
13002             AC_MSG_RESULT([Ant works])
13003             if test -z "$WITH_ANT_HOME"; then
13004                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13005                 if test -z "$ANT_HOME"; then
13006                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13007                 fi
13008             else
13009                 ANT_HOME="$WITH_ANT_HOME"
13010             fi
13011         else
13012             echo "configure: Ant test failed" >&5
13013             cat conftest.java >&5
13014             cat conftest.xml >&5
13015             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13016         fi
13017         cd "$a_cwd"
13018         rm -fr conftest.dir
13019     fi
13020     if test -z "$ANT_HOME"; then
13021         ANT_HOME="NO_ANT_HOME"
13022     else
13023         PathFormat "$ANT_HOME"
13024         ANT_HOME="$formatted_path"
13025         PathFormat "$ANT"
13026         ANT="$formatted_path"
13027     fi
13029     dnl Checking for ant.jar
13030     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13031         AC_MSG_CHECKING([Ant lib directory])
13032         if test -f $ANT_HOME/lib/ant.jar; then
13033             ANT_LIB="$ANT_HOME/lib"
13034         else
13035             if test -f $ANT_HOME/ant.jar; then
13036                 ANT_LIB="$ANT_HOME"
13037             else
13038                 if test -f /usr/share/java/ant.jar; then
13039                     ANT_LIB=/usr/share/java
13040                 else
13041                     if test -f /usr/share/ant-core/lib/ant.jar; then
13042                         ANT_LIB=/usr/share/ant-core/lib
13043                     else
13044                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13045                             ANT_LIB="$ANT_HOME/lib/ant"
13046                         else
13047                             if test -f /usr/share/lib/ant/ant.jar; then
13048                                 ANT_LIB=/usr/share/lib/ant
13049                             else
13050                                 AC_MSG_ERROR([Ant libraries not found!])
13051                             fi
13052                         fi
13053                     fi
13054                 fi
13055             fi
13056         fi
13057         PathFormat "$ANT_LIB"
13058         ANT_LIB="$formatted_path"
13059         AC_MSG_RESULT([Ant lib directory found.])
13060     fi
13062     ant_minver=1.6.0
13063     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13065     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13066     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13067     ant_version_major=`echo $ant_version | cut -d. -f1`
13068     ant_version_minor=`echo $ant_version | cut -d. -f2`
13069     echo "configure: ant_version $ant_version " >&5
13070     echo "configure: ant_version_major $ant_version_major " >&5
13071     echo "configure: ant_version_minor $ant_version_minor " >&5
13072     if test "$ant_version_major" -ge "2"; then
13073         AC_MSG_RESULT([yes, $ant_version])
13074     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13075         AC_MSG_RESULT([yes, $ant_version])
13076     else
13077         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13078     fi
13080     rm -f conftest* core core.* *.core
13082 AC_SUBST(ANT)
13083 AC_SUBST(ANT_HOME)
13084 AC_SUBST(ANT_LIB)
13086 OOO_JUNIT_JAR=
13087 HAMCREST_JAR=
13088 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13089     AC_MSG_CHECKING([for JUnit 4])
13090     if test "$with_junit" = "yes"; then
13091         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13092             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13093         elif test -e /usr/share/java/junit4.jar; then
13094             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13095         else
13096            if test -e /usr/share/lib/java/junit.jar; then
13097               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13098            else
13099               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13100            fi
13101         fi
13102     else
13103         OOO_JUNIT_JAR=$with_junit
13104     fi
13105     if test "$_os" = "WINNT"; then
13106         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13107     fi
13108     printf 'import org.junit.Before;' > conftest.java
13109     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13110         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13111     else
13112         AC_MSG_ERROR(
13113 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13114  specify its pathname via --with-junit=..., or disable it via --without-junit])
13115     fi
13116     rm -f conftest.class conftest.java
13117     if test $OOO_JUNIT_JAR != ""; then
13118         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13119     fi
13121     AC_MSG_CHECKING([for included Hamcrest])
13122     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13123     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13124         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13125     else
13126         AC_MSG_RESULT([Not included])
13127         AC_MSG_CHECKING([for standalone hamcrest jar.])
13128         if test "$with_hamcrest" = "yes"; then
13129             if test -e /usr/share/lib/java/hamcrest.jar; then
13130                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13131             elif test -e /usr/share/java/hamcrest/core.jar; then
13132                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13133             else
13134                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13135             fi
13136         else
13137             HAMCREST_JAR=$with_hamcrest
13138         fi
13139         if test "$_os" = "WINNT"; then
13140             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13141         fi
13142         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13143             AC_MSG_RESULT([$HAMCREST_JAR])
13144         else
13145             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),
13146                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13147         fi
13148     fi
13149     rm -f conftest.class conftest.java
13151 AC_SUBST(OOO_JUNIT_JAR)
13152 AC_SUBST(HAMCREST_JAR)
13155 AC_SUBST(SCPDEFS)
13158 # check for wget and curl
13160 WGET=
13161 CURL=
13163 if test "$enable_fetch_external" != "no"; then
13165 CURL=`which curl 2>/dev/null`
13167 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13168     # wget new enough?
13169     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13170     if test $? -eq 0; then
13171         WGET=$i
13172         break
13173     fi
13174 done
13176 if test -z "$WGET" -a -z "$CURL"; then
13177     AC_MSG_ERROR([neither wget nor curl found!])
13182 AC_SUBST(WGET)
13183 AC_SUBST(CURL)
13186 # check for sha256sum
13188 SHA256SUM=
13190 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13191     eval "$i -a 256 --version" > /dev/null 2>&1
13192     ret=$?
13193     if test $ret -eq 0; then
13194         SHA256SUM="$i -a 256"
13195         break
13196     fi
13197 done
13199 if test -z "$SHA256SUM"; then
13200     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13201         eval "$i --version" > /dev/null 2>&1
13202         ret=$?
13203         if test $ret -eq 0; then
13204             SHA256SUM=$i
13205             break
13206         fi
13207     done
13210 if test -z "$SHA256SUM"; then
13211     AC_MSG_ERROR([no sha256sum found!])
13214 AC_SUBST(SHA256SUM)
13216 dnl ===================================================================
13217 dnl Dealing with l10n options
13218 dnl ===================================================================
13219 AC_MSG_CHECKING([which languages to be built])
13220 # get list of all languages
13221 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13222 # the sed command does the following:
13223 #   + if a line ends with a backslash, append the next line to it
13224 #   + adds " on the beginning of the value (after =)
13225 #   + adds " at the end of the value
13226 #   + removes en-US; we want to put it on the beginning
13227 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13228 [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)]
13229 ALL_LANGS="en-US $completelangiso"
13230 # check the configured localizations
13231 WITH_LANG="$with_lang"
13233 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13234 # (Norwegian is "nb" and "nn".)
13235 if test "$WITH_LANG" = "no"; then
13236     WITH_LANG=
13239 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13240     AC_MSG_RESULT([en-US])
13241 else
13242     AC_MSG_RESULT([$WITH_LANG])
13243     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13244     if test -z "$MSGFMT"; then
13245         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13246             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13247         elif test -x "/opt/lo/bin/msgfmt"; then
13248             MSGFMT="/opt/lo/bin/msgfmt"
13249         else
13250             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13251             if test -z "$MSGFMT"; then
13252                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13253             fi
13254         fi
13255     fi
13256     if test -z "$MSGUNIQ"; then
13257         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13258             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13259         elif test -x "/opt/lo/bin/msguniq"; then
13260             MSGUNIQ="/opt/lo/bin/msguniq"
13261         else
13262             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13263             if test -z "$MSGUNIQ"; then
13264                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13265             fi
13266         fi
13267     fi
13269 AC_SUBST(MSGFMT)
13270 AC_SUBST(MSGUNIQ)
13271 # check that the list is valid
13272 for lang in $WITH_LANG; do
13273     test "$lang" = "ALL" && continue
13274     # need to check for the exact string, so add space before and after the list of all languages
13275     for vl in $ALL_LANGS; do
13276         if test "$vl" = "$lang"; then
13277            break
13278         fi
13279     done
13280     if test "$vl" != "$lang"; then
13281         # if you're reading this - you prolly quoted your languages remove the quotes ...
13282         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13283     fi
13284 done
13285 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13286     echo $WITH_LANG | grep -q en-US
13287     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13289 # list with substituted ALL
13290 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13291 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13292 test "$WITH_LANG" = "en-US" && WITH_LANG=
13293 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13294     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13295     ALL_LANGS=`echo $ALL_LANGS qtz`
13297 AC_SUBST(ALL_LANGS)
13298 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13299 AC_SUBST(WITH_LANG)
13300 AC_SUBST(WITH_LANG_LIST)
13301 AC_SUBST(GIT_NEEDED_SUBMODULES)
13303 WITH_POOR_HELP_LOCALIZATIONS=
13304 if test -d "$SRC_ROOT/translations/source"; then
13305     for l in `ls -1 $SRC_ROOT/translations/source`; do
13306         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13307             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13308         fi
13309     done
13311 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13313 if test -n "$with_locales"; then
13314     WITH_LOCALES="$with_locales"
13316     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13317     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13318     # config_host/config_locales.h.in
13319     for locale in $WITH_LOCALES; do
13320         lang=${locale%_*}
13322         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13324         case $lang in
13325         hi|mr*ne)
13326             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13327             ;;
13328         bg|ru)
13329             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13330             ;;
13331         esac
13332     done
13333 else
13334     AC_DEFINE(WITH_LOCALE_ALL)
13336 AC_SUBST(WITH_LOCALES)
13338 dnl git submodule update --reference
13339 dnl ===================================================================
13340 if test -n "${GIT_REFERENCE_SRC}"; then
13341     for repo in ${GIT_NEEDED_SUBMODULES}; do
13342         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13343             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13344         fi
13345     done
13347 AC_SUBST(GIT_REFERENCE_SRC)
13349 dnl git submodules linked dirs
13350 dnl ===================================================================
13351 if test -n "${GIT_LINK_SRC}"; then
13352     for repo in ${GIT_NEEDED_SUBMODULES}; do
13353         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13354             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13355         fi
13356     done
13358 AC_SUBST(GIT_LINK_SRC)
13360 dnl branding
13361 dnl ===================================================================
13362 AC_MSG_CHECKING([for alternative branding images directory])
13363 # initialize mapped arrays
13364 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13365 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13367 if test -z "$with_branding" -o "$with_branding" = "no"; then
13368     AC_MSG_RESULT([none])
13369     DEFAULT_BRAND_IMAGES="$brand_files"
13370 else
13371     if ! test -d $with_branding ; then
13372         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13373     else
13374         AC_MSG_RESULT([$with_branding])
13375         CUSTOM_BRAND_DIR="$with_branding"
13376         for lfile in $brand_files
13377         do
13378             if ! test -f $with_branding/$lfile ; then
13379                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13380                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13381             else
13382                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13383             fi
13384         done
13385         check_for_progress="yes"
13386     fi
13388 AC_SUBST([BRAND_INTRO_IMAGES])
13389 AC_SUBST([CUSTOM_BRAND_DIR])
13390 AC_SUBST([CUSTOM_BRAND_IMAGES])
13391 AC_SUBST([DEFAULT_BRAND_IMAGES])
13394 AC_MSG_CHECKING([for 'intro' progress settings])
13395 PROGRESSBARCOLOR=
13396 PROGRESSSIZE=
13397 PROGRESSPOSITION=
13398 PROGRESSFRAMECOLOR=
13399 PROGRESSTEXTCOLOR=
13400 PROGRESSTEXTBASELINE=
13402 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13403     source "$with_branding/progress.conf"
13404     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13405 else
13406     AC_MSG_RESULT([none])
13409 AC_SUBST(PROGRESSBARCOLOR)
13410 AC_SUBST(PROGRESSSIZE)
13411 AC_SUBST(PROGRESSPOSITION)
13412 AC_SUBST(PROGRESSFRAMECOLOR)
13413 AC_SUBST(PROGRESSTEXTCOLOR)
13414 AC_SUBST(PROGRESSTEXTBASELINE)
13417 dnl ===================================================================
13418 dnl Custom build version
13419 dnl ===================================================================
13420 AC_MSG_CHECKING([for extra build ID])
13421 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13422     EXTRA_BUILDID="$with_extra_buildid"
13424 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13425 if test -n "$EXTRA_BUILDID" ; then
13426     AC_MSG_RESULT([$EXTRA_BUILDID])
13427 else
13428     AC_MSG_RESULT([not set])
13430 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13432 OOO_VENDOR=
13433 AC_MSG_CHECKING([for vendor])
13434 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13435     OOO_VENDOR="$USERNAME"
13437     if test -z "$OOO_VENDOR"; then
13438         OOO_VENDOR="$USER"
13439     fi
13441     if test -z "$OOO_VENDOR"; then
13442         OOO_VENDOR="`id -u -n`"
13443     fi
13445     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13446 else
13447     OOO_VENDOR="$with_vendor"
13448     AC_MSG_RESULT([$OOO_VENDOR])
13450 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13451 AC_SUBST(OOO_VENDOR)
13453 if test "$_os" = "Android" ; then
13454     ANDROID_PACKAGE_NAME=
13455     AC_MSG_CHECKING([for Android package name])
13456     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13457         if test -n "$ENABLE_DEBUG"; then
13458             # Default to the package name that makes ndk-gdb happy.
13459             ANDROID_PACKAGE_NAME="org.libreoffice"
13460         else
13461             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13462         fi
13464         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13465     else
13466         ANDROID_PACKAGE_NAME="$with_android_package_name"
13467         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13468     fi
13469     AC_SUBST(ANDROID_PACKAGE_NAME)
13472 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13473 if test "$with_compat_oowrappers" = "yes"; then
13474     WITH_COMPAT_OOWRAPPERS=TRUE
13475     AC_MSG_RESULT(yes)
13476 else
13477     WITH_COMPAT_OOWRAPPERS=
13478     AC_MSG_RESULT(no)
13480 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13482 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13483 AC_MSG_CHECKING([for install dirname])
13484 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13485     INSTALLDIRNAME="$with_install_dirname"
13487 AC_MSG_RESULT([$INSTALLDIRNAME])
13488 AC_SUBST(INSTALLDIRNAME)
13490 AC_MSG_CHECKING([for prefix])
13491 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13492 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13493 PREFIXDIR="$prefix"
13494 AC_MSG_RESULT([$PREFIXDIR])
13495 AC_SUBST(PREFIXDIR)
13497 LIBDIR=[$(eval echo $(eval echo $libdir))]
13498 AC_SUBST(LIBDIR)
13500 DATADIR=[$(eval echo $(eval echo $datadir))]
13501 AC_SUBST(DATADIR)
13503 MANDIR=[$(eval echo $(eval echo $mandir))]
13504 AC_SUBST(MANDIR)
13506 DOCDIR=[$(eval echo $(eval echo $docdir))]
13507 AC_SUBST(DOCDIR)
13509 BINDIR=[$(eval echo $(eval echo $bindir))]
13510 AC_SUBST(BINDIR)
13512 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13513 AC_SUBST(INSTALLDIR)
13515 TESTINSTALLDIR="${BUILDDIR}/test-install"
13516 AC_SUBST(TESTINSTALLDIR)
13519 # ===================================================================
13520 # OAuth2 id and secrets
13521 # ===================================================================
13523 AC_MSG_CHECKING([for Google Drive client id and secret])
13524 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13525     AC_MSG_RESULT([not set])
13526     GDRIVE_CLIENT_ID="\"\""
13527     GDRIVE_CLIENT_SECRET="\"\""
13528 else
13529     AC_MSG_RESULT([set])
13530     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13531     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13533 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13534 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13536 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13537 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13538     AC_MSG_RESULT([not set])
13539     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13540     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13541 else
13542     AC_MSG_RESULT([set])
13543     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13544     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13546 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13547 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13549 AC_MSG_CHECKING([for OneDrive client id and secret])
13550 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13551     AC_MSG_RESULT([not set])
13552     ONEDRIVE_CLIENT_ID="\"\""
13553     ONEDRIVE_CLIENT_SECRET="\"\""
13554 else
13555     AC_MSG_RESULT([set])
13556     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13557     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13559 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13560 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13563 dnl ===================================================================
13564 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13565 dnl --enable-dependency-tracking configure option
13566 dnl ===================================================================
13567 AC_MSG_CHECKING([whether to enable dependency tracking])
13568 if test "$enable_dependency_tracking" = "no"; then
13569     nodep=TRUE
13570     AC_MSG_RESULT([no])
13571 else
13572     AC_MSG_RESULT([yes])
13574 AC_SUBST(nodep)
13576 dnl ===================================================================
13577 dnl Number of CPUs to use during the build
13578 dnl ===================================================================
13579 AC_MSG_CHECKING([for number of processors to use])
13580 # plain --with-parallelism is just the default
13581 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13582     if test "$with_parallelism" = "no"; then
13583         PARALLELISM=0
13584     else
13585         PARALLELISM=$with_parallelism
13586     fi
13587 else
13588     if test "$enable_icecream" = "yes"; then
13589         PARALLELISM="40"
13590     else
13591         case `uname -s` in
13593         Darwin|FreeBSD|NetBSD|OpenBSD)
13594             PARALLELISM=`sysctl -n hw.ncpu`
13595             ;;
13597         Linux)
13598             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13599         ;;
13600         # what else than above does profit here *and* has /proc?
13601         *)
13602             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13603             ;;
13604         esac
13606         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13607         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13608     fi
13611 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13612     if test -z "$with_parallelism"; then
13613             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13614             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13615             PARALLELISM="1"
13616     else
13617         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."
13618     fi
13621 if test $PARALLELISM -eq 0; then
13622     AC_MSG_RESULT([explicit make -j option needed])
13623 else
13624     AC_MSG_RESULT([$PARALLELISM])
13626 AC_SUBST(PARALLELISM)
13628 IWYU_PATH="$with_iwyu"
13629 AC_SUBST(IWYU_PATH)
13630 if test ! -z "$IWYU_PATH"; then
13631     if test ! -f "$IWYU_PATH"; then
13632         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13633     fi
13637 # Set up ILIB for MSVC build
13639 ILIB1=
13640 if test "$build_os" = "cygwin"; then
13641     ILIB="."
13642     if test -n "$JAVA_HOME"; then
13643         ILIB="$ILIB;$JAVA_HOME/lib"
13644     fi
13645     ILIB1=-link
13646     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13647     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13648     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13649     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13650     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13651         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13652         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13653     fi
13654     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13655     ucrtlibpath_formatted=$formatted_path
13656     ILIB="$ILIB;$ucrtlibpath_formatted"
13657     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13658     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13659         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13660     else
13661         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13662     fi
13664     if test "$cross_compiling" != "yes"; then
13665         ILIB_FOR_BUILD="$ILIB"
13666     fi
13668 AC_SUBST(ILIB)
13669 AC_SUBST(ILIB_FOR_BUILD)
13671 # ===================================================================
13672 # Creating bigger shared library to link against
13673 # ===================================================================
13674 AC_MSG_CHECKING([whether to create huge library])
13675 MERGELIBS=
13677 if test $_os = iOS -o $_os = Android; then
13678     # Never any point in mergelibs for these as we build just static
13679     # libraries anyway...
13680     enable_mergelibs=no
13683 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13684     if test $_os != Linux -a $_os != WINNT; then
13685         add_warning "--enable-mergelibs is not tested for this platform"
13686     fi
13687     MERGELIBS="TRUE"
13688     AC_MSG_RESULT([yes])
13689     AC_DEFINE(ENABLE_MERGELIBS)
13690 else
13691     AC_MSG_RESULT([no])
13693 AC_SUBST([MERGELIBS])
13695 dnl ===================================================================
13696 dnl icerun is a wrapper that stops us spawning tens of processes
13697 dnl locally - for tools that can't be executed on the compile cluster
13698 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13699 dnl ===================================================================
13700 AC_MSG_CHECKING([whether to use icerun wrapper])
13701 ICECREAM_RUN=
13702 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13703     ICECREAM_RUN=icerun
13704     AC_MSG_RESULT([yes])
13705 else
13706     AC_MSG_RESULT([no])
13708 AC_SUBST(ICECREAM_RUN)
13710 dnl ===================================================================
13711 dnl Setup the ICECC_VERSION for the build the same way it was set for
13712 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13713 dnl ===================================================================
13714 x_ICECC_VERSION=[\#]
13715 if test -n "$ICECC_VERSION" ; then
13716     x_ICECC_VERSION=
13718 AC_SUBST(x_ICECC_VERSION)
13719 AC_SUBST(ICECC_VERSION)
13721 dnl ===================================================================
13723 AC_MSG_CHECKING([MPL subset])
13724 MPL_SUBSET=
13726 if test "$enable_mpl_subset" = "yes"; then
13727     warn_report=false
13728     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13729         warn_report=true
13730     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13731         warn_report=true
13732     fi
13733     if test "$warn_report" = "true"; then
13734         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13735     fi
13736     if test "x$enable_postgresql_sdbc" != "xno"; then
13737         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13738     fi
13739     if test "$enable_lotuswordpro" = "yes"; then
13740         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13741     fi
13742     if test "$WITH_WEBDAV" = "neon"; then
13743         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13744     fi
13745     if test -n "$ENABLE_POPPLER"; then
13746         if test "x$SYSTEM_POPPLER" = "x"; then
13747             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13748         fi
13749     fi
13750     # cf. m4/libo_check_extension.m4
13751     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13752         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13753     fi
13754     for theme in $WITH_THEMES; do
13755         case $theme in
13756         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13757             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13758         *) : ;;
13759         esac
13760     done
13762     ENABLE_OPENGL_TRANSITIONS=
13764     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13765         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13766     fi
13768     MPL_SUBSET="TRUE"
13769     AC_DEFINE(MPL_HAVE_SUBSET)
13770     AC_MSG_RESULT([only])
13771 else
13772     AC_MSG_RESULT([no restrictions])
13774 AC_SUBST(MPL_SUBSET)
13776 dnl ===================================================================
13778 AC_MSG_CHECKING([formula logger])
13779 ENABLE_FORMULA_LOGGER=
13781 if test "x$enable_formula_logger" = "xyes"; then
13782     AC_MSG_RESULT([yes])
13783     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13784     ENABLE_FORMULA_LOGGER=TRUE
13785 elif test -n "$ENABLE_DBGUTIL" ; then
13786     AC_MSG_RESULT([yes])
13787     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13788     ENABLE_FORMULA_LOGGER=TRUE
13789 else
13790     AC_MSG_RESULT([no])
13793 AC_SUBST(ENABLE_FORMULA_LOGGER)
13795 dnl ===================================================================
13796 dnl Checking for active Antivirus software.
13797 dnl ===================================================================
13799 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13800     AC_MSG_CHECKING([for active Antivirus software])
13801     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13802     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13803         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13804             AC_MSG_RESULT([found])
13805             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13806             echo $EICAR_STRING > $SRC_ROOT/eicar
13807             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13808             rm $SRC_ROOT/eicar
13809             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13810                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13811             fi
13812             echo $EICAR_STRING > $BUILDDIR/eicar
13813             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13814             rm $BUILDDIR/eicar
13815             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13816                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13817             fi
13818             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"
13819         else
13820             AC_MSG_RESULT([not found])
13821         fi
13822     else
13823         AC_MSG_RESULT([n/a])
13824     fi
13827 dnl ===================================================================
13828 dnl Setting up the environment.
13829 dnl ===================================================================
13830 AC_MSG_NOTICE([setting up the build environment variables...])
13832 AC_SUBST(COMPATH)
13834 if test "$build_os" = "cygwin"; then
13835     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13836         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13837         ATL_INCLUDE="$COMPATH/atlmfc/include"
13838     elif test -d "$COMPATH/atlmfc/lib"; then
13839         ATL_LIB="$COMPATH/atlmfc/lib"
13840         ATL_INCLUDE="$COMPATH/atlmfc/include"
13841     else
13842         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13843         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13844     fi
13845     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13846     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13847     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13849     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13850     PathFormat "/usr/bin/find.exe"
13851     FIND="$formatted_path"
13852     PathFormat "/usr/bin/sort.exe"
13853     SORT="$formatted_path"
13854     PathFormat "/usr/bin/grep.exe"
13855     WIN_GREP="$formatted_path"
13856     PathFormat "/usr/bin/ls.exe"
13857     WIN_LS="$formatted_path"
13858     PathFormat "/usr/bin/touch.exe"
13859     WIN_TOUCH="$formatted_path"
13860 else
13861     FIND=find
13862     SORT=sort
13865 AC_SUBST(ATL_INCLUDE)
13866 AC_SUBST(ATL_LIB)
13867 AC_SUBST(FIND)
13868 AC_SUBST(SORT)
13869 AC_SUBST(WIN_GREP)
13870 AC_SUBST(WIN_LS)
13871 AC_SUBST(WIN_TOUCH)
13873 AC_SUBST(BUILD_TYPE)
13875 AC_SUBST(SOLARINC)
13877 PathFormat "$PERL"
13878 PERL="$formatted_path"
13879 AC_SUBST(PERL)
13881 if test -n "$TMPDIR"; then
13882     TEMP_DIRECTORY="$TMPDIR"
13883 else
13884     TEMP_DIRECTORY="/tmp"
13886 if test "$build_os" = "cygwin"; then
13887     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13889 AC_SUBST(TEMP_DIRECTORY)
13891 # setup the PATH for the environment
13892 if test -n "$LO_PATH_FOR_BUILD"; then
13893     LO_PATH="$LO_PATH_FOR_BUILD"
13894     case "$host_os" in
13895     cygwin*|wsl*)
13896         pathmunge "$MSVC_HOST_PATH" "before"
13897         ;;
13898     esac
13899 else
13900     LO_PATH="$PATH"
13902     case "$host_os" in
13904     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13905         if test "$ENABLE_JAVA" != ""; then
13906             pathmunge "$JAVA_HOME/bin" "after"
13907         fi
13908         ;;
13910     cygwin*|wsl*)
13911         # Win32 make needs native paths
13912         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13913             LO_PATH=`cygpath -p -m "$PATH"`
13914         fi
13915         if test "$WIN_BUILD_ARCH" = "x64"; then
13916             # needed for msi packaging
13917             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13918         fi
13919         # .NET 4.6 and higher don't have bin directory
13920         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13921             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13922         fi
13923         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13924         pathmunge "$CSC_PATH" "before"
13925         pathmunge "$MIDL_PATH" "before"
13926         pathmunge "$AL_PATH" "before"
13927         pathmunge "$MSVC_MULTI_PATH" "before"
13928         pathmunge "$MSVC_BUILD_PATH" "before"
13929         if test -n "$MSBUILD_PATH" ; then
13930             pathmunge "$MSBUILD_PATH" "before"
13931         fi
13932         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13933         if test "$ENABLE_JAVA" != ""; then
13934             if test -d "$JAVA_HOME/jre/bin/client"; then
13935                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13936             fi
13937             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13938                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13939             fi
13940             pathmunge "$JAVA_HOME/bin" "before"
13941         fi
13942         pathmunge "$MSVC_HOST_PATH" "before"
13943         ;;
13945     solaris*)
13946         pathmunge "/usr/css/bin" "before"
13947         if test "$ENABLE_JAVA" != ""; then
13948             pathmunge "$JAVA_HOME/bin" "after"
13949         fi
13950         ;;
13951     esac
13954 AC_SUBST(LO_PATH)
13956 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
13957 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
13958     x_LO_ELFCHECK_ALLOWLIST=
13959 else
13960     x_LO_ELFCHECK_ALLOWLIST=[\#]
13962 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
13963 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
13965 libo_FUZZ_SUMMARY
13967 # Generate a configuration sha256 we can use for deps
13968 if test -f config_host.mk; then
13969     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13971 if test -f config_host_lang.mk; then
13972     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13975 CFLAGS=$my_original_CFLAGS
13976 CXXFLAGS=$my_original_CXXFLAGS
13977 CPPFLAGS=$my_original_CPPFLAGS
13979 AC_CONFIG_LINKS([include:include])
13981 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
13982 # BUILD platform configuration] - otherwise breaks cross building
13983 AC_CONFIG_FILES([config_host.mk
13984                  config_host_lang.mk
13985                  Makefile
13986                  bin/bffvalidator.sh
13987                  bin/odfvalidator.sh
13988                  bin/officeotron.sh
13989                  hardened_runtime.xcent
13990                  instsetoo_native/util/openoffice.lst
13991                  sysui/desktop/macosx/Info.plist])
13992 AC_CONFIG_HEADERS([config_host/config_buildid.h])
13993 AC_CONFIG_HEADERS([config_host/config_box2d.h])
13994 AC_CONFIG_HEADERS([config_host/config_clang.h])
13995 AC_CONFIG_HEADERS([config_host/config_dconf.h])
13996 AC_CONFIG_HEADERS([config_host/config_eot.h])
13997 AC_CONFIG_HEADERS([config_host/config_extensions.h])
13998 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
13999 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14000 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14001 AC_CONFIG_HEADERS([config_host/config_features.h])
14002 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14003 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14004 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14005 AC_CONFIG_HEADERS([config_host/config_folders.h])
14006 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14007 AC_CONFIG_HEADERS([config_host/config_gio.h])
14008 AC_CONFIG_HEADERS([config_host/config_global.h])
14009 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14010 AC_CONFIG_HEADERS([config_host/config_java.h])
14011 AC_CONFIG_HEADERS([config_host/config_langs.h])
14012 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14013 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14014 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14015 AC_CONFIG_HEADERS([config_host/config_locales.h])
14016 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14017 AC_CONFIG_HEADERS([config_host/config_oox.h])
14018 AC_CONFIG_HEADERS([config_host/config_options.h])
14019 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14020 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14021 AC_CONFIG_HEADERS([config_host/config_skia.h])
14022 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14023 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14024 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14025 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14026 AC_CONFIG_HEADERS([config_host/config_version.h])
14027 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14028 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14029 AC_CONFIG_HEADERS([config_host/config_python.h])
14030 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14031 AC_OUTPUT
14033 if test "$CROSS_COMPILING" = TRUE; then
14034     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14037 # touch the config timestamp file
14038 if test ! -f config_host.mk.stamp; then
14039     echo > config_host.mk.stamp
14040 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14041     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14042 else
14043     echo > config_host.mk.stamp
14046 # touch the config lang timestamp file
14047 if test ! -f config_host_lang.mk.stamp; then
14048     echo > config_host_lang.mk.stamp
14049 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14050     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14051 else
14052     echo > config_host_lang.mk.stamp
14056 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14057         -a "$build_os" = "cygwin"; then
14059 cat << _EOS
14060 ****************************************************************************
14061 WARNING:
14062 Your make version is known to be horribly slow, and hard to debug
14063 problems with. To get a reasonably functional make please do:
14065 to install a pre-compiled binary make for Win32
14067  mkdir -p /opt/lo/bin
14068  cd /opt/lo/bin
14069  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14070  cp make-4.2.1-msvc.exe make
14071  chmod +x make
14073 to install from source:
14074 place yourself in a working directory of you choice.
14076  git clone git://git.savannah.gnu.org/make.git
14078  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14079  set PATH=%PATH%;C:\Cygwin\bin
14080  [or Cygwin64, if that is what you have]
14081  cd path-to-make-repo-you-cloned-above
14082  build_w32.bat --without-guile
14084 should result in a WinRel/gnumake.exe.
14085 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14087 Then re-run autogen.sh
14089 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14090 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14092 _EOS
14093 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14094     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14099 cat << _EOF
14100 ****************************************************************************
14102 To build, run:
14103 $GNUMAKE
14105 To view some help, run:
14106 $GNUMAKE help
14108 _EOF
14110 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14111     cat << _EOF
14112 After the build has finished successfully, you can immediately run what you built using the command:
14113 _EOF
14115     if test $_os = Darwin; then
14116         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14117     else
14118         echo instdir/program/soffice
14119     fi
14120     cat << _EOF
14122 If you want to run the smoketest, run:
14123 $GNUMAKE check
14125 _EOF
14128 if test -f warn; then
14129     cat warn
14130     rm warn
14133 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: