nss: upgrade to release 3.73
[LibreOffice.git] / configure.ac
blobbd28bc6eb38e4aadb61a6b6aa4055464f902b3f7
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.1.8.0.0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 rm -f warn
206 have_WARNINGS="no"
207 add_warning()
209     if test "$have_WARNINGS" = "no"; then
210         echo "*************************************" > warn
211         have_WARNINGS="yes"
212         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
213             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
214             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
215         else
216             COLORWARN="* WARNING :"
217         fi
218     fi
219     echo "$COLORWARN $@" >> warn
222 dnl Some Mac User have the bad habit of letting a lot of crap
223 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
224 dnl that confuse the build.
225 dnl For the ones that use LODE, let's be nice and protect them
226 dnl from themselves
228 mac_sanitize_path()
230     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
231 dnl a common but nevertheless necessary thing that may be in a fancy
232 dnl path location is git, so make sure we have it
233     mac_git_path=`which git 2>/dev/null`
234     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
235         mac_path="$mac_path:`dirname $mac_git_path`"
236     fi
237 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
238 dnl path location is gpg, so make sure we find it
239     mac_gpg_path=`which gpg 2>/dev/null`
240     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
241         mac_path="$mac_path:`dirname $mac_gpg_path`"
242     fi
243     PATH="$mac_path"
244     unset mac_path
245     unset mac_git_path
246     unset mac_gpg_path
249 echo "********************************************************************"
250 echo "*"
251 echo "*   Running ${PACKAGE_NAME} build configuration."
252 echo "*"
253 echo "********************************************************************"
254 echo ""
256 dnl ===================================================================
257 dnl checks build and host OSes
258 dnl do this before argument processing to allow for platform dependent defaults
259 dnl ===================================================================
261 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
262 # Linux on WSL) trust that.
263 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
264     ac_cv_host="x86_64-pc-wsl"
265     ac_cv_host_cpu="x86_64"
266     ac_cv_host_os="wsl"
267     ac_cv_build="$ac_cv_host"
268     ac_cv_build_cpu="$ac_cv_host_cpu"
269     ac_cv_build_os="$ac_cv_host_os"
271     # Emulation of Cygwin's cygpath command for WSL.
272     cygpath()
273     {
274         if test -n "$UNITTEST_WSL_CYGPATH"; then
275             echo -n cygpath "$@" "==> "
276         fi
278         # Cygwin's real cygpath has a plethora of options but we use only a few here.
279         local args="$@"
280         local opt
281         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
282         OPTIND=1
284         while getopts dmuwlsp opt; do
285             case "$opt" in
286                 \?)
287                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
288                     ;;
289                 ?)
290                     eval opt_$opt=yes
291                     ;;
292             esac
293         done
295         shift $((OPTIND-1))
297         if test $# -ne 1; then
298             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
299         fi
301         local input="$1"
303         local result
305         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
306             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
308             if test -n "$opt_u"; then
309                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
310             fi
312             case "$input" in
313                 /mnt/*)
314                     # A Windows file in WSL format
315                     input=$(wslpath -w "$input")
316                     ;;
317                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
318                     # Already in Windows format
319                     ;;
320                 /*)
321                     input=$(wslpath -w "$input")
322                     ;;
323                 *)
324                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
325                     ;;
326             esac
327             if test -n "$opt_d" -o -n "$opt_s"; then
328                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
329             fi
330             if test -n "$opt_m"; then
331                 input="${input//\\//}"
332             fi
333             echo "$input"
334         else
335             # Print Unix path
337             case "$input" in
338                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
339                     wslpath -u "$input"
340                     ;;
341                 /)
342                     echo "$input"
343                     ;;
344                 *)
345                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
346                     ;;
347             esac
348         fi
349     }
351     if test -n "$UNITTEST_WSL_CYGPATH"; then
352         BUILDDIR=.
354         # Nothing special with these file names, just arbitrary ones picked to test with
355         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
356         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
357         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
359         # At least on my machine for instance this file does have an 8.3 name
360         cygpath -d /mnt/c/windows/WindowsUpdate.log
361         # But for instance this one doesn't
362         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
363         cygpath -ws /mnt/c/windows/WindowsUpdate.log
364         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ms /mnt/c/windows/WindowsUpdate.log
367         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
368         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
370         exit 0
371     fi
374 AC_CANONICAL_HOST
375 AC_CANONICAL_BUILD
377 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
378     BUILDDIR=.
379     GREP=grep
381     # Use of PathFormat must be after AC_CANONICAL_BUILD above
382     PathFormat /
383     printf "$formatted_path , $formatted_path_unix\n"
385     PathFormat $PWD
386     printf "$formatted_path , $formatted_path_unix\n"
388     PathFormat "$PROGRAMFILESX86"
389     printf "$formatted_path , $formatted_path_unix\n"
391     exit 0
394 AC_MSG_CHECKING([for product name])
395 PRODUCTNAME="AC_PACKAGE_NAME"
396 if test -n "$with_product_name" -a "$with_product_name" != no; then
397     PRODUCTNAME="$with_product_name"
399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
400     PRODUCTNAME="${PRODUCTNAME}Dev"
402 AC_MSG_RESULT([$PRODUCTNAME])
403 AC_SUBST(PRODUCTNAME)
404 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
405 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
407 dnl ===================================================================
408 dnl Our version is defined by the AC_INIT() at the top of this script.
409 dnl ===================================================================
411 AC_MSG_CHECKING([for package version])
412 if test -n "$with_package_version" -a "$with_package_version" != no; then
413     PACKAGE_VERSION="$with_package_version"
415 AC_MSG_RESULT([$PACKAGE_VERSION])
417 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
419 LIBO_VERSION_MAJOR=$1
420 LIBO_VERSION_MINOR=$2
421 LIBO_VERSION_MICRO=$3
422 LIBO_VERSION_PATCH=$4
424 LIBO_VERSION_SUFFIX=$5
426 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
427 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
428 # they get undoubled before actually passed to sed.
429 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
430 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
431 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
432 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
434 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
435 # three non-negative integers. Please find more information about CFBundleVersion at
436 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
438 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
439 # of at most three non-negative integers. Please find more information about
440 # CFBundleShortVersionString at
441 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
443 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
445 if test "$enable_macosx_sandbox" = yes; then
446     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
447     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
448 else
449     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
450     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
453 AC_SUBST(LIBO_VERSION_MAJOR)
454 AC_SUBST(LIBO_VERSION_MINOR)
455 AC_SUBST(LIBO_VERSION_MICRO)
456 AC_SUBST(LIBO_VERSION_PATCH)
457 AC_SUBST(LIBO_VERSION_SUFFIX)
458 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
459 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
460 AC_SUBST(MACOSX_BUNDLE_VERSION)
462 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
463 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
467 LIBO_THIS_YEAR=`date +%Y`
468 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
470 dnl ===================================================================
471 dnl Product version
472 dnl ===================================================================
473 AC_MSG_CHECKING([for product version])
474 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
475 AC_MSG_RESULT([$PRODUCTVERSION])
476 AC_SUBST(PRODUCTVERSION)
478 AC_PROG_EGREP
479 # AC_PROG_EGREP doesn't set GREP on all systems as well
480 AC_PATH_PROG(GREP, grep)
482 BUILDDIR=`pwd`
483 cd $srcdir
484 SRC_ROOT=`pwd`
485 cd $BUILDDIR
486 x_Cygwin=[\#]
488 dnl ======================================
489 dnl Required GObject introspection version
490 dnl ======================================
491 INTROSPECTION_REQUIRED_VERSION=1.32.0
493 dnl ===================================================================
494 dnl Search all the common names for GNU Make
495 dnl ===================================================================
496 AC_MSG_CHECKING([for GNU Make])
498 # try to use our own make if it is available and GNUMAKE was not already defined
499 if test -z "$GNUMAKE"; then
500     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
501         GNUMAKE="$LODE_HOME/opt/bin/make"
502     elif test -x "/opt/lo/bin/make"; then
503         GNUMAKE="/opt/lo/bin/make"
504     fi
507 GNUMAKE_WIN_NATIVE=
508 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
509     if test -n "$a"; then
510         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
511         if test $? -eq 0;  then
512             if test "$build_os" = "cygwin"; then
513                 if test -n "$($a -v | grep 'Built for Windows')" ; then
514                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
515                     GNUMAKE_WIN_NATIVE="TRUE"
516                 else
517                     GNUMAKE=`which $a`
518                 fi
519             else
520                 GNUMAKE=`which $a`
521             fi
522             break
523         fi
524     fi
525 done
526 AC_MSG_RESULT($GNUMAKE)
527 if test -z "$GNUMAKE"; then
528     AC_MSG_ERROR([not found. install GNU Make.])
529 else
530     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
531         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
532     fi
535 win_short_path_for_make()
537     local short_path="$1"
538     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
539         cygpath -sm "$short_path"
540     else
541         cygpath -u "$(cygpath -d "$short_path")"
542     fi
546 if test "$build_os" = "cygwin"; then
547     PathFormat "$SRC_ROOT"
548     SRC_ROOT="$formatted_path"
549     PathFormat "$BUILDDIR"
550     BUILDDIR="$formatted_path"
551     x_Cygwin=
552     AC_MSG_CHECKING(for explicit COMSPEC)
553     if test -z "$COMSPEC"; then
554         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
555     else
556         AC_MSG_RESULT([found: $COMSPEC])
557     fi
560 AC_SUBST(SRC_ROOT)
561 AC_SUBST(BUILDDIR)
562 AC_SUBST(x_Cygwin)
563 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
564 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
565 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
567 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
568     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
571 # need sed in os checks...
572 AC_PATH_PROGS(SED, sed)
573 if test -z "$SED"; then
574     AC_MSG_ERROR([install sed to run this script])
577 # Set the ENABLE_LTO variable
578 # ===================================================================
579 AC_MSG_CHECKING([whether to use link-time optimization])
580 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
581     ENABLE_LTO="TRUE"
582     AC_MSG_RESULT([yes])
583 else
584     ENABLE_LTO=""
585     AC_MSG_RESULT([no])
587 AC_SUBST(ENABLE_LTO)
589 AC_ARG_ENABLE(fuzz-options,
590     AS_HELP_STRING([--enable-fuzz-options],
591         [Randomly enable or disable each of those configurable options
592          that are supposed to be freely selectable without interdependencies,
593          or where bad interaction from interdependencies is automatically avoided.])
596 dnl ===================================================================
597 dnl When building for Android, --with-android-ndk,
598 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
599 dnl mandatory
600 dnl ===================================================================
602 AC_ARG_WITH(android-ndk,
603     AS_HELP_STRING([--with-android-ndk],
604         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
607 AC_ARG_WITH(android-ndk-toolchain-version,
608     AS_HELP_STRING([--with-android-ndk-toolchain-version],
609         [Specify which toolchain version to use, of those present in the
610         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
611         with_android_ndk_toolchain_version=clang5.0)
613 AC_ARG_WITH(android-sdk,
614     AS_HELP_STRING([--with-android-sdk],
615         [Specify location of the Android SDK. Mandatory when building for Android.]),
618 AC_ARG_WITH(android-api-level,
619     AS_HELP_STRING([--with-android-api-level],
620         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
623 ANDROID_NDK_HOME=
624 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
625     with_android_ndk="$SRC_ROOT/external/android-ndk"
627 if test -n "$with_android_ndk"; then
628     eval ANDROID_NDK_HOME=$with_android_ndk
630     # Set up a lot of pre-canned defaults
632     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
633         if test ! -f $ANDROID_NDK_HOME/source.properties; then
634             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
635         fi
636         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
637     else
638         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
639     fi
640     if test -z "$ANDROID_NDK_VERSION";  then
641         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
642     fi
643     case $ANDROID_NDK_VERSION in
644     r9*|r10*)
645         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
646         ;;
647     11.1.*|12.1.*|13.1.*|14.1.*)
648         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
649         ;;
650     16.*|17.*|18.*|19.*|20.*)
651         ;;
652     *)
653         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
654         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
655         ;;
656     esac
658     ANDROID_API_LEVEL=16
659     if test -n "$with_android_api_level" ; then
660         ANDROID_API_LEVEL="$with_android_api_level"
661     fi
663     android_cpu=$host_cpu
664     if test $host_cpu = arm; then
665         android_platform_prefix=arm-linux-androideabi
666         android_gnu_prefix=$android_platform_prefix
667         LLVM_TRIPLE=armv7a-linux-androideabi
668         ANDROID_APP_ABI=armeabi-v7a
669         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
670     elif test $host_cpu = aarch64; then
671         android_platform_prefix=aarch64-linux-android
672         android_gnu_prefix=$android_platform_prefix
673         LLVM_TRIPLE=$android_platform_prefix
674         # minimum android version that supports aarch64
675         if test "$ANDROID_API_LEVEL" -lt "21" ; then
676             ANDROID_API_LEVEL=21
677         fi
678         ANDROID_APP_ABI=arm64-v8a
679     elif test $host_cpu = x86_64; then
680         android_platform_prefix=x86_64-linux-android
681         android_gnu_prefix=$android_platform_prefix
682         LLVM_TRIPLE=$android_platform_prefix
683         # minimum android version that supports x86_64
684         ANDROID_API_LEVEL=21
685         ANDROID_APP_ABI=x86_64
686     else
687         # host_cpu is something like "i386" or "i686" I guess, NDK uses
688         # "x86" in some contexts
689         android_cpu=x86
690         android_platform_prefix=$android_cpu
691         android_gnu_prefix=i686-linux-android
692         LLVM_TRIPLE=$android_gnu_prefix
693         ANDROID_APP_ABI=x86
694     fi
696     case "$with_android_ndk_toolchain_version" in
697     clang5.0)
698         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
699         ;;
700     *)
701         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
702     esac
704     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
706     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
707     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
708     # manage to link the (app-specific) single huge .so that is built for the app in
709     # android/source/ if there is debug information in a significant part of the object files.
710     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
711     # all objects have been built with debug information.)
712     case $build_os in
713     linux-gnu*)
714         android_HOST_TAG=linux-x86_64
715         ;;
716     darwin*)
717         android_HOST_TAG=darwin-x86_64
718         ;;
719     *)
720         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
721         # ndk would also support windows and windows-x86_64
722         ;;
723     esac
724     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
725     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
726     dnl TODO: NSS build uses it...
727     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
728     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
730     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
731     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
732     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
733     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
734     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
736     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
737     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
738     if test "$ENABLE_LTO" = TRUE; then
739         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
740         # $CC and $CXX when building external libraries
741         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
742     fi
744     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
746     if test -z "$CC"; then
747         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
748         CC_BASE="clang"
749     fi
750     if test -z "$CXX"; then
751         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
752         CXX_BASE="clang++"
753     fi
755     # remember to download the ownCloud Android library later
756     BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
758 AC_SUBST(ANDROID_NDK_HOME)
759 AC_SUBST(ANDROID_APP_ABI)
760 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
762 dnl ===================================================================
763 dnl --with-android-sdk
764 dnl ===================================================================
765 ANDROID_SDK_HOME=
766 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
767     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
769 if test -n "$with_android_sdk"; then
770     eval ANDROID_SDK_HOME=$with_android_sdk
771     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
773 AC_SUBST(ANDROID_SDK_HOME)
775 AC_ARG_ENABLE([android-lok],
776     AS_HELP_STRING([--enable-android-lok],
777         [The Android app from the android/ subdir needs several tweaks all
778          over the place that break the LOK when used in the Online-based
779          Android app.  This switch indicates that the intent of this build is
780          actually the Online-based, non-modified LOK.])
782 ENABLE_ANDROID_LOK=
783 if test -n "$ANDROID_NDK_HOME" ; then
784     if test "$enable_android_lok" = yes; then
785         ENABLE_ANDROID_LOK=TRUE
786         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
787         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
788     else
789         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
790     fi
792 AC_SUBST([ENABLE_ANDROID_LOK])
794 libo_FUZZ_ARG_ENABLE([android-editing],
795     AS_HELP_STRING([--enable-android-editing],
796         [Enable the experimental editing feature on Android.])
798 ENABLE_ANDROID_EDITING=
799 if test "$enable_android_editing" = yes; then
800     ENABLE_ANDROID_EDITING=TRUE
802 AC_SUBST([ENABLE_ANDROID_EDITING])
804 dnl ===================================================================
805 dnl The following is a list of supported systems.
806 dnl Sequential to keep the logic very simple
807 dnl These values may be checked and reset later.
808 dnl ===================================================================
809 #defaults unless the os test overrides this:
810 test_randr=yes
811 test_xrender=yes
812 test_cups=yes
813 test_dbus=yes
814 test_fontconfig=yes
815 test_cairo=no
816 test_gdb_index=no
817 test_split_debug=no
819 # Default values, as such probably valid just for Linux, set
820 # differently below just for Mac OSX, but at least better than
821 # hardcoding these as we used to do. Much of this is duplicated also
822 # in solenv for old build system and for gbuild, ideally we should
823 # perhaps define stuff like this only here in configure.ac?
825 LINKFLAGSSHL="-shared"
826 PICSWITCH="-fpic"
827 DLLPOST=".so"
829 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
831 INSTROOTBASESUFFIX=
832 INSTROOTCONTENTSUFFIX=
833 SDKDIRNAME=sdk
835 HOST_PLATFORM="$host"
837 host_cpu_for_clang="$host_cpu"
839 case "$host_os" in
841 solaris*)
842     build_gstreamer_1_0=yes
843     test_freetype=yes
844     build_skia=yes
845     _os=SunOS
847     dnl ===========================================================
848     dnl Check whether we're using Solaris 10 - SPARC or Intel.
849     dnl ===========================================================
850     AC_MSG_CHECKING([the Solaris operating system release])
851     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
852     if test "$_os_release" -lt "10"; then
853         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
854     else
855         AC_MSG_RESULT([ok ($_os_release)])
856     fi
858     dnl Check whether we're using a SPARC or i386 processor
859     AC_MSG_CHECKING([the processor type])
860     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
861         AC_MSG_RESULT([ok ($host_cpu)])
862     else
863         AC_MSG_ERROR([only SPARC and i386 processors are supported])
864     fi
865     ;;
867 linux-gnu*|k*bsd*-gnu*)
868     build_gstreamer_1_0=yes
869     test_kf5=yes
870     test_gtk3_kde5=yes
871     build_skia=yes
872     test_gdb_index=yes
873     test_split_debug=yes
874     if test "$enable_fuzzers" != yes; then
875         test_freetype=yes
876         test_fontconfig=yes
877     else
878         test_freetype=no
879         test_fontconfig=no
880         BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
881     fi
882     _os=Linux
883     ;;
885 gnu)
886     test_randr=no
887     test_xrender=no
888     _os=GNU
889      ;;
891 cygwin*|wsl*)
893     # When building on Windows normally with MSVC under Cygwin,
894     # configure thinks that the host platform (the platform the
895     # built code will run on) is Cygwin, even if it obviously is
896     # Windows, which in Autoconf terminology is called
897     # "mingw32". (Which is misleading as MinGW is the name of the
898     # tool-chain, not an operating system.)
900     # Somewhat confusing, yes. But this configure script doesn't
901     # look at $host etc that much, it mostly uses its own $_os
902     # variable, set here in this case statement.
904     test_cups=no
905     test_dbus=no
906     test_randr=no
907     test_xrender=no
908     test_freetype=no
909     test_fontconfig=no
910     build_skia=yes
911     _os=WINNT
913     DLLPOST=".dll"
914     LINKFLAGSNOUNDEFS=
916     if test "$host_cpu" = "aarch64"; then
917         enable_gpgmepp=no
918         enable_coinmp=no
919         enable_firebird_sdbc=no
920     fi
921     ;;
923 darwin*|macos*) # macOS
924     test_randr=no
925     test_xrender=no
926     test_freetype=no
927     test_fontconfig=no
928     test_dbus=no
929     if test -n "$LODE_HOME" ; then
930         mac_sanitize_path
931         AC_MSG_NOTICE([sanitized the PATH to $PATH])
932     fi
933     _os=Darwin
934     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
935     INSTROOTCONTENTSUFFIX=/Contents
936     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
937     # See comment above the case "$host_os"
938     LINKFLAGSSHL="-dynamiclib -single_module"
940     # -fPIC is default
941     PICSWITCH=""
943     DLLPOST=".dylib"
945     # -undefined error is the default
946     LINKFLAGSNOUNDEFS=""
947     case "$host_cpu" in
948     aarch64|arm64)
949         case "$host_os" in
950         macos*)
951             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
952             # the "macos" part so be sure to use aarch64-apple-darwin for now.
953             HOST_PLATFORM=aarch64-apple-darwin
954             ;;
955         esac
957         # Apple's Clang uses "arm64"
958         host_cpu_for_clang=arm64
959     esac
962 ios*) # iOS
963     test_randr=no
964     test_xrender=no
965     test_freetype=no
966     test_fontconfig=no
967     test_dbus=no
968     if test -n "$LODE_HOME" ; then
969         mac_sanitize_path
970         AC_MSG_NOTICE([sanitized the PATH to $PATH])
971     fi
972     enable_gpgmepp=no
973     _os=iOS
974     test_cups=no
975     enable_mpl_subset=yes
976     enable_lotuswordpro=no
977     enable_coinmp=no
978     enable_lpsolve=no
979     enable_mariadb_sdbc=no
980     enable_postgresql_sdbc=no
981     enable_extension_integration=no
982     enable_report_builder=no
983     with_ppds=no
984     if test "$enable_ios_simulator" = "yes"; then
985         host=x86_64-apple-darwin
986     fi
987     # See comment above the case "$host_os"
988     LINKFLAGSSHL="-dynamiclib -single_module"
990     # -fPIC is default
991     PICSWITCH=""
993     DLLPOST=".dylib"
995     # -undefined error is the default
996     LINKFLAGSNOUNDEFS=""
998     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
999     # part, so use aarch64-apple-darwin for now.
1000     HOST_PLATFORM=aarch64-apple-darwin
1002     # Apple's Clang uses "arm64"
1003     host_cpu_for_clang=arm64
1006 freebsd*)
1007     build_gstreamer_1_0=yes
1008     test_kf5=yes
1009     test_gtk3_kde5=yes
1010     test_freetype=yes
1011     build_skia=yes
1012     AC_MSG_CHECKING([the FreeBSD operating system release])
1013     if test -n "$with_os_version"; then
1014         OSVERSION="$with_os_version"
1015     else
1016         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1017     fi
1018     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1019     AC_MSG_CHECKING([which thread library to use])
1020     if test "$OSVERSION" -lt "500016"; then
1021         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1022         PTHREAD_LIBS="-pthread"
1023     elif test "$OSVERSION" -lt "502102"; then
1024         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1025         PTHREAD_LIBS="-lc_r"
1026     else
1027         PTHREAD_CFLAGS=""
1028         PTHREAD_LIBS="-pthread"
1029     fi
1030     AC_MSG_RESULT([$PTHREAD_LIBS])
1031     _os=FreeBSD
1032     ;;
1034 *netbsd*)
1035     build_gstreamer_1_0=yes
1036     test_kf5=yes
1037     test_gtk3_kde5=yes
1038     test_freetype=yes
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     test_randr=no
1046     test_freetype=yes
1047     PTHREAD_LIBS=-pthread
1048     _os=AIX
1049     ;;
1051 openbsd*)
1052     test_freetype=yes
1053     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054     PTHREAD_LIBS="-pthread"
1055     _os=OpenBSD
1056     ;;
1058 dragonfly*)
1059     build_gstreamer_1_0=yes
1060     test_kf5=yes
1061     test_gtk3_kde5=yes
1062     test_freetype=yes
1063     build_skia=yes
1064     PTHREAD_LIBS="-pthread"
1065     _os=DragonFly
1066     ;;
1068 linux-android*)
1069     build_gstreamer_1_0=no
1070     enable_lotuswordpro=no
1071     enable_mpl_subset=yes
1072     enable_coinmp=yes
1073     enable_lpsolve=no
1074     enable_mariadb_sdbc=no
1075     enable_report_builder=no
1076     enable_odk=no
1077     enable_postgresql_sdbc=no
1078     enable_python=no
1079     test_cups=no
1080     test_dbus=no
1081     test_fontconfig=no
1082     test_freetype=no
1083     test_kf5=no
1084     test_qt5=no
1085     test_gtk3_kde5=no
1086     test_randr=no
1087     test_xrender=no
1088     _os=Android
1090     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1091     BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
1092     ;;
1094 haiku*)
1095     test_cups=no
1096     test_dbus=no
1097     test_randr=no
1098     test_xrender=no
1099     test_freetype=yes
1100     enable_odk=no
1101     enable_gstreamer_1_0=no
1102     enable_vlc=no
1103     enable_coinmp=no
1104     enable_pdfium=no
1105     enable_sdremote=no
1106     enable_postgresql_sdbc=no
1107     enable_firebird_sdbc=no
1108     _os=Haiku
1109     ;;
1112     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1113     ;;
1114 esac
1116 AC_SUBST(HOST_PLATFORM)
1118 if test "$_os" = "Android" ; then
1119     # Verify that the NDK and SDK options are proper
1120     if test -z "$with_android_ndk"; then
1121         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1122     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1123         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1124     fi
1126     if test -z "$ANDROID_SDK_HOME"; then
1127         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1128     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1129         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1130     fi
1132     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1133     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1134         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1135                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1136                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1137         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1138         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1139         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1140     fi
1141     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1142         AC_MSG_WARN([android support repository not found - install with
1143                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1144                      to allow the build to download the specified version of the android support libraries])
1145         add_warning "android support repository not found - install with"
1146         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1147         add_warning "to allow the build to download the specified version of the android support libraries"
1148     fi
1151 if test "$_os" = "AIX"; then
1152     AC_PATH_PROG(GAWK, gawk)
1153     if test -z "$GAWK"; then
1154         AC_MSG_ERROR([gawk not found in \$PATH])
1155     fi
1158 AC_SUBST(SDKDIRNAME)
1160 AC_SUBST(PTHREAD_CFLAGS)
1161 AC_SUBST(PTHREAD_LIBS)
1163 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1164 # By default use the ones specified by our build system,
1165 # but explicit override is possible.
1166 AC_MSG_CHECKING(for explicit AFLAGS)
1167 if test -n "$AFLAGS"; then
1168     AC_MSG_RESULT([$AFLAGS])
1169     x_AFLAGS=
1170 else
1171     AC_MSG_RESULT(no)
1172     x_AFLAGS=[\#]
1174 AC_MSG_CHECKING(for explicit CFLAGS)
1175 if test -n "$CFLAGS"; then
1176     AC_MSG_RESULT([$CFLAGS])
1177     x_CFLAGS=
1178 else
1179     AC_MSG_RESULT(no)
1180     x_CFLAGS=[\#]
1182 AC_MSG_CHECKING(for explicit CXXFLAGS)
1183 if test -n "$CXXFLAGS"; then
1184     AC_MSG_RESULT([$CXXFLAGS])
1185     x_CXXFLAGS=
1186 else
1187     AC_MSG_RESULT(no)
1188     x_CXXFLAGS=[\#]
1190 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1191 if test -n "$OBJCFLAGS"; then
1192     AC_MSG_RESULT([$OBJCFLAGS])
1193     x_OBJCFLAGS=
1194 else
1195     AC_MSG_RESULT(no)
1196     x_OBJCFLAGS=[\#]
1198 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1199 if test -n "$OBJCXXFLAGS"; then
1200     AC_MSG_RESULT([$OBJCXXFLAGS])
1201     x_OBJCXXFLAGS=
1202 else
1203     AC_MSG_RESULT(no)
1204     x_OBJCXXFLAGS=[\#]
1206 AC_MSG_CHECKING(for explicit LDFLAGS)
1207 if test -n "$LDFLAGS"; then
1208     AC_MSG_RESULT([$LDFLAGS])
1209     x_LDFLAGS=
1210 else
1211     AC_MSG_RESULT(no)
1212     x_LDFLAGS=[\#]
1214 AC_SUBST(AFLAGS)
1215 AC_SUBST(CFLAGS)
1216 AC_SUBST(CXXFLAGS)
1217 AC_SUBST(OBJCFLAGS)
1218 AC_SUBST(OBJCXXFLAGS)
1219 AC_SUBST(LDFLAGS)
1220 AC_SUBST(x_AFLAGS)
1221 AC_SUBST(x_CFLAGS)
1222 AC_SUBST(x_CXXFLAGS)
1223 AC_SUBST(x_OBJCFLAGS)
1224 AC_SUBST(x_OBJCXXFLAGS)
1225 AC_SUBST(x_LDFLAGS)
1227 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1228 my_original_CFLAGS=$CFLAGS
1229 my_original_CXXFLAGS=$CXXFLAGS
1230 my_original_CPPFLAGS=$CPPFLAGS
1232 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1233 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1234 dnl AC_PROG_CC internally.
1235 if test "$_os" != "WINNT"; then
1236     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1237     save_CFLAGS=$CFLAGS
1238     AC_PROG_CC
1239     CFLAGS=$save_CFLAGS
1240     if test -z "$CC_BASE"; then
1241         CC_BASE=`first_arg_basename "$CC"`
1242     fi
1245 if test "$_os" != "WINNT"; then
1246     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1247 else
1248     ENDIANNESS=little
1250 AC_SUBST(ENDIANNESS)
1252 if test $_os != "WINNT"; then
1253     save_LIBS="$LIBS"
1254     AC_SEARCH_LIBS([dlsym], [dl],
1255         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1256         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1257     LIBS="$save_LIBS"
1259 AC_SUBST(DLOPEN_LIBS)
1261 AC_ARG_ENABLE(ios-simulator,
1262     AS_HELP_STRING([--enable-ios-simulator],
1263         [build for iOS simulator])
1266 AC_ARG_ENABLE(ios-libreofficelight-app,
1267     AS_HELP_STRING([--enable-ios-libreofficelight-app],
1268         [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
1269          (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
1270          and also that its actual build (in Xcode) requires some obvious modifications to the project.])
1273 ENABLE_IOS_LIBREOFFICELIGHT_APP=
1274 if test "$enable_ios_libreofficelight_app" = yes; then
1275     ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
1277 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
1279 ###############################################################################
1280 # Extensions switches --enable/--disable
1281 ###############################################################################
1282 # By default these should be enabled unless having extra dependencies.
1283 # If there is extra dependency over configure options then the enable should
1284 # be automagic based on whether the requiring feature is enabled or not.
1285 # All this options change anything only with --enable-extension-integration.
1287 # The name of this option and its help string makes it sound as if
1288 # extensions are built anyway, just not integrated in the installer,
1289 # if you use --disable-extension-integration. Is that really the
1290 # case?
1292 libo_FUZZ_ARG_ENABLE(extension-integration,
1293     AS_HELP_STRING([--disable-extension-integration],
1294         [Disable integration of the built extensions in the installer of the
1295          product. Use this switch to disable the integration.])
1298 AC_ARG_ENABLE(avmedia,
1299     AS_HELP_STRING([--disable-avmedia],
1300         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1303 AC_ARG_ENABLE(database-connectivity,
1304     AS_HELP_STRING([--disable-database-connectivity],
1305         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1308 # This doesn't mean not building (or "integrating") extensions
1309 # (although it probably should; i.e. it should imply
1310 # --disable-extension-integration I guess), it means not supporting
1311 # any extension mechanism at all
1312 libo_FUZZ_ARG_ENABLE(extensions,
1313     AS_HELP_STRING([--disable-extensions],
1314         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1317 AC_ARG_ENABLE(scripting,
1318     AS_HELP_STRING([--disable-scripting],
1319         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1322 # This is mainly for Android and iOS, but could potentially be used in some
1323 # special case otherwise, too, so factored out as a separate setting
1325 AC_ARG_ENABLE(dynamic-loading,
1326     AS_HELP_STRING([--disable-dynamic-loading],
1327         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1330 libo_FUZZ_ARG_ENABLE(report-builder,
1331     AS_HELP_STRING([--disable-report-builder],
1332         [Disable the Report Builder.])
1335 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1336     AS_HELP_STRING([--enable-ext-wiki-publisher],
1337         [Enable the Wiki Publisher extension.])
1340 libo_FUZZ_ARG_ENABLE(lpsolve,
1341     AS_HELP_STRING([--disable-lpsolve],
1342         [Disable compilation of the lp solve solver ])
1344 libo_FUZZ_ARG_ENABLE(coinmp,
1345     AS_HELP_STRING([--disable-coinmp],
1346         [Disable compilation of the CoinMP solver ])
1349 libo_FUZZ_ARG_ENABLE(pdfimport,
1350     AS_HELP_STRING([--disable-pdfimport],
1351         [Disable building the PDF import feature.])
1354 libo_FUZZ_ARG_ENABLE(pdfium,
1355     AS_HELP_STRING([--disable-pdfium],
1356         [Disable building PDFium. Results in unsecure PDF signature verification.])
1359 libo_FUZZ_ARG_ENABLE(skia,
1360     AS_HELP_STRING([--disable-skia],
1361         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1364 ###############################################################################
1366 dnl ---------- *** ----------
1368 libo_FUZZ_ARG_ENABLE(mergelibs,
1369     AS_HELP_STRING([--enable-mergelibs],
1370         [Merge several of the smaller libraries into one big, "merged", one.])
1373 libo_FUZZ_ARG_ENABLE(breakpad,
1374     AS_HELP_STRING([--enable-breakpad],
1375         [Enables breakpad for crash reporting.])
1378 libo_FUZZ_ARG_ENABLE(crashdump,
1379     AS_HELP_STRING([--disable-crashdump],
1380         [Disable dump.ini and dump-file, when --enable-breakpad])
1383 AC_ARG_ENABLE(fetch-external,
1384     AS_HELP_STRING([--disable-fetch-external],
1385         [Disables fetching external tarballs from web sources.])
1388 AC_ARG_ENABLE(fuzzers,
1389     AS_HELP_STRING([--enable-fuzzers],
1390         [Enables building libfuzzer targets for fuzz testing.])
1393 libo_FUZZ_ARG_ENABLE(pch,
1394     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1395         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1396          Using 'system' will include only external headers, 'base' will add also headers
1397          from base modules, 'normal' will also add all headers except from the module built,
1398          'full' will use all suitable headers even from a module itself.])
1401 libo_FUZZ_ARG_ENABLE(epm,
1402     AS_HELP_STRING([--enable-epm],
1403         [LibreOffice includes self-packaging code, that requires epm, however epm is
1404          useless for large scale package building.])
1407 libo_FUZZ_ARG_ENABLE(odk,
1408     AS_HELP_STRING([--disable-odk],
1409         [LibreOffice includes an ODK, office development kit which some packagers may
1410          wish to build without.])
1413 AC_ARG_ENABLE(mpl-subset,
1414     AS_HELP_STRING([--enable-mpl-subset],
1415         [Don't compile any pieces which are not MPL or more liberally licensed])
1418 libo_FUZZ_ARG_ENABLE(evolution2,
1419     AS_HELP_STRING([--enable-evolution2],
1420         [Allows the built-in evolution 2 addressbook connectivity build to be
1421          enabled.])
1424 AC_ARG_ENABLE(avahi,
1425     AS_HELP_STRING([--enable-avahi],
1426         [Determines whether to use Avahi to advertise Impress to remote controls.])
1429 libo_FUZZ_ARG_ENABLE(werror,
1430     AS_HELP_STRING([--enable-werror],
1431         [Turn warnings to errors. (Has no effect in modules where the treating
1432          of warnings as errors is disabled explicitly.)]),
1435 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1436     AS_HELP_STRING([--enable-assert-always-abort],
1437         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1440 libo_FUZZ_ARG_ENABLE(dbgutil,
1441     AS_HELP_STRING([--enable-dbgutil],
1442         [Provide debugging support from --enable-debug and include additional debugging
1443          utilities such as object counting or more expensive checks.
1444          This is the recommended option for developers.
1445          Note that this makes the build ABI incompatible, it is not possible to mix object
1446          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1448 libo_FUZZ_ARG_ENABLE(debug,
1449     AS_HELP_STRING([--enable-debug],
1450         [Include debugging information, disable compiler optimization and inlining plus
1451          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1453 libo_FUZZ_ARG_ENABLE(split-debug,
1454     AS_HELP_STRING([--disable-split-debug],
1455         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1456          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1458 libo_FUZZ_ARG_ENABLE(gdb-index,
1459     AS_HELP_STRING([--disable-gdb-index],
1460         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1461          The feature requires the gold or lld linker.]))
1463 libo_FUZZ_ARG_ENABLE(sal-log,
1464     AS_HELP_STRING([--enable-sal-log],
1465         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1467 libo_FUZZ_ARG_ENABLE(symbols,
1468     AS_HELP_STRING([--enable-symbols],
1469         [Generate debug information.
1470          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1471          otherwise. It is possible to explicitly specify gbuild build targets
1472          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1473          everything in the directory; there is no ordering, more specific overrides
1474          more general, and disabling takes precedence).
1475          Example: --enable-symbols="all -sw/ -Library_sc".]))
1477 libo_FUZZ_ARG_ENABLE(optimized,
1478     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1479         [Whether to compile with optimization flags.
1480          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1481          otherwise. Using 'debug' will try to use only optimizations that should
1482          not interfere with debugging.]))
1484 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1485     AS_HELP_STRING([--disable-runtime-optimizations],
1486         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1487          JVM JIT) that are known to interact badly with certain dynamic analysis
1488          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1489          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1490          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1492 AC_ARG_WITH(valgrind,
1493     AS_HELP_STRING([--with-valgrind],
1494         [Make availability of Valgrind headers a hard requirement.]))
1496 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1497     AS_HELP_STRING([--enable-compiler-plugins],
1498         [Enable compiler plugins that will perform additional checks during
1499          building. Enabled automatically by --enable-dbgutil.
1500          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1501 COMPILER_PLUGINS_DEBUG=
1502 if test "$enable_compiler_plugins" = debug; then
1503     enable_compiler_plugins=yes
1504     COMPILER_PLUGINS_DEBUG=TRUE
1507 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1508     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1509         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1510          relevant in the --disable-compiler-plugins case.]))
1512 libo_FUZZ_ARG_ENABLE(ooenv,
1513     AS_HELP_STRING([--disable-ooenv],
1514         [Disable ooenv for the instdir installation.]))
1516 AC_ARG_ENABLE(lto,
1517     AS_HELP_STRING([--enable-lto],
1518         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1519          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1520          linker. For MSVC, this option is broken at the moment. This is experimental work
1521          in progress that shouldn't be used unless you are working on it.)]))
1523 AC_ARG_ENABLE(python,
1524     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1525         [Enables or disables Python support at run-time.
1526          Also specifies what Python to use at build-time.
1527          'fully-internal' even forces the internal version for uses of Python
1528          during the build.
1529          On macOS the only choices are
1530          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1531          ]))
1533 libo_FUZZ_ARG_ENABLE(gtk3,
1534     AS_HELP_STRING([--disable-gtk3],
1535         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1536 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1538 AC_ARG_ENABLE(introspection,
1539     AS_HELP_STRING([--enable-introspection],
1540         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1541          Linux distributions.)]))
1543 AC_ARG_ENABLE(split-app-modules,
1544     AS_HELP_STRING([--enable-split-app-modules],
1545         [Split file lists for app modules, e.g. base, calc.
1546          Has effect only with make distro-pack-install]),
1549 AC_ARG_ENABLE(split-opt-features,
1550     AS_HELP_STRING([--enable-split-opt-features],
1551         [Split file lists for some optional features, e.g. pyuno, testtool.
1552          Has effect only with make distro-pack-install]),
1555 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1556     AS_HELP_STRING([--disable-cairo-canvas],
1557         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1560 libo_FUZZ_ARG_ENABLE(dbus,
1561     AS_HELP_STRING([--disable-dbus],
1562         [Determines whether to enable features that depend on dbus.
1563          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1564 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1566 libo_FUZZ_ARG_ENABLE(sdremote,
1567     AS_HELP_STRING([--disable-sdremote],
1568         [Determines whether to enable Impress remote control (i.e. the server component).]),
1569 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1571 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1572     AS_HELP_STRING([--disable-sdremote-bluetooth],
1573         [Determines whether to build sdremote with bluetooth support.
1574          Requires dbus on Linux.]))
1576 libo_FUZZ_ARG_ENABLE(gio,
1577     AS_HELP_STRING([--disable-gio],
1578         [Determines whether to use the GIO support.]),
1579 ,test "${enable_gio+set}" = set || enable_gio=yes)
1581 AC_ARG_ENABLE(qt5,
1582     AS_HELP_STRING([--enable-qt5],
1583         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1584          available.]),
1587 AC_ARG_ENABLE(kf5,
1588     AS_HELP_STRING([--enable-kf5],
1589         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1590          KF5 are available.]),
1593 AC_ARG_ENABLE(kde5,
1594     AS_HELP_STRING([--enable-kde5],
1595         [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1598 AC_ARG_ENABLE(gtk3_kde5,
1599     AS_HELP_STRING([--enable-gtk3-kde5],
1600         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1601          platforms where Gtk3, Qt5 and Plasma is available.]),
1604 AC_ARG_ENABLE(gui,
1605     AS_HELP_STRING([--disable-gui],
1606         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1607 ,enable_gui=yes)
1609 libo_FUZZ_ARG_ENABLE(randr,
1610     AS_HELP_STRING([--disable-randr],
1611         [Disable RandR support in the vcl project.]),
1612 ,test "${enable_randr+set}" = set || enable_randr=yes)
1614 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1615     AS_HELP_STRING([--disable-gstreamer-1-0],
1616         [Disable building with the gstreamer 1.0 avmedia backend.]),
1617 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1619 libo_FUZZ_ARG_ENABLE(vlc,
1620     AS_HELP_STRING([--enable-vlc],
1621         [Enable building with the (experimental) VLC avmedia backend.]),
1622 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1624 libo_FUZZ_ARG_ENABLE(neon,
1625     AS_HELP_STRING([--disable-neon],
1626         [Disable neon and the compilation of webdav binding.]),
1629 libo_FUZZ_ARG_ENABLE([eot],
1630     [AS_HELP_STRING([--enable-eot],
1631         [Enable support for Embedded OpenType fonts.])],
1632 ,test "${enable_eot+set}" = set || enable_eot=no)
1634 libo_FUZZ_ARG_ENABLE(cve-tests,
1635     AS_HELP_STRING([--disable-cve-tests],
1636         [Prevent CVE tests to be executed]),
1639 libo_FUZZ_ARG_ENABLE(chart-tests,
1640     AS_HELP_STRING([--enable-chart-tests],
1641         [Executes chart XShape tests. In a perfect world these tests would be
1642          stable and everyone could run them, in reality it is best to run them
1643          only on a few machines that are known to work and maintained by people
1644          who can judge if a test failure is a regression or not.]),
1647 AC_ARG_ENABLE(build-unowinreg,
1648     AS_HELP_STRING([--enable-build-unowinreg],
1649         [Do not use the prebuilt unowinreg.dll. Build it instead. The MinGW C++
1650          compiler is needed on Linux.]),
1653 AC_ARG_ENABLE(build-opensymbol,
1654     AS_HELP_STRING([--enable-build-opensymbol],
1655         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1656          fontforge installed.]),
1659 AC_ARG_ENABLE(dependency-tracking,
1660     AS_HELP_STRING([--enable-dependency-tracking],
1661         [Do not reject slow dependency extractors.])[
1662   --disable-dependency-tracking
1663                           Disables generation of dependency information.
1664                           Speed up one-time builds.],
1667 AC_ARG_ENABLE(icecream,
1668     AS_HELP_STRING([--enable-icecream],
1669         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1670          It defaults to /opt/icecream for the location of the icecream gcc/g++
1671          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1674 AC_ARG_ENABLE(ld,
1675     AS_HELP_STRING([--enable-ld=<linker>],
1676         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1677          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1678          If <linker> contains any ':', the part before the first ':' is used as the value of
1679          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1680          needed for Clang 12).]),
1683 libo_FUZZ_ARG_ENABLE(cups,
1684     AS_HELP_STRING([--disable-cups],
1685         [Do not build cups support.])
1688 AC_ARG_ENABLE(ccache,
1689     AS_HELP_STRING([--disable-ccache],
1690         [Do not try to use ccache automatically.
1691          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1692          CC/CXX are not yet set, and --enable-icecream is not given, we
1693          attempt to use ccache. --disable-ccache disables ccache completely.
1694          Additionally ccache's depend mode is enabled if possible,
1695          use --enable-ccache=nodepend to enable ccache without depend mode.
1699 libo_FUZZ_ARG_ENABLE(online-update,
1700     AS_HELP_STRING([--enable-online-update],
1701         [Enable the online update service that will check for new versions of
1702          LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1703          If the value is "mar", the experimental Mozilla-like update will be
1704          enabled instead of the traditional update mechanism.]),
1707 AC_ARG_WITH(update-config,
1708     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1709                    [Path to the update config ini file]))
1711 libo_FUZZ_ARG_ENABLE(extension-update,
1712     AS_HELP_STRING([--disable-extension-update],
1713         [Disable possibility to update installed extensions.]),
1716 libo_FUZZ_ARG_ENABLE(release-build,
1717     AS_HELP_STRING([--enable-release-build],
1718         [Enable release build. Note that the "release build" choice is orthogonal to
1719          whether symbols are present, debug info is generated, or optimization
1720          is done.
1721          See http://wiki.documentfoundation.org/Development/DevBuild]),
1724 AC_ARG_ENABLE(windows-build-signing,
1725     AS_HELP_STRING([--enable-windows-build-signing],
1726         [Enable signing of windows binaries (*.exe, *.dll)]),
1729 AC_ARG_ENABLE(silent-msi,
1730     AS_HELP_STRING([--enable-silent-msi],
1731         [Enable MSI with LIMITUI=1 (silent install).]),
1734 AC_ARG_ENABLE(macosx-code-signing,
1735     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1736         [Sign executables, dylibs, frameworks and the app bundle. If you
1737          don't provide an identity the first suitable certificate
1738          in your keychain is used.]),
1741 AC_ARG_ENABLE(macosx-package-signing,
1742     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1743         [Create a .pkg suitable for uploading to the Mac App Store and sign
1744          it. If you don't provide an identity the first suitable certificate
1745          in your keychain is used.]),
1748 AC_ARG_ENABLE(macosx-sandbox,
1749     AS_HELP_STRING([--enable-macosx-sandbox],
1750         [Make the app bundle run in a sandbox. Requires code signing.
1751          Is required by apps distributed in the Mac App Store, and implies
1752          adherence to App Store rules.]),
1755 AC_ARG_WITH(macosx-bundle-identifier,
1756     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1757         [Define the macOS bundle identifier. Default is the somewhat weird
1758          org.libreoffice.script ("script", huh?).]),
1759 ,with_macosx_bundle_identifier=org.libreoffice.script)
1761 AC_ARG_WITH(product-name,
1762     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1763         [Define the product name. Default is AC_PACKAGE_NAME.]),
1764 ,with_product_name=$PRODUCTNAME)
1766 libo_FUZZ_ARG_ENABLE(community-flavor,
1767     AS_HELP_STRING([--disable-community-flavor],
1768         [Disable the Community branding.]),
1771 AC_ARG_WITH(package-version,
1772     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1773         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1776 libo_FUZZ_ARG_ENABLE(readonly-installset,
1777     AS_HELP_STRING([--enable-readonly-installset],
1778         [Prevents any attempts by LibreOffice to write into its installation. That means
1779          at least that no "system-wide" extensions can be added. Partly experimental work in
1780          progress, probably not fully implemented. Always enabled for macOS.]),
1783 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1784     AS_HELP_STRING([--disable-mariadb-sdbc],
1785         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1788 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1789     AS_HELP_STRING([--disable-postgresql-sdbc],
1790         [Disable the build of the PostgreSQL-SDBC driver.])
1793 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1794     AS_HELP_STRING([--disable-lotuswordpro],
1795         [Disable the build of the Lotus Word Pro filter.]),
1796 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1798 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1799     AS_HELP_STRING([--disable-firebird-sdbc],
1800         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1801 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1803 AC_ARG_ENABLE(bogus-pkg-config,
1804     AS_HELP_STRING([--enable-bogus-pkg-config],
1805         [MACOSX only: on MacOSX pkg-config can cause trouble. by default if one is found in the PATH, an error is issued. This flag turn that error into a warning.]),
1808 AC_ARG_ENABLE(openssl,
1809     AS_HELP_STRING([--disable-openssl],
1810         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1811          components will either use GNUTLS or NSS. Work in progress,
1812          use only if you are hacking on it.]),
1813 ,enable_openssl=yes)
1815 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1816     AS_HELP_STRING([--enable-cipher-openssl-backend],
1817         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1818          Requires --enable-openssl.]))
1820 AC_ARG_ENABLE(library-bin-tar,
1821     AS_HELP_STRING([--enable-library-bin-tar],
1822         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1823         Some libraries can save their build result in a tarball
1824         stored in TARFILE_LOCATION. That binary tarball is
1825         uniquely identified by the source tarball,
1826         the content of the config_host.mk file and the content
1827         of the top-level directory in core for that library
1828         If this option is enabled, then if such a tarfile exist, it will be untarred
1829         instead of the source tarfile, and the build step will be skipped for that
1830         library.
1831         If a proper tarfile does not exist, then the normal source-based
1832         build is done for that library and a proper binary tarfile is created
1833         for the next time.]),
1836 AC_ARG_ENABLE(dconf,
1837     AS_HELP_STRING([--disable-dconf],
1838         [Disable the dconf configuration backend (enabled by default where
1839          available).]))
1841 libo_FUZZ_ARG_ENABLE(formula-logger,
1842     AS_HELP_STRING(
1843         [--enable-formula-logger],
1844         [Enable formula logger for logging formula calculation flow in Calc.]
1845     )
1848 AC_ARG_ENABLE(ldap,
1849     AS_HELP_STRING([--disable-ldap],
1850         [Disable LDAP support.]),
1851 ,enable_ldap=yes)
1853 AC_ARG_ENABLE(opencl,
1854     AS_HELP_STRING([--disable-opencl],
1855         [Disable OpenCL support.]),
1856 ,enable_opencl=yes)
1858 dnl ===================================================================
1859 dnl Optional Packages (--with/without-)
1860 dnl ===================================================================
1862 AC_ARG_WITH(gcc-home,
1863     AS_HELP_STRING([--with-gcc-home],
1864         [Specify the location of gcc/g++ manually. This can be used in conjunction
1865          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1866          non-default path.]),
1869 AC_ARG_WITH(gnu-patch,
1870     AS_HELP_STRING([--with-gnu-patch],
1871         [Specify location of GNU patch on Solaris or FreeBSD.]),
1874 AC_ARG_WITH(build-platform-configure-options,
1875     AS_HELP_STRING([--with-build-platform-configure-options],
1876         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1879 AC_ARG_WITH(gnu-cp,
1880     AS_HELP_STRING([--with-gnu-cp],
1881         [Specify location of GNU cp on Solaris or FreeBSD.]),
1884 AC_ARG_WITH(external-tar,
1885     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1886         [Specify an absolute path of where to find (and store) tarfiles.]),
1887     TARFILE_LOCATION=$withval ,
1890 AC_ARG_WITH(referenced-git,
1891     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1892         [Specify another checkout directory to reference. This makes use of
1893                  git submodule update --reference, and saves a lot of diskspace
1894                  when having multiple trees side-by-side.]),
1895     GIT_REFERENCE_SRC=$withval ,
1898 AC_ARG_WITH(linked-git,
1899     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1900         [Specify a directory where the repositories of submodules are located.
1901          This uses a method similar to git-new-workdir to get submodules.]),
1902     GIT_LINK_SRC=$withval ,
1905 AC_ARG_WITH(galleries,
1906     AS_HELP_STRING([--with-galleries],
1907         [Specify how galleries should be built. It is possible either to
1908          build these internally from source ("build"),
1909          or to disable them ("no")]),
1912 AC_ARG_WITH(theme,
1913     AS_HELP_STRING([--with-theme="theme1 theme2..."],
1914         [Choose which themes to include. By default those themes with an '*' are included.
1915          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1916          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1919 libo_FUZZ_ARG_WITH(helppack-integration,
1920     AS_HELP_STRING([--without-helppack-integration],
1921         [It will not integrate the helppacks to the installer
1922          of the product. Please use this switch to use the online help
1923          or separate help packages.]),
1926 libo_FUZZ_ARG_WITH(fonts,
1927     AS_HELP_STRING([--without-fonts],
1928         [LibreOffice includes some third-party fonts to provide a reliable basis for
1929          help content, templates, samples, etc. When these fonts are already
1930          known to be available on the system then you should use this option.]),
1933 AC_ARG_WITH(epm,
1934     AS_HELP_STRING([--with-epm],
1935         [Decides which epm to use. Default is to use the one from the system if
1936          one is built. When either this is not there or you say =internal epm
1937          will be built.]),
1940 AC_ARG_WITH(package-format,
1941     AS_HELP_STRING([--with-package-format],
1942         [Specify package format(s) for LibreOffice installation sets. The
1943          implicit --without-package-format leads to no installation sets being
1944          generated. Possible values: aix, archive, bsd, deb, dmg,
1945          installed, msi, pkg, and rpm.
1946          Example: --with-package-format='deb rpm']),
1949 AC_ARG_WITH(tls,
1950     AS_HELP_STRING([--with-tls],
1951         [Decides which TLS/SSL and cryptographic implementations to use for
1952          LibreOffice's code. Notice that this doesn't apply for depending
1953          libraries like "neon", for example. Default is to use NSS
1954          although OpenSSL is also possible. Notice that selecting NSS restricts
1955          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1956          restrict by now the usage of NSS in LO's code. Possible values:
1957          openssl, nss. Example: --with-tls="nss"]),
1960 AC_ARG_WITH(system-libs,
1961     AS_HELP_STRING([--with-system-libs],
1962         [Use libraries already on system -- enables all --with-system-* flags.]),
1965 AC_ARG_WITH(system-bzip2,
1966     AS_HELP_STRING([--with-system-bzip2],
1967         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1968     [with_system_bzip2="$with_system_libs"])
1970 AC_ARG_WITH(system-headers,
1971     AS_HELP_STRING([--with-system-headers],
1972         [Use headers already on system -- enables all --with-system-* flags for
1973          external packages whose headers are the only entities used i.e.
1974          boost/odbc/sane-header(s).]),,
1975     [with_system_headers="$with_system_libs"])
1977 AC_ARG_WITH(system-jars,
1978     AS_HELP_STRING([--without-system-jars],
1979         [When building with --with-system-libs, also the needed jars are expected
1980          on the system. Use this to disable that]),,
1981     [with_system_jars="$with_system_libs"])
1983 AC_ARG_WITH(system-cairo,
1984     AS_HELP_STRING([--with-system-cairo],
1985         [Use cairo libraries already on system.  Happens automatically for
1986          (implicit) --enable-gtk3.]))
1988 AC_ARG_WITH(system-epoxy,
1989     AS_HELP_STRING([--with-system-epoxy],
1990         [Use epoxy libraries already on system.  Happens automatically for
1991          (implicit) --enable-gtk3.]),,
1992        [with_system_epoxy="$with_system_libs"])
1994 AC_ARG_WITH(myspell-dicts,
1995     AS_HELP_STRING([--with-myspell-dicts],
1996         [Adds myspell dictionaries to the LibreOffice installation set]),
1999 AC_ARG_WITH(system-dicts,
2000     AS_HELP_STRING([--without-system-dicts],
2001         [Do not use dictionaries from system paths.]),
2004 AC_ARG_WITH(external-dict-dir,
2005     AS_HELP_STRING([--with-external-dict-dir],
2006         [Specify external dictionary dir.]),
2009 AC_ARG_WITH(external-hyph-dir,
2010     AS_HELP_STRING([--with-external-hyph-dir],
2011         [Specify external hyphenation pattern dir.]),
2014 AC_ARG_WITH(external-thes-dir,
2015     AS_HELP_STRING([--with-external-thes-dir],
2016         [Specify external thesaurus dir.]),
2019 AC_ARG_WITH(system-zlib,
2020     AS_HELP_STRING([--with-system-zlib],
2021         [Use zlib already on system.]),,
2022     [with_system_zlib=auto])
2024 AC_ARG_WITH(system-jpeg,
2025     AS_HELP_STRING([--with-system-jpeg],
2026         [Use jpeg already on system.]),,
2027     [with_system_jpeg="$with_system_libs"])
2029 AC_ARG_WITH(system-clucene,
2030     AS_HELP_STRING([--with-system-clucene],
2031         [Use clucene already on system.]),,
2032     [with_system_clucene="$with_system_libs"])
2034 AC_ARG_WITH(system-expat,
2035     AS_HELP_STRING([--with-system-expat],
2036         [Use expat already on system.]),,
2037     [with_system_expat="$with_system_libs"])
2039 AC_ARG_WITH(system-libxml,
2040     AS_HELP_STRING([--with-system-libxml],
2041         [Use libxml/libxslt already on system.]),,
2042     [with_system_libxml=auto])
2044 AC_ARG_WITH(system-icu,
2045     AS_HELP_STRING([--with-system-icu],
2046         [Use icu already on system.]),,
2047     [with_system_icu="$with_system_libs"])
2049 AC_ARG_WITH(system-ucpp,
2050     AS_HELP_STRING([--with-system-ucpp],
2051         [Use ucpp already on system.]),,
2052     [])
2054 AC_ARG_WITH(system-openldap,
2055     AS_HELP_STRING([--with-system-openldap],
2056         [Use the OpenLDAP LDAP SDK already on system.]),,
2057     [with_system_openldap="$with_system_libs"])
2059 libo_FUZZ_ARG_ENABLE(poppler,
2060     AS_HELP_STRING([--disable-poppler],
2061         [Disable building Poppler.])
2064 AC_ARG_WITH(system-poppler,
2065     AS_HELP_STRING([--with-system-poppler],
2066         [Use system poppler (only needed for PDF import).]),,
2067     [with_system_poppler="$with_system_libs"])
2069 libo_FUZZ_ARG_ENABLE(gpgmepp,
2070     AS_HELP_STRING([--disable-gpgmepp],
2071         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2074 AC_ARG_WITH(system-gpgmepp,
2075     AS_HELP_STRING([--with-system-gpgmepp],
2076         [Use gpgmepp already on system]),,
2077     [with_system_gpgmepp="$with_system_libs"])
2079 AC_ARG_WITH(system-apache-commons,
2080     AS_HELP_STRING([--with-system-apache-commons],
2081         [Use Apache commons libraries already on system.]),,
2082     [with_system_apache_commons="$with_system_jars"])
2084 AC_ARG_WITH(system-mariadb,
2085     AS_HELP_STRING([--with-system-mariadb],
2086         [Use MariaDB/MySQL libraries already on system.]),,
2087     [with_system_mariadb="$with_system_libs"])
2089 AC_ARG_ENABLE(bundle-mariadb,
2090     AS_HELP_STRING([--enable-bundle-mariadb],
2091         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2094 AC_ARG_WITH(system-postgresql,
2095     AS_HELP_STRING([--with-system-postgresql],
2096         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2097          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2098     [with_system_postgresql="$with_system_libs"])
2100 AC_ARG_WITH(libpq-path,
2101     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2102         [Use this PostgreSQL C interface (libpq) installation for building
2103          the PostgreSQL-SDBC extension.]),
2106 AC_ARG_WITH(system-firebird,
2107     AS_HELP_STRING([--with-system-firebird],
2108         [Use Firebird libraries already on system, for building the Firebird-SDBC
2109          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2110     [with_system_firebird="$with_system_libs"])
2112 AC_ARG_WITH(system-libtommath,
2113             AS_HELP_STRING([--with-system-libtommath],
2114                            [Use libtommath already on system]),,
2115             [with_system_libtommath="$with_system_libs"])
2117 AC_ARG_WITH(system-hsqldb,
2118     AS_HELP_STRING([--with-system-hsqldb],
2119         [Use hsqldb already on system.]))
2121 AC_ARG_WITH(hsqldb-jar,
2122     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2123         [Specify path to jarfile manually.]),
2124     HSQLDB_JAR=$withval)
2126 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2127     AS_HELP_STRING([--disable-scripting-beanshell],
2128         [Disable support for scripts in BeanShell.]),
2132 AC_ARG_WITH(system-beanshell,
2133     AS_HELP_STRING([--with-system-beanshell],
2134         [Use beanshell already on system.]),,
2135     [with_system_beanshell="$with_system_jars"])
2137 AC_ARG_WITH(beanshell-jar,
2138     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2139         [Specify path to jarfile manually.]),
2140     BSH_JAR=$withval)
2142 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2143     AS_HELP_STRING([--disable-scripting-javascript],
2144         [Disable support for scripts in JavaScript.]),
2148 AC_ARG_WITH(system-rhino,
2149     AS_HELP_STRING([--with-system-rhino],
2150         [Use rhino already on system.]),,)
2151 #    [with_system_rhino="$with_system_jars"])
2152 # Above is not used as we have different debug interface
2153 # patched into internal rhino. This code needs to be fixed
2154 # before we can enable it by default.
2156 AC_ARG_WITH(rhino-jar,
2157     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2158         [Specify path to jarfile manually.]),
2159     RHINO_JAR=$withval)
2161 AC_ARG_WITH(commons-logging-jar,
2162     AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2163         [Specify path to jarfile manually.]),
2164     COMMONS_LOGGING_JAR=$withval)
2166 AC_ARG_WITH(system-jfreereport,
2167     AS_HELP_STRING([--with-system-jfreereport],
2168         [Use JFreeReport already on system.]),,
2169     [with_system_jfreereport="$with_system_jars"])
2171 AC_ARG_WITH(sac-jar,
2172     AS_HELP_STRING([--with-sac-jar=JARFILE],
2173         [Specify path to jarfile manually.]),
2174     SAC_JAR=$withval)
2176 AC_ARG_WITH(libxml-jar,
2177     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2178         [Specify path to jarfile manually.]),
2179     LIBXML_JAR=$withval)
2181 AC_ARG_WITH(flute-jar,
2182     AS_HELP_STRING([--with-flute-jar=JARFILE],
2183         [Specify path to jarfile manually.]),
2184     FLUTE_JAR=$withval)
2186 AC_ARG_WITH(jfreereport-jar,
2187     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2188         [Specify path to jarfile manually.]),
2189     JFREEREPORT_JAR=$withval)
2191 AC_ARG_WITH(liblayout-jar,
2192     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2193         [Specify path to jarfile manually.]),
2194     LIBLAYOUT_JAR=$withval)
2196 AC_ARG_WITH(libloader-jar,
2197     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2198         [Specify path to jarfile manually.]),
2199     LIBLOADER_JAR=$withval)
2201 AC_ARG_WITH(libformula-jar,
2202     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2203         [Specify path to jarfile manually.]),
2204     LIBFORMULA_JAR=$withval)
2206 AC_ARG_WITH(librepository-jar,
2207     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2208         [Specify path to jarfile manually.]),
2209     LIBREPOSITORY_JAR=$withval)
2211 AC_ARG_WITH(libfonts-jar,
2212     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2213         [Specify path to jarfile manually.]),
2214     LIBFONTS_JAR=$withval)
2216 AC_ARG_WITH(libserializer-jar,
2217     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2218         [Specify path to jarfile manually.]),
2219     LIBSERIALIZER_JAR=$withval)
2221 AC_ARG_WITH(libbase-jar,
2222     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2223         [Specify path to jarfile manually.]),
2224     LIBBASE_JAR=$withval)
2226 AC_ARG_WITH(system-odbc,
2227     AS_HELP_STRING([--with-system-odbc],
2228         [Use the odbc headers already on system.]),,
2229     [with_system_odbc="auto"])
2231 AC_ARG_WITH(system-sane,
2232     AS_HELP_STRING([--with-system-sane],
2233         [Use sane.h already on system.]),,
2234     [with_system_sane="$with_system_headers"])
2236 AC_ARG_WITH(system-bluez,
2237     AS_HELP_STRING([--with-system-bluez],
2238         [Use bluetooth.h already on system.]),,
2239     [with_system_bluez="$with_system_headers"])
2241 AC_ARG_WITH(system-curl,
2242     AS_HELP_STRING([--with-system-curl],
2243         [Use curl already on system.]),,
2244     [with_system_curl=auto])
2246 AC_ARG_WITH(system-boost,
2247     AS_HELP_STRING([--with-system-boost],
2248         [Use boost already on system.]),,
2249     [with_system_boost="$with_system_headers"])
2251 AC_ARG_WITH(system-glm,
2252     AS_HELP_STRING([--with-system-glm],
2253         [Use glm already on system.]),,
2254     [with_system_glm="$with_system_headers"])
2256 AC_ARG_WITH(system-hunspell,
2257     AS_HELP_STRING([--with-system-hunspell],
2258         [Use libhunspell already on system.]),,
2259     [with_system_hunspell="$with_system_libs"])
2261 libo_FUZZ_ARG_ENABLE(qrcodegen,
2262     AS_HELP_STRING([--disable-qrcodegen],
2263         [Disable use of qrcodegen external library.]))
2265 AC_ARG_WITH(system-qrcodegen,
2266     AS_HELP_STRING([--with-system-qrcodegen],
2267         [Use libqrcodegen already on system.]),,
2268     [with_system_qrcodegen="$with_system_libs"])
2270 AC_ARG_WITH(system-box2d,
2271     AS_HELP_STRING([--with-system-box2d],
2272         [Use box2d already on system.]),,
2273     [with_system_box2d="$with_system_libs"])
2275 AC_ARG_WITH(system-mythes,
2276     AS_HELP_STRING([--with-system-mythes],
2277         [Use mythes already on system.]),,
2278     [with_system_mythes="$with_system_libs"])
2280 AC_ARG_WITH(system-altlinuxhyph,
2281     AS_HELP_STRING([--with-system-altlinuxhyph],
2282         [Use ALTLinuxhyph already on system.]),,
2283     [with_system_altlinuxhyph="$with_system_libs"])
2285 AC_ARG_WITH(system-lpsolve,
2286     AS_HELP_STRING([--with-system-lpsolve],
2287         [Use lpsolve already on system.]),,
2288     [with_system_lpsolve="$with_system_libs"])
2290 AC_ARG_WITH(system-coinmp,
2291     AS_HELP_STRING([--with-system-coinmp],
2292         [Use CoinMP already on system.]),,
2293     [with_system_coinmp="$with_system_libs"])
2295 AC_ARG_WITH(system-liblangtag,
2296     AS_HELP_STRING([--with-system-liblangtag],
2297         [Use liblangtag library already on system.]),,
2298     [with_system_liblangtag="$with_system_libs"])
2300 AC_ARG_WITH(webdav,
2301     AS_HELP_STRING([--with-webdav],
2302         [Specify which library to use for webdav implementation.
2303          Possible values: "neon", "serf", "no". The default value is "neon".
2304          Example: --with-webdav="serf"]),
2305     WITH_WEBDAV=$withval,
2306     WITH_WEBDAV="neon")
2308 AC_ARG_WITH(linker-hash-style,
2309     AS_HELP_STRING([--with-linker-hash-style],
2310         [Use linker with --hash-style=<style> when linking shared objects.
2311          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2312          if supported on the build system, and "sysv" otherwise.]))
2314 AC_ARG_WITH(jdk-home,
2315     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2316         [If you have installed JDK 9 or later on your system please supply the
2317          path here. Note that this is not the location of the java command but the
2318          location of the entire distribution. In case of cross-compiling, this
2319          is the JDK of the host os. Use --with-build-platform-configure-options
2320          to point to a different build platform JDK.]),
2323 AC_ARG_WITH(help,
2324     AS_HELP_STRING([--with-help],
2325         [Enable the build of help. There is a special parameter "common" that
2326          can be used to bundle only the common part, .e.g help-specific icons.
2327          This is useful when you build the helpcontent separately.])
2328     [
2329                           Usage:     --with-help    build the old local help
2330                                  --without-help     no local help (default)
2331                                  --with-help=html   build the new HTML local help
2332                                  --with-help=online build the new HTML online help
2333     ],
2336 AC_ARG_WITH(omindex,
2337    AS_HELP_STRING([--with-omindex],
2338         [Enable the support of xapian-omega index for online help.])
2339    [
2340                          Usage: --with-omindex=server prepare the pages for omindex
2341                                 but let xapian-omega be built in server.
2342                                 --with-omindex=noxap do not prepare online pages
2343                                 for xapian-omega
2344   ],
2347 libo_FUZZ_ARG_WITH(java,
2348     AS_HELP_STRING([--with-java=<java command>],
2349         [Specify the name of the Java interpreter command. Typically "java"
2350          which is the default.
2352          To build without support for Java components, applets, accessibility
2353          or the XML filters written in Java, use --without-java or --with-java=no.]),
2354     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2355     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2358 AC_ARG_WITH(jvm-path,
2359     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2360         [Use a specific JVM search path at runtime.
2361          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2364 AC_ARG_WITH(ant-home,
2365     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2366         [If you have installed Apache Ant on your system, please supply the path here.
2367          Note that this is not the location of the Ant binary but the location
2368          of the entire distribution.]),
2371 AC_ARG_WITH(symbol-config,
2372     AS_HELP_STRING([--with-symbol-config],
2373         [Configuration for the crashreport symbol upload]),
2374         [],
2375         [with_symbol_config=no])
2377 AC_ARG_WITH(export-validation,
2378     AS_HELP_STRING([--without-export-validation],
2379         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2380 ,with_export_validation=auto)
2382 AC_ARG_WITH(bffvalidator,
2383     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2384         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2385          Requires installed Microsoft Office Binary File Format Validator.
2386          Note: export-validation (--with-export-validation) is required to be turned on.
2387          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2388 ,with_bffvalidator=no)
2390 libo_FUZZ_ARG_WITH(junit,
2391     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2392         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2393          --without-junit disables those tests. Not relevant in the --without-java case.]),
2394 ,with_junit=yes)
2396 AC_ARG_WITH(hamcrest,
2397     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2398         [Specifies the hamcrest jar file to use for JUnit-based tests.
2399          --without-junit disables those tests. Not relevant in the --without-java case.]),
2400 ,with_hamcrest=yes)
2402 AC_ARG_WITH(perl-home,
2403     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2404         [If you have installed Perl 5 Distribution, on your system, please
2405          supply the path here. Note that this is not the location of the Perl
2406          binary but the location of the entire distribution.]),
2409 libo_FUZZ_ARG_WITH(doxygen,
2410     AS_HELP_STRING(
2411         [--with-doxygen=<absolute path to doxygen executable>],
2412         [Specifies the doxygen executable to use when generating ODK C/C++
2413          documentation. --without-doxygen disables generation of ODK C/C++
2414          documentation. Not relevant in the --disable-odk case.]),
2415 ,with_doxygen=yes)
2417 AC_ARG_WITH(visual-studio,
2418     AS_HELP_STRING([--with-visual-studio=<2019>],
2419         [Specify which Visual Studio version to use in case several are
2420          installed. Currently only 2019 (default) is supported.]),
2423 AC_ARG_WITH(windows-sdk,
2424     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2425         [Specify which Windows SDK, or "Windows Kit", version to use
2426          in case the one that came with the selected Visual Studio
2427          is not what you want for some reason. Note that not all compiler/SDK
2428          combinations are supported. The intent is that this option should not
2429          be needed.]),
2432 AC_ARG_WITH(lang,
2433     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2434         [Use this option to build LibreOffice with additional UI language support.
2435          English (US) is always included by default.
2436          Separate multiple languages with space.
2437          For all languages, use --with-lang=ALL.]),
2440 AC_ARG_WITH(locales,
2441     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2442         [Use this option to limit the locale information built in.
2443          Separate multiple locales with space.
2444          Very experimental and might well break stuff.
2445          Just a desperate measure to shrink code and data size.
2446          By default all the locales available is included.
2447          This option is completely unrelated to --with-lang.])
2448     [
2449                           Affects also our character encoding conversion
2450                           tables for encodings mainly targeted for a
2451                           particular locale, like EUC-CN and EUC-TW for
2452                           zh, ISO-2022-JP for ja.
2454                           Affects also our add-on break iterator data for
2455                           some languages.
2457                           For the default, all locales, don't use this switch at all.
2458                           Specifying just the language part of a locale means all matching
2459                           locales will be included.
2460     ],
2463 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2464 libo_FUZZ_ARG_WITH(krb5,
2465     AS_HELP_STRING([--with-krb5],
2466         [Enable MIT Kerberos 5 support in modules that support it.
2467          By default automatically enabled on platforms
2468          where a good system Kerberos 5 is available.]),
2471 libo_FUZZ_ARG_WITH(gssapi,
2472     AS_HELP_STRING([--with-gssapi],
2473         [Enable GSSAPI support in modules that support it.
2474          By default automatically enabled on platforms
2475          where a good system GSSAPI is available.]),
2478 AC_ARG_WITH(iwyu,
2479     AS_HELP_STRING([--with-iwyu],
2480         [Use given IWYU binary path to check unneeded includes instead of building.
2481          Use only if you are hacking on it.]),
2484 libo_FUZZ_ARG_WITH(lxml,
2485     AS_HELP_STRING([--without-lxml],
2486         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2487          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2488          report widget classes and ids.]),
2491 libo_FUZZ_ARG_WITH(latest-c++,
2492     AS_HELP_STRING([--with-latest-c++],
2493         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2494          published standard.]),,
2495         [with_latest_c__=no])
2497 dnl ===================================================================
2498 dnl Branding
2499 dnl ===================================================================
2501 AC_ARG_WITH(branding,
2502     AS_HELP_STRING([--with-branding=/path/to/images],
2503         [Use given path to retrieve branding images set.])
2504     [
2505                           Search for intro.png about.svg and logo.svg.
2506                           If any is missing, default ones will be used instead.
2508                           Search also progress.conf for progress
2509                           settings on intro screen :
2511                           PROGRESSBARCOLOR="255,255,255" Set color of
2512                           progress bar. Comma separated RGB decimal values.
2513                           PROGRESSSIZE="407,6" Set size of progress bar.
2514                           Comma separated decimal values (width, height).
2515                           PROGRESSPOSITION="61,317" Set position of progress
2516                           bar from left,top. Comma separated decimal values.
2517                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2518                           bar frame. Comma separated RGB decimal values.
2519                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2520                           bar text. Comma separated RGB decimal values.
2521                           PROGRESSTEXTBASELINE="287" Set vertical position of
2522                           progress bar text from top. Decimal value.
2524                           Default values will be used if not found.
2525     ],
2529 AC_ARG_WITH(extra-buildid,
2530     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2531         [Show addition build identification in about dialog.]),
2535 AC_ARG_WITH(vendor,
2536     AS_HELP_STRING([--with-vendor="John the Builder"],
2537         [Set vendor of the build.]),
2540 AC_ARG_WITH(android-package-name,
2541     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2542         [Set Android package name of the build.]),
2545 AC_ARG_WITH(compat-oowrappers,
2546     AS_HELP_STRING([--with-compat-oowrappers],
2547         [Install oo* wrappers in parallel with
2548          lo* ones to keep backward compatibility.
2549          Has effect only with make distro-pack-install]),
2552 AC_ARG_WITH(os-version,
2553     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2554         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2557 AC_ARG_WITH(mingw-cross-compiler,
2558     AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2559         [Specify the MinGW cross-compiler to use.
2560          When building on the ODK on Unix and building unowinreg.dll,
2561          specify the MinGW C++ cross-compiler.]),
2564 AC_ARG_WITH(idlc-cpp,
2565     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2566         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2569 AC_ARG_WITH(parallelism,
2570     AS_HELP_STRING([--with-parallelism],
2571         [Number of jobs to run simultaneously during build. Parallel builds can
2572         save a lot of time on multi-cpu machines. Defaults to the number of
2573         CPUs on the machine, unless you configure --enable-icecream - then to
2574         40.]),
2577 AC_ARG_WITH(all-tarballs,
2578     AS_HELP_STRING([--with-all-tarballs],
2579         [Download all external tarballs unconditionally]))
2581 AC_ARG_WITH(gdrive-client-id,
2582     AS_HELP_STRING([--with-gdrive-client-id],
2583         [Provides the client id of the application for OAuth2 authentication
2584         on Google Drive. If either this or --with-gdrive-client-secret is
2585         empty, the feature will be disabled]),
2588 AC_ARG_WITH(gdrive-client-secret,
2589     AS_HELP_STRING([--with-gdrive-client-secret],
2590         [Provides the client secret of the application for OAuth2
2591         authentication on Google Drive. If either this or
2592         --with-gdrive-client-id is empty, the feature will be disabled]),
2595 AC_ARG_WITH(alfresco-cloud-client-id,
2596     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2597         [Provides the client id of the application for OAuth2 authentication
2598         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2599         empty, the feature will be disabled]),
2602 AC_ARG_WITH(alfresco-cloud-client-secret,
2603     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2604         [Provides the client secret of the application for OAuth2
2605         authentication on Alfresco Cloud. If either this or
2606         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2609 AC_ARG_WITH(onedrive-client-id,
2610     AS_HELP_STRING([--with-onedrive-client-id],
2611         [Provides the client id of the application for OAuth2 authentication
2612         on OneDrive. If either this or --with-onedrive-client-secret is
2613         empty, the feature will be disabled]),
2616 AC_ARG_WITH(onedrive-client-secret,
2617     AS_HELP_STRING([--with-onedrive-client-secret],
2618         [Provides the client secret of the application for OAuth2
2619         authentication on OneDrive. If either this or
2620         --with-onedrive-client-id is empty, the feature will be disabled]),
2622 dnl ===================================================================
2623 dnl Do we want to use pre-build binary tarball for recompile
2624 dnl ===================================================================
2626 if test "$enable_library_bin_tar" = "yes" ; then
2627     USE_LIBRARY_BIN_TAR=TRUE
2628 else
2629     USE_LIBRARY_BIN_TAR=
2631 AC_SUBST(USE_LIBRARY_BIN_TAR)
2633 dnl ===================================================================
2634 dnl Test whether build target is Release Build
2635 dnl ===================================================================
2636 AC_MSG_CHECKING([whether build target is Release Build])
2637 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2638     AC_MSG_RESULT([no])
2639     ENABLE_RELEASE_BUILD=
2640     GET_TASK_ALLOW_ENTITLEMENT='
2641         <!-- We want to be able to debug a hardened process when not building for release -->
2642         <key>com.apple.security.get-task-allow</key>
2643         <true/>'
2644 else
2645     AC_MSG_RESULT([yes])
2646     ENABLE_RELEASE_BUILD=TRUE
2647     GET_TASK_ALLOW_ENTITLEMENT=''
2649 AC_SUBST(ENABLE_RELEASE_BUILD)
2650 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2652 AC_MSG_CHECKING([whether to build a Community flavor])
2653 if test -z "$enable_community_flavor" -o "$enable_community_flavor" == "yes"; then
2654     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2655     AC_MSG_RESULT([yes])
2656 else
2657     AC_MSG_RESULT([no])
2660 dnl ===================================================================
2661 dnl Test whether to sign Windows Build
2662 dnl ===================================================================
2663 AC_MSG_CHECKING([whether to sign windows build])
2664 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2665     AC_MSG_RESULT([yes])
2666     WINDOWS_BUILD_SIGNING="TRUE"
2667 else
2668     AC_MSG_RESULT([no])
2669     WINDOWS_BUILD_SIGNING="FALSE"
2671 AC_SUBST(WINDOWS_BUILD_SIGNING)
2673 dnl ===================================================================
2674 dnl MacOSX build and runtime environment options
2675 dnl ===================================================================
2677 AC_ARG_WITH(macosx-sdk,
2678     AS_HELP_STRING([--with-macosx-sdk=<version>],
2679         [Prefer a specific SDK for building.])
2680     [
2681                           If the requested SDK is not available, a search for the oldest one will be done.
2682                           With current Xcode versions, only the latest SDK is included, so this option is
2683                           not terribly useful. It works fine to build with a new SDK and run the result
2684                           on an older OS.
2686                           e. g.: --with-macosx-sdk=10.10
2688                           there are 3 options to control the MacOSX build:
2689                           --with-macosx-sdk (referred as 'sdk' below)
2690                           --with-macosx-version-min-required (referred as 'min' below)
2691                           --with-macosx-version-max-allowed (referred as 'max' below)
2693                           the connection between these value and the default they take is as follow:
2694                           ( ? means not specified on the command line, s means the SDK version found,
2695                           constraint: 8 <= x <= y <= z)
2697                           ==========================================
2698                            command line      || config result
2699                           ==========================================
2700                           min  | max  | sdk  || min   | max  | sdk  |
2701                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2702                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2703                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2704                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2705                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2706                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2707                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2708                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2711                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2712                           for a detailed technical explanation of these variables
2714                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2715     ],
2718 AC_ARG_WITH(macosx-version-min-required,
2719     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2720         [set the minimum OS version needed to run the built LibreOffice])
2721     [
2722                           e. g.: --with-macosx-version-min-required=10.10
2723                           see --with-macosx-sdk for more info
2724     ],
2727 AC_ARG_WITH(macosx-version-max-allowed,
2728     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2729         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2730     [
2731                           e. g.: --with-macosx-version-max-allowed=10.10
2732                           see --with-macosx-sdk for more info
2733     ],
2737 dnl ===================================================================
2738 dnl options for stuff used during cross-compilation build
2739 dnl Not quite superseded by --with-build-platform-configure-options.
2740 dnl TODO: check, if the "force" option is still needed anywhere.
2741 dnl ===================================================================
2743 AC_ARG_WITH(system-icu-for-build,
2744     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2745         [Use icu already on system for build tools (cross-compilation only).]))
2748 dnl ===================================================================
2749 dnl Check for incompatible options set by fuzzing, and reset those
2750 dnl automatically to working combinations
2751 dnl ===================================================================
2753 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2754         "$enable_dbus" != "$enable_avahi"; then
2755     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2756     enable_avahi=$enable_dbus
2759 add_lopath_after ()
2761     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2762         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2763     fi
2766 add_lopath_before ()
2768     local IFS=${P_SEP}
2769     local path_cleanup
2770     local dir
2771     for dir in $LO_PATH ; do
2772         if test "$dir" != "$1" ; then
2773             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2774         fi
2775     done
2776     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2779 dnl ===================================================================
2780 dnl check for required programs (grep, awk, sed, bash)
2781 dnl ===================================================================
2783 pathmunge ()
2785     local new_path
2786     if test -n "$1"; then
2787         if test "$build_os" = "cygwin"; then
2788             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2789                 PathFormat "$1"
2790                 new_path=`cygpath -sm "$formatted_path"`
2791             else
2792                 PathFormat "$1"
2793                 new_path=`cygpath -u "$formatted_path"`
2794             fi
2795         else
2796             new_path="$1"
2797         fi
2798         if test "$2" = "after"; then
2799             add_lopath_after "$new_path"
2800         else
2801             add_lopath_before "$new_path"
2802         fi
2803     fi
2806 AC_PROG_AWK
2807 AC_PATH_PROG( AWK, $AWK)
2808 if test -z "$AWK"; then
2809     AC_MSG_ERROR([install awk to run this script])
2812 AC_PATH_PROG(BASH, bash)
2813 if test -z "$BASH"; then
2814     AC_MSG_ERROR([bash not found in \$PATH])
2816 AC_SUBST(BASH)
2818 AC_MSG_CHECKING([for GNU or BSD tar])
2819 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2820     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2821     if test $? -eq 0;  then
2822         GNUTAR=$a
2823         break
2824     fi
2825 done
2826 AC_MSG_RESULT($GNUTAR)
2827 if test -z "$GNUTAR"; then
2828     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2830 AC_SUBST(GNUTAR)
2832 AC_MSG_CHECKING([for tar's option to strip components])
2833 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2834 if test $? -eq 0; then
2835     STRIP_COMPONENTS="--strip-components"
2836 else
2837     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2838     if test $? -eq 0; then
2839         STRIP_COMPONENTS="--strip-path"
2840     else
2841         STRIP_COMPONENTS="unsupported"
2842     fi
2844 AC_MSG_RESULT($STRIP_COMPONENTS)
2845 if test x$STRIP_COMPONENTS = xunsupported; then
2846     AC_MSG_ERROR([you need a tar that is able to strip components.])
2848 AC_SUBST(STRIP_COMPONENTS)
2850 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2851 dnl desktop OSes from "mobile" ones.
2853 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2854 dnl In other words, that when building for an OS that is not a
2855 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2857 dnl Note the direction of the implication; there is no assumption that
2858 dnl cross-compiling would imply a non-desktop OS.
2860 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2861     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2862     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2863     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2866 # Whether to build "avmedia" functionality or not.
2868 if test -z "$enable_avmedia"; then
2869     enable_avmedia=yes
2872 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2873 if test "$enable_avmedia" = yes; then
2874     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2875 else
2876     USE_AVMEDIA_DUMMY='TRUE'
2878 AC_SUBST(USE_AVMEDIA_DUMMY)
2880 # Decide whether to build database connectivity stuff (including
2881 # Base) or not. We probably don't want to on non-desktop OSes.
2882 if test -z "$enable_database_connectivity"; then
2883     # --disable-database-connectivity is unfinished work in progress
2884     # and the iOS test app doesn't link if we actually try to use it.
2885     # if test $_os != iOS -a $_os != Android; then
2886     if test $_os != iOS; then
2887         enable_database_connectivity=yes
2888     fi
2891 if test "$enable_database_connectivity" = yes; then
2892     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2893     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2896 if test -z "$enable_extensions"; then
2897     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2898     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2899         enable_extensions=yes
2900     fi
2903 if test "$enable_extensions" = yes; then
2904     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2905     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2908 if test -z "$enable_scripting"; then
2909     # Disable scripting for iOS unless specifically overridden
2910     # with --enable-scripting.
2911     if test $_os != iOS; then
2912         enable_scripting=yes
2913     fi
2916 DISABLE_SCRIPTING=''
2917 if test "$enable_scripting" = yes; then
2918     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2919     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2920 else
2921     DISABLE_SCRIPTING='TRUE'
2922     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2925 if test $_os = iOS -o $_os = Android; then
2926     # Disable dynamic_loading always for iOS and Android
2927     enable_dynamic_loading=no
2928 elif test -z "$enable_dynamic_loading"; then
2929     # Otherwise enable it unless specifically disabled
2930     enable_dynamic_loading=yes
2933 DISABLE_DYNLOADING=''
2934 if test "$enable_dynamic_loading" = yes; then
2935     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2936 else
2937     DISABLE_DYNLOADING='TRUE'
2939 AC_SUBST(DISABLE_DYNLOADING)
2941 # remember SYSBASE value
2942 AC_SUBST(SYSBASE)
2944 dnl ===================================================================
2945 dnl  Sort out various gallery compilation options
2946 dnl ===================================================================
2947 AC_MSG_CHECKING([how to build and package galleries])
2948 if test -n "${with_galleries}"; then
2949     if test "$with_galleries" = "build"; then
2950         WITH_GALLERY_BUILD=TRUE
2951         AC_MSG_RESULT([build from source images internally])
2952     elif test "$with_galleries" = "no"; then
2953         WITH_GALLERY_BUILD=
2954         AC_MSG_RESULT([disable non-internal gallery build])
2955     else
2956         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2957     fi
2958 else
2959     if test $_os != iOS -a $_os != Android; then
2960         WITH_GALLERY_BUILD=TRUE
2961         AC_MSG_RESULT([internal src images for desktop])
2962     else
2963         WITH_GALLERY_BUILD=
2964         AC_MSG_RESULT([disable src image build])
2965     fi
2967 AC_SUBST(WITH_GALLERY_BUILD)
2969 dnl ===================================================================
2970 dnl  Checks if ccache is available
2971 dnl ===================================================================
2972 CCACHE_DEPEND_MODE=
2973 if test "$_os" = "WINNT"; then
2974     # on windows/VC build do not use ccache
2975     CCACHE=""
2976 elif test "$enable_ccache" = "no"; then
2977     CCACHE=""
2978 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2979     case "%$CC%$CXX%" in
2980     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2981     # assume that's good then
2982     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2983         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2984         CCACHE_DEPEND_MODE=1
2985         ;;
2986     *)
2987         AC_PATH_PROG([CCACHE],[ccache],[not found])
2988         if test "$CCACHE" = "not found"; then
2989             CCACHE=""
2990         else
2991             CCACHE_DEPEND_MODE=1
2992             # Need to check for ccache version: otherwise prevents
2993             # caching of the results (like "-x objective-c++" for Mac)
2994             if test $_os = Darwin -o $_os = iOS; then
2995                 # Check ccache version
2996                 AC_MSG_CHECKING([whether version of ccache is suitable])
2997                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2998                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2999                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3000                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3001                 else
3002                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3003                     CCACHE=""
3004                     CCACHE_DEPEND_MODE=
3005                 fi
3006             fi
3007         fi
3008         ;;
3009     esac
3010 else
3011     CCACHE=""
3013 if test "$enable_ccache" = "nodepend"; then
3014     CCACHE_DEPEND_MODE=""
3016 AC_SUBST(CCACHE_DEPEND_MODE)
3018 if test "$CCACHE" != ""; then
3019     ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
3020     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3021     if test "$ccache_size" = ""; then
3022         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3023         if test "$ccache_size" = ""; then
3024             ccache_size=0
3025         fi
3026         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3027         if test $ccache_size -lt 1024; then
3028             CCACHE=""
3029             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3030             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3031         else
3032             # warn that ccache may be too small for debug build
3033             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3034             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3035         fi
3036     else
3037         if test $ccache_size -lt 5; then
3038             #warn that ccache may be too small for debug build
3039             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3040             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3041         fi
3042     fi
3045 dnl ===================================================================
3046 dnl  Checks for C compiler,
3047 dnl  The check for the C++ compiler is later on.
3048 dnl ===================================================================
3049 if test "$_os" != "WINNT"; then
3050     GCC_HOME_SET="true"
3051     AC_MSG_CHECKING([gcc home])
3052     if test -z "$with_gcc_home"; then
3053         if test "$enable_icecream" = "yes"; then
3054             if test -d "/usr/lib/icecc/bin"; then
3055                 GCC_HOME="/usr/lib/icecc/"
3056             elif test -d "/usr/libexec/icecc/bin"; then
3057                 GCC_HOME="/usr/libexec/icecc/"
3058             elif test -d "/opt/icecream/bin"; then
3059                 GCC_HOME="/opt/icecream/"
3060             else
3061                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3063             fi
3064         else
3065             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3066             GCC_HOME_SET="false"
3067         fi
3068     else
3069         GCC_HOME="$with_gcc_home"
3070     fi
3071     AC_MSG_RESULT($GCC_HOME)
3072     AC_SUBST(GCC_HOME)
3074     if test "$GCC_HOME_SET" = "true"; then
3075         if test -z "$CC"; then
3076             CC="$GCC_HOME/bin/gcc"
3077             CC_BASE="gcc"
3078         fi
3079         if test -z "$CXX"; then
3080             CXX="$GCC_HOME/bin/g++"
3081             CXX_BASE="g++"
3082         fi
3083     fi
3086 COMPATH=`dirname "$CC"`
3087 if test "$COMPATH" = "."; then
3088     AC_PATH_PROGS(COMPATH, $CC)
3089     dnl double square bracket to get single because of M4 quote...
3090     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3092 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3094 dnl ===================================================================
3095 dnl Java support
3096 dnl ===================================================================
3097 AC_MSG_CHECKING([whether to build with Java support])
3098 if test "$with_java" != "no"; then
3099     if test "$DISABLE_SCRIPTING" = TRUE; then
3100         AC_MSG_RESULT([no, overridden by --disable-scripting])
3101         ENABLE_JAVA=""
3102         with_java=no
3103     else
3104         AC_MSG_RESULT([yes])
3105         ENABLE_JAVA="TRUE"
3106         AC_DEFINE(HAVE_FEATURE_JAVA)
3107     fi
3108 else
3109     AC_MSG_RESULT([no])
3110     ENABLE_JAVA=""
3113 AC_SUBST(ENABLE_JAVA)
3115 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3117 dnl ENABLE_JAVA="" indicate no Java support at all
3119 dnl ===================================================================
3120 dnl Check macOS SDK and compiler
3121 dnl ===================================================================
3123 if test $_os = Darwin; then
3125     # If no --with-macosx-sdk option is given, look for one
3127     # The intent is that for "most" Mac-based developers, a suitable
3128     # SDK will be found automatically without any configure options.
3130     # For developers with a current Xcode, the lowest-numbered SDK
3131     # higher than or equal to the minimum required should be found.
3133     AC_MSG_CHECKING([what macOS SDK to use])
3134     for _macosx_sdk in ${with_macosx_sdk-12.0 11.3 11.1 11.0 10.15 10.14 10.13}; do
3135         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3136         if test -d "$MACOSX_SDK_PATH"; then
3137             with_macosx_sdk="${_macosx_sdk}"
3138             break
3139         else
3140             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3141             if test -d "$MACOSX_SDK_PATH"; then
3142                 with_macosx_sdk="${_macosx_sdk}"
3143                 break
3144             fi
3145         fi
3146     done
3147     if test ! -d "$MACOSX_SDK_PATH"; then
3148         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3149     fi
3151     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3153     case $with_macosx_sdk in
3154     10.13)
3155         MACOSX_SDK_VERSION=101300
3156         ;;
3157     10.14)
3158         MACOSX_SDK_VERSION=101400
3159         ;;
3160     10.15)
3161         MACOSX_SDK_VERSION=101500
3162         ;;
3163     11.0)
3164         MACOSX_SDK_VERSION=110000
3165         ;;
3166     11.1)
3167         MACOSX_SDK_VERSION=110100
3168         ;;
3169     11.3)
3170         MACOSX_SDK_VERSION=110300
3171         ;;
3172     12.0)
3173         MACOSX_SDK_VERSION=120000
3174         ;;
3175     *)
3176         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--12.0])
3177         ;;
3178     esac
3180     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3181         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3182     fi
3184     if test "$with_macosx_version_min_required" = "" ; then
3185         if test "$host_cpu" = x86_64; then
3186             with_macosx_version_min_required="10.10";
3187         else
3188             with_macosx_version_min_required="11.0";
3189         fi
3190     fi
3192     if test "$with_macosx_version_max_allowed" = "" ; then
3193         with_macosx_version_max_allowed="$with_macosx_sdk"
3194     fi
3196     # export this so that "xcrun" invocations later return matching values
3197     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3198     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3199     export DEVELOPER_DIR
3200     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3201     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3203     AC_MSG_CHECKING([whether Xcode is new enough])
3204     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3205     my_xcode_ver2=${my_xcode_ver1#Xcode }
3206     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3207     if test "$my_xcode_ver3" -ge 1103; then
3208         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3209     else
3210         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3211     fi
3213     case "$with_macosx_version_min_required" in
3214     10.10)
3215         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3216         ;;
3217     10.11)
3218         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3219         ;;
3220     10.12)
3221         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3222         ;;
3223     10.13)
3224         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3225         ;;
3226     10.14)
3227         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3228         ;;
3229     10.15)
3230         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3231         ;;
3232     10.16)
3233         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3234         ;;
3235     11.0)
3236         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3237         ;;
3238     11.1)
3239         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3240         ;;
3241     11.3)
3242         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3243         ;;
3244     12.0)
3245         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3246         ;;
3247     *)
3248         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--12.0])
3249         ;;
3250     esac
3252     LIBTOOL=/usr/bin/libtool
3253     INSTALL_NAME_TOOL=install_name_tool
3254     if test -z "$save_CC"; then
3255         stdlib=-stdlib=libc++
3257         AC_MSG_CHECKING([what C compiler to use])
3258         CC="`xcrun -find clang`"
3259         CC_BASE=`first_arg_basename "$CC"`
3260         if test "$host_cpu" = x86_64; then
3261             CC+=" -target x86_64-apple-macos"
3262         else
3263             CC+=" -target arm64-apple-macos"
3264         fi
3265         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3266         AC_MSG_RESULT([$CC])
3268         AC_MSG_CHECKING([what C++ compiler to use])
3269         CXX="`xcrun -find clang++`"
3270         CXX_BASE=`first_arg_basename "$CXX"`
3271         if test "$host_cpu" = x86_64; then
3272             CXX+=" -target x86_64-apple-macos"
3273         else
3274             CXX+=" -target arm64-apple-macos"
3275         fi
3276         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3277         AC_MSG_RESULT([$CXX])
3279         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3280         AR=`xcrun -find ar`
3281         NM=`xcrun -find nm`
3282         STRIP=`xcrun -find strip`
3283         LIBTOOL=`xcrun -find libtool`
3284         RANLIB=`xcrun -find ranlib`
3285     fi
3287     case "$with_macosx_version_max_allowed" in
3288     10.10)
3289         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3290         ;;
3291     10.11)
3292         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3293         ;;
3294     10.12)
3295         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3296         ;;
3297     10.13)
3298         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3299         ;;
3300     10.14)
3301         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3302         ;;
3303     10.15)
3304         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3305         ;;
3306     11.0)
3307         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3308         ;;
3309     11.1)
3310         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3311         ;;
3312     11.3)
3313         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3314         ;;
3315     12.0)
3316         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3317         ;;
3318     *)
3319         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--12.0])
3320         ;;
3321     esac
3323     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3324     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3325         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])
3326     else
3327         AC_MSG_RESULT([ok])
3328     fi
3330     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3331     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3332         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3333     else
3334         AC_MSG_RESULT([ok])
3335     fi
3336     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3337     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3339     AC_MSG_CHECKING([whether to do code signing])
3341     if test "$enable_macosx_code_signing" = yes; then
3342         # By default use the first suitable certificate (?).
3344         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3345         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3346         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3347         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3348         # "Developer ID Application" one.
3350         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3351         if test -n "$identity"; then
3352             MACOSX_CODESIGNING_IDENTITY=$identity
3353             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3354             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3355         else
3356             AC_MSG_ERROR([cannot determine identity to use])
3357         fi
3358     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3359         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3360         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3361         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3362     else
3363         AC_MSG_RESULT([no])
3364     fi
3366     AC_MSG_CHECKING([whether to create a Mac App Store package])
3368     if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3369         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3370     elif test "$enable_macosx_package_signing" = yes; then
3371         # By default use the first suitable certificate.
3372         # It should be a "3rd Party Mac Developer Installer" one
3374         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3375         if test -n "$identity"; then
3376             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3377             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3378             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3379         else
3380             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3381         fi
3382     elif test -n "$enable_macosx_package_signing"; then
3383         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3384         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3385         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3386     else
3387         AC_MSG_RESULT([no])
3388     fi
3390     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3391         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3392     fi
3394     AC_MSG_CHECKING([whether to sandbox the application])
3396     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3397         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3398     elif test "$enable_macosx_sandbox" = yes; then
3399         ENABLE_MACOSX_SANDBOX=TRUE
3400         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3401         AC_MSG_RESULT([yes])
3402     else
3403         AC_MSG_RESULT([no])
3404     fi
3406     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3407     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3408     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3410 AC_SUBST(MACOSX_SDK_PATH)
3411 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3412 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3413 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3414 AC_SUBST(INSTALL_NAME_TOOL)
3415 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3416 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3417 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3418 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3419 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3421 dnl ===================================================================
3422 dnl Check iOS SDK and compiler
3423 dnl ===================================================================
3425 if test $_os = iOS; then
3426     AC_MSG_CHECKING([what iOS SDK to use])
3427     current_sdk_ver=14.5
3428     older_sdk_vers="14.4 14.3 14.2 14.1 14.0 13.7"
3429     if test "$enable_ios_simulator" = "yes"; then
3430         platform=iPhoneSimulator
3431         versionmin=-mios-simulator-version-min=12.2
3432     else
3433         platform=iPhoneOS
3434         versionmin=-miphoneos-version-min=12.2
3435     fi
3436     xcode_developer=`xcode-select -print-path`
3438     for sdkver in $current_sdk_ver $older_sdk_vers; do
3439         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3440         if test -d $t; then
3441             sysroot=$t
3442             break
3443         fi
3444     done
3446     if test -z "$sysroot"; then
3447         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3448     fi
3450     AC_MSG_RESULT($sysroot)
3452     stdlib="-stdlib=libc++"
3454     AC_MSG_CHECKING([what C compiler to use])
3455     CC="`xcrun -find clang`"
3456     CC_BASE=`first_arg_basename "$CC"`
3457     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3458     AC_MSG_RESULT([$CC])
3460     AC_MSG_CHECKING([what C++ compiler to use])
3461     CXX="`xcrun -find clang++`"
3462     CXX_BASE=`first_arg_basename "$CXX"`
3463     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3464     AC_MSG_RESULT([$CXX])
3466     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3467     AR=`xcrun -find ar`
3468     NM=`xcrun -find nm`
3469     STRIP=`xcrun -find strip`
3470     LIBTOOL=`xcrun -find libtool`
3471     RANLIB=`xcrun -find ranlib`
3474 AC_MSG_CHECKING([whether to treat the installation as read-only])
3476 if test $_os = Darwin; then
3477     enable_readonly_installset=yes
3478 elif test "$enable_extensions" != yes; then
3479     enable_readonly_installset=yes
3481 if test "$enable_readonly_installset" = yes; then
3482     AC_MSG_RESULT([yes])
3483     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3484 else
3485     AC_MSG_RESULT([no])
3488 dnl ===================================================================
3489 dnl Structure of install set
3490 dnl ===================================================================
3492 if test $_os = Darwin; then
3493     LIBO_BIN_FOLDER=MacOS
3494     LIBO_ETC_FOLDER=Resources
3495     LIBO_LIBEXEC_FOLDER=MacOS
3496     LIBO_LIB_FOLDER=Frameworks
3497     LIBO_LIB_PYUNO_FOLDER=Resources
3498     LIBO_SHARE_FOLDER=Resources
3499     LIBO_SHARE_HELP_FOLDER=Resources/help
3500     LIBO_SHARE_JAVA_FOLDER=Resources/java
3501     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3502     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3503     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3504     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3505     LIBO_URE_BIN_FOLDER=MacOS
3506     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3507     LIBO_URE_LIB_FOLDER=Frameworks
3508     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3509     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3510 elif test $_os = WINNT; then
3511     LIBO_BIN_FOLDER=program
3512     LIBO_ETC_FOLDER=program
3513     LIBO_LIBEXEC_FOLDER=program
3514     LIBO_LIB_FOLDER=program
3515     LIBO_LIB_PYUNO_FOLDER=program
3516     LIBO_SHARE_FOLDER=share
3517     LIBO_SHARE_HELP_FOLDER=help
3518     LIBO_SHARE_JAVA_FOLDER=program/classes
3519     LIBO_SHARE_PRESETS_FOLDER=presets
3520     LIBO_SHARE_READMES_FOLDER=readmes
3521     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3522     LIBO_SHARE_SHELL_FOLDER=program/shell
3523     LIBO_URE_BIN_FOLDER=program
3524     LIBO_URE_ETC_FOLDER=program
3525     LIBO_URE_LIB_FOLDER=program
3526     LIBO_URE_MISC_FOLDER=program
3527     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3528 else
3529     LIBO_BIN_FOLDER=program
3530     LIBO_ETC_FOLDER=program
3531     LIBO_LIBEXEC_FOLDER=program
3532     LIBO_LIB_FOLDER=program
3533     LIBO_LIB_PYUNO_FOLDER=program
3534     LIBO_SHARE_FOLDER=share
3535     LIBO_SHARE_HELP_FOLDER=help
3536     LIBO_SHARE_JAVA_FOLDER=program/classes
3537     LIBO_SHARE_PRESETS_FOLDER=presets
3538     LIBO_SHARE_READMES_FOLDER=readmes
3539     if test "$enable_fuzzers" != yes; then
3540         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3541     else
3542         LIBO_SHARE_RESOURCE_FOLDER=resource
3543     fi
3544     LIBO_SHARE_SHELL_FOLDER=program/shell
3545     LIBO_URE_BIN_FOLDER=program
3546     LIBO_URE_ETC_FOLDER=program
3547     LIBO_URE_LIB_FOLDER=program
3548     LIBO_URE_MISC_FOLDER=program
3549     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3551 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3552 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3553 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3554 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3555 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3556 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3557 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3558 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3559 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3560 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3561 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3562 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3563 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3564 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3565 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3566 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3568 # Not all of them needed in config_host.mk, add more if need arises
3569 AC_SUBST(LIBO_BIN_FOLDER)
3570 AC_SUBST(LIBO_ETC_FOLDER)
3571 AC_SUBST(LIBO_LIB_FOLDER)
3572 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3573 AC_SUBST(LIBO_SHARE_FOLDER)
3574 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3575 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3576 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3577 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3578 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3579 AC_SUBST(LIBO_URE_BIN_FOLDER)
3580 AC_SUBST(LIBO_URE_ETC_FOLDER)
3581 AC_SUBST(LIBO_URE_LIB_FOLDER)
3582 AC_SUBST(LIBO_URE_MISC_FOLDER)
3583 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3585 dnl ===================================================================
3586 dnl Windows specific tests and stuff
3587 dnl ===================================================================
3589 reg_get_value()
3591     # Return value: $regvalue
3592     unset regvalue
3594     if test "$build_os" = "wsl"; then
3595         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3596         return
3597     fi
3599     local _regentry="/proc/registry${1}/${2}"
3600     if test -f "$_regentry"; then
3601         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3602         # Registry keys read via /proc/registry* are always \0 terminated!
3603         local _regvalue=$(tr -d '\0' < "$_regentry")
3604         if test $? -eq 0; then
3605             regvalue=$_regvalue
3606         fi
3607     fi
3610 # Get a value from the 32-bit side of the Registry
3611 reg_get_value_32()
3613     reg_get_value "32" "$1"
3616 # Get a value from the 64-bit side of the Registry
3617 reg_get_value_64()
3619     reg_get_value "64" "$1"
3622 case "$host_os" in
3623 cygwin*|wsl*)
3624     COM=MSC
3625     USING_X11=
3626     OS=WNT
3627     RTL_OS=Windows
3628     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3629         P_SEP=";"
3630     else
3631         P_SEP=:
3632     fi
3633     case "$host_cpu" in
3634     x86_64)
3635         CPUNAME=X86_64
3636         RTL_ARCH=X86_64
3637         PLATFORMID=windows_x86_64
3638         WINDOWS_X64=1
3639         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3640         WIN_HOST_ARCH="x64"
3641         WIN_MULTI_ARCH="x86"
3642         WIN_HOST_BITS=64
3643         ;;
3644     i*86)
3645         CPUNAME=INTEL
3646         RTL_ARCH=x86
3647         PLATFORMID=windows_x86
3648         WIN_HOST_ARCH="x86"
3649         WIN_HOST_BITS=32
3650         WIN_OTHER_ARCH="x64"
3651         ;;
3652     aarch64)
3653         CPUNAME=ARM64
3654         RTL_ARCH=arm64
3655         PLATFORMID=windows_arm64
3656         WINDOWS_X64=1
3657         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3658         WIN_HOST_ARCH="arm64"
3659         WIN_HOST_BITS=64
3660         with_ucrt_dir=no
3661         ;;
3662     *)
3663         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3664         ;;
3665     esac
3667     case "$build_cpu" in
3668     x86_64) WIN_BUILD_ARCH="x64" ;;
3669     i*86) WIN_BUILD_ARCH="x86" ;;
3670     aarch64) WIN_BUILD_ARCH="arm64" ;;
3671     *)
3672         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3673         ;;
3674     esac
3676     SCPDEFS="$SCPDEFS -D_MSC_VER"
3677     ;;
3678 esac
3680 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3681 # other-arch won't, but wouldn't break the build (x64 on x86).
3682 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3683     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3687 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3688     # To allow building Windows multi-arch releases without cross-tooling
3689     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3690         cross_compiling="yes"
3691     fi
3693 if test "$cross_compiling" = "yes"; then
3694     export CROSS_COMPILING=TRUE
3695 else
3696     CROSS_COMPILING=
3697     BUILD_TYPE="$BUILD_TYPE NATIVE"
3699 AC_SUBST(CROSS_COMPILING)
3701 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3702 # NOTE: must _not_ be used for bundled external libraries!
3703 ISYSTEM=
3704 if test "$GCC" = "yes"; then
3705     AC_MSG_CHECKING( for -isystem )
3706     save_CFLAGS=$CFLAGS
3707     CFLAGS="$CFLAGS -Werror"
3708     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3709     CFLAGS=$save_CFLAGS
3710     if test -n "$ISYSTEM"; then
3711         AC_MSG_RESULT(yes)
3712     else
3713         AC_MSG_RESULT(no)
3714     fi
3716 if test -z "$ISYSTEM"; then
3717     # fall back to using -I
3718     ISYSTEM=-I
3720 AC_SUBST(ISYSTEM)
3722 dnl ===================================================================
3723 dnl  Check which Visual Studio compiler is used
3724 dnl ===================================================================
3726 map_vs_year_to_version()
3728     # Return value: $vsversion
3730     unset vsversion
3732     case $1 in
3733     2019)
3734         vsversion=16;;
3735     *)
3736         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3737     esac
3740 vs_versions_to_check()
3742     # Args: $1 (optional) : versions to check, in the order of preference
3743     # Return value: $vsversions
3745     unset vsversions
3747     if test -n "$1"; then
3748         map_vs_year_to_version "$1"
3749         vsversions=$vsversion
3750     else
3751         # We accept only 2019
3752         vsversions="16"
3753     fi
3756 win_get_env_from_vsvars32bat()
3758     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3759     # Also seems to be located in another directory under the same name: vsvars32.bat
3760     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3761     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3762     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3763     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3764     local result
3765     if test "$build_os" = "wsl"; then
3766         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3767     else
3768         chmod +x $WRAPPERBATCHFILEPATH
3769         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3770     fi
3771     rm -f $WRAPPERBATCHFILEPATH
3772     printf '%s' "$result"
3775 find_ucrt()
3777     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3778     if test -n "$regvalue"; then
3779         PathFormat "$regvalue"
3780         UCRTSDKDIR=$formatted_path_unix
3781         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3782         UCRTVERSION=$regvalue
3783         # Rest if not exist
3784         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3785           UCRTSDKDIR=
3786         fi
3787     fi
3788     if test -z "$UCRTSDKDIR"; then
3789         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3790         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3791         if test -f "$ide_env_file"; then
3792             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3793             UCRTSDKDIR=$formatted_path
3794             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3795             dnl Hack needed at least by tml:
3796             if test "$UCRTVERSION" = 10.0.15063.0 \
3797                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3798                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3799             then
3800                 UCRTVERSION=10.0.14393.0
3801             fi
3802         else
3803           AC_MSG_ERROR([No UCRT found])
3804         fi
3805     fi
3808 find_msvc()
3810     # Find Visual C++ 2019
3811     # Args: $1 (optional) : The VS version year
3812     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3814     unset vctest vcnum vcnumwithdot vcbuildnumber
3816     vs_versions_to_check "$1"
3817     if test "$build_os" = wsl; then
3818         vswhere="$PROGRAMFILESX86"
3819     else
3820         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3821     fi
3822     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3823     PathFormat "$vswhere"
3824     vswhere=$formatted_path_unix
3825     for ver in $vsversions; do
3826         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3827         # Fall back to all MS products (this includes VC++ Build Tools)
3828         if ! test -n "$vswhereoutput"; then
3829             AC_MSG_CHECKING([VC++ Build Tools and similar])
3830             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3831         fi
3832         if test -n "$vswhereoutput"; then
3833             PathFormat "$vswhereoutput"
3834             vctest=$formatted_path_unix
3835             break
3836         fi
3837     done
3839     if test -n "$vctest"; then
3840         vcnumwithdot="$ver.0"
3841         case "$vcnumwithdot" in
3842         16.0)
3843             vcyear=2019
3844             vcnum=160
3845             ;;
3846         esac
3847         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3849     fi
3852 test_cl_exe()
3854     AC_MSG_CHECKING([$1 compiler])
3856     CL_EXE_PATH="$2/cl.exe"
3858     if test ! -f "$CL_EXE_PATH"; then
3859         if test "$1" = "multi-arch"; then
3860             AC_MSG_WARN([no compiler (cl.exe) in $2])
3861             return 1
3862         else
3863             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3864         fi
3865     fi
3867     dnl ===========================================================
3868     dnl  Check for the corresponding mspdb*.dll
3869     dnl ===========================================================
3871     # MSVC 15.0 has libraries from 14.0?
3872     mspdbnum="140"
3874     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3875         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3876     fi
3878     # The compiles has to find its shared libraries
3879     OLD_PATH="$PATH"
3880     TEMP_PATH=`cygpath -d "$2"`
3881     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3883     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3884         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3885     fi
3887     PATH="$OLD_PATH"
3889     AC_MSG_RESULT([$CL_EXE_PATH])
3892 SOLARINC=
3893 MSBUILD_PATH=
3894 DEVENV=
3895 if test "$_os" = "WINNT"; then
3896     AC_MSG_CHECKING([Visual C++])
3897     find_msvc "$with_visual_studio"
3898     if test -z "$vctest"; then
3899         if test -n "$with_visual_studio"; then
3900             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3901         else
3902             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3903         fi
3904     fi
3905     AC_MSG_RESULT([])
3907     VC_PRODUCT_DIR="$vctest/VC"
3908     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3910     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3911     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3912         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3913         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3914         if test $? -ne 0; then
3915             WIN_MULTI_ARCH=""
3916             WIN_OTHER_ARCH=""
3917         fi
3918     fi
3920     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3921         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3922         test_cl_exe "build" "$MSVC_BUILD_PATH"
3923     fi
3925     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3926         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3927         test_cl_exe "host" "$MSVC_HOST_PATH"
3928     else
3929         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3930     fi
3932     AC_MSG_CHECKING([for short pathname of VC product directory])
3933     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3934     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3936     UCRTSDKDIR=
3937     UCRTVERSION=
3939     AC_MSG_CHECKING([for UCRT location])
3940     find_ucrt
3941     # find_ucrt errors out if it doesn't find it
3942     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3943     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3944     ucrtincpath_formatted=$formatted_path
3945     # SOLARINC is used for external modules and must be set too.
3946     # And no, it's not sufficient to set SOLARINC only, as configure
3947     # itself doesn't honour it.
3948     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3949     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3950     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3951     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3953     AC_SUBST(UCRTSDKDIR)
3954     AC_SUBST(UCRTVERSION)
3956     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3957     # Find the proper version of MSBuild.exe to use based on the VS version
3958     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3959     if test -n "$regvalue" ; then
3960         AC_MSG_RESULT([found: $regvalue])
3961         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3962     else
3963         if test "$vcnumwithdot" = "16.0"; then
3964             if test "$WIN_BUILD_ARCH" != "x64"; then
3965                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3966             else
3967                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3968             fi
3969         else
3970             if test "$WIN_BUILD_ARCH" != "x64"; then
3971                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3972             else
3973                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3974             fi
3975         fi
3976         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3977         AC_MSG_RESULT([$regvalue])
3978     fi
3980     # Find the version of devenv.exe
3981     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3982     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3983     DEVENV_unix=$(cygpath -u "$DEVENV")
3984     if test ! -e "$DEVENV_unix"; then
3985         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3986     fi
3988     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3989     dnl needed when building CLR code:
3990     if test -z "$MSVC_CXX"; then
3991         # This gives us a posix path with 8.3 filename restrictions
3992         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3993     fi
3995     if test -z "$CC"; then
3996         CC=$MSVC_CXX
3997         CC_BASE=`first_arg_basename "$CC"`
3998     fi
3999     if test -z "$CXX"; then
4000         CXX=$MSVC_CXX
4001         CXX_BASE=`first_arg_basename "$CXX"`
4002     fi
4004     if test -n "$CC"; then
4005         # Remove /cl.exe from CC case insensitive
4006         AC_MSG_NOTICE([found Visual C++ $vcyear])
4008         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4009         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4011         PathFormat "$COMPATH"
4012         COMPATH=`win_short_path_for_make "$formatted_path"`
4014         VCVER=$vcnum
4016         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4017         # are always "better", we list them in reverse chronological order.
4019         case "$vcnum" in
4020         160)
4021             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4022             ;;
4023         esac
4025         # The expectation is that --with-windows-sdk should not need to be used
4026         if test -n "$with_windows_sdk"; then
4027             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4028             *" "$with_windows_sdk" "*)
4029                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4030                 ;;
4031             *)
4032                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4033                 ;;
4034             esac
4035         fi
4037         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4038         ac_objext=obj
4039         ac_exeext=exe
4041     else
4042         AC_MSG_ERROR([Visual C++ not found after all, huh])
4043     fi
4045     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4046     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4047         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4048         // between Visual Studio versions and _MSC_VER:
4049         #if _MSC_VER < 1924
4050         #error
4051         #endif
4052     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4054     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4055     # version of the Explorer extension (and maybe other small
4056     # bits, too) needed when installing a 32-bit LibreOffice on a
4057     # 64-bit OS. The 64-bit Explorer extension is a feature that
4058     # has been present since long in OOo. Don't confuse it with
4059     # building LibreOffice itself as 64-bit code.
4061     BUILD_X64=
4062     CXX_X64_BINARY=
4064     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4065         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4066         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4067              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4068         then
4069             BUILD_X64=TRUE
4070             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4071             AC_MSG_RESULT([found])
4072         else
4073             AC_MSG_RESULT([not found])
4074             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4075         fi
4076     elif test "$WIN_HOST_ARCH" = "x64"; then
4077         CXX_X64_BINARY=$CXX
4078     fi
4079     AC_SUBST(BUILD_X64)
4081     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4082     AC_SUBST(CXX_X64_BINARY)
4084     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4085     # needed to support TWAIN scan on both 32- and 64-bit systems
4087     case "$WIN_HOST_ARCH" in
4088     x64)
4089         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4090         if test -n "$CXX_X86_BINARY"; then
4091             BUILD_X86=TRUE
4092             AC_MSG_RESULT([preset])
4093         elif test -n "$WIN_MULTI_ARCH"; then
4094             BUILD_X86=TRUE
4095             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4096             CXX_X86_BINARY+=" /arch:SSE"
4097             AC_MSG_RESULT([found])
4098         else
4099             AC_MSG_RESULT([not found])
4100             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4101         fi
4102         ;;
4103     x86)
4104         BUILD_X86=TRUE
4105         CXX_X86_BINARY=$MSVC_CXX
4106         ;;
4107     esac
4108     AC_SUBST(BUILD_X86)
4109     AC_SUBST(CXX_X86_BINARY)
4111 AC_SUBST(VCVER)
4112 AC_SUBST(DEVENV)
4113 AC_SUBST(MSVC_CXX)
4116 # unowinreg.dll
4118 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4119 AC_SUBST(UNOWINREG_DLL)
4121 COM_IS_CLANG=
4122 AC_MSG_CHECKING([whether the compiler is actually Clang])
4123 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4124     #ifndef __clang__
4125     you lose
4126     #endif
4127     int foo=42;
4128     ]])],
4129     [AC_MSG_RESULT([yes])
4130      COM_IS_CLANG=TRUE],
4131     [AC_MSG_RESULT([no])])
4132 AC_SUBST(COM_IS_CLANG)
4134 CC_PLAIN=$CC
4135 CLANGVER=
4136 if test "$COM_IS_CLANG" = TRUE; then
4137     AC_MSG_CHECKING([whether Clang is new enough])
4138     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4139         #if !defined __apple_build_version__
4140         #error
4141         #endif
4142         ]])],
4143         [my_apple_clang=yes],[my_apple_clang=])
4144     if test "$my_apple_clang" = yes; then
4145         AC_MSG_RESULT([assumed yes (Apple Clang)])
4146     else
4147         if test "$_os" = WINNT; then
4148             dnl In which case, assume clang-cl:
4149             my_args="/EP /TC"
4150             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4151             dnl clang-cl:
4152             CC_PLAIN=
4153             for i in $CC; do
4154                 case $i in
4155                 -FIIntrin.h)
4156                     ;;
4157                 *)
4158                     CC_PLAIN="$CC_PLAIN $i"
4159                     ;;
4160                 esac
4161             done
4162         else
4163             my_args="-E -P"
4164         fi
4165         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4166         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4167         CLANGVER=`echo $clang_version \
4168             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4169         if test "$CLANGVER" -ge 50002; then
4170             AC_MSG_RESULT([yes ($clang_version)])
4171         else
4172             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4173         fi
4174         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4175         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4176     fi
4179 SHOWINCLUDES_PREFIX=
4180 if test "$_os" = WINNT; then
4181     dnl We need to guess the prefix of the -showIncludes output, it can be
4182     dnl localized
4183     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4184     echo "#include <stdlib.h>" > conftest.c
4185     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4186         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4187     rm -f conftest.c conftest.obj
4188     if test -z "$SHOWINCLUDES_PREFIX"; then
4189         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4190     else
4191         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4192     fi
4194 AC_SUBST(SHOWINCLUDES_PREFIX)
4197 # prefix C with ccache if needed
4199 if test "$CCACHE" != ""; then
4200     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4202     AC_LANG_PUSH([C])
4203     save_CFLAGS=$CFLAGS
4204     CFLAGS="$CFLAGS --ccache-skip -O2"
4205     dnl an empty program will do, we're checking the compiler flags
4206     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4207                       [use_ccache=yes], [use_ccache=no])
4208     CFLAGS=$save_CFLAGS
4209     if test $use_ccache = yes; then
4210         AC_MSG_RESULT([yes])
4211     else
4212         CC="$CCACHE $CC"
4213         CC_BASE="ccache $CC_BASE"
4214         AC_MSG_RESULT([no])
4215     fi
4216     AC_LANG_POP([C])
4219 # ===================================================================
4220 # check various GCC options that Clang does not support now but maybe
4221 # will somewhen in the future, check them even for GCC, so that the
4222 # flags are set
4223 # ===================================================================
4225 HAVE_GCC_GGDB2=
4226 if test "$GCC" = "yes"; then
4227     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4228     save_CFLAGS=$CFLAGS
4229     CFLAGS="$CFLAGS -Werror -ggdb2"
4230     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4231     CFLAGS=$save_CFLAGS
4232     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4233         AC_MSG_RESULT([yes])
4234     else
4235         AC_MSG_RESULT([no])
4236     fi
4238     if test "$host_cpu" = "m68k"; then
4239         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4240         save_CFLAGS=$CFLAGS
4241         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4242         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4243         CFLAGS=$save_CFLAGS
4244         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4245             AC_MSG_RESULT([yes])
4246         else
4247             AC_MSG_ERROR([no])
4248         fi
4249     fi
4251 AC_SUBST(HAVE_GCC_GGDB2)
4253 dnl ===================================================================
4254 dnl  Test the gcc version
4255 dnl ===================================================================
4256 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4257     AC_MSG_CHECKING([the GCC version])
4258     _gcc_version=`$CC -dumpversion`
4259     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4260         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4261     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4263     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4265     if test "$gcc_full_version" -lt 70000; then
4266         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4267     fi
4268 else
4269     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4270     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4271     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4272     # (which reports itself as GCC 4.2.1).
4273     GCC_VERSION=
4275 AC_SUBST(GCC_VERSION)
4277 dnl Set the ENABLE_DBGUTIL variable
4278 dnl ===================================================================
4279 AC_MSG_CHECKING([whether to build with additional debug utilities])
4280 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4281     ENABLE_DBGUTIL="TRUE"
4282     # this is an extra var so it can have different default on different MSVC
4283     # versions (in case there are version specific problems with it)
4284     MSVC_USE_DEBUG_RUNTIME="TRUE"
4286     AC_MSG_RESULT([yes])
4287     # cppunit and graphite expose STL in public headers
4288     if test "$with_system_cppunit" = "yes"; then
4289         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4290     else
4291         with_system_cppunit=no
4292     fi
4293     if test "$with_system_graphite" = "yes"; then
4294         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4295     else
4296         with_system_graphite=no
4297     fi
4298     if test "$with_system_orcus" = "yes"; then
4299         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4300     else
4301         with_system_orcus=no
4302     fi
4303     if test "$with_system_libcmis" = "yes"; then
4304         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4305     else
4306         with_system_libcmis=no
4307     fi
4308     if test "$with_system_hunspell" = "yes"; then
4309         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4310     else
4311         with_system_hunspell=no
4312     fi
4313     if test "$with_system_gpgmepp" = "yes"; then
4314         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4315     else
4316         with_system_gpgmepp=no
4317     fi
4318     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4319     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4320     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4321     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4322     # of those two is using the system variant:
4323     if test "$with_system_libnumbertext" = "yes"; then
4324         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4325     else
4326         with_system_libnumbertext=no
4327     fi
4328     if test "$with_system_libwps" = "yes"; then
4329         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4330     else
4331         with_system_libwps=no
4332     fi
4333 else
4334     ENABLE_DBGUTIL=""
4335     MSVC_USE_DEBUG_RUNTIME=""
4336     AC_MSG_RESULT([no])
4338 AC_SUBST(ENABLE_DBGUTIL)
4339 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4341 dnl Set the ENABLE_DEBUG variable.
4342 dnl ===================================================================
4343 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4344     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4346 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4347     if test -z "$libo_fuzzed_enable_debug"; then
4348         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4349     else
4350         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4351         enable_debug=yes
4352     fi
4355 AC_MSG_CHECKING([whether to do a debug build])
4356 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4357     ENABLE_DEBUG="TRUE"
4358     if test -n "$ENABLE_DBGUTIL" ; then
4359         AC_MSG_RESULT([yes (dbgutil)])
4360     else
4361         AC_MSG_RESULT([yes])
4362     fi
4363 else
4364     ENABLE_DEBUG=""
4365     AC_MSG_RESULT([no])
4367 AC_SUBST(ENABLE_DEBUG)
4369 dnl ===================================================================
4370 dnl Select the linker to use (gold/lld/ld.bfd).
4371 dnl This is done only after compiler checks (need to know if Clang is
4372 dnl used, for different defaults) and after checking if a debug build
4373 dnl is wanted (non-debug builds get the default linker if not explicitly
4374 dnl specified otherwise).
4375 dnl All checks for linker features/options should come after this.
4376 dnl ===================================================================
4377 check_use_ld()
4379     use_ld=-fuse-ld=${1%%:*}
4380     use_ld_path=${1#*:}
4381     if test "$use_ld_path" != "$1"; then
4382         use_ld="$use_ld --ld-path=$use_ld_path"
4383     fi
4384     use_ld_fail_if_error=$2
4385     use_ld_ok=
4386     AC_MSG_CHECKING([for $use_ld linker support])
4387     use_ld_ldflags_save="$LDFLAGS"
4388     LDFLAGS="$LDFLAGS $use_ld"
4389     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4390 #include <stdio.h>
4391         ],[
4392 printf ("hello world\n");
4393         ])], USE_LD=$use_ld, [])
4394     if test -n "$USE_LD"; then
4395         AC_MSG_RESULT( yes )
4396         use_ld_ok=yes
4397     else
4398         if test -n "$use_ld_fail_if_error"; then
4399             AC_MSG_ERROR( no )
4400         else
4401             AC_MSG_RESULT( no )
4402         fi
4403     fi
4404     if test -n "$use_ld_ok"; then
4405         dnl keep the value of LDFLAGS
4406         return 0
4407     fi
4408     LDFLAGS="$use_ld_ldflags_save"
4409     return 1
4411 USE_LD=
4412 if test "$enable_ld" != "no"; then
4413     if test "$GCC" = "yes"; then
4414         if test -n "$enable_ld"; then
4415             check_use_ld "$enable_ld" fail_if_error
4416         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4417             dnl non-debug builds default to the default linker
4418             true
4419         elif test -n "$COM_IS_CLANG"; then
4420             check_use_ld lld
4421             if test $? -ne 0; then
4422                 check_use_ld gold
4423             fi
4424         else
4425             # For gcc first try gold, new versions also support lld.
4426             check_use_ld gold
4427             if test $? -ne 0; then
4428                 check_use_ld lld
4429             fi
4430         fi
4431         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4432         rm conftest.out
4433         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4434         if test -z "$ld_used"; then
4435             ld_used="unknown"
4436         fi
4437         AC_MSG_CHECKING([for linker that is used])
4438         AC_MSG_RESULT([$ld_used])
4439         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4440             if echo "$ld_used" | grep -q "^GNU ld"; then
4441                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4442                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4443             fi
4444         fi
4445     else
4446         if test "$enable_ld" = "yes"; then
4447             AC_MSG_ERROR([--enable-ld not supported])
4448         fi
4449     fi
4451 AC_SUBST(USE_LD)
4453 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4454 if test "$GCC" = "yes"; then
4455     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4456     bsymbolic_functions_ldflags_save=$LDFLAGS
4457     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4458     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4459 #include <stdio.h>
4460         ],[
4461 printf ("hello world\n");
4462         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4463     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4464         AC_MSG_RESULT( found )
4465     else
4466         AC_MSG_RESULT( not found )
4467     fi
4468     LDFLAGS=$bsymbolic_functions_ldflags_save
4470 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4472 LD_GC_SECTIONS=
4473 if test "$GCC" = "yes"; then
4474     for flag in "--gc-sections" "-dead_strip"; do
4475         AC_MSG_CHECKING([for $flag linker support])
4476         ldflags_save=$LDFLAGS
4477         LDFLAGS="$LDFLAGS -Wl,$flag"
4478         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4479 #include <stdio.h>
4480             ],[
4481 printf ("hello world\n");
4482             ])],[
4483             LD_GC_SECTIONS="-Wl,$flag"
4484             AC_MSG_RESULT( found )
4485             ], [
4486             AC_MSG_RESULT( not found )
4487             ])
4488         LDFLAGS=$ldflags_save
4489         if test -n "$LD_GC_SECTIONS"; then
4490             break
4491         fi
4492     done
4494 AC_SUBST(LD_GC_SECTIONS)
4496 HAVE_GSPLIT_DWARF=
4497 if test "$enable_split_debug" != no; then
4498     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4499     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4500         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4501         save_CFLAGS=$CFLAGS
4502         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4503         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4504         CFLAGS=$save_CFLAGS
4505         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4506             AC_MSG_RESULT([yes])
4507         else
4508             if test "$enable_split_debug" = yes; then
4509                 AC_MSG_ERROR([no])
4510             else
4511                 AC_MSG_RESULT([no])
4512             fi
4513         fi
4514     fi
4515     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4516         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4517         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4518     fi
4520 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4522 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4523 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4524 save_CFLAGS=$CFLAGS
4525 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4526 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4527 CFLAGS=$save_CFLAGS
4528 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4529     AC_MSG_RESULT([yes])
4530 else
4531     AC_MSG_RESULT([no])
4533 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4535 ENABLE_GDB_INDEX=
4536 if test "$enable_gdb_index" != "no"; then
4537     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4538     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4539         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4540         save_CFLAGS=$CFLAGS
4541         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4542         have_ggnu_pubnames=
4543         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4544         if test "$have_ggnu_pubnames" != "TRUE"; then
4545             if test "$enable_gdb_index" = "yes"; then
4546                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4547             else
4548                 AC_MSG_RESULT( no )
4549             fi
4550         else
4551             AC_MSG_RESULT( yes )
4552             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4553             ldflags_save=$LDFLAGS
4554             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4555             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4556 #include <stdio.h>
4557                 ],[
4558 printf ("hello world\n");
4559                 ])], ENABLE_GDB_INDEX=TRUE, [])
4560             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4561                 AC_MSG_RESULT( yes )
4562             else
4563                 if test "$enable_gdb_index" = "yes"; then
4564                     AC_MSG_ERROR( no )
4565                 else
4566                     AC_MSG_RESULT( no )
4567                 fi
4568             fi
4569             LDFLAGS=$ldflags_save
4570         fi
4571         CFLAGS=$save_CFLAGS
4572         fi
4573     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4574         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4575         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4576     fi
4578 AC_SUBST(ENABLE_GDB_INDEX)
4580 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4581     enable_sal_log=yes
4583 if test "$enable_sal_log" = yes; then
4584     ENABLE_SAL_LOG=TRUE
4586 AC_SUBST(ENABLE_SAL_LOG)
4588 dnl Check for enable symbols option
4589 dnl ===================================================================
4590 AC_MSG_CHECKING([whether to generate debug information])
4591 if test -z "$enable_symbols"; then
4592     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4593         enable_symbols=yes
4594     else
4595         enable_symbols=no
4596     fi
4598 if test "$enable_symbols" = yes; then
4599     ENABLE_SYMBOLS_FOR=all
4600     AC_MSG_RESULT([yes])
4601 elif test "$enable_symbols" = no; then
4602     ENABLE_SYMBOLS_FOR=
4603     AC_MSG_RESULT([no])
4604 else
4605     # Selective debuginfo.
4606     ENABLE_SYMBOLS_FOR="$enable_symbols"
4607     AC_MSG_RESULT([for "$enable_symbols"])
4609 AC_SUBST(ENABLE_SYMBOLS_FOR)
4611 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4612     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4613     AC_MSG_CHECKING([whether enough memory is available for linking])
4614     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4615     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4616     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4617         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4618     else
4619         AC_MSG_RESULT([yes])
4620     fi
4623 ENABLE_OPTIMIZED=
4624 ENABLE_OPTIMIZED_DEBUG=
4625 AC_MSG_CHECKING([whether to compile with optimization flags])
4626 if test -z "$enable_optimized"; then
4627     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4628         enable_optimized=no
4629     else
4630         enable_optimized=yes
4631     fi
4633 if test "$enable_optimized" = yes; then
4634     ENABLE_OPTIMIZED=TRUE
4635     AC_MSG_RESULT([yes])
4636 elif test "$enable_optimized" = debug; then
4637     ENABLE_OPTIMIZED_DEBUG=TRUE
4638     AC_MSG_RESULT([yes (debug)])
4639     HAVE_GCC_OG=
4640     if test "$GCC" = "yes"; then
4641         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4642         save_CFLAGS=$CFLAGS
4643         CFLAGS="$CFLAGS -Werror -Og"
4644         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4645         CFLAGS=$save_CFLAGS
4646         if test "$HAVE_GCC_OG" = "TRUE"; then
4647             AC_MSG_RESULT([yes])
4648         else
4649             AC_MSG_RESULT([no])
4650         fi
4651     fi
4652     if test -z "$HAVE_GCC_OG"; then
4653         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4654     fi
4655 else
4656     AC_MSG_RESULT([no])
4658 AC_SUBST(ENABLE_OPTIMIZED)
4659 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4662 # determine CPUNAME, OS, ...
4663 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4665 case "$host_os" in
4667 aix*)
4668     COM=GCC
4669     CPUNAME=POWERPC
4670     USING_X11=TRUE
4671     OS=AIX
4672     RTL_OS=AIX
4673     RTL_ARCH=PowerPC
4674     PLATFORMID=aix_powerpc
4675     P_SEP=:
4676     ;;
4678 cygwin*|wsl*)
4679     # Already handled
4680     ;;
4682 darwin*|macos*)
4683     COM=GCC
4684     USING_X11=
4685     OS=MACOSX
4686     RTL_OS=MacOSX
4687     P_SEP=:
4689     case "$host_cpu" in
4690     aarch64|arm64)
4691         if test "$enable_ios_simulator" = "yes"; then
4692             OS=iOS
4693         else
4694             CPUNAME=AARCH64
4695             RTL_ARCH=AARCH64
4696             PLATFORMID=macosx_arm64
4697         fi
4698         ;;
4699     x86_64)
4700         if test "$enable_ios_simulator" = "yes"; then
4701             OS=iOS
4702         fi
4703         CPUNAME=X86_64
4704         RTL_ARCH=X86_64
4705         PLATFORMID=macosx_x86_64
4706         ;;
4707     *)
4708         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4709         ;;
4710     esac
4711     ;;
4713 ios*)
4714     COM=GCC
4715     USING_X11=
4716     OS=iOS
4717     RTL_OS=iOS
4718     P_SEP=:
4720     case "$host_cpu" in
4721     aarch64|arm64)
4722         if test "$enable_ios_simulator" = "yes"; then
4723             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4724         fi
4725         ;;
4726     *)
4727         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4728         ;;
4729     esac
4730     CPUNAME=AARCH64
4731     RTL_ARCH=AARCH64
4732     PLATFORMID=ios_arm64
4733     ;;
4735 dragonfly*)
4736     COM=GCC
4737     USING_X11=TRUE
4738     OS=DRAGONFLY
4739     RTL_OS=DragonFly
4740     P_SEP=:
4742     case "$host_cpu" in
4743     i*86)
4744         CPUNAME=INTEL
4745         RTL_ARCH=x86
4746         PLATFORMID=dragonfly_x86
4747         ;;
4748     x86_64)
4749         CPUNAME=X86_64
4750         RTL_ARCH=X86_64
4751         PLATFORMID=dragonfly_x86_64
4752         ;;
4753     *)
4754         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4755         ;;
4756     esac
4757     ;;
4759 freebsd*)
4760     COM=GCC
4761     USING_X11=TRUE
4762     RTL_OS=FreeBSD
4763     OS=FREEBSD
4764     P_SEP=:
4766     case "$host_cpu" in
4767     aarch64)
4768         CPUNAME=AARCH64
4769         PLATFORMID=freebsd_aarch64
4770         RTL_ARCH=AARCH64
4771         ;;
4772     i*86)
4773         CPUNAME=INTEL
4774         RTL_ARCH=x86
4775         PLATFORMID=freebsd_x86
4776         ;;
4777     x86_64|amd64)
4778         CPUNAME=X86_64
4779         RTL_ARCH=X86_64
4780         PLATFORMID=freebsd_x86_64
4781         ;;
4782     powerpc64)
4783         CPUNAME=POWERPC64
4784         RTL_ARCH=PowerPC_64
4785         PLATFORMID=freebsd_powerpc64
4786         ;;
4787     powerpc|powerpcspe)
4788         CPUNAME=POWERPC
4789         RTL_ARCH=PowerPC
4790         PLATFORMID=freebsd_powerpc
4791         ;;
4792     *)
4793         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4794         ;;
4795     esac
4796     ;;
4798 haiku*)
4799     COM=GCC
4800     USING_X11=
4801     GUIBASE=haiku
4802     RTL_OS=Haiku
4803     OS=HAIKU
4804     P_SEP=:
4806     case "$host_cpu" in
4807     i*86)
4808         CPUNAME=INTEL
4809         RTL_ARCH=x86
4810         PLATFORMID=haiku_x86
4811         ;;
4812     x86_64|amd64)
4813         CPUNAME=X86_64
4814         RTL_ARCH=X86_64
4815         PLATFORMID=haiku_x86_64
4816         ;;
4817     *)
4818         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4819         ;;
4820     esac
4821     ;;
4823 kfreebsd*)
4824     COM=GCC
4825     USING_X11=TRUE
4826     OS=LINUX
4827     RTL_OS=kFreeBSD
4828     P_SEP=:
4830     case "$host_cpu" in
4832     i*86)
4833         CPUNAME=INTEL
4834         RTL_ARCH=x86
4835         PLATFORMID=kfreebsd_x86
4836         ;;
4837     x86_64)
4838         CPUNAME=X86_64
4839         RTL_ARCH=X86_64
4840         PLATFORMID=kfreebsd_x86_64
4841         ;;
4842     *)
4843         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4844         ;;
4845     esac
4846     ;;
4848 linux-gnu*)
4849     COM=GCC
4850     USING_X11=TRUE
4851     OS=LINUX
4852     RTL_OS=Linux
4853     P_SEP=:
4855     case "$host_cpu" in
4857     aarch64)
4858         CPUNAME=AARCH64
4859         PLATFORMID=linux_aarch64
4860         RTL_ARCH=AARCH64
4861         ;;
4862     alpha)
4863         CPUNAME=AXP
4864         RTL_ARCH=ALPHA
4865         PLATFORMID=linux_alpha
4866         ;;
4867     arm*)
4868         CPUNAME=ARM
4869         EPM_FLAGS="-a arm"
4870         RTL_ARCH=ARM_EABI
4871         PLATFORMID=linux_arm_eabi
4872         case "$host_cpu" in
4873         arm*-linux)
4874             RTL_ARCH=ARM_OABI
4875             PLATFORMID=linux_arm_oabi
4876             ;;
4877         esac
4878         ;;
4879     hppa)
4880         CPUNAME=HPPA
4881         RTL_ARCH=HPPA
4882         EPM_FLAGS="-a hppa"
4883         PLATFORMID=linux_hppa
4884         ;;
4885     i*86)
4886         CPUNAME=INTEL
4887         RTL_ARCH=x86
4888         PLATFORMID=linux_x86
4889         ;;
4890     ia64)
4891         CPUNAME=IA64
4892         RTL_ARCH=IA64
4893         PLATFORMID=linux_ia64
4894         ;;
4895     mips)
4896         CPUNAME=GODSON
4897         RTL_ARCH=MIPS_EB
4898         EPM_FLAGS="-a mips"
4899         PLATFORMID=linux_mips_eb
4900         ;;
4901     mips64)
4902         CPUNAME=GODSON64
4903         RTL_ARCH=MIPS64_EB
4904         EPM_FLAGS="-a mips64"
4905         PLATFORMID=linux_mips64_eb
4906         ;;
4907     mips64el)
4908         CPUNAME=GODSON64
4909         RTL_ARCH=MIPS64_EL
4910         EPM_FLAGS="-a mips64el"
4911         PLATFORMID=linux_mips64_el
4912         ;;
4913     mipsel)
4914         CPUNAME=GODSON
4915         RTL_ARCH=MIPS_EL
4916         EPM_FLAGS="-a mipsel"
4917         PLATFORMID=linux_mips_el
4918         ;;
4919     m68k)
4920         CPUNAME=M68K
4921         RTL_ARCH=M68K
4922         PLATFORMID=linux_m68k
4923         ;;
4924     powerpc)
4925         CPUNAME=POWERPC
4926         RTL_ARCH=PowerPC
4927         PLATFORMID=linux_powerpc
4928         ;;
4929     powerpc64)
4930         CPUNAME=POWERPC64
4931         RTL_ARCH=PowerPC_64
4932         PLATFORMID=linux_powerpc64
4933         ;;
4934     powerpc64le)
4935         CPUNAME=POWERPC64
4936         RTL_ARCH=PowerPC_64_LE
4937         PLATFORMID=linux_powerpc64_le
4938         ;;
4939     sparc)
4940         CPUNAME=SPARC
4941         RTL_ARCH=SPARC
4942         PLATFORMID=linux_sparc
4943         ;;
4944     sparc64)
4945         CPUNAME=SPARC64
4946         RTL_ARCH=SPARC64
4947         PLATFORMID=linux_sparc64
4948         ;;
4949     s390)
4950         CPUNAME=S390
4951         RTL_ARCH=S390
4952         PLATFORMID=linux_s390
4953         ;;
4954     s390x)
4955         CPUNAME=S390X
4956         RTL_ARCH=S390x
4957         PLATFORMID=linux_s390x
4958         ;;
4959     x86_64)
4960         CPUNAME=X86_64
4961         RTL_ARCH=X86_64
4962         PLATFORMID=linux_x86_64
4963         ;;
4964     *)
4965         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4966         ;;
4967     esac
4968     ;;
4970 linux-android*)
4971     COM=GCC
4972     USING_X11=
4973     OS=ANDROID
4974     RTL_OS=Android
4975     P_SEP=:
4977     case "$host_cpu" in
4979     arm|armel)
4980         CPUNAME=ARM
4981         RTL_ARCH=ARM_EABI
4982         PLATFORMID=android_arm_eabi
4983         ;;
4984     aarch64)
4985         CPUNAME=AARCH64
4986         RTL_ARCH=AARCH64
4987         PLATFORMID=android_aarch64
4988         ;;
4989     i*86)
4990         CPUNAME=INTEL
4991         RTL_ARCH=x86
4992         PLATFORMID=android_x86
4993         ;;
4994     x86_64)
4995         CPUNAME=X86_64
4996         RTL_ARCH=X86_64
4997         PLATFORMID=android_x86_64
4998         ;;
4999     *)
5000         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5001         ;;
5002     esac
5003     ;;
5005 *netbsd*)
5006     COM=GCC
5007     USING_X11=TRUE
5008     OS=NETBSD
5009     RTL_OS=NetBSD
5010     P_SEP=:
5012     case "$host_cpu" in
5013     i*86)
5014         CPUNAME=INTEL
5015         RTL_ARCH=x86
5016         PLATFORMID=netbsd_x86
5017         ;;
5018     powerpc)
5019         CPUNAME=POWERPC
5020         RTL_ARCH=PowerPC
5021         PLATFORMID=netbsd_powerpc
5022         ;;
5023     sparc)
5024         CPUNAME=SPARC
5025         RTL_ARCH=SPARC
5026         PLATFORMID=netbsd_sparc
5027         ;;
5028     x86_64)
5029         CPUNAME=X86_64
5030         RTL_ARCH=X86_64
5031         PLATFORMID=netbsd_x86_64
5032         ;;
5033     *)
5034         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5035         ;;
5036     esac
5037     ;;
5039 openbsd*)
5040     COM=GCC
5041     USING_X11=TRUE
5042     OS=OPENBSD
5043     RTL_OS=OpenBSD
5044     P_SEP=:
5046     case "$host_cpu" in
5047     i*86)
5048         CPUNAME=INTEL
5049         RTL_ARCH=x86
5050         PLATFORMID=openbsd_x86
5051         ;;
5052     x86_64)
5053         CPUNAME=X86_64
5054         RTL_ARCH=X86_64
5055         PLATFORMID=openbsd_x86_64
5056         ;;
5057     *)
5058         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5059         ;;
5060     esac
5061     SOLARINC="$SOLARINC -I/usr/local/include"
5062     ;;
5064 solaris*)
5065     COM=GCC
5066     USING_X11=TRUE
5067     OS=SOLARIS
5068     RTL_OS=Solaris
5069     P_SEP=:
5071     case "$host_cpu" in
5072     i*86)
5073         CPUNAME=INTEL
5074         RTL_ARCH=x86
5075         PLATFORMID=solaris_x86
5076         ;;
5077     sparc)
5078         CPUNAME=SPARC
5079         RTL_ARCH=SPARC
5080         PLATFORMID=solaris_sparc
5081         ;;
5082     sparc64)
5083         CPUNAME=SPARC64
5084         RTL_ARCH=SPARC64
5085         PLATFORMID=solaris_sparc64
5086         ;;
5087     *)
5088         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5089         ;;
5090     esac
5091     SOLARINC="$SOLARINC -I/usr/local/include"
5092     ;;
5095     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5096     ;;
5097 esac
5099 if test "$with_x" = "no"; then
5100     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5103 DISABLE_GUI=""
5104 if test "$enable_gui" = "no"; then
5105     if test "$USING_X11" != TRUE; then
5106         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5107     fi
5108     USING_X11=
5109     DISABLE_GUI=TRUE
5110     AC_DEFINE(HAVE_FEATURE_UI,0)
5111     test_cairo=yes
5113 AC_SUBST(DISABLE_GUI)
5115 WORKDIR="${BUILDDIR}/workdir"
5116 INSTDIR="${BUILDDIR}/instdir"
5117 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5118 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5119 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5120 AC_SUBST(COM)
5121 AC_SUBST(CPUNAME)
5122 AC_SUBST(RTL_OS)
5123 AC_SUBST(RTL_ARCH)
5124 AC_SUBST(EPM_FLAGS)
5125 AC_SUBST(USING_X11)
5126 AC_SUBST([INSTDIR])
5127 AC_SUBST([INSTROOT])
5128 AC_SUBST([INSTROOTBASE])
5129 AC_SUBST(OS)
5130 AC_SUBST(P_SEP)
5131 AC_SUBST(WORKDIR)
5132 AC_SUBST(PLATFORMID)
5133 AC_SUBST(WINDOWS_X64)
5134 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5136 dnl ===================================================================
5137 dnl Test which package format to use
5138 dnl ===================================================================
5139 AC_MSG_CHECKING([which package format to use])
5140 if test -n "$with_package_format" -a "$with_package_format" != no; then
5141     for i in $with_package_format; do
5142         case "$i" in
5143         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5144             ;;
5145         *)
5146             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5147 aix - AIX software distribution
5148 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5149 deb - Debian software distribution
5150 pkg - Solaris software distribution
5151 rpm - RedHat software distribution
5153 LibreOffice additionally supports:
5154 archive - .tar.gz or .zip
5155 dmg - macOS .dmg
5156 installed - installation tree
5157 msi - Windows .msi
5158         ])
5159             ;;
5160         esac
5161     done
5162     # fakeroot is needed to ensure correct file ownerships/permissions
5163     # inside deb packages and tar archives created on Linux and Solaris.
5164     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5165         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5166         if test "$FAKEROOT" = "no"; then
5167             AC_MSG_ERROR(
5168                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5169         fi
5170     fi
5171     PKGFORMAT="$with_package_format"
5172     AC_MSG_RESULT([$PKGFORMAT])
5173 else
5174     PKGFORMAT=
5175     AC_MSG_RESULT([none])
5177 AC_SUBST(PKGFORMAT)
5179 dnl ===================================================================
5180 dnl Set up a different compiler to produce tools to run on the build
5181 dnl machine when doing cross-compilation
5182 dnl ===================================================================
5184 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5185 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5186 if test "$cross_compiling" = "yes"; then
5187     AC_MSG_CHECKING([for BUILD platform configuration])
5188     echo
5189     rm -rf CONF-FOR-BUILD config_build.mk
5190     mkdir CONF-FOR-BUILD
5191     # Here must be listed all files needed when running the configure script. In particular, also
5192     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5193     # keep them in the same order as there.
5194     (cd $SRC_ROOT && tar cf - \
5195         config.guess \
5196         bin/get_config_variables \
5197         solenv/bin/getcompver.awk \
5198         solenv/inc/langlist.mk \
5199         download.lst \
5200         config_host.mk.in \
5201         config_host_lang.mk.in \
5202         Makefile.in \
5203         bin/bffvalidator.sh.in \
5204         bin/odfvalidator.sh.in \
5205         bin/officeotron.sh.in \
5206         hardened_runtime.xcent.in \
5207         instsetoo_native/util/openoffice.lst.in \
5208         config_host/*.in \
5209         sysui/desktop/macosx/Info.plist.in) \
5210     | (cd CONF-FOR-BUILD && tar xf -)
5211     cp configure CONF-FOR-BUILD
5212     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5213     (
5214     unset COM USING_X11 OS CPUNAME
5215     unset CC CXX SYSBASE CFLAGS
5216     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5217     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5218     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5219     if test -n "$CC_FOR_BUILD"; then
5220         export CC="$CC_FOR_BUILD"
5221         CC_BASE=`first_arg_basename "$CC"`
5222     fi
5223     if test -n "$CXX_FOR_BUILD"; then
5224         export CXX="$CXX_FOR_BUILD"
5225         CXX_BASE=`first_arg_basename "$CXX"`
5226     fi
5227     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5228     cd CONF-FOR-BUILD
5230     sub_conf_opts=""
5231     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5232     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5233     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5234     if test -n "$ENABLE_JAVA"; then
5235         case "$_os" in
5236         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5237         Android)
5238             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5239             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5240             ;;
5241         *)
5242             if test -z "$with_jdk_home"; then
5243                 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.])
5244             fi
5245             ;;
5246         esac
5247     else
5248         sub_conf_opts="$sub_conf_opts --without-java"
5249     fi
5250     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5251     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5252     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5254     # Don't bother having configure look for stuff not needed for the build platform anyway
5255     ./configure \
5256         --build="$build_alias" \
5257         --disable-cups \
5258         --disable-firebird-sdbc \
5259         --disable-gpgmepp \
5260         --disable-gstreamer-1-0 \
5261         --disable-gtk3 \
5262         --disable-mariadb-sdbc \
5263         --disable-online-update \
5264         --disable-opencl \
5265         --disable-pdfimport \
5266         --disable-postgresql-sdbc \
5267         --disable-skia \
5268         --enable-icecream="$enable_icecream" \
5269         --without-doxygen \
5270         --without-webdav \
5271         --with-parallelism="$with_parallelism" \
5272         --with-theme="$with_theme" \
5273         --with-tls=openssl \
5274         $sub_conf_opts \
5275         --srcdir=$srcdir \
5276         2>&1 | sed -e 's/^/    /'
5277     test -f ./config_host.mk 2>/dev/null || exit
5279     # filter permitted build targets
5280     PERMITTED_BUILD_TARGETS="
5281         AVMEDIA
5282         BOOST
5283         CLUCENE
5284         DBCONNECTIVITY
5285         DESKTOP
5286         DYNLOADING
5287         EPOXY
5288         EXPAT
5289         GLM
5290         GRAPHITE
5291         HARFBUZZ
5292         ICU
5293         LCMS2
5294         LIBJPEG_TURBO
5295         LIBLANGTAG
5296         LibO
5297         LIBFFI
5298         LIBPN
5299         LIBXML2
5300         LIBXSLT
5301         MDDS
5302         NATIVE
5303         OPENSSL
5304         ORCUS
5305         PYTHON
5306         SCRIPTING
5307         ZLIB
5309     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5310     # newlined lists, to use grep as a filter
5311     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5312     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5313     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5314     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5316     cp config_host.mk ../config_build.mk
5317     cp config_host_lang.mk ../config_build_lang.mk
5318     mv config.log ../config.Build.log
5319     mkdir -p ../config_build
5320     mv config_host/*.h ../config_build
5322     # all these will get a _FOR_BUILD postfix
5323     DIRECT_FOR_BUILD_SETTINGS="
5324         CC
5325         CXX
5326         ILIB
5327         JAVA_HOME
5328         JAVAIFLAGS
5329         JDK
5330         LIBO_BIN_FOLDER
5331         LIBO_LIB_FOLDER
5332         LIBO_URE_LIB_FOLDER
5333         LIBO_URE_MISC_FOLDER
5334         OS
5335         SDKDIRNAME
5336         SYSTEM_LIBXML
5337         SYSTEM_LIBXSLT
5339     # these overwrite host config with build config
5340     OVERWRITING_SETTINGS="
5341         ANT
5342         ANT_HOME
5343         ANT_LIB
5344         HSQLDB_USE_JDBC_4_1
5345         JAVA_CLASSPATH_NOT_SET
5346         JAVA_SOURCE_VER
5347         JAVA_TARGET_VER
5348         JAVACFLAGS
5349         JAVACOMPILER
5350         JAVADOC
5351         JAVADOCISGJDOC
5353     # these need some special handling
5354     EXTRA_HANDLED_SETTINGS="
5355         INSTDIR
5356         INSTROOT
5357         PATH
5358         WORKDIR
5360     OLD_PATH=$PATH
5361     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5362     BUILD_PATH=$PATH
5363     PATH=$OLD_PATH
5365     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5366     echo "$line" >>build-config
5368     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5369         VV='$'$V
5370         VV=`eval "echo $VV"`
5371         if test -n "$VV"; then
5372             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5373             echo "$line" >>build-config
5374         fi
5375     done
5377     for V in $OVERWRITING_SETTINGS; do
5378         VV='$'$V
5379         VV=`eval "echo $VV"`
5380         if test -n "$VV"; then
5381             line=${V}='${'${V}:-$VV'}'
5382             echo "$line" >>build-config
5383         fi
5384     done
5386     for V in INSTDIR INSTROOT WORKDIR; do
5387         VV='$'$V
5388         VV=`eval "echo $VV"`
5389         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5390         if test -n "$VV"; then
5391             line="${V}_FOR_BUILD='$VV'"
5392             echo "$line" >>build-config
5393         fi
5394     done
5396     )
5397     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5398     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])
5399     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5400              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5402     eval `cat CONF-FOR-BUILD/build-config`
5404     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5406     rm -rf CONF-FOR-BUILD
5407 else
5408     OS_FOR_BUILD="$OS"
5409     CC_FOR_BUILD="$CC"
5410     CXX_FOR_BUILD="$CXX"
5411     INSTDIR_FOR_BUILD="$INSTDIR"
5412     INSTROOT_FOR_BUILD="$INSTROOT"
5413     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5414     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5415     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5416     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5417     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5418     WORKDIR_FOR_BUILD="$WORKDIR"
5420 AC_SUBST(OS_FOR_BUILD)
5421 AC_SUBST(INSTDIR_FOR_BUILD)
5422 AC_SUBST(INSTROOT_FOR_BUILD)
5423 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5424 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5425 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5426 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5427 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5428 AC_SUBST(WORKDIR_FOR_BUILD)
5429 AC_SUBST(CC_FOR_BUILD)
5430 AC_SUBST(CXX_FOR_BUILD)
5432 dnl ===================================================================
5433 dnl Check for syslog header
5434 dnl ===================================================================
5435 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5437 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5438 dnl ===================================================================
5439 AC_MSG_CHECKING([whether to turn warnings to errors])
5440 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5441     ENABLE_WERROR="TRUE"
5442     PYTHONWARNINGS="error"
5443     AC_MSG_RESULT([yes])
5444 else
5445     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5446         ENABLE_WERROR="TRUE"
5447         PYTHONWARNINGS="error"
5448         AC_MSG_RESULT([yes])
5449     else
5450         AC_MSG_RESULT([no])
5451     fi
5453 AC_SUBST(ENABLE_WERROR)
5454 AC_SUBST(PYTHONWARNINGS)
5456 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5457 dnl ===================================================================
5458 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5459 if test -z "$enable_assert_always_abort"; then
5460    if test "$ENABLE_DEBUG" = TRUE; then
5461        enable_assert_always_abort=yes
5462    else
5463        enable_assert_always_abort=no
5464    fi
5466 if test "$enable_assert_always_abort" = "yes"; then
5467     ASSERT_ALWAYS_ABORT="TRUE"
5468     AC_MSG_RESULT([yes])
5469 else
5470     ASSERT_ALWAYS_ABORT="FALSE"
5471     AC_MSG_RESULT([no])
5473 AC_SUBST(ASSERT_ALWAYS_ABORT)
5475 # Determine whether to use ooenv for the instdir installation
5476 # ===================================================================
5477 if test $_os != "WINNT" -a $_os != "Darwin"; then
5478     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5479     if test "$enable_ooenv" = "no"; then
5480         AC_MSG_RESULT([no])
5481     else
5482         ENABLE_OOENV="TRUE"
5483         AC_MSG_RESULT([yes])
5484     fi
5486 AC_SUBST(ENABLE_OOENV)
5488 if test "$USING_X11" != TRUE; then
5489     # be sure to do not mess with unneeded stuff
5490     test_randr=no
5491     test_xrender=no
5492     test_cups=no
5493     test_dbus=no
5494     build_gstreamer_1_0=no
5495     test_kf5=no
5496     test_qt5=no
5497     test_gtk3_kde5=no
5498     enable_cairo_canvas=no
5501 if test "$OS" = "HAIKU"; then
5502     enable_cairo_canvas=yes
5503     test_kf5=yes
5506 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5507     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!])
5508     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!"
5509     enable_kf5=yes
5512 if test "$test_kf5" = "yes"; then
5513     test_qt5=yes
5516 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5517     if test "$enable_qt5" = "no"; then
5518         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5519     else
5520         enable_qt5=yes
5521     fi
5524 dnl ===================================================================
5525 dnl check for cups support
5526 dnl ===================================================================
5527 ENABLE_CUPS=""
5529 if test "$enable_cups" = "no"; then
5530     test_cups=no
5533 AC_MSG_CHECKING([whether to enable CUPS support])
5534 if test "$test_cups" = "yes"; then
5535     ENABLE_CUPS="TRUE"
5536     AC_MSG_RESULT([yes])
5538     AC_MSG_CHECKING([whether cups support is present])
5539     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5540     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5541     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5542         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5543     fi
5545 else
5546     AC_MSG_RESULT([no])
5549 AC_SUBST(ENABLE_CUPS)
5551 # fontconfig checks
5552 if test "$test_fontconfig" = "yes"; then
5553     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5554     SYSTEM_FONTCONFIG=TRUE
5555     FilterLibs "${FONTCONFIG_LIBS}"
5556     FONTCONFIG_LIBS="${filteredlibs}"
5558 AC_SUBST(FONTCONFIG_CFLAGS)
5559 AC_SUBST(FONTCONFIG_LIBS)
5560 AC_SUBST([SYSTEM_FONTCONFIG])
5562 dnl whether to find & fetch external tarballs?
5563 dnl ===================================================================
5564 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5565    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5566        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5567    else
5568        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5569    fi
5571 if test -z "$TARFILE_LOCATION"; then
5572     if test -d "$SRC_ROOT/src" ; then
5573         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5574         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5575     fi
5576     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5577 else
5578     AbsolutePath "$TARFILE_LOCATION"
5579     PathFormat "${absolute_path}"
5580     TARFILE_LOCATION="${formatted_path}"
5582 AC_SUBST(TARFILE_LOCATION)
5584 AC_MSG_CHECKING([whether we want to fetch tarballs])
5585 if test "$enable_fetch_external" != "no"; then
5586     if test "$with_all_tarballs" = "yes"; then
5587         AC_MSG_RESULT([yes, all of them])
5588         DO_FETCH_TARBALLS="ALL"
5589     else
5590         AC_MSG_RESULT([yes, if we use them])
5591         DO_FETCH_TARBALLS="TRUE"
5592     fi
5593 else
5594     AC_MSG_RESULT([no])
5595     DO_FETCH_TARBALLS=
5597 AC_SUBST(DO_FETCH_TARBALLS)
5599 AC_MSG_CHECKING([whether to build help])
5600 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5601     BUILD_TYPE="$BUILD_TYPE HELP"
5602     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5603     case "$with_help" in
5604     "html")
5605         ENABLE_HTMLHELP=TRUE
5606         SCPDEFS="$SCPDEFS -DWITH_HELP"
5607         AC_MSG_RESULT([HTML])
5608         ;;
5609     "online")
5610         ENABLE_HTMLHELP=TRUE
5611         HELP_ONLINE=TRUE
5612         AC_MSG_RESULT([HTML])
5613         ;;
5614     yes)
5615         SCPDEFS="$SCPDEFS -DWITH_HELP"
5616         AC_MSG_RESULT([yes])
5617         ;;
5618     *)
5619         AC_MSG_ERROR([Unknown --with-help=$with_help])
5620         ;;
5621     esac
5622 else
5623     AC_MSG_RESULT([no])
5625 AC_SUBST([ENABLE_HTMLHELP])
5626 AC_SUBST([HELP_ONLINE])
5628 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5629 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5630     BUILD_TYPE="$BUILD_TYPE HELP"
5631     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5632     case "$with_omindex" in
5633     "server")
5634         ENABLE_HTMLHELP=TRUE
5635         HELP_ONLINE=TRUE
5636         HELP_OMINDEX_PAGE=TRUE
5637         AC_MSG_RESULT([SERVER])
5638         ;;
5639     "noxap")
5640         ENABLE_HTMLHELP=TRUE
5641         HELP_ONLINE=TRUE
5642         HELP_OMINDEX_PAGE=FALSE
5643         AC_MSG_RESULT([NOXAP])
5644         ;;
5645     *)
5646         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5647         ;;
5648     esac
5649 else
5650     HELP_OMINDEX_PAGE=FALSE
5651     AC_MSG_RESULT([no])
5653 AC_SUBST([ENABLE_HTMLHELP])
5654 AC_SUBST([HELP_OMINDEX_PAGE])
5655 AC_SUBST([HELP_ONLINE])
5658 dnl Test whether to include MySpell dictionaries
5659 dnl ===================================================================
5660 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5661 if test "$with_myspell_dicts" = "yes"; then
5662     AC_MSG_RESULT([yes])
5663     WITH_MYSPELL_DICTS=TRUE
5664     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5665     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5666 else
5667     AC_MSG_RESULT([no])
5668     WITH_MYSPELL_DICTS=
5670 AC_SUBST(WITH_MYSPELL_DICTS)
5672 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5673 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5674     if test "$with_system_dicts" = yes; then
5675         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5676     fi
5677     with_system_dicts=no
5680 AC_MSG_CHECKING([whether to use dicts from external paths])
5681 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5682     AC_MSG_RESULT([yes])
5683     SYSTEM_DICTS=TRUE
5684     AC_MSG_CHECKING([for spelling dictionary directory])
5685     if test -n "$with_external_dict_dir"; then
5686         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5687     else
5688         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5689         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5690             DICT_SYSTEM_DIR=file:///usr/share/myspell
5691         fi
5692     fi
5693     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5694     AC_MSG_CHECKING([for hyphenation patterns directory])
5695     if test -n "$with_external_hyph_dir"; then
5696         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5697     else
5698         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5699     fi
5700     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5701     AC_MSG_CHECKING([for thesaurus directory])
5702     if test -n "$with_external_thes_dir"; then
5703         THES_SYSTEM_DIR=file://$with_external_thes_dir
5704     else
5705         THES_SYSTEM_DIR=file:///usr/share/mythes
5706     fi
5707     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5708 else
5709     AC_MSG_RESULT([no])
5710     SYSTEM_DICTS=
5712 AC_SUBST(SYSTEM_DICTS)
5713 AC_SUBST(DICT_SYSTEM_DIR)
5714 AC_SUBST(HYPH_SYSTEM_DIR)
5715 AC_SUBST(THES_SYSTEM_DIR)
5717 dnl ===================================================================
5718 dnl Precompiled headers.
5719 ENABLE_PCH=""
5720 AC_MSG_CHECKING([whether to enable pch feature])
5721 if test -z "$enable_pch"; then
5722     if test "$_os" = "WINNT"; then
5723         # Enabled by default on Windows.
5724         enable_pch=yes
5725     else
5726         enable_pch=no
5727     fi
5729 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5730     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5732 if test "$enable_pch" = "system"; then
5733     ENABLE_PCH="1"
5734     AC_MSG_RESULT([yes (system headers)])
5735 elif test "$enable_pch" = "base"; then
5736     ENABLE_PCH="2"
5737     AC_MSG_RESULT([yes (system and base headers)])
5738 elif test "$enable_pch" = "normal"; then
5739     ENABLE_PCH="3"
5740     AC_MSG_RESULT([yes (normal)])
5741 elif test "$enable_pch" = "full"; then
5742     ENABLE_PCH="4"
5743     AC_MSG_RESULT([yes (full)])
5744 elif test "$enable_pch" = "yes"; then
5745     # Pick a suitable default.
5746     if test "$GCC" = "yes"; then
5747         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5748         # while making the PCHs larger and rebuilds more likely.
5749         ENABLE_PCH="2"
5750         AC_MSG_RESULT([yes (system and base headers)])
5751     else
5752         # With MSVC the highest level makes a significant difference,
5753         # and it was the default when there used to be no PCH levels.
5754         ENABLE_PCH="4"
5755         AC_MSG_RESULT([yes (full)])
5756     fi
5757 elif test "$enable_pch" = "no"; then
5758     AC_MSG_RESULT([no])
5759 else
5760     AC_MSG_ERROR([Unknown value for --enable-pch])
5762 AC_SUBST(ENABLE_PCH)
5763 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5764 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5765     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5766     if test "$CCACHE_BIN" != "not found"; then
5767         AC_MSG_CHECKING([ccache version])
5768         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5769         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5770         AC_MSG_RESULT([$CCACHE_VERSION])
5771         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5772         if test "$CCACHE_NUMVER" -gt "030701"; then
5773             AC_MSG_RESULT([yes])
5774         else
5775             AC_MSG_RESULT([no (not newer than 3.7.1)])
5776             CCACHE_DEPEND_MODE=
5777         fi
5778     fi
5781 PCH_INSTANTIATE_TEMPLATES=
5782 if test -n "$ENABLE_PCH"; then
5783     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5784     save_CFLAGS=$CFLAGS
5785     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5786     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5787     CFLAGS=$save_CFLAGS
5788     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5789         AC_MSG_RESULT(yes)
5790     else
5791         AC_MSG_RESULT(no)
5792     fi
5794 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5796 BUILDING_PCH_WITH_OBJ=
5797 if test -n "$ENABLE_PCH"; then
5798     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5799     save_CFLAGS=$CFLAGS
5800     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5801     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5802     CFLAGS=$save_CFLAGS
5803     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5804         AC_MSG_RESULT(yes)
5805     else
5806         AC_MSG_RESULT(no)
5807     fi
5809 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5811 PCH_CODEGEN=
5812 PCH_NO_CODEGEN=
5813 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5814     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5815     save_CFLAGS=$CFLAGS
5816     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5817     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5818         [
5819         PCH_CODEGEN="-fpch-codegen"
5820         PCH_NO_CODEGEN="-fno-pch-codegen"
5821         ],[])
5822     CFLAGS=$save_CFLAGS
5823     if test -n "$PCH_CODEGEN"; then
5824         AC_MSG_RESULT(yes)
5825     else
5826         AC_MSG_RESULT(no)
5827     fi
5829 AC_SUBST(PCH_CODEGEN)
5830 AC_SUBST(PCH_NO_CODEGEN)
5831 PCH_DEBUGINFO=
5832 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5833     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5834     save_CFLAGS=$CFLAGS
5835     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5836     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5837     CFLAGS=$save_CFLAGS
5838     if test -n "$PCH_DEBUGINFO"; then
5839         AC_MSG_RESULT(yes)
5840     else
5841         AC_MSG_RESULT(no)
5842     fi
5844 AC_SUBST(PCH_DEBUGINFO)
5846 TAB=`printf '\t'`
5848 AC_MSG_CHECKING([the GNU Make version])
5849 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5850 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5851 if test "$_make_longver" -ge "038200"; then
5852     AC_MSG_RESULT([$GNUMAKE $_make_version])
5854 elif test "$_make_longver" -ge "038100"; then
5855     if test "$build_os" = "cygwin"; then
5856         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5857     fi
5858     AC_MSG_RESULT([$GNUMAKE $_make_version])
5860     dnl ===================================================================
5861     dnl Search all the common names for sha1sum
5862     dnl ===================================================================
5863     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5864     if test -z "$SHA1SUM"; then
5865         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5866     elif test "$SHA1SUM" = "openssl"; then
5867         SHA1SUM="openssl sha1"
5868     fi
5869     AC_MSG_CHECKING([for GNU Make bug 20033])
5870     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5871     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5872 A := \$(wildcard *.a)
5874 .PHONY: all
5875 all: \$(A:.a=.b)
5876 <TAB>@echo survived bug20033.
5878 .PHONY: setup
5879 setup:
5880 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5882 define d1
5883 @echo lala \$(1)
5884 @sleep 1
5885 endef
5887 define d2
5888 @echo tyty \$(1)
5889 @sleep 1
5890 endef
5892 %.b : %.a
5893 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5894 <TAB>\$(call d1,\$(CHECKSUM)),\
5895 <TAB>\$(call d2,\$(CHECKSUM)))
5897     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5898         no_parallelism_make="YES"
5899         AC_MSG_RESULT([yes, disable parallelism])
5900     else
5901         AC_MSG_RESULT([no, keep parallelism enabled])
5902     fi
5903     rm -rf $TESTGMAKEBUG20033
5904 else
5905     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5908 # find if gnumake support file function
5909 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5910 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5911 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5912     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5914 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5915 \$(file >test.txt,Success )
5917 .PHONY: all
5918 all:
5919 <TAB>@cat test.txt
5922 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5923 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5924     HAVE_GNUMAKE_FILE_FUNC=TRUE
5925     AC_MSG_RESULT([yes])
5926 else
5927     AC_MSG_RESULT([no])
5929 rm -rf $TESTGMAKEFILEFUNC
5930 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5932 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5933 STALE_MAKE=
5934 if test "$_make_ver_check" = ""; then
5935    STALE_MAKE=TRUE
5938 HAVE_LD_HASH_STYLE=FALSE
5939 WITH_LINKER_HASH_STYLE=
5940 AC_MSG_CHECKING([for --hash-style gcc linker support])
5941 if test "$GCC" = "yes"; then
5942     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5943         hash_styles="gnu sysv"
5944     elif test "$with_linker_hash_style" = "no"; then
5945         hash_styles=
5946     else
5947         hash_styles="$with_linker_hash_style"
5948     fi
5950     for hash_style in $hash_styles; do
5951         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5952         hash_style_ldflags_save=$LDFLAGS
5953         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5955         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5956             [
5957 #include <stdio.h>
5958             ],[
5959 printf ("");
5960             ])],
5961             [
5962                   HAVE_LD_HASH_STYLE=TRUE
5963                   WITH_LINKER_HASH_STYLE=$hash_style
5964             ],
5965             [HAVE_LD_HASH_STYLE=FALSE],
5966             [HAVE_LD_HASH_STYLE=FALSE])
5967         LDFLAGS=$hash_style_ldflags_save
5968     done
5970     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5971         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5972     else
5973         AC_MSG_RESULT( no )
5974     fi
5975     LDFLAGS=$hash_style_ldflags_save
5976 else
5977     AC_MSG_RESULT( no )
5979 AC_SUBST(HAVE_LD_HASH_STYLE)
5980 AC_SUBST(WITH_LINKER_HASH_STYLE)
5982 dnl ===================================================================
5983 dnl Check whether there's a Perl version available.
5984 dnl ===================================================================
5985 if test -z "$with_perl_home"; then
5986     AC_PATH_PROG(PERL, perl)
5987 else
5988     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5989     _perl_path="$with_perl_home/bin/perl"
5990     if test -x "$_perl_path"; then
5991         PERL=$_perl_path
5992     else
5993         AC_MSG_ERROR([$_perl_path not found])
5994     fi
5997 dnl ===================================================================
5998 dnl Testing for Perl version 5 or greater.
5999 dnl $] is the Perl version variable, it is returned as an integer
6000 dnl ===================================================================
6001 if test "$PERL"; then
6002     AC_MSG_CHECKING([the Perl version])
6003     ${PERL} -e "exit($]);"
6004     _perl_version=$?
6005     if test "$_perl_version" -lt 5; then
6006         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6007     fi
6008     AC_MSG_RESULT([Perl $_perl_version])
6009 else
6010     AC_MSG_ERROR([Perl not found, install Perl 5])
6013 dnl ===================================================================
6014 dnl Testing for required Perl modules
6015 dnl ===================================================================
6017 AC_MSG_CHECKING([for required Perl modules])
6018 perl_use_string="use Cwd ; use Digest::MD5"
6019 if test "$_os" = "WINNT"; then
6020     if test -n "$PKGFORMAT"; then
6021         for i in $PKGFORMAT; do
6022             case "$i" in
6023             msi)
6024                 # for getting fonts versions to use in MSI
6025                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6026                 ;;
6027             esac
6028         done
6029     fi
6031 if test "$with_system_hsqldb" = "yes"; then
6032     perl_use_string="$perl_use_string ; use Archive::Zip"
6034 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6035     # OpenSSL needs that to build
6036     perl_use_string="$perl_use_string ; use FindBin"
6038 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6039     AC_MSG_RESULT([all modules found])
6040 else
6041     AC_MSG_RESULT([failed to find some modules])
6042     # Find out which modules are missing.
6043     for i in $perl_use_string; do
6044         if test "$i" != "use" -a "$i" != ";"; then
6045             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6046                 missing_perl_modules="$missing_perl_modules $i"
6047             fi
6048         fi
6049     done
6050     AC_MSG_ERROR([
6051     The missing Perl modules are: $missing_perl_modules
6052     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6055 dnl ===================================================================
6056 dnl Check for pkg-config
6057 dnl ===================================================================
6058 if test "$_os" != "WINNT"; then
6059     PKG_PROG_PKG_CONFIG
6062 if test "$_os" != "WINNT"; then
6064     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6065     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6066     # explicitly. Or put /path/to/compiler in PATH yourself.
6068     # Use wrappers for LTO
6069     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6070         AC_CHECK_TOOL(AR,gcc-ar)
6071         AC_CHECK_TOOL(NM,gcc-nm)
6072         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6073     else
6074         AC_CHECK_TOOL(AR,ar)
6075         AC_CHECK_TOOL(NM,nm)
6076         AC_CHECK_TOOL(RANLIB,ranlib)
6077     fi
6078     AC_CHECK_TOOL(OBJDUMP,objdump)
6079     AC_CHECK_TOOL(READELF,readelf)
6080     AC_CHECK_TOOL(STRIP,strip)
6081     if test "$_os" = "WINNT"; then
6082         AC_CHECK_TOOL(DLLTOOL,dlltool)
6083         AC_CHECK_TOOL(WINDRES,windres)
6084     fi
6086 AC_SUBST(AR)
6087 AC_SUBST(DLLTOOL)
6088 AC_SUBST(NM)
6089 AC_SUBST(OBJDUMP)
6090 AC_SUBST(PKG_CONFIG)
6091 AC_SUBST(RANLIB)
6092 AC_SUBST(READELF)
6093 AC_SUBST(STRIP)
6094 AC_SUBST(WINDRES)
6096 dnl ===================================================================
6097 dnl pkg-config checks on macOS
6098 dnl ===================================================================
6100 if test $_os = Darwin; then
6101     AC_MSG_CHECKING([for bogus pkg-config])
6102     if test -n "$PKG_CONFIG"; then
6103         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6104             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6105         else
6106             if test "$enable_bogus_pkg_config" = "yes"; then
6107                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6108             else
6109                 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.])
6110             fi
6111         fi
6112     else
6113         AC_MSG_RESULT([no, good])
6114     fi
6117 find_csc()
6119     # Return value: $csctest
6121     unset csctest
6123     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6124     if test -n "$regvalue"; then
6125         csctest=$regvalue
6126         return
6127     fi
6130 find_al()
6132     # Return value: $altest
6134     unset altest
6136     # We need this check to detect 4.6.1 or above.
6137     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6138         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6139         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6140             altest=$regvalue
6141             return
6142         fi
6143     done
6145     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6146         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6147         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6148             altest=$regvalue
6149             return
6150         fi
6151     done
6154 find_dotnetsdk46()
6156     unset frametest
6158     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6159         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6160         if test -n "$regvalue"; then
6161             frametest=$regvalue
6162             return
6163         fi
6164     done
6167 find_winsdk_version()
6169     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6170     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6172     unset winsdktest winsdkbinsubdir winsdklibsubdir
6174     case "$1" in
6175     8.0|8.0A)
6176         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6177         if test -n "$regvalue"; then
6178             winsdktest=$regvalue
6179             winsdklibsubdir=win8
6180             return
6181         fi
6182         ;;
6183     8.1|8.1A)
6184         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6185         if test -n "$regvalue"; then
6186             winsdktest=$regvalue
6187             winsdklibsubdir=winv6.3
6188             return
6189         fi
6190         ;;
6191     10.0)
6192         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6193         if test -n "$regvalue"; then
6194             winsdktest=$regvalue
6195             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6196             if test -n "$regvalue"; then
6197                 winsdkbinsubdir="$regvalue".0
6198                 winsdklibsubdir=$winsdkbinsubdir
6199                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6200                 local tmppath_unix=$(cygpath -u "$tmppath")
6201                 # test exist the SDK path
6202                 if test -d "$tmppath_unix"; then
6203                    # when path is convertible to a short path then path is okay
6204                    cygpath -d "$tmppath" >/dev/null 2>&1
6205                    if test $? -ne 0; then
6206                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6207                    fi
6208                 else
6209                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6210                 fi
6211             fi
6212             return
6213         fi
6214         ;;
6215     esac
6218 find_winsdk()
6220     # Return value: From find_winsdk_version
6222     unset winsdktest
6224     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6225         find_winsdk_version $ver
6226         if test -n "$winsdktest"; then
6227             return
6228         fi
6229     done
6232 find_msms()
6234     # Return value: $msmdir
6236     AC_MSG_CHECKING([for MSVC merge modules directory])
6237     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6238     local my_msm_dir
6240     case "$VCVER" in
6241         160)
6242         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6243         ;;
6244     esac
6245     for f in $my_msm_files; do
6246         echo "$as_me:$LINENO: searching for $f" >&5
6247     done
6249     msmdir=
6250     for ver in 14.0 15.0; do
6251         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6252         if test -n "$regvalue"; then
6253             for f in ${my_msm_files}; do
6254                 if test -e "$regvalue/${f}"; then
6255                     msmdir=$regvalue
6256                     break
6257                 fi
6258             done
6259         fi
6260     done
6261     dnl Is the following fallback really necessary, or was it added in response
6262     dnl to never having started Visual Studio on a given machine, so the
6263     dnl registry keys checked above had presumably not yet been created?
6264     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6265     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6266     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6267     dnl expanding to "C:\Program Files\Common Files"), which would need
6268     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6269     dnl obtain its value from cygwin:
6270     if test -z "$msmdir"; then
6271         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6272         for f in ${my_msm_files}; do
6273             if test -e "$my_msm_dir/${f}"; then
6274                 msmdir=$my_msm_dir
6275             fi
6276         done
6277     fi
6279     dnl Starting from MSVC 15.0, merge modules are located in different directory
6280     case "$VCVER" in
6281     160)
6282         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6283             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6284             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6285             for f in ${my_msm_files}; do
6286                 if test -e "$my_msm_dir/${f}"; then
6287                     msmdir=$my_msm_dir
6288                     break
6289                 fi
6290             done
6291         done
6292         ;;
6293     esac
6295     if test -n "$msmdir"; then
6296         msmdir=`cygpath -m "$msmdir"`
6297         AC_MSG_RESULT([$msmdir])
6298     else
6299         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6300             AC_MSG_FAILURE([not found])
6301         else
6302             AC_MSG_WARN([not found (check config.log)])
6303             add_warning "MSM none of ${my_msm_files} found"
6304         fi
6305     fi
6308 find_msvc_x64_dlls()
6310     # Return value: $msvcdllpath, $msvcdlls
6312     AC_MSG_CHECKING([for MSVC x64 DLL path])
6313     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6314     case "$VCVER" in
6315     160)
6316         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6317             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6318             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6319                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6320                 break
6321             fi
6322             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6323             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6324                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6325                 break
6326             fi
6327         done
6328         ;;
6329     esac
6330     AC_MSG_RESULT([$msvcdllpath])
6331     AC_MSG_CHECKING([for MSVC x64 DLLs])
6332     msvcdlls="msvcp140.dll vcruntime140.dll"
6333     for dll in $msvcdlls; do
6334         if ! test -f "$msvcdllpath/$dll"; then
6335             AC_MSG_FAILURE([missing $dll])
6336         fi
6337     done
6338     AC_MSG_RESULT([found all ($msvcdlls)])
6341 dnl =========================================
6342 dnl Check for the Windows  SDK.
6343 dnl =========================================
6344 if test "$_os" = "WINNT"; then
6345     AC_MSG_CHECKING([for Windows SDK])
6346     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6347         find_winsdk
6348         WINDOWS_SDK_HOME=$winsdktest
6350         # normalize if found
6351         if test -n "$WINDOWS_SDK_HOME"; then
6352             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6353             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6354         fi
6356         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6357     fi
6359     if test -n "$WINDOWS_SDK_HOME"; then
6360         # Remove a possible trailing backslash
6361         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6363         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6364              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6365              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6366             have_windows_sdk_headers=yes
6367         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6368              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6369              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6370             have_windows_sdk_headers=yes
6371         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6372              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6373              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6374             have_windows_sdk_headers=yes
6375         else
6376             have_windows_sdk_headers=no
6377         fi
6379         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6380             have_windows_sdk_libs=yes
6381         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6382             have_windows_sdk_libs=yes
6383         else
6384             have_windows_sdk_libs=no
6385         fi
6387         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6388             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6389 the  Windows SDK are installed.])
6390         fi
6391     fi
6393     if test -z "$WINDOWS_SDK_HOME"; then
6394         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6395     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6396         WINDOWS_SDK_VERSION=80
6397         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6398     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6399         WINDOWS_SDK_VERSION=81
6400         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6401     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6402         WINDOWS_SDK_VERSION=10
6403         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6404     else
6405         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6406     fi
6407     PathFormat "$WINDOWS_SDK_HOME"
6408     WINDOWS_SDK_HOME="$formatted_path"
6409     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6410     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6411         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6412         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6413             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6414         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6415             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6416         fi
6417     fi
6419     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6420     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6421     dnl but not in v8.0), so allow this to be overridden with a
6422     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6423     dnl and configuration error if no WiLangId.vbs is found would arguably be
6424     dnl better, but I do not know under which conditions exactly it is needed by
6425     dnl msiglobal.pm:
6426     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6427         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6428         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6429         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6430             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6431             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6432         fi
6433         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6434             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6435             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6436         fi
6437         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6438             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6439             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6440         fi
6441     fi
6442     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6443         if test -n "$with_package_format" -a "$with_package_format" != no; then
6444             for i in "$with_package_format"; do
6445                 if test "$i" = "msi"; then
6446                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6447                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6448                     fi
6449                 fi
6450             done
6451         fi
6452     fi
6454 AC_SUBST(WINDOWS_SDK_HOME)
6455 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6456 AC_SUBST(WINDOWS_SDK_VERSION)
6457 AC_SUBST(WINDOWS_SDK_WILANGID)
6459 if test "$build_os" = "cygwin"; then
6460     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6461     dnl dir, it also determines that dir's path w/o an arch segment if any,
6462     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6463     AC_MSG_CHECKING([for midl.exe])
6465     find_winsdk
6466     if test -n "$winsdkbinsubdir" \
6467         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6468     then
6469         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6470         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6471     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6472         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6473         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6474     elif test -f "$winsdktest/Bin/midl.exe"; then
6475         MIDL_PATH=$winsdktest/Bin
6476         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6477     fi
6478     if test ! -f "$MIDL_PATH/midl.exe"; then
6479         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6480     else
6481         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6482     fi
6484     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6485     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6487     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6488          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6489          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6490          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6491     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6492          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6493          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6494          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6495     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6496          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6497          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6498          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6499     else
6500         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6501     fi
6503     dnl Check csc.exe
6504     AC_MSG_CHECKING([for csc.exe])
6505     find_csc
6506     if test -f "$csctest/csc.exe"; then
6507         CSC_PATH="$csctest"
6508     fi
6509     if test ! -f "$CSC_PATH/csc.exe"; then
6510         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6511     else
6512         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6513     fi
6515     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6517     dnl Check al.exe
6518     AC_MSG_CHECKING([for al.exe])
6519     find_winsdk
6520     if test -n "$winsdkbinsubdir" \
6521         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6522     then
6523         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6524     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6525         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6526     elif test -f "$winsdktest/Bin/al.exe"; then
6527         AL_PATH="$winsdktest/Bin"
6528     fi
6530     if test -z "$AL_PATH"; then
6531         find_al
6532         if test -f "$altest/bin/al.exe"; then
6533             AL_PATH="$altest/bin"
6534         elif test -f "$altest/al.exe"; then
6535             AL_PATH="$altest"
6536         fi
6537     fi
6538     if test ! -f "$AL_PATH/al.exe"; then
6539         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6540     else
6541         AC_MSG_RESULT([$AL_PATH/al.exe])
6542     fi
6544     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6546     dnl Check mscoree.lib / .NET Framework dir
6547     AC_MSG_CHECKING(.NET Framework)
6548     find_dotnetsdk46
6549     PathFormat "$frametest"
6550     frametest="$formatted_path"
6551     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6552         DOTNET_FRAMEWORK_HOME="$frametest"
6553     else
6554         find_winsdk
6555         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6556             DOTNET_FRAMEWORK_HOME="$winsdktest"
6557         fi
6558     fi
6559     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
6560         AC_MSG_ERROR([mscoree.lib not found])
6561     fi
6562     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6564     PathFormat "$MIDL_PATH"
6565     MIDL_PATH="$formatted_path"
6567     PathFormat "$AL_PATH"
6568     AL_PATH="$formatted_path"
6570     PathFormat "$DOTNET_FRAMEWORK_HOME"
6571     DOTNET_FRAMEWORK_HOME="$formatted_path"
6573     PathFormat "$CSC_PATH"
6574     CSC_PATH="$formatted_path"
6577 dnl ===================================================================
6578 dnl Testing for C++ compiler and version...
6579 dnl ===================================================================
6581 if test "$_os" != "WINNT"; then
6582     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6583     save_CXXFLAGS=$CXXFLAGS
6584     AC_PROG_CXX
6585     CXXFLAGS=$save_CXXFLAGS
6586     if test -z "$CXX_BASE"; then
6587         CXX_BASE=`first_arg_basename "$CXX"`
6588     fi
6591 dnl check for GNU C++ compiler version
6592 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6593     AC_MSG_CHECKING([the GNU C++ compiler version])
6595     _gpp_version=`$CXX -dumpversion`
6596     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6598     if test "$_gpp_majmin" -lt "700"; then
6599         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6600     else
6601         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6602     fi
6604     dnl see https://code.google.com/p/android/issues/detail?id=41770
6605         glibcxx_threads=no
6606         AC_LANG_PUSH([C++])
6607         AC_REQUIRE_CPP
6608         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6609         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6610             #include <bits/c++config.h>]],[[
6611             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6612             && !defined(_GLIBCXX__PTHREADS) \
6613             && !defined(_GLIBCXX_HAS_GTHREADS)
6614             choke me
6615             #endif
6616         ]])],[AC_MSG_RESULT([yes])
6617         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6618         AC_LANG_POP([C++])
6619         if test $glibcxx_threads = yes; then
6620             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6621         fi
6623 AC_SUBST(BOOST_CXXFLAGS)
6626 # prefx CXX with ccache if needed
6628 if test "$CCACHE" != ""; then
6629     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6630     AC_LANG_PUSH([C++])
6631     save_CXXFLAGS=$CXXFLAGS
6632     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6633     dnl an empty program will do, we're checking the compiler flags
6634     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6635                       [use_ccache=yes], [use_ccache=no])
6636     if test $use_ccache = yes; then
6637         AC_MSG_RESULT([yes])
6638     else
6639         CXX="$CCACHE $CXX"
6640         CXX_BASE="ccache $CXX_BASE"
6641         AC_MSG_RESULT([no])
6642     fi
6643     CXXFLAGS=$save_CXXFLAGS
6644     AC_LANG_POP([C++])
6647 dnl ===================================================================
6648 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6649 dnl ===================================================================
6651 if test "$_os" != "WINNT"; then
6652     AC_PROG_CXXCPP
6654     dnl Check whether there's a C pre-processor.
6655     AC_PROG_CPP
6659 dnl ===================================================================
6660 dnl Find integral type sizes and alignments
6661 dnl ===================================================================
6663 if test "$_os" != "WINNT"; then
6665     AC_CHECK_SIZEOF(long)
6666     AC_CHECK_SIZEOF(short)
6667     AC_CHECK_SIZEOF(int)
6668     AC_CHECK_SIZEOF(long long)
6669     AC_CHECK_SIZEOF(double)
6670     AC_CHECK_SIZEOF(void*)
6672     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6673     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6674     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6675     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6676     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6678     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6679     m4_pattern_allow([AC_CHECK_ALIGNOF])
6680     m4_ifdef([AC_CHECK_ALIGNOF],
6681         [
6682             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6683             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6684             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6685             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6686         ],
6687         [
6688             case "$_os-$host_cpu" in
6689             Linux-i686)
6690                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6691                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6692                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6693                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6694                 ;;
6695             Linux-x86_64)
6696                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6697                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6698                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6699                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6700                 ;;
6701             *)
6702                 if test -z "$ac_cv_alignof_short" -o \
6703                         -z "$ac_cv_alignof_int" -o \
6704                         -z "$ac_cv_alignof_long" -o \
6705                         -z "$ac_cv_alignof_double"; then
6706                    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.])
6707                 fi
6708                 ;;
6709             esac
6710         ])
6712     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6713     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6714     if test $ac_cv_sizeof_long -eq 8; then
6715         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6716     elif test $ac_cv_sizeof_double -eq 8; then
6717         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6718     else
6719         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6720     fi
6722     dnl Check for large file support
6723     AC_SYS_LARGEFILE
6724     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6725         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6726     fi
6727     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6728         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6729     fi
6730 else
6731     # Hardcode for MSVC
6732     SAL_TYPES_SIZEOFSHORT=2
6733     SAL_TYPES_SIZEOFINT=4
6734     SAL_TYPES_SIZEOFLONG=4
6735     SAL_TYPES_SIZEOFLONGLONG=8
6736     if test $WIN_HOST_BITS -eq 32; then
6737         SAL_TYPES_SIZEOFPOINTER=4
6738     else
6739         SAL_TYPES_SIZEOFPOINTER=8
6740     fi
6741     SAL_TYPES_ALIGNMENT2=2
6742     SAL_TYPES_ALIGNMENT4=4
6743     SAL_TYPES_ALIGNMENT8=8
6744     LFS_CFLAGS=''
6746 AC_SUBST(LFS_CFLAGS)
6748 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6749 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6750 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6751 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6752 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6753 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6754 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6755 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6757 dnl ===================================================================
6758 dnl Check whether to enable runtime optimizations
6759 dnl ===================================================================
6760 ENABLE_RUNTIME_OPTIMIZATIONS=
6761 AC_MSG_CHECKING([whether to enable runtime optimizations])
6762 if test -z "$enable_runtime_optimizations"; then
6763     for i in $CC; do
6764         case $i in
6765         -fsanitize=*)
6766             enable_runtime_optimizations=no
6767             break
6768             ;;
6769         esac
6770     done
6772 if test "$enable_runtime_optimizations" != no; then
6773     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6774     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6775     AC_MSG_RESULT([yes])
6776 else
6777     AC_MSG_RESULT([no])
6779 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6781 dnl ===================================================================
6782 dnl Check if valgrind headers are available
6783 dnl ===================================================================
6784 ENABLE_VALGRIND=
6785 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6786     prev_cppflags=$CPPFLAGS
6787     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6788     # or where does it come from?
6789     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6790     AC_CHECK_HEADER([valgrind/valgrind.h],
6791         [ENABLE_VALGRIND=TRUE])
6792     CPPFLAGS=$prev_cppflags
6794 AC_SUBST([ENABLE_VALGRIND])
6795 if test -z "$ENABLE_VALGRIND"; then
6796     if test "$with_valgrind" = yes; then
6797         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6798     fi
6799     VALGRIND_CFLAGS=
6801 AC_SUBST([VALGRIND_CFLAGS])
6804 dnl ===================================================================
6805 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6806 dnl ===================================================================
6808 # We need at least the sys/sdt.h include header.
6809 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6810 if test "$SDT_H_FOUND" = "TRUE"; then
6811     # Found sys/sdt.h header, now make sure the c++ compiler works.
6812     # Old g++ versions had problems with probes in constructors/destructors.
6813     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6814     AC_LANG_PUSH([C++])
6815     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6816     #include <sys/sdt.h>
6817     class ProbeClass
6818     {
6819     private:
6820       int& ref;
6821       const char *name;
6823     public:
6824       ProbeClass(int& v, const char *n) : ref(v), name(n)
6825       {
6826         DTRACE_PROBE2(_test_, cons, name, ref);
6827       }
6829       void method(int min)
6830       {
6831         DTRACE_PROBE3(_test_, meth, name, ref, min);
6832         ref -= min;
6833       }
6835       ~ProbeClass()
6836       {
6837         DTRACE_PROBE2(_test_, dest, name, ref);
6838       }
6839     };
6840     ]],[[
6841     int i = 64;
6842     DTRACE_PROBE1(_test_, call, i);
6843     ProbeClass inst = ProbeClass(i, "call");
6844     inst.method(24);
6845     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6846           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6847     AC_LANG_POP([C++])
6849 AC_CONFIG_HEADERS([config_host/config_probes.h])
6851 dnl ===================================================================
6852 dnl GCC features
6853 dnl ===================================================================
6854 HAVE_GCC_STACK_CLASH_PROTECTION=
6855 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6856     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6857     save_CFLAGS=$CFLAGS
6858     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6859     AC_LINK_IFELSE(
6860         [AC_LANG_PROGRAM(, [[return 0;]])],
6861         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6862         [AC_MSG_RESULT([no])])
6863     CFLAGS=$save_CFLAGS
6865     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6866     save_CFLAGS=$CFLAGS
6867     CFLAGS="$CFLAGS -Werror -mno-avx"
6868     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6869     CFLAGS=$save_CFLAGS
6870     if test "$HAVE_GCC_AVX" = "TRUE"; then
6871         AC_MSG_RESULT([yes])
6872     else
6873         AC_MSG_RESULT([no])
6874     fi
6876     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6877     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6878     int v = 0;
6879     if (__sync_add_and_fetch(&v, 1) != 1 ||
6880         __sync_sub_and_fetch(&v, 1) != 0)
6881         return 1;
6882     __sync_synchronize();
6883     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6884         v != 1)
6885         return 1;
6886     return 0;
6887 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6888     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6889         AC_MSG_RESULT([yes])
6890         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6891     else
6892         AC_MSG_RESULT([no])
6893     fi
6895     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6896     AC_LANG_PUSH([C++])
6897     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6898             #include <cstddef>
6899             #include <cxxabi.h>
6900             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6901         ])], [
6902             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6903             AC_MSG_RESULT([yes])
6904         ], [AC_MSG_RESULT([no])])
6905     AC_LANG_POP([C++])
6907     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6908     AC_LANG_PUSH([C++])
6909     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6910             #include <cstddef>
6911             #include <cxxabi.h>
6912             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6913         ])], [
6914             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6915             AC_MSG_RESULT([yes])
6916         ], [AC_MSG_RESULT([no])])
6917     AC_LANG_POP([C++])
6919     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6920     AC_LANG_PUSH([C++])
6921     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6922             #include <cxxabi.h>
6923             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6924         ])], [
6925             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6926             AC_MSG_RESULT([yes])
6927         ], [AC_MSG_RESULT([no])])
6928     AC_LANG_POP([C++])
6930     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6931     AC_LANG_PUSH([C++])
6932     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6933             #include <cstddef>
6934             #include <cxxabi.h>
6935             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6936         ])], [
6937             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6938             AC_MSG_RESULT([yes])
6939         ], [AC_MSG_RESULT([no])])
6940     AC_LANG_POP([C++])
6942     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6943     AC_LANG_PUSH([C++])
6944     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6945             #include <cstddef>
6946             #include <cxxabi.h>
6947             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6948         ])], [
6949             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6950             AC_MSG_RESULT([yes])
6951         ], [AC_MSG_RESULT([no])])
6952     AC_LANG_POP([C++])
6954     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6955     AC_LANG_PUSH([C++])
6956     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6957             #include <cxxabi.h>
6958             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6959         ])], [
6960             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6961             AC_MSG_RESULT([yes])
6962         ], [AC_MSG_RESULT([no])])
6963     AC_LANG_POP([C++])
6965     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6966     AC_LANG_PUSH([C++])
6967     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6968             #include <cxxabi.h>
6969             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6970         ])], [
6971             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6972             AC_MSG_RESULT([yes])
6973         ], [AC_MSG_RESULT([no])])
6974     AC_LANG_POP([C++])
6976     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6977     AC_LANG_PUSH([C++])
6978     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6979             #include <cxxabi.h>
6980             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6981         ])], [
6982             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6983             AC_MSG_RESULT([yes])
6984         ], [AC_MSG_RESULT([no])])
6985     AC_LANG_POP([C++])
6987     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6988     AC_LANG_PUSH([C++])
6989     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6990             #include <cstddef>
6991             #include <cxxabi.h>
6992             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6993         ])], [
6994             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6995             AC_MSG_RESULT([yes])
6996         ], [AC_MSG_RESULT([no])])
6997     AC_LANG_POP([C++])
6999     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7000     AC_LANG_PUSH([C++])
7001     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7002             #include <cstddef>
7003             #include <cxxabi.h>
7004             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7005         ])], [
7006             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7007             AC_MSG_RESULT([yes])
7008         ], [AC_MSG_RESULT([no])])
7009     AC_LANG_POP([C++])
7012 AC_SUBST(HAVE_GCC_AVX)
7013 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7014 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7016 dnl ===================================================================
7017 dnl Identify the C++ library
7018 dnl ===================================================================
7020 AC_MSG_CHECKING([what the C++ library is])
7021 AC_LANG_PUSH([C++])
7022 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7023 #include <utility>
7024 #ifndef __GLIBCXX__
7025 foo bar
7026 #endif
7027 ]])],
7028     [CPP_LIBRARY=GLIBCXX
7029      cpp_library_name="GNU libstdc++"
7030     ],
7031     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7032 #include <utility>
7033 #ifndef _LIBCPP_VERSION
7034 foo bar
7035 #endif
7036 ]])],
7037     [CPP_LIBRARY=LIBCPP
7038      cpp_library_name="LLVM libc++"
7039      AC_DEFINE([HAVE_LIBCXX])
7040     ],
7041     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7042 #include <utility>
7043 #ifndef _MSC_VER
7044 foo bar
7045 #endif
7046 ]])],
7047     [CPP_LIBRARY=MSVCRT
7048      cpp_library_name="Microsoft"
7049     ],
7050     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7051 AC_MSG_RESULT([$cpp_library_name])
7052 AC_LANG_POP([C++])
7054 dnl ===================================================================
7055 dnl Check for gperf
7056 dnl ===================================================================
7057 AC_PATH_PROG(GPERF, gperf)
7058 if test -z "$GPERF"; then
7059     AC_MSG_ERROR([gperf not found but needed. Install it.])
7061 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7062     GPERF=`cygpath -m $GPERF`
7064 AC_MSG_CHECKING([whether gperf is new enough])
7065 my_gperf_ver1=$($GPERF --version | head -n 1)
7066 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7067 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7068 if test "$my_gperf_ver3" -ge 301; then
7069     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7070 else
7071     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7073 AC_SUBST(GPERF)
7075 dnl ===================================================================
7076 dnl Check for system libcmis
7077 dnl ===================================================================
7078 # libcmis requires curl and we can't build curl for iOS
7079 if test $_os != iOS; then
7080     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7081     ENABLE_LIBCMIS=TRUE
7082 else
7083     ENABLE_LIBCMIS=
7085 AC_SUBST(ENABLE_LIBCMIS)
7087 dnl ===================================================================
7088 dnl C++11
7089 dnl ===================================================================
7091 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7092 CXXFLAGS_CXX11=
7093 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7094     if test "$with_latest_c__" = yes; then
7095         CXXFLAGS_CXX11=-std:c++latest
7096     else
7097         CXXFLAGS_CXX11=-std:c++17
7098     fi
7099     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7100 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7101     my_flags='-std=c++17 -std=c++1z'
7102     if test "$with_latest_c__" = yes; then
7103         my_flags="-std=c++20 -std=c++2a $my_flags"
7104     fi
7105     for flag in $my_flags; do
7106         if test "$COM" = MSC; then
7107             flag="-Xclang $flag"
7108         fi
7109         save_CXXFLAGS=$CXXFLAGS
7110         CXXFLAGS="$CXXFLAGS $flag -Werror"
7111         if test "$SYSTEM_LIBCMIS" = TRUE; then
7112             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7113         fi
7114         AC_LANG_PUSH([C++])
7115         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7116             #include <algorithm>
7117             #include <functional>
7118             #include <vector>
7120             #if defined SYSTEM_LIBCMIS
7121             // See ucb/source/ucp/cmis/auth_provider.hxx:
7122             #if !defined __clang__
7123             #pragma GCC diagnostic push
7124             #pragma GCC diagnostic ignored "-Wdeprecated"
7125             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7126             #endif
7127             #include <libcmis/libcmis.hxx>
7128             #if !defined __clang__
7129             #pragma GCC diagnostic pop
7130             #endif
7131             #endif
7133             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7134                 std::sort(v.begin(), v.end(), fn);
7135             }
7136             ]])],[CXXFLAGS_CXX11=$flag])
7137         AC_LANG_POP([C++])
7138         CXXFLAGS=$save_CXXFLAGS
7139         if test -n "$CXXFLAGS_CXX11"; then
7140             break
7141         fi
7142     done
7144 if test -n "$CXXFLAGS_CXX11"; then
7145     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7146 else
7147     AC_MSG_ERROR(no)
7149 AC_SUBST(CXXFLAGS_CXX11)
7151 if test "$GCC" = "yes"; then
7152     save_CXXFLAGS=$CXXFLAGS
7153     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7154     CHECK_L_ATOMIC
7155     CXXFLAGS=$save_CXXFLAGS
7156     AC_SUBST(ATOMIC_LIB)
7159 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7160 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7161 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7162 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7163 dnl again towards 4.7.2:
7164 if test $CPP_LIBRARY = GLIBCXX; then
7165     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7166     AC_LANG_PUSH([C++])
7167     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7168 #include <list>
7169 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7170     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7171     //   GCC 4.7.0: 20120322
7172     //   GCC 4.7.1: 20120614
7173     // and using a range check is not possible as the mapping between
7174     // __GLIBCXX__ values and GCC versions is not monotonic
7175 /* ok */
7176 #else
7177 abi broken
7178 #endif
7179         ]])], [AC_MSG_RESULT(no, ok)],
7180         [AC_MSG_ERROR(yes)])
7181     AC_LANG_POP([C++])
7184 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7185 save_CXXFLAGS=$CXXFLAGS
7186 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7187 AC_LANG_PUSH([C++])
7189 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7190 #include <stddef.h>
7192 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7194 namespace
7196         struct b
7197         {
7198                 int i;
7199                 int j;
7200         };
7202 ]], [[
7203 struct a
7205         int i;
7206         int j;
7208 a thinga[]={{0,0}, {1,1}};
7209 b thingb[]={{0,0}, {1,1}};
7210 size_t i = sizeof(sal_n_array_size(thinga));
7211 size_t j = sizeof(sal_n_array_size(thingb));
7212 return !(i != 0 && j != 0);
7214     ], [ AC_MSG_RESULT(yes) ],
7215     [ AC_MSG_ERROR(no)])
7216 AC_LANG_POP([C++])
7217 CXXFLAGS=$save_CXXFLAGS
7219 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7220 if test "$GCC" = yes; then
7221     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7222     AC_LANG_PUSH([C++])
7223     save_CXXFLAGS=$CXXFLAGS
7224     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7225     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7226     CXXFLAGS=$save_CXXFLAGS
7227     AC_LANG_POP([C++])
7228     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7229         AC_MSG_RESULT([yes])
7230     else
7231         AC_MSG_RESULT([no])
7232     fi
7234 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7236 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7237 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7238 dnl from consteval constructor initializing const variable":
7239 AC_LANG_PUSH([C++])
7240 save_CXXFLAGS=$CXXFLAGS
7241 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7242 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7243         struct S {
7244             consteval S() { i = 1; }
7245             int i = 0;
7246         };
7247         S const s;
7248     ], [
7249         return (s.i == 1) ? 0 : 1;
7250     ])], [
7251         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7252         AC_MSG_RESULT([yes])
7253     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7254 CXXFLAGS=$save_CXXFLAGS
7255 AC_LANG_POP([C++])
7257 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7258 AC_LANG_PUSH([C++])
7259 save_CXXFLAGS=$CXXFLAGS
7260 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7261 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7262         #include <algorithm>
7263         #include <initializer_list>
7264         #include <vector>
7265         template<typename T> class S {
7266         private:
7267             std::vector<T> v_;
7268         public:
7269             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7270         };
7271         constinit S<int> s{3, 2, 1};
7272     ])], [
7273         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7274         AC_MSG_RESULT([yes])
7275     ], [AC_MSG_RESULT([no])])
7276 CXXFLAGS=$save_CXXFLAGS
7277 AC_LANG_POP([C++])
7279 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7280 AC_LANG_PUSH([C++])
7281 save_CXXFLAGS=$CXXFLAGS
7282 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7283 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7284         #include <span>
7285         #include <type_traits>
7286         // Don't check size_type directly, as it was called index_type before P1872R0:
7287         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7288     ])], [
7289         AC_DEFINE([HAVE_CPP_SPAN],[1])
7290         AC_MSG_RESULT([yes])
7291     ], [AC_MSG_RESULT([no])])
7292 CXXFLAGS=$save_CXXFLAGS
7293 AC_LANG_POP([C++])
7295 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7296 AC_LANG_PUSH([C++])
7297 save_CXXFLAGS=$CXXFLAGS
7298 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7299 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7300         struct S1 { S1(S1 &&); };
7301         struct S2: S1 {};
7302         S1 f(S2 s) { return s; }
7303     ])], [
7304         AC_DEFINE([HAVE_P1155R3],[1])
7305         AC_MSG_RESULT([yes])
7306     ], [AC_MSG_RESULT([no])])
7307 CXXFLAGS=$save_CXXFLAGS
7308 AC_LANG_POP([C++])
7310 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7311 dnl which is included in -Wextra anyway):
7312 HAVE_WDEPRECATED_COPY_DTOR=
7313 if test "$GCC" = yes; then
7314     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7315     AC_LANG_PUSH([C++])
7316     save_CXXFLAGS=$CXXFLAGS
7317     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7318     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7319             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7320             AC_MSG_RESULT([yes])
7321         ], [AC_MSG_RESULT([no])])
7322     CXXFLAGS=$save_CXXFLAGS
7323     AC_LANG_POP([C++])
7325 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7327 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7328 dnl uninitialized warning for code like
7330 dnl   OString f();
7331 dnl   boost::optional<OString> * g(bool b) {
7332 dnl       boost::optional<OString> o;
7333 dnl       if (b) o = f();
7334 dnl       return new boost::optional<OString>(o);
7335 dnl   }
7337 dnl (as is e.g. present, in a slightly more elaborate form, in
7338 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7339 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7340 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7341 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7342     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7343     AC_LANG_PUSH([C++])
7344     save_CXXFLAGS=$CXXFLAGS
7345     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7346     if test "$ENABLE_OPTIMIZED" = TRUE; then
7347         CXXFLAGS="$CXXFLAGS -O2"
7348     else
7349         CXXFLAGS="$CXXFLAGS -O0"
7350     fi
7351     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7352             #include <new>
7353             void f1(int);
7354             struct S1 {
7355                 ~S1() { f1(n); }
7356                 int n = 0;
7357             };
7358             struct S2 {
7359                 S2() {}
7360                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7361                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7362                 void set(S1 s) {
7363                     new (stg) S1(s);
7364                     init = true;
7365                 }
7366                 bool init = false;
7367                 char stg[sizeof (S1)];
7368             } ;
7369             S1 f2();
7370             S2 * f3(bool b) {
7371                 S2 o;
7372                 if (b) o.set(f2());
7373                 return new S2(o);
7374             }
7375         ]])], [AC_MSG_RESULT([no])], [
7376             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7377             AC_MSG_RESULT([yes])
7378         ])
7379     CXXFLAGS=$save_CXXFLAGS
7380     AC_LANG_POP([C++])
7382 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7384 dnl ===================================================================
7385 dnl CPU Intrinsics support - SSE, AVX
7386 dnl ===================================================================
7388 CXXFLAGS_INTRINSICS_SSE2=
7389 CXXFLAGS_INTRINSICS_SSSE3=
7390 CXXFLAGS_INTRINSICS_SSE41=
7391 CXXFLAGS_INTRINSICS_SSE42=
7392 CXXFLAGS_INTRINSICS_AVX=
7393 CXXFLAGS_INTRINSICS_AVX2=
7394 CXXFLAGS_INTRINSICS_AVX512=
7395 CXXFLAGS_INTRINSICS_F16C=
7396 CXXFLAGS_INTRINSICS_FMA=
7398 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7399     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7400     flag_sse2=-msse2
7401     flag_ssse3=-mssse3
7402     flag_sse41=-msse4.1
7403     flag_sse42=-msse4.2
7404     flag_avx=-mavx
7405     flag_avx2=-mavx2
7406     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7407     flag_f16c=-mf16c
7408     flag_fma=-mfma
7409 else
7410     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7411     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7412     # SSE2 seems to be SSE2+.
7413     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7414     # is not empty (and can be tested in gbuild).
7415     flag_sse2=-arch:SSE2
7416     flag_ssse3=-arch:SSE2
7417     flag_sse41=-arch:SSE2
7418     flag_sse42=-arch:SSE2
7419     flag_avx=-arch:AVX
7420     flag_avx2=-arch:AVX2
7421     flag_avx512=-arch:AVX512
7422     # These are part of -arch:AVX2
7423     flag_f16c=-arch:AVX2
7424     flag_fma=-arch:AVX2
7427 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7428 AC_LANG_PUSH([C++])
7429 save_CXXFLAGS=$CXXFLAGS
7430 CXXFLAGS="$CXXFLAGS $flag_sse2"
7431 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7432     #include <emmintrin.h>
7433     int main () {
7434         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7435         c = _mm_xor_si128 (a, b);
7436         return 0;
7437     }
7438     ])],
7439     [can_compile_sse2=yes],
7440     [can_compile_sse2=no])
7441 AC_LANG_POP([C++])
7442 CXXFLAGS=$save_CXXFLAGS
7443 AC_MSG_RESULT([${can_compile_sse2}])
7444 if test "${can_compile_sse2}" = "yes" ; then
7445     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7448 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7449 AC_LANG_PUSH([C++])
7450 save_CXXFLAGS=$CXXFLAGS
7451 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7452 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7453     #include <tmmintrin.h>
7454     int main () {
7455         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7456         c = _mm_maddubs_epi16 (a, b);
7457         return 0;
7458     }
7459     ])],
7460     [can_compile_ssse3=yes],
7461     [can_compile_ssse3=no])
7462 AC_LANG_POP([C++])
7463 CXXFLAGS=$save_CXXFLAGS
7464 AC_MSG_RESULT([${can_compile_ssse3}])
7465 if test "${can_compile_ssse3}" = "yes" ; then
7466     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7469 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7470 AC_LANG_PUSH([C++])
7471 save_CXXFLAGS=$CXXFLAGS
7472 CXXFLAGS="$CXXFLAGS $flag_sse41"
7473 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7474     #include <smmintrin.h>
7475     int main () {
7476         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7477         c = _mm_cmpeq_epi64 (a, b);
7478         return 0;
7479     }
7480     ])],
7481     [can_compile_sse41=yes],
7482     [can_compile_sse41=no])
7483 AC_LANG_POP([C++])
7484 CXXFLAGS=$save_CXXFLAGS
7485 AC_MSG_RESULT([${can_compile_sse41}])
7486 if test "${can_compile_sse41}" = "yes" ; then
7487     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7490 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7491 AC_LANG_PUSH([C++])
7492 save_CXXFLAGS=$CXXFLAGS
7493 CXXFLAGS="$CXXFLAGS $flag_sse42"
7494 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7495     #include <nmmintrin.h>
7496     int main () {
7497         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7498         c = _mm_cmpgt_epi64 (a, b);
7499         return 0;
7500     }
7501     ])],
7502     [can_compile_sse42=yes],
7503     [can_compile_sse42=no])
7504 AC_LANG_POP([C++])
7505 CXXFLAGS=$save_CXXFLAGS
7506 AC_MSG_RESULT([${can_compile_sse42}])
7507 if test "${can_compile_sse42}" = "yes" ; then
7508     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7511 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7512 AC_LANG_PUSH([C++])
7513 save_CXXFLAGS=$CXXFLAGS
7514 CXXFLAGS="$CXXFLAGS $flag_avx"
7515 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7516     #include <immintrin.h>
7517     int main () {
7518         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7519         c = _mm256_xor_ps(a, b);
7520         return 0;
7521     }
7522     ])],
7523     [can_compile_avx=yes],
7524     [can_compile_avx=no])
7525 AC_LANG_POP([C++])
7526 CXXFLAGS=$save_CXXFLAGS
7527 AC_MSG_RESULT([${can_compile_avx}])
7528 if test "${can_compile_avx}" = "yes" ; then
7529     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7532 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7533 AC_LANG_PUSH([C++])
7534 save_CXXFLAGS=$CXXFLAGS
7535 CXXFLAGS="$CXXFLAGS $flag_avx2"
7536 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7537     #include <immintrin.h>
7538     int main () {
7539         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7540         c = _mm256_maddubs_epi16(a, b);
7541         return 0;
7542     }
7543     ])],
7544     [can_compile_avx2=yes],
7545     [can_compile_avx2=no])
7546 AC_LANG_POP([C++])
7547 CXXFLAGS=$save_CXXFLAGS
7548 AC_MSG_RESULT([${can_compile_avx2}])
7549 if test "${can_compile_avx2}" = "yes" ; then
7550     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7553 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7554 AC_LANG_PUSH([C++])
7555 save_CXXFLAGS=$CXXFLAGS
7556 CXXFLAGS="$CXXFLAGS $flag_avx512"
7557 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7558     #include <immintrin.h>
7559     int main () {
7560         __m512i a = _mm512_loadu_si512(0);
7561         return 0;
7562     }
7563     ])],
7564     [can_compile_avx512=yes],
7565     [can_compile_avx512=no])
7566 AC_LANG_POP([C++])
7567 CXXFLAGS=$save_CXXFLAGS
7568 AC_MSG_RESULT([${can_compile_avx512}])
7569 if test "${can_compile_avx512}" = "yes" ; then
7570     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7573 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7574 AC_LANG_PUSH([C++])
7575 save_CXXFLAGS=$CXXFLAGS
7576 CXXFLAGS="$CXXFLAGS $flag_f16c"
7577 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7578     #include <immintrin.h>
7579     int main () {
7580         __m128i a = _mm_set1_epi32 (0);
7581         __m128 c;
7582         c = _mm_cvtph_ps(a);
7583         return 0;
7584     }
7585     ])],
7586     [can_compile_f16c=yes],
7587     [can_compile_f16c=no])
7588 AC_LANG_POP([C++])
7589 CXXFLAGS=$save_CXXFLAGS
7590 AC_MSG_RESULT([${can_compile_f16c}])
7591 if test "${can_compile_f16c}" = "yes" ; then
7592     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7595 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7596 AC_LANG_PUSH([C++])
7597 save_CXXFLAGS=$CXXFLAGS
7598 CXXFLAGS="$CXXFLAGS $flag_fma"
7599 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7600     #include <immintrin.h>
7601     int main () {
7602         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7603         d = _mm256_fmadd_ps(a, b, c);
7604         return 0;
7605     }
7606     ])],
7607     [can_compile_fma=yes],
7608     [can_compile_fma=no])
7609 AC_LANG_POP([C++])
7610 CXXFLAGS=$save_CXXFLAGS
7611 AC_MSG_RESULT([${can_compile_fma}])
7612 if test "${can_compile_fma}" = "yes" ; then
7613     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7616 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7617 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7618 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7619 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7620 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7621 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7622 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7623 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7624 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7626 dnl ===================================================================
7627 dnl system stl sanity tests
7628 dnl ===================================================================
7629 if test "$_os" != "WINNT"; then
7631     AC_LANG_PUSH([C++])
7633     save_CPPFLAGS="$CPPFLAGS"
7634     if test -n "$MACOSX_SDK_PATH"; then
7635         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7636     fi
7638     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7639     # only.
7640     if test "$CPP_LIBRARY" = GLIBCXX; then
7641         dnl gcc#19664, gcc#22482, rhbz#162935
7642         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7643         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7644         AC_MSG_RESULT([$stlvisok])
7645         if test "$stlvisok" = "no"; then
7646             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7647         fi
7648     fi
7650     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7651     # when we don't make any dynamic libraries?
7652     if test "$DISABLE_DYNLOADING" = ""; then
7653         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7654         cat > conftestlib1.cc <<_ACEOF
7655 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7656 struct S2: S1<int> { virtual ~S2(); };
7657 S2::~S2() {}
7658 _ACEOF
7659         cat > conftestlib2.cc <<_ACEOF
7660 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7661 struct S2: S1<int> { virtual ~S2(); };
7662 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7663 _ACEOF
7664         gccvisinlineshiddenok=yes
7665         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7666             gccvisinlineshiddenok=no
7667         else
7668             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7669             dnl known to not work with -z defs (unsetting which makes the test
7670             dnl moot, though):
7671             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7672             if test "$COM_IS_CLANG" = TRUE; then
7673                 for i in $CXX $CXXFLAGS; do
7674                     case $i in
7675                     -fsanitize=*)
7676                         my_linkflagsnoundefs=
7677                         break
7678                         ;;
7679                     esac
7680                 done
7681             fi
7682             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7683                 gccvisinlineshiddenok=no
7684             fi
7685         fi
7687         rm -fr libconftest*
7688         AC_MSG_RESULT([$gccvisinlineshiddenok])
7689         if test "$gccvisinlineshiddenok" = "no"; then
7690             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7691         fi
7692     fi
7694    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7695     cat >visibility.cxx <<_ACEOF
7696 #pragma GCC visibility push(hidden)
7697 struct __attribute__ ((visibility ("default"))) TestStruct {
7698   static void Init();
7700 __attribute__ ((visibility ("default"))) void TestFunc() {
7701   TestStruct::Init();
7703 _ACEOF
7704     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7705         gccvisbroken=yes
7706     else
7707         case "$host_cpu" in
7708         i?86|x86_64)
7709             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7710                 gccvisbroken=no
7711             else
7712                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7713                     gccvisbroken=no
7714                 else
7715                     gccvisbroken=yes
7716                 fi
7717             fi
7718             ;;
7719         *)
7720             gccvisbroken=no
7721             ;;
7722         esac
7723     fi
7724     rm -f visibility.s visibility.cxx
7726     AC_MSG_RESULT([$gccvisbroken])
7727     if test "$gccvisbroken" = "yes"; then
7728         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7729     fi
7731     CPPFLAGS="$save_CPPFLAGS"
7733     AC_LANG_POP([C++])
7736 dnl ===================================================================
7737 dnl  Clang++ tests
7738 dnl ===================================================================
7740 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7741 if test "$GCC" = "yes"; then
7742     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7743     AC_LANG_PUSH([C++])
7744     save_CXXFLAGS=$CXXFLAGS
7745     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7746     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7747     CXXFLAGS=$save_CXXFLAGS
7748     AC_LANG_POP([C++])
7749     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7750         AC_MSG_RESULT([yes])
7751     else
7752         AC_MSG_RESULT([no])
7753     fi
7755 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7757 dnl ===================================================================
7758 dnl Compiler plugins
7759 dnl ===================================================================
7761 COMPILER_PLUGINS=
7762 # currently only Clang
7764 if test "$COM_IS_CLANG" != "TRUE"; then
7765     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7766         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7767         enable_compiler_plugins=no
7768     fi
7771 COMPILER_PLUGINS_COM_IS_CLANG=
7772 if test "$COM_IS_CLANG" = "TRUE"; then
7773     if test -n "$enable_compiler_plugins"; then
7774         compiler_plugins="$enable_compiler_plugins"
7775     elif test -n "$ENABLE_DBGUTIL"; then
7776         compiler_plugins=test
7777     else
7778         compiler_plugins=no
7779     fi
7780     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7781         if test "$CLANGVER" -lt 50002; then
7782             if test "$compiler_plugins" = yes; then
7783                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7784             else
7785                 compiler_plugins=no
7786             fi
7787         fi
7788     fi
7789     if test "$compiler_plugins" != "no"; then
7790         dnl The prefix where Clang resides, override to where Clang resides if
7791         dnl using a source build:
7792         if test -z "$CLANGDIR"; then
7793             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7794         fi
7795         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7796         if test -z "$COMPILER_PLUGINS_CXX"; then
7797             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7798         fi
7799         clangbindir=$CLANGDIR/bin
7800         if test "$build_os" = "cygwin"; then
7801             clangbindir=$(cygpath -u "$clangbindir")
7802         fi
7803         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7804         if test -n "$LLVM_CONFIG"; then
7805             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7806             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7807             if test -z "$CLANGLIBDIR"; then
7808                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7809             fi
7810             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7811             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7812             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7813             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7814                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7815             fi
7816             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7817             clangobjdir=$($LLVM_CONFIG --obj-root)
7818             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7819                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7820             fi
7821         fi
7822         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7823         AC_LANG_PUSH([C++])
7824         save_CXX=$CXX
7825         save_CXXCPP=$CXXCPP
7826         save_CPPFLAGS=$CPPFLAGS
7827         save_CXXFLAGS=$CXXFLAGS
7828         save_LDFLAGS=$LDFLAGS
7829         save_LIBS=$LIBS
7830         CXX=$COMPILER_PLUGINS_CXX
7831         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7832         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7833         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7834         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7835             [COMPILER_PLUGINS=TRUE],
7836             [
7837             if test "$compiler_plugins" = "yes"; then
7838                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7839             else
7840                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7841                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7842             fi
7843             ])
7844         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7845         dnl comment in compilerplugins/Makefile-clang.mk:
7846         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7847             LDFLAGS=""
7848             AC_MSG_CHECKING([for clang libraries to use])
7849             if test -z "$CLANGTOOLLIBS"; then
7850                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7851  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7852                 AC_LINK_IFELSE([
7853                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7854                         [[ clang::FullSourceLoc().dump(); ]])
7855                 ],[CLANGTOOLLIBS="$LIBS"],[])
7856             fi
7857             if test -z "$CLANGTOOLLIBS"; then
7858                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7859                 AC_LINK_IFELSE([
7860                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7861                         [[ clang::FullSourceLoc().dump(); ]])
7862                 ],[CLANGTOOLLIBS="$LIBS"],[])
7863             fi
7864             AC_MSG_RESULT([$CLANGTOOLLIBS])
7865             if test -z "$CLANGTOOLLIBS"; then
7866                 if test "$compiler_plugins" = "yes"; then
7867                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7868                 else
7869                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7870                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7871                 fi
7872                 COMPILER_PLUGINS=
7873             fi
7874             if test -n "$COMPILER_PLUGINS"; then
7875                 if test -z "$CLANGSYSINCLUDE"; then
7876                     if test -n "$LLVM_CONFIG"; then
7877                         # Path to the clang system headers (no idea if there's a better way to get it).
7878                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7879                     fi
7880                 fi
7881             fi
7882         fi
7883         CXX=$save_CXX
7884         CXXCPP=$save_CXXCPP
7885         CPPFLAGS=$save_CPPFLAGS
7886         CXXFLAGS=$save_CXXFLAGS
7887         LDFLAGS=$save_LDFLAGS
7888         LIBS="$save_LIBS"
7889         AC_LANG_POP([C++])
7891         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7892         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7893             #ifndef __clang__
7894             you lose
7895             #endif
7896             int foo=42;
7897             ]])],
7898             [AC_MSG_RESULT([yes])
7899              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7900             [AC_MSG_RESULT([no])])
7901         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7902     fi
7903 else
7904     if test "$enable_compiler_plugins" = "yes"; then
7905         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7906     fi
7908 COMPILER_PLUGINS_ANALYZER_PCH=
7909 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7910     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7912 AC_SUBST(COMPILER_PLUGINS)
7913 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7914 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7915 AC_SUBST(COMPILER_PLUGINS_CXX)
7916 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7917 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7918 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7919 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7920 AC_SUBST(CLANGDIR)
7921 AC_SUBST(CLANGLIBDIR)
7922 AC_SUBST(CLANGTOOLLIBS)
7923 AC_SUBST(CLANGSYSINCLUDE)
7925 # Plugin to help linker.
7926 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7927 # This makes --enable-lto build with clang work.
7928 AC_SUBST(LD_PLUGIN)
7930 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7931 AC_SUBST(HAVE_POSIX_FALLOCATE)
7933 JITC_PROCESSOR_TYPE=""
7934 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7935     # IBMs JDK needs this...
7936     JITC_PROCESSOR_TYPE=6
7937     export JITC_PROCESSOR_TYPE
7939 AC_SUBST([JITC_PROCESSOR_TYPE])
7941 # Misc Windows Stuff
7942 AC_ARG_WITH(ucrt-dir,
7943     AS_HELP_STRING([--with-ucrt-dir],
7944         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7945         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7946         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7947             Windows6.1-KB2999226-x64.msu
7948             Windows6.1-KB2999226-x86.msu
7949             Windows8.1-KB2999226-x64.msu
7950             Windows8.1-KB2999226-x86.msu
7951             Windows8-RT-KB2999226-x64.msu
7952             Windows8-RT-KB2999226-x86.msu
7953         A zip archive including those files is available from Microsoft site:
7954         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7957 UCRT_REDISTDIR="$with_ucrt_dir"
7958 if test $_os = "WINNT"; then
7959     find_msvc_x64_dlls
7960     for i in $PKGFORMAT; do
7961         if test "$i" = msi; then
7962             find_msms
7963             break
7964         fi
7965     done
7966     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7967     MSVC_DLLS="$msvcdlls"
7968     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7969     # MSVC 15.3 changed it to VC141
7970     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7971         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7972     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7973         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7974     else
7975         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7976     fi
7978     if test "$UCRT_REDISTDIR" = "no"; then
7979         dnl explicitly disabled
7980         UCRT_REDISTDIR=""
7981     else
7982         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7983                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7984                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7985                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7986                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7987                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7988             UCRT_REDISTDIR=""
7989             if test -n "$PKGFORMAT"; then
7990                for i in $PKGFORMAT; do
7991                    case "$i" in
7992                    msi)
7993                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7994                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7995                        ;;
7996                    esac
7997                done
7998             fi
7999         fi
8000     fi
8003 AC_SUBST(UCRT_REDISTDIR)
8004 AC_SUBST(MSVC_DLL_PATH)
8005 AC_SUBST(MSVC_DLLS)
8006 AC_SUBST(MSM_PATH)
8008 dnl ===================================================================
8009 dnl Checks for Java
8010 dnl ===================================================================
8011 if test "$ENABLE_JAVA" != ""; then
8013     # Windows-specific tests
8014     if test "$build_os" = "cygwin"; then
8015         if test -z "$with_jdk_home"; then
8016             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8017             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8018             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8019             if test -n "$regvalue"; then
8020                 ver=$regvalue
8021                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8022                 reg_jdk_home=$regvalue
8023             fi
8025             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
8026                 with_jdk_home="$reg_jdk_home"
8027                 howfound="found automatically"
8028             else
8029                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8030             fi
8031         else
8032             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8033             howfound="you passed"
8034         fi
8035     fi
8037     # 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.
8038     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8039     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8040         with_jdk_home=`/usr/libexec/java_home`
8041     fi
8043     JAVA_HOME=; export JAVA_HOME
8044     if test -z "$with_jdk_home"; then
8045         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8046     else
8047         _java_path="$with_jdk_home/bin/$with_java"
8048         dnl Check if there is a Java interpreter at all.
8049         if test -x "$_java_path"; then
8050             JAVAINTERPRETER=$_java_path
8051         else
8052             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8053         fi
8054     fi
8056     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8057     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8058     dnl loaded by java to run JunitTests:
8059     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8060         shortjdkhome=`cygpath -d "$with_jdk_home"`
8061         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
8062             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8063             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8064         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
8065             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8066             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8067         fi
8069         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8070             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8071         fi
8072         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8073     elif test "$cross_compiling" != "yes"; then
8074         case $CPUNAME in
8075             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8076                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8077                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8078                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8079                 fi
8080                 ;;
8081             *) # assumption: everything else 32-bit
8082                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8083                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8084                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8085                 fi
8086                 ;;
8087         esac
8088     fi
8091 dnl ===================================================================
8092 dnl Checks for JDK.
8093 dnl ===================================================================
8095 # Whether all the complexity here actually is needed any more or not, no idea.
8097 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8098     _gij_longver=0
8099     AC_MSG_CHECKING([the installed JDK])
8100     if test -n "$JAVAINTERPRETER"; then
8101         dnl java -version sends output to stderr!
8102         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8103             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8104         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8105             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8106         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8107             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8108         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8109             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8110         else
8111             JDK=sun
8113             dnl Sun JDK specific tests
8114             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8115             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8117             if test "$_jdk_ver" -lt 10900; then
8118                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8119             fi
8120             if test "$_jdk_ver" -gt 10900; then
8121                 JAVA_CLASSPATH_NOT_SET=TRUE
8122             fi
8124             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8125             if test "$_os" = "WINNT"; then
8126                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8127             fi
8128             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8130             # set to limit VM usage for JunitTests
8131             JAVAIFLAGS=-Xmx64M
8132             # set to limit VM usage for javac
8133             JAVACFLAGS=-J-Xmx128M
8134         fi
8135     else
8136         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8137     fi
8138 else
8139     if test -z "$ENABLE_JAVA"; then
8140         dnl Java disabled
8141         JAVA_HOME=
8142         export JAVA_HOME
8143     elif test "$cross_compiling" = "yes"; then
8144         # Just assume compatibility of build and host JDK
8145         JDK=$JDK_FOR_BUILD
8146         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8147     fi
8150 dnl ===================================================================
8151 dnl Checks for javac
8152 dnl ===================================================================
8153 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8154     javacompiler="javac"
8155     : ${JAVA_SOURCE_VER=8}
8156     : ${JAVA_TARGET_VER=8}
8157     if test -z "$with_jdk_home"; then
8158         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8159     else
8160         _javac_path="$with_jdk_home/bin/$javacompiler"
8161         dnl Check if there is a Java compiler at all.
8162         if test -x "$_javac_path"; then
8163             JAVACOMPILER=$_javac_path
8164         fi
8165     fi
8166     if test -z "$JAVACOMPILER"; then
8167         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8168     fi
8169     if test "$build_os" = "cygwin"; then
8170         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8171             JAVACOMPILER="${JAVACOMPILER}.exe"
8172         fi
8173         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8174     fi
8177 dnl ===================================================================
8178 dnl Checks for javadoc
8179 dnl ===================================================================
8180 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8181     if test -z "$with_jdk_home"; then
8182         AC_PATH_PROG(JAVADOC, javadoc)
8183     else
8184         _javadoc_path="$with_jdk_home/bin/javadoc"
8185         dnl Check if there is a javadoc at all.
8186         if test -x "$_javadoc_path"; then
8187             JAVADOC=$_javadoc_path
8188         else
8189             AC_PATH_PROG(JAVADOC, javadoc)
8190         fi
8191     fi
8192     if test -z "$JAVADOC"; then
8193         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8194     fi
8195     if test "$build_os" = "cygwin"; then
8196         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8197             JAVADOC="${JAVADOC}.exe"
8198         fi
8199         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8200     fi
8202     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8203     JAVADOCISGJDOC="yes"
8204     fi
8206 AC_SUBST(JAVADOC)
8207 AC_SUBST(JAVADOCISGJDOC)
8209 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8210     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8211     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8212         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8213            # try to recover first by looking whether we have an alternative
8214            # system as in Debian or newer SuSEs where following /usr/bin/javac
8215            # over /etc/alternatives/javac leads to the right bindir where we
8216            # just need to strip a bit away to get a valid JAVA_HOME
8217            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8218         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8219             # maybe only one level of symlink (e.g. on Mac)
8220             JAVA_HOME=$(readlink $JAVACOMPILER)
8221             if test "$(dirname $JAVA_HOME)" = "."; then
8222                 # we've got no path to trim back
8223                 JAVA_HOME=""
8224             fi
8225         else
8226             # else warn
8227             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8228             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8229             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8230             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8231         fi
8232         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8233         if test "$JAVA_HOME" != "/usr"; then
8234             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8235                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8236                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8237                 dnl Tiger already returns a JDK path...
8238                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8239             else
8240                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8241                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8242                 dnl that checks which version to run
8243                 if test -f "$JAVA_HOME"; then
8244                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8245                 fi
8246             fi
8247         fi
8248     fi
8249     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8251     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8252     if test -z "$JAVA_HOME"; then
8253         if test "x$with_jdk_home" = "x"; then
8254             cat > findhome.java <<_ACEOF
8255 [import java.io.File;
8257 class findhome
8259     public static void main(String args[])
8260     {
8261         String jrelocation = System.getProperty("java.home");
8262         File jre = new File(jrelocation);
8263         System.out.println(jre.getParent());
8264     }
8266 _ACEOF
8267             AC_MSG_CHECKING([if javac works])
8268             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8269             AC_TRY_EVAL(javac_cmd)
8270             if test $? = 0 -a -f ./findhome.class; then
8271                 AC_MSG_RESULT([javac works])
8272             else
8273                 echo "configure: javac test failed" >&5
8274                 cat findhome.java >&5
8275                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8276             fi
8277             AC_MSG_CHECKING([if gij knows its java.home])
8278             JAVA_HOME=`$JAVAINTERPRETER findhome`
8279             if test $? = 0 -a "$JAVA_HOME" != ""; then
8280                 AC_MSG_RESULT([$JAVA_HOME])
8281             else
8282                 echo "configure: java test failed" >&5
8283                 cat findhome.java >&5
8284                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8285             fi
8286             # clean-up after ourselves
8287             rm -f ./findhome.java ./findhome.class
8288         else
8289             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8290         fi
8291     fi
8293     # now check if $JAVA_HOME is really valid
8294     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8295         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8296             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8297             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8298             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8299             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8300             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8301             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8302         fi
8303     fi
8304     PathFormat "$JAVA_HOME"
8305     JAVA_HOME="$formatted_path"
8308 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8309     "$_os" != Darwin
8310 then
8311     AC_MSG_CHECKING([for JAWT lib])
8312     if test "$_os" = WINNT; then
8313         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8314         JAWTLIB=jawt.lib
8315     else
8316         case "$host_cpu" in
8317         arm*)
8318             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8319             JAVA_ARCH=$my_java_arch
8320             ;;
8321         i*86)
8322             my_java_arch=i386
8323             ;;
8324         m68k)
8325             my_java_arch=m68k
8326             ;;
8327         powerpc)
8328             my_java_arch=ppc
8329             ;;
8330         powerpc64)
8331             my_java_arch=ppc64
8332             ;;
8333         powerpc64le)
8334             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8335             JAVA_ARCH=$my_java_arch
8336             ;;
8337         sparc64)
8338             my_java_arch=sparcv9
8339             ;;
8340         x86_64)
8341             my_java_arch=amd64
8342             ;;
8343         *)
8344             my_java_arch=$host_cpu
8345             ;;
8346         esac
8347         # This is where JDK9 puts the library
8348         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8349             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8350         else
8351             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8352         fi
8353         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8354     fi
8355     AC_MSG_RESULT([$JAWTLIB])
8357 AC_SUBST(JAWTLIB)
8359 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8360     case "$host_os" in
8362     aix*)
8363         JAVAINC="-I$JAVA_HOME/include"
8364         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8365         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8366         ;;
8368     cygwin*|wsl*)
8369         JAVAINC="-I$JAVA_HOME/include/win32"
8370         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8371         ;;
8373     darwin*|macos*)
8374         if test -d "$JAVA_HOME/include/darwin"; then
8375             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8376         else
8377             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8378         fi
8379         ;;
8381     dragonfly*)
8382         JAVAINC="-I$JAVA_HOME/include"
8383         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8384         ;;
8386     freebsd*)
8387         JAVAINC="-I$JAVA_HOME/include"
8388         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8389         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8390         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8391         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8392         ;;
8394     k*bsd*-gnu*)
8395         JAVAINC="-I$JAVA_HOME/include"
8396         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8397         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8398         ;;
8400     linux-gnu*)
8401         JAVAINC="-I$JAVA_HOME/include"
8402         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8403         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8404         ;;
8406     *netbsd*)
8407         JAVAINC="-I$JAVA_HOME/include"
8408         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8409         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8410        ;;
8412     openbsd*)
8413         JAVAINC="-I$JAVA_HOME/include"
8414         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8415         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8416         ;;
8418     solaris*)
8419         JAVAINC="-I$JAVA_HOME/include"
8420         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8421         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8422         ;;
8423     esac
8425 SOLARINC="$SOLARINC $JAVAINC"
8427 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8428     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8429     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8430     JDK_FOR_BUILD=$JDK
8433 AC_SUBST(JAVACFLAGS)
8434 AC_SUBST(JAVACOMPILER)
8435 AC_SUBST(JAVAINTERPRETER)
8436 AC_SUBST(JAVAIFLAGS)
8437 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8438 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8439 AC_SUBST(JAVA_HOME)
8440 AC_SUBST(JAVA_HOME_FOR_BUILD)
8441 AC_SUBST(JDK)
8442 AC_SUBST(JDK_FOR_BUILD)
8443 AC_SUBST(JAVA_SOURCE_VER)
8444 AC_SUBST(JAVA_TARGET_VER)
8447 dnl ===================================================================
8448 dnl Export file validation
8449 dnl ===================================================================
8450 AC_MSG_CHECKING([whether to enable export file validation])
8451 if test "$with_export_validation" != "no"; then
8452     if test -z "$ENABLE_JAVA"; then
8453         if test "$with_export_validation" = "yes"; then
8454             AC_MSG_ERROR([requested, but Java is disabled])
8455         else
8456             AC_MSG_RESULT([no, as Java is disabled])
8457         fi
8458     elif ! test -d "${SRC_ROOT}/schema"; then
8459         if test "$with_export_validation" = "yes"; then
8460             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8461         else
8462             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8463         fi
8464     else
8465         AC_MSG_RESULT([yes])
8466         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8468         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8469         if test -z "$ODFVALIDATOR"; then
8470             # remember to download the ODF toolkit with validator later
8471             AC_MSG_NOTICE([no odfvalidator found, will download it])
8472             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8473             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8475             # and fetch name of odfvalidator jar name from download.lst
8476             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8477             AC_SUBST(ODFVALIDATOR_JAR)
8479             if test -z "$ODFVALIDATOR_JAR"; then
8480                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8481             fi
8482         fi
8483         if test "$build_os" = "cygwin"; then
8484             # In case of Cygwin it will be executed from Windows,
8485             # so we need to run bash and absolute path to validator
8486             # so instead of "odfvalidator" it will be
8487             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8488             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8489         else
8490             ODFVALIDATOR="sh $ODFVALIDATOR"
8491         fi
8492         AC_SUBST(ODFVALIDATOR)
8495         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8496         if test -z "$OFFICEOTRON"; then
8497             # remember to download the officeotron with validator later
8498             AC_MSG_NOTICE([no officeotron found, will download it])
8499             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8500             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8502             # and fetch name of officeotron jar name from download.lst
8503             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8504             AC_SUBST(OFFICEOTRON_JAR)
8506             if test -z "$OFFICEOTRON_JAR"; then
8507                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8508             fi
8509         else
8510             # check version of existing officeotron
8511             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8512             if test 0"$OFFICEOTRON_VER" -lt 704; then
8513                 AC_MSG_ERROR([officeotron too old])
8514             fi
8515         fi
8516         if test "$build_os" = "cygwin"; then
8517             # In case of Cygwin it will be executed from Windows,
8518             # so we need to run bash and absolute path to validator
8519             # so instead of "odfvalidator" it will be
8520             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8521             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8522         else
8523             OFFICEOTRON="sh $OFFICEOTRON"
8524         fi
8525     fi
8526     AC_SUBST(OFFICEOTRON)
8527 else
8528     AC_MSG_RESULT([no])
8531 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8532 if test "$with_bffvalidator" != "no"; then
8533     AC_DEFINE(HAVE_BFFVALIDATOR)
8535     if test "$with_export_validation" = "no"; then
8536         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8537     fi
8539     if test "$with_bffvalidator" = "yes"; then
8540         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8541     else
8542         BFFVALIDATOR="$with_bffvalidator"
8543     fi
8545     if test "$build_os" = "cygwin"; then
8546         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8547             AC_MSG_RESULT($BFFVALIDATOR)
8548         else
8549             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8550         fi
8551     elif test -n "$BFFVALIDATOR"; then
8552         # We are not in Cygwin but need to run Windows binary with wine
8553         AC_PATH_PROGS(WINE, wine)
8555         # so swap in a shell wrapper that converts paths transparently
8556         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8557         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8558         AC_SUBST(BFFVALIDATOR_EXE)
8559         AC_MSG_RESULT($BFFVALIDATOR)
8560     else
8561         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8562     fi
8563     AC_SUBST(BFFVALIDATOR)
8564 else
8565     AC_MSG_RESULT([no])
8568 dnl ===================================================================
8569 dnl Check for C preprocessor to use
8570 dnl ===================================================================
8571 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8572 if test -n "$with_idlc_cpp"; then
8573     AC_MSG_RESULT([$with_idlc_cpp])
8574     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8575 else
8576     AC_MSG_RESULT([ucpp])
8577     AC_MSG_CHECKING([which ucpp tp use])
8578     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8579         AC_MSG_RESULT([external])
8580         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8581     else
8582         AC_MSG_RESULT([internal])
8583         BUILD_TYPE="$BUILD_TYPE UCPP"
8584     fi
8586 AC_SUBST(SYSTEM_UCPP)
8588 dnl ===================================================================
8589 dnl Check for epm (not needed for Windows)
8590 dnl ===================================================================
8591 AC_MSG_CHECKING([whether to enable EPM for packing])
8592 if test "$enable_epm" = "yes"; then
8593     AC_MSG_RESULT([yes])
8594     if test "$_os" != "WINNT"; then
8595         if test $_os = Darwin; then
8596             EPM=internal
8597         elif test -n "$with_epm"; then
8598             EPM=$with_epm
8599         else
8600             AC_PATH_PROG(EPM, epm, no)
8601         fi
8602         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8603             AC_MSG_NOTICE([EPM will be built.])
8604             BUILD_TYPE="$BUILD_TYPE EPM"
8605             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8606         else
8607             # Gentoo has some epm which is something different...
8608             AC_MSG_CHECKING([whether the found epm is the right epm])
8609             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8610                 AC_MSG_RESULT([yes])
8611             else
8612                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8613             fi
8614             AC_MSG_CHECKING([epm version])
8615             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8616             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8617                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8618                 AC_MSG_RESULT([OK, >= 3.7])
8619             else
8620                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8621                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8622             fi
8623         fi
8624     fi
8626     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8627         AC_MSG_CHECKING([for rpm])
8628         for a in "$RPM" rpmbuild rpm; do
8629             $a --usage >/dev/null 2> /dev/null
8630             if test $? -eq 0; then
8631                 RPM=$a
8632                 break
8633             else
8634                 $a --version >/dev/null 2> /dev/null
8635                 if test $? -eq 0; then
8636                     RPM=$a
8637                     break
8638                 fi
8639             fi
8640         done
8641         if test -z "$RPM"; then
8642             AC_MSG_ERROR([not found])
8643         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8644             RPM_PATH=`which $RPM`
8645             AC_MSG_RESULT([$RPM_PATH])
8646             SCPDEFS="$SCPDEFS -DWITH_RPM"
8647         else
8648             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8649         fi
8650     fi
8651     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8652         AC_PATH_PROG(DPKG, dpkg, no)
8653         if test "$DPKG" = "no"; then
8654             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8655         fi
8656     fi
8657     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8658        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8659         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8660             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8661                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8662                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8663                     AC_MSG_RESULT([yes])
8664                 else
8665                     AC_MSG_RESULT([no])
8666                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8667                         _pt="rpm"
8668                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8669                         add_warning "the rpms will need to be installed with --nodeps"
8670                     else
8671                         _pt="pkg"
8672                     fi
8673                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8674                     add_warning "the ${_pt}s will not be relocatable"
8675                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8676                                  relocation will work, you need to patch your epm with the
8677                                  patch in epm/epm-3.7.patch or build with
8678                                  --with-epm=internal which will build a suitable epm])
8679                 fi
8680             fi
8681         fi
8682     fi
8683     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8684         AC_PATH_PROG(PKGMK, pkgmk, no)
8685         if test "$PKGMK" = "no"; then
8686             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8687         fi
8688     fi
8689     AC_SUBST(RPM)
8690     AC_SUBST(DPKG)
8691     AC_SUBST(PKGMK)
8692 else
8693     for i in $PKGFORMAT; do
8694         case "$i" in
8695         aix | bsd | deb | pkg | rpm | native | portable)
8696             AC_MSG_ERROR(
8697                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8698             ;;
8699         esac
8700     done
8701     AC_MSG_RESULT([no])
8702     EPM=NO
8704 AC_SUBST(EPM)
8706 ENABLE_LWP=
8707 if test "$enable_lotuswordpro" = "yes"; then
8708     ENABLE_LWP="TRUE"
8710 AC_SUBST(ENABLE_LWP)
8712 dnl ===================================================================
8713 dnl Check for building ODK
8714 dnl ===================================================================
8715 if test "$enable_odk" = no; then
8716     unset DOXYGEN
8717 else
8718     if test "$with_doxygen" = no; then
8719         AC_MSG_CHECKING([for doxygen])
8720         unset DOXYGEN
8721         AC_MSG_RESULT([no])
8722     else
8723         if test "$with_doxygen" = yes; then
8724             AC_PATH_PROG([DOXYGEN], [doxygen])
8725             if test -z "$DOXYGEN"; then
8726                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8727             fi
8728             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8729                 if ! dot -V 2>/dev/null; then
8730                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8731                 fi
8732             fi
8733         else
8734             AC_MSG_CHECKING([for doxygen])
8735             DOXYGEN=$with_doxygen
8736             AC_MSG_RESULT([$DOXYGEN])
8737         fi
8738         if test -n "$DOXYGEN"; then
8739             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8740             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8741             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8742                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8743             fi
8744         fi
8745     fi
8747 AC_SUBST([DOXYGEN])
8749 AC_MSG_CHECKING([whether to build the ODK])
8750 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8751     AC_MSG_RESULT([yes])
8753     if test "$with_java" != "no"; then
8754         AC_MSG_CHECKING([whether to build unowinreg.dll])
8755         if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8756             # build on Win by default
8757             enable_build_unowinreg=yes
8758         fi
8759         if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8760             AC_MSG_RESULT([no])
8761             BUILD_UNOWINREG=
8762         else
8763             AC_MSG_RESULT([yes])
8764             BUILD_UNOWINREG=TRUE
8765         fi
8766         if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8767             if test -z "$with_mingw_cross_compiler"; then
8768                 dnl Guess...
8769                 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8770             elif test -x "$with_mingw_cross_compiler"; then
8771                  MINGWCXX="$with_mingw_cross_compiler"
8772             else
8773                 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8774             fi
8776             if test "$MINGWCXX" = "false"; then
8777                 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8778             fi
8780             mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8781             if test -x "$mingwstrip_test"; then
8782                 MINGWSTRIP="$mingwstrip_test"
8783             else
8784                 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8785             fi
8787             if test "$MINGWSTRIP" = "false"; then
8788                 AC_MSG_ERROR(MinGW32 binutils not found.)
8789             fi
8790         fi
8791     fi
8792     BUILD_TYPE="$BUILD_TYPE ODK"
8793 else
8794     AC_MSG_RESULT([no])
8795     BUILD_UNOWINREG=
8797 AC_SUBST(BUILD_UNOWINREG)
8798 AC_SUBST(MINGWCXX)
8799 AC_SUBST(MINGWSTRIP)
8801 dnl ===================================================================
8802 dnl Check for system zlib
8803 dnl ===================================================================
8804 if test "$with_system_zlib" = "auto"; then
8805     case "$_os" in
8806     WINNT)
8807         with_system_zlib="$with_system_libs"
8808         ;;
8809     *)
8810         if test "$enable_fuzzers" != "yes"; then
8811             with_system_zlib=yes
8812         else
8813             with_system_zlib=no
8814         fi
8815         ;;
8816     esac
8819 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8820 dnl and has no pkg-config for it at least on some tinderboxes,
8821 dnl so leaving that out for now
8822 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8823 AC_MSG_CHECKING([which zlib to use])
8824 if test "$with_system_zlib" = "yes"; then
8825     AC_MSG_RESULT([external])
8826     SYSTEM_ZLIB=TRUE
8827     AC_CHECK_HEADER(zlib.h, [],
8828         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8829     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8830         [AC_MSG_ERROR(zlib not found or functional)], [])
8831 else
8832     AC_MSG_RESULT([internal])
8833     SYSTEM_ZLIB=
8834     BUILD_TYPE="$BUILD_TYPE ZLIB"
8835     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8836     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8838 AC_SUBST(ZLIB_CFLAGS)
8839 AC_SUBST(ZLIB_LIBS)
8840 AC_SUBST(SYSTEM_ZLIB)
8842 dnl ===================================================================
8843 dnl Check for system jpeg
8844 dnl ===================================================================
8845 AC_MSG_CHECKING([which libjpeg to use])
8846 if test "$with_system_jpeg" = "yes"; then
8847     AC_MSG_RESULT([external])
8848     SYSTEM_LIBJPEG=TRUE
8849     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8850         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8851     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8852         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8853 else
8854     SYSTEM_LIBJPEG=
8855     AC_MSG_RESULT([internal, libjpeg-turbo])
8856     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8857     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8858     if test "$COM" = "MSC"; then
8859         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8860     else
8861         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8862     fi
8864     case "$host_cpu" in
8865     x86_64 | amd64 | i*86 | x86 | ia32)
8866         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8867         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8868             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8869                 NASM="$LODE_HOME/opt/bin/nasm"
8870             elif test -x "/opt/lo/bin/nasm"; then
8871                 NASM="/opt/lo/bin/nasm"
8872             fi
8873         fi
8875         if test -n "$NASM"; then
8876             AC_MSG_CHECKING([for object file format of host system])
8877             case "$host_os" in
8878               cygwin* | mingw* | pw32* | wsl*)
8879                 case "$host_cpu" in
8880                   x86_64)
8881                     objfmt='Win64-COFF'
8882                     ;;
8883                   *)
8884                     objfmt='Win32-COFF'
8885                     ;;
8886                 esac
8887               ;;
8888               msdosdjgpp* | go32*)
8889                 objfmt='COFF'
8890               ;;
8891               os2-emx*) # not tested
8892                 objfmt='MSOMF' # obj
8893               ;;
8894               linux*coff* | linux*oldld*)
8895                 objfmt='COFF' # ???
8896               ;;
8897               linux*aout*)
8898                 objfmt='a.out'
8899               ;;
8900               linux*)
8901                 case "$host_cpu" in
8902                   x86_64)
8903                     objfmt='ELF64'
8904                     ;;
8905                   *)
8906                     objfmt='ELF'
8907                     ;;
8908                 esac
8909               ;;
8910               kfreebsd* | freebsd* | netbsd* | openbsd*)
8911                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8912                   objfmt='BSD-a.out'
8913                 else
8914                   case "$host_cpu" in
8915                     x86_64 | amd64)
8916                       objfmt='ELF64'
8917                       ;;
8918                     *)
8919                       objfmt='ELF'
8920                       ;;
8921                   esac
8922                 fi
8923               ;;
8924               solaris* | sunos* | sysv* | sco*)
8925                 case "$host_cpu" in
8926                   x86_64)
8927                     objfmt='ELF64'
8928                     ;;
8929                   *)
8930                     objfmt='ELF'
8931                     ;;
8932                 esac
8933               ;;
8934               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8935                 case "$host_cpu" in
8936                   x86_64)
8937                     objfmt='Mach-O64'
8938                     ;;
8939                   *)
8940                     objfmt='Mach-O'
8941                     ;;
8942                 esac
8943               ;;
8944               *)
8945                 objfmt='ELF ?'
8946               ;;
8947             esac
8949             AC_MSG_RESULT([$objfmt])
8950             if test "$objfmt" = 'ELF ?'; then
8951               objfmt='ELF'
8952               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8953             fi
8955             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8956             case "$objfmt" in
8957               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8958               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8959               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8960               COFF)       NAFLAGS='-fcoff -DCOFF';;
8961               a.out)      NAFLAGS='-faout -DAOUT';;
8962               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8963               ELF)        NAFLAGS='-felf -DELF';;
8964               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8965               RDF)        NAFLAGS='-frdf -DRDF';;
8966               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8967               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8968             esac
8969             AC_MSG_RESULT([$NAFLAGS])
8971             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8972             cat > conftest.asm << EOF
8973             [%line __oline__ "configure"
8974                     section .text
8975                     global  _main,main
8976             _main:
8977             main:   xor     eax,eax
8978                     ret
8979             ]
8981             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8982             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8983               AC_MSG_RESULT(yes)
8984             else
8985               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8986               cat conftest.asm >&AS_MESSAGE_LOG_FD
8987               rm -rf conftest*
8988               AC_MSG_RESULT(no)
8989               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8990               NASM=""
8991             fi
8993         fi
8995         if test -z "$NASM"; then
8996 cat << _EOS
8997 ****************************************************************************
8998 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8999 To get one please:
9001 _EOS
9002             if test "$build_os" = "cygwin"; then
9003 cat << _EOS
9004 install a pre-compiled binary for Win32
9006 mkdir -p /opt/lo/bin
9007 cd /opt/lo/bin
9008 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9009 chmod +x nasm
9011 or get and install one from http://www.nasm.us/
9013 Then re-run autogen.sh
9015 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9016 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9018 _EOS
9019             else
9020 cat << _EOS
9021 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9023 _EOS
9024             fi
9025             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9026             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9027         fi
9028       ;;
9029     esac
9032 AC_SUBST(NASM)
9033 AC_SUBST(LIBJPEG_CFLAGS)
9034 AC_SUBST(LIBJPEG_LIBS)
9035 AC_SUBST(SYSTEM_LIBJPEG)
9037 dnl ===================================================================
9038 dnl Check for system clucene
9039 dnl ===================================================================
9040 dnl we should rather be using
9041 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9042 dnl but the contribs-lib check seems tricky
9043 AC_MSG_CHECKING([which clucene to use])
9044 if test "$with_system_clucene" = "yes"; then
9045     AC_MSG_RESULT([external])
9046     SYSTEM_CLUCENE=TRUE
9047     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9048     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9049     FilterLibs "${CLUCENE_LIBS}"
9050     CLUCENE_LIBS="${filteredlibs}"
9051     AC_LANG_PUSH([C++])
9052     save_CXXFLAGS=$CXXFLAGS
9053     save_CPPFLAGS=$CPPFLAGS
9054     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9055     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9056     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9057     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9058     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9059                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9060     CXXFLAGS=$save_CXXFLAGS
9061     CPPFLAGS=$save_CPPFLAGS
9062     AC_LANG_POP([C++])
9064     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9065 else
9066     AC_MSG_RESULT([internal])
9067     SYSTEM_CLUCENE=
9068     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9070 AC_SUBST(SYSTEM_CLUCENE)
9071 AC_SUBST(CLUCENE_CFLAGS)
9072 AC_SUBST(CLUCENE_LIBS)
9074 dnl ===================================================================
9075 dnl Check for system expat
9076 dnl ===================================================================
9077 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9079 dnl ===================================================================
9080 dnl Check for system xmlsec
9081 dnl ===================================================================
9082 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9084 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9085 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9086     ENABLE_EOT="TRUE"
9087     AC_DEFINE([ENABLE_EOT])
9088     AC_MSG_RESULT([yes])
9090     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9091 else
9092     ENABLE_EOT=
9093     AC_MSG_RESULT([no])
9095 AC_SUBST([ENABLE_EOT])
9097 dnl ===================================================================
9098 dnl Check for DLP libs
9099 dnl ===================================================================
9100 AS_IF([test "$COM" = "MSC"],
9101       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9102       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9104 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9106 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9108 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9110 AS_IF([test "$COM" = "MSC"],
9111       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9112       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9114 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9116 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9118 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9119 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9121 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9123 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9125 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9127 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9128 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9130 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9131 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9133 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9135 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9136 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9138 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9140 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9142 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9144 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9146 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9147 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9149 dnl ===================================================================
9150 dnl Check for system lcms2
9151 dnl ===================================================================
9152 if test "$with_system_lcms2" != "yes"; then
9153     SYSTEM_LCMS2=
9155 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9156 if test "$GCC" = "yes"; then
9157     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9159 if test "$COM" = "MSC"; then # override the above
9160     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9163 dnl ===================================================================
9164 dnl Check for system cppunit
9165 dnl ===================================================================
9166 if test "$_os" != "Android" ; then
9167     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9170 dnl ===================================================================
9171 dnl Check whether freetype is available
9172 dnl ===================================================================
9173 if test  "$test_freetype" = "yes"; then
9174     AC_MSG_CHECKING([whether freetype is available])
9175     # FreeType has 3 different kinds of versions
9176     # * release, like 2.4.10
9177     # * libtool, like 13.0.7 (this what pkg-config returns)
9178     # * soname
9179     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9180     #
9181     # 9.9.3 is 2.2.0
9182     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9183     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9184     FilterLibs "${FREETYPE_LIBS}"
9185     FREETYPE_LIBS="${filteredlibs}"
9186     SYSTEM_FREETYPE=TRUE
9187 else
9188     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9189     if test "x$ac_config_site_64bit_host" = xYES; then
9190         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9191     else
9192         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9193     fi
9195 AC_SUBST(FREETYPE_CFLAGS)
9196 AC_SUBST(FREETYPE_LIBS)
9197 AC_SUBST([SYSTEM_FREETYPE])
9199 # ===================================================================
9200 # Check for system libxslt
9201 # to prevent incompatibilities between internal libxml2 and external libxslt,
9202 # or vice versa, use with_system_libxml here
9203 # ===================================================================
9204 if test "$with_system_libxml" = "auto"; then
9205     case "$_os" in
9206     WINNT|iOS|Android)
9207         with_system_libxml="$with_system_libs"
9208         ;;
9209     *)
9210         if test "$enable_fuzzers" != "yes"; then
9211             with_system_libxml=yes
9212         else
9213             with_system_libxml=no
9214         fi
9215         ;;
9216     esac
9219 AC_MSG_CHECKING([which libxslt to use])
9220 if test "$with_system_libxml" = "yes"; then
9221     AC_MSG_RESULT([external])
9222     SYSTEM_LIBXSLT=TRUE
9223     if test "$_os" = "Darwin"; then
9224         dnl make sure to use SDK path
9225         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9226         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9227         dnl omit -L/usr/lib
9228         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9229         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9230     else
9231         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9232         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9233         FilterLibs "${LIBXSLT_LIBS}"
9234         LIBXSLT_LIBS="${filteredlibs}"
9235         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9236         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9237         FilterLibs "${LIBEXSLT_LIBS}"
9238         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9239     fi
9241     dnl Check for xsltproc
9242     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9243     if test "$XSLTPROC" = "no"; then
9244         AC_MSG_ERROR([xsltproc is required])
9245     fi
9246 else
9247     AC_MSG_RESULT([internal])
9248     SYSTEM_LIBXSLT=
9249     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9251 AC_SUBST(SYSTEM_LIBXSLT)
9252 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9253     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9255 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9257 AC_SUBST(LIBEXSLT_CFLAGS)
9258 AC_SUBST(LIBEXSLT_LIBS)
9259 AC_SUBST(LIBXSLT_CFLAGS)
9260 AC_SUBST(LIBXSLT_LIBS)
9261 AC_SUBST(XSLTPROC)
9263 # ===================================================================
9264 # Check for system libxml
9265 # ===================================================================
9266 AC_MSG_CHECKING([which libxml to use])
9267 if test "$with_system_libxml" = "yes"; then
9268     AC_MSG_RESULT([external])
9269     SYSTEM_LIBXML=TRUE
9270     if test "$_os" = "Darwin"; then
9271         dnl make sure to use SDK path
9272         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9273         dnl omit -L/usr/lib
9274         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9275     elif test $_os = iOS; then
9276         dnl make sure to use SDK path
9277         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9278         LIBXML_CFLAGS="-I$usr/include/libxml2"
9279         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9280     else
9281         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9282         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9283         FilterLibs "${LIBXML_LIBS}"
9284         LIBXML_LIBS="${filteredlibs}"
9285     fi
9287     dnl Check for xmllint
9288     AC_PATH_PROG(XMLLINT, xmllint, no)
9289     if test "$XMLLINT" = "no"; then
9290         AC_MSG_ERROR([xmllint is required])
9291     fi
9292 else
9293     AC_MSG_RESULT([internal])
9294     SYSTEM_LIBXML=
9295     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9296     if test "$COM" = "MSC"; then
9297         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9298     fi
9299     if test "$COM" = "MSC"; then
9300         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9301     else
9302         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9303         if test "$_os" = Android; then
9304             LIBXML_LIBS="$LIBXML_LIBS -lm"
9305         fi
9306     fi
9307     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9309 AC_SUBST(SYSTEM_LIBXML)
9310 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9311     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9313 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9314 AC_SUBST(LIBXML_CFLAGS)
9315 AC_SUBST(LIBXML_LIBS)
9316 AC_SUBST(XMLLINT)
9318 # =====================================================================
9319 # Checking for a Python interpreter with version >= 3.3.
9320 # Optionally user can pass an option to configure, i. e.
9321 # ./configure PYTHON=/usr/bin/python
9322 # =====================================================================
9323 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9324     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9325     enable_python=internal
9327 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9328     if test -n "$PYTHON"; then
9329         PYTHON_FOR_BUILD=$PYTHON
9330     else
9331         # This allows a lack of system python with no error, we use internal one in that case.
9332         AM_PATH_PYTHON([3.3],, [:])
9333         # Clean PYTHON_VERSION checked below if cross-compiling
9334         PYTHON_VERSION=""
9335         if test "$PYTHON" != ":"; then
9336             PYTHON_FOR_BUILD=$PYTHON
9337         fi
9338     fi
9340 AC_SUBST(PYTHON_FOR_BUILD)
9342 # Checks for Python to use for Pyuno
9343 AC_MSG_CHECKING([which Python to use for Pyuno])
9344 case "$enable_python" in
9345 no|disable)
9346     if test -z $PYTHON_FOR_BUILD; then
9347         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9348         # requirement from the choice whether to include Python stuff in the installer, but why
9349         # bother?
9350         AC_MSG_ERROR([Python is required at build time.])
9351     fi
9352     enable_python=no
9353     AC_MSG_RESULT([none])
9354     ;;
9355 ""|yes|auto)
9356     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9357         AC_MSG_RESULT([no, overridden by --disable-scripting])
9358         enable_python=no
9359     elif test $build_os = cygwin; then
9360         dnl When building on Windows we don't attempt to use any installed
9361         dnl "system"  Python.
9362         AC_MSG_RESULT([fully internal])
9363         enable_python=internal
9364     elif test "$cross_compiling" = yes; then
9365         AC_MSG_RESULT([system])
9366         enable_python=system
9367     else
9368         # Unset variables set by the above AM_PATH_PYTHON so that
9369         # we actually do check anew.
9370         AC_MSG_RESULT([])
9371         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
9372         AM_PATH_PYTHON([3.3],, [:])
9373         AC_MSG_CHECKING([which Python to use for Pyuno])
9374         if test "$PYTHON" = ":"; then
9375             if test -z "$PYTHON_FOR_BUILD"; then
9376                 AC_MSG_RESULT([fully internal])
9377             else
9378                 AC_MSG_RESULT([internal])
9379             fi
9380             enable_python=internal
9381         else
9382             AC_MSG_RESULT([system])
9383             enable_python=system
9384         fi
9385     fi
9386     ;;
9387 internal)
9388     AC_MSG_RESULT([internal])
9389     ;;
9390 fully-internal)
9391     AC_MSG_RESULT([fully internal])
9392     enable_python=internal
9393     ;;
9394 system)
9395     AC_MSG_RESULT([system])
9396     if test "$_os" = Darwin; then
9397         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9398     fi
9399     ;;
9401     AC_MSG_ERROR([Incorrect --enable-python option])
9402     ;;
9403 esac
9405 if test $enable_python != no; then
9406     BUILD_TYPE="$BUILD_TYPE PYUNO"
9409 if test $enable_python = system; then
9410     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9411         # Fallback: Accept these in the environment, or as set above
9412         # for MacOSX.
9413         :
9414     elif test "$cross_compiling" != yes; then
9415         # Unset variables set by the above AM_PATH_PYTHON so that
9416         # we actually do check anew.
9417         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
9418         # This causes an error if no python command is found
9419         AM_PATH_PYTHON([3.3])
9420         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9421         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9422         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9423         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9424         if test -z "$PKG_CONFIG"; then
9425             PYTHON_CFLAGS="-I$python_include"
9426             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9427         elif $PKG_CONFIG --exists python-$python_version-embed; then
9428             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9429             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9430         elif $PKG_CONFIG --exists python-$python_version; then
9431             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9432             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9433         else
9434             PYTHON_CFLAGS="-I$python_include"
9435             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9436         fi
9437         FilterLibs "${PYTHON_LIBS}"
9438         PYTHON_LIBS="${filteredlibs}"
9439     else
9440         dnl How to find out the cross-compilation Python installation path?
9441         AC_MSG_CHECKING([for python version])
9442         AS_IF([test -n "$PYTHON_VERSION"],
9443               [AC_MSG_RESULT([$PYTHON_VERSION])],
9444               [AC_MSG_RESULT([not found])
9445                AC_MSG_ERROR([no usable python found])])
9446         test -n "$PYTHON_CFLAGS" && break
9447     fi
9449     dnl Check if the headers really work
9450     save_CPPFLAGS="$CPPFLAGS"
9451     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9452     AC_CHECK_HEADER(Python.h)
9453     CPPFLAGS="$save_CPPFLAGS"
9455     # let the PYTHON_FOR_BUILD match the same python installation that
9456     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9457     # better for PythonTests.
9458     PYTHON_FOR_BUILD=$PYTHON
9461 if test "$with_lxml" != no; then
9462     if test -z "$PYTHON_FOR_BUILD"; then
9463         case $build_os in
9464             cygwin)
9465                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9466                 ;;
9467             *)
9468                 if test "$cross_compiling" != yes ; then
9469                     BUILD_TYPE="$BUILD_TYPE LXML"
9470                 fi
9471                 ;;
9472         esac
9473     else
9474         AC_MSG_CHECKING([for python lxml])
9475         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9476             AC_MSG_RESULT([yes])
9477         else
9478             case $build_os in
9479                 cygwin)
9480                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9481                     ;;
9482                 *)
9483                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9484                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9485                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9486                         else
9487                             BUILD_TYPE="$BUILD_TYPE LXML"
9488                             AC_MSG_RESULT([no, using internal lxml])
9489                         fi
9490                     else
9491                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9492                     fi
9493                     ;;
9494             esac
9495         fi
9496     fi
9499 dnl By now enable_python should be "system", "internal" or "no"
9500 case $enable_python in
9501 system)
9502     SYSTEM_PYTHON=TRUE
9504     if test "x$ac_cv_header_Python_h" != "xyes"; then
9505        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9506     fi
9508     AC_LANG_PUSH(C)
9509     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9510     AC_MSG_CHECKING([for correct python library version])
9511        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9512 #include <Python.h>
9514 int main(int argc, char **argv) {
9515    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9516    else return 1;
9518        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9519     AC_LANG_POP(C)
9521     dnl FIXME Check if the Python library can be linked with, too?
9522     ;;
9524 internal)
9525     SYSTEM_PYTHON=
9526     PYTHON_VERSION_MAJOR=3
9527     PYTHON_VERSION_MINOR=8
9528     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.8
9529     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9530         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9531     fi
9532     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9533     BUILD_TYPE="$BUILD_TYPE PYTHON"
9534     if test "$OS" = LINUX -o "$OS" = WNT ; then
9535         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9536     fi
9537     # Embedded Python dies without Home set
9538     if test "$HOME" = ""; then
9539         export HOME=""
9540     fi
9541     ;;
9543     DISABLE_PYTHON=TRUE
9544     SYSTEM_PYTHON=
9545     ;;
9547     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9548     ;;
9549 esac
9551 AC_SUBST(DISABLE_PYTHON)
9552 AC_SUBST(SYSTEM_PYTHON)
9553 AC_SUBST(PYTHON_CFLAGS)
9554 AC_SUBST(PYTHON_LIBS)
9555 AC_SUBST(PYTHON_VERSION)
9556 AC_SUBST(PYTHON_VERSION_MAJOR)
9557 AC_SUBST(PYTHON_VERSION_MINOR)
9559 ENABLE_MARIADBC=
9560 MARIADBC_MAJOR=1
9561 MARIADBC_MINOR=0
9562 MARIADBC_MICRO=2
9563 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9564 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9565     ENABLE_MARIADBC=TRUE
9566     AC_MSG_RESULT([yes])
9567     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9568 else
9569     AC_MSG_RESULT([no])
9571 AC_SUBST(ENABLE_MARIADBC)
9572 AC_SUBST(MARIADBC_MAJOR)
9573 AC_SUBST(MARIADBC_MINOR)
9574 AC_SUBST(MARIADBC_MICRO)
9576 if test "$ENABLE_MARIADBC" = "TRUE"; then
9577     dnl ===================================================================
9578     dnl Check for system MariaDB
9579     dnl ===================================================================
9580     AC_MSG_CHECKING([which MariaDB to use])
9581     if test "$with_system_mariadb" = "yes"; then
9582         AC_MSG_RESULT([external])
9583         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9584         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9585         if test -z "$MARIADBCONFIG"; then
9586             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9587             if test -z "$MARIADBCONFIG"; then
9588                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9589                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9590             fi
9591         fi
9592         AC_MSG_CHECKING([MariaDB version])
9593         MARIADB_VERSION=`$MARIADBCONFIG --version`
9594         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9595         if test "$MARIADB_MAJOR" -ge "5"; then
9596             AC_MSG_RESULT([OK])
9597         else
9598             AC_MSG_ERROR([too old, use 5.0.x or later])
9599         fi
9600         AC_MSG_CHECKING([for MariaDB Client library])
9601         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9602         if test "$COM_IS_CLANG" = TRUE; then
9603             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9604         fi
9605         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9606         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9607         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9608         dnl linux32:
9609         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9610             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9611             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9612                 | sed -e 's|/lib64/|/lib/|')
9613         fi
9614         FilterLibs "${MARIADB_LIBS}"
9615         MARIADB_LIBS="${filteredlibs}"
9616         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9617         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9618         if test "$enable_bundle_mariadb" = "yes"; then
9619             AC_MSG_RESULT([yes])
9620             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9621             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9623 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9625 /g' | grep -E '(mysqlclient|mariadb)')
9626             if test "$_os" = "Darwin"; then
9627                 LIBMARIADB=${LIBMARIADB}.dylib
9628             elif test "$_os" = "WINNT"; then
9629                 LIBMARIADB=${LIBMARIADB}.dll
9630             else
9631                 LIBMARIADB=${LIBMARIADB}.so
9632             fi
9633             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9634             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9635             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9636                 AC_MSG_RESULT([found.])
9637                 PathFormat "$LIBMARIADB_PATH"
9638                 LIBMARIADB_PATH="$formatted_path"
9639             else
9640                 AC_MSG_ERROR([not found.])
9641             fi
9642         else
9643             AC_MSG_RESULT([no])
9644             BUNDLE_MARIADB_CONNECTOR_C=
9645         fi
9646     else
9647         AC_MSG_RESULT([internal])
9648         SYSTEM_MARIADB_CONNECTOR_C=
9649         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9650         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9651         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9652     fi
9654     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9655     AC_SUBST(MARIADB_CFLAGS)
9656     AC_SUBST(MARIADB_LIBS)
9657     AC_SUBST(LIBMARIADB)
9658     AC_SUBST(LIBMARIADB_PATH)
9659     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9662 dnl ===================================================================
9663 dnl Check for system hsqldb
9664 dnl ===================================================================
9665 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9666     HSQLDB_USE_JDBC_4_1=
9667     AC_MSG_CHECKING([which hsqldb to use])
9668     if test "$with_system_hsqldb" = "yes"; then
9669         AC_MSG_RESULT([external])
9670         SYSTEM_HSQLDB=TRUE
9671         if test -z $HSQLDB_JAR; then
9672             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9673         fi
9674         if ! test -f $HSQLDB_JAR; then
9675                AC_MSG_ERROR(hsqldb.jar not found.)
9676         fi
9677         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9678         export HSQLDB_JAR
9679         if $PERL -e \
9680            'use Archive::Zip;
9681             my $file = "$ENV{'HSQLDB_JAR'}";
9682             my $zip = Archive::Zip->new( $file );
9683             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9684             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9685             {
9686                 push @l, split(/\n/, $mf);
9687                 foreach my $line (@l)
9688                 {
9689                     if ($line =~ m/Specification-Version:/)
9690                     {
9691                         ($t, $version) = split (/:/,$line);
9692                         $version =~ s/^\s//;
9693                         ($a, $b, $c, $d) = split (/\./,$version);
9694                         if ($c == "0" && $d > "8")
9695                         {
9696                             exit 0;
9697                         }
9698                         else
9699                         {
9700                             exit 1;
9701                         }
9702                     }
9703                 }
9704             }
9705             else
9706             {
9707                 exit 1;
9708             }'; then
9709             AC_MSG_RESULT([yes])
9710         else
9711             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9712         fi
9713     else
9714         AC_MSG_RESULT([internal])
9715         SYSTEM_HSQLDB=
9716         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9717         NEED_ANT=TRUE
9718         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9719         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9720         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9721             AC_MSG_RESULT([yes])
9722             HSQLDB_USE_JDBC_4_1=TRUE
9723         else
9724             AC_MSG_RESULT([no])
9725         fi
9726     fi
9727 else
9728     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9729         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9730     fi
9732 AC_SUBST(SYSTEM_HSQLDB)
9733 AC_SUBST(HSQLDB_JAR)
9734 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9736 dnl ===================================================================
9737 dnl Check for PostgreSQL stuff
9738 dnl ===================================================================
9739 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9740 if test "x$enable_postgresql_sdbc" != "xno"; then
9741     AC_MSG_RESULT([yes])
9742     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9744     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9745         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9746     fi
9747     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9748         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9749     fi
9751     postgres_interface=""
9752     if test "$with_system_postgresql" = "yes"; then
9753         postgres_interface="external PostgreSQL"
9754         SYSTEM_POSTGRESQL=TRUE
9755         if test "$_os" = Darwin; then
9756             supp_path=''
9757             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9758                 pg_supp_path="$P_SEP$d$pg_supp_path"
9759             done
9760         fi
9761         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9762         if test -n "$PGCONFIG"; then
9763             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9764             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9765         else
9766             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9767               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9768               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9769             ],[
9770               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9771             ])
9772         fi
9773         FilterLibs "${POSTGRESQL_LIB}"
9774         POSTGRESQL_LIB="${filteredlibs}"
9775     else
9776         # if/when anything else than PostgreSQL uses Kerberos,
9777         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9778         WITH_KRB5=
9779         WITH_GSSAPI=
9780         case "$_os" in
9781         Darwin)
9782             # macOS has system MIT Kerberos 5 since 10.4
9783             if test "$with_krb5" != "no"; then
9784                 WITH_KRB5=TRUE
9785                 save_LIBS=$LIBS
9786                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9787                 # that the libraries where these functions are located on macOS will change, is it?
9788                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9789                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9790                 KRB5_LIBS=$LIBS
9791                 LIBS=$save_LIBS
9792                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9793                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9794                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9795                 LIBS=$save_LIBS
9796             fi
9797             if test "$with_gssapi" != "no"; then
9798                 WITH_GSSAPI=TRUE
9799                 save_LIBS=$LIBS
9800                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9801                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9802                 GSSAPI_LIBS=$LIBS
9803                 LIBS=$save_LIBS
9804             fi
9805             ;;
9806         WINNT)
9807             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9808                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9809             fi
9810             ;;
9811         Linux|GNU|*BSD|DragonFly)
9812             if test "$with_krb5" != "no"; then
9813                 WITH_KRB5=TRUE
9814                 save_LIBS=$LIBS
9815                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9816                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9817                 KRB5_LIBS=$LIBS
9818                 LIBS=$save_LIBS
9819                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9820                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9821                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9822                 LIBS=$save_LIBS
9823             fi
9824             if test "$with_gssapi" != "no"; then
9825                 WITH_GSSAPI=TRUE
9826                 save_LIBS=$LIBS
9827                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9828                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9829                 GSSAPI_LIBS=$LIBS
9830                 LIBS=$save_LIBS
9831             fi
9832             ;;
9833         *)
9834             if test "$with_krb5" = "yes"; then
9835                 WITH_KRB5=TRUE
9836                 save_LIBS=$LIBS
9837                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9838                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9839                 KRB5_LIBS=$LIBS
9840                 LIBS=$save_LIBS
9841                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9842                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9843                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9844                 LIBS=$save_LIBS
9845             fi
9846             if test "$with_gssapi" = "yes"; then
9847                 WITH_GSSAPI=TRUE
9848                 save_LIBS=$LIBS
9849                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9850                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9851                 LIBS=$save_LIBS
9852                 GSSAPI_LIBS=$LIBS
9853             fi
9854         esac
9856         if test -n "$with_libpq_path"; then
9857             SYSTEM_POSTGRESQL=TRUE
9858             postgres_interface="external libpq"
9859             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9860             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9861         else
9862             SYSTEM_POSTGRESQL=
9863             postgres_interface="internal"
9864             POSTGRESQL_LIB=""
9865             POSTGRESQL_INC="%OVERRIDE_ME%"
9866             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9867         fi
9868     fi
9870     AC_MSG_CHECKING([PostgreSQL C interface])
9871     AC_MSG_RESULT([$postgres_interface])
9873     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9874         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9875         save_CFLAGS=$CFLAGS
9876         save_CPPFLAGS=$CPPFLAGS
9877         save_LIBS=$LIBS
9878         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9879         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9880         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9881         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9882             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9883         CFLAGS=$save_CFLAGS
9884         CPPFLAGS=$save_CPPFLAGS
9885         LIBS=$save_LIBS
9886     fi
9887     BUILD_POSTGRESQL_SDBC=TRUE
9888 else
9889     AC_MSG_RESULT([no])
9891 AC_SUBST(WITH_KRB5)
9892 AC_SUBST(WITH_GSSAPI)
9893 AC_SUBST(GSSAPI_LIBS)
9894 AC_SUBST(KRB5_LIBS)
9895 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9896 AC_SUBST(SYSTEM_POSTGRESQL)
9897 AC_SUBST(POSTGRESQL_INC)
9898 AC_SUBST(POSTGRESQL_LIB)
9900 dnl ===================================================================
9901 dnl Check for Firebird stuff
9902 dnl ===================================================================
9903 ENABLE_FIREBIRD_SDBC=
9904 if test "$enable_firebird_sdbc" = "yes" ; then
9905     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9907     dnl ===================================================================
9908     dnl Check for system Firebird
9909     dnl ===================================================================
9910     AC_MSG_CHECKING([which Firebird to use])
9911     if test "$with_system_firebird" = "yes"; then
9912         AC_MSG_RESULT([external])
9913         SYSTEM_FIREBIRD=TRUE
9914         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9915         if test -z "$FIREBIRDCONFIG"; then
9916             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9917             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9918                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9919             ])
9920             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9921         else
9922             AC_MSG_NOTICE([fb_config found])
9923             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9924             AC_MSG_CHECKING([for Firebird Client library])
9925             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9926             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9927             FilterLibs "${FIREBIRD_LIBS}"
9928             FIREBIRD_LIBS="${filteredlibs}"
9929         fi
9930         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9931         AC_MSG_CHECKING([Firebird version])
9932         if test -n "${FIREBIRD_VERSION}"; then
9933             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9934             if test "$FIREBIRD_MAJOR" -ge "3"; then
9935                 AC_MSG_RESULT([OK])
9936             else
9937                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
9938             fi
9939         else
9940             save_CFLAGS="${CFLAGS}"
9941             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9942             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9943 #if defined(FB_API_VER) && FB_API_VER == 30
9944 int fb_api_is_30(void) { return 0; }
9945 #else
9946 #error "Wrong Firebird API version"
9947 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9948             CFLAGS="$save_CFLAGS"
9949         fi
9950         ENABLE_FIREBIRD_SDBC=TRUE
9951         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9952     elif test "$enable_database_connectivity" != yes; then
9953         AC_MSG_RESULT([none])
9954     elif test "$cross_compiling" = "yes"; then
9955         AC_MSG_RESULT([none])
9956     else
9957         dnl Embedded Firebird has version 3.0
9958         dnl We need libatomic_ops for any non X86/X64 system
9959         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9960             dnl ===================================================================
9961             dnl Check for system libatomic_ops
9962             dnl ===================================================================
9963             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9964             if test "$with_system_libatomic_ops" = "yes"; then
9965                 SYSTEM_LIBATOMIC_OPS=TRUE
9966                 AC_CHECK_HEADERS(atomic_ops.h, [],
9967                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9968             else
9969                 SYSTEM_LIBATOMIC_OPS=
9970                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9971                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9972                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9973             fi
9974         fi
9976         AC_MSG_RESULT([internal])
9977         SYSTEM_FIREBIRD=
9978         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9979         FIREBIRD_LIBS="-lfbclient"
9981         if test "$with_system_libtommath" = "yes"; then
9982             SYSTEM_LIBTOMMATH=TRUE
9983             dnl check for tommath presence
9984             save_LIBS=$LIBS
9985             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9986             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9987             LIBS=$save_LIBS
9988         else
9989             SYSTEM_LIBTOMMATH=
9990             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9991             LIBTOMMATH_LIBS="-ltommath"
9992             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9993         fi
9995         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9996         ENABLE_FIREBIRD_SDBC=TRUE
9997         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9998     fi
10000 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10001 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10002 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10003 AC_SUBST(LIBATOMIC_OPS_LIBS)
10004 AC_SUBST(SYSTEM_FIREBIRD)
10005 AC_SUBST(FIREBIRD_CFLAGS)
10006 AC_SUBST(FIREBIRD_LIBS)
10007 AC_SUBST(SYSTEM_LIBTOMMATH)
10008 AC_SUBST(LIBTOMMATH_CFLAGS)
10009 AC_SUBST(LIBTOMMATH_LIBS)
10011 dnl ===================================================================
10012 dnl Check for system curl
10013 dnl ===================================================================
10014 AC_MSG_CHECKING([which libcurl to use])
10015 if test "$with_system_curl" = "auto"; then
10016     with_system_curl="$with_system_libs"
10019 if test "$with_system_curl" = "yes"; then
10020     AC_MSG_RESULT([external])
10021     SYSTEM_CURL=TRUE
10023     # First try PKGCONFIG and then fall back
10024     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10026     if test -n "$CURL_PKG_ERRORS"; then
10027         AC_PATH_PROG(CURLCONFIG, curl-config)
10028         if test -z "$CURLCONFIG"; then
10029             AC_MSG_ERROR([curl development files not found])
10030         fi
10031         CURL_LIBS=`$CURLCONFIG --libs`
10032         FilterLibs "${CURL_LIBS}"
10033         CURL_LIBS="${filteredlibs}"
10034         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10035         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10037         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10038         case $curl_version in
10039         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10040         dnl so they need to be doubled to end up in the configure script
10041         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10042             AC_MSG_RESULT([yes])
10043             ;;
10044         *)
10045             AC_MSG_ERROR([no, you have $curl_version])
10046             ;;
10047         esac
10048     fi
10050     ENABLE_CURL=TRUE
10051 else
10052     AC_MSG_RESULT([internal])
10053     SYSTEM_CURL=
10054     BUILD_TYPE="$BUILD_TYPE CURL"
10055     ENABLE_CURL=TRUE
10057 AC_SUBST(SYSTEM_CURL)
10058 AC_SUBST(CURL_CFLAGS)
10059 AC_SUBST(CURL_LIBS)
10060 AC_SUBST(ENABLE_CURL)
10062 dnl ===================================================================
10063 dnl Check for system boost
10064 dnl ===================================================================
10065 AC_MSG_CHECKING([which boost to use])
10066 if test "$with_system_boost" = "yes"; then
10067     AC_MSG_RESULT([external])
10068     SYSTEM_BOOST=TRUE
10069     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10070     AX_BOOST_DATE_TIME
10071     AX_BOOST_FILESYSTEM
10072     AX_BOOST_IOSTREAMS
10073     AX_BOOST_LOCALE
10074     AC_LANG_PUSH([C++])
10075     save_CXXFLAGS=$CXXFLAGS
10076     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10077     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10078        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10079     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10080        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10081     CXXFLAGS=$save_CXXFLAGS
10082     AC_LANG_POP([C++])
10083     # this is in m4/ax_boost_base.m4
10084     FilterLibs "${BOOST_LDFLAGS}"
10085     BOOST_LDFLAGS="${filteredlibs}"
10086 else
10087     AC_MSG_RESULT([internal])
10088     BUILD_TYPE="$BUILD_TYPE BOOST"
10089     SYSTEM_BOOST=
10090     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10091         # use warning-suppressing wrapper headers
10092         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10093     else
10094         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10095     fi
10097 AC_SUBST(SYSTEM_BOOST)
10099 dnl ===================================================================
10100 dnl Check for system mdds
10101 dnl ===================================================================
10102 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10104 dnl ===================================================================
10105 dnl Check for system glm
10106 dnl ===================================================================
10107 AC_MSG_CHECKING([which glm to use])
10108 if test "$with_system_glm" = "yes"; then
10109     AC_MSG_RESULT([external])
10110     SYSTEM_GLM=TRUE
10111     AC_LANG_PUSH([C++])
10112     AC_CHECK_HEADER([glm/glm.hpp], [],
10113        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10114     AC_LANG_POP([C++])
10115 else
10116     AC_MSG_RESULT([internal])
10117     BUILD_TYPE="$BUILD_TYPE GLM"
10118     SYSTEM_GLM=
10119     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10121 AC_SUBST([GLM_CFLAGS])
10122 AC_SUBST([SYSTEM_GLM])
10124 dnl ===================================================================
10125 dnl Check for system odbc
10126 dnl ===================================================================
10127 AC_MSG_CHECKING([which odbc headers to use])
10128 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
10129     AC_MSG_RESULT([external])
10130     SYSTEM_ODBC_HEADERS=TRUE
10132     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10133         save_CPPFLAGS=$CPPFLAGS
10134         find_winsdk
10135         PathFormat "$winsdktest"
10136         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"
10137         AC_CHECK_HEADER(sqlext.h, [],
10138             [AC_MSG_ERROR(odbc not found. install odbc)],
10139             [#include <windows.h>])
10140         CPPFLAGS=$save_CPPFLAGS
10141     else
10142         AC_CHECK_HEADER(sqlext.h, [],
10143             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10144     fi
10145 elif test "$enable_database_connectivity" != yes; then
10146     AC_MSG_RESULT([none])
10147 else
10148     AC_MSG_RESULT([internal])
10149     SYSTEM_ODBC_HEADERS=
10151 AC_SUBST(SYSTEM_ODBC_HEADERS)
10153 dnl ===================================================================
10154 dnl Enable LDAP support
10155 dnl ===================================================================
10157 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10158 AC_MSG_CHECKING([whether to enable LDAP support])
10159     if test "$enable_ldap" != "yes"; then
10160         AC_MSG_RESULT([no])
10161         ENABLE_LDAP=""
10162         enable_ldap=no
10163     else
10164         AC_MSG_RESULT([yes])
10165         ENABLE_LDAP="TRUE"
10166     fi
10168 AC_SUBST(ENABLE_LDAP)
10170 dnl ===================================================================
10171 dnl Check for system openldap
10172 dnl ===================================================================
10174 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10175 AC_MSG_CHECKING([which openldap library to use])
10176 if test "$with_system_openldap" = "yes"; then
10177     AC_MSG_RESULT([external])
10178     SYSTEM_OPENLDAP=TRUE
10179     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10180     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10181     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10182 else
10183     AC_MSG_RESULT([internal])
10184     SYSTEM_OPENLDAP=
10185     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10188 AC_SUBST(SYSTEM_OPENLDAP)
10190 dnl ===================================================================
10191 dnl Check for system NSS
10192 dnl ===================================================================
10193 if test "$enable_fuzzers" != "yes"; then
10194     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10195     AC_DEFINE(HAVE_FEATURE_NSS)
10196     ENABLE_NSS="TRUE"
10197     AC_DEFINE(ENABLE_NSS)
10198 elif test $_os != iOS ; then
10199     with_tls=openssl
10201 AC_SUBST(ENABLE_NSS)
10203 dnl ===================================================================
10204 dnl Check for TLS/SSL and cryptographic implementation to use
10205 dnl ===================================================================
10206 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10207 if test -n "$with_tls"; then
10208     case $with_tls in
10209     openssl)
10210         AC_DEFINE(USE_TLS_OPENSSL)
10211         TLS=OPENSSL
10212         AC_MSG_RESULT([$TLS])
10214         if test "$enable_openssl" != "yes"; then
10215             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10216         fi
10218         # warn that OpenSSL has been selected but not all TLS code has this option
10219         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10220         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10221         ;;
10222     nss)
10223         AC_DEFINE(USE_TLS_NSS)
10224         TLS=NSS
10225         AC_MSG_RESULT([$TLS])
10226         ;;
10227     no)
10228         AC_MSG_RESULT([none])
10229         AC_MSG_WARN([Skipping TLS/SSL])
10230         ;;
10231     *)
10232         AC_MSG_RESULT([])
10233         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10234 openssl - OpenSSL
10235 nss - Mozilla's Network Security Services (NSS)
10236     ])
10237         ;;
10238     esac
10239 else
10240     # default to using NSS, it results in smaller oox lib
10241     AC_DEFINE(USE_TLS_NSS)
10242     TLS=NSS
10243     AC_MSG_RESULT([$TLS])
10245 AC_SUBST(TLS)
10247 dnl ===================================================================
10248 dnl Check for system sane
10249 dnl ===================================================================
10250 AC_MSG_CHECKING([which sane header to use])
10251 if test "$with_system_sane" = "yes"; then
10252     AC_MSG_RESULT([external])
10253     AC_CHECK_HEADER(sane/sane.h, [],
10254       [AC_MSG_ERROR(sane not found. install sane)], [])
10255 else
10256     AC_MSG_RESULT([internal])
10257     BUILD_TYPE="$BUILD_TYPE SANE"
10260 dnl ===================================================================
10261 dnl Check for system icu
10262 dnl ===================================================================
10263 SYSTEM_GENBRK=
10264 SYSTEM_GENCCODE=
10265 SYSTEM_GENCMN=
10267 ICU_MAJOR=68
10268 ICU_MINOR=1
10269 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10270 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10271 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10272 AC_MSG_CHECKING([which icu to use])
10273 if test "$with_system_icu" = "yes"; then
10274     AC_MSG_RESULT([external])
10275     SYSTEM_ICU=TRUE
10276     AC_LANG_PUSH([C++])
10277     AC_MSG_CHECKING([for unicode/rbbi.h])
10278     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10279     AC_LANG_POP([C++])
10281     if test "$cross_compiling" != "yes"; then
10282         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10283         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10284         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10285         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10286     fi
10288     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10289         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10290         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10291         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10292         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10293         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10294             AC_MSG_RESULT([yes])
10295         else
10296             AC_MSG_RESULT([no])
10297             if test "$with_system_icu_for_build" != "force"; then
10298                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10299 You can use --with-system-icu-for-build=force to use it anyway.])
10300             fi
10301         fi
10302     fi
10304     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10305         # using the system icu tools can lead to version confusion, use the
10306         # ones from the build environment when cross-compiling
10307         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10308         if test -z "$SYSTEM_GENBRK"; then
10309             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10310         fi
10311         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10312         if test -z "$SYSTEM_GENCCODE"; then
10313             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10314         fi
10315         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10316         if test -z "$SYSTEM_GENCMN"; then
10317             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10318         fi
10319         if test "$ICU_MAJOR" -ge "49"; then
10320             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10321             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10322             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10323         else
10324             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10325             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10326             ICU_RECLASSIFIED_HEBREW_LETTER=
10327         fi
10328     fi
10330     if test "$cross_compiling" = "yes"; then
10331         if test "$ICU_MAJOR" -ge "50"; then
10332             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10333             ICU_MINOR=""
10334         fi
10335     fi
10336 else
10337     AC_MSG_RESULT([internal])
10338     SYSTEM_ICU=
10339     BUILD_TYPE="$BUILD_TYPE ICU"
10340     # surprisingly set these only for "internal" (to be used by various other
10341     # external libs): the system icu-config is quite unhelpful and spits out
10342     # dozens of weird flags and also default path -I/usr/include
10343     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10344     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10346 if test "$ICU_MAJOR" -ge "59"; then
10347     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10348     # with -std=c++11 but not all external libraries can be built with that,
10349     # for those use a bit-compatible typedef uint16_t UChar; see
10350     # icu/source/common/unicode/umachine.h
10351     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10352 else
10353     ICU_UCHAR_TYPE=""
10355 AC_SUBST(SYSTEM_ICU)
10356 AC_SUBST(SYSTEM_GENBRK)
10357 AC_SUBST(SYSTEM_GENCCODE)
10358 AC_SUBST(SYSTEM_GENCMN)
10359 AC_SUBST(ICU_MAJOR)
10360 AC_SUBST(ICU_MINOR)
10361 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10362 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10363 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10364 AC_SUBST(ICU_CFLAGS)
10365 AC_SUBST(ICU_LIBS)
10366 AC_SUBST(ICU_UCHAR_TYPE)
10368 dnl ==================================================================
10369 dnl Breakpad
10370 dnl ==================================================================
10371 DEFAULT_CRASHDUMP_VALUE="true"
10372 AC_MSG_CHECKING([whether to enable breakpad])
10373 if test "$enable_breakpad" != yes; then
10374     AC_MSG_RESULT([no])
10375 else
10376     AC_MSG_RESULT([yes])
10377     ENABLE_BREAKPAD="TRUE"
10378     AC_DEFINE(ENABLE_BREAKPAD)
10379     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10380     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10382     AC_MSG_CHECKING([for disable crash dump])
10383     if test "$enable_crashdump" = no; then
10384         DEFAULT_CRASHDUMP_VALUE="false"
10385         AC_MSG_RESULT([yes])
10386     else
10387        AC_MSG_RESULT([no])
10388     fi
10390     AC_MSG_CHECKING([for crashreport config])
10391     if test "$with_symbol_config" = "no"; then
10392         BREAKPAD_SYMBOL_CONFIG="invalid"
10393         AC_MSG_RESULT([no])
10394     else
10395         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10396         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10397         AC_MSG_RESULT([yes])
10398     fi
10399     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10401 AC_SUBST(ENABLE_BREAKPAD)
10402 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10404 dnl ==================================================================
10405 dnl libfuzzer
10406 dnl ==================================================================
10407 AC_MSG_CHECKING([whether to enable fuzzers])
10408 if test "$enable_fuzzers" != yes; then
10409     AC_MSG_RESULT([no])
10410 else
10411     AC_MSG_RESULT([yes])
10412     ENABLE_FUZZERS="TRUE"
10413     AC_DEFINE([ENABLE_FUZZERS],1)
10414     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10416 AC_SUBST(ENABLE_FUZZERS)
10418 dnl ===================================================================
10419 dnl Orcus
10420 dnl ===================================================================
10421 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10422 if test "$with_system_orcus" != "yes"; then
10423     if test "$SYSTEM_BOOST" = "TRUE"; then
10424         # ===========================================================
10425         # Determine if we are going to need to link with Boost.System
10426         # ===========================================================
10427         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10428         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10429         dnl in documentation has no effect.
10430         AC_MSG_CHECKING([if we need to link with Boost.System])
10431         AC_LANG_PUSH([C++])
10432         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10433                 @%:@include <boost/version.hpp>
10434             ]],[[
10435                 #if BOOST_VERSION >= 105000
10436                 #   error yes, we need to link with Boost.System
10437                 #endif
10438             ]])],[
10439                 AC_MSG_RESULT([no])
10440             ],[
10441                 AC_MSG_RESULT([yes])
10442                 AX_BOOST_SYSTEM
10443         ])
10444         AC_LANG_POP([C++])
10445     fi
10447 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10448 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10449 AC_SUBST([BOOST_SYSTEM_LIB])
10450 AC_SUBST(SYSTEM_LIBORCUS)
10452 dnl ===================================================================
10453 dnl HarfBuzz
10454 dnl ===================================================================
10455 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10456                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10457                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10459 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10460                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10461                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10463 if test "$COM" = "MSC"; then # override the above
10464     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10465     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10468 if test "$with_system_harfbuzz" = "yes"; then
10469     if test "$with_system_graphite" = "no"; then
10470         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10471     fi
10472     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10473     save_LIBS="$LIBS"
10474     save_CFLAGS="$CFLAGS"
10475     LIBS="$LIBS $HARFBUZZ_LIBS"
10476     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10477     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10478     LIBS="$save_LIBS"
10479     CFLAGS="$save_CFLAGS"
10480 else
10481     if test "$with_system_graphite" = "yes"; then
10482         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10483     fi
10486 AC_MSG_CHECKING([whether to use X11])
10487 dnl ***************************************
10488 dnl testing for X libraries and includes...
10489 dnl ***************************************
10490 if test "$USING_X11" = TRUE; then
10491     AC_DEFINE(HAVE_FEATURE_X11)
10493 AC_MSG_RESULT([$USING_X11])
10495 if test "$USING_X11" = TRUE; then
10496     AC_PATH_X
10497     AC_PATH_XTRA
10498     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10500     if test -z "$x_includes"; then
10501         x_includes="default_x_includes"
10502     fi
10503     if test -z "$x_libraries"; then
10504         x_libraries="default_x_libraries"
10505     fi
10506     CFLAGS="$CFLAGS $X_CFLAGS"
10507     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10508     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10509 else
10510     x_includes="no_x_includes"
10511     x_libraries="no_x_libraries"
10514 if test "$USING_X11" = TRUE; then
10515     dnl ===================================================================
10516     dnl Check for extension headers
10517     dnl ===================================================================
10518     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10519      [#include <X11/extensions/shape.h>])
10521     # vcl needs ICE and SM
10522     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10523     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10524         [AC_MSG_ERROR(ICE library not found)])
10525     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10526     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10527         [AC_MSG_ERROR(SM library not found)])
10530 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10531     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10532     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10535 dnl ===================================================================
10536 dnl Check for system Xrender
10537 dnl ===================================================================
10538 AC_MSG_CHECKING([whether to use Xrender])
10539 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10540     AC_MSG_RESULT([yes])
10541     PKG_CHECK_MODULES(XRENDER, xrender)
10542     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10543     FilterLibs "${XRENDER_LIBS}"
10544     XRENDER_LIBS="${filteredlibs}"
10545     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10546       [AC_MSG_ERROR(libXrender not found or functional)], [])
10547     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10548       [AC_MSG_ERROR(Xrender not found. install X)], [])
10549 else
10550     AC_MSG_RESULT([no])
10552 AC_SUBST(XRENDER_CFLAGS)
10553 AC_SUBST(XRENDER_LIBS)
10555 dnl ===================================================================
10556 dnl Check for XRandr
10557 dnl ===================================================================
10558 AC_MSG_CHECKING([whether to enable RandR support])
10559 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10560     AC_MSG_RESULT([yes])
10561     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10562     if test "$ENABLE_RANDR" != "TRUE"; then
10563         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10564                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10565         XRANDR_CFLAGS=" "
10566         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10567           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10568         XRANDR_LIBS="-lXrandr "
10569         ENABLE_RANDR="TRUE"
10570     fi
10571     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10572     FilterLibs "${XRANDR_LIBS}"
10573     XRANDR_LIBS="${filteredlibs}"
10574 else
10575     ENABLE_RANDR=""
10576     AC_MSG_RESULT([no])
10578 AC_SUBST(XRANDR_CFLAGS)
10579 AC_SUBST(XRANDR_LIBS)
10580 AC_SUBST(ENABLE_RANDR)
10582 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10583     if test -z "$WITH_WEBDAV"; then
10584         WITH_WEBDAV="serf"
10585     fi
10587 if test $_os = iOS -o $_os = Android; then
10588     WITH_WEBDAV="no"
10590 AC_MSG_CHECKING([for webdav library])
10591 case "$WITH_WEBDAV" in
10592 serf)
10593     AC_MSG_RESULT([serf])
10594     # Check for system apr-util
10595     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10596                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10597                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10598     if test "$COM" = "MSC"; then
10599         APR_LIB_DIR="LibR"
10600         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10601         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10602     fi
10604     # Check for system serf
10605     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10606                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10607     if test "$COM" = "MSC"; then
10608         SERF_LIB_DIR="Release"
10609         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10610         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10611     fi
10612     ;;
10613 neon)
10614     AC_MSG_RESULT([neon])
10615     # Check for system neon
10616     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10617     if test "$with_system_neon" = "yes"; then
10618         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10619     else
10620         NEON_VERSION=0312
10621     fi
10622     AC_SUBST(NEON_VERSION)
10623     ;;
10625     AC_MSG_RESULT([none, disabled])
10626     WITH_WEBDAV=""
10627     ;;
10628 esac
10629 AC_SUBST(WITH_WEBDAV)
10631 dnl ===================================================================
10632 dnl Check for disabling cve_tests
10633 dnl ===================================================================
10634 AC_MSG_CHECKING([whether to execute CVE tests])
10635 # If not explicitly enabled or disabled, default
10636 if test -z "$enable_cve_tests"; then
10637     case "$OS" in
10638     WNT)
10639         # Default cves off for Windows with its wild and wonderful
10640         # variety of AV software kicking in and panicking
10641         enable_cve_tests=no
10642         ;;
10643     *)
10644         # otherwise yes
10645         enable_cve_tests=yes
10646         ;;
10647     esac
10649 if test "$enable_cve_tests" = "no"; then
10650     AC_MSG_RESULT([no])
10651     DISABLE_CVE_TESTS=TRUE
10652     AC_SUBST(DISABLE_CVE_TESTS)
10653 else
10654     AC_MSG_RESULT([yes])
10657 dnl ===================================================================
10658 dnl Check for enabling chart XShape tests
10659 dnl ===================================================================
10660 AC_MSG_CHECKING([whether to execute chart XShape tests])
10661 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10662     AC_MSG_RESULT([yes])
10663     ENABLE_CHART_TESTS=TRUE
10664     AC_SUBST(ENABLE_CHART_TESTS)
10665 else
10666     AC_MSG_RESULT([no])
10669 dnl ===================================================================
10670 dnl Check for system openssl
10671 dnl ===================================================================
10672 DISABLE_OPENSSL=
10673 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10674 if test "$enable_openssl" = "yes"; then
10675     AC_MSG_RESULT([no])
10676     if test "$_os" = Darwin ; then
10677         # OpenSSL is deprecated when building for 10.7 or later.
10678         #
10679         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10680         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10682         with_system_openssl=no
10683         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10684     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10685             && test "$with_system_openssl" != "no"; then
10686         with_system_openssl=yes
10687         SYSTEM_OPENSSL=TRUE
10688         OPENSSL_CFLAGS=
10689         OPENSSL_LIBS="-lssl -lcrypto"
10690     else
10691         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10692     fi
10693     if test "$with_system_openssl" = "yes"; then
10694         AC_MSG_CHECKING([whether openssl supports SHA512])
10695         AC_LANG_PUSH([C])
10696         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10697             SHA512_CTX context;
10698 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10699         AC_LANG_POP(C)
10700     fi
10701 else
10702     AC_MSG_RESULT([yes])
10703     DISABLE_OPENSSL=TRUE
10705     # warn that although OpenSSL is disabled, system libraries may depend on it
10706     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10707     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10710 AC_SUBST([DISABLE_OPENSSL])
10712 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10713     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10714         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10715         enable_cipher_openssl_backend=no
10716     else
10717         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10718     fi
10720 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10721 ENABLE_CIPHER_OPENSSL_BACKEND=
10722 if test "$enable_cipher_openssl_backend" = yes; then
10723     AC_MSG_RESULT([yes])
10724     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10725 else
10726     AC_MSG_RESULT([no])
10728 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10730 dnl ===================================================================
10731 dnl Check for building gnutls
10732 dnl ===================================================================
10733 AC_MSG_CHECKING([whether to use gnutls])
10734 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10735     AC_MSG_RESULT([yes])
10736     AM_PATH_LIBGCRYPT()
10737     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10738         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10739                       available in the system to use as replacement.]]))
10740     FilterLibs "${LIBGCRYPT_LIBS}"
10741     LIBGCRYPT_LIBS="${filteredlibs}"
10742 else
10743     AC_MSG_RESULT([no])
10746 AC_SUBST([LIBGCRYPT_CFLAGS])
10747 AC_SUBST([LIBGCRYPT_LIBS])
10749 dnl ===================================================================
10750 dnl Check for system redland
10751 dnl ===================================================================
10752 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10753 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10754 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10755 if test "$with_system_redland" = "yes"; then
10756     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10757             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10758 else
10759     RAPTOR_MAJOR="0"
10760     RASQAL_MAJOR="3"
10761     REDLAND_MAJOR="0"
10763 AC_SUBST(RAPTOR_MAJOR)
10764 AC_SUBST(RASQAL_MAJOR)
10765 AC_SUBST(REDLAND_MAJOR)
10767 dnl ===================================================================
10768 dnl Check for system hunspell
10769 dnl ===================================================================
10770 AC_MSG_CHECKING([which libhunspell to use])
10771 if test "$_os" = iOS; then
10772    AC_MSG_RESULT([none])
10773 elif test "$with_system_hunspell" = "yes"; then
10774     AC_MSG_RESULT([external])
10775     SYSTEM_HUNSPELL=TRUE
10776     AC_LANG_PUSH([C++])
10777     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10778     if test "$HUNSPELL_PC" != "TRUE"; then
10779         AC_CHECK_HEADER(hunspell.hxx, [],
10780             [
10781             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10782             [AC_MSG_ERROR(hunspell headers not found.)], [])
10783             ], [])
10784         AC_CHECK_LIB([hunspell], [main], [:],
10785            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10786         HUNSPELL_LIBS=-lhunspell
10787     fi
10788     AC_LANG_POP([C++])
10789     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10790     FilterLibs "${HUNSPELL_LIBS}"
10791     HUNSPELL_LIBS="${filteredlibs}"
10792 else
10793     AC_MSG_RESULT([internal])
10794     SYSTEM_HUNSPELL=
10795     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10796     if test "$COM" = "MSC"; then
10797         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10798     else
10799         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10800     fi
10801     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10803 AC_SUBST(SYSTEM_HUNSPELL)
10804 AC_SUBST(HUNSPELL_CFLAGS)
10805 AC_SUBST(HUNSPELL_LIBS)
10807 dnl ===================================================================
10808 dnl Check for system qrcodegen
10809 dnl ===================================================================
10810 AC_MSG_CHECKING([whether to use libqrcodegen])
10811 if test "$enable_qrcodegen" = "no"; then
10812     AC_MSG_RESULT([no])
10813     ENABLE_QRCODEGEN=
10814     SYSTEM_QRCODEGEN=
10815 else
10816     AC_MSG_RESULT([yes])
10817     ENABLE_QRCODEGEN=TRUE
10818     AC_MSG_CHECKING([which libqrcodegen to use])
10819     if test "$with_system_qrcodegen" = "yes"; then
10820         AC_MSG_RESULT([external])
10821         SYSTEM_QRCODEGEN=TRUE
10822         AC_LANG_PUSH([C++])
10823         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10824             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10825         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10826             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10827         QRCODEGEN_LIBS=-lqrcodegencpp
10828         AC_LANG_POP([C++])
10829         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10830         FilterLibs "${QRCODEGEN_LIBS}"
10831         QRCODEGEN_LIBS="${filteredlibs}"
10832     else
10833         AC_MSG_RESULT([internal])
10834         SYSTEM_QRCODEGEN=
10835         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10836     fi
10837     if test "$ENABLE_QRCODEGEN" = TRUE; then
10838         AC_DEFINE(ENABLE_QRCODEGEN)
10839     fi
10841 AC_SUBST(SYSTEM_QRCODEGEN)
10842 AC_SUBST(ENABLE_QRCODEGEN)
10843 AC_SUBST(QRCODEGEN_CFLAGS)
10844 AC_SUBST(QRCODEGEN_LIBS)
10846 dnl ===================================================================
10847 dnl Check for system box2d
10848 dnl ===================================================================
10849 AC_MSG_CHECKING([which box2d to use])
10850 if test "$with_system_box2d" = "yes"; then
10851     AC_MSG_RESULT([external])
10852     SYSTEM_BOX2D=TRUE
10853     AC_LANG_PUSH([C++])
10854     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10855         [BOX2D_H_FOUND='FALSE'])
10856     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10857         _BOX2D_LIB=box2d
10858         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10859     else
10860         # fail this. there's no other alternative to check when we are here.
10861         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10862                 [AC_MSG_ERROR(box2d headers not found.)])
10863         _BOX2D_LIB=Box2D
10864         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10865     fi
10866     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10867         [ AC_MSG_ERROR(box2d library not found.) ], [])
10868     BOX2D_LIBS=-l$_BOX2D_LIB
10869     AC_LANG_POP([C++])
10870     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10871     FilterLibs "${BOX2D_LIBS}"
10872     BOX2D_LIBS="${filteredlibs}"
10873 else
10874     AC_MSG_RESULT([internal])
10875     SYSTEM_BOX2D=
10876     BUILD_TYPE="$BUILD_TYPE BOX2D"
10878 AC_SUBST(SYSTEM_BOX2D)
10879 AC_SUBST(BOX2D_CFLAGS)
10880 AC_SUBST(BOX2D_LIBS)
10882 dnl ===================================================================
10883 dnl Checking for altlinuxhyph
10884 dnl ===================================================================
10885 AC_MSG_CHECKING([which altlinuxhyph to use])
10886 if test "$with_system_altlinuxhyph" = "yes"; then
10887     AC_MSG_RESULT([external])
10888     SYSTEM_HYPH=TRUE
10889     AC_CHECK_HEADER(hyphen.h, [],
10890        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10891     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10892        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10893        [#include <hyphen.h>])
10894     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10895         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10896     if test -z "$HYPHEN_LIB"; then
10897         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10898            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10899     fi
10900     if test -z "$HYPHEN_LIB"; then
10901         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10902            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10903     fi
10904 else
10905     AC_MSG_RESULT([internal])
10906     SYSTEM_HYPH=
10907     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10908     if test "$COM" = "MSC"; then
10909         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10910     else
10911         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10912     fi
10914 AC_SUBST(SYSTEM_HYPH)
10915 AC_SUBST(HYPHEN_LIB)
10917 dnl ===================================================================
10918 dnl Checking for mythes
10919 dnl ===================================================================
10920 AC_MSG_CHECKING([which mythes to use])
10921 if test "$_os" = iOS; then
10922    AC_MSG_RESULT([none])
10923 elif test "$with_system_mythes" = "yes"; then
10924     AC_MSG_RESULT([external])
10925     SYSTEM_MYTHES=TRUE
10926     AC_LANG_PUSH([C++])
10927     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10928     if test "$MYTHES_PKGCONFIG" = "no"; then
10929         AC_CHECK_HEADER(mythes.hxx, [],
10930             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10931         AC_CHECK_LIB([mythes-1.2], [main], [:],
10932             [ MYTHES_FOUND=no], [])
10933     if test "$MYTHES_FOUND" = "no"; then
10934         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10935                 [ MYTHES_FOUND=no], [])
10936     fi
10937     if test "$MYTHES_FOUND" = "no"; then
10938         AC_MSG_ERROR([mythes library not found!.])
10939     fi
10940     fi
10941     AC_LANG_POP([C++])
10942     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10943     FilterLibs "${MYTHES_LIBS}"
10944     MYTHES_LIBS="${filteredlibs}"
10945 else
10946     AC_MSG_RESULT([internal])
10947     SYSTEM_MYTHES=
10948     BUILD_TYPE="$BUILD_TYPE MYTHES"
10949     if test "$COM" = "MSC"; then
10950         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10951     else
10952         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10953     fi
10955 AC_SUBST(SYSTEM_MYTHES)
10956 AC_SUBST(MYTHES_CFLAGS)
10957 AC_SUBST(MYTHES_LIBS)
10959 dnl ===================================================================
10960 dnl How should we build the linear programming solver ?
10961 dnl ===================================================================
10963 ENABLE_COINMP=
10964 AC_MSG_CHECKING([whether to build with CoinMP])
10965 if test "$enable_coinmp" != "no"; then
10966     ENABLE_COINMP=TRUE
10967     AC_MSG_RESULT([yes])
10968     if test "$with_system_coinmp" = "yes"; then
10969         SYSTEM_COINMP=TRUE
10970         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10971         FilterLibs "${COINMP_LIBS}"
10972         COINMP_LIBS="${filteredlibs}"
10973     else
10974         BUILD_TYPE="$BUILD_TYPE COINMP"
10975     fi
10976 else
10977     AC_MSG_RESULT([no])
10979 AC_SUBST(ENABLE_COINMP)
10980 AC_SUBST(SYSTEM_COINMP)
10981 AC_SUBST(COINMP_CFLAGS)
10982 AC_SUBST(COINMP_LIBS)
10984 ENABLE_LPSOLVE=
10985 AC_MSG_CHECKING([whether to build with lpsolve])
10986 if test "$enable_lpsolve" != "no"; then
10987     ENABLE_LPSOLVE=TRUE
10988     AC_MSG_RESULT([yes])
10989 else
10990     AC_MSG_RESULT([no])
10992 AC_SUBST(ENABLE_LPSOLVE)
10994 if test "$ENABLE_LPSOLVE" = TRUE; then
10995     AC_MSG_CHECKING([which lpsolve to use])
10996     if test "$with_system_lpsolve" = "yes"; then
10997         AC_MSG_RESULT([external])
10998         SYSTEM_LPSOLVE=TRUE
10999         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11000            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11001         save_LIBS=$LIBS
11002         # some systems need this. Like Ubuntu...
11003         AC_CHECK_LIB(m, floor)
11004         AC_CHECK_LIB(dl, dlopen)
11005         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11006             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11007         LIBS=$save_LIBS
11008     else
11009         AC_MSG_RESULT([internal])
11010         SYSTEM_LPSOLVE=
11011         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11012     fi
11014 AC_SUBST(SYSTEM_LPSOLVE)
11016 dnl ===================================================================
11017 dnl Checking for libexttextcat
11018 dnl ===================================================================
11019 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11020 if test "$with_system_libexttextcat" = "yes"; then
11021     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11023 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11025 dnl ===================================================================
11026 dnl Checking for libnumbertext
11027 dnl ===================================================================
11028 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11029 if test "$with_system_libnumbertext" = "yes"; then
11030     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11031     SYSTEM_LIBNUMBERTEXT=YES
11032 else
11033     SYSTEM_LIBNUMBERTEXT=
11034     AC_LANG_PUSH([C++])
11035     save_CPPFLAGS=$CPPFLAGS
11036     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11037     AC_CHECK_HEADERS([codecvt regex])
11038     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11039             [ LIBNUMBERTEXT_CFLAGS=''
11040               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11041                            Enable libnumbertext fallback (missing number to number name conversion).])
11042             ])
11043     CPPFLAGS=$save_CPPFLAGS
11044     AC_LANG_POP([C++])
11046 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11047 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11048 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11050 dnl ***************************************
11051 dnl testing libc version for Linux...
11052 dnl ***************************************
11053 if test "$_os" = "Linux"; then
11054     AC_MSG_CHECKING([whether libc is >= 2.1.1])
11055     exec 6>/dev/null # no output
11056     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11057     exec 6>&1 # output on again
11058     if test "$HAVE_LIBC"; then
11059         AC_MSG_RESULT([yes])
11060     else
11061         AC_MSG_ERROR([no, upgrade libc])
11062     fi
11065 dnl =========================================
11066 dnl Check for uuidgen
11067 dnl =========================================
11068 if test "$_os" = "WINNT"; then
11069     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11070     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11071     UUIDGEN=uuidgen.exe
11072     AC_SUBST(UUIDGEN)
11073 else
11074     AC_PATH_PROG([UUIDGEN], [uuidgen])
11075     if test -z "$UUIDGEN"; then
11076         AC_MSG_WARN([uuid is needed for building installation sets])
11077     fi
11080 dnl ***************************************
11081 dnl Checking for bison and flex
11082 dnl ***************************************
11083 AC_PATH_PROG(BISON, bison)
11084 if test -z "$BISON"; then
11085     AC_MSG_ERROR([no bison found in \$PATH, install it])
11086 else
11087     AC_MSG_CHECKING([the bison version])
11088     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11089     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11090     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11091     dnl cause
11092     dnl
11093     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]
11094     dnl   typedef union YYSTYPE
11095     dnl           ~~~~~~^~~~~~~
11096     dnl
11097     dnl while at least 3.4.1 is know to be good:
11098     if test "$COMPILER_PLUGINS" = TRUE; then
11099         if test "$_bison_longver" -lt 2004; then
11100             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11101         fi
11102     else
11103         if test "$_bison_longver" -lt 2000; then
11104             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11105         fi
11106     fi
11108 AC_SUBST([BISON])
11110 AC_PATH_PROG(FLEX, flex)
11111 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11112     FLEX=`cygpath -m $FLEX`
11114 if test -z "$FLEX"; then
11115     AC_MSG_ERROR([no flex found in \$PATH, install it])
11116 else
11117     AC_MSG_CHECKING([the flex version])
11118     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11119     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11120         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11121     fi
11123 AC_SUBST([FLEX])
11124 dnl ***************************************
11125 dnl Checking for patch
11126 dnl ***************************************
11127 AC_PATH_PROG(PATCH, patch)
11128 if test -z "$PATCH"; then
11129     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11132 dnl On Solaris or macOS, check if --with-gnu-patch was used
11133 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11134     if test -z "$with_gnu_patch"; then
11135         GNUPATCH=$PATCH
11136     else
11137         if test -x "$with_gnu_patch"; then
11138             GNUPATCH=$with_gnu_patch
11139         else
11140             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11141         fi
11142     fi
11144     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11145     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11146         AC_MSG_RESULT([yes])
11147     else
11148         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11149     fi
11150 else
11151     GNUPATCH=$PATCH
11154 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11155     GNUPATCH=`cygpath -m $GNUPATCH`
11158 dnl We also need to check for --with-gnu-cp
11160 if test -z "$with_gnu_cp"; then
11161     # check the place where the good stuff is hidden on Solaris...
11162     if test -x /usr/gnu/bin/cp; then
11163         GNUCP=/usr/gnu/bin/cp
11164     else
11165         AC_PATH_PROGS(GNUCP, gnucp cp)
11166     fi
11167     if test -z $GNUCP; then
11168         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11169     fi
11170 else
11171     if test -x "$with_gnu_cp"; then
11172         GNUCP=$with_gnu_cp
11173     else
11174         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11175     fi
11178 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11179     GNUCP=`cygpath -m $GNUCP`
11182 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11183 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11184     AC_MSG_RESULT([yes])
11185 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11186     AC_MSG_RESULT([yes])
11187 else
11188     case "$build_os" in
11189     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11190         x_GNUCP=[\#]
11191         GNUCP=''
11192         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11193         ;;
11194     *)
11195         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11196         ;;
11197     esac
11200 AC_SUBST(GNUPATCH)
11201 AC_SUBST(GNUCP)
11202 AC_SUBST(x_GNUCP)
11204 dnl ***************************************
11205 dnl testing assembler path
11206 dnl ***************************************
11207 ML_EXE=""
11208 if test "$_os" = "WINNT"; then
11209     case "$WIN_HOST_ARCH" in
11210     x86) assembler=ml.exe ;;
11211     x64) assembler=ml64.exe ;;
11212     arm64) assembler=armasm64.exe ;;
11213     esac
11215     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11216     if test -f "$MSVC_HOST_PATH/$assembler"; then
11217         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11218         AC_MSG_RESULT([$ML_EXE])
11219     else
11220         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11221     fi
11224 AC_SUBST(ML_EXE)
11226 dnl ===================================================================
11227 dnl We need zip and unzip
11228 dnl ===================================================================
11229 AC_PATH_PROG(ZIP, zip)
11230 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11231 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11232     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],,)
11235 AC_PATH_PROG(UNZIP, unzip)
11236 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11238 dnl ===================================================================
11239 dnl Zip must be a specific type for different build types.
11240 dnl ===================================================================
11241 if test $build_os = cygwin; then
11242     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11243         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11244     fi
11247 dnl ===================================================================
11248 dnl We need touch with -h option support.
11249 dnl ===================================================================
11250 AC_PATH_PROG(TOUCH, touch)
11251 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11252 touch warn
11253 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11254     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],,)
11257 dnl ===================================================================
11258 dnl Check for system epoxy
11259 dnl ===================================================================
11260 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11262 dnl ===================================================================
11263 dnl Set vcl option: coordinate device in double or sal_Int32
11264 dnl ===================================================================
11266 dnl disabled for now, we don't want subtle differences between OSs
11267 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11268 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11269 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11270 dnl     AC_MSG_RESULT([double])
11271 dnl else
11272 dnl     AC_MSG_RESULT([sal_Int32])
11273 dnl fi
11275 dnl ===================================================================
11276 dnl Test which vclplugs have to be built.
11277 dnl ===================================================================
11278 R=""
11279 if test "$USING_X11" != TRUE; then
11280     enable_gtk3=no
11283 ENABLE_GTK3=""
11284 if test "x$enable_gtk3" = "xyes"; then
11285     ENABLE_GTK3="TRUE"
11286     AC_DEFINE(ENABLE_GTK3)
11287     R="$R gtk3"
11289 AC_SUBST(ENABLE_GTK3)
11291 ENABLE_GTK3_KDE5=""
11292 if test "x$enable_gtk3_kde5" = "xyes"; then
11293     ENABLE_GTK3_KDE5="TRUE"
11294     AC_DEFINE(ENABLE_GTK3_KDE5)
11295     R="$R gtk3_kde5"
11297 AC_SUBST(ENABLE_GTK3_KDE5)
11299 ENABLE_QT5=""
11300 if test "x$enable_qt5" = "xyes"; then
11301     ENABLE_QT5="TRUE"
11302     AC_DEFINE(ENABLE_QT5)
11303     R="$R qt5"
11305 AC_SUBST(ENABLE_QT5)
11307 ENABLE_KF5=""
11308 if test "x$enable_kf5" = "xyes"; then
11309     ENABLE_KF5="TRUE"
11310     AC_DEFINE(ENABLE_KF5)
11311     R="$R kf5"
11313 AC_SUBST(ENABLE_KF5)
11315 GTK3_CFLAGS=""
11316 GTK3_LIBS=""
11317 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11318     if test "$with_system_cairo" = no; then
11319         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11320     fi
11321     : ${with_system_cairo:=yes}
11322     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)
11323     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11324     FilterLibs "${GTK3_LIBS}"
11325     GTK3_LIBS="${filteredlibs}"
11327     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11328     if test "$with_system_epoxy" != "yes"; then
11329         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11330         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11331                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11332     fi
11334 AC_SUBST(GTK3_LIBS)
11335 AC_SUBST(GTK3_CFLAGS)
11337 if test "$enable_introspection" = yes; then
11338     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11339         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11340     else
11341         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11342     fi
11345 if test "$_os" = "WINNT"; then
11346     R="$R win"
11347 elif test "$_os" = "Darwin"; then
11348     R="$R osx"
11349 elif test "$_os" = "iOS"; then
11350     R="ios (builtin)"
11353 build_vcl_plugins="$R"
11354 if test -z "$build_vcl_plugins"; then
11355     build_vcl_plugins="none"
11357 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11359 dnl ===================================================================
11360 dnl check for dbus support
11361 dnl ===================================================================
11362 ENABLE_DBUS=""
11363 DBUS_CFLAGS=""
11364 DBUS_LIBS=""
11365 DBUS_GLIB_CFLAGS=""
11366 DBUS_GLIB_LIBS=""
11367 DBUS_HAVE_GLIB=""
11369 if test "$enable_dbus" = "no"; then
11370     test_dbus=no
11373 AC_MSG_CHECKING([whether to enable DBUS support])
11374 if test "$test_dbus" = "yes"; then
11375     ENABLE_DBUS="TRUE"
11376     AC_MSG_RESULT([yes])
11377     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11378     AC_DEFINE(ENABLE_DBUS)
11379     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11380     FilterLibs "${DBUS_LIBS}"
11381     DBUS_LIBS="${filteredlibs}"
11383     # Glib is needed for BluetoothServer
11384     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11385     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11386         [
11387             DBUS_HAVE_GLIB="TRUE"
11388             AC_DEFINE(DBUS_HAVE_GLIB,1)
11389         ],
11390         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11391     )
11392 else
11393     AC_MSG_RESULT([no])
11396 AC_SUBST(ENABLE_DBUS)
11397 AC_SUBST(DBUS_CFLAGS)
11398 AC_SUBST(DBUS_LIBS)
11399 AC_SUBST(DBUS_GLIB_CFLAGS)
11400 AC_SUBST(DBUS_GLIB_LIBS)
11401 AC_SUBST(DBUS_HAVE_GLIB)
11403 AC_MSG_CHECKING([whether to enable Impress remote control])
11404 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11405     AC_MSG_RESULT([yes])
11406     ENABLE_SDREMOTE=TRUE
11407     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11409     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11410         # The Bluetooth code doesn't compile with macOS SDK 10.15
11411         if test "$enable_sdremote_bluetooth" = yes; then
11412             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11413         fi
11414         enable_sdremote_bluetooth=no
11415     fi
11416     # If not explicitly enabled or disabled, default
11417     if test -z "$enable_sdremote_bluetooth"; then
11418         case "$OS" in
11419         LINUX|MACOSX|WNT)
11420             # Default to yes for these
11421             enable_sdremote_bluetooth=yes
11422             ;;
11423         *)
11424             # otherwise no
11425             enable_sdremote_bluetooth=no
11426             ;;
11427         esac
11428     fi
11429     # $enable_sdremote_bluetooth is guaranteed non-empty now
11431     if test "$enable_sdremote_bluetooth" != "no"; then
11432         if test "$OS" = "LINUX"; then
11433             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11434                 AC_MSG_RESULT([yes])
11435                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11436                 dnl ===================================================================
11437                 dnl Check for system bluez
11438                 dnl ===================================================================
11439                 AC_MSG_CHECKING([which Bluetooth header to use])
11440                 if test "$with_system_bluez" = "yes"; then
11441                     AC_MSG_RESULT([external])
11442                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11443                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11444                     SYSTEM_BLUEZ=TRUE
11445                 else
11446                     AC_MSG_RESULT([internal])
11447                     SYSTEM_BLUEZ=
11448                 fi
11449             else
11450                 AC_MSG_RESULT([no, dbus disabled])
11451                 ENABLE_SDREMOTE_BLUETOOTH=
11452                 SYSTEM_BLUEZ=
11453             fi
11454         else
11455             AC_MSG_RESULT([yes])
11456             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11457             SYSTEM_BLUEZ=
11458         fi
11459     else
11460         AC_MSG_RESULT([no])
11461         ENABLE_SDREMOTE_BLUETOOTH=
11462         SYSTEM_BLUEZ=
11463     fi
11464 else
11465     ENABLE_SDREMOTE=
11466     SYSTEM_BLUEZ=
11467     AC_MSG_RESULT([no])
11469 AC_SUBST(ENABLE_SDREMOTE)
11470 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11471 AC_SUBST(SYSTEM_BLUEZ)
11473 dnl ===================================================================
11474 dnl Check whether to enable GIO support
11475 dnl ===================================================================
11476 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11477     AC_MSG_CHECKING([whether to enable GIO support])
11478     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11479         dnl Need at least 2.26 for the dbus support.
11480         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11481                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11482         if test "$ENABLE_GIO" = "TRUE"; then
11483             AC_DEFINE(ENABLE_GIO)
11484             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11485             FilterLibs "${GIO_LIBS}"
11486             GIO_LIBS="${filteredlibs}"
11487         fi
11488     else
11489         AC_MSG_RESULT([no])
11490     fi
11492 AC_SUBST(ENABLE_GIO)
11493 AC_SUBST(GIO_CFLAGS)
11494 AC_SUBST(GIO_LIBS)
11497 dnl ===================================================================
11499 SPLIT_APP_MODULES=""
11500 if test "$enable_split_app_modules" = "yes"; then
11501     SPLIT_APP_MODULES="TRUE"
11503 AC_SUBST(SPLIT_APP_MODULES)
11505 SPLIT_OPT_FEATURES=""
11506 if test "$enable_split_opt_features" = "yes"; then
11507     SPLIT_OPT_FEATURES="TRUE"
11509 AC_SUBST(SPLIT_OPT_FEATURES)
11511 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11512     if test "$enable_cairo_canvas" = yes; then
11513         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11514     fi
11515     enable_cairo_canvas=no
11516 elif test -z "$enable_cairo_canvas"; then
11517     enable_cairo_canvas=yes
11520 ENABLE_CAIRO_CANVAS=""
11521 if test "$enable_cairo_canvas" = "yes"; then
11522     test_cairo=yes
11523     ENABLE_CAIRO_CANVAS="TRUE"
11524     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11526 AC_SUBST(ENABLE_CAIRO_CANVAS)
11528 dnl ===================================================================
11529 dnl Check whether the GStreamer libraries are available.
11530 dnl ===================================================================
11532 ENABLE_GSTREAMER_1_0=""
11534 if test "$build_gstreamer_1_0" = "yes"; then
11536     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11537     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11538         ENABLE_GSTREAMER_1_0="TRUE"
11539         AC_MSG_RESULT([yes])
11540         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11541         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11542         FilterLibs "${GSTREAMER_1_0_LIBS}"
11543         GSTREAMER_1_0_LIBS="${filteredlibs}"
11544         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11545     else
11546         AC_MSG_RESULT([no])
11547     fi
11549 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11550 AC_SUBST(GSTREAMER_1_0_LIBS)
11551 AC_SUBST(ENABLE_GSTREAMER_1_0)
11553 dnl ===================================================================
11554 dnl Check whether to build the VLC avmedia backend
11555 dnl ===================================================================
11557 ENABLE_VLC=""
11559 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11560 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11561     ENABLE_VLC="TRUE"
11562     AC_MSG_RESULT([yes])
11563 else
11564     AC_MSG_RESULT([no])
11566 AC_SUBST(ENABLE_VLC)
11568 ENABLE_OPENGL_TRANSITIONS=
11569 ENABLE_OPENGL_CANVAS=
11570 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11571    : # disable
11572 elif test "$_os" = "Darwin"; then
11573     # We use frameworks on macOS, no need for detail checks
11574     ENABLE_OPENGL_TRANSITIONS=TRUE
11575     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11576     ENABLE_OPENGL_CANVAS=TRUE
11577 elif test $_os = WINNT; then
11578     ENABLE_OPENGL_TRANSITIONS=TRUE
11579     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11580     ENABLE_OPENGL_CANVAS=TRUE
11581 else
11582     if test "$USING_X11" = TRUE; then
11583         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11584         ENABLE_OPENGL_TRANSITIONS=TRUE
11585         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11586         ENABLE_OPENGL_CANVAS=TRUE
11587     fi
11590 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11591 AC_SUBST(ENABLE_OPENGL_CANVAS)
11593 dnl =================================================
11594 dnl Check whether to build with OpenCL support.
11595 dnl =================================================
11597 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11598     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11599     # platform (optional at run-time, used through clew).
11600     BUILD_TYPE="$BUILD_TYPE OPENCL"
11601     AC_DEFINE(HAVE_FEATURE_OPENCL)
11604 dnl =================================================
11605 dnl Check whether to build with dconf support.
11606 dnl =================================================
11608 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11609     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11610         if test "$enable_dconf" = yes; then
11611             AC_MSG_ERROR([dconf not found])
11612         else
11613             enable_dconf=no
11614         fi])
11616 AC_MSG_CHECKING([whether to enable dconf])
11617 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11618     DCONF_CFLAGS=
11619     DCONF_LIBS=
11620     ENABLE_DCONF=
11621     AC_MSG_RESULT([no])
11622 else
11623     ENABLE_DCONF=TRUE
11624     AC_DEFINE(ENABLE_DCONF)
11625     AC_MSG_RESULT([yes])
11627 AC_SUBST([DCONF_CFLAGS])
11628 AC_SUBST([DCONF_LIBS])
11629 AC_SUBST([ENABLE_DCONF])
11631 # pdf import?
11632 AC_MSG_CHECKING([whether to build the PDF import feature])
11633 ENABLE_PDFIMPORT=
11634 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11635     AC_MSG_RESULT([yes])
11636     ENABLE_PDFIMPORT=TRUE
11637     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11638 else
11639     AC_MSG_RESULT([no])
11642 # Pdfium?
11643 AC_MSG_CHECKING([whether to build PDFium])
11644 ENABLE_PDFIUM=
11645 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11646     AC_MSG_RESULT([yes])
11647     ENABLE_PDFIUM=TRUE
11648     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11649     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11650 else
11651     AC_MSG_RESULT([no])
11653 AC_SUBST(ENABLE_PDFIUM)
11655 dnl ===================================================================
11656 dnl Check for poppler
11657 dnl ===================================================================
11658 ENABLE_POPPLER=
11659 AC_MSG_CHECKING([whether to build Poppler])
11660 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11661     AC_MSG_RESULT([yes])
11662     ENABLE_POPPLER=TRUE
11663     AC_DEFINE(HAVE_FEATURE_POPPLER)
11664 else
11665     AC_MSG_RESULT([no])
11667 AC_SUBST(ENABLE_POPPLER)
11669 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11670     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11673 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11674     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11677 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11678     dnl ===================================================================
11679     dnl Check for system poppler
11680     dnl ===================================================================
11681     AC_MSG_CHECKING([which PDF import poppler to use])
11682     if test "$with_system_poppler" = "yes"; then
11683         AC_MSG_RESULT([external])
11684         SYSTEM_POPPLER=TRUE
11685         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11686         AC_LANG_PUSH([C++])
11687         save_CXXFLAGS=$CXXFLAGS
11688         save_CPPFLAGS=$CPPFLAGS
11689         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11690         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11691         AC_CHECK_HEADER([cpp/poppler-version.h],
11692             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11693             [])
11694         CXXFLAGS=$save_CXXFLAGS
11695         CPPFLAGS=$save_CPPFLAGS
11696         AC_LANG_POP([C++])
11697         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11699         FilterLibs "${POPPLER_LIBS}"
11700         POPPLER_LIBS="${filteredlibs}"
11701     else
11702         AC_MSG_RESULT([internal])
11703         SYSTEM_POPPLER=
11704         BUILD_TYPE="$BUILD_TYPE POPPLER"
11705         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11706     fi
11707     AC_DEFINE([ENABLE_PDFIMPORT],1)
11709 AC_SUBST(ENABLE_PDFIMPORT)
11710 AC_SUBST(SYSTEM_POPPLER)
11711 AC_SUBST(POPPLER_CFLAGS)
11712 AC_SUBST(POPPLER_LIBS)
11714 # Skia?
11715 AC_MSG_CHECKING([whether to build Skia])
11716 ENABLE_SKIA=
11717 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11718     if test "$enable_skia" = "debug"; then
11719         AC_MSG_RESULT([yes (debug)])
11720         ENABLE_SKIA_DEBUG=TRUE
11721     else
11722         AC_MSG_RESULT([yes])
11723         ENABLE_SKIA_DEBUG=
11724     fi
11725     ENABLE_SKIA=TRUE
11726     AC_DEFINE(HAVE_FEATURE_SKIA)
11727     BUILD_TYPE="$BUILD_TYPE SKIA"
11728 else
11729     AC_MSG_RESULT([no])
11731 AC_SUBST(ENABLE_SKIA)
11732 AC_SUBST(ENABLE_SKIA_DEBUG)
11734 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11735 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11736 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11737 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11738 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11739 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11740 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11741 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11742 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11743 HAVE_LO_CLANG_DLLEXPORTINLINES=
11745 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11746     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11747         AC_MSG_CHECKING([for Clang])
11748         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11749     else
11750         if test "$_os" = "WINNT"; then
11751             AC_MSG_CHECKING([for clang-cl])
11752             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11753                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11754                 dnl explicitly set -m32/-m64
11755                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11756                 LO_CLANG_CXX="$LO_CLANG_CC"
11757                 AC_MSG_RESULT([$LO_CLANG_CC])
11758             else
11759                 AC_MSG_RESULT([no])
11760             fi
11761         else
11762             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11763             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11764         fi
11765     fi
11766     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11767         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11768         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11769         if test "$clang2_ver" -lt 50002; then
11770             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11771             LO_CLANG_CC=
11772             LO_CLANG_CXX=
11773         fi
11774     fi
11775     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
11776         save_CXX="$CXX"
11777         CXX="$LO_CLANG_CXX"
11778         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
11779         AC_LANG_PUSH([C++])
11780         save_CXXFLAGS=$CXXFLAGS
11781         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
11782         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
11783                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
11784                 AC_MSG_RESULT([yes])
11785             ], [AC_MSG_RESULT([no])])
11786         CXXFLAGS=$save_CXXFLAGS
11787         AC_LANG_POP([C++])
11788         CXX="$save_CXX"
11789         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
11790             AC_MSG_ERROR([Clang compiler does not support -Zc:dllexportInlines-. The Skia library needs to be built using a newer Clang version, or use --disable-skia.])
11791         fi
11792     fi
11793     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11794         # Skia is the default on Windows, so hard-require Clang.
11795         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11796         if test "$_os" = "WINNT"; then
11797             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11798         else
11799             AC_MSG_WARN([Clang compiler not found.])
11800         fi
11801     else
11803         save_CXX="$CXX"
11804         CXX="$LO_CLANG_CXX"
11805         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11806         flag_sse2=-msse2
11807         flag_ssse3=-mssse3
11808         flag_sse41=-msse4.1
11809         flag_sse42=-msse4.2
11810         flag_avx=-mavx
11811         flag_avx2=-mavx2
11812         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11813         flag_f16c=-mf16c
11814         flag_fma=-mfma
11816         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11817         AC_LANG_PUSH([C++])
11818         save_CXXFLAGS=$CXXFLAGS
11819         CXXFLAGS="$CXXFLAGS $flag_sse2"
11820         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11821             #include <emmintrin.h>
11822             int main () {
11823                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11824                 c = _mm_xor_si128 (a, b);
11825                 return 0;
11826             }
11827             ])],
11828             [can_compile_sse2=yes],
11829             [can_compile_sse2=no])
11830         AC_LANG_POP([C++])
11831         CXXFLAGS=$save_CXXFLAGS
11832         AC_MSG_RESULT([${can_compile_sse2}])
11833         if test "${can_compile_sse2}" = "yes" ; then
11834             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11835         fi
11837         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11838         AC_LANG_PUSH([C++])
11839         save_CXXFLAGS=$CXXFLAGS
11840         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11841         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11842             #include <tmmintrin.h>
11843             int main () {
11844                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11845                 c = _mm_maddubs_epi16 (a, b);
11846                 return 0;
11847             }
11848             ])],
11849             [can_compile_ssse3=yes],
11850             [can_compile_ssse3=no])
11851         AC_LANG_POP([C++])
11852         CXXFLAGS=$save_CXXFLAGS
11853         AC_MSG_RESULT([${can_compile_ssse3}])
11854         if test "${can_compile_ssse3}" = "yes" ; then
11855             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11856         fi
11858         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11859         AC_LANG_PUSH([C++])
11860         save_CXXFLAGS=$CXXFLAGS
11861         CXXFLAGS="$CXXFLAGS $flag_sse41"
11862         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11863             #include <smmintrin.h>
11864             int main () {
11865                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11866                 c = _mm_cmpeq_epi64 (a, b);
11867                 return 0;
11868             }
11869             ])],
11870             [can_compile_sse41=yes],
11871             [can_compile_sse41=no])
11872         AC_LANG_POP([C++])
11873         CXXFLAGS=$save_CXXFLAGS
11874         AC_MSG_RESULT([${can_compile_sse41}])
11875         if test "${can_compile_sse41}" = "yes" ; then
11876             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11877         fi
11879         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11880         AC_LANG_PUSH([C++])
11881         save_CXXFLAGS=$CXXFLAGS
11882         CXXFLAGS="$CXXFLAGS $flag_sse42"
11883         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11884             #include <nmmintrin.h>
11885             int main () {
11886                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11887                 c = _mm_cmpgt_epi64 (a, b);
11888                 return 0;
11889             }
11890             ])],
11891             [can_compile_sse42=yes],
11892             [can_compile_sse42=no])
11893         AC_LANG_POP([C++])
11894         CXXFLAGS=$save_CXXFLAGS
11895         AC_MSG_RESULT([${can_compile_sse42}])
11896         if test "${can_compile_sse42}" = "yes" ; then
11897             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11898         fi
11900         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11901         AC_LANG_PUSH([C++])
11902         save_CXXFLAGS=$CXXFLAGS
11903         CXXFLAGS="$CXXFLAGS $flag_avx"
11904         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11905             #include <immintrin.h>
11906             int main () {
11907                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11908                 c = _mm256_xor_ps(a, b);
11909                 return 0;
11910             }
11911             ])],
11912             [can_compile_avx=yes],
11913             [can_compile_avx=no])
11914         AC_LANG_POP([C++])
11915         CXXFLAGS=$save_CXXFLAGS
11916         AC_MSG_RESULT([${can_compile_avx}])
11917         if test "${can_compile_avx}" = "yes" ; then
11918             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11919         fi
11921         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11922         AC_LANG_PUSH([C++])
11923         save_CXXFLAGS=$CXXFLAGS
11924         CXXFLAGS="$CXXFLAGS $flag_avx2"
11925         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11926             #include <immintrin.h>
11927             int main () {
11928                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11929                 c = _mm256_maddubs_epi16(a, b);
11930                 return 0;
11931             }
11932             ])],
11933             [can_compile_avx2=yes],
11934             [can_compile_avx2=no])
11935         AC_LANG_POP([C++])
11936         CXXFLAGS=$save_CXXFLAGS
11937         AC_MSG_RESULT([${can_compile_avx2}])
11938         if test "${can_compile_avx2}" = "yes" ; then
11939             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11940         fi
11942         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11943         AC_LANG_PUSH([C++])
11944         save_CXXFLAGS=$CXXFLAGS
11945         CXXFLAGS="$CXXFLAGS $flag_avx512"
11946         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11947             #include <immintrin.h>
11948             int main () {
11949                 __m512i a = _mm512_loadu_si512(0);
11950                 return 0;
11951             }
11952             ])],
11953             [can_compile_avx512=yes],
11954             [can_compile_avx512=no])
11955         AC_LANG_POP([C++])
11956         CXXFLAGS=$save_CXXFLAGS
11957         AC_MSG_RESULT([${can_compile_avx512}])
11958         if test "${can_compile_avx512}" = "yes" ; then
11959             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11960         fi
11962         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11963         AC_LANG_PUSH([C++])
11964         save_CXXFLAGS=$CXXFLAGS
11965         CXXFLAGS="$CXXFLAGS $flag_f16c"
11966         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11967             #include <immintrin.h>
11968             int main () {
11969                 __m128i a = _mm_set1_epi32 (0);
11970                 __m128 c;
11971                 c = _mm_cvtph_ps(a);
11972                 return 0;
11973             }
11974             ])],
11975             [can_compile_f16c=yes],
11976             [can_compile_f16c=no])
11977         AC_LANG_POP([C++])
11978         CXXFLAGS=$save_CXXFLAGS
11979         AC_MSG_RESULT([${can_compile_f16c}])
11980         if test "${can_compile_f16c}" = "yes" ; then
11981             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11982         fi
11984         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11985         AC_LANG_PUSH([C++])
11986         save_CXXFLAGS=$CXXFLAGS
11987         CXXFLAGS="$CXXFLAGS $flag_fma"
11988         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11989             #include <immintrin.h>
11990             int main () {
11991                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11992                 d = _mm256_fmadd_ps(a, b, c);
11993                 return 0;
11994             }
11995             ])],
11996             [can_compile_fma=yes],
11997             [can_compile_fma=no])
11998         AC_LANG_POP([C++])
11999         CXXFLAGS=$save_CXXFLAGS
12000         AC_MSG_RESULT([${can_compile_fma}])
12001         if test "${can_compile_fma}" = "yes" ; then
12002             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12003         fi
12005         CXX="$save_CXX"
12006     fi
12009 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12011 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12012     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12013     AC_LANG_PUSH([C])
12014     save_CC="$CC"
12015     CC="$LO_CLANG_CC"
12016     save_CFLAGS=$CFLAGS
12017     CFLAGS="$CFLAGS --ccache-skip -O2"
12018     dnl an empty program will do, we're checking the compiler flags
12019     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12020                       [use_ccache=yes], [use_ccache=no])
12021     CFLAGS=$save_CFLAGS
12022     CC=$save_CC
12023     if test $use_ccache = yes; then
12024         AC_MSG_RESULT([yes])
12025     else
12026         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12027         AC_MSG_RESULT([no])
12028     fi
12029     AC_LANG_POP([C])
12031     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12032     AC_LANG_PUSH([C++])
12033     save_CXX="$CXX"
12034     CXX="$LO_CLANG_CXX"
12035     save_CXXFLAGS=$CXXFLAGS
12036     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12037     dnl an empty program will do, we're checking the compiler flags
12038     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12039                       [use_ccache=yes], [use_ccache=no])
12040     if test $use_ccache = yes; then
12041         AC_MSG_RESULT([yes])
12042     else
12043         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12044         AC_MSG_RESULT([no])
12045     fi
12046     CXXFLAGS=$save_CXXFLAGS
12047     CXX=$save_CXX
12048     AC_LANG_POP([C++])
12051 AC_SUBST(LO_CLANG_CC)
12052 AC_SUBST(LO_CLANG_CXX)
12053 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12054 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12055 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12056 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12057 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12058 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12059 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12060 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12061 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12062 AC_SUBST(CLANG_USE_LD)
12063 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12065 SYSTEM_GPGMEPP=
12067 if test "$enable_gpgmepp" = no; then
12068     AC_MSG_CHECKING([whether to enable gpgmepp])
12069     AC_MSG_RESULT([no])
12070 elif test "$enable_mpl_subset" = "yes"; then
12071     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12072     AC_MSG_RESULT([yes])
12073 elif test "$enable_fuzzers" = "yes"; then
12074     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12075     AC_MSG_RESULT([yes])
12076 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12077     dnl ===================================================================
12078     dnl Check for system gpgme
12079     dnl ===================================================================
12080     AC_MSG_CHECKING([which gpgmepp to use])
12081     if test "$with_system_gpgmepp" = "yes"; then
12082         AC_MSG_RESULT([external])
12083         SYSTEM_GPGMEPP=TRUE
12085         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12086         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12087             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12088         # progress_callback is the only func with plain C linkage
12089         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12090         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12091             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12092         AC_CHECK_HEADER(gpgme.h, [],
12093             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12094     else
12095         AC_MSG_RESULT([internal])
12096         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12097         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12099         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12100         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12101         if test "$_os" != "WINNT"; then
12102             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12103             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12104         fi
12105     fi
12106     ENABLE_GPGMEPP=TRUE
12107     AC_DEFINE([HAVE_FEATURE_GPGME])
12108     AC_PATH_PROG(GPG, gpg)
12109     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12110     # so let's exclude that manually for the moment
12111     if test -n "$GPG" -a "$_os" != "WINNT"; then
12112         # make sure we not only have a working gpgme, but a full working
12113         # gpg installation to run OpenPGP signature verification
12114         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12115     fi
12116     if test "$_os" = "Linux"; then
12117       uid=`id -u`
12118       AC_MSG_CHECKING([for /run/user/$uid])
12119       if test -d /run/user/$uid; then
12120         AC_MSG_RESULT([yes])
12121         AC_PATH_PROG(GPGCONF, gpgconf)
12123         # Older versions of gpgconf are not working as expected, since
12124         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12125         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12126         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12127         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12128         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12129         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12130         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12131           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12132           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12133           if $GPGCONF --dump-options > /dev/null ; then
12134             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12135               AC_MSG_RESULT([yes])
12136               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12137               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12138             else
12139               AC_MSG_RESULT([no])
12140             fi
12141           else
12142             AC_MSG_RESULT([no. missing or broken gpgconf?])
12143           fi
12144         else
12145           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12146         fi
12147       else
12148         AC_MSG_RESULT([no])
12149      fi
12150    fi
12152 AC_SUBST(ENABLE_GPGMEPP)
12153 AC_SUBST(SYSTEM_GPGMEPP)
12154 AC_SUBST(GPG_ERROR_CFLAGS)
12155 AC_SUBST(GPG_ERROR_LIBS)
12156 AC_SUBST(LIBASSUAN_CFLAGS)
12157 AC_SUBST(LIBASSUAN_LIBS)
12158 AC_SUBST(GPGMEPP_CFLAGS)
12159 AC_SUBST(GPGMEPP_LIBS)
12161 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12162 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12163     AC_MSG_RESULT([yes])
12164     ENABLE_MEDIAWIKI=TRUE
12165     BUILD_TYPE="$BUILD_TYPE XSLTML"
12166     if test  "x$with_java" = "xno"; then
12167         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12168     fi
12169 else
12170     AC_MSG_RESULT([no])
12171     ENABLE_MEDIAWIKI=
12172     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12174 AC_SUBST(ENABLE_MEDIAWIKI)
12176 AC_MSG_CHECKING([whether to build the Report Builder])
12177 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12178     AC_MSG_RESULT([yes])
12179     ENABLE_REPORTBUILDER=TRUE
12180     AC_MSG_CHECKING([which jfreereport libs to use])
12181     if test "$with_system_jfreereport" = "yes"; then
12182         SYSTEM_JFREEREPORT=TRUE
12183         AC_MSG_RESULT([external])
12184         if test -z $SAC_JAR; then
12185             SAC_JAR=/usr/share/java/sac.jar
12186         fi
12187         if ! test -f $SAC_JAR; then
12188              AC_MSG_ERROR(sac.jar not found.)
12189         fi
12191         if test -z $LIBXML_JAR; then
12192             if test -f /usr/share/java/libxml-1.0.0.jar; then
12193                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12194             elif test -f /usr/share/java/libxml.jar; then
12195                 LIBXML_JAR=/usr/share/java/libxml.jar
12196             else
12197                 AC_MSG_ERROR(libxml.jar replacement not found.)
12198             fi
12199         elif ! test -f $LIBXML_JAR; then
12200             AC_MSG_ERROR(libxml.jar not found.)
12201         fi
12203         if test -z $FLUTE_JAR; then
12204             if test -f /usr/share/java/flute-1.3.0.jar; then
12205                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12206             elif test -f /usr/share/java/flute.jar; then
12207                 FLUTE_JAR=/usr/share/java/flute.jar
12208             else
12209                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12210             fi
12211         elif ! test -f $FLUTE_JAR; then
12212             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12213         fi
12215         if test -z $JFREEREPORT_JAR; then
12216             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12217                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12218             elif test -f /usr/share/java/flow-engine.jar; then
12219                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12220             else
12221                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12222             fi
12223         elif ! test -f  $JFREEREPORT_JAR; then
12224                 AC_MSG_ERROR(jfreereport.jar not found.)
12225         fi
12227         if test -z $LIBLAYOUT_JAR; then
12228             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12229                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12230             elif test -f /usr/share/java/liblayout.jar; then
12231                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12232             else
12233                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12234             fi
12235         elif ! test -f $LIBLAYOUT_JAR; then
12236                 AC_MSG_ERROR(liblayout.jar not found.)
12237         fi
12239         if test -z $LIBLOADER_JAR; then
12240             if test -f /usr/share/java/libloader-1.0.0.jar; then
12241                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12242             elif test -f /usr/share/java/libloader.jar; then
12243                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12244             else
12245                 AC_MSG_ERROR(libloader.jar replacement not found.)
12246             fi
12247         elif ! test -f  $LIBLOADER_JAR; then
12248             AC_MSG_ERROR(libloader.jar not found.)
12249         fi
12251         if test -z $LIBFORMULA_JAR; then
12252             if test -f /usr/share/java/libformula-0.2.0.jar; then
12253                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12254             elif test -f /usr/share/java/libformula.jar; then
12255                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12256             else
12257                 AC_MSG_ERROR(libformula.jar replacement not found.)
12258             fi
12259         elif ! test -f $LIBFORMULA_JAR; then
12260                 AC_MSG_ERROR(libformula.jar not found.)
12261         fi
12263         if test -z $LIBREPOSITORY_JAR; then
12264             if test -f /usr/share/java/librepository-1.0.0.jar; then
12265                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12266             elif test -f /usr/share/java/librepository.jar; then
12267                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12268             else
12269                 AC_MSG_ERROR(librepository.jar replacement not found.)
12270             fi
12271         elif ! test -f $LIBREPOSITORY_JAR; then
12272             AC_MSG_ERROR(librepository.jar not found.)
12273         fi
12275         if test -z $LIBFONTS_JAR; then
12276             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12277                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12278             elif test -f /usr/share/java/libfonts.jar; then
12279                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12280             else
12281                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12282             fi
12283         elif ! test -f $LIBFONTS_JAR; then
12284                 AC_MSG_ERROR(libfonts.jar not found.)
12285         fi
12287         if test -z $LIBSERIALIZER_JAR; then
12288             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12289                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12290             elif test -f /usr/share/java/libserializer.jar; then
12291                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12292             else
12293                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12294             fi
12295         elif ! test -f $LIBSERIALIZER_JAR; then
12296                 AC_MSG_ERROR(libserializer.jar not found.)
12297         fi
12299         if test -z $LIBBASE_JAR; then
12300             if test -f /usr/share/java/libbase-1.0.0.jar; then
12301                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12302             elif test -f /usr/share/java/libbase.jar; then
12303                 LIBBASE_JAR=/usr/share/java/libbase.jar
12304             else
12305                 AC_MSG_ERROR(libbase.jar replacement not found.)
12306             fi
12307         elif ! test -f $LIBBASE_JAR; then
12308             AC_MSG_ERROR(libbase.jar not found.)
12309         fi
12311     else
12312         AC_MSG_RESULT([internal])
12313         SYSTEM_JFREEREPORT=
12314         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12315         NEED_ANT=TRUE
12316     fi
12317 else
12318     AC_MSG_RESULT([no])
12319     ENABLE_REPORTBUILDER=
12320     SYSTEM_JFREEREPORT=
12322 AC_SUBST(ENABLE_REPORTBUILDER)
12323 AC_SUBST(SYSTEM_JFREEREPORT)
12324 AC_SUBST(SAC_JAR)
12325 AC_SUBST(LIBXML_JAR)
12326 AC_SUBST(FLUTE_JAR)
12327 AC_SUBST(JFREEREPORT_JAR)
12328 AC_SUBST(LIBBASE_JAR)
12329 AC_SUBST(LIBLAYOUT_JAR)
12330 AC_SUBST(LIBLOADER_JAR)
12331 AC_SUBST(LIBFORMULA_JAR)
12332 AC_SUBST(LIBREPOSITORY_JAR)
12333 AC_SUBST(LIBFONTS_JAR)
12334 AC_SUBST(LIBSERIALIZER_JAR)
12336 # this has to be here because both the Wiki Publisher and the SRB use
12337 # commons-logging
12338 COMMONS_LOGGING_VERSION=1.2
12339 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12340     AC_MSG_CHECKING([which Apache commons-* libs to use])
12341     if test "$with_system_apache_commons" = "yes"; then
12342         SYSTEM_APACHE_COMMONS=TRUE
12343         AC_MSG_RESULT([external])
12344         if test -z $COMMONS_LOGGING_JAR; then
12345             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12346                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12347            elif test -f /usr/share/java/commons-logging.jar; then
12348                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12349             else
12350                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12351             fi
12352         elif ! test -f $COMMONS_LOGGING_JAR; then
12353             AC_MSG_ERROR(commons-logging.jar not found.)
12354         fi
12355     else
12356         AC_MSG_RESULT([internal])
12357         SYSTEM_APACHE_COMMONS=
12358         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12359         NEED_ANT=TRUE
12360     fi
12362 AC_SUBST(SYSTEM_APACHE_COMMONS)
12363 AC_SUBST(COMMONS_LOGGING_JAR)
12364 AC_SUBST(COMMONS_LOGGING_VERSION)
12366 # scripting provider for BeanShell?
12367 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12368 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12369     AC_MSG_RESULT([yes])
12370     ENABLE_SCRIPTING_BEANSHELL=TRUE
12372     dnl ===================================================================
12373     dnl Check for system beanshell
12374     dnl ===================================================================
12375     AC_MSG_CHECKING([which beanshell to use])
12376     if test "$with_system_beanshell" = "yes"; then
12377         AC_MSG_RESULT([external])
12378         SYSTEM_BSH=TRUE
12379         if test -z $BSH_JAR; then
12380             BSH_JAR=/usr/share/java/bsh.jar
12381         fi
12382         if ! test -f $BSH_JAR; then
12383             AC_MSG_ERROR(bsh.jar not found.)
12384         fi
12385     else
12386         AC_MSG_RESULT([internal])
12387         SYSTEM_BSH=
12388         BUILD_TYPE="$BUILD_TYPE BSH"
12389     fi
12390 else
12391     AC_MSG_RESULT([no])
12392     ENABLE_SCRIPTING_BEANSHELL=
12393     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12395 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12396 AC_SUBST(SYSTEM_BSH)
12397 AC_SUBST(BSH_JAR)
12399 # scripting provider for JavaScript?
12400 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12401 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12402     AC_MSG_RESULT([yes])
12403     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12405     dnl ===================================================================
12406     dnl Check for system rhino
12407     dnl ===================================================================
12408     AC_MSG_CHECKING([which rhino to use])
12409     if test "$with_system_rhino" = "yes"; then
12410         AC_MSG_RESULT([external])
12411         SYSTEM_RHINO=TRUE
12412         if test -z $RHINO_JAR; then
12413             RHINO_JAR=/usr/share/java/js.jar
12414         fi
12415         if ! test -f $RHINO_JAR; then
12416             AC_MSG_ERROR(js.jar not found.)
12417         fi
12418     else
12419         AC_MSG_RESULT([internal])
12420         SYSTEM_RHINO=
12421         BUILD_TYPE="$BUILD_TYPE RHINO"
12422         NEED_ANT=TRUE
12423     fi
12424 else
12425     AC_MSG_RESULT([no])
12426     ENABLE_SCRIPTING_JAVASCRIPT=
12427     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12429 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12430 AC_SUBST(SYSTEM_RHINO)
12431 AC_SUBST(RHINO_JAR)
12433 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12434 # paths should be added to library search path. So lets put all 64-bit
12435 # platforms there.
12436 supports_multilib=
12437 case "$host_cpu" in
12438 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12439     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12440         supports_multilib="yes"
12441     fi
12442     ;;
12444     ;;
12445 esac
12447 dnl ===================================================================
12448 dnl QT5 Integration
12449 dnl ===================================================================
12451 QT5_CFLAGS=""
12452 QT5_LIBS=""
12453 QMAKE5="qmake"
12454 MOC5="moc"
12455 QT5_GOBJECT_CFLAGS=""
12456 QT5_GOBJECT_LIBS=""
12457 QT5_HAVE_GOBJECT=""
12458 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12459         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12460         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12461 then
12462     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12463     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12465     if test -n "$supports_multilib"; then
12466         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12467     fi
12469     qt5_test_include="QtWidgets/qapplication.h"
12470     qt5_test_library="libQt5Widgets.so"
12472     dnl Check for qmake5
12473     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12474     if test "$QMAKE5" = "no"; then
12475         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12476     else
12477         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12478         if test -z "$qmake5_test_ver"; then
12479             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12480         fi
12481         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12482         qt5_minimal_minor="6"
12483         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12484             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12485         else
12486             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12487         fi
12488     fi
12490     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12491     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12493     AC_MSG_CHECKING([for Qt5 headers])
12494     qt5_incdir="no"
12495     for inc_dir in $qt5_incdirs; do
12496         if test -r "$inc_dir/$qt5_test_include"; then
12497             qt5_incdir="$inc_dir"
12498             break
12499         fi
12500     done
12501     AC_MSG_RESULT([$qt5_incdir])
12502     if test "x$qt5_incdir" = "xno"; then
12503         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12504     fi
12505     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12506     AC_LANG_PUSH([C++])
12507     save_CPPFLAGS=$CPPFLAGS
12508     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12509     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12510         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12511     CPPFLAGS=$save_CPPFLAGS
12512     AC_LANG_POP([C++])
12514     AC_MSG_CHECKING([for Qt5 libraries])
12515     qt5_libdir="no"
12516     for lib_dir in $qt5_libdirs; do
12517         if test -r "$lib_dir/$qt5_test_library"; then
12518             qt5_libdir="$lib_dir"
12519             break
12520         fi
12521     done
12522     AC_MSG_RESULT([$qt5_libdir])
12523     if test "x$qt5_libdir" = "xno"; then
12524         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12525     fi
12527     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12528     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12529     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12531     if test "$USING_X11" = TRUE; then
12532         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12533         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12534             QT5_HAVE_XCB_ICCCM=1
12535             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12536         ],[
12537             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)])
12538             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12539         ])
12540         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12541         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12542         QT5_USING_X11=1
12543         AC_DEFINE(QT5_USING_X11)
12544     fi
12546     dnl Check for Meta Object Compiler
12548     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12549     if test "$MOC5" = "no"; then
12550         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12551 the root of your Qt installation by exporting QT5DIR before running "configure".])
12552     fi
12554     if test "$build_gstreamer_1_0" = "yes"; then
12555         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12556                 QT5_HAVE_GOBJECT=1
12557                 AC_DEFINE(QT5_HAVE_GOBJECT)
12558             ],
12559             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12560         )
12561     fi
12563 AC_SUBST(QT5_CFLAGS)
12564 AC_SUBST(QT5_LIBS)
12565 AC_SUBST(MOC5)
12566 AC_SUBST(QT5_GOBJECT_CFLAGS)
12567 AC_SUBST(QT5_GOBJECT_LIBS)
12568 AC_SUBST(QT5_HAVE_GOBJECT)
12570 dnl ===================================================================
12571 dnl KF5 Integration
12572 dnl ===================================================================
12574 KF5_CFLAGS=""
12575 KF5_LIBS=""
12576 KF5_CONFIG="kf5-config"
12577 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12578         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12579 then
12580     if test "$OS" = "HAIKU"; then
12581         haiku_arch="`echo $RTL_ARCH | tr X x`"
12582         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12583         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12584     fi
12586     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12587     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12588     if test -n "$supports_multilib"; then
12589         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12590     fi
12592     kf5_test_include="KF5/kcoreaddons_version.h"
12593     kf5_test_library="libKF5CoreAddons.so"
12594     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12596     dnl kf5 KDE4 support compatibility installed
12597     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12598     if test "$KF5_CONFIG" != "no"; then
12599         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12600         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12601     fi
12603     dnl Check for KF5 headers
12604     AC_MSG_CHECKING([for KF5 headers])
12605     kf5_incdir="no"
12606     for kf5_check in $kf5_incdirs; do
12607         if test -r "$kf5_check/$kf5_test_include"; then
12608             kf5_incdir="$kf5_check/KF5"
12609             break
12610         fi
12611     done
12612     AC_MSG_RESULT([$kf5_incdir])
12613     if test "x$kf5_incdir" = "xno"; then
12614         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12615     fi
12617     dnl Check for KF5 libraries
12618     AC_MSG_CHECKING([for KF5 libraries])
12619     kf5_libdir="no"
12620     for kf5_check in $kf5_libdirs; do
12621         if test -r "$kf5_check/$kf5_test_library"; then
12622             kf5_libdir="$kf5_check"
12623             break
12624         fi
12625     done
12627     AC_MSG_RESULT([$kf5_libdir])
12628     if test "x$kf5_libdir" = "xno"; then
12629         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12630     fi
12632     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"
12633     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12634     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12636     if test "$USING_X11" = TRUE; then
12637         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12638     fi
12640     AC_LANG_PUSH([C++])
12641     save_CXXFLAGS=$CXXFLAGS
12642     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12643     AC_MSG_CHECKING([whether KDE is >= 5.0])
12644        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12645 #include <kcoreaddons_version.h>
12647 int main(int argc, char **argv) {
12648        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12649        else return 1;
12651        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12652     CXXFLAGS=$save_CXXFLAGS
12653     AC_LANG_POP([C++])
12655 AC_SUBST(KF5_CFLAGS)
12656 AC_SUBST(KF5_LIBS)
12658 dnl ===================================================================
12659 dnl Test whether to include Evolution 2 support
12660 dnl ===================================================================
12661 AC_MSG_CHECKING([whether to enable evolution 2 support])
12662 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12663     AC_MSG_RESULT([yes])
12664     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12665     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12666     FilterLibs "${GOBJECT_LIBS}"
12667     GOBJECT_LIBS="${filteredlibs}"
12668     ENABLE_EVOAB2="TRUE"
12669 else
12670     ENABLE_EVOAB2=""
12671     AC_MSG_RESULT([no])
12673 AC_SUBST(ENABLE_EVOAB2)
12674 AC_SUBST(GOBJECT_CFLAGS)
12675 AC_SUBST(GOBJECT_LIBS)
12677 dnl ===================================================================
12678 dnl Test which themes to include
12679 dnl ===================================================================
12680 AC_MSG_CHECKING([which themes to include])
12681 # if none given use default subset of available themes
12682 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12683     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"
12686 WITH_THEMES=""
12687 if test "x$with_theme" != "xno"; then
12688     for theme in $with_theme; do
12689         case $theme in
12690         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" ;;
12691         default) real_theme=colibre ;;
12692         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12693         esac
12694         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12695     done
12697 AC_MSG_RESULT([$WITH_THEMES])
12698 AC_SUBST([WITH_THEMES])
12699 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12700 for theme in $with_theme; do
12701     case $theme in
12702     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12703     *) ;;
12704     esac
12705 done
12707 dnl ===================================================================
12708 dnl Test whether to integrate helppacks into the product's installer
12709 dnl ===================================================================
12710 AC_MSG_CHECKING([for helppack integration])
12711 if test "$with_helppack_integration" = "no"; then
12712     AC_MSG_RESULT([no integration])
12713 else
12714     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12715     AC_MSG_RESULT([integration])
12718 ###############################################################################
12719 # Extensions checking
12720 ###############################################################################
12721 AC_MSG_CHECKING([for extensions integration])
12722 if test "x$enable_extension_integration" != "xno"; then
12723     WITH_EXTENSION_INTEGRATION=TRUE
12724     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12725     AC_MSG_RESULT([yes, use integration])
12726 else
12727     WITH_EXTENSION_INTEGRATION=
12728     AC_MSG_RESULT([no, do not integrate])
12730 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12732 dnl Should any extra extensions be included?
12733 dnl There are standalone tests for each of these below.
12734 WITH_EXTRA_EXTENSIONS=
12735 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12737 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12738 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12739 if test "x$with_java" != "xno"; then
12740     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12741     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12744 AC_MSG_CHECKING([whether to build opens___.ttf])
12745 if test "$enable_build_opensymbol" = "yes"; then
12746     AC_MSG_RESULT([yes])
12747     AC_PATH_PROG(FONTFORGE, fontforge)
12748     if test -z "$FONTFORGE"; then
12749         AC_MSG_ERROR([fontforge not installed])
12750     fi
12751 else
12752     AC_MSG_RESULT([no])
12753     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12754     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12756 AC_SUBST(OPENSYMBOL_TTF)
12757 AC_SUBST(FONTFORGE)
12759 dnl ===================================================================
12760 dnl Test whether to include fonts
12761 dnl ===================================================================
12762 AC_MSG_CHECKING([whether to include third-party fonts])
12763 if test "$with_fonts" != "no"; then
12764     AC_MSG_RESULT([yes])
12765     WITH_FONTS=TRUE
12766     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12767     AC_DEFINE(HAVE_MORE_FONTS)
12768 else
12769     AC_MSG_RESULT([no])
12770     WITH_FONTS=
12771     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12773 AC_SUBST(WITH_FONTS)
12776 dnl ===================================================================
12777 dnl Test whether to enable online update service
12778 dnl ===================================================================
12779 AC_MSG_CHECKING([whether to enable online update])
12780 ENABLE_ONLINE_UPDATE=
12781 ENABLE_ONLINE_UPDATE_MAR=
12782 UPDATE_CONFIG=
12783 if test "$enable_online_update" = ""; then
12784     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12785         AC_MSG_RESULT([yes])
12786         ENABLE_ONLINE_UPDATE="TRUE"
12787     else
12788         AC_MSG_RESULT([no])
12789     fi
12790 else
12791     if test "$enable_online_update" = "mar"; then
12792         AC_MSG_RESULT([yes - MAR-based online update])
12793         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12794         if test "$with_update_config" = ""; then
12795             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12796         fi
12797         UPDATE_CONFIG="$with_update_config"
12798         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12799     elif test "$enable_online_update" = "yes"; then
12800         AC_MSG_RESULT([yes])
12801         ENABLE_ONLINE_UPDATE="TRUE"
12802     else
12803         AC_MSG_RESULT([no])
12804     fi
12806 AC_SUBST(ENABLE_ONLINE_UPDATE)
12807 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12808 AC_SUBST(UPDATE_CONFIG)
12810 dnl ===================================================================
12811 dnl Test whether we need bzip2
12812 dnl ===================================================================
12813 SYSTEM_BZIP2=
12814 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12815     AC_MSG_CHECKING([whether to use system bzip2])
12816     if test "$with_system_bzip2" = yes; then
12817         SYSTEM_BZIP2=TRUE
12818         AC_MSG_RESULT([yes])
12819         PKG_CHECK_MODULES(BZIP2, bzip2)
12820         FilterLibs "${BZIP2_LIBS}"
12821         BZIP2_LIBS="${filteredlibs}"
12822     else
12823         AC_MSG_RESULT([no])
12824         BUILD_TYPE="$BUILD_TYPE BZIP2"
12825     fi
12827 AC_SUBST(SYSTEM_BZIP2)
12828 AC_SUBST(BZIP2_CFLAGS)
12829 AC_SUBST(BZIP2_LIBS)
12831 dnl ===================================================================
12832 dnl Test whether to enable extension update
12833 dnl ===================================================================
12834 AC_MSG_CHECKING([whether to enable extension update])
12835 ENABLE_EXTENSION_UPDATE=
12836 if test "x$enable_extension_update" = "xno"; then
12837     AC_MSG_RESULT([no])
12838 else
12839     AC_MSG_RESULT([yes])
12840     ENABLE_EXTENSION_UPDATE="TRUE"
12841     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12842     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12844 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12847 dnl ===================================================================
12848 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12849 dnl ===================================================================
12850 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12851 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12852     AC_MSG_RESULT([no])
12853     ENABLE_SILENT_MSI=
12854 else
12855     AC_MSG_RESULT([yes])
12856     ENABLE_SILENT_MSI=TRUE
12857     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12859 AC_SUBST(ENABLE_SILENT_MSI)
12861 AC_MSG_CHECKING([whether and how to use Xinerama])
12862 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12863     if test "$x_libraries" = "default_x_libraries"; then
12864         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12865         if test "x$XINERAMALIB" = x; then
12866            XINERAMALIB="/usr/lib"
12867         fi
12868     else
12869         XINERAMALIB="$x_libraries"
12870     fi
12871     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12872         # we have both versions, let the user decide but use the dynamic one
12873         # per default
12874         USE_XINERAMA=TRUE
12875         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12876             XINERAMA_LINK=dynamic
12877         else
12878             XINERAMA_LINK=static
12879         fi
12880     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12881         # we have only the dynamic version
12882         USE_XINERAMA=TRUE
12883         XINERAMA_LINK=dynamic
12884     elif test -e "$XINERAMALIB/libXinerama.a"; then
12885         # static version
12886         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12887             USE_XINERAMA=TRUE
12888             XINERAMA_LINK=static
12889         else
12890             USE_XINERAMA=
12891             XINERAMA_LINK=none
12892         fi
12893     else
12894         # no Xinerama
12895         USE_XINERAMA=
12896         XINERAMA_LINK=none
12897     fi
12898     if test "$USE_XINERAMA" = "TRUE"; then
12899         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12900         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12901             [AC_MSG_ERROR(Xinerama header not found.)], [])
12902         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12903         if test "x$XEXTLIB" = x; then
12904            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12905         fi
12906         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12907         if test "$_os" = "FreeBSD"; then
12908             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12909         fi
12910         if test "$_os" = "Linux"; then
12911             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12912         fi
12913         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12914             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12915     else
12916         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12917     fi
12918 else
12919     USE_XINERAMA=
12920     XINERAMA_LINK=none
12921     AC_MSG_RESULT([no])
12923 AC_SUBST(USE_XINERAMA)
12924 AC_SUBST(XINERAMA_LINK)
12926 dnl ===================================================================
12927 dnl Test whether to build cairo or rely on the system version
12928 dnl ===================================================================
12930 if test "$USING_X11" = TRUE; then
12931     # Used in vcl/Library_vclplug_gen.mk
12932     test_cairo=yes
12935 if test "$test_cairo" = "yes"; then
12936     AC_MSG_CHECKING([whether to use the system cairo])
12938     : ${with_system_cairo:=$with_system_libs}
12939     if test "$with_system_cairo" = "yes"; then
12940         SYSTEM_CAIRO=TRUE
12941         AC_MSG_RESULT([yes])
12943         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12944         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12945         FilterLibs "${CAIRO_LIBS}"
12946         CAIRO_LIBS="${filteredlibs}"
12948         if test "$test_xrender" = "yes"; then
12949             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12950             AC_LANG_PUSH([C])
12951             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12952 #ifdef PictStandardA8
12953 #else
12954       return fail;
12955 #endif
12956 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12958             AC_LANG_POP([C])
12959         fi
12960     else
12961         SYSTEM_CAIRO=
12962         AC_MSG_RESULT([no])
12964         BUILD_TYPE="$BUILD_TYPE CAIRO"
12965     fi
12968 AC_SUBST(SYSTEM_CAIRO)
12969 AC_SUBST(CAIRO_CFLAGS)
12970 AC_SUBST(CAIRO_LIBS)
12972 dnl ===================================================================
12973 dnl Test whether to use avahi
12974 dnl ===================================================================
12975 if test "$_os" = "WINNT"; then
12976     # Windows uses bundled mDNSResponder
12977     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12978 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12979     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12980                       [ENABLE_AVAHI="TRUE"])
12981     AC_DEFINE(HAVE_FEATURE_AVAHI)
12982     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12983     FilterLibs "${AVAHI_LIBS}"
12984     AVAHI_LIBS="${filteredlibs}"
12987 AC_SUBST(ENABLE_AVAHI)
12988 AC_SUBST(AVAHI_CFLAGS)
12989 AC_SUBST(AVAHI_LIBS)
12991 dnl ===================================================================
12992 dnl Test whether to use liblangtag
12993 dnl ===================================================================
12994 SYSTEM_LIBLANGTAG=
12995 AC_MSG_CHECKING([whether to use system liblangtag])
12996 if test "$with_system_liblangtag" = yes; then
12997     SYSTEM_LIBLANGTAG=TRUE
12998     AC_MSG_RESULT([yes])
12999     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13000     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13001     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13002     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13003     FilterLibs "${LIBLANGTAG_LIBS}"
13004     LIBLANGTAG_LIBS="${filteredlibs}"
13005 else
13006     SYSTEM_LIBLANGTAG=
13007     AC_MSG_RESULT([no])
13008     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13009     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13010     if test "$COM" = "MSC"; then
13011         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13012     else
13013         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13014     fi
13016 AC_SUBST(SYSTEM_LIBLANGTAG)
13017 AC_SUBST(LIBLANGTAG_CFLAGS)
13018 AC_SUBST(LIBLANGTAG_LIBS)
13020 dnl ===================================================================
13021 dnl Test whether to build libpng or rely on the system version
13022 dnl ===================================================================
13024 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13026 dnl ===================================================================
13027 dnl Check for runtime JVM search path
13028 dnl ===================================================================
13029 if test "$ENABLE_JAVA" != ""; then
13030     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13031     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13032         AC_MSG_RESULT([yes])
13033         if ! test -d "$with_jvm_path"; then
13034             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13035         fi
13036         if ! test -d "$with_jvm_path"jvm; then
13037             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13038         fi
13039         JVM_ONE_PATH_CHECK="$with_jvm_path"
13040         AC_SUBST(JVM_ONE_PATH_CHECK)
13041     else
13042         AC_MSG_RESULT([no])
13043     fi
13046 dnl ===================================================================
13047 dnl Test for the presence of Ant and that it works
13048 dnl ===================================================================
13050 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13051     ANT_HOME=; export ANT_HOME
13052     WITH_ANT_HOME=; export WITH_ANT_HOME
13053     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13054         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13055             if test "$_os" = "WINNT"; then
13056                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13057             else
13058                 with_ant_home="$LODE_HOME/opt/ant"
13059             fi
13060         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13061             with_ant_home="$LODE_HOME/opt/ant"
13062         fi
13063     fi
13064     if test -z "$with_ant_home"; then
13065         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13066     else
13067         if test "$_os" = "WINNT"; then
13068             # AC_PATH_PROGS needs unix path
13069             with_ant_home=`cygpath -u "$with_ant_home"`
13070         fi
13071         AbsolutePath "$with_ant_home"
13072         with_ant_home=$absolute_path
13073         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13074         WITH_ANT_HOME=$with_ant_home
13075         ANT_HOME=$with_ant_home
13076     fi
13078     if test -z "$ANT"; then
13079         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13080     else
13081         # resolve relative or absolute symlink
13082         while test -h "$ANT"; do
13083             a_cwd=`pwd`
13084             a_basename=`basename "$ANT"`
13085             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13086             cd "`dirname "$ANT"`"
13087             cd "`dirname "$a_script"`"
13088             ANT="`pwd`"/"`basename "$a_script"`"
13089             cd "$a_cwd"
13090         done
13092         AC_MSG_CHECKING([if $ANT works])
13093         mkdir -p conftest.dir
13094         a_cwd=$(pwd)
13095         cd conftest.dir
13096         cat > conftest.java << EOF
13097         public class conftest {
13098             int testmethod(int a, int b) {
13099                     return a + b;
13100             }
13101         }
13104         cat > conftest.xml << EOF
13105         <project name="conftest" default="conftest">
13106         <target name="conftest">
13107             <javac srcdir="." includes="conftest.java">
13108             </javac>
13109         </target>
13110         </project>
13113         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13114         if test $? = 0 -a -f ./conftest.class; then
13115             AC_MSG_RESULT([Ant works])
13116             if test -z "$WITH_ANT_HOME"; then
13117                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13118                 if test -z "$ANT_HOME"; then
13119                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13120                 fi
13121             else
13122                 ANT_HOME="$WITH_ANT_HOME"
13123             fi
13124         else
13125             echo "configure: Ant test failed" >&5
13126             cat conftest.java >&5
13127             cat conftest.xml >&5
13128             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13129         fi
13130         cd "$a_cwd"
13131         rm -fr conftest.dir
13132     fi
13133     if test -z "$ANT_HOME"; then
13134         ANT_HOME="NO_ANT_HOME"
13135     else
13136         PathFormat "$ANT_HOME"
13137         ANT_HOME="$formatted_path"
13138         PathFormat "$ANT"
13139         ANT="$formatted_path"
13140     fi
13142     dnl Checking for ant.jar
13143     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13144         AC_MSG_CHECKING([Ant lib directory])
13145         if test -f $ANT_HOME/lib/ant.jar; then
13146             ANT_LIB="$ANT_HOME/lib"
13147         else
13148             if test -f $ANT_HOME/ant.jar; then
13149                 ANT_LIB="$ANT_HOME"
13150             else
13151                 if test -f /usr/share/java/ant.jar; then
13152                     ANT_LIB=/usr/share/java
13153                 else
13154                     if test -f /usr/share/ant-core/lib/ant.jar; then
13155                         ANT_LIB=/usr/share/ant-core/lib
13156                     else
13157                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13158                             ANT_LIB="$ANT_HOME/lib/ant"
13159                         else
13160                             if test -f /usr/share/lib/ant/ant.jar; then
13161                                 ANT_LIB=/usr/share/lib/ant
13162                             else
13163                                 AC_MSG_ERROR([Ant libraries not found!])
13164                             fi
13165                         fi
13166                     fi
13167                 fi
13168             fi
13169         fi
13170         PathFormat "$ANT_LIB"
13171         ANT_LIB="$formatted_path"
13172         AC_MSG_RESULT([Ant lib directory found.])
13173     fi
13175     ant_minver=1.6.0
13176     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13178     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13179     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13180     ant_version_major=`echo $ant_version | cut -d. -f1`
13181     ant_version_minor=`echo $ant_version | cut -d. -f2`
13182     echo "configure: ant_version $ant_version " >&5
13183     echo "configure: ant_version_major $ant_version_major " >&5
13184     echo "configure: ant_version_minor $ant_version_minor " >&5
13185     if test "$ant_version_major" -ge "2"; then
13186         AC_MSG_RESULT([yes, $ant_version])
13187     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13188         AC_MSG_RESULT([yes, $ant_version])
13189     else
13190         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13191     fi
13193     rm -f conftest* core core.* *.core
13195 AC_SUBST(ANT)
13196 AC_SUBST(ANT_HOME)
13197 AC_SUBST(ANT_LIB)
13199 OOO_JUNIT_JAR=
13200 HAMCREST_JAR=
13201 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13202     AC_MSG_CHECKING([for JUnit 4])
13203     if test "$with_junit" = "yes"; then
13204         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13205             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13206         elif test -e /usr/share/java/junit4.jar; then
13207             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13208         else
13209            if test -e /usr/share/lib/java/junit.jar; then
13210               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13211            else
13212               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13213            fi
13214         fi
13215     else
13216         OOO_JUNIT_JAR=$with_junit
13217     fi
13218     if test "$_os" = "WINNT"; then
13219         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13220     fi
13221     printf 'import org.junit.Before;' > conftest.java
13222     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13223         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13224     else
13225         AC_MSG_ERROR(
13226 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13227  specify its pathname via --with-junit=..., or disable it via --without-junit])
13228     fi
13229     rm -f conftest.class conftest.java
13230     if test $OOO_JUNIT_JAR != ""; then
13231         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13232     fi
13234     AC_MSG_CHECKING([for included Hamcrest])
13235     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13236     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13237         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13238     else
13239         AC_MSG_RESULT([Not included])
13240         AC_MSG_CHECKING([for standalone hamcrest jar.])
13241         if test "$with_hamcrest" = "yes"; then
13242             if test -e /usr/share/lib/java/hamcrest.jar; then
13243                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13244             elif test -e /usr/share/java/hamcrest/core.jar; then
13245                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13246             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13247                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13248             else
13249                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13250             fi
13251         else
13252             HAMCREST_JAR=$with_hamcrest
13253         fi
13254         if test "$_os" = "WINNT"; then
13255             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13256         fi
13257         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13258             AC_MSG_RESULT([$HAMCREST_JAR])
13259         else
13260             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),
13261                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13262         fi
13263     fi
13264     rm -f conftest.class conftest.java
13266 AC_SUBST(OOO_JUNIT_JAR)
13267 AC_SUBST(HAMCREST_JAR)
13270 AC_SUBST(SCPDEFS)
13273 # check for wget and curl
13275 WGET=
13276 CURL=
13278 if test "$enable_fetch_external" != "no"; then
13280 CURL=`which curl 2>/dev/null`
13282 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13283     # wget new enough?
13284     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13285     if test $? -eq 0; then
13286         WGET=$i
13287         break
13288     fi
13289 done
13291 if test -z "$WGET" -a -z "$CURL"; then
13292     AC_MSG_ERROR([neither wget nor curl found!])
13297 AC_SUBST(WGET)
13298 AC_SUBST(CURL)
13301 # check for sha256sum
13303 SHA256SUM=
13305 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13306     eval "$i -a 256 --version" > /dev/null 2>&1
13307     ret=$?
13308     if test $ret -eq 0; then
13309         SHA256SUM="$i -a 256"
13310         break
13311     fi
13312 done
13314 if test -z "$SHA256SUM"; then
13315     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13316         eval "$i --version" > /dev/null 2>&1
13317         ret=$?
13318         if test $ret -eq 0; then
13319             SHA256SUM=$i
13320             break
13321         fi
13322     done
13325 if test -z "$SHA256SUM"; then
13326     AC_MSG_ERROR([no sha256sum found!])
13329 AC_SUBST(SHA256SUM)
13331 dnl ===================================================================
13332 dnl Dealing with l10n options
13333 dnl ===================================================================
13334 AC_MSG_CHECKING([which languages to be built])
13335 # get list of all languages
13336 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13337 # the sed command does the following:
13338 #   + if a line ends with a backslash, append the next line to it
13339 #   + adds " on the beginning of the value (after =)
13340 #   + adds " at the end of the value
13341 #   + removes en-US; we want to put it on the beginning
13342 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13343 [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)]
13344 ALL_LANGS="en-US $completelangiso"
13345 # check the configured localizations
13346 WITH_LANG="$with_lang"
13348 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13349 # (Norwegian is "nb" and "nn".)
13350 if test "$WITH_LANG" = "no"; then
13351     WITH_LANG=
13354 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13355     AC_MSG_RESULT([en-US])
13356 else
13357     AC_MSG_RESULT([$WITH_LANG])
13358     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13359     if test -z "$MSGFMT"; then
13360         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13361             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13362         elif test -x "/opt/lo/bin/msgfmt"; then
13363             MSGFMT="/opt/lo/bin/msgfmt"
13364         else
13365             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13366             if test -z "$MSGFMT"; then
13367                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13368             fi
13369         fi
13370     fi
13371     if test -z "$MSGUNIQ"; then
13372         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13373             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13374         elif test -x "/opt/lo/bin/msguniq"; then
13375             MSGUNIQ="/opt/lo/bin/msguniq"
13376         else
13377             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13378             if test -z "$MSGUNIQ"; then
13379                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13380             fi
13381         fi
13382     fi
13384 AC_SUBST(MSGFMT)
13385 AC_SUBST(MSGUNIQ)
13386 # check that the list is valid
13387 for lang in $WITH_LANG; do
13388     test "$lang" = "ALL" && continue
13389     # need to check for the exact string, so add space before and after the list of all languages
13390     for vl in $ALL_LANGS; do
13391         if test "$vl" = "$lang"; then
13392            break
13393         fi
13394     done
13395     if test "$vl" != "$lang"; then
13396         # if you're reading this - you prolly quoted your languages remove the quotes ...
13397         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13398     fi
13399 done
13400 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13401     echo $WITH_LANG | grep -q en-US
13402     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13404 # list with substituted ALL
13405 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13406 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13407 test "$WITH_LANG" = "en-US" && WITH_LANG=
13408 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13409     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13410     ALL_LANGS=`echo $ALL_LANGS qtz`
13412 AC_SUBST(ALL_LANGS)
13413 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13414 AC_SUBST(WITH_LANG)
13415 AC_SUBST(WITH_LANG_LIST)
13416 AC_SUBST(GIT_NEEDED_SUBMODULES)
13418 WITH_POOR_HELP_LOCALIZATIONS=
13419 if test -d "$SRC_ROOT/translations/source"; then
13420     for l in `ls -1 $SRC_ROOT/translations/source`; do
13421         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13422             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13423         fi
13424     done
13426 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13428 if test -n "$with_locales"; then
13429     WITH_LOCALES="$with_locales"
13431     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13432     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13433     # config_host/config_locales.h.in
13434     for locale in $WITH_LOCALES; do
13435         lang=${locale%_*}
13437         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13439         case $lang in
13440         hi|mr*ne)
13441             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13442             ;;
13443         bg|ru)
13444             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13445             ;;
13446         esac
13447     done
13448 else
13449     AC_DEFINE(WITH_LOCALE_ALL)
13451 AC_SUBST(WITH_LOCALES)
13453 dnl git submodule update --reference
13454 dnl ===================================================================
13455 if test -n "${GIT_REFERENCE_SRC}"; then
13456     for repo in ${GIT_NEEDED_SUBMODULES}; do
13457         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13458             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13459         fi
13460     done
13462 AC_SUBST(GIT_REFERENCE_SRC)
13464 dnl git submodules linked dirs
13465 dnl ===================================================================
13466 if test -n "${GIT_LINK_SRC}"; then
13467     for repo in ${GIT_NEEDED_SUBMODULES}; do
13468         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13469             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13470         fi
13471     done
13473 AC_SUBST(GIT_LINK_SRC)
13475 dnl branding
13476 dnl ===================================================================
13477 AC_MSG_CHECKING([for alternative branding images directory])
13478 # initialize mapped arrays
13479 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13480 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13482 if test -z "$with_branding" -o "$with_branding" = "no"; then
13483     AC_MSG_RESULT([none])
13484     DEFAULT_BRAND_IMAGES="$brand_files"
13485 else
13486     if ! test -d $with_branding ; then
13487         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13488     else
13489         AC_MSG_RESULT([$with_branding])
13490         CUSTOM_BRAND_DIR="$with_branding"
13491         for lfile in $brand_files
13492         do
13493             if ! test -f $with_branding/$lfile ; then
13494                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13495                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13496             else
13497                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13498             fi
13499         done
13500         check_for_progress="yes"
13501     fi
13503 AC_SUBST([BRAND_INTRO_IMAGES])
13504 AC_SUBST([CUSTOM_BRAND_DIR])
13505 AC_SUBST([CUSTOM_BRAND_IMAGES])
13506 AC_SUBST([DEFAULT_BRAND_IMAGES])
13509 AC_MSG_CHECKING([for 'intro' progress settings])
13510 PROGRESSBARCOLOR=
13511 PROGRESSSIZE=
13512 PROGRESSPOSITION=
13513 PROGRESSFRAMECOLOR=
13514 PROGRESSTEXTCOLOR=
13515 PROGRESSTEXTBASELINE=
13517 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13518     source "$with_branding/progress.conf"
13519     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13520 else
13521     AC_MSG_RESULT([none])
13524 AC_SUBST(PROGRESSBARCOLOR)
13525 AC_SUBST(PROGRESSSIZE)
13526 AC_SUBST(PROGRESSPOSITION)
13527 AC_SUBST(PROGRESSFRAMECOLOR)
13528 AC_SUBST(PROGRESSTEXTCOLOR)
13529 AC_SUBST(PROGRESSTEXTBASELINE)
13532 dnl ===================================================================
13533 dnl Custom build version
13534 dnl ===================================================================
13535 AC_MSG_CHECKING([for extra build ID])
13536 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13537     EXTRA_BUILDID="$with_extra_buildid"
13539 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13540 if test -n "$EXTRA_BUILDID" ; then
13541     AC_MSG_RESULT([$EXTRA_BUILDID])
13542 else
13543     AC_MSG_RESULT([not set])
13545 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13547 OOO_VENDOR=
13548 AC_MSG_CHECKING([for vendor])
13549 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13550     OOO_VENDOR="$USERNAME"
13552     if test -z "$OOO_VENDOR"; then
13553         OOO_VENDOR="$USER"
13554     fi
13556     if test -z "$OOO_VENDOR"; then
13557         OOO_VENDOR="`id -u -n`"
13558     fi
13560     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13561 else
13562     OOO_VENDOR="$with_vendor"
13563     AC_MSG_RESULT([$OOO_VENDOR])
13565 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13566 AC_SUBST(OOO_VENDOR)
13568 if test "$_os" = "Android" ; then
13569     ANDROID_PACKAGE_NAME=
13570     AC_MSG_CHECKING([for Android package name])
13571     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13572         if test -n "$ENABLE_DEBUG"; then
13573             # Default to the package name that makes ndk-gdb happy.
13574             ANDROID_PACKAGE_NAME="org.libreoffice"
13575         else
13576             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13577         fi
13579         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13580     else
13581         ANDROID_PACKAGE_NAME="$with_android_package_name"
13582         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13583     fi
13584     AC_SUBST(ANDROID_PACKAGE_NAME)
13587 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13588 if test "$with_compat_oowrappers" = "yes"; then
13589     WITH_COMPAT_OOWRAPPERS=TRUE
13590     AC_MSG_RESULT(yes)
13591 else
13592     WITH_COMPAT_OOWRAPPERS=
13593     AC_MSG_RESULT(no)
13595 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13597 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13598 AC_MSG_CHECKING([for install dirname])
13599 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13600     INSTALLDIRNAME="$with_install_dirname"
13602 AC_MSG_RESULT([$INSTALLDIRNAME])
13603 AC_SUBST(INSTALLDIRNAME)
13605 AC_MSG_CHECKING([for prefix])
13606 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13607 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13608 PREFIXDIR="$prefix"
13609 AC_MSG_RESULT([$PREFIXDIR])
13610 AC_SUBST(PREFIXDIR)
13612 LIBDIR=[$(eval echo $(eval echo $libdir))]
13613 AC_SUBST(LIBDIR)
13615 DATADIR=[$(eval echo $(eval echo $datadir))]
13616 AC_SUBST(DATADIR)
13618 MANDIR=[$(eval echo $(eval echo $mandir))]
13619 AC_SUBST(MANDIR)
13621 DOCDIR=[$(eval echo $(eval echo $docdir))]
13622 AC_SUBST(DOCDIR)
13624 BINDIR=[$(eval echo $(eval echo $bindir))]
13625 AC_SUBST(BINDIR)
13627 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13628 AC_SUBST(INSTALLDIR)
13630 TESTINSTALLDIR="${BUILDDIR}/test-install"
13631 AC_SUBST(TESTINSTALLDIR)
13634 # ===================================================================
13635 # OAuth2 id and secrets
13636 # ===================================================================
13638 AC_MSG_CHECKING([for Google Drive client id and secret])
13639 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13640     AC_MSG_RESULT([not set])
13641     GDRIVE_CLIENT_ID="\"\""
13642     GDRIVE_CLIENT_SECRET="\"\""
13643 else
13644     AC_MSG_RESULT([set])
13645     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13646     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13648 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13649 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13651 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13652 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13653     AC_MSG_RESULT([not set])
13654     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13655     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13656 else
13657     AC_MSG_RESULT([set])
13658     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13659     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13661 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13662 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13664 AC_MSG_CHECKING([for OneDrive client id and secret])
13665 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13666     AC_MSG_RESULT([not set])
13667     ONEDRIVE_CLIENT_ID="\"\""
13668     ONEDRIVE_CLIENT_SECRET="\"\""
13669 else
13670     AC_MSG_RESULT([set])
13671     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13672     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13674 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13675 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13678 dnl ===================================================================
13679 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13680 dnl --enable-dependency-tracking configure option
13681 dnl ===================================================================
13682 AC_MSG_CHECKING([whether to enable dependency tracking])
13683 if test "$enable_dependency_tracking" = "no"; then
13684     nodep=TRUE
13685     AC_MSG_RESULT([no])
13686 else
13687     AC_MSG_RESULT([yes])
13689 AC_SUBST(nodep)
13691 dnl ===================================================================
13692 dnl Number of CPUs to use during the build
13693 dnl ===================================================================
13694 AC_MSG_CHECKING([for number of processors to use])
13695 # plain --with-parallelism is just the default
13696 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13697     if test "$with_parallelism" = "no"; then
13698         PARALLELISM=0
13699     else
13700         PARALLELISM=$with_parallelism
13701     fi
13702 else
13703     if test "$enable_icecream" = "yes"; then
13704         PARALLELISM="40"
13705     else
13706         case `uname -s` in
13708         Darwin|FreeBSD|NetBSD|OpenBSD)
13709             PARALLELISM=`sysctl -n hw.ncpu`
13710             ;;
13712         Linux)
13713             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13714         ;;
13715         # what else than above does profit here *and* has /proc?
13716         *)
13717             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13718             ;;
13719         esac
13721         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13722         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13723     fi
13726 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13727     if test -z "$with_parallelism"; then
13728             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13729             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13730             PARALLELISM="1"
13731     else
13732         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."
13733     fi
13736 if test $PARALLELISM -eq 0; then
13737     AC_MSG_RESULT([explicit make -j option needed])
13738 else
13739     AC_MSG_RESULT([$PARALLELISM])
13741 AC_SUBST(PARALLELISM)
13743 IWYU_PATH="$with_iwyu"
13744 AC_SUBST(IWYU_PATH)
13745 if test ! -z "$IWYU_PATH"; then
13746     if test ! -f "$IWYU_PATH"; then
13747         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13748     fi
13752 # Set up ILIB for MSVC build
13754 ILIB1=
13755 if test "$build_os" = "cygwin"; then
13756     ILIB="."
13757     if test -n "$JAVA_HOME"; then
13758         ILIB="$ILIB;$JAVA_HOME/lib"
13759     fi
13760     ILIB1=-link
13761     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13762     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13763     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13764     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13765     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13766         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13767         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13768     fi
13769     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13770     ucrtlibpath_formatted=$formatted_path
13771     ILIB="$ILIB;$ucrtlibpath_formatted"
13772     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13773     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13774         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13775     else
13776         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13777     fi
13779     if test "$cross_compiling" != "yes"; then
13780         ILIB_FOR_BUILD="$ILIB"
13781     fi
13783 AC_SUBST(ILIB)
13784 AC_SUBST(ILIB_FOR_BUILD)
13786 # ===================================================================
13787 # Creating bigger shared library to link against
13788 # ===================================================================
13789 AC_MSG_CHECKING([whether to create huge library])
13790 MERGELIBS=
13792 if test $_os = iOS -o $_os = Android; then
13793     # Never any point in mergelibs for these as we build just static
13794     # libraries anyway...
13795     enable_mergelibs=no
13798 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13799     if test $_os != Linux -a $_os != WINNT; then
13800         add_warning "--enable-mergelibs is not tested for this platform"
13801     fi
13802     MERGELIBS="TRUE"
13803     AC_MSG_RESULT([yes])
13804     AC_DEFINE(ENABLE_MERGELIBS)
13805 else
13806     AC_MSG_RESULT([no])
13808 AC_SUBST([MERGELIBS])
13810 dnl ===================================================================
13811 dnl icerun is a wrapper that stops us spawning tens of processes
13812 dnl locally - for tools that can't be executed on the compile cluster
13813 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13814 dnl ===================================================================
13815 AC_MSG_CHECKING([whether to use icerun wrapper])
13816 ICECREAM_RUN=
13817 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13818     ICECREAM_RUN=icerun
13819     AC_MSG_RESULT([yes])
13820 else
13821     AC_MSG_RESULT([no])
13823 AC_SUBST(ICECREAM_RUN)
13825 dnl ===================================================================
13826 dnl Setup the ICECC_VERSION for the build the same way it was set for
13827 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13828 dnl ===================================================================
13829 x_ICECC_VERSION=[\#]
13830 if test -n "$ICECC_VERSION" ; then
13831     x_ICECC_VERSION=
13833 AC_SUBST(x_ICECC_VERSION)
13834 AC_SUBST(ICECC_VERSION)
13836 dnl ===================================================================
13838 AC_MSG_CHECKING([MPL subset])
13839 MPL_SUBSET=
13841 if test "$enable_mpl_subset" = "yes"; then
13842     warn_report=false
13843     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13844         warn_report=true
13845     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13846         warn_report=true
13847     fi
13848     if test "$warn_report" = "true"; then
13849         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13850     fi
13851     if test "x$enable_postgresql_sdbc" != "xno"; then
13852         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13853     fi
13854     if test "$enable_lotuswordpro" = "yes"; then
13855         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13856     fi
13857     if test "$WITH_WEBDAV" = "neon"; then
13858         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13859     fi
13860     if test -n "$ENABLE_POPPLER"; then
13861         if test "x$SYSTEM_POPPLER" = "x"; then
13862             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13863         fi
13864     fi
13865     # cf. m4/libo_check_extension.m4
13866     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13867         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13868     fi
13869     for theme in $WITH_THEMES; do
13870         case $theme in
13871         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13872             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13873         *) : ;;
13874         esac
13875     done
13877     ENABLE_OPENGL_TRANSITIONS=
13879     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13880         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13881     fi
13883     MPL_SUBSET="TRUE"
13884     AC_DEFINE(MPL_HAVE_SUBSET)
13885     AC_MSG_RESULT([only])
13886 else
13887     AC_MSG_RESULT([no restrictions])
13889 AC_SUBST(MPL_SUBSET)
13891 dnl ===================================================================
13893 AC_MSG_CHECKING([formula logger])
13894 ENABLE_FORMULA_LOGGER=
13896 if test "x$enable_formula_logger" = "xyes"; then
13897     AC_MSG_RESULT([yes])
13898     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13899     ENABLE_FORMULA_LOGGER=TRUE
13900 elif test -n "$ENABLE_DBGUTIL" ; then
13901     AC_MSG_RESULT([yes])
13902     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13903     ENABLE_FORMULA_LOGGER=TRUE
13904 else
13905     AC_MSG_RESULT([no])
13908 AC_SUBST(ENABLE_FORMULA_LOGGER)
13910 dnl ===================================================================
13911 dnl Checking for active Antivirus software.
13912 dnl ===================================================================
13914 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13915     AC_MSG_CHECKING([for active Antivirus software])
13916     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13917     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13918         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13919             AC_MSG_RESULT([found])
13920             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13921             echo $EICAR_STRING > $SRC_ROOT/eicar
13922             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13923             rm $SRC_ROOT/eicar
13924             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13925                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13926             fi
13927             echo $EICAR_STRING > $BUILDDIR/eicar
13928             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13929             rm $BUILDDIR/eicar
13930             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13931                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13932             fi
13933             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"
13934         else
13935             AC_MSG_RESULT([not found])
13936         fi
13937     else
13938         AC_MSG_RESULT([n/a])
13939     fi
13942 dnl ===================================================================
13943 dnl Setting up the environment.
13944 dnl ===================================================================
13945 AC_MSG_NOTICE([setting up the build environment variables...])
13947 AC_SUBST(COMPATH)
13949 if test "$build_os" = "cygwin"; then
13950     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13951         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13952         ATL_INCLUDE="$COMPATH/atlmfc/include"
13953     elif test -d "$COMPATH/atlmfc/lib"; then
13954         ATL_LIB="$COMPATH/atlmfc/lib"
13955         ATL_INCLUDE="$COMPATH/atlmfc/include"
13956     else
13957         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13958         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13959     fi
13960     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13961     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13962     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13964     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13965     PathFormat "/usr/bin/find.exe"
13966     FIND="$formatted_path"
13967     PathFormat "/usr/bin/sort.exe"
13968     SORT="$formatted_path"
13969     PathFormat "/usr/bin/grep.exe"
13970     WIN_GREP="$formatted_path"
13971     PathFormat "/usr/bin/ls.exe"
13972     WIN_LS="$formatted_path"
13973     PathFormat "/usr/bin/touch.exe"
13974     WIN_TOUCH="$formatted_path"
13975 else
13976     FIND=find
13977     SORT=sort
13980 AC_SUBST(ATL_INCLUDE)
13981 AC_SUBST(ATL_LIB)
13982 AC_SUBST(FIND)
13983 AC_SUBST(SORT)
13984 AC_SUBST(WIN_GREP)
13985 AC_SUBST(WIN_LS)
13986 AC_SUBST(WIN_TOUCH)
13988 AC_SUBST(BUILD_TYPE)
13990 AC_SUBST(SOLARINC)
13992 PathFormat "$PERL"
13993 PERL="$formatted_path"
13994 AC_SUBST(PERL)
13996 if test -n "$TMPDIR"; then
13997     TEMP_DIRECTORY="$TMPDIR"
13998 else
13999     TEMP_DIRECTORY="/tmp"
14001 if test "$build_os" = "cygwin"; then
14002     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14004 AC_SUBST(TEMP_DIRECTORY)
14006 # setup the PATH for the environment
14007 if test -n "$LO_PATH_FOR_BUILD"; then
14008     LO_PATH="$LO_PATH_FOR_BUILD"
14009     case "$host_os" in
14010     cygwin*|wsl*)
14011         pathmunge "$MSVC_HOST_PATH" "before"
14012         ;;
14013     esac
14014 else
14015     LO_PATH="$PATH"
14017     case "$host_os" in
14019     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14020         if test "$ENABLE_JAVA" != ""; then
14021             pathmunge "$JAVA_HOME/bin" "after"
14022         fi
14023         ;;
14025     cygwin*|wsl*)
14026         # Win32 make needs native paths
14027         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14028             LO_PATH=`cygpath -p -m "$PATH"`
14029         fi
14030         if test "$WIN_BUILD_ARCH" = "x64"; then
14031             # needed for msi packaging
14032             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14033         fi
14034         # .NET 4.6 and higher don't have bin directory
14035         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14036             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14037         fi
14038         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14039         pathmunge "$CSC_PATH" "before"
14040         pathmunge "$MIDL_PATH" "before"
14041         pathmunge "$AL_PATH" "before"
14042         pathmunge "$MSVC_MULTI_PATH" "before"
14043         pathmunge "$MSVC_BUILD_PATH" "before"
14044         if test -n "$MSBUILD_PATH" ; then
14045             pathmunge "$MSBUILD_PATH" "before"
14046         fi
14047         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14048         if test "$ENABLE_JAVA" != ""; then
14049             if test -d "$JAVA_HOME/jre/bin/client"; then
14050                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14051             fi
14052             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14053                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14054             fi
14055             pathmunge "$JAVA_HOME/bin" "before"
14056         fi
14057         pathmunge "$MSVC_HOST_PATH" "before"
14058         ;;
14060     solaris*)
14061         pathmunge "/usr/css/bin" "before"
14062         if test "$ENABLE_JAVA" != ""; then
14063             pathmunge "$JAVA_HOME/bin" "after"
14064         fi
14065         ;;
14066     esac
14069 AC_SUBST(LO_PATH)
14071 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14072 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14073     x_LO_ELFCHECK_ALLOWLIST=
14074 else
14075     x_LO_ELFCHECK_ALLOWLIST=[\#]
14077 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14078 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14080 libo_FUZZ_SUMMARY
14082 # Generate a configuration sha256 we can use for deps
14083 if test -f config_host.mk; then
14084     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14086 if test -f config_host_lang.mk; then
14087     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14090 CFLAGS=$my_original_CFLAGS
14091 CXXFLAGS=$my_original_CXXFLAGS
14092 CPPFLAGS=$my_original_CPPFLAGS
14094 AC_CONFIG_LINKS([include:include])
14096 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14097 # BUILD platform configuration] - otherwise breaks cross building
14098 AC_CONFIG_FILES([config_host.mk
14099                  config_host_lang.mk
14100                  Makefile
14101                  bin/bffvalidator.sh
14102                  bin/odfvalidator.sh
14103                  bin/officeotron.sh
14104                  hardened_runtime.xcent
14105                  instsetoo_native/util/openoffice.lst
14106                  sysui/desktop/macosx/Info.plist])
14107 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14108 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14109 AC_CONFIG_HEADERS([config_host/config_clang.h])
14110 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14111 AC_CONFIG_HEADERS([config_host/config_eot.h])
14112 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14113 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14114 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14115 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14116 AC_CONFIG_HEADERS([config_host/config_features.h])
14117 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14118 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14119 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14120 AC_CONFIG_HEADERS([config_host/config_folders.h])
14121 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14122 AC_CONFIG_HEADERS([config_host/config_gio.h])
14123 AC_CONFIG_HEADERS([config_host/config_global.h])
14124 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14125 AC_CONFIG_HEADERS([config_host/config_java.h])
14126 AC_CONFIG_HEADERS([config_host/config_langs.h])
14127 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14128 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14129 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14130 AC_CONFIG_HEADERS([config_host/config_locales.h])
14131 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14132 AC_CONFIG_HEADERS([config_host/config_oox.h])
14133 AC_CONFIG_HEADERS([config_host/config_options.h])
14134 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14135 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14136 AC_CONFIG_HEADERS([config_host/config_skia.h])
14137 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14138 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14139 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14140 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14141 AC_CONFIG_HEADERS([config_host/config_version.h])
14142 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14143 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14144 AC_CONFIG_HEADERS([config_host/config_python.h])
14145 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14146 AC_OUTPUT
14148 if test "$CROSS_COMPILING" = TRUE; then
14149     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14152 # touch the config timestamp file
14153 if test ! -f config_host.mk.stamp; then
14154     echo > config_host.mk.stamp
14155 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14156     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14157 else
14158     echo > config_host.mk.stamp
14161 # touch the config lang timestamp file
14162 if test ! -f config_host_lang.mk.stamp; then
14163     echo > config_host_lang.mk.stamp
14164 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14165     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14166 else
14167     echo > config_host_lang.mk.stamp
14171 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14172         -a "$build_os" = "cygwin"; then
14174 cat << _EOS
14175 ****************************************************************************
14176 WARNING:
14177 Your make version is known to be horribly slow, and hard to debug
14178 problems with. To get a reasonably functional make please do:
14180 to install a pre-compiled binary make for Win32
14182  mkdir -p /opt/lo/bin
14183  cd /opt/lo/bin
14184  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14185  cp make-4.2.1-msvc.exe make
14186  chmod +x make
14188 to install from source:
14189 place yourself in a working directory of you choice.
14191  git clone git://git.savannah.gnu.org/make.git
14193  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14194  set PATH=%PATH%;C:\Cygwin\bin
14195  [or Cygwin64, if that is what you have]
14196  cd path-to-make-repo-you-cloned-above
14197  build_w32.bat --without-guile
14199 should result in a WinRel/gnumake.exe.
14200 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14202 Then re-run autogen.sh
14204 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14205 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14207 _EOS
14208 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14209     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14214 cat << _EOF
14215 ****************************************************************************
14217 To build, run:
14218 $GNUMAKE
14220 To view some help, run:
14221 $GNUMAKE help
14223 _EOF
14225 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14226     cat << _EOF
14227 After the build has finished successfully, you can immediately run what you built using the command:
14228 _EOF
14230     if test $_os = Darwin; then
14231         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14232     else
14233         echo instdir/program/soffice
14234     fi
14235     cat << _EOF
14237 If you want to run the smoketest, run:
14238 $GNUMAKE check
14240 _EOF
14243 if test -f warn; then
14244     cat warn
14245     rm warn
14248 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: