Revert "tdf#127471 Remove font width scaling hack"
[LibreOffice.git] / configure.ac
blob0b382e8f5bf2cfbb503e9f17efcfc67ce41d30a1
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.0.0.alpha1+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 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 AC_ARG_WITH(package-version,
1767     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1768         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1771 libo_FUZZ_ARG_ENABLE(readonly-installset,
1772     AS_HELP_STRING([--enable-readonly-installset],
1773         [Prevents any attempts by LibreOffice to write into its installation. That means
1774          at least that no "system-wide" extensions can be added. Partly experimental work in
1775          progress, probably not fully implemented. Always enabled for macOS.]),
1778 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1779     AS_HELP_STRING([--disable-mariadb-sdbc],
1780         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1783 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1784     AS_HELP_STRING([--disable-postgresql-sdbc],
1785         [Disable the build of the PostgreSQL-SDBC driver.])
1788 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1789     AS_HELP_STRING([--disable-lotuswordpro],
1790         [Disable the build of the Lotus Word Pro filter.]),
1791 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1793 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1794     AS_HELP_STRING([--disable-firebird-sdbc],
1795         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1796 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1798 AC_ARG_ENABLE(bogus-pkg-config,
1799     AS_HELP_STRING([--enable-bogus-pkg-config],
1800         [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.]),
1803 AC_ARG_ENABLE(openssl,
1804     AS_HELP_STRING([--disable-openssl],
1805         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1806          components will either use GNUTLS or NSS. Work in progress,
1807          use only if you are hacking on it.]),
1808 ,enable_openssl=yes)
1810 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1811     AS_HELP_STRING([--enable-cipher-openssl-backend],
1812         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1813          Requires --enable-openssl.]))
1815 AC_ARG_ENABLE(library-bin-tar,
1816     AS_HELP_STRING([--enable-library-bin-tar],
1817         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1818         Some libraries can save their build result in a tarball
1819         stored in TARFILE_LOCATION. That binary tarball is
1820         uniquely identified by the source tarball,
1821         the content of the config_host.mk file and the content
1822         of the top-level directory in core for that library
1823         If this option is enabled, then if such a tarfile exist, it will be untarred
1824         instead of the source tarfile, and the build step will be skipped for that
1825         library.
1826         If a proper tarfile does not exist, then the normal source-based
1827         build is done for that library and a proper binary tarfile is created
1828         for the next time.]),
1831 AC_ARG_ENABLE(dconf,
1832     AS_HELP_STRING([--disable-dconf],
1833         [Disable the dconf configuration backend (enabled by default where
1834          available).]))
1836 libo_FUZZ_ARG_ENABLE(formula-logger,
1837     AS_HELP_STRING(
1838         [--enable-formula-logger],
1839         [Enable formula logger for logging formula calculation flow in Calc.]
1840     )
1843 AC_ARG_ENABLE(ldap,
1844     AS_HELP_STRING([--disable-ldap],
1845         [Disable LDAP support.]),
1846 ,enable_ldap=yes)
1848 AC_ARG_ENABLE(opencl,
1849     AS_HELP_STRING([--disable-opencl],
1850         [Disable OpenCL support.]),
1851 ,enable_opencl=yes)
1853 dnl ===================================================================
1854 dnl Optional Packages (--with/without-)
1855 dnl ===================================================================
1857 AC_ARG_WITH(gcc-home,
1858     AS_HELP_STRING([--with-gcc-home],
1859         [Specify the location of gcc/g++ manually. This can be used in conjunction
1860          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1861          non-default path.]),
1864 AC_ARG_WITH(gnu-patch,
1865     AS_HELP_STRING([--with-gnu-patch],
1866         [Specify location of GNU patch on Solaris or FreeBSD.]),
1869 AC_ARG_WITH(build-platform-configure-options,
1870     AS_HELP_STRING([--with-build-platform-configure-options],
1871         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1874 AC_ARG_WITH(gnu-cp,
1875     AS_HELP_STRING([--with-gnu-cp],
1876         [Specify location of GNU cp on Solaris or FreeBSD.]),
1879 AC_ARG_WITH(external-tar,
1880     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1881         [Specify an absolute path of where to find (and store) tarfiles.]),
1882     TARFILE_LOCATION=$withval ,
1885 AC_ARG_WITH(referenced-git,
1886     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1887         [Specify another checkout directory to reference. This makes use of
1888                  git submodule update --reference, and saves a lot of diskspace
1889                  when having multiple trees side-by-side.]),
1890     GIT_REFERENCE_SRC=$withval ,
1893 AC_ARG_WITH(linked-git,
1894     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1895         [Specify a directory where the repositories of submodules are located.
1896          This uses a method similar to git-new-workdir to get submodules.]),
1897     GIT_LINK_SRC=$withval ,
1900 AC_ARG_WITH(galleries,
1901     AS_HELP_STRING([--with-galleries],
1902         [Specify how galleries should be built. It is possible either to
1903          build these internally from source ("build"),
1904          or to disable them ("no")]),
1907 AC_ARG_WITH(theme,
1908     AS_HELP_STRING([--with-theme="theme1 theme2..."],
1909         [Choose which themes to include. By default those themes with an '*' are included.
1910          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1911          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1914 libo_FUZZ_ARG_WITH(helppack-integration,
1915     AS_HELP_STRING([--without-helppack-integration],
1916         [It will not integrate the helppacks to the installer
1917          of the product. Please use this switch to use the online help
1918          or separate help packages.]),
1921 libo_FUZZ_ARG_WITH(fonts,
1922     AS_HELP_STRING([--without-fonts],
1923         [LibreOffice includes some third-party fonts to provide a reliable basis for
1924          help content, templates, samples, etc. When these fonts are already
1925          known to be available on the system then you should use this option.]),
1928 AC_ARG_WITH(epm,
1929     AS_HELP_STRING([--with-epm],
1930         [Decides which epm to use. Default is to use the one from the system if
1931          one is built. When either this is not there or you say =internal epm
1932          will be built.]),
1935 AC_ARG_WITH(package-format,
1936     AS_HELP_STRING([--with-package-format],
1937         [Specify package format(s) for LibreOffice installation sets. The
1938          implicit --without-package-format leads to no installation sets being
1939          generated. Possible values: aix, archive, bsd, deb, dmg,
1940          installed, msi, pkg, and rpm.
1941          Example: --with-package-format='deb rpm']),
1944 AC_ARG_WITH(tls,
1945     AS_HELP_STRING([--with-tls],
1946         [Decides which TLS/SSL and cryptographic implementations to use for
1947          LibreOffice's code. Notice that this doesn't apply for depending
1948          libraries like "neon", for example. Default is to use NSS
1949          although OpenSSL is also possible. Notice that selecting NSS restricts
1950          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1951          restrict by now the usage of NSS in LO's code. Possible values:
1952          openssl, nss. Example: --with-tls="nss"]),
1955 AC_ARG_WITH(system-libs,
1956     AS_HELP_STRING([--with-system-libs],
1957         [Use libraries already on system -- enables all --with-system-* flags.]),
1960 AC_ARG_WITH(system-bzip2,
1961     AS_HELP_STRING([--with-system-bzip2],
1962         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1963     [with_system_bzip2="$with_system_libs"])
1965 AC_ARG_WITH(system-headers,
1966     AS_HELP_STRING([--with-system-headers],
1967         [Use headers already on system -- enables all --with-system-* flags for
1968          external packages whose headers are the only entities used i.e.
1969          boost/odbc/sane-header(s).]),,
1970     [with_system_headers="$with_system_libs"])
1972 AC_ARG_WITH(system-jars,
1973     AS_HELP_STRING([--without-system-jars],
1974         [When building with --with-system-libs, also the needed jars are expected
1975          on the system. Use this to disable that]),,
1976     [with_system_jars="$with_system_libs"])
1978 AC_ARG_WITH(system-cairo,
1979     AS_HELP_STRING([--with-system-cairo],
1980         [Use cairo libraries already on system.  Happens automatically for
1981          (implicit) --enable-gtk3.]))
1983 AC_ARG_WITH(system-epoxy,
1984     AS_HELP_STRING([--with-system-epoxy],
1985         [Use epoxy libraries already on system.  Happens automatically for
1986          (implicit) --enable-gtk3.]),,
1987        [with_system_epoxy="$with_system_libs"])
1989 AC_ARG_WITH(myspell-dicts,
1990     AS_HELP_STRING([--with-myspell-dicts],
1991         [Adds myspell dictionaries to the LibreOffice installation set]),
1994 AC_ARG_WITH(system-dicts,
1995     AS_HELP_STRING([--without-system-dicts],
1996         [Do not use dictionaries from system paths.]),
1999 AC_ARG_WITH(external-dict-dir,
2000     AS_HELP_STRING([--with-external-dict-dir],
2001         [Specify external dictionary dir.]),
2004 AC_ARG_WITH(external-hyph-dir,
2005     AS_HELP_STRING([--with-external-hyph-dir],
2006         [Specify external hyphenation pattern dir.]),
2009 AC_ARG_WITH(external-thes-dir,
2010     AS_HELP_STRING([--with-external-thes-dir],
2011         [Specify external thesaurus dir.]),
2014 AC_ARG_WITH(system-zlib,
2015     AS_HELP_STRING([--with-system-zlib],
2016         [Use zlib already on system.]),,
2017     [with_system_zlib=auto])
2019 AC_ARG_WITH(system-jpeg,
2020     AS_HELP_STRING([--with-system-jpeg],
2021         [Use jpeg already on system.]),,
2022     [with_system_jpeg="$with_system_libs"])
2024 AC_ARG_WITH(system-clucene,
2025     AS_HELP_STRING([--with-system-clucene],
2026         [Use clucene already on system.]),,
2027     [with_system_clucene="$with_system_libs"])
2029 AC_ARG_WITH(system-expat,
2030     AS_HELP_STRING([--with-system-expat],
2031         [Use expat already on system.]),,
2032     [with_system_expat="$with_system_libs"])
2034 AC_ARG_WITH(system-libxml,
2035     AS_HELP_STRING([--with-system-libxml],
2036         [Use libxml/libxslt already on system.]),,
2037     [with_system_libxml=auto])
2039 AC_ARG_WITH(system-icu,
2040     AS_HELP_STRING([--with-system-icu],
2041         [Use icu already on system.]),,
2042     [with_system_icu="$with_system_libs"])
2044 AC_ARG_WITH(system-ucpp,
2045     AS_HELP_STRING([--with-system-ucpp],
2046         [Use ucpp already on system.]),,
2047     [])
2049 AC_ARG_WITH(system-openldap,
2050     AS_HELP_STRING([--with-system-openldap],
2051         [Use the OpenLDAP LDAP SDK already on system.]),,
2052     [with_system_openldap="$with_system_libs"])
2054 libo_FUZZ_ARG_ENABLE(poppler,
2055     AS_HELP_STRING([--disable-poppler],
2056         [Disable building Poppler.])
2059 AC_ARG_WITH(system-poppler,
2060     AS_HELP_STRING([--with-system-poppler],
2061         [Use system poppler (only needed for PDF import).]),,
2062     [with_system_poppler="$with_system_libs"])
2064 libo_FUZZ_ARG_ENABLE(gpgmepp,
2065     AS_HELP_STRING([--disable-gpgmepp],
2066         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2069 AC_ARG_WITH(system-gpgmepp,
2070     AS_HELP_STRING([--with-system-gpgmepp],
2071         [Use gpgmepp already on system]),,
2072     [with_system_gpgmepp="$with_system_libs"])
2074 AC_ARG_WITH(system-apache-commons,
2075     AS_HELP_STRING([--with-system-apache-commons],
2076         [Use Apache commons libraries already on system.]),,
2077     [with_system_apache_commons="$with_system_jars"])
2079 AC_ARG_WITH(system-mariadb,
2080     AS_HELP_STRING([--with-system-mariadb],
2081         [Use MariaDB/MySQL libraries already on system.]),,
2082     [with_system_mariadb="$with_system_libs"])
2084 AC_ARG_ENABLE(bundle-mariadb,
2085     AS_HELP_STRING([--enable-bundle-mariadb],
2086         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2089 AC_ARG_WITH(system-postgresql,
2090     AS_HELP_STRING([--with-system-postgresql],
2091         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2092          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2093     [with_system_postgresql="$with_system_libs"])
2095 AC_ARG_WITH(libpq-path,
2096     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2097         [Use this PostgreSQL C interface (libpq) installation for building
2098          the PostgreSQL-SDBC extension.]),
2101 AC_ARG_WITH(system-firebird,
2102     AS_HELP_STRING([--with-system-firebird],
2103         [Use Firebird libraries already on system, for building the Firebird-SDBC
2104          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2105     [with_system_firebird="$with_system_libs"])
2107 AC_ARG_WITH(system-libtommath,
2108             AS_HELP_STRING([--with-system-libtommath],
2109                            [Use libtommath already on system]),,
2110             [with_system_libtommath="$with_system_libs"])
2112 AC_ARG_WITH(system-hsqldb,
2113     AS_HELP_STRING([--with-system-hsqldb],
2114         [Use hsqldb already on system.]))
2116 AC_ARG_WITH(hsqldb-jar,
2117     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2118         [Specify path to jarfile manually.]),
2119     HSQLDB_JAR=$withval)
2121 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2122     AS_HELP_STRING([--disable-scripting-beanshell],
2123         [Disable support for scripts in BeanShell.]),
2127 AC_ARG_WITH(system-beanshell,
2128     AS_HELP_STRING([--with-system-beanshell],
2129         [Use beanshell already on system.]),,
2130     [with_system_beanshell="$with_system_jars"])
2132 AC_ARG_WITH(beanshell-jar,
2133     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2134         [Specify path to jarfile manually.]),
2135     BSH_JAR=$withval)
2137 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2138     AS_HELP_STRING([--disable-scripting-javascript],
2139         [Disable support for scripts in JavaScript.]),
2143 AC_ARG_WITH(system-rhino,
2144     AS_HELP_STRING([--with-system-rhino],
2145         [Use rhino already on system.]),,)
2146 #    [with_system_rhino="$with_system_jars"])
2147 # Above is not used as we have different debug interface
2148 # patched into internal rhino. This code needs to be fixed
2149 # before we can enable it by default.
2151 AC_ARG_WITH(rhino-jar,
2152     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2153         [Specify path to jarfile manually.]),
2154     RHINO_JAR=$withval)
2156 AC_ARG_WITH(commons-logging-jar,
2157     AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2158         [Specify path to jarfile manually.]),
2159     COMMONS_LOGGING_JAR=$withval)
2161 AC_ARG_WITH(system-jfreereport,
2162     AS_HELP_STRING([--with-system-jfreereport],
2163         [Use JFreeReport already on system.]),,
2164     [with_system_jfreereport="$with_system_jars"])
2166 AC_ARG_WITH(sac-jar,
2167     AS_HELP_STRING([--with-sac-jar=JARFILE],
2168         [Specify path to jarfile manually.]),
2169     SAC_JAR=$withval)
2171 AC_ARG_WITH(libxml-jar,
2172     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2173         [Specify path to jarfile manually.]),
2174     LIBXML_JAR=$withval)
2176 AC_ARG_WITH(flute-jar,
2177     AS_HELP_STRING([--with-flute-jar=JARFILE],
2178         [Specify path to jarfile manually.]),
2179     FLUTE_JAR=$withval)
2181 AC_ARG_WITH(jfreereport-jar,
2182     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2183         [Specify path to jarfile manually.]),
2184     JFREEREPORT_JAR=$withval)
2186 AC_ARG_WITH(liblayout-jar,
2187     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2188         [Specify path to jarfile manually.]),
2189     LIBLAYOUT_JAR=$withval)
2191 AC_ARG_WITH(libloader-jar,
2192     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2193         [Specify path to jarfile manually.]),
2194     LIBLOADER_JAR=$withval)
2196 AC_ARG_WITH(libformula-jar,
2197     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2198         [Specify path to jarfile manually.]),
2199     LIBFORMULA_JAR=$withval)
2201 AC_ARG_WITH(librepository-jar,
2202     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2203         [Specify path to jarfile manually.]),
2204     LIBREPOSITORY_JAR=$withval)
2206 AC_ARG_WITH(libfonts-jar,
2207     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2208         [Specify path to jarfile manually.]),
2209     LIBFONTS_JAR=$withval)
2211 AC_ARG_WITH(libserializer-jar,
2212     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2213         [Specify path to jarfile manually.]),
2214     LIBSERIALIZER_JAR=$withval)
2216 AC_ARG_WITH(libbase-jar,
2217     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2218         [Specify path to jarfile manually.]),
2219     LIBBASE_JAR=$withval)
2221 AC_ARG_WITH(system-odbc,
2222     AS_HELP_STRING([--with-system-odbc],
2223         [Use the odbc headers already on system.]),,
2224     [with_system_odbc="auto"])
2226 AC_ARG_WITH(system-sane,
2227     AS_HELP_STRING([--with-system-sane],
2228         [Use sane.h already on system.]),,
2229     [with_system_sane="$with_system_headers"])
2231 AC_ARG_WITH(system-bluez,
2232     AS_HELP_STRING([--with-system-bluez],
2233         [Use bluetooth.h already on system.]),,
2234     [with_system_bluez="$with_system_headers"])
2236 AC_ARG_WITH(system-curl,
2237     AS_HELP_STRING([--with-system-curl],
2238         [Use curl already on system.]),,
2239     [with_system_curl=auto])
2241 AC_ARG_WITH(system-boost,
2242     AS_HELP_STRING([--with-system-boost],
2243         [Use boost already on system.]),,
2244     [with_system_boost="$with_system_headers"])
2246 AC_ARG_WITH(system-glm,
2247     AS_HELP_STRING([--with-system-glm],
2248         [Use glm already on system.]),,
2249     [with_system_glm="$with_system_headers"])
2251 AC_ARG_WITH(system-hunspell,
2252     AS_HELP_STRING([--with-system-hunspell],
2253         [Use libhunspell already on system.]),,
2254     [with_system_hunspell="$with_system_libs"])
2256 libo_FUZZ_ARG_ENABLE(qrcodegen,
2257     AS_HELP_STRING([--disable-qrcodegen],
2258         [Disable use of qrcodegen external library.]))
2260 AC_ARG_WITH(system-qrcodegen,
2261     AS_HELP_STRING([--with-system-qrcodegen],
2262         [Use libqrcodegen already on system.]),,
2263     [with_system_qrcodegen="$with_system_libs"])
2265 AC_ARG_WITH(system-box2d,
2266     AS_HELP_STRING([--with-system-box2d],
2267         [Use box2d already on system.]),,
2268     [with_system_box2d="$with_system_libs"])
2270 AC_ARG_WITH(system-mythes,
2271     AS_HELP_STRING([--with-system-mythes],
2272         [Use mythes already on system.]),,
2273     [with_system_mythes="$with_system_libs"])
2275 AC_ARG_WITH(system-altlinuxhyph,
2276     AS_HELP_STRING([--with-system-altlinuxhyph],
2277         [Use ALTLinuxhyph already on system.]),,
2278     [with_system_altlinuxhyph="$with_system_libs"])
2280 AC_ARG_WITH(system-lpsolve,
2281     AS_HELP_STRING([--with-system-lpsolve],
2282         [Use lpsolve already on system.]),,
2283     [with_system_lpsolve="$with_system_libs"])
2285 AC_ARG_WITH(system-coinmp,
2286     AS_HELP_STRING([--with-system-coinmp],
2287         [Use CoinMP already on system.]),,
2288     [with_system_coinmp="$with_system_libs"])
2290 AC_ARG_WITH(system-liblangtag,
2291     AS_HELP_STRING([--with-system-liblangtag],
2292         [Use liblangtag library already on system.]),,
2293     [with_system_liblangtag="$with_system_libs"])
2295 AC_ARG_WITH(webdav,
2296     AS_HELP_STRING([--with-webdav],
2297         [Specify which library to use for webdav implementation.
2298          Possible values: "neon", "serf", "no". The default value is "neon".
2299          Example: --with-webdav="serf"]),
2300     WITH_WEBDAV=$withval,
2301     WITH_WEBDAV="neon")
2303 AC_ARG_WITH(linker-hash-style,
2304     AS_HELP_STRING([--with-linker-hash-style],
2305         [Use linker with --hash-style=<style> when linking shared objects.
2306          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2307          if supported on the build system, and "sysv" otherwise.]))
2309 AC_ARG_WITH(jdk-home,
2310     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2311         [If you have installed JDK 9 or later on your system please supply the
2312          path here. Note that this is not the location of the java command but the
2313          location of the entire distribution. In case of cross-compiling, this
2314          is the JDK of the host os. Use --with-build-platform-configure-options
2315          to point to a different build platform JDK.]),
2318 AC_ARG_WITH(help,
2319     AS_HELP_STRING([--with-help],
2320         [Enable the build of help. There is a special parameter "common" that
2321          can be used to bundle only the common part, .e.g help-specific icons.
2322          This is useful when you build the helpcontent separately.])
2323     [
2324                           Usage:     --with-help    build the old local help
2325                                  --without-help     no local help (default)
2326                                  --with-help=html   build the new HTML local help
2327                                  --with-help=online build the new HTML online help
2328     ],
2331 AC_ARG_WITH(omindex,
2332    AS_HELP_STRING([--with-omindex],
2333         [Enable the support of xapian-omega index for online help.])
2334    [
2335                          Usage: --with-omindex=server prepare the pages for omindex
2336                                 but let xapian-omega be built in server.
2337                                 --with-omindex=noxap do not prepare online pages
2338                                 for xapian-omega
2339   ],
2342 libo_FUZZ_ARG_WITH(java,
2343     AS_HELP_STRING([--with-java=<java command>],
2344         [Specify the name of the Java interpreter command. Typically "java"
2345          which is the default.
2347          To build without support for Java components, applets, accessibility
2348          or the XML filters written in Java, use --without-java or --with-java=no.]),
2349     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2350     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2353 AC_ARG_WITH(jvm-path,
2354     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2355         [Use a specific JVM search path at runtime.
2356          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2359 AC_ARG_WITH(ant-home,
2360     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2361         [If you have installed Apache Ant on your system, please supply the path here.
2362          Note that this is not the location of the Ant binary but the location
2363          of the entire distribution.]),
2366 AC_ARG_WITH(symbol-config,
2367     AS_HELP_STRING([--with-symbol-config],
2368         [Configuration for the crashreport symbol upload]),
2369         [],
2370         [with_symbol_config=no])
2372 AC_ARG_WITH(export-validation,
2373     AS_HELP_STRING([--without-export-validation],
2374         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2375 ,with_export_validation=auto)
2377 AC_ARG_WITH(bffvalidator,
2378     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2379         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2380          Requires installed Microsoft Office Binary File Format Validator.
2381          Note: export-validation (--with-export-validation) is required to be turned on.
2382          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2383 ,with_bffvalidator=no)
2385 libo_FUZZ_ARG_WITH(junit,
2386     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2387         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2388          --without-junit disables those tests. Not relevant in the --without-java case.]),
2389 ,with_junit=yes)
2391 AC_ARG_WITH(hamcrest,
2392     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2393         [Specifies the hamcrest jar file to use for JUnit-based tests.
2394          --without-junit disables those tests. Not relevant in the --without-java case.]),
2395 ,with_hamcrest=yes)
2397 AC_ARG_WITH(perl-home,
2398     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2399         [If you have installed Perl 5 Distribution, on your system, please
2400          supply the path here. Note that this is not the location of the Perl
2401          binary but the location of the entire distribution.]),
2404 libo_FUZZ_ARG_WITH(doxygen,
2405     AS_HELP_STRING(
2406         [--with-doxygen=<absolute path to doxygen executable>],
2407         [Specifies the doxygen executable to use when generating ODK C/C++
2408          documentation. --without-doxygen disables generation of ODK C/C++
2409          documentation. Not relevant in the --disable-odk case.]),
2410 ,with_doxygen=yes)
2412 AC_ARG_WITH(visual-studio,
2413     AS_HELP_STRING([--with-visual-studio=<2019>],
2414         [Specify which Visual Studio version to use in case several are
2415          installed. Currently only 2019 (default) is supported.]),
2418 AC_ARG_WITH(windows-sdk,
2419     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2420         [Specify which Windows SDK, or "Windows Kit", version to use
2421          in case the one that came with the selected Visual Studio
2422          is not what you want for some reason. Note that not all compiler/SDK
2423          combinations are supported. The intent is that this option should not
2424          be needed.]),
2427 AC_ARG_WITH(lang,
2428     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2429         [Use this option to build LibreOffice with additional UI language support.
2430          English (US) is always included by default.
2431          Separate multiple languages with space.
2432          For all languages, use --with-lang=ALL.]),
2435 AC_ARG_WITH(locales,
2436     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2437         [Use this option to limit the locale information built in.
2438          Separate multiple locales with space.
2439          Very experimental and might well break stuff.
2440          Just a desperate measure to shrink code and data size.
2441          By default all the locales available is included.
2442          This option is completely unrelated to --with-lang.])
2443     [
2444                           Affects also our character encoding conversion
2445                           tables for encodings mainly targeted for a
2446                           particular locale, like EUC-CN and EUC-TW for
2447                           zh, ISO-2022-JP for ja.
2449                           Affects also our add-on break iterator data for
2450                           some languages.
2452                           For the default, all locales, don't use this switch at all.
2453                           Specifying just the language part of a locale means all matching
2454                           locales will be included.
2455     ],
2458 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2459 libo_FUZZ_ARG_WITH(krb5,
2460     AS_HELP_STRING([--with-krb5],
2461         [Enable MIT Kerberos 5 support in modules that support it.
2462          By default automatically enabled on platforms
2463          where a good system Kerberos 5 is available.]),
2466 libo_FUZZ_ARG_WITH(gssapi,
2467     AS_HELP_STRING([--with-gssapi],
2468         [Enable GSSAPI support in modules that support it.
2469          By default automatically enabled on platforms
2470          where a good system GSSAPI is available.]),
2473 AC_ARG_WITH(iwyu,
2474     AS_HELP_STRING([--with-iwyu],
2475         [Use given IWYU binary path to check unneeded includes instead of building.
2476          Use only if you are hacking on it.]),
2479 libo_FUZZ_ARG_WITH(lxml,
2480     AS_HELP_STRING([--without-lxml],
2481         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2482          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2483          report widget classes and ids.]),
2486 libo_FUZZ_ARG_WITH(latest-c++,
2487     AS_HELP_STRING([--with-latest-c++],
2488         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2489          published standard.]),,
2490         [with_latest_c__=no])
2492 dnl ===================================================================
2493 dnl Branding
2494 dnl ===================================================================
2496 AC_ARG_WITH(branding,
2497     AS_HELP_STRING([--with-branding=/path/to/images],
2498         [Use given path to retrieve branding images set.])
2499     [
2500                           Search for intro.png about.svg and logo.svg.
2501                           If any is missing, default ones will be used instead.
2503                           Search also progress.conf for progress
2504                           settings on intro screen :
2506                           PROGRESSBARCOLOR="255,255,255" Set color of
2507                           progress bar. Comma separated RGB decimal values.
2508                           PROGRESSSIZE="407,6" Set size of progress bar.
2509                           Comma separated decimal values (width, height).
2510                           PROGRESSPOSITION="61,317" Set position of progress
2511                           bar from left,top. Comma separated decimal values.
2512                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2513                           bar frame. Comma separated RGB decimal values.
2514                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2515                           bar text. Comma separated RGB decimal values.
2516                           PROGRESSTEXTBASELINE="287" Set vertical position of
2517                           progress bar text from top. Decimal value.
2519                           Default values will be used if not found.
2520     ],
2524 AC_ARG_WITH(extra-buildid,
2525     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2526         [Show addition build identification in about dialog.]),
2530 AC_ARG_WITH(vendor,
2531     AS_HELP_STRING([--with-vendor="John the Builder"],
2532         [Set vendor of the build.]),
2535 AC_ARG_WITH(android-package-name,
2536     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2537         [Set Android package name of the build.]),
2540 AC_ARG_WITH(compat-oowrappers,
2541     AS_HELP_STRING([--with-compat-oowrappers],
2542         [Install oo* wrappers in parallel with
2543          lo* ones to keep backward compatibility.
2544          Has effect only with make distro-pack-install]),
2547 AC_ARG_WITH(os-version,
2548     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2549         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2552 AC_ARG_WITH(mingw-cross-compiler,
2553     AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2554         [Specify the MinGW cross-compiler to use.
2555          When building on the ODK on Unix and building unowinreg.dll,
2556          specify the MinGW C++ cross-compiler.]),
2559 AC_ARG_WITH(idlc-cpp,
2560     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2561         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2564 AC_ARG_WITH(parallelism,
2565     AS_HELP_STRING([--with-parallelism],
2566         [Number of jobs to run simultaneously during build. Parallel builds can
2567         save a lot of time on multi-cpu machines. Defaults to the number of
2568         CPUs on the machine, unless you configure --enable-icecream - then to
2569         40.]),
2572 AC_ARG_WITH(all-tarballs,
2573     AS_HELP_STRING([--with-all-tarballs],
2574         [Download all external tarballs unconditionally]))
2576 AC_ARG_WITH(gdrive-client-id,
2577     AS_HELP_STRING([--with-gdrive-client-id],
2578         [Provides the client id of the application for OAuth2 authentication
2579         on Google Drive. If either this or --with-gdrive-client-secret is
2580         empty, the feature will be disabled]),
2583 AC_ARG_WITH(gdrive-client-secret,
2584     AS_HELP_STRING([--with-gdrive-client-secret],
2585         [Provides the client secret of the application for OAuth2
2586         authentication on Google Drive. If either this or
2587         --with-gdrive-client-id is empty, the feature will be disabled]),
2590 AC_ARG_WITH(alfresco-cloud-client-id,
2591     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2592         [Provides the client id of the application for OAuth2 authentication
2593         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2594         empty, the feature will be disabled]),
2597 AC_ARG_WITH(alfresco-cloud-client-secret,
2598     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2599         [Provides the client secret of the application for OAuth2
2600         authentication on Alfresco Cloud. If either this or
2601         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2604 AC_ARG_WITH(onedrive-client-id,
2605     AS_HELP_STRING([--with-onedrive-client-id],
2606         [Provides the client id of the application for OAuth2 authentication
2607         on OneDrive. If either this or --with-onedrive-client-secret is
2608         empty, the feature will be disabled]),
2611 AC_ARG_WITH(onedrive-client-secret,
2612     AS_HELP_STRING([--with-onedrive-client-secret],
2613         [Provides the client secret of the application for OAuth2
2614         authentication on OneDrive. If either this or
2615         --with-onedrive-client-id is empty, the feature will be disabled]),
2617 dnl ===================================================================
2618 dnl Do we want to use pre-build binary tarball for recompile
2619 dnl ===================================================================
2621 if test "$enable_library_bin_tar" = "yes" ; then
2622     USE_LIBRARY_BIN_TAR=TRUE
2623 else
2624     USE_LIBRARY_BIN_TAR=
2626 AC_SUBST(USE_LIBRARY_BIN_TAR)
2628 dnl ===================================================================
2629 dnl Test whether build target is Release Build
2630 dnl ===================================================================
2631 AC_MSG_CHECKING([whether build target is Release Build])
2632 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2633     AC_MSG_RESULT([no])
2634     ENABLE_RELEASE_BUILD=
2635     GET_TASK_ALLOW_ENTITLEMENT='
2636         <!-- We want to be able to debug a hardened process when not building for release -->
2637         <key>com.apple.security.get-task-allow</key>
2638         <true/>'
2639 else
2640     AC_MSG_RESULT([yes])
2641     ENABLE_RELEASE_BUILD=TRUE
2642     GET_TASK_ALLOW_ENTITLEMENT=''
2644 AC_SUBST(ENABLE_RELEASE_BUILD)
2645 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2647 dnl ===================================================================
2648 dnl Test whether to sign Windows Build
2649 dnl ===================================================================
2650 AC_MSG_CHECKING([whether to sign windows build])
2651 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2652     AC_MSG_RESULT([yes])
2653     WINDOWS_BUILD_SIGNING="TRUE"
2654 else
2655     AC_MSG_RESULT([no])
2656     WINDOWS_BUILD_SIGNING="FALSE"
2658 AC_SUBST(WINDOWS_BUILD_SIGNING)
2660 dnl ===================================================================
2661 dnl MacOSX build and runtime environment options
2662 dnl ===================================================================
2664 AC_ARG_WITH(macosx-sdk,
2665     AS_HELP_STRING([--with-macosx-sdk=<version>],
2666         [Prefer a specific SDK for building.])
2667     [
2668                           If the requested SDK is not available, a search for the oldest one will be done.
2669                           With current Xcode versions, only the latest SDK is included, so this option is
2670                           not terribly useful. It works fine to build with a new SDK and run the result
2671                           on an older OS.
2673                           e. g.: --with-macosx-sdk=10.10
2675                           there are 3 options to control the MacOSX build:
2676                           --with-macosx-sdk (referred as 'sdk' below)
2677                           --with-macosx-version-min-required (referred as 'min' below)
2678                           --with-macosx-version-max-allowed (referred as 'max' below)
2680                           the connection between these value and the default they take is as follow:
2681                           ( ? means not specified on the command line, s means the SDK version found,
2682                           constraint: 8 <= x <= y <= z)
2684                           ==========================================
2685                            command line      || config result
2686                           ==========================================
2687                           min  | max  | sdk  || min   | max  | sdk  |
2688                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2689                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2690                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2691                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2692                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2693                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2694                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2695                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2698                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2699                           for a detailed technical explanation of these variables
2701                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2702     ],
2705 AC_ARG_WITH(macosx-version-min-required,
2706     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2707         [set the minimum OS version needed to run the built LibreOffice])
2708     [
2709                           e. g.: --with-macosx-version-min-required=10.10
2710                           see --with-macosx-sdk for more info
2711     ],
2714 AC_ARG_WITH(macosx-version-max-allowed,
2715     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2716         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2717     [
2718                           e. g.: --with-macosx-version-max-allowed=10.10
2719                           see --with-macosx-sdk for more info
2720     ],
2724 dnl ===================================================================
2725 dnl options for stuff used during cross-compilation build
2726 dnl Not quite superseded by --with-build-platform-configure-options.
2727 dnl TODO: check, if the "force" option is still needed anywhere.
2728 dnl ===================================================================
2730 AC_ARG_WITH(system-icu-for-build,
2731     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2732         [Use icu already on system for build tools (cross-compilation only).]))
2735 dnl ===================================================================
2736 dnl Check for incompatible options set by fuzzing, and reset those
2737 dnl automatically to working combinations
2738 dnl ===================================================================
2740 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2741         "$enable_dbus" != "$enable_avahi"; then
2742     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2743     enable_avahi=$enable_dbus
2746 add_lopath_after ()
2748     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2749         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2750     fi
2753 add_lopath_before ()
2755     local IFS=${P_SEP}
2756     local path_cleanup
2757     local dir
2758     for dir in $LO_PATH ; do
2759         if test "$dir" != "$1" ; then
2760             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2761         fi
2762     done
2763     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2766 dnl ===================================================================
2767 dnl check for required programs (grep, awk, sed, bash)
2768 dnl ===================================================================
2770 pathmunge ()
2772     local new_path
2773     if test -n "$1"; then
2774         if test "$build_os" = "cygwin"; then
2775             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2776                 PathFormat "$1"
2777                 new_path=`cygpath -sm "$formatted_path"`
2778             else
2779                 PathFormat "$1"
2780                 new_path=`cygpath -u "$formatted_path"`
2781             fi
2782         else
2783             new_path="$1"
2784         fi
2785         if test "$2" = "after"; then
2786             add_lopath_after "$new_path"
2787         else
2788             add_lopath_before "$new_path"
2789         fi
2790     fi
2793 AC_PROG_AWK
2794 AC_PATH_PROG( AWK, $AWK)
2795 if test -z "$AWK"; then
2796     AC_MSG_ERROR([install awk to run this script])
2799 AC_PATH_PROG(BASH, bash)
2800 if test -z "$BASH"; then
2801     AC_MSG_ERROR([bash not found in \$PATH])
2803 AC_SUBST(BASH)
2805 AC_MSG_CHECKING([for GNU or BSD tar])
2806 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2807     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2808     if test $? -eq 0;  then
2809         GNUTAR=$a
2810         break
2811     fi
2812 done
2813 AC_MSG_RESULT($GNUTAR)
2814 if test -z "$GNUTAR"; then
2815     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2817 AC_SUBST(GNUTAR)
2819 AC_MSG_CHECKING([for tar's option to strip components])
2820 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2821 if test $? -eq 0; then
2822     STRIP_COMPONENTS="--strip-components"
2823 else
2824     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2825     if test $? -eq 0; then
2826         STRIP_COMPONENTS="--strip-path"
2827     else
2828         STRIP_COMPONENTS="unsupported"
2829     fi
2831 AC_MSG_RESULT($STRIP_COMPONENTS)
2832 if test x$STRIP_COMPONENTS = xunsupported; then
2833     AC_MSG_ERROR([you need a tar that is able to strip components.])
2835 AC_SUBST(STRIP_COMPONENTS)
2837 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2838 dnl desktop OSes from "mobile" ones.
2840 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2841 dnl In other words, that when building for an OS that is not a
2842 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2844 dnl Note the direction of the implication; there is no assumption that
2845 dnl cross-compiling would imply a non-desktop OS.
2847 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2848     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2849     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2850     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2853 # Whether to build "avmedia" functionality or not.
2855 if test -z "$enable_avmedia"; then
2856     enable_avmedia=yes
2859 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2860 if test "$enable_avmedia" = yes; then
2861     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2862 else
2863     USE_AVMEDIA_DUMMY='TRUE'
2865 AC_SUBST(USE_AVMEDIA_DUMMY)
2867 # Decide whether to build database connectivity stuff (including
2868 # Base) or not. We probably don't want to on non-desktop OSes.
2869 if test -z "$enable_database_connectivity"; then
2870     # --disable-database-connectivity is unfinished work in progress
2871     # and the iOS test app doesn't link if we actually try to use it.
2872     # if test $_os != iOS -a $_os != Android; then
2873     if test $_os != iOS; then
2874         enable_database_connectivity=yes
2875     fi
2878 if test "$enable_database_connectivity" = yes; then
2879     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2880     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2883 if test -z "$enable_extensions"; then
2884     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2885     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2886         enable_extensions=yes
2887     fi
2890 if test "$enable_extensions" = yes; then
2891     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2892     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2895 if test -z "$enable_scripting"; then
2896     # Disable scripting for iOS unless specifically overridden
2897     # with --enable-scripting.
2898     if test $_os != iOS; then
2899         enable_scripting=yes
2900     fi
2903 DISABLE_SCRIPTING=''
2904 if test "$enable_scripting" = yes; then
2905     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2906     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2907 else
2908     DISABLE_SCRIPTING='TRUE'
2909     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2912 if test $_os = iOS -o $_os = Android; then
2913     # Disable dynamic_loading always for iOS and Android
2914     enable_dynamic_loading=no
2915 elif test -z "$enable_dynamic_loading"; then
2916     # Otherwise enable it unless specifically disabled
2917     enable_dynamic_loading=yes
2920 DISABLE_DYNLOADING=''
2921 if test "$enable_dynamic_loading" = yes; then
2922     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2923 else
2924     DISABLE_DYNLOADING='TRUE'
2926 AC_SUBST(DISABLE_DYNLOADING)
2928 # remember SYSBASE value
2929 AC_SUBST(SYSBASE)
2931 dnl ===================================================================
2932 dnl  Sort out various gallery compilation options
2933 dnl ===================================================================
2934 AC_MSG_CHECKING([how to build and package galleries])
2935 if test -n "${with_galleries}"; then
2936     if test "$with_galleries" = "build"; then
2937         WITH_GALLERY_BUILD=TRUE
2938         AC_MSG_RESULT([build from source images internally])
2939     elif test "$with_galleries" = "no"; then
2940         WITH_GALLERY_BUILD=
2941         AC_MSG_RESULT([disable non-internal gallery build])
2942     else
2943         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2944     fi
2945 else
2946     if test $_os != iOS -a $_os != Android; then
2947         WITH_GALLERY_BUILD=TRUE
2948         AC_MSG_RESULT([internal src images for desktop])
2949     else
2950         WITH_GALLERY_BUILD=
2951         AC_MSG_RESULT([disable src image build])
2952     fi
2954 AC_SUBST(WITH_GALLERY_BUILD)
2956 dnl ===================================================================
2957 dnl  Checks if ccache is available
2958 dnl ===================================================================
2959 CCACHE_DEPEND_MODE=
2960 if test "$_os" = "WINNT"; then
2961     # on windows/VC build do not use ccache
2962     CCACHE=""
2963 elif test "$enable_ccache" = "no"; then
2964     CCACHE=""
2965 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2966     case "%$CC%$CXX%" in
2967     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2968     # assume that's good then
2969     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2970         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2971         CCACHE_DEPEND_MODE=1
2972         ;;
2973     *)
2974         AC_PATH_PROG([CCACHE],[ccache],[not found])
2975         if test "$CCACHE" = "not found"; then
2976             CCACHE=""
2977         else
2978             CCACHE_DEPEND_MODE=1
2979             # Need to check for ccache version: otherwise prevents
2980             # caching of the results (like "-x objective-c++" for Mac)
2981             if test $_os = Darwin -o $_os = iOS; then
2982                 # Check ccache version
2983                 AC_MSG_CHECKING([whether version of ccache is suitable])
2984                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2985                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2986                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2987                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
2988                 else
2989                     AC_MSG_RESULT([no, $CCACHE_VERSION])
2990                     CCACHE=""
2991                     CCACHE_DEPEND_MODE=
2992                 fi
2993             fi
2994         fi
2995         ;;
2996     esac
2997 else
2998     CCACHE=""
3000 if test "$enable_ccache" = "nodepend"; then
3001     CCACHE_DEPEND_MODE=""
3003 AC_SUBST(CCACHE_DEPEND_MODE)
3005 if test "$CCACHE" != ""; then
3006     ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
3007     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3008     if test "$ccache_size" = ""; then
3009         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3010         if test "$ccache_size" = ""; then
3011             ccache_size=0
3012         fi
3013         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3014         if test $ccache_size -lt 1024; then
3015             CCACHE=""
3016             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3017             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3018         else
3019             # warn that ccache may be too small for debug build
3020             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3021             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3022         fi
3023     else
3024         if test $ccache_size -lt 5; then
3025             #warn that ccache may be too small for debug build
3026             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3027             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3028         fi
3029     fi
3032 dnl ===================================================================
3033 dnl  Checks for C compiler,
3034 dnl  The check for the C++ compiler is later on.
3035 dnl ===================================================================
3036 if test "$_os" != "WINNT"; then
3037     GCC_HOME_SET="true"
3038     AC_MSG_CHECKING([gcc home])
3039     if test -z "$with_gcc_home"; then
3040         if test "$enable_icecream" = "yes"; then
3041             if test -d "/usr/lib/icecc/bin"; then
3042                 GCC_HOME="/usr/lib/icecc/"
3043             elif test -d "/usr/libexec/icecc/bin"; then
3044                 GCC_HOME="/usr/libexec/icecc/"
3045             elif test -d "/opt/icecream/bin"; then
3046                 GCC_HOME="/opt/icecream/"
3047             else
3048                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3050             fi
3051         else
3052             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3053             GCC_HOME_SET="false"
3054         fi
3055     else
3056         GCC_HOME="$with_gcc_home"
3057     fi
3058     AC_MSG_RESULT($GCC_HOME)
3059     AC_SUBST(GCC_HOME)
3061     if test "$GCC_HOME_SET" = "true"; then
3062         if test -z "$CC"; then
3063             CC="$GCC_HOME/bin/gcc"
3064             CC_BASE="gcc"
3065         fi
3066         if test -z "$CXX"; then
3067             CXX="$GCC_HOME/bin/g++"
3068             CXX_BASE="g++"
3069         fi
3070     fi
3073 COMPATH=`dirname "$CC"`
3074 if test "$COMPATH" = "."; then
3075     AC_PATH_PROGS(COMPATH, $CC)
3076     dnl double square bracket to get single because of M4 quote...
3077     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3079 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3081 dnl ===================================================================
3082 dnl Java support
3083 dnl ===================================================================
3084 AC_MSG_CHECKING([whether to build with Java support])
3085 if test "$with_java" != "no"; then
3086     if test "$DISABLE_SCRIPTING" = TRUE; then
3087         AC_MSG_RESULT([no, overridden by --disable-scripting])
3088         ENABLE_JAVA=""
3089         with_java=no
3090     else
3091         AC_MSG_RESULT([yes])
3092         ENABLE_JAVA="TRUE"
3093         AC_DEFINE(HAVE_FEATURE_JAVA)
3094     fi
3095 else
3096     AC_MSG_RESULT([no])
3097     ENABLE_JAVA=""
3100 AC_SUBST(ENABLE_JAVA)
3102 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3104 dnl ENABLE_JAVA="" indicate no Java support at all
3106 dnl ===================================================================
3107 dnl Check macOS SDK and compiler
3108 dnl ===================================================================
3110 if test $_os = Darwin; then
3112     # If no --with-macosx-sdk option is given, look for one
3114     # The intent is that for "most" Mac-based developers, a suitable
3115     # SDK will be found automatically without any configure options.
3117     # For developers with a current Xcode, the lowest-numbered SDK
3118     # higher than or equal to the minimum required should be found.
3120     AC_MSG_CHECKING([what macOS SDK to use])
3121     for _macosx_sdk in ${with_macosx_sdk-11.0 10.15 10.14 10.13}; do
3122         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3123         if test -d "$MACOSX_SDK_PATH"; then
3124             with_macosx_sdk="${_macosx_sdk}"
3125             break
3126         else
3127             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3128             if test -d "$MACOSX_SDK_PATH"; then
3129                 with_macosx_sdk="${_macosx_sdk}"
3130                 break
3131             fi
3132         fi
3133     done
3134     if test ! -d "$MACOSX_SDK_PATH"; then
3135         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3136     fi
3138     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3140     case $with_macosx_sdk in
3141     10.13)
3142         MACOSX_SDK_VERSION=101300
3143         ;;
3144     10.14)
3145         MACOSX_SDK_VERSION=101400
3146         ;;
3147     10.15)
3148         MACOSX_SDK_VERSION=101500
3149         ;;
3150     11.0)
3151         MACOSX_SDK_VERSION=110000
3152         ;;
3153     *)
3154         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.0])
3155         ;;
3156     esac
3158     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3159         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3160     fi
3162     if test "$with_macosx_version_min_required" = "" ; then
3163         if test "$host_cpu" = x86_64; then
3164             with_macosx_version_min_required="10.10";
3165         else
3166             with_macosx_version_min_required="11.0";
3167         fi
3168     fi
3170     if test "$with_macosx_version_max_allowed" = "" ; then
3171         with_macosx_version_max_allowed="$with_macosx_sdk"
3172     fi
3174     # export this so that "xcrun" invocations later return matching values
3175     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3176     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3177     export DEVELOPER_DIR
3178     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3179     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3181     AC_MSG_CHECKING([whether Xcode is new enough])
3182     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3183     my_xcode_ver2=${my_xcode_ver1#Xcode }
3184     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3185     if test "$my_xcode_ver3" -ge 1103; then
3186         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3187     else
3188         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3189     fi
3191     case "$with_macosx_version_min_required" in
3192     10.10)
3193         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3194         ;;
3195     10.11)
3196         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3197         ;;
3198     10.12)
3199         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3200         ;;
3201     10.13)
3202         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3203         ;;
3204     10.14)
3205         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3206         ;;
3207     10.15)
3208         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3209         ;;
3210     10.16)
3211         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3212         ;;
3213     11.0)
3214         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3215         ;;
3216     *)
3217         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.0])
3218         ;;
3219     esac
3221     LIBTOOL=/usr/bin/libtool
3222     INSTALL_NAME_TOOL=install_name_tool
3223     if test -z "$save_CC"; then
3224         stdlib=-stdlib=libc++
3226         AC_MSG_CHECKING([what C compiler to use])
3227         CC="`xcrun -find clang`"
3228         CC_BASE=`first_arg_basename "$CC"`
3229         if test "$host_cpu" = x86_64; then
3230             CC+=" -target x86_64-apple-macos"
3231         else
3232             CC+=" -target arm64-apple-macos"
3233         fi
3234         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3235         AC_MSG_RESULT([$CC])
3237         AC_MSG_CHECKING([what C++ compiler to use])
3238         CXX="`xcrun -find clang++`"
3239         CXX_BASE=`first_arg_basename "$CXX"`
3240         if test "$host_cpu" = x86_64; then
3241             CXX+=" -target x86_64-apple-macos"
3242         else
3243             CXX+=" -target arm64-apple-macos"
3244         fi
3245         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3246         AC_MSG_RESULT([$CXX])
3248         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3249         AR=`xcrun -find ar`
3250         NM=`xcrun -find nm`
3251         STRIP=`xcrun -find strip`
3252         LIBTOOL=`xcrun -find libtool`
3253         RANLIB=`xcrun -find ranlib`
3254     fi
3256     case "$with_macosx_version_max_allowed" in
3257     10.10)
3258         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3259         ;;
3260     10.11)
3261         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3262         ;;
3263     10.12)
3264         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3265         ;;
3266     10.13)
3267         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3268         ;;
3269     10.14)
3270         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3271         ;;
3272     10.15)
3273         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3274         ;;
3275     11.0)
3276         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3277         ;;
3278     *)
3279         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.0])
3280         ;;
3281     esac
3283     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3284     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3285         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])
3286     else
3287         AC_MSG_RESULT([ok])
3288     fi
3290     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3291     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3292         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3293     else
3294         AC_MSG_RESULT([ok])
3295     fi
3296     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3297     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3299     AC_MSG_CHECKING([whether to do code signing])
3301     if test "$enable_macosx_code_signing" = yes; then
3302         # By default use the first suitable certificate (?).
3304         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3305         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3306         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3307         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3308         # "Developer ID Application" one.
3310         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3311         if test -n "$identity"; then
3312             MACOSX_CODESIGNING_IDENTITY=$identity
3313             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3314             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3315         else
3316             AC_MSG_ERROR([cannot determine identity to use])
3317         fi
3318     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3319         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3320         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3321         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3322     else
3323         AC_MSG_RESULT([no])
3324     fi
3326     AC_MSG_CHECKING([whether to create a Mac App Store package])
3328     if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3329         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3330     elif test "$enable_macosx_package_signing" = yes; then
3331         # By default use the first suitable certificate.
3332         # It should be a "3rd Party Mac Developer Installer" one
3334         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3335         if test -n "$identity"; then
3336             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3337             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3338             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3339         else
3340             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3341         fi
3342     elif test -n "$enable_macosx_package_signing"; then
3343         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3344         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3345         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3346     else
3347         AC_MSG_RESULT([no])
3348     fi
3350     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3351         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3352     fi
3354     AC_MSG_CHECKING([whether to sandbox the application])
3356     if test -z "$MACOSX_CODESIGNING_IDENTITY" -a "$enable_macosx_sandbox" = yes; then
3357         AC_MSG_ERROR([macOS sandboxing requires code signing])
3358     elif test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3359         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3360     elif test -n "$MACOSX_CODESIGNING_IDENTITY" -a "$enable_macosx_sandbox" = yes; then
3361         ENABLE_MACOSX_SANDBOX=TRUE
3362         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3363         AC_MSG_RESULT([yes])
3364     else
3365         AC_MSG_RESULT([no])
3366     fi
3368     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3369     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3370     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3372 AC_SUBST(MACOSX_SDK_PATH)
3373 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3374 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3375 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3376 AC_SUBST(INSTALL_NAME_TOOL)
3377 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3378 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3379 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3380 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3381 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3383 dnl ===================================================================
3384 dnl Check iOS SDK and compiler
3385 dnl ===================================================================
3387 if test $_os = iOS; then
3388     AC_MSG_CHECKING([what iOS SDK to use])
3389     current_sdk_ver=14.1
3390     older_sdk_vers="14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3391     if test "$enable_ios_simulator" = "yes"; then
3392         platform=iPhoneSimulator
3393         versionmin=-mios-simulator-version-min=12.2
3394     else
3395         platform=iPhoneOS
3396         versionmin=-miphoneos-version-min=12.2
3397     fi
3398     xcode_developer=`xcode-select -print-path`
3400     for sdkver in $current_sdk_ver $older_sdk_vers; do
3401         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3402         if test -d $t; then
3403             sysroot=$t
3404             break
3405         fi
3406     done
3408     if test -z "$sysroot"; then
3409         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3410     fi
3412     AC_MSG_RESULT($sysroot)
3414     stdlib="-stdlib=libc++"
3416     AC_MSG_CHECKING([what C compiler to use])
3417     CC="`xcrun -find clang`"
3418     CC_BASE=`first_arg_basename "$CC"`
3419     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3420     AC_MSG_RESULT([$CC])
3422     AC_MSG_CHECKING([what C++ compiler to use])
3423     CXX="`xcrun -find clang++`"
3424     CXX_BASE=`first_arg_basename "$CXX"`
3425     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3426     AC_MSG_RESULT([$CXX])
3428     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3429     AR=`xcrun -find ar`
3430     NM=`xcrun -find nm`
3431     STRIP=`xcrun -find strip`
3432     LIBTOOL=`xcrun -find libtool`
3433     RANLIB=`xcrun -find ranlib`
3436 AC_MSG_CHECKING([whether to treat the installation as read-only])
3438 if test $_os = Darwin; then
3439     enable_readonly_installset=yes
3440 elif test "$enable_extensions" != yes; then
3441     enable_readonly_installset=yes
3443 if test "$enable_readonly_installset" = yes; then
3444     AC_MSG_RESULT([yes])
3445     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3446 else
3447     AC_MSG_RESULT([no])
3450 dnl ===================================================================
3451 dnl Structure of install set
3452 dnl ===================================================================
3454 if test $_os = Darwin; then
3455     LIBO_BIN_FOLDER=MacOS
3456     LIBO_ETC_FOLDER=Resources
3457     LIBO_LIBEXEC_FOLDER=MacOS
3458     LIBO_LIB_FOLDER=Frameworks
3459     LIBO_LIB_PYUNO_FOLDER=Resources
3460     LIBO_SHARE_FOLDER=Resources
3461     LIBO_SHARE_HELP_FOLDER=Resources/help
3462     LIBO_SHARE_JAVA_FOLDER=Resources/java
3463     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3464     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3465     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3466     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3467     LIBO_URE_BIN_FOLDER=MacOS
3468     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3469     LIBO_URE_LIB_FOLDER=Frameworks
3470     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3471     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3472 elif test $_os = WINNT; then
3473     LIBO_BIN_FOLDER=program
3474     LIBO_ETC_FOLDER=program
3475     LIBO_LIBEXEC_FOLDER=program
3476     LIBO_LIB_FOLDER=program
3477     LIBO_LIB_PYUNO_FOLDER=program
3478     LIBO_SHARE_FOLDER=share
3479     LIBO_SHARE_HELP_FOLDER=help
3480     LIBO_SHARE_JAVA_FOLDER=program/classes
3481     LIBO_SHARE_PRESETS_FOLDER=presets
3482     LIBO_SHARE_READMES_FOLDER=readmes
3483     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3484     LIBO_SHARE_SHELL_FOLDER=program/shell
3485     LIBO_URE_BIN_FOLDER=program
3486     LIBO_URE_ETC_FOLDER=program
3487     LIBO_URE_LIB_FOLDER=program
3488     LIBO_URE_MISC_FOLDER=program
3489     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3490 else
3491     LIBO_BIN_FOLDER=program
3492     LIBO_ETC_FOLDER=program
3493     LIBO_LIBEXEC_FOLDER=program
3494     LIBO_LIB_FOLDER=program
3495     LIBO_LIB_PYUNO_FOLDER=program
3496     LIBO_SHARE_FOLDER=share
3497     LIBO_SHARE_HELP_FOLDER=help
3498     LIBO_SHARE_JAVA_FOLDER=program/classes
3499     LIBO_SHARE_PRESETS_FOLDER=presets
3500     LIBO_SHARE_READMES_FOLDER=readmes
3501     if test "$enable_fuzzers" != yes; then
3502         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3503     else
3504         LIBO_SHARE_RESOURCE_FOLDER=resource
3505     fi
3506     LIBO_SHARE_SHELL_FOLDER=program/shell
3507     LIBO_URE_BIN_FOLDER=program
3508     LIBO_URE_ETC_FOLDER=program
3509     LIBO_URE_LIB_FOLDER=program
3510     LIBO_URE_MISC_FOLDER=program
3511     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3513 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3521 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3522 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3523 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3524 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3525 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3526 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3527 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3528 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3530 # Not all of them needed in config_host.mk, add more if need arises
3531 AC_SUBST(LIBO_BIN_FOLDER)
3532 AC_SUBST(LIBO_ETC_FOLDER)
3533 AC_SUBST(LIBO_LIB_FOLDER)
3534 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3535 AC_SUBST(LIBO_SHARE_FOLDER)
3536 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3537 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3538 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3539 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3540 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3541 AC_SUBST(LIBO_URE_BIN_FOLDER)
3542 AC_SUBST(LIBO_URE_ETC_FOLDER)
3543 AC_SUBST(LIBO_URE_LIB_FOLDER)
3544 AC_SUBST(LIBO_URE_MISC_FOLDER)
3545 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3547 dnl ===================================================================
3548 dnl Windows specific tests and stuff
3549 dnl ===================================================================
3551 reg_get_value()
3553     # Return value: $regvalue
3554     unset regvalue
3556     if test "$build_os" = "wsl"; then
3557         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3558         return
3559     fi
3561     local _regentry="/proc/registry${1}/${2}"
3562     if test -f "$_regentry"; then
3563         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3564         # Registry keys read via /proc/registry* are always \0 terminated!
3565         local _regvalue=$(tr -d '\0' < "$_regentry")
3566         if test $? -eq 0; then
3567             regvalue=$_regvalue
3568         fi
3569     fi
3572 # Get a value from the 32-bit side of the Registry
3573 reg_get_value_32()
3575     reg_get_value "32" "$1"
3578 # Get a value from the 64-bit side of the Registry
3579 reg_get_value_64()
3581     reg_get_value "64" "$1"
3584 case "$host_os" in
3585 cygwin*|wsl*)
3586     COM=MSC
3587     USING_X11=
3588     OS=WNT
3589     RTL_OS=Windows
3590     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3591         P_SEP=";"
3592     else
3593         P_SEP=:
3594     fi
3595     case "$host_cpu" in
3596     x86_64)
3597         CPUNAME=X86_64
3598         RTL_ARCH=X86_64
3599         PLATFORMID=windows_x86_64
3600         WINDOWS_X64=1
3601         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3602         WIN_HOST_ARCH="x64"
3603         WIN_MULTI_ARCH="x86"
3604         WIN_HOST_BITS=64
3605         ;;
3606     i*86)
3607         CPUNAME=INTEL
3608         RTL_ARCH=x86
3609         PLATFORMID=windows_x86
3610         WIN_HOST_ARCH="x86"
3611         WIN_HOST_BITS=32
3612         WIN_OTHER_ARCH="x64"
3613         ;;
3614     aarch64)
3615         CPUNAME=ARM64
3616         RTL_ARCH=arm64
3617         PLATFORMID=windows_arm64
3618         WINDOWS_X64=1
3619         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3620         WIN_HOST_ARCH="arm64"
3621         WIN_HOST_BITS=64
3622         with_ucrt_dir=no
3623         ;;
3624     *)
3625         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3626         ;;
3627     esac
3629     case "$build_cpu" in
3630     x86_64) WIN_BUILD_ARCH="x64" ;;
3631     i*86) WIN_BUILD_ARCH="x86" ;;
3632     aarch64) WIN_BUILD_ARCH="arm64" ;;
3633     *)
3634         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3635         ;;
3636     esac
3638     SCPDEFS="$SCPDEFS -D_MSC_VER"
3639     ;;
3640 esac
3642 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3643 # other-arch won't, but wouldn't break the build (x64 on x86).
3644 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3645     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3649 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3650     # To allow building Windows multi-arch releases without cross-tooling
3651     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3652         cross_compiling="yes"
3653     fi
3655 if test "$cross_compiling" = "yes"; then
3656     export CROSS_COMPILING=TRUE
3657 else
3658     CROSS_COMPILING=
3659     BUILD_TYPE="$BUILD_TYPE NATIVE"
3661 AC_SUBST(CROSS_COMPILING)
3663 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3664 # NOTE: must _not_ be used for bundled external libraries!
3665 ISYSTEM=
3666 if test "$GCC" = "yes"; then
3667     AC_MSG_CHECKING( for -isystem )
3668     save_CFLAGS=$CFLAGS
3669     CFLAGS="$CFLAGS -Werror"
3670     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3671     CFLAGS=$save_CFLAGS
3672     if test -n "$ISYSTEM"; then
3673         AC_MSG_RESULT(yes)
3674     else
3675         AC_MSG_RESULT(no)
3676     fi
3678 if test -z "$ISYSTEM"; then
3679     # fall back to using -I
3680     ISYSTEM=-I
3682 AC_SUBST(ISYSTEM)
3684 dnl ===================================================================
3685 dnl  Check which Visual Studio compiler is used
3686 dnl ===================================================================
3688 map_vs_year_to_version()
3690     # Return value: $vsversion
3692     unset vsversion
3694     case $1 in
3695     2019)
3696         vsversion=16;;
3697     *)
3698         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3699     esac
3702 vs_versions_to_check()
3704     # Args: $1 (optional) : versions to check, in the order of preference
3705     # Return value: $vsversions
3707     unset vsversions
3709     if test -n "$1"; then
3710         map_vs_year_to_version "$1"
3711         vsversions=$vsversion
3712     else
3713         # We accept only 2019
3714         vsversions="16"
3715     fi
3718 win_get_env_from_vsvars32bat()
3720     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3721     # Also seems to be located in another directory under the same name: vsvars32.bat
3722     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3723     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3724     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3725     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3726     local result
3727     if test "$build_os" = "wsl"; then
3728         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3729     else
3730         chmod +x $WRAPPERBATCHFILEPATH
3731         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3732     fi
3733     rm -f $WRAPPERBATCHFILEPATH
3734     printf '%s' "$result"
3737 find_ucrt()
3739     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3740     if test -n "$regvalue"; then
3741         PathFormat "$regvalue"
3742         UCRTSDKDIR=$formatted_path_unix
3743         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3744         UCRTVERSION=$regvalue
3745         # Rest if not exist
3746         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3747           UCRTSDKDIR=
3748         fi
3749     fi
3750     if test -z "$UCRTSDKDIR"; then
3751         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3752         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3753         if test -f "$ide_env_file"; then
3754             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3755             UCRTSDKDIR=$formatted_path
3756             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3757             dnl Hack needed at least by tml:
3758             if test "$UCRTVERSION" = 10.0.15063.0 \
3759                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3760                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3761             then
3762                 UCRTVERSION=10.0.14393.0
3763             fi
3764         else
3765           AC_MSG_ERROR([No UCRT found])
3766         fi
3767     fi
3770 find_msvc()
3772     # Find Visual C++ 2019
3773     # Args: $1 (optional) : The VS version year
3774     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3776     unset vctest vcnum vcnumwithdot vcbuildnumber
3778     vs_versions_to_check "$1"
3779     if test "$build_os" = wsl; then
3780         vswhere="$PROGRAMFILESX86"
3781     else
3782         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3783     fi
3784     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3785     PathFormat "$vswhere"
3786     vswhere=$formatted_path_unix
3787     for ver in $vsversions; do
3788         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3789         # Fall back to all MS products (this includes VC++ Build Tools)
3790         if ! test -n "$vswhereoutput"; then
3791             AC_MSG_CHECKING([VC++ Build Tools and similar])
3792             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3793         fi
3794         if test -n "$vswhereoutput"; then
3795             PathFormat "$vswhereoutput"
3796             vctest=$formatted_path_unix
3797             break
3798         fi
3799     done
3801     if test -n "$vctest"; then
3802         vcnumwithdot="$ver.0"
3803         case "$vcnumwithdot" in
3804         16.0)
3805             vcyear=2019
3806             vcnum=160
3807             ;;
3808         esac
3809         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3811     fi
3814 test_cl_exe()
3816     AC_MSG_CHECKING([$1 compiler])
3818     CL_EXE_PATH="$2/cl.exe"
3820     if test ! -f "$CL_EXE_PATH"; then
3821         if test "$1" = "multi-arch"; then
3822             AC_MSG_WARN([no compiler (cl.exe) in $2])
3823             return 1
3824         else
3825             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3826         fi
3827     fi
3829     dnl ===========================================================
3830     dnl  Check for the corresponding mspdb*.dll
3831     dnl ===========================================================
3833     # MSVC 15.0 has libraries from 14.0?
3834     mspdbnum="140"
3836     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3837         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3838     fi
3840     # The compiles has to find its shared libraries
3841     OLD_PATH="$PATH"
3842     TEMP_PATH=`cygpath -d "$2"`
3843     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3845     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3846         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3847     fi
3849     PATH="$OLD_PATH"
3851     AC_MSG_RESULT([$CL_EXE_PATH])
3854 SOLARINC=
3855 MSBUILD_PATH=
3856 DEVENV=
3857 if test "$_os" = "WINNT"; then
3858     AC_MSG_CHECKING([Visual C++])
3859     find_msvc "$with_visual_studio"
3860     if test -z "$vctest"; then
3861         if test -n "$with_visual_studio"; then
3862             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3863         else
3864             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3865         fi
3866     fi
3867     AC_MSG_RESULT([])
3869     VC_PRODUCT_DIR="$vctest/VC"
3870     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3872     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3873     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3874         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3875         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3876         if test $? -ne 0; then
3877             WIN_MULTI_ARCH=""
3878             WIN_OTHER_ARCH=""
3879         fi
3880     fi
3882     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3883         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3884         test_cl_exe "build" "$MSVC_BUILD_PATH"
3885     fi
3887     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3888         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3889         test_cl_exe "host" "$MSVC_HOST_PATH"
3890     else
3891         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3892     fi
3894     AC_MSG_CHECKING([for short pathname of VC product directory])
3895     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3896     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3898     UCRTSDKDIR=
3899     UCRTVERSION=
3901     AC_MSG_CHECKING([for UCRT location])
3902     find_ucrt
3903     # find_ucrt errors out if it doesn't find it
3904     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3905     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3906     ucrtincpath_formatted=$formatted_path
3907     # SOLARINC is used for external modules and must be set too.
3908     # And no, it's not sufficient to set SOLARINC only, as configure
3909     # itself doesn't honour it.
3910     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3911     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3912     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3913     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3915     AC_SUBST(UCRTSDKDIR)
3916     AC_SUBST(UCRTVERSION)
3918     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3919     # Find the proper version of MSBuild.exe to use based on the VS version
3920     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3921     if test -n "$regvalue" ; then
3922         AC_MSG_RESULT([found: $regvalue])
3923         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3924     else
3925         if test "$vcnumwithdot" = "16.0"; then
3926             if test "$WIN_BUILD_ARCH" != "x64"; then
3927                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3928             else
3929                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3930             fi
3931         else
3932             if test "$WIN_BUILD_ARCH" != "x64"; then
3933                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3934             else
3935                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3936             fi
3937         fi
3938         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3939         AC_MSG_RESULT([$regvalue])
3940     fi
3942     # Find the version of devenv.exe
3943     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3944     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3945     DEVENV_unix=$(cygpath -u "$DEVENV")
3946     if test ! -e "$DEVENV_unix"; then
3947         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3948     fi
3950     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3951     dnl needed when building CLR code:
3952     if test -z "$MSVC_CXX"; then
3953         # This gives us a posix path with 8.3 filename restrictions
3954         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3955     fi
3957     if test -z "$CC"; then
3958         CC=$MSVC_CXX
3959         CC_BASE=`first_arg_basename "$CC"`
3960     fi
3961     if test -z "$CXX"; then
3962         CXX=$MSVC_CXX
3963         CXX_BASE=`first_arg_basename "$CXX"`
3964     fi
3966     if test -n "$CC"; then
3967         # Remove /cl.exe from CC case insensitive
3968         AC_MSG_NOTICE([found Visual C++ $vcyear])
3970         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3971         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3973         PathFormat "$COMPATH"
3974         COMPATH=`win_short_path_for_make "$formatted_path"`
3976         VCVER=$vcnum
3978         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
3979         # are always "better", we list them in reverse chronological order.
3981         case "$vcnum" in
3982         160)
3983             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3984             ;;
3985         esac
3987         # The expectation is that --with-windows-sdk should not need to be used
3988         if test -n "$with_windows_sdk"; then
3989             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3990             *" "$with_windows_sdk" "*)
3991                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3992                 ;;
3993             *)
3994                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3995                 ;;
3996             esac
3997         fi
3999         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4000         ac_objext=obj
4001         ac_exeext=exe
4003     else
4004         AC_MSG_ERROR([Visual C++ not found after all, huh])
4005     fi
4007     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4008     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4009         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4010         // between Visual Studio versions and _MSC_VER:
4011         #if _MSC_VER < 1924
4012         #error
4013         #endif
4014     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4016     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4017     # version of the Explorer extension (and maybe other small
4018     # bits, too) needed when installing a 32-bit LibreOffice on a
4019     # 64-bit OS. The 64-bit Explorer extension is a feature that
4020     # has been present since long in OOo. Don't confuse it with
4021     # building LibreOffice itself as 64-bit code.
4023     BUILD_X64=
4024     CXX_X64_BINARY=
4026     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4027         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4028         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4029              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4030         then
4031             BUILD_X64=TRUE
4032             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4033             AC_MSG_RESULT([found])
4034         else
4035             AC_MSG_RESULT([not found])
4036             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4037         fi
4038     elif test "$WIN_HOST_ARCH" = "x64"; then
4039         CXX_X64_BINARY=$CXX
4040     fi
4041     AC_SUBST(BUILD_X64)
4043     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4044     AC_SUBST(CXX_X64_BINARY)
4046     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4047     # needed to support TWAIN scan on both 32- and 64-bit systems
4049     case "$WIN_HOST_ARCH" in
4050     x64)
4051         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4052         if test -n "$CXX_X86_BINARY"; then
4053             BUILD_X86=TRUE
4054             AC_MSG_RESULT([preset])
4055         elif test -n "$WIN_MULTI_ARCH"; then
4056             BUILD_X86=TRUE
4057             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4058             CXX_X86_BINARY+=" /arch:SSE"
4059             AC_MSG_RESULT([found])
4060         else
4061             AC_MSG_RESULT([not found])
4062             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4063         fi
4064         ;;
4065     x86)
4066         BUILD_X86=TRUE
4067         CXX_X86_BINARY=$MSVC_CXX
4068         ;;
4069     esac
4070     AC_SUBST(BUILD_X86)
4071     AC_SUBST(CXX_X86_BINARY)
4073 AC_SUBST(VCVER)
4074 AC_SUBST(DEVENV)
4075 AC_SUBST(MSVC_CXX)
4078 # unowinreg.dll
4080 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4081 AC_SUBST(UNOWINREG_DLL)
4083 COM_IS_CLANG=
4084 AC_MSG_CHECKING([whether the compiler is actually Clang])
4085 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4086     #ifndef __clang__
4087     you lose
4088     #endif
4089     int foo=42;
4090     ]])],
4091     [AC_MSG_RESULT([yes])
4092      COM_IS_CLANG=TRUE],
4093     [AC_MSG_RESULT([no])])
4094 AC_SUBST(COM_IS_CLANG)
4096 CC_PLAIN=$CC
4097 CLANGVER=
4098 if test "$COM_IS_CLANG" = TRUE; then
4099     AC_MSG_CHECKING([whether Clang is new enough])
4100     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4101         #if !defined __apple_build_version__
4102         #error
4103         #endif
4104         ]])],
4105         [my_apple_clang=yes],[my_apple_clang=])
4106     if test "$my_apple_clang" = yes; then
4107         AC_MSG_RESULT([assumed yes (Apple Clang)])
4108     else
4109         if test "$_os" = WINNT; then
4110             dnl In which case, assume clang-cl:
4111             my_args="/EP /TC"
4112             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4113             dnl clang-cl:
4114             CC_PLAIN=
4115             for i in $CC; do
4116                 case $i in
4117                 -FIIntrin.h)
4118                     ;;
4119                 *)
4120                     CC_PLAIN="$CC_PLAIN $i"
4121                     ;;
4122                 esac
4123             done
4124         else
4125             my_args="-E -P"
4126         fi
4127         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4128         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4129         CLANGVER=`echo $clang_version \
4130             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4131         if test "$CLANGVER" -ge 50002; then
4132             AC_MSG_RESULT([yes ($clang_version)])
4133         else
4134             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4135         fi
4136         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4137         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4138     fi
4141 SHOWINCLUDES_PREFIX=
4142 if test "$_os" = WINNT; then
4143     dnl We need to guess the prefix of the -showIncludes output, it can be
4144     dnl localized
4145     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4146     echo "#include <stdlib.h>" > conftest.c
4147     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4148         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4149     rm -f conftest.c conftest.obj
4150     if test -z "$SHOWINCLUDES_PREFIX"; then
4151         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4152     else
4153         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4154     fi
4156 AC_SUBST(SHOWINCLUDES_PREFIX)
4159 # prefix C with ccache if needed
4161 if test "$CCACHE" != ""; then
4162     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4164     AC_LANG_PUSH([C])
4165     save_CFLAGS=$CFLAGS
4166     CFLAGS="$CFLAGS --ccache-skip -O2"
4167     dnl an empty program will do, we're checking the compiler flags
4168     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4169                       [use_ccache=yes], [use_ccache=no])
4170     CFLAGS=$save_CFLAGS
4171     if test $use_ccache = yes; then
4172         AC_MSG_RESULT([yes])
4173     else
4174         CC="$CCACHE $CC"
4175         CC_BASE="ccache $CC_BASE"
4176         AC_MSG_RESULT([no])
4177     fi
4178     AC_LANG_POP([C])
4181 # ===================================================================
4182 # check various GCC options that Clang does not support now but maybe
4183 # will somewhen in the future, check them even for GCC, so that the
4184 # flags are set
4185 # ===================================================================
4187 HAVE_GCC_GGDB2=
4188 if test "$GCC" = "yes"; then
4189     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4190     save_CFLAGS=$CFLAGS
4191     CFLAGS="$CFLAGS -Werror -ggdb2"
4192     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4193     CFLAGS=$save_CFLAGS
4194     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4195         AC_MSG_RESULT([yes])
4196     else
4197         AC_MSG_RESULT([no])
4198     fi
4200     if test "$host_cpu" = "m68k"; then
4201         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4202         save_CFLAGS=$CFLAGS
4203         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4204         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4205         CFLAGS=$save_CFLAGS
4206         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4207             AC_MSG_RESULT([yes])
4208         else
4209             AC_MSG_ERROR([no])
4210         fi
4211     fi
4213 AC_SUBST(HAVE_GCC_GGDB2)
4215 dnl ===================================================================
4216 dnl  Test the gcc version
4217 dnl ===================================================================
4218 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4219     AC_MSG_CHECKING([the GCC version])
4220     _gcc_version=`$CC -dumpversion`
4221     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4222         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4223     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4225     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4227     if test "$gcc_full_version" -lt 70000; then
4228         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4229     fi
4230 else
4231     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4232     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4233     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4234     # (which reports itself as GCC 4.2.1).
4235     GCC_VERSION=
4237 AC_SUBST(GCC_VERSION)
4239 dnl Set the ENABLE_DBGUTIL variable
4240 dnl ===================================================================
4241 AC_MSG_CHECKING([whether to build with additional debug utilities])
4242 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4243     ENABLE_DBGUTIL="TRUE"
4244     # this is an extra var so it can have different default on different MSVC
4245     # versions (in case there are version specific problems with it)
4246     MSVC_USE_DEBUG_RUNTIME="TRUE"
4248     AC_MSG_RESULT([yes])
4249     # cppunit and graphite expose STL in public headers
4250     if test "$with_system_cppunit" = "yes"; then
4251         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4252     else
4253         with_system_cppunit=no
4254     fi
4255     if test "$with_system_graphite" = "yes"; then
4256         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4257     else
4258         with_system_graphite=no
4259     fi
4260     if test "$with_system_orcus" = "yes"; then
4261         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4262     else
4263         with_system_orcus=no
4264     fi
4265     if test "$with_system_libcmis" = "yes"; then
4266         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4267     else
4268         with_system_libcmis=no
4269     fi
4270     if test "$with_system_hunspell" = "yes"; then
4271         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4272     else
4273         with_system_hunspell=no
4274     fi
4275     if test "$with_system_gpgmepp" = "yes"; then
4276         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4277     else
4278         with_system_gpgmepp=no
4279     fi
4280     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4281     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4282     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4283     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4284     # of those two is using the system variant:
4285     if test "$with_system_libnumbertext" = "yes"; then
4286         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4287     else
4288         with_system_libnumbertext=no
4289     fi
4290     if test "$with_system_libwps" = "yes"; then
4291         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4292     else
4293         with_system_libwps=no
4294     fi
4295 else
4296     ENABLE_DBGUTIL=""
4297     MSVC_USE_DEBUG_RUNTIME=""
4298     AC_MSG_RESULT([no])
4300 AC_SUBST(ENABLE_DBGUTIL)
4301 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4303 dnl Set the ENABLE_DEBUG variable.
4304 dnl ===================================================================
4305 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4306     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4308 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4309     if test -z "$libo_fuzzed_enable_debug"; then
4310         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4311     else
4312         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4313         enable_debug=yes
4314     fi
4317 AC_MSG_CHECKING([whether to do a debug build])
4318 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4319     ENABLE_DEBUG="TRUE"
4320     if test -n "$ENABLE_DBGUTIL" ; then
4321         AC_MSG_RESULT([yes (dbgutil)])
4322     else
4323         AC_MSG_RESULT([yes])
4324     fi
4325 else
4326     ENABLE_DEBUG=""
4327     AC_MSG_RESULT([no])
4329 AC_SUBST(ENABLE_DEBUG)
4331 dnl ===================================================================
4332 dnl Select the linker to use (gold/lld/ld.bfd).
4333 dnl This is done only after compiler checks (need to know if Clang is
4334 dnl used, for different defaults) and after checking if a debug build
4335 dnl is wanted (non-debug builds get the default linker if not explicitly
4336 dnl specified otherwise).
4337 dnl All checks for linker features/options should come after this.
4338 dnl ===================================================================
4339 check_use_ld()
4341     use_ld=-fuse-ld=${1%%:*}
4342     use_ld_path=${1#*:}
4343     if test "$use_ld_path" != "$1"; then
4344         use_ld="$use_ld --ld-path=$use_ld_path"
4345     fi
4346     use_ld_fail_if_error=$2
4347     use_ld_ok=
4348     AC_MSG_CHECKING([for $use_ld linker support])
4349     use_ld_ldflags_save="$LDFLAGS"
4350     LDFLAGS="$LDFLAGS $use_ld"
4351     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4352 #include <stdio.h>
4353         ],[
4354 printf ("hello world\n");
4355         ])], USE_LD=$use_ld, [])
4356     if test -n "$USE_LD"; then
4357         AC_MSG_RESULT( yes )
4358         use_ld_ok=yes
4359     else
4360         if test -n "$use_ld_fail_if_error"; then
4361             AC_MSG_ERROR( no )
4362         else
4363             AC_MSG_RESULT( no )
4364         fi
4365     fi
4366     if test -n "$use_ld_ok"; then
4367         dnl keep the value of LDFLAGS
4368         return 0
4369     fi
4370     LDFLAGS="$use_ld_ldflags_save"
4371     return 1
4373 USE_LD=
4374 if test "$enable_ld" != "no"; then
4375     if test "$GCC" = "yes"; then
4376         if test -n "$enable_ld"; then
4377             check_use_ld "$enable_ld" fail_if_error
4378         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4379             dnl non-debug builds default to the default linker
4380             true
4381         elif test -n "$COM_IS_CLANG"; then
4382             check_use_ld lld
4383             if test $? -ne 0; then
4384                 check_use_ld gold
4385             fi
4386         else
4387             # For gcc first try gold, new versions also support lld.
4388             check_use_ld gold
4389             if test $? -ne 0; then
4390                 check_use_ld lld
4391             fi
4392         fi
4393         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4394         rm conftest.out
4395         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4396         if test -z "$ld_used"; then
4397             ld_used="unknown"
4398         fi
4399         AC_MSG_CHECKING([for linker that is used])
4400         AC_MSG_RESULT([$ld_used])
4401         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4402             if echo "$ld_used" | grep -q "^GNU ld"; then
4403                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4404                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4405             fi
4406         fi
4407     else
4408         if test "$enable_ld" = "yes"; then
4409             AC_MSG_ERROR([--enable-ld not supported])
4410         fi
4411     fi
4413 AC_SUBST(USE_LD)
4415 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4416 if test "$GCC" = "yes"; then
4417     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4418     bsymbolic_functions_ldflags_save=$LDFLAGS
4419     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4420     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4421 #include <stdio.h>
4422         ],[
4423 printf ("hello world\n");
4424         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4425     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4426         AC_MSG_RESULT( found )
4427     else
4428         AC_MSG_RESULT( not found )
4429     fi
4430     LDFLAGS=$bsymbolic_functions_ldflags_save
4432 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4434 LD_GC_SECTIONS=
4435 if test "$GCC" = "yes"; then
4436     for flag in "--gc-sections" "-dead_strip"; do
4437         AC_MSG_CHECKING([for $flag linker support])
4438         ldflags_save=$LDFLAGS
4439         LDFLAGS="$LDFLAGS -Wl,$flag"
4440         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4441 #include <stdio.h>
4442             ],[
4443 printf ("hello world\n");
4444             ])],[
4445             LD_GC_SECTIONS="-Wl,$flag"
4446             AC_MSG_RESULT( found )
4447             ], [
4448             AC_MSG_RESULT( not found )
4449             ])
4450         LDFLAGS=$ldflags_save
4451         if test -n "$LD_GC_SECTIONS"; then
4452             break
4453         fi
4454     done
4456 AC_SUBST(LD_GC_SECTIONS)
4458 HAVE_GSPLIT_DWARF=
4459 if test "$enable_split_debug" != no; then
4460     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4461     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4462         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4463         save_CFLAGS=$CFLAGS
4464         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4465         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4466         CFLAGS=$save_CFLAGS
4467         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4468             AC_MSG_RESULT([yes])
4469         else
4470             if test "$enable_split_debug" = yes; then
4471                 AC_MSG_ERROR([no])
4472             else
4473                 AC_MSG_RESULT([no])
4474             fi
4475         fi
4476     fi
4477     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4478         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4479         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4480     fi
4482 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4484 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4485 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4486 save_CFLAGS=$CFLAGS
4487 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4488 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4489 CFLAGS=$save_CFLAGS
4490 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4491     AC_MSG_RESULT([yes])
4492 else
4493     AC_MSG_RESULT([no])
4495 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4497 ENABLE_GDB_INDEX=
4498 if test "$enable_gdb_index" != "no"; then
4499     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4500     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4501         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4502         save_CFLAGS=$CFLAGS
4503         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4504         have_ggnu_pubnames=
4505         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4506         if test "$have_ggnu_pubnames" != "TRUE"; then
4507             if test "$enable_gdb_index" = "yes"; then
4508                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4509             else
4510                 AC_MSG_RESULT( no )
4511             fi
4512         else
4513             AC_MSG_RESULT( yes )
4514             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4515             ldflags_save=$LDFLAGS
4516             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4517             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4518 #include <stdio.h>
4519                 ],[
4520 printf ("hello world\n");
4521                 ])], ENABLE_GDB_INDEX=TRUE, [])
4522             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4523                 AC_MSG_RESULT( yes )
4524             else
4525                 if test "$enable_gdb_index" = "yes"; then
4526                     AC_MSG_ERROR( no )
4527                 else
4528                     AC_MSG_RESULT( no )
4529                 fi
4530             fi
4531             LDFLAGS=$ldflags_save
4532         fi
4533         CFLAGS=$save_CFLAGS
4534         fi
4535     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4536         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4537         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4538     fi
4540 AC_SUBST(ENABLE_GDB_INDEX)
4542 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4543     enable_sal_log=yes
4545 if test "$enable_sal_log" = yes; then
4546     ENABLE_SAL_LOG=TRUE
4548 AC_SUBST(ENABLE_SAL_LOG)
4550 dnl Check for enable symbols option
4551 dnl ===================================================================
4552 AC_MSG_CHECKING([whether to generate debug information])
4553 if test -z "$enable_symbols"; then
4554     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4555         enable_symbols=yes
4556     else
4557         enable_symbols=no
4558     fi
4560 if test "$enable_symbols" = yes; then
4561     ENABLE_SYMBOLS_FOR=all
4562     AC_MSG_RESULT([yes])
4563 elif test "$enable_symbols" = no; then
4564     ENABLE_SYMBOLS_FOR=
4565     AC_MSG_RESULT([no])
4566 else
4567     # Selective debuginfo.
4568     ENABLE_SYMBOLS_FOR="$enable_symbols"
4569     AC_MSG_RESULT([for "$enable_symbols"])
4571 AC_SUBST(ENABLE_SYMBOLS_FOR)
4573 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4574     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4575     AC_MSG_CHECKING([whether enough memory is available for linking])
4576     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4577     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4578     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4579         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4580     else
4581         AC_MSG_RESULT([yes])
4582     fi
4585 ENABLE_OPTIMIZED=
4586 ENABLE_OPTIMIZED_DEBUG=
4587 AC_MSG_CHECKING([whether to compile with optimization flags])
4588 if test -z "$enable_optimized"; then
4589     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4590         enable_optimized=no
4591     else
4592         enable_optimized=yes
4593     fi
4595 if test "$enable_optimized" = yes; then
4596     ENABLE_OPTIMIZED=TRUE
4597     AC_MSG_RESULT([yes])
4598 elif test "$enable_optimized" = debug; then
4599     ENABLE_OPTIMIZED_DEBUG=TRUE
4600     AC_MSG_RESULT([yes (debug)])
4601     HAVE_GCC_OG=
4602     if test "$GCC" = "yes"; then
4603         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4604         save_CFLAGS=$CFLAGS
4605         CFLAGS="$CFLAGS -Werror -Og"
4606         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4607         CFLAGS=$save_CFLAGS
4608         if test "$HAVE_GCC_OG" = "TRUE"; then
4609             AC_MSG_RESULT([yes])
4610         else
4611             AC_MSG_RESULT([no])
4612         fi
4613     fi
4614     if test -z "$HAVE_GCC_OG"; then
4615         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4616     fi
4617 else
4618     AC_MSG_RESULT([no])
4620 AC_SUBST(ENABLE_OPTIMIZED)
4621 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4624 # determine CPUNAME, OS, ...
4625 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4627 case "$host_os" in
4629 aix*)
4630     COM=GCC
4631     CPUNAME=POWERPC
4632     USING_X11=TRUE
4633     OS=AIX
4634     RTL_OS=AIX
4635     RTL_ARCH=PowerPC
4636     PLATFORMID=aix_powerpc
4637     P_SEP=:
4638     ;;
4640 cygwin*|wsl*)
4641     # Already handled
4642     ;;
4644 darwin*|macos*)
4645     COM=GCC
4646     USING_X11=
4647     OS=MACOSX
4648     RTL_OS=MacOSX
4649     P_SEP=:
4651     case "$host_cpu" in
4652     aarch64|arm64)
4653         if test "$enable_ios_simulator" = "yes"; then
4654             OS=iOS
4655         else
4656             CPUNAME=AARCH64
4657             RTL_ARCH=AARCH64
4658             PLATFORMID=macosx_arm64
4659         fi
4660         ;;
4661     x86_64)
4662         if test "$enable_ios_simulator" = "yes"; then
4663             OS=iOS
4664         fi
4665         CPUNAME=X86_64
4666         RTL_ARCH=X86_64
4667         PLATFORMID=macosx_x86_64
4668         ;;
4669     *)
4670         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4671         ;;
4672     esac
4673     ;;
4675 ios*)
4676     COM=GCC
4677     USING_X11=
4678     OS=iOS
4679     RTL_OS=iOS
4680     P_SEP=:
4682     case "$host_cpu" in
4683     aarch64|arm64)
4684         if test "$enable_ios_simulator" = "yes"; then
4685             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4686         fi
4687         ;;
4688     *)
4689         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4690         ;;
4691     esac
4692     CPUNAME=AARCH64
4693     RTL_ARCH=AARCH64
4694     PLATFORMID=ios_arm64
4695     ;;
4697 dragonfly*)
4698     COM=GCC
4699     USING_X11=TRUE
4700     OS=DRAGONFLY
4701     RTL_OS=DragonFly
4702     P_SEP=:
4704     case "$host_cpu" in
4705     i*86)
4706         CPUNAME=INTEL
4707         RTL_ARCH=x86
4708         PLATFORMID=dragonfly_x86
4709         ;;
4710     x86_64)
4711         CPUNAME=X86_64
4712         RTL_ARCH=X86_64
4713         PLATFORMID=dragonfly_x86_64
4714         ;;
4715     *)
4716         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4717         ;;
4718     esac
4719     ;;
4721 freebsd*)
4722     COM=GCC
4723     USING_X11=TRUE
4724     RTL_OS=FreeBSD
4725     OS=FREEBSD
4726     P_SEP=:
4728     case "$host_cpu" in
4729     aarch64)
4730         CPUNAME=AARCH64
4731         PLATFORMID=freebsd_aarch64
4732         RTL_ARCH=AARCH64
4733         ;;
4734     i*86)
4735         CPUNAME=INTEL
4736         RTL_ARCH=x86
4737         PLATFORMID=freebsd_x86
4738         ;;
4739     x86_64|amd64)
4740         CPUNAME=X86_64
4741         RTL_ARCH=X86_64
4742         PLATFORMID=freebsd_x86_64
4743         ;;
4744     powerpc64)
4745         CPUNAME=POWERPC64
4746         RTL_ARCH=PowerPC_64
4747         PLATFORMID=freebsd_powerpc64
4748         ;;
4749     powerpc|powerpcspe)
4750         CPUNAME=POWERPC
4751         RTL_ARCH=PowerPC
4752         PLATFORMID=freebsd_powerpc
4753         ;;
4754     *)
4755         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4756         ;;
4757     esac
4758     ;;
4760 haiku*)
4761     COM=GCC
4762     USING_X11=
4763     GUIBASE=haiku
4764     RTL_OS=Haiku
4765     OS=HAIKU
4766     P_SEP=:
4768     case "$host_cpu" in
4769     i*86)
4770         CPUNAME=INTEL
4771         RTL_ARCH=x86
4772         PLATFORMID=haiku_x86
4773         ;;
4774     x86_64|amd64)
4775         CPUNAME=X86_64
4776         RTL_ARCH=X86_64
4777         PLATFORMID=haiku_x86_64
4778         ;;
4779     *)
4780         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4781         ;;
4782     esac
4783     ;;
4785 kfreebsd*)
4786     COM=GCC
4787     USING_X11=TRUE
4788     OS=LINUX
4789     RTL_OS=kFreeBSD
4790     P_SEP=:
4792     case "$host_cpu" in
4794     i*86)
4795         CPUNAME=INTEL
4796         RTL_ARCH=x86
4797         PLATFORMID=kfreebsd_x86
4798         ;;
4799     x86_64)
4800         CPUNAME=X86_64
4801         RTL_ARCH=X86_64
4802         PLATFORMID=kfreebsd_x86_64
4803         ;;
4804     *)
4805         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4806         ;;
4807     esac
4808     ;;
4810 linux-gnu*)
4811     COM=GCC
4812     USING_X11=TRUE
4813     OS=LINUX
4814     RTL_OS=Linux
4815     P_SEP=:
4817     case "$host_cpu" in
4819     aarch64)
4820         CPUNAME=AARCH64
4821         PLATFORMID=linux_aarch64
4822         RTL_ARCH=AARCH64
4823         ;;
4824     alpha)
4825         CPUNAME=AXP
4826         RTL_ARCH=ALPHA
4827         PLATFORMID=linux_alpha
4828         ;;
4829     arm*)
4830         CPUNAME=ARM
4831         EPM_FLAGS="-a arm"
4832         RTL_ARCH=ARM_EABI
4833         PLATFORMID=linux_arm_eabi
4834         case "$host_cpu" in
4835         arm*-linux)
4836             RTL_ARCH=ARM_OABI
4837             PLATFORMID=linux_arm_oabi
4838             ;;
4839         esac
4840         ;;
4841     hppa)
4842         CPUNAME=HPPA
4843         RTL_ARCH=HPPA
4844         EPM_FLAGS="-a hppa"
4845         PLATFORMID=linux_hppa
4846         ;;
4847     i*86)
4848         CPUNAME=INTEL
4849         RTL_ARCH=x86
4850         PLATFORMID=linux_x86
4851         ;;
4852     ia64)
4853         CPUNAME=IA64
4854         RTL_ARCH=IA64
4855         PLATFORMID=linux_ia64
4856         ;;
4857     mips)
4858         CPUNAME=GODSON
4859         RTL_ARCH=MIPS_EB
4860         EPM_FLAGS="-a mips"
4861         PLATFORMID=linux_mips_eb
4862         ;;
4863     mips64)
4864         CPUNAME=GODSON64
4865         RTL_ARCH=MIPS64_EB
4866         EPM_FLAGS="-a mips64"
4867         PLATFORMID=linux_mips64_eb
4868         ;;
4869     mips64el)
4870         CPUNAME=GODSON64
4871         RTL_ARCH=MIPS64_EL
4872         EPM_FLAGS="-a mips64el"
4873         PLATFORMID=linux_mips64_el
4874         ;;
4875     mipsel)
4876         CPUNAME=GODSON
4877         RTL_ARCH=MIPS_EL
4878         EPM_FLAGS="-a mipsel"
4879         PLATFORMID=linux_mips_el
4880         ;;
4881     m68k)
4882         CPUNAME=M68K
4883         RTL_ARCH=M68K
4884         PLATFORMID=linux_m68k
4885         ;;
4886     powerpc)
4887         CPUNAME=POWERPC
4888         RTL_ARCH=PowerPC
4889         PLATFORMID=linux_powerpc
4890         ;;
4891     powerpc64)
4892         CPUNAME=POWERPC64
4893         RTL_ARCH=PowerPC_64
4894         PLATFORMID=linux_powerpc64
4895         ;;
4896     powerpc64le)
4897         CPUNAME=POWERPC64
4898         RTL_ARCH=PowerPC_64_LE
4899         PLATFORMID=linux_powerpc64_le
4900         ;;
4901     sparc)
4902         CPUNAME=SPARC
4903         RTL_ARCH=SPARC
4904         PLATFORMID=linux_sparc
4905         ;;
4906     sparc64)
4907         CPUNAME=SPARC64
4908         RTL_ARCH=SPARC64
4909         PLATFORMID=linux_sparc64
4910         ;;
4911     s390)
4912         CPUNAME=S390
4913         RTL_ARCH=S390
4914         PLATFORMID=linux_s390
4915         ;;
4916     s390x)
4917         CPUNAME=S390X
4918         RTL_ARCH=S390x
4919         PLATFORMID=linux_s390x
4920         ;;
4921     x86_64)
4922         CPUNAME=X86_64
4923         RTL_ARCH=X86_64
4924         PLATFORMID=linux_x86_64
4925         ;;
4926     *)
4927         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4928         ;;
4929     esac
4930     ;;
4932 linux-android*)
4933     COM=GCC
4934     USING_X11=
4935     OS=ANDROID
4936     RTL_OS=Android
4937     P_SEP=:
4939     case "$host_cpu" in
4941     arm|armel)
4942         CPUNAME=ARM
4943         RTL_ARCH=ARM_EABI
4944         PLATFORMID=android_arm_eabi
4945         ;;
4946     aarch64)
4947         CPUNAME=AARCH64
4948         RTL_ARCH=AARCH64
4949         PLATFORMID=android_aarch64
4950         ;;
4951     i*86)
4952         CPUNAME=INTEL
4953         RTL_ARCH=x86
4954         PLATFORMID=android_x86
4955         ;;
4956     x86_64)
4957         CPUNAME=X86_64
4958         RTL_ARCH=X86_64
4959         PLATFORMID=android_x86_64
4960         ;;
4961     *)
4962         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4963         ;;
4964     esac
4965     ;;
4967 *netbsd*)
4968     COM=GCC
4969     USING_X11=TRUE
4970     OS=NETBSD
4971     RTL_OS=NetBSD
4972     P_SEP=:
4974     case "$host_cpu" in
4975     i*86)
4976         CPUNAME=INTEL
4977         RTL_ARCH=x86
4978         PLATFORMID=netbsd_x86
4979         ;;
4980     powerpc)
4981         CPUNAME=POWERPC
4982         RTL_ARCH=PowerPC
4983         PLATFORMID=netbsd_powerpc
4984         ;;
4985     sparc)
4986         CPUNAME=SPARC
4987         RTL_ARCH=SPARC
4988         PLATFORMID=netbsd_sparc
4989         ;;
4990     x86_64)
4991         CPUNAME=X86_64
4992         RTL_ARCH=X86_64
4993         PLATFORMID=netbsd_x86_64
4994         ;;
4995     *)
4996         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4997         ;;
4998     esac
4999     ;;
5001 openbsd*)
5002     COM=GCC
5003     USING_X11=TRUE
5004     OS=OPENBSD
5005     RTL_OS=OpenBSD
5006     P_SEP=:
5008     case "$host_cpu" in
5009     i*86)
5010         CPUNAME=INTEL
5011         RTL_ARCH=x86
5012         PLATFORMID=openbsd_x86
5013         ;;
5014     x86_64)
5015         CPUNAME=X86_64
5016         RTL_ARCH=X86_64
5017         PLATFORMID=openbsd_x86_64
5018         ;;
5019     *)
5020         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5021         ;;
5022     esac
5023     SOLARINC="$SOLARINC -I/usr/local/include"
5024     ;;
5026 solaris*)
5027     COM=GCC
5028     USING_X11=TRUE
5029     OS=SOLARIS
5030     RTL_OS=Solaris
5031     P_SEP=:
5033     case "$host_cpu" in
5034     i*86)
5035         CPUNAME=INTEL
5036         RTL_ARCH=x86
5037         PLATFORMID=solaris_x86
5038         ;;
5039     sparc)
5040         CPUNAME=SPARC
5041         RTL_ARCH=SPARC
5042         PLATFORMID=solaris_sparc
5043         ;;
5044     sparc64)
5045         CPUNAME=SPARC64
5046         RTL_ARCH=SPARC64
5047         PLATFORMID=solaris_sparc64
5048         ;;
5049     *)
5050         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5051         ;;
5052     esac
5053     SOLARINC="$SOLARINC -I/usr/local/include"
5054     ;;
5057     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5058     ;;
5059 esac
5061 if test "$with_x" = "no"; then
5062     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5065 DISABLE_GUI=""
5066 if test "$enable_gui" = "no"; then
5067     if test "$USING_X11" != TRUE; then
5068         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5069     fi
5070     USING_X11=
5071     DISABLE_GUI=TRUE
5072     AC_DEFINE(HAVE_FEATURE_UI,0)
5073     test_cairo=yes
5075 AC_SUBST(DISABLE_GUI)
5077 WORKDIR="${BUILDDIR}/workdir"
5078 INSTDIR="${BUILDDIR}/instdir"
5079 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5080 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5081 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5082 AC_SUBST(COM)
5083 AC_SUBST(CPUNAME)
5084 AC_SUBST(RTL_OS)
5085 AC_SUBST(RTL_ARCH)
5086 AC_SUBST(EPM_FLAGS)
5087 AC_SUBST(USING_X11)
5088 AC_SUBST([INSTDIR])
5089 AC_SUBST([INSTROOT])
5090 AC_SUBST([INSTROOTBASE])
5091 AC_SUBST(OS)
5092 AC_SUBST(P_SEP)
5093 AC_SUBST(WORKDIR)
5094 AC_SUBST(PLATFORMID)
5095 AC_SUBST(WINDOWS_X64)
5096 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5098 dnl ===================================================================
5099 dnl Test which package format to use
5100 dnl ===================================================================
5101 AC_MSG_CHECKING([which package format to use])
5102 if test -n "$with_package_format" -a "$with_package_format" != no; then
5103     for i in $with_package_format; do
5104         case "$i" in
5105         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5106             ;;
5107         *)
5108             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5109 aix - AIX software distribution
5110 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5111 deb - Debian software distribution
5112 pkg - Solaris software distribution
5113 rpm - RedHat software distribution
5115 LibreOffice additionally supports:
5116 archive - .tar.gz or .zip
5117 dmg - macOS .dmg
5118 installed - installation tree
5119 msi - Windows .msi
5120         ])
5121             ;;
5122         esac
5123     done
5124     # fakeroot is needed to ensure correct file ownerships/permissions
5125     # inside deb packages and tar archives created on Linux and Solaris.
5126     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5127         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5128         if test "$FAKEROOT" = "no"; then
5129             AC_MSG_ERROR(
5130                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5131         fi
5132     fi
5133     PKGFORMAT="$with_package_format"
5134     AC_MSG_RESULT([$PKGFORMAT])
5135 else
5136     PKGFORMAT=
5137     AC_MSG_RESULT([none])
5139 AC_SUBST(PKGFORMAT)
5141 dnl ===================================================================
5142 dnl Set up a different compiler to produce tools to run on the build
5143 dnl machine when doing cross-compilation
5144 dnl ===================================================================
5146 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5147 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5148 if test "$cross_compiling" = "yes"; then
5149     AC_MSG_CHECKING([for BUILD platform configuration])
5150     echo
5151     rm -rf CONF-FOR-BUILD config_build.mk
5152     mkdir CONF-FOR-BUILD
5153     # Here must be listed all files needed when running the configure script. In particular, also
5154     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5155     # keep them in the same order as there.
5156     (cd $SRC_ROOT && tar cf - \
5157         config.guess \
5158         bin/get_config_variables \
5159         solenv/bin/getcompver.awk \
5160         solenv/inc/langlist.mk \
5161         download.lst \
5162         config_host.mk.in \
5163         config_host_lang.mk.in \
5164         Makefile.in \
5165         bin/bffvalidator.sh.in \
5166         bin/odfvalidator.sh.in \
5167         bin/officeotron.sh.in \
5168         hardened_runtime.xcent.in \
5169         instsetoo_native/util/openoffice.lst.in \
5170         config_host/*.in \
5171         sysui/desktop/macosx/Info.plist.in) \
5172     | (cd CONF-FOR-BUILD && tar xf -)
5173     cp configure CONF-FOR-BUILD
5174     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5175     (
5176     unset COM USING_X11 OS CPUNAME
5177     unset CC CXX SYSBASE CFLAGS
5178     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5179     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5180     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5181     if test -n "$CC_FOR_BUILD"; then
5182         export CC="$CC_FOR_BUILD"
5183         CC_BASE=`first_arg_basename "$CC"`
5184     fi
5185     if test -n "$CXX_FOR_BUILD"; then
5186         export CXX="$CXX_FOR_BUILD"
5187         CXX_BASE=`first_arg_basename "$CXX"`
5188     fi
5189     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5190     cd CONF-FOR-BUILD
5192     sub_conf_opts=""
5193     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5194     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5195     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5196     if test -n "$ENABLE_JAVA"; then
5197         case "$_os" in
5198         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5199         Android)
5200             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5201             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5202             ;;
5203         *)
5204             if test -z "$with_jdk_home"; then
5205                 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.])
5206             fi
5207             ;;
5208         esac
5209     else
5210         sub_conf_opts="$sub_conf_opts --without-java"
5211     fi
5212     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5213     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5214     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5216     # Don't bother having configure look for stuff not needed for the build platform anyway
5217     ./configure \
5218         --build="$build_alias" \
5219         --disable-cups \
5220         --disable-firebird-sdbc \
5221         --disable-gpgmepp \
5222         --disable-gstreamer-1-0 \
5223         --disable-gtk3 \
5224         --disable-mariadb-sdbc \
5225         --disable-online-update \
5226         --disable-opencl \
5227         --disable-pdfimport \
5228         --disable-postgresql-sdbc \
5229         --disable-skia \
5230         --enable-icecream="$enable_icecream" \
5231         --without-doxygen \
5232         --without-webdav \
5233         --with-parallelism="$with_parallelism" \
5234         --with-theme="$with_theme" \
5235         --with-tls=openssl \
5236         $sub_conf_opts \
5237         --srcdir=$srcdir \
5238         2>&1 | sed -e 's/^/    /'
5239     test -f ./config_host.mk 2>/dev/null || exit
5241     # filter permitted build targets
5242     PERMITTED_BUILD_TARGETS="
5243         AVMEDIA
5244         BOOST
5245         CLUCENE
5246         DBCONNECTIVITY
5247         DESKTOP
5248         DYNLOADING
5249         EPOXY
5250         EXPAT
5251         GLM
5252         GRAPHITE
5253         HARFBUZZ
5254         ICU
5255         LCMS2
5256         LIBJPEG_TURBO
5257         LIBLANGTAG
5258         LibO
5259         LIBFFI
5260         LIBPN
5261         LIBXML2
5262         LIBXSLT
5263         MDDS
5264         NATIVE
5265         OPENSSL
5266         ORCUS
5267         PYTHON
5268         SCRIPTING
5269         ZLIB
5271     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5272     # newlined lists, to use grep as a filter
5273     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5274     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5275     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5276     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5278     cp config_host.mk ../config_build.mk
5279     cp config_host_lang.mk ../config_build_lang.mk
5280     mv config.log ../config.Build.log
5281     mkdir -p ../config_build
5282     mv config_host/*.h ../config_build
5284     # all these will get a _FOR_BUILD postfix
5285     DIRECT_FOR_BUILD_SETTINGS="
5286         CC
5287         CXX
5288         ILIB
5289         JAVA_HOME
5290         JAVAIFLAGS
5291         JDK
5292         LIBO_BIN_FOLDER
5293         LIBO_LIB_FOLDER
5294         LIBO_URE_LIB_FOLDER
5295         LIBO_URE_MISC_FOLDER
5296         OS
5297         SDKDIRNAME
5298         SYSTEM_LIBXML
5299         SYSTEM_LIBXSLT
5301     # these overwrite host config with build config
5302     OVERWRITING_SETTINGS="
5303         ANT
5304         ANT_HOME
5305         ANT_LIB
5306         HSQLDB_USE_JDBC_4_1
5307         JAVA_CLASSPATH_NOT_SET
5308         JAVA_SOURCE_VER
5309         JAVA_TARGET_VER
5310         JAVACFLAGS
5311         JAVACOMPILER
5312         JAVADOC
5313         JAVADOCISGJDOC
5315     # these need some special handling
5316     EXTRA_HANDLED_SETTINGS="
5317         INSTDIR
5318         INSTROOT
5319         PATH
5320         WORKDIR
5322     OLD_PATH=$PATH
5323     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5324     BUILD_PATH=$PATH
5325     PATH=$OLD_PATH
5327     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5328     echo "$line" >>build-config
5330     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5331         VV='$'$V
5332         VV=`eval "echo $VV"`
5333         if test -n "$VV"; then
5334             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5335             echo "$line" >>build-config
5336         fi
5337     done
5339     for V in $OVERWRITING_SETTINGS; do
5340         VV='$'$V
5341         VV=`eval "echo $VV"`
5342         if test -n "$VV"; then
5343             line=${V}='${'${V}:-$VV'}'
5344             echo "$line" >>build-config
5345         fi
5346     done
5348     for V in INSTDIR INSTROOT WORKDIR; do
5349         VV='$'$V
5350         VV=`eval "echo $VV"`
5351         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5352         if test -n "$VV"; then
5353             line="${V}_FOR_BUILD='$VV'"
5354             echo "$line" >>build-config
5355         fi
5356     done
5358     )
5359     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5360     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])
5361     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5362              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5364     eval `cat CONF-FOR-BUILD/build-config`
5366     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5368     rm -rf CONF-FOR-BUILD
5369 else
5370     OS_FOR_BUILD="$OS"
5371     CC_FOR_BUILD="$CC"
5372     CXX_FOR_BUILD="$CXX"
5373     INSTDIR_FOR_BUILD="$INSTDIR"
5374     INSTROOT_FOR_BUILD="$INSTROOT"
5375     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5376     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5377     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5378     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5379     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5380     WORKDIR_FOR_BUILD="$WORKDIR"
5382 AC_SUBST(OS_FOR_BUILD)
5383 AC_SUBST(INSTDIR_FOR_BUILD)
5384 AC_SUBST(INSTROOT_FOR_BUILD)
5385 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5386 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5387 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5388 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5389 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5390 AC_SUBST(WORKDIR_FOR_BUILD)
5391 AC_SUBST(CC_FOR_BUILD)
5392 AC_SUBST(CXX_FOR_BUILD)
5394 dnl ===================================================================
5395 dnl Check for syslog header
5396 dnl ===================================================================
5397 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5399 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5400 dnl ===================================================================
5401 AC_MSG_CHECKING([whether to turn warnings to errors])
5402 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5403     ENABLE_WERROR="TRUE"
5404     PYTHONWARNINGS="error"
5405     AC_MSG_RESULT([yes])
5406 else
5407     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5408         ENABLE_WERROR="TRUE"
5409         PYTHONWARNINGS="error"
5410         AC_MSG_RESULT([yes])
5411     else
5412         AC_MSG_RESULT([no])
5413     fi
5415 AC_SUBST(ENABLE_WERROR)
5416 AC_SUBST(PYTHONWARNINGS)
5418 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5419 dnl ===================================================================
5420 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5421 if test -z "$enable_assert_always_abort"; then
5422    if test "$ENABLE_DEBUG" = TRUE; then
5423        enable_assert_always_abort=yes
5424    else
5425        enable_assert_always_abort=no
5426    fi
5428 if test "$enable_assert_always_abort" = "yes"; then
5429     ASSERT_ALWAYS_ABORT="TRUE"
5430     AC_MSG_RESULT([yes])
5431 else
5432     ASSERT_ALWAYS_ABORT="FALSE"
5433     AC_MSG_RESULT([no])
5435 AC_SUBST(ASSERT_ALWAYS_ABORT)
5437 # Determine whether to use ooenv for the instdir installation
5438 # ===================================================================
5439 if test $_os != "WINNT" -a $_os != "Darwin"; then
5440     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5441     if test "$enable_ooenv" = "no"; then
5442         AC_MSG_RESULT([no])
5443     else
5444         ENABLE_OOENV="TRUE"
5445         AC_MSG_RESULT([yes])
5446     fi
5448 AC_SUBST(ENABLE_OOENV)
5450 if test "$USING_X11" != TRUE; then
5451     # be sure to do not mess with unneeded stuff
5452     test_randr=no
5453     test_xrender=no
5454     test_cups=no
5455     test_dbus=no
5456     build_gstreamer_1_0=no
5457     test_kf5=no
5458     test_qt5=no
5459     test_gtk3_kde5=no
5460     enable_cairo_canvas=no
5463 if test "$OS" = "HAIKU"; then
5464     enable_cairo_canvas=yes
5465     test_kf5=yes
5468 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5469     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!])
5470     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!"
5471     enable_kf5=yes
5474 if test "$test_kf5" = "yes"; then
5475     test_qt5=yes
5478 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5479     if test "$enable_qt5" = "no"; then
5480         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5481     else
5482         enable_qt5=yes
5483     fi
5486 dnl ===================================================================
5487 dnl check for cups support
5488 dnl ===================================================================
5489 ENABLE_CUPS=""
5491 if test "$enable_cups" = "no"; then
5492     test_cups=no
5495 AC_MSG_CHECKING([whether to enable CUPS support])
5496 if test "$test_cups" = "yes"; then
5497     ENABLE_CUPS="TRUE"
5498     AC_MSG_RESULT([yes])
5500     AC_MSG_CHECKING([whether cups support is present])
5501     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5502     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5503     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5504         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5505     fi
5507 else
5508     AC_MSG_RESULT([no])
5511 AC_SUBST(ENABLE_CUPS)
5513 # fontconfig checks
5514 if test "$test_fontconfig" = "yes"; then
5515     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5516     SYSTEM_FONTCONFIG=TRUE
5517     FilterLibs "${FONTCONFIG_LIBS}"
5518     FONTCONFIG_LIBS="${filteredlibs}"
5520 AC_SUBST(FONTCONFIG_CFLAGS)
5521 AC_SUBST(FONTCONFIG_LIBS)
5522 AC_SUBST([SYSTEM_FONTCONFIG])
5524 dnl whether to find & fetch external tarballs?
5525 dnl ===================================================================
5526 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5527    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5528        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5529    else
5530        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5531    fi
5533 if test -z "$TARFILE_LOCATION"; then
5534     if test -d "$SRC_ROOT/src" ; then
5535         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5536         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5537     fi
5538     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5539 else
5540     AbsolutePath "$TARFILE_LOCATION"
5541     PathFormat "${absolute_path}"
5542     TARFILE_LOCATION="${formatted_path}"
5544 AC_SUBST(TARFILE_LOCATION)
5546 AC_MSG_CHECKING([whether we want to fetch tarballs])
5547 if test "$enable_fetch_external" != "no"; then
5548     if test "$with_all_tarballs" = "yes"; then
5549         AC_MSG_RESULT([yes, all of them])
5550         DO_FETCH_TARBALLS="ALL"
5551     else
5552         AC_MSG_RESULT([yes, if we use them])
5553         DO_FETCH_TARBALLS="TRUE"
5554     fi
5555 else
5556     AC_MSG_RESULT([no])
5557     DO_FETCH_TARBALLS=
5559 AC_SUBST(DO_FETCH_TARBALLS)
5561 AC_MSG_CHECKING([whether to build help])
5562 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5563     BUILD_TYPE="$BUILD_TYPE HELP"
5564     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5565     case "$with_help" in
5566     "html")
5567         ENABLE_HTMLHELP=TRUE
5568         SCPDEFS="$SCPDEFS -DWITH_HELP"
5569         AC_MSG_RESULT([HTML])
5570         ;;
5571     "online")
5572         ENABLE_HTMLHELP=TRUE
5573         HELP_ONLINE=TRUE
5574         AC_MSG_RESULT([HTML])
5575         ;;
5576     yes)
5577         SCPDEFS="$SCPDEFS -DWITH_HELP"
5578         AC_MSG_RESULT([yes])
5579         ;;
5580     *)
5581         AC_MSG_ERROR([Unknown --with-help=$with_help])
5582         ;;
5583     esac
5584 else
5585     AC_MSG_RESULT([no])
5587 AC_SUBST([ENABLE_HTMLHELP])
5588 AC_SUBST([HELP_ONLINE])
5590 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5591 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5592     BUILD_TYPE="$BUILD_TYPE HELP"
5593     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5594     case "$with_omindex" in
5595     "server")
5596         ENABLE_HTMLHELP=TRUE
5597         HELP_ONLINE=TRUE
5598         HELP_OMINDEX_PAGE=TRUE
5599         AC_MSG_RESULT([SERVER])
5600         ;;
5601     "noxap")
5602         ENABLE_HTMLHELP=TRUE
5603         HELP_ONLINE=TRUE
5604         HELP_OMINDEX_PAGE=FALSE
5605         AC_MSG_RESULT([NOXAP])
5606         ;;
5607     *)
5608         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5609         ;;
5610     esac
5611 else
5612     HELP_OMINDEX_PAGE=FALSE
5613     AC_MSG_RESULT([no])
5615 AC_SUBST([ENABLE_HTMLHELP])
5616 AC_SUBST([HELP_OMINDEX_PAGE])
5617 AC_SUBST([HELP_ONLINE])
5620 dnl Test whether to include MySpell dictionaries
5621 dnl ===================================================================
5622 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5623 if test "$with_myspell_dicts" = "yes"; then
5624     AC_MSG_RESULT([yes])
5625     WITH_MYSPELL_DICTS=TRUE
5626     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5627     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5628 else
5629     AC_MSG_RESULT([no])
5630     WITH_MYSPELL_DICTS=
5632 AC_SUBST(WITH_MYSPELL_DICTS)
5634 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5635 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5636     if test "$with_system_dicts" = yes; then
5637         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5638     fi
5639     with_system_dicts=no
5642 AC_MSG_CHECKING([whether to use dicts from external paths])
5643 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5644     AC_MSG_RESULT([yes])
5645     SYSTEM_DICTS=TRUE
5646     AC_MSG_CHECKING([for spelling dictionary directory])
5647     if test -n "$with_external_dict_dir"; then
5648         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5649     else
5650         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5651         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5652             DICT_SYSTEM_DIR=file:///usr/share/myspell
5653         fi
5654     fi
5655     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5656     AC_MSG_CHECKING([for hyphenation patterns directory])
5657     if test -n "$with_external_hyph_dir"; then
5658         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5659     else
5660         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5661     fi
5662     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5663     AC_MSG_CHECKING([for thesaurus directory])
5664     if test -n "$with_external_thes_dir"; then
5665         THES_SYSTEM_DIR=file://$with_external_thes_dir
5666     else
5667         THES_SYSTEM_DIR=file:///usr/share/mythes
5668     fi
5669     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5670 else
5671     AC_MSG_RESULT([no])
5672     SYSTEM_DICTS=
5674 AC_SUBST(SYSTEM_DICTS)
5675 AC_SUBST(DICT_SYSTEM_DIR)
5676 AC_SUBST(HYPH_SYSTEM_DIR)
5677 AC_SUBST(THES_SYSTEM_DIR)
5679 dnl ===================================================================
5680 dnl Precompiled headers.
5681 ENABLE_PCH=""
5682 AC_MSG_CHECKING([whether to enable pch feature])
5683 if test -z "$enable_pch"; then
5684     if test "$_os" = "WINNT"; then
5685         # Enabled by default on Windows.
5686         enable_pch=yes
5687     else
5688         enable_pch=no
5689     fi
5691 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5692     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5694 if test "$enable_pch" = "system"; then
5695     ENABLE_PCH="1"
5696     AC_MSG_RESULT([yes (system headers)])
5697 elif test "$enable_pch" = "base"; then
5698     ENABLE_PCH="2"
5699     AC_MSG_RESULT([yes (system and base headers)])
5700 elif test "$enable_pch" = "normal"; then
5701     ENABLE_PCH="3"
5702     AC_MSG_RESULT([yes (normal)])
5703 elif test "$enable_pch" = "full"; then
5704     ENABLE_PCH="4"
5705     AC_MSG_RESULT([yes (full)])
5706 elif test "$enable_pch" = "yes"; then
5707     # Pick a suitable default.
5708     if test "$GCC" = "yes"; then
5709         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5710         # while making the PCHs larger and rebuilds more likely.
5711         ENABLE_PCH="2"
5712         AC_MSG_RESULT([yes (system and base headers)])
5713     else
5714         # With MSVC the highest level makes a significant difference,
5715         # and it was the default when there used to be no PCH levels.
5716         ENABLE_PCH="4"
5717         AC_MSG_RESULT([yes (full)])
5718     fi
5719 elif test "$enable_pch" = "no"; then
5720     AC_MSG_RESULT([no])
5721 else
5722     AC_MSG_ERROR([Unknown value for --enable-pch])
5724 AC_SUBST(ENABLE_PCH)
5725 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5726 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5727     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5728     if test "$CCACHE_BIN" != "not found"; then
5729         AC_MSG_CHECKING([ccache version])
5730         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5731         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5732         AC_MSG_RESULT([$CCACHE_VERSION])
5733         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5734         if test "$CCACHE_NUMVER" -gt "030701"; then
5735             AC_MSG_RESULT([yes])
5736         else
5737             AC_MSG_RESULT([no (not newer than 3.7.1)])
5738             CCACHE_DEPEND_MODE=
5739         fi
5740     fi
5743 PCH_INSTANTIATE_TEMPLATES=
5744 if test -n "$ENABLE_PCH"; then
5745     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5746     save_CFLAGS=$CFLAGS
5747     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5748     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5749     CFLAGS=$save_CFLAGS
5750     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5751         AC_MSG_RESULT(yes)
5752     else
5753         AC_MSG_RESULT(no)
5754     fi
5756 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5758 BUILDING_PCH_WITH_OBJ=
5759 if test -n "$ENABLE_PCH"; then
5760     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5761     save_CFLAGS=$CFLAGS
5762     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5763     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5764     CFLAGS=$save_CFLAGS
5765     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5766         AC_MSG_RESULT(yes)
5767     else
5768         AC_MSG_RESULT(no)
5769     fi
5771 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5773 PCH_CODEGEN=
5774 PCH_NO_CODEGEN=
5775 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5776     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5777     save_CFLAGS=$CFLAGS
5778     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5779     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5780         [
5781         PCH_CODEGEN="-fpch-codegen"
5782         PCH_NO_CODEGEN="-fno-pch-codegen"
5783         ],[])
5784     CFLAGS=$save_CFLAGS
5785     if test -n "$PCH_CODEGEN"; then
5786         AC_MSG_RESULT(yes)
5787     else
5788         AC_MSG_RESULT(no)
5789     fi
5791 AC_SUBST(PCH_CODEGEN)
5792 AC_SUBST(PCH_NO_CODEGEN)
5793 PCH_DEBUGINFO=
5794 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5795     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5796     save_CFLAGS=$CFLAGS
5797     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5798     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5799     CFLAGS=$save_CFLAGS
5800     if test -n "$PCH_DEBUGINFO"; then
5801         AC_MSG_RESULT(yes)
5802     else
5803         AC_MSG_RESULT(no)
5804     fi
5806 AC_SUBST(PCH_DEBUGINFO)
5808 TAB=`printf '\t'`
5810 AC_MSG_CHECKING([the GNU Make version])
5811 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5812 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5813 if test "$_make_longver" -ge "038200"; then
5814     AC_MSG_RESULT([$GNUMAKE $_make_version])
5816 elif test "$_make_longver" -ge "038100"; then
5817     if test "$build_os" = "cygwin"; then
5818         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5819     fi
5820     AC_MSG_RESULT([$GNUMAKE $_make_version])
5822     dnl ===================================================================
5823     dnl Search all the common names for sha1sum
5824     dnl ===================================================================
5825     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5826     if test -z "$SHA1SUM"; then
5827         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5828     elif test "$SHA1SUM" = "openssl"; then
5829         SHA1SUM="openssl sha1"
5830     fi
5831     AC_MSG_CHECKING([for GNU Make bug 20033])
5832     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5833     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5834 A := \$(wildcard *.a)
5836 .PHONY: all
5837 all: \$(A:.a=.b)
5838 <TAB>@echo survived bug20033.
5840 .PHONY: setup
5841 setup:
5842 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5844 define d1
5845 @echo lala \$(1)
5846 @sleep 1
5847 endef
5849 define d2
5850 @echo tyty \$(1)
5851 @sleep 1
5852 endef
5854 %.b : %.a
5855 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5856 <TAB>\$(call d1,\$(CHECKSUM)),\
5857 <TAB>\$(call d2,\$(CHECKSUM)))
5859     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5860         no_parallelism_make="YES"
5861         AC_MSG_RESULT([yes, disable parallelism])
5862     else
5863         AC_MSG_RESULT([no, keep parallelism enabled])
5864     fi
5865     rm -rf $TESTGMAKEBUG20033
5866 else
5867     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5870 # find if gnumake support file function
5871 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5872 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5873 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5874     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5876 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5877 \$(file >test.txt,Success )
5879 .PHONY: all
5880 all:
5881 <TAB>@cat test.txt
5884 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5885 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5886     HAVE_GNUMAKE_FILE_FUNC=TRUE
5887     AC_MSG_RESULT([yes])
5888 else
5889     AC_MSG_RESULT([no])
5891 rm -rf $TESTGMAKEFILEFUNC
5892 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5893 AC_SUBST(GNUMAKE_WIN_NATIVE)
5895 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5896 STALE_MAKE=
5897 if test "$_make_ver_check" = ""; then
5898    STALE_MAKE=TRUE
5901 HAVE_LD_HASH_STYLE=FALSE
5902 WITH_LINKER_HASH_STYLE=
5903 AC_MSG_CHECKING([for --hash-style gcc linker support])
5904 if test "$GCC" = "yes"; then
5905     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5906         hash_styles="gnu sysv"
5907     elif test "$with_linker_hash_style" = "no"; then
5908         hash_styles=
5909     else
5910         hash_styles="$with_linker_hash_style"
5911     fi
5913     for hash_style in $hash_styles; do
5914         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5915         hash_style_ldflags_save=$LDFLAGS
5916         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5918         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5919             [
5920 #include <stdio.h>
5921             ],[
5922 printf ("");
5923             ])],
5924             [
5925                   HAVE_LD_HASH_STYLE=TRUE
5926                   WITH_LINKER_HASH_STYLE=$hash_style
5927             ],
5928             [HAVE_LD_HASH_STYLE=FALSE],
5929             [HAVE_LD_HASH_STYLE=FALSE])
5930         LDFLAGS=$hash_style_ldflags_save
5931     done
5933     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5934         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5935     else
5936         AC_MSG_RESULT( no )
5937     fi
5938     LDFLAGS=$hash_style_ldflags_save
5939 else
5940     AC_MSG_RESULT( no )
5942 AC_SUBST(HAVE_LD_HASH_STYLE)
5943 AC_SUBST(WITH_LINKER_HASH_STYLE)
5945 dnl ===================================================================
5946 dnl Check whether there's a Perl version available.
5947 dnl ===================================================================
5948 if test -z "$with_perl_home"; then
5949     AC_PATH_PROG(PERL, perl)
5950 else
5951     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5952     _perl_path="$with_perl_home/bin/perl"
5953     if test -x "$_perl_path"; then
5954         PERL=$_perl_path
5955     else
5956         AC_MSG_ERROR([$_perl_path not found])
5957     fi
5960 dnl ===================================================================
5961 dnl Testing for Perl version 5 or greater.
5962 dnl $] is the Perl version variable, it is returned as an integer
5963 dnl ===================================================================
5964 if test "$PERL"; then
5965     AC_MSG_CHECKING([the Perl version])
5966     ${PERL} -e "exit($]);"
5967     _perl_version=$?
5968     if test "$_perl_version" -lt 5; then
5969         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5970     fi
5971     AC_MSG_RESULT([Perl $_perl_version])
5972 else
5973     AC_MSG_ERROR([Perl not found, install Perl 5])
5976 dnl ===================================================================
5977 dnl Testing for required Perl modules
5978 dnl ===================================================================
5980 AC_MSG_CHECKING([for required Perl modules])
5981 perl_use_string="use Cwd ; use Digest::MD5"
5982 if test "$_os" = "WINNT"; then
5983     if test -n "$PKGFORMAT"; then
5984         for i in $PKGFORMAT; do
5985             case "$i" in
5986             msi)
5987                 # for getting fonts versions to use in MSI
5988                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5989                 ;;
5990             esac
5991         done
5992     fi
5994 if test "$with_system_hsqldb" = "yes"; then
5995     perl_use_string="$perl_use_string ; use Archive::Zip"
5997 if test "$with_system_openssl" != "yes"; then
5998     # OpenSSL needs that to build
5999     perl_use_string="$perl_use_string ; use FindBin"
6001 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6002     AC_MSG_RESULT([all modules found])
6003 else
6004     AC_MSG_RESULT([failed to find some modules])
6005     # Find out which modules are missing.
6006     for i in $perl_use_string; do
6007         if test "$i" != "use" -a "$i" != ";"; then
6008             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6009                 missing_perl_modules="$missing_perl_modules $i"
6010             fi
6011         fi
6012     done
6013     AC_MSG_ERROR([
6014     The missing Perl modules are: $missing_perl_modules
6015     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6018 dnl ===================================================================
6019 dnl Check for pkg-config
6020 dnl ===================================================================
6021 if test "$_os" != "WINNT"; then
6022     PKG_PROG_PKG_CONFIG
6025 if test "$_os" != "WINNT"; then
6027     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6028     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6029     # explicitly. Or put /path/to/compiler in PATH yourself.
6031     # Use wrappers for LTO
6032     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6033         AC_CHECK_TOOL(AR,gcc-ar)
6034         AC_CHECK_TOOL(NM,gcc-nm)
6035         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6036     else
6037         AC_CHECK_TOOL(AR,ar)
6038         AC_CHECK_TOOL(NM,nm)
6039         AC_CHECK_TOOL(RANLIB,ranlib)
6040     fi
6041     AC_CHECK_TOOL(OBJDUMP,objdump)
6042     AC_CHECK_TOOL(READELF,readelf)
6043     AC_CHECK_TOOL(STRIP,strip)
6044     if test "$_os" = "WINNT"; then
6045         AC_CHECK_TOOL(DLLTOOL,dlltool)
6046         AC_CHECK_TOOL(WINDRES,windres)
6047     fi
6049 AC_SUBST(AR)
6050 AC_SUBST(DLLTOOL)
6051 AC_SUBST(NM)
6052 AC_SUBST(OBJDUMP)
6053 AC_SUBST(PKG_CONFIG)
6054 AC_SUBST(RANLIB)
6055 AC_SUBST(READELF)
6056 AC_SUBST(STRIP)
6057 AC_SUBST(WINDRES)
6059 dnl ===================================================================
6060 dnl pkg-config checks on macOS
6061 dnl ===================================================================
6063 if test $_os = Darwin; then
6064     AC_MSG_CHECKING([for bogus pkg-config])
6065     if test -n "$PKG_CONFIG"; then
6066         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6067             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6068         else
6069             if test "$enable_bogus_pkg_config" = "yes"; then
6070                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6071             else
6072                 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.])
6073             fi
6074         fi
6075     else
6076         AC_MSG_RESULT([no, good])
6077     fi
6080 find_csc()
6082     # Return value: $csctest
6084     unset csctest
6086     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6087     if test -n "$regvalue"; then
6088         csctest=$regvalue
6089         return
6090     fi
6093 find_al()
6095     # Return value: $altest
6097     unset altest
6099     # We need this check to detect 4.6.1 or above.
6100     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6101         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6102         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6103             altest=$regvalue
6104             return
6105         fi
6106     done
6108     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6109         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6110         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6111             altest=$regvalue
6112             return
6113         fi
6114     done
6117 find_dotnetsdk46()
6119     unset frametest
6121     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6122         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6123         if test -n "$regvalue"; then
6124             frametest=$regvalue
6125             return
6126         fi
6127     done
6130 find_winsdk_version()
6132     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6133     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6135     unset winsdktest winsdkbinsubdir winsdklibsubdir
6137     case "$1" in
6138     8.0|8.0A)
6139         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6140         if test -n "$regvalue"; then
6141             winsdktest=$regvalue
6142             winsdklibsubdir=win8
6143             return
6144         fi
6145         ;;
6146     8.1|8.1A)
6147         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6148         if test -n "$regvalue"; then
6149             winsdktest=$regvalue
6150             winsdklibsubdir=winv6.3
6151             return
6152         fi
6153         ;;
6154     10.0)
6155         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6156         if test -n "$regvalue"; then
6157             winsdktest=$regvalue
6158             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6159             if test -n "$regvalue"; then
6160                 winsdkbinsubdir="$regvalue".0
6161                 winsdklibsubdir=$winsdkbinsubdir
6162                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6163                 local tmppath_unix=$(cygpath -u "$tmppath")
6164                 # test exist the SDK path
6165                 if test -d "$tmppath_unix"; then
6166                    # when path is convertible to a short path then path is okay
6167                    cygpath -d "$tmppath" >/dev/null 2>&1
6168                    if test $? -ne 0; then
6169                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6170                    fi
6171                 else
6172                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6173                 fi
6174             fi
6175             return
6176         fi
6177         ;;
6178     esac
6181 find_winsdk()
6183     # Return value: From find_winsdk_version
6185     unset winsdktest
6187     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6188         find_winsdk_version $ver
6189         if test -n "$winsdktest"; then
6190             return
6191         fi
6192     done
6195 find_msms()
6197     # Return value: $msmdir
6199     AC_MSG_CHECKING([for MSVC merge modules directory])
6200     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6201     local my_msm_dir
6203     case "$VCVER" in
6204         160)
6205         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6206         ;;
6207     esac
6208     for f in $my_msm_files; do
6209         echo "$as_me:$LINENO: searching for $f" >&5
6210     done
6212     msmdir=
6213     for ver in 14.0 15.0; do
6214         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6215         if test -n "$regvalue"; then
6216             for f in ${my_msm_files}; do
6217                 if test -e "$regvalue/${f}"; then
6218                     msmdir=$regvalue
6219                     break
6220                 fi
6221             done
6222         fi
6223     done
6224     dnl Is the following fallback really necessary, or was it added in response
6225     dnl to never having started Visual Studio on a given machine, so the
6226     dnl registry keys checked above had presumably not yet been created?
6227     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6228     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6229     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6230     dnl expanding to "C:\Program Files\Common Files"), which would need
6231     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6232     dnl obtain its value from cygwin:
6233     if test -z "$msmdir"; then
6234         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6235         for f in ${my_msm_files}; do
6236             if test -e "$my_msm_dir/${f}"; then
6237                 msmdir=$my_msm_dir
6238             fi
6239         done
6240     fi
6242     dnl Starting from MSVC 15.0, merge modules are located in different directory
6243     case "$VCVER" in
6244     160)
6245         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6246             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6247             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6248             for f in ${my_msm_files}; do
6249                 if test -e "$my_msm_dir/${f}"; then
6250                     msmdir=$my_msm_dir
6251                     break
6252                 fi
6253             done
6254         done
6255         ;;
6256     esac
6258     if test -n "$msmdir"; then
6259         msmdir=`cygpath -m "$msmdir"`
6260         AC_MSG_RESULT([$msmdir])
6261     else
6262         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6263             AC_MSG_FAILURE([not found])
6264         else
6265             AC_MSG_WARN([not found (check config.log)])
6266             add_warning "MSM none of ${my_msm_files} found"
6267         fi
6268     fi
6271 find_msvc_x64_dlls()
6273     # Return value: $msvcdllpath, $msvcdlls
6275     AC_MSG_CHECKING([for MSVC x64 DLL path])
6276     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6277     case "$VCVER" in
6278     160)
6279         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6280             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6281             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6282                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6283                 break
6284             fi
6285             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6286             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6287                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6288                 break
6289             fi
6290         done
6291         ;;
6292     esac
6293     AC_MSG_RESULT([$msvcdllpath])
6294     AC_MSG_CHECKING([for MSVC x64 DLLs])
6295     msvcdlls="msvcp140.dll vcruntime140.dll"
6296     for dll in $msvcdlls; do
6297         if ! test -f "$msvcdllpath/$dll"; then
6298             AC_MSG_FAILURE([missing $dll])
6299         fi
6300     done
6301     AC_MSG_RESULT([found all ($msvcdlls)])
6304 dnl =========================================
6305 dnl Check for the Windows  SDK.
6306 dnl =========================================
6307 if test "$_os" = "WINNT"; then
6308     AC_MSG_CHECKING([for Windows SDK])
6309     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6310         find_winsdk
6311         WINDOWS_SDK_HOME=$winsdktest
6313         # normalize if found
6314         if test -n "$WINDOWS_SDK_HOME"; then
6315             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6316             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6317         fi
6319         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6320     fi
6322     if test -n "$WINDOWS_SDK_HOME"; then
6323         # Remove a possible trailing backslash
6324         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6326         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6327              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6328              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6329             have_windows_sdk_headers=yes
6330         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6331              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6332              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6333             have_windows_sdk_headers=yes
6334         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6335              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6336              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6337             have_windows_sdk_headers=yes
6338         else
6339             have_windows_sdk_headers=no
6340         fi
6342         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6343             have_windows_sdk_libs=yes
6344         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6345             have_windows_sdk_libs=yes
6346         else
6347             have_windows_sdk_libs=no
6348         fi
6350         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6351             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6352 the  Windows SDK are installed.])
6353         fi
6354     fi
6356     if test -z "$WINDOWS_SDK_HOME"; then
6357         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6358     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6359         WINDOWS_SDK_VERSION=80
6360         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6361     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6362         WINDOWS_SDK_VERSION=81
6363         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6364     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6365         WINDOWS_SDK_VERSION=10
6366         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6367     else
6368         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6369     fi
6370     PathFormat "$WINDOWS_SDK_HOME"
6371     WINDOWS_SDK_HOME="$formatted_path"
6372     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6373     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6374         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6375         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6376             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6377         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6378             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6379         fi
6380     fi
6382     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6383     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6384     dnl but not in v8.0), so allow this to be overridden with a
6385     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6386     dnl and configuration error if no WiLangId.vbs is found would arguably be
6387     dnl better, but I do not know under which conditions exactly it is needed by
6388     dnl msiglobal.pm:
6389     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6390         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6391         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6392         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6393             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6394             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6395         fi
6396         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6397             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6398             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6399         fi
6400         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6401             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6402             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6403         fi
6404     fi
6405     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6406         if test -n "$with_package_format" -a "$with_package_format" != no; then
6407             for i in "$with_package_format"; do
6408                 if test "$i" = "msi"; then
6409                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6410                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6411                     fi
6412                 fi
6413             done
6414         fi
6415     fi
6417 AC_SUBST(WINDOWS_SDK_HOME)
6418 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6419 AC_SUBST(WINDOWS_SDK_VERSION)
6420 AC_SUBST(WINDOWS_SDK_WILANGID)
6422 if test "$build_os" = "cygwin"; then
6423     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6424     dnl dir, it also determines that dir's path w/o an arch segment if any,
6425     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6426     AC_MSG_CHECKING([for midl.exe])
6428     find_winsdk
6429     if test -n "$winsdkbinsubdir" \
6430         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6431     then
6432         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6433         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6434     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6435         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6436         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6437     elif test -f "$winsdktest/Bin/midl.exe"; then
6438         MIDL_PATH=$winsdktest/Bin
6439         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6440     fi
6441     if test ! -f "$MIDL_PATH/midl.exe"; then
6442         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6443     else
6444         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6445     fi
6447     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6448     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6450     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6451          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6452          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6453          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6454     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6455          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6456          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6457          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6458     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6459          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6460          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6461          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6462     else
6463         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6464     fi
6466     dnl Check csc.exe
6467     AC_MSG_CHECKING([for csc.exe])
6468     find_csc
6469     if test -f "$csctest/csc.exe"; then
6470         CSC_PATH="$csctest"
6471     fi
6472     if test ! -f "$CSC_PATH/csc.exe"; then
6473         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6474     else
6475         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6476     fi
6478     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6480     dnl Check al.exe
6481     AC_MSG_CHECKING([for al.exe])
6482     find_winsdk
6483     if test -n "$winsdkbinsubdir" \
6484         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6485     then
6486         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6487     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6488         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6489     elif test -f "$winsdktest/Bin/al.exe"; then
6490         AL_PATH="$winsdktest/Bin"
6491     fi
6493     if test -z "$AL_PATH"; then
6494         find_al
6495         if test -f "$altest/bin/al.exe"; then
6496             AL_PATH="$altest/bin"
6497         elif test -f "$altest/al.exe"; then
6498             AL_PATH="$altest"
6499         fi
6500     fi
6501     if test ! -f "$AL_PATH/al.exe"; then
6502         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6503     else
6504         AC_MSG_RESULT([$AL_PATH/al.exe])
6505     fi
6507     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6509     dnl Check mscoree.lib / .NET Framework dir
6510     AC_MSG_CHECKING(.NET Framework)
6511     find_dotnetsdk46
6512     PathFormat "$frametest"
6513     frametest="$formatted_path"
6514     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6515         DOTNET_FRAMEWORK_HOME="$frametest"
6516     else
6517         find_winsdk
6518         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6519             DOTNET_FRAMEWORK_HOME="$winsdktest"
6520         fi
6521     fi
6522     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
6523         AC_MSG_ERROR([mscoree.lib not found])
6524     fi
6525     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6527     PathFormat "$MIDL_PATH"
6528     MIDL_PATH="$formatted_path"
6530     PathFormat "$AL_PATH"
6531     AL_PATH="$formatted_path"
6533     PathFormat "$DOTNET_FRAMEWORK_HOME"
6534     DOTNET_FRAMEWORK_HOME="$formatted_path"
6536     PathFormat "$CSC_PATH"
6537     CSC_PATH="$formatted_path"
6540 dnl ===================================================================
6541 dnl Testing for C++ compiler and version...
6542 dnl ===================================================================
6544 if test "$_os" != "WINNT"; then
6545     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6546     save_CXXFLAGS=$CXXFLAGS
6547     AC_PROG_CXX
6548     CXXFLAGS=$save_CXXFLAGS
6549     if test -z "$CXX_BASE"; then
6550         CXX_BASE=`first_arg_basename "$CXX"`
6551     fi
6554 dnl check for GNU C++ compiler version
6555 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6556     AC_MSG_CHECKING([the GNU C++ compiler version])
6558     _gpp_version=`$CXX -dumpversion`
6559     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6561     if test "$_gpp_majmin" -lt "700"; then
6562         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6563     else
6564         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6565     fi
6567     dnl see https://code.google.com/p/android/issues/detail?id=41770
6568         glibcxx_threads=no
6569         AC_LANG_PUSH([C++])
6570         AC_REQUIRE_CPP
6571         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6572         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6573             #include <bits/c++config.h>]],[[
6574             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6575             && !defined(_GLIBCXX__PTHREADS) \
6576             && !defined(_GLIBCXX_HAS_GTHREADS)
6577             choke me
6578             #endif
6579         ]])],[AC_MSG_RESULT([yes])
6580         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6581         AC_LANG_POP([C++])
6582         if test $glibcxx_threads = yes; then
6583             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6584         fi
6586 AC_SUBST(BOOST_CXXFLAGS)
6589 # prefx CXX with ccache if needed
6591 if test "$CCACHE" != ""; then
6592     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6593     AC_LANG_PUSH([C++])
6594     save_CXXFLAGS=$CXXFLAGS
6595     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6596     dnl an empty program will do, we're checking the compiler flags
6597     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6598                       [use_ccache=yes], [use_ccache=no])
6599     if test $use_ccache = yes; then
6600         AC_MSG_RESULT([yes])
6601     else
6602         CXX="$CCACHE $CXX"
6603         CXX_BASE="ccache $CXX_BASE"
6604         AC_MSG_RESULT([no])
6605     fi
6606     CXXFLAGS=$save_CXXFLAGS
6607     AC_LANG_POP([C++])
6610 dnl ===================================================================
6611 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6612 dnl ===================================================================
6614 if test "$_os" != "WINNT"; then
6615     AC_PROG_CXXCPP
6617     dnl Check whether there's a C pre-processor.
6618     AC_PROG_CPP
6622 dnl ===================================================================
6623 dnl Find integral type sizes and alignments
6624 dnl ===================================================================
6626 if test "$_os" != "WINNT"; then
6628 if test "$_os" = "iOS"; then
6629     AC_MSG_CHECKING([iOS setting sizes long, short, int, long long, double, voidp])
6630     ac_cv_sizeof_long=8
6631     ac_cv_sizeof_short=2
6632     ac_cv_sizeof_int=4
6633     ac_cv_sizeof_long_long=8
6634     ac_cv_sizeof_double=8
6635     ac_cv_sizeof_voidp=8
6636 else
6637     AC_CHECK_SIZEOF(long)
6638     AC_CHECK_SIZEOF(short)
6639     AC_CHECK_SIZEOF(int)
6640     AC_CHECK_SIZEOF(long long)
6641     AC_CHECK_SIZEOF(double)
6642     AC_CHECK_SIZEOF(void*)
6645     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6646     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6647     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6648     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6649     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6651     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6652     m4_pattern_allow([AC_CHECK_ALIGNOF])
6653     m4_ifdef([AC_CHECK_ALIGNOF],
6654         [
6655             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6656             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6657             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6658             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6659         ],
6660         [
6661             case "$_os-$host_cpu" in
6662             Linux-i686)
6663                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6664                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6665                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6666                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6667                 ;;
6668             Linux-x86_64)
6669                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6670                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6671                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6672                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6673                 ;;
6674             *)
6675                 if test -z "$ac_cv_alignof_short" -o \
6676                         -z "$ac_cv_alignof_int" -o \
6677                         -z "$ac_cv_alignof_long" -o \
6678                         -z "$ac_cv_alignof_double"; then
6679                    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.])
6680                 fi
6681                 ;;
6682             esac
6683         ])
6685     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6686     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6687     if test $ac_cv_sizeof_long -eq 8; then
6688         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6689     elif test $ac_cv_sizeof_double -eq 8; then
6690         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6691     else
6692         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6693     fi
6695     dnl Check for large file support
6696     AC_SYS_LARGEFILE
6697     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6698         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6699     fi
6700     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6701         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6702     fi
6703 else
6704     # Hardcode for MSVC
6705     SAL_TYPES_SIZEOFSHORT=2
6706     SAL_TYPES_SIZEOFINT=4
6707     SAL_TYPES_SIZEOFLONG=4
6708     SAL_TYPES_SIZEOFLONGLONG=8
6709     if test $WIN_HOST_BITS -eq 32; then
6710         SAL_TYPES_SIZEOFPOINTER=4
6711     else
6712         SAL_TYPES_SIZEOFPOINTER=8
6713     fi
6714     SAL_TYPES_ALIGNMENT2=2
6715     SAL_TYPES_ALIGNMENT4=4
6716     SAL_TYPES_ALIGNMENT8=8
6717     LFS_CFLAGS=''
6719 AC_SUBST(LFS_CFLAGS)
6721 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6722 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6723 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6724 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6725 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6726 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6727 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6728 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6730 dnl ===================================================================
6731 dnl Check whether to enable runtime optimizations
6732 dnl ===================================================================
6733 ENABLE_RUNTIME_OPTIMIZATIONS=
6734 AC_MSG_CHECKING([whether to enable runtime optimizations])
6735 if test -z "$enable_runtime_optimizations"; then
6736     for i in $CC; do
6737         case $i in
6738         -fsanitize=*)
6739             enable_runtime_optimizations=no
6740             break
6741             ;;
6742         esac
6743     done
6745 if test "$enable_runtime_optimizations" != no; then
6746     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6747     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6748     AC_MSG_RESULT([yes])
6749 else
6750     AC_MSG_RESULT([no])
6752 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6754 dnl ===================================================================
6755 dnl Check if valgrind headers are available
6756 dnl ===================================================================
6757 ENABLE_VALGRIND=
6758 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6759     prev_cppflags=$CPPFLAGS
6760     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6761     # or where does it come from?
6762     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6763     AC_CHECK_HEADER([valgrind/valgrind.h],
6764         [ENABLE_VALGRIND=TRUE])
6765     CPPFLAGS=$prev_cppflags
6767 AC_SUBST([ENABLE_VALGRIND])
6768 if test -z "$ENABLE_VALGRIND"; then
6769     if test "$with_valgrind" = yes; then
6770         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6771     fi
6772     VALGRIND_CFLAGS=
6774 AC_SUBST([VALGRIND_CFLAGS])
6777 dnl ===================================================================
6778 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6779 dnl ===================================================================
6781 # We need at least the sys/sdt.h include header.
6782 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6783 if test "$SDT_H_FOUND" = "TRUE"; then
6784     # Found sys/sdt.h header, now make sure the c++ compiler works.
6785     # Old g++ versions had problems with probes in constructors/destructors.
6786     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6787     AC_LANG_PUSH([C++])
6788     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6789     #include <sys/sdt.h>
6790     class ProbeClass
6791     {
6792     private:
6793       int& ref;
6794       const char *name;
6796     public:
6797       ProbeClass(int& v, const char *n) : ref(v), name(n)
6798       {
6799         DTRACE_PROBE2(_test_, cons, name, ref);
6800       }
6802       void method(int min)
6803       {
6804         DTRACE_PROBE3(_test_, meth, name, ref, min);
6805         ref -= min;
6806       }
6808       ~ProbeClass()
6809       {
6810         DTRACE_PROBE2(_test_, dest, name, ref);
6811       }
6812     };
6813     ]],[[
6814     int i = 64;
6815     DTRACE_PROBE1(_test_, call, i);
6816     ProbeClass inst = ProbeClass(i, "call");
6817     inst.method(24);
6818     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6819           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6820     AC_LANG_POP([C++])
6822 AC_CONFIG_HEADERS([config_host/config_probes.h])
6824 dnl ===================================================================
6825 dnl GCC features
6826 dnl ===================================================================
6827 HAVE_GCC_STACK_CLASH_PROTECTION=
6828 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6829     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6830     save_CFLAGS=$CFLAGS
6831     CFLAGS="$CFLAGS -fstack-clash-protection"
6832     AC_LINK_IFELSE(
6833         [AC_LANG_PROGRAM(, [[return 0;]])],
6834         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6835         [AC_MSG_RESULT([no])])
6836     CFLAGS=$save_CFLAGS
6838     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6839     save_CFLAGS=$CFLAGS
6840     CFLAGS="$CFLAGS -Werror -mno-avx"
6841     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6842     CFLAGS=$save_CFLAGS
6843     if test "$HAVE_GCC_AVX" = "TRUE"; then
6844         AC_MSG_RESULT([yes])
6845     else
6846         AC_MSG_RESULT([no])
6847     fi
6849     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6850     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6851     int v = 0;
6852     if (__sync_add_and_fetch(&v, 1) != 1 ||
6853         __sync_sub_and_fetch(&v, 1) != 0)
6854         return 1;
6855     __sync_synchronize();
6856     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6857         v != 1)
6858         return 1;
6859     return 0;
6860 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6861     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6862         AC_MSG_RESULT([yes])
6863         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6864     else
6865         AC_MSG_RESULT([no])
6866     fi
6868     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6869     AC_LANG_PUSH([C++])
6870     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6871             #include <cstddef>
6872             #include <cxxabi.h>
6873             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6874         ])], [
6875             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6876             AC_MSG_RESULT([yes])
6877         ], [AC_MSG_RESULT([no])])
6878     AC_LANG_POP([C++])
6880     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6881     AC_LANG_PUSH([C++])
6882     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6883             #include <cstddef>
6884             #include <cxxabi.h>
6885             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6886         ])], [
6887             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6888             AC_MSG_RESULT([yes])
6889         ], [AC_MSG_RESULT([no])])
6890     AC_LANG_POP([C++])
6892     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6893     AC_LANG_PUSH([C++])
6894     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6895             #include <cxxabi.h>
6896             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6897         ])], [
6898             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6899             AC_MSG_RESULT([yes])
6900         ], [AC_MSG_RESULT([no])])
6901     AC_LANG_POP([C++])
6903     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6904     AC_LANG_PUSH([C++])
6905     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6906             #include <cstddef>
6907             #include <cxxabi.h>
6908             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6909         ])], [
6910             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6911             AC_MSG_RESULT([yes])
6912         ], [AC_MSG_RESULT([no])])
6913     AC_LANG_POP([C++])
6915     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6916     AC_LANG_PUSH([C++])
6917     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6918             #include <cstddef>
6919             #include <cxxabi.h>
6920             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6921         ])], [
6922             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6923             AC_MSG_RESULT([yes])
6924         ], [AC_MSG_RESULT([no])])
6925     AC_LANG_POP([C++])
6927     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6928     AC_LANG_PUSH([C++])
6929     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6930             #include <cxxabi.h>
6931             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6932         ])], [
6933             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6934             AC_MSG_RESULT([yes])
6935         ], [AC_MSG_RESULT([no])])
6936     AC_LANG_POP([C++])
6938     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6939     AC_LANG_PUSH([C++])
6940     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6941             #include <cxxabi.h>
6942             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6943         ])], [
6944             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6945             AC_MSG_RESULT([yes])
6946         ], [AC_MSG_RESULT([no])])
6947     AC_LANG_POP([C++])
6949     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6950     AC_LANG_PUSH([C++])
6951     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6952             #include <cxxabi.h>
6953             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6954         ])], [
6955             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6956             AC_MSG_RESULT([yes])
6957         ], [AC_MSG_RESULT([no])])
6958     AC_LANG_POP([C++])
6960     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6961     AC_LANG_PUSH([C++])
6962     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6963             #include <cstddef>
6964             #include <cxxabi.h>
6965             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6966         ])], [
6967             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6968             AC_MSG_RESULT([yes])
6969         ], [AC_MSG_RESULT([no])])
6970     AC_LANG_POP([C++])
6972     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6973     AC_LANG_PUSH([C++])
6974     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6975             #include <cstddef>
6976             #include <cxxabi.h>
6977             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6978         ])], [
6979             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6980             AC_MSG_RESULT([yes])
6981         ], [AC_MSG_RESULT([no])])
6982     AC_LANG_POP([C++])
6985 AC_SUBST(HAVE_GCC_AVX)
6986 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6987 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6989 dnl ===================================================================
6990 dnl Identify the C++ library
6991 dnl ===================================================================
6993 AC_MSG_CHECKING([what the C++ library is])
6994 AC_LANG_PUSH([C++])
6995 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6996 #include <utility>
6997 #ifndef __GLIBCXX__
6998 foo bar
6999 #endif
7000 ]])],
7001     [CPP_LIBRARY=GLIBCXX
7002      cpp_library_name="GNU libstdc++"
7003     ],
7004     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7005 #include <utility>
7006 #ifndef _LIBCPP_VERSION
7007 foo bar
7008 #endif
7009 ]])],
7010     [CPP_LIBRARY=LIBCPP
7011      cpp_library_name="LLVM libc++"
7012      AC_DEFINE([HAVE_LIBCXX])
7013     ],
7014     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7015 #include <utility>
7016 #ifndef _MSC_VER
7017 foo bar
7018 #endif
7019 ]])],
7020     [CPP_LIBRARY=MSVCRT
7021      cpp_library_name="Microsoft"
7022     ],
7023     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7024 AC_MSG_RESULT([$cpp_library_name])
7025 AC_LANG_POP([C++])
7027 dnl ===================================================================
7028 dnl Check for gperf
7029 dnl ===================================================================
7030 AC_PATH_PROG(GPERF, gperf)
7031 if test -z "$GPERF"; then
7032     AC_MSG_ERROR([gperf not found but needed. Install it.])
7034 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7035     GPERF=`cygpath -m $GPERF`
7037 AC_MSG_CHECKING([whether gperf is new enough])
7038 my_gperf_ver1=$($GPERF --version | head -n 1)
7039 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7040 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7041 if test "$my_gperf_ver3" -ge 301; then
7042     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7043 else
7044     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7046 AC_SUBST(GPERF)
7048 dnl ===================================================================
7049 dnl Check for system libcmis
7050 dnl ===================================================================
7051 # libcmis requires curl and we can't build curl for iOS
7052 if test $_os != iOS; then
7053     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7054     ENABLE_LIBCMIS=TRUE
7055 else
7056     ENABLE_LIBCMIS=
7058 AC_SUBST(ENABLE_LIBCMIS)
7060 dnl ===================================================================
7061 dnl C++11
7062 dnl ===================================================================
7064 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7065 CXXFLAGS_CXX11=
7066 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7067     if test "$with_latest_c__" = yes; then
7068         CXXFLAGS_CXX11=-std:c++latest
7069     else
7070         CXXFLAGS_CXX11=-std:c++17
7071     fi
7072     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7073 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7074     my_flags='-std=c++17 -std=c++1z'
7075     if test "$with_latest_c__" = yes; then
7076         my_flags="-std=c++20 -std=c++2a $my_flags"
7077     fi
7078     for flag in $my_flags; do
7079         if test "$COM" = MSC; then
7080             flag="-Xclang $flag"
7081         fi
7082         save_CXXFLAGS=$CXXFLAGS
7083         CXXFLAGS="$CXXFLAGS $flag -Werror"
7084         if test "$SYSTEM_LIBCMIS" = TRUE; then
7085             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7086         fi
7087         AC_LANG_PUSH([C++])
7088         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7089             #include <algorithm>
7090             #include <functional>
7091             #include <vector>
7093             #if defined SYSTEM_LIBCMIS
7094             // See ucb/source/ucp/cmis/auth_provider.hxx:
7095             #if !defined __clang__
7096             #pragma GCC diagnostic push
7097             #pragma GCC diagnostic ignored "-Wdeprecated"
7098             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7099             #endif
7100             #include <libcmis/libcmis.hxx>
7101             #if !defined __clang__
7102             #pragma GCC diagnostic pop
7103             #endif
7104             #endif
7106             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7107                 std::sort(v.begin(), v.end(), fn);
7108             }
7109             ]])],[CXXFLAGS_CXX11=$flag])
7110         AC_LANG_POP([C++])
7111         CXXFLAGS=$save_CXXFLAGS
7112         if test -n "$CXXFLAGS_CXX11"; then
7113             break
7114         fi
7115     done
7117 if test -n "$CXXFLAGS_CXX11"; then
7118     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7119 else
7120     AC_MSG_ERROR(no)
7122 AC_SUBST(CXXFLAGS_CXX11)
7124 if test "$GCC" = "yes"; then
7125     save_CXXFLAGS=$CXXFLAGS
7126     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7127     CHECK_L_ATOMIC
7128     CXXFLAGS=$save_CXXFLAGS
7129     AC_SUBST(ATOMIC_LIB)
7132 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7133 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7134 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7135 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7136 dnl again towards 4.7.2:
7137 if test $CPP_LIBRARY = GLIBCXX; then
7138     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7139     AC_LANG_PUSH([C++])
7140     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7141 #include <list>
7142 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7143     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7144     //   GCC 4.7.0: 20120322
7145     //   GCC 4.7.1: 20120614
7146     // and using a range check is not possible as the mapping between
7147     // __GLIBCXX__ values and GCC versions is not monotonic
7148 /* ok */
7149 #else
7150 abi broken
7151 #endif
7152         ]])], [AC_MSG_RESULT(no, ok)],
7153         [AC_MSG_ERROR(yes)])
7154     AC_LANG_POP([C++])
7157 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7158 save_CXXFLAGS=$CXXFLAGS
7159 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7160 AC_LANG_PUSH([C++])
7162 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7163 #include <stddef.h>
7165 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7167 namespace
7169         struct b
7170         {
7171                 int i;
7172                 int j;
7173         };
7175 ]], [[
7176 struct a
7178         int i;
7179         int j;
7181 a thinga[]={{0,0}, {1,1}};
7182 b thingb[]={{0,0}, {1,1}};
7183 size_t i = sizeof(sal_n_array_size(thinga));
7184 size_t j = sizeof(sal_n_array_size(thingb));
7185 return !(i != 0 && j != 0);
7187     ], [ AC_MSG_RESULT(yes) ],
7188     [ AC_MSG_ERROR(no)])
7189 AC_LANG_POP([C++])
7190 CXXFLAGS=$save_CXXFLAGS
7192 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7193 if test "$GCC" = yes; then
7194     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7195     AC_LANG_PUSH([C++])
7196     save_CXXFLAGS=$CXXFLAGS
7197     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7198     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7199     CXXFLAGS=$save_CXXFLAGS
7200     AC_LANG_POP([C++])
7201     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7202         AC_MSG_RESULT([yes])
7203     else
7204         AC_MSG_RESULT([no])
7205     fi
7207 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7209 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7210 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7211 dnl from consteval constructor initializing const variable":
7212 AC_LANG_PUSH([C++])
7213 save_CXXFLAGS=$CXXFLAGS
7214 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7215 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7216         struct S {
7217             consteval S() { i = 1; }
7218             int i = 0;
7219         };
7220         S const s;
7221     ], [
7222         return (s.i == 1) ? 0 : 1;
7223     ])], [
7224         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7225         AC_MSG_RESULT([yes])
7226     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7227 CXXFLAGS=$save_CXXFLAGS
7228 AC_LANG_POP([C++])
7230 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7231 AC_LANG_PUSH([C++])
7232 save_CXXFLAGS=$CXXFLAGS
7233 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7234 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7235         #include <algorithm>
7236         #include <initializer_list>
7237         #include <vector>
7238         template<typename T> class S {
7239         private:
7240             std::vector<T> v_;
7241         public:
7242             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7243         };
7244         constinit S<int> s{3, 2, 1};
7245     ])], [
7246         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7247         AC_MSG_RESULT([yes])
7248     ], [AC_MSG_RESULT([no])])
7249 CXXFLAGS=$save_CXXFLAGS
7250 AC_LANG_POP([C++])
7252 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7253 AC_LANG_PUSH([C++])
7254 save_CXXFLAGS=$CXXFLAGS
7255 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7256 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7257         #include <span>
7258         #include <type_traits>
7259         // Don't check size_type directly, as it was called index_type before P1872R0:
7260         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7261     ])], [
7262         AC_DEFINE([HAVE_CPP_SPAN],[1])
7263         AC_MSG_RESULT([yes])
7264     ], [AC_MSG_RESULT([no])])
7265 CXXFLAGS=$save_CXXFLAGS
7266 AC_LANG_POP([C++])
7268 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7269 AC_LANG_PUSH([C++])
7270 save_CXXFLAGS=$CXXFLAGS
7271 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7272 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7273         struct S1 { S1(S1 &&); };
7274         struct S2: S1 {};
7275         S1 f(S2 s) { return s; }
7276     ])], [
7277         AC_DEFINE([HAVE_P1155R3],[1])
7278         AC_MSG_RESULT([yes])
7279     ], [AC_MSG_RESULT([no])])
7280 CXXFLAGS=$save_CXXFLAGS
7281 AC_LANG_POP([C++])
7283 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7284 dnl which is included in -Wextra anyway):
7285 HAVE_WDEPRECATED_COPY_DTOR=
7286 if test "$GCC" = yes; then
7287     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7288     AC_LANG_PUSH([C++])
7289     save_CXXFLAGS=$CXXFLAGS
7290     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7291     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7292             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7293             AC_MSG_RESULT([yes])
7294         ], [AC_MSG_RESULT([no])])
7295     CXXFLAGS=$save_CXXFLAGS
7296     AC_LANG_POP([C++])
7298 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7300 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7301 dnl uninitialized warning for code like
7303 dnl   OString f();
7304 dnl   boost::optional<OString> * g(bool b) {
7305 dnl       boost::optional<OString> o;
7306 dnl       if (b) o = f();
7307 dnl       return new boost::optional<OString>(o);
7308 dnl   }
7310 dnl (as is e.g. present, in a slightly more elaborate form, in
7311 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7312 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7313 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7314 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7315     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7316     AC_LANG_PUSH([C++])
7317     save_CXXFLAGS=$CXXFLAGS
7318     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7319     if test "$ENABLE_OPTIMIZED" = TRUE; then
7320         CXXFLAGS="$CXXFLAGS -O2"
7321     else
7322         CXXFLAGS="$CXXFLAGS -O0"
7323     fi
7324     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7325             #include <new>
7326             void f1(int);
7327             struct S1 {
7328                 ~S1() { f1(n); }
7329                 int n = 0;
7330             };
7331             struct S2 {
7332                 S2() {}
7333                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7334                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7335                 void set(S1 s) {
7336                     new (stg) S1(s);
7337                     init = true;
7338                 }
7339                 bool init = false;
7340                 char stg[sizeof (S1)];
7341             } ;
7342             S1 f2();
7343             S2 * f3(bool b) {
7344                 S2 o;
7345                 if (b) o.set(f2());
7346                 return new S2(o);
7347             }
7348         ]])], [AC_MSG_RESULT([no])], [
7349             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7350             AC_MSG_RESULT([yes])
7351         ])
7352     CXXFLAGS=$save_CXXFLAGS
7353     AC_LANG_POP([C++])
7355 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7357 dnl ===================================================================
7358 dnl CPU Intrinsics support - SSE, AVX
7359 dnl ===================================================================
7361 CXXFLAGS_INTRINSICS_SSE2=
7362 CXXFLAGS_INTRINSICS_SSSE3=
7363 CXXFLAGS_INTRINSICS_SSE41=
7364 CXXFLAGS_INTRINSICS_SSE42=
7365 CXXFLAGS_INTRINSICS_AVX=
7366 CXXFLAGS_INTRINSICS_AVX2=
7367 CXXFLAGS_INTRINSICS_AVX512=
7368 CXXFLAGS_INTRINSICS_F16C=
7369 CXXFLAGS_INTRINSICS_FMA=
7371 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7372     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7373     flag_sse2=-msse2
7374     flag_ssse3=-mssse3
7375     flag_sse41=-msse4.1
7376     flag_sse42=-msse4.2
7377     flag_avx=-mavx
7378     flag_avx2=-mavx2
7379     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7380     flag_f16c=-mf16c
7381     flag_fma=-mfma
7382 else
7383     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7384     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7385     # SSE2 seems to be SSE2+.
7386     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7387     # is not empty (and can be tested in gbuild).
7388     flag_sse2=-arch:SSE2
7389     flag_ssse3=-arch:SSE2
7390     flag_sse41=-arch:SSE2
7391     flag_sse42=-arch:SSE2
7392     flag_avx=-arch:AVX
7393     flag_avx2=-arch:AVX2
7394     flag_avx512=-arch:AVX512
7395     # These are part of -arch:AVX2
7396     flag_f16c=-arch:AVX2
7397     flag_fma=-arch:AVX2
7400 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7401 AC_LANG_PUSH([C++])
7402 save_CXXFLAGS=$CXXFLAGS
7403 CXXFLAGS="$CXXFLAGS $flag_sse2"
7404 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7405     #include <emmintrin.h>
7406     int main () {
7407         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7408         c = _mm_xor_si128 (a, b);
7409         return 0;
7410     }
7411     ])],
7412     [can_compile_sse2=yes],
7413     [can_compile_sse2=no])
7414 AC_LANG_POP([C++])
7415 CXXFLAGS=$save_CXXFLAGS
7416 AC_MSG_RESULT([${can_compile_sse2}])
7417 if test "${can_compile_sse2}" = "yes" ; then
7418     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7421 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7422 AC_LANG_PUSH([C++])
7423 save_CXXFLAGS=$CXXFLAGS
7424 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7425 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7426     #include <tmmintrin.h>
7427     int main () {
7428         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7429         c = _mm_maddubs_epi16 (a, b);
7430         return 0;
7431     }
7432     ])],
7433     [can_compile_ssse3=yes],
7434     [can_compile_ssse3=no])
7435 AC_LANG_POP([C++])
7436 CXXFLAGS=$save_CXXFLAGS
7437 AC_MSG_RESULT([${can_compile_ssse3}])
7438 if test "${can_compile_ssse3}" = "yes" ; then
7439     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7442 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7443 AC_LANG_PUSH([C++])
7444 save_CXXFLAGS=$CXXFLAGS
7445 CXXFLAGS="$CXXFLAGS $flag_sse41"
7446 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7447     #include <smmintrin.h>
7448     int main () {
7449         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7450         c = _mm_cmpeq_epi64 (a, b);
7451         return 0;
7452     }
7453     ])],
7454     [can_compile_sse41=yes],
7455     [can_compile_sse41=no])
7456 AC_LANG_POP([C++])
7457 CXXFLAGS=$save_CXXFLAGS
7458 AC_MSG_RESULT([${can_compile_sse41}])
7459 if test "${can_compile_sse41}" = "yes" ; then
7460     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7463 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7464 AC_LANG_PUSH([C++])
7465 save_CXXFLAGS=$CXXFLAGS
7466 CXXFLAGS="$CXXFLAGS $flag_sse42"
7467 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7468     #include <nmmintrin.h>
7469     int main () {
7470         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7471         c = _mm_cmpgt_epi64 (a, b);
7472         return 0;
7473     }
7474     ])],
7475     [can_compile_sse42=yes],
7476     [can_compile_sse42=no])
7477 AC_LANG_POP([C++])
7478 CXXFLAGS=$save_CXXFLAGS
7479 AC_MSG_RESULT([${can_compile_sse42}])
7480 if test "${can_compile_sse42}" = "yes" ; then
7481     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7484 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7485 AC_LANG_PUSH([C++])
7486 save_CXXFLAGS=$CXXFLAGS
7487 CXXFLAGS="$CXXFLAGS $flag_avx"
7488 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7489     #include <immintrin.h>
7490     int main () {
7491         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7492         c = _mm256_xor_ps(a, b);
7493         return 0;
7494     }
7495     ])],
7496     [can_compile_avx=yes],
7497     [can_compile_avx=no])
7498 AC_LANG_POP([C++])
7499 CXXFLAGS=$save_CXXFLAGS
7500 AC_MSG_RESULT([${can_compile_avx}])
7501 if test "${can_compile_avx}" = "yes" ; then
7502     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7505 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7506 AC_LANG_PUSH([C++])
7507 save_CXXFLAGS=$CXXFLAGS
7508 CXXFLAGS="$CXXFLAGS $flag_avx2"
7509 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7510     #include <immintrin.h>
7511     int main () {
7512         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7513         c = _mm256_maddubs_epi16(a, b);
7514         return 0;
7515     }
7516     ])],
7517     [can_compile_avx2=yes],
7518     [can_compile_avx2=no])
7519 AC_LANG_POP([C++])
7520 CXXFLAGS=$save_CXXFLAGS
7521 AC_MSG_RESULT([${can_compile_avx2}])
7522 if test "${can_compile_avx2}" = "yes" ; then
7523     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7526 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7527 AC_LANG_PUSH([C++])
7528 save_CXXFLAGS=$CXXFLAGS
7529 CXXFLAGS="$CXXFLAGS $flag_avx512"
7530 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7531     #include <immintrin.h>
7532     int main () {
7533         __m512i a = _mm512_loadu_si512(0);
7534         return 0;
7535     }
7536     ])],
7537     [can_compile_avx512=yes],
7538     [can_compile_avx512=no])
7539 AC_LANG_POP([C++])
7540 CXXFLAGS=$save_CXXFLAGS
7541 AC_MSG_RESULT([${can_compile_avx512}])
7542 if test "${can_compile_avx512}" = "yes" ; then
7543     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7546 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7547 AC_LANG_PUSH([C++])
7548 save_CXXFLAGS=$CXXFLAGS
7549 CXXFLAGS="$CXXFLAGS $flag_f16c"
7550 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7551     #include <immintrin.h>
7552     int main () {
7553         __m128i a = _mm_set1_epi32 (0);
7554         __m128 c;
7555         c = _mm_cvtph_ps(a);
7556         return 0;
7557     }
7558     ])],
7559     [can_compile_f16c=yes],
7560     [can_compile_f16c=no])
7561 AC_LANG_POP([C++])
7562 CXXFLAGS=$save_CXXFLAGS
7563 AC_MSG_RESULT([${can_compile_f16c}])
7564 if test "${can_compile_f16c}" = "yes" ; then
7565     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7568 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7569 AC_LANG_PUSH([C++])
7570 save_CXXFLAGS=$CXXFLAGS
7571 CXXFLAGS="$CXXFLAGS $flag_fma"
7572 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7573     #include <immintrin.h>
7574     int main () {
7575         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7576         d = _mm256_fmadd_ps(a, b, c);
7577         return 0;
7578     }
7579     ])],
7580     [can_compile_fma=yes],
7581     [can_compile_fma=no])
7582 AC_LANG_POP([C++])
7583 CXXFLAGS=$save_CXXFLAGS
7584 AC_MSG_RESULT([${can_compile_fma}])
7585 if test "${can_compile_fma}" = "yes" ; then
7586     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7589 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7590 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7591 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7592 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7593 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7594 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7595 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7596 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7597 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7599 dnl ===================================================================
7600 dnl system stl sanity tests
7601 dnl ===================================================================
7602 if test "$_os" != "WINNT"; then
7604     AC_LANG_PUSH([C++])
7606     save_CPPFLAGS="$CPPFLAGS"
7607     if test -n "$MACOSX_SDK_PATH"; then
7608         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7609     fi
7611     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7612     # only.
7613     if test "$CPP_LIBRARY" = GLIBCXX; then
7614         dnl gcc#19664, gcc#22482, rhbz#162935
7615         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7616         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7617         AC_MSG_RESULT([$stlvisok])
7618         if test "$stlvisok" = "no"; then
7619             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7620         fi
7621     fi
7623     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7624     # when we don't make any dynamic libraries?
7625     if test "$DISABLE_DYNLOADING" = ""; then
7626         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7627         cat > conftestlib1.cc <<_ACEOF
7628 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7629 struct S2: S1<int> { virtual ~S2(); };
7630 S2::~S2() {}
7631 _ACEOF
7632         cat > conftestlib2.cc <<_ACEOF
7633 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7634 struct S2: S1<int> { virtual ~S2(); };
7635 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7636 _ACEOF
7637         gccvisinlineshiddenok=yes
7638         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7639             gccvisinlineshiddenok=no
7640         else
7641             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7642             dnl known to not work with -z defs (unsetting which makes the test
7643             dnl moot, though):
7644             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7645             if test "$COM_IS_CLANG" = TRUE; then
7646                 for i in $CXX $CXXFLAGS; do
7647                     case $i in
7648                     -fsanitize=*)
7649                         my_linkflagsnoundefs=
7650                         break
7651                         ;;
7652                     esac
7653                 done
7654             fi
7655             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7656                 gccvisinlineshiddenok=no
7657             fi
7658         fi
7660         rm -fr libconftest*
7661         AC_MSG_RESULT([$gccvisinlineshiddenok])
7662         if test "$gccvisinlineshiddenok" = "no"; then
7663             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7664         fi
7665     fi
7667    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7668     cat >visibility.cxx <<_ACEOF
7669 #pragma GCC visibility push(hidden)
7670 struct __attribute__ ((visibility ("default"))) TestStruct {
7671   static void Init();
7673 __attribute__ ((visibility ("default"))) void TestFunc() {
7674   TestStruct::Init();
7676 _ACEOF
7677     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7678         gccvisbroken=yes
7679     else
7680         case "$host_cpu" in
7681         i?86|x86_64)
7682             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7683                 gccvisbroken=no
7684             else
7685                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7686                     gccvisbroken=no
7687                 else
7688                     gccvisbroken=yes
7689                 fi
7690             fi
7691             ;;
7692         *)
7693             gccvisbroken=no
7694             ;;
7695         esac
7696     fi
7697     rm -f visibility.s visibility.cxx
7699     AC_MSG_RESULT([$gccvisbroken])
7700     if test "$gccvisbroken" = "yes"; then
7701         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7702     fi
7704     CPPFLAGS="$save_CPPFLAGS"
7706     AC_LANG_POP([C++])
7709 dnl ===================================================================
7710 dnl  Clang++ tests
7711 dnl ===================================================================
7713 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7714 if test "$GCC" = "yes"; then
7715     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7716     AC_LANG_PUSH([C++])
7717     save_CXXFLAGS=$CXXFLAGS
7718     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7719     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7720     CXXFLAGS=$save_CXXFLAGS
7721     AC_LANG_POP([C++])
7722     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7723         AC_MSG_RESULT([yes])
7724     else
7725         AC_MSG_RESULT([no])
7726     fi
7728 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7730 dnl ===================================================================
7731 dnl Compiler plugins
7732 dnl ===================================================================
7734 COMPILER_PLUGINS=
7735 # currently only Clang
7737 if test "$COM_IS_CLANG" != "TRUE"; then
7738     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7739         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7740         enable_compiler_plugins=no
7741     fi
7744 COMPILER_PLUGINS_COM_IS_CLANG=
7745 if test "$COM_IS_CLANG" = "TRUE"; then
7746     if test -n "$enable_compiler_plugins"; then
7747         compiler_plugins="$enable_compiler_plugins"
7748     elif test -n "$ENABLE_DBGUTIL"; then
7749         compiler_plugins=test
7750     else
7751         compiler_plugins=no
7752     fi
7753     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7754         if test "$CLANGVER" -lt 50002; then
7755             if test "$compiler_plugins" = yes; then
7756                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7757             else
7758                 compiler_plugins=no
7759             fi
7760         fi
7761     fi
7762     if test "$compiler_plugins" != "no"; then
7763         dnl The prefix where Clang resides, override to where Clang resides if
7764         dnl using a source build:
7765         if test -z "$CLANGDIR"; then
7766             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7767         fi
7768         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7769         if test -z "$COMPILER_PLUGINS_CXX"; then
7770             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7771         fi
7772         clangbindir=$CLANGDIR/bin
7773         if test "$build_os" = "cygwin"; then
7774             clangbindir=$(cygpath -u "$clangbindir")
7775         fi
7776         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7777         if test -n "$LLVM_CONFIG"; then
7778             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7779             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7780             if test -z "$CLANGLIBDIR"; then
7781                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7782             fi
7783             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7784             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7785             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7786             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7787                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7788             fi
7789             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7790             clangobjdir=$($LLVM_CONFIG --obj-root)
7791             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7792                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7793             fi
7794         fi
7795         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7796         AC_LANG_PUSH([C++])
7797         save_CXX=$CXX
7798         save_CXXCPP=$CXXCPP
7799         save_CPPFLAGS=$CPPFLAGS
7800         save_CXXFLAGS=$CXXFLAGS
7801         save_LDFLAGS=$LDFLAGS
7802         save_LIBS=$LIBS
7803         CXX=$COMPILER_PLUGINS_CXX
7804         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7805         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7806         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7807         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7808             [COMPILER_PLUGINS=TRUE],
7809             [
7810             if test "$compiler_plugins" = "yes"; then
7811                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7812             else
7813                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7814                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7815             fi
7816             ])
7817         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7818         dnl comment in compilerplugins/Makefile-clang.mk:
7819         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7820             LDFLAGS=""
7821             AC_MSG_CHECKING([for clang libraries to use])
7822             if test -z "$CLANGTOOLLIBS"; then
7823                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7824  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7825                 AC_LINK_IFELSE([
7826                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7827                         [[ clang::FullSourceLoc().dump(); ]])
7828                 ],[CLANGTOOLLIBS="$LIBS"],[])
7829             fi
7830             if test -z "$CLANGTOOLLIBS"; then
7831                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7832                 AC_LINK_IFELSE([
7833                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7834                         [[ clang::FullSourceLoc().dump(); ]])
7835                 ],[CLANGTOOLLIBS="$LIBS"],[])
7836             fi
7837             AC_MSG_RESULT([$CLANGTOOLLIBS])
7838             if test -z "$CLANGTOOLLIBS"; then
7839                 if test "$compiler_plugins" = "yes"; then
7840                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7841                 else
7842                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7843                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7844                 fi
7845                 COMPILER_PLUGINS=
7846             fi
7847             if test -n "$COMPILER_PLUGINS"; then
7848                 if test -z "$CLANGSYSINCLUDE"; then
7849                     if test -n "$LLVM_CONFIG"; then
7850                         # Path to the clang system headers (no idea if there's a better way to get it).
7851                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7852                     fi
7853                 fi
7854             fi
7855         fi
7856         CXX=$save_CXX
7857         CXXCPP=$save_CXXCPP
7858         CPPFLAGS=$save_CPPFLAGS
7859         CXXFLAGS=$save_CXXFLAGS
7860         LDFLAGS=$save_LDFLAGS
7861         LIBS="$save_LIBS"
7862         AC_LANG_POP([C++])
7864         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7865         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7866             #ifndef __clang__
7867             you lose
7868             #endif
7869             int foo=42;
7870             ]])],
7871             [AC_MSG_RESULT([yes])
7872              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7873             [AC_MSG_RESULT([no])])
7874         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7875     fi
7876 else
7877     if test "$enable_compiler_plugins" = "yes"; then
7878         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7879     fi
7881 COMPILER_PLUGINS_ANALYZER_PCH=
7882 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7883     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7885 AC_SUBST(COMPILER_PLUGINS)
7886 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7887 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7888 AC_SUBST(COMPILER_PLUGINS_CXX)
7889 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7890 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7891 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7892 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7893 AC_SUBST(CLANGDIR)
7894 AC_SUBST(CLANGLIBDIR)
7895 AC_SUBST(CLANGTOOLLIBS)
7896 AC_SUBST(CLANGSYSINCLUDE)
7898 # Plugin to help linker.
7899 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7900 # This makes --enable-lto build with clang work.
7901 AC_SUBST(LD_PLUGIN)
7903 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7904 AC_SUBST(HAVE_POSIX_FALLOCATE)
7906 JITC_PROCESSOR_TYPE=""
7907 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7908     # IBMs JDK needs this...
7909     JITC_PROCESSOR_TYPE=6
7910     export JITC_PROCESSOR_TYPE
7912 AC_SUBST([JITC_PROCESSOR_TYPE])
7914 # Misc Windows Stuff
7915 AC_ARG_WITH(ucrt-dir,
7916     AS_HELP_STRING([--with-ucrt-dir],
7917         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7918         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7919         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7920             Windows6.1-KB2999226-x64.msu
7921             Windows6.1-KB2999226-x86.msu
7922             Windows8.1-KB2999226-x64.msu
7923             Windows8.1-KB2999226-x86.msu
7924             Windows8-RT-KB2999226-x64.msu
7925             Windows8-RT-KB2999226-x86.msu
7926         A zip archive including those files is available from Microsoft site:
7927         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7930 UCRT_REDISTDIR="$with_ucrt_dir"
7931 if test $_os = "WINNT"; then
7932     find_msvc_x64_dlls
7933     for i in $PKGFORMAT; do
7934         if test "$i" = msi; then
7935             find_msms
7936             break
7937         fi
7938     done
7939     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7940     MSVC_DLLS="$msvcdlls"
7941     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7942     # MSVC 15.3 changed it to VC141
7943     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7944         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7945     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7946         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7947     else
7948         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7949     fi
7951     if test "$UCRT_REDISTDIR" = "no"; then
7952         dnl explicitly disabled
7953         UCRT_REDISTDIR=""
7954     else
7955         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7956                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7957                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7958                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7959                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7960                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7961             UCRT_REDISTDIR=""
7962             if test -n "$PKGFORMAT"; then
7963                for i in $PKGFORMAT; do
7964                    case "$i" in
7965                    msi)
7966                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7967                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7968                        ;;
7969                    esac
7970                done
7971             fi
7972         fi
7973     fi
7976 AC_SUBST(UCRT_REDISTDIR)
7977 AC_SUBST(MSVC_DLL_PATH)
7978 AC_SUBST(MSVC_DLLS)
7979 AC_SUBST(MSM_PATH)
7981 dnl ===================================================================
7982 dnl Checks for Java
7983 dnl ===================================================================
7984 if test "$ENABLE_JAVA" != ""; then
7986     # Windows-specific tests
7987     if test "$build_os" = "cygwin"; then
7988         if test -z "$with_jdk_home"; then
7989             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7990             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7991             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7992             if test -n "$regvalue"; then
7993                 ver=$regvalue
7994                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7995                 reg_jdk_home=$regvalue
7996             fi
7998             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7999                 with_jdk_home="$reg_jdk_home"
8000                 howfound="found automatically"
8001             else
8002                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8003             fi
8004         else
8005             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8006             howfound="you passed"
8007         fi
8008     fi
8010     # 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.
8011     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8012     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8013         with_jdk_home=`/usr/libexec/java_home`
8014     fi
8016     JAVA_HOME=; export JAVA_HOME
8017     if test -z "$with_jdk_home"; then
8018         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8019     else
8020         _java_path="$with_jdk_home/bin/$with_java"
8021         dnl Check if there is a Java interpreter at all.
8022         if test -x "$_java_path"; then
8023             JAVAINTERPRETER=$_java_path
8024         else
8025             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8026         fi
8027     fi
8029     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8030     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8031     dnl loaded by java to run JunitTests:
8032     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8033         shortjdkhome=`cygpath -d "$with_jdk_home"`
8034         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
8035             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8036             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8037         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
8038             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8039             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8040         fi
8042         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8043             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8044         fi
8045         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8046     elif test "$cross_compiling" != "yes"; then
8047         case $CPUNAME in
8048             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8049                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8050                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8051                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8052                 fi
8053                 ;;
8054             *) # assumption: everything else 32-bit
8055                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8056                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8057                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8058                 fi
8059                 ;;
8060         esac
8061     fi
8064 dnl ===================================================================
8065 dnl Checks for JDK.
8066 dnl ===================================================================
8068 # Whether all the complexity here actually is needed any more or not, no idea.
8070 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8071     _gij_longver=0
8072     AC_MSG_CHECKING([the installed JDK])
8073     if test -n "$JAVAINTERPRETER"; then
8074         dnl java -version sends output to stderr!
8075         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8076             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8077         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8078             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8079         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8080             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8081         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8082             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8083         else
8084             JDK=sun
8086             dnl Sun JDK specific tests
8087             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8088             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8090             if test "$_jdk_ver" -lt 10900; then
8091                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8092             fi
8093             if test "$_jdk_ver" -gt 10900; then
8094                 JAVA_CLASSPATH_NOT_SET=TRUE
8095             fi
8097             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8098             if test "$_os" = "WINNT"; then
8099                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8100             fi
8101             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8103             # set to limit VM usage for JunitTests
8104             JAVAIFLAGS=-Xmx64M
8105             # set to limit VM usage for javac
8106             JAVACFLAGS=-J-Xmx128M
8107         fi
8108     else
8109         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8110     fi
8111 else
8112     if test -z "$ENABLE_JAVA"; then
8113         dnl Java disabled
8114         JAVA_HOME=
8115         export JAVA_HOME
8116     elif test "$cross_compiling" = "yes"; then
8117         # Just assume compatibility of build and host JDK
8118         JDK=$JDK_FOR_BUILD
8119         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8120     fi
8123 dnl ===================================================================
8124 dnl Checks for javac
8125 dnl ===================================================================
8126 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8127     javacompiler="javac"
8128     : ${JAVA_SOURCE_VER=8}
8129     : ${JAVA_TARGET_VER=8}
8130     if test -z "$with_jdk_home"; then
8131         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8132     else
8133         _javac_path="$with_jdk_home/bin/$javacompiler"
8134         dnl Check if there is a Java compiler at all.
8135         if test -x "$_javac_path"; then
8136             JAVACOMPILER=$_javac_path
8137         fi
8138     fi
8139     if test -z "$JAVACOMPILER"; then
8140         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8141     fi
8142     if test "$build_os" = "cygwin"; then
8143         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8144             JAVACOMPILER="${JAVACOMPILER}.exe"
8145         fi
8146         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8147     fi
8150 dnl ===================================================================
8151 dnl Checks for javadoc
8152 dnl ===================================================================
8153 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8154     if test -z "$with_jdk_home"; then
8155         AC_PATH_PROG(JAVADOC, javadoc)
8156     else
8157         _javadoc_path="$with_jdk_home/bin/javadoc"
8158         dnl Check if there is a javadoc at all.
8159         if test -x "$_javadoc_path"; then
8160             JAVADOC=$_javadoc_path
8161         else
8162             AC_PATH_PROG(JAVADOC, javadoc)
8163         fi
8164     fi
8165     if test -z "$JAVADOC"; then
8166         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8167     fi
8168     if test "$build_os" = "cygwin"; then
8169         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8170             JAVADOC="${JAVADOC}.exe"
8171         fi
8172         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8173     fi
8175     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8176     JAVADOCISGJDOC="yes"
8177     fi
8179 AC_SUBST(JAVADOC)
8180 AC_SUBST(JAVADOCISGJDOC)
8182 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8183     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8184     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8185         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8186            # try to recover first by looking whether we have an alternative
8187            # system as in Debian or newer SuSEs where following /usr/bin/javac
8188            # over /etc/alternatives/javac leads to the right bindir where we
8189            # just need to strip a bit away to get a valid JAVA_HOME
8190            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8191         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8192             # maybe only one level of symlink (e.g. on Mac)
8193             JAVA_HOME=$(readlink $JAVACOMPILER)
8194             if test "$(dirname $JAVA_HOME)" = "."; then
8195                 # we've got no path to trim back
8196                 JAVA_HOME=""
8197             fi
8198         else
8199             # else warn
8200             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8201             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8202             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8203             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8204         fi
8205         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8206         if test "$JAVA_HOME" != "/usr"; then
8207             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8208                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8209                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8210                 dnl Tiger already returns a JDK path...
8211                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8212             else
8213                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8214                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8215                 dnl that checks which version to run
8216                 if test -f "$JAVA_HOME"; then
8217                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8218                 fi
8219             fi
8220         fi
8221     fi
8222     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8224     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8225     if test -z "$JAVA_HOME"; then
8226         if test "x$with_jdk_home" = "x"; then
8227             cat > findhome.java <<_ACEOF
8228 [import java.io.File;
8230 class findhome
8232     public static void main(String args[])
8233     {
8234         String jrelocation = System.getProperty("java.home");
8235         File jre = new File(jrelocation);
8236         System.out.println(jre.getParent());
8237     }
8239 _ACEOF
8240             AC_MSG_CHECKING([if javac works])
8241             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8242             AC_TRY_EVAL(javac_cmd)
8243             if test $? = 0 -a -f ./findhome.class; then
8244                 AC_MSG_RESULT([javac works])
8245             else
8246                 echo "configure: javac test failed" >&5
8247                 cat findhome.java >&5
8248                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8249             fi
8250             AC_MSG_CHECKING([if gij knows its java.home])
8251             JAVA_HOME=`$JAVAINTERPRETER findhome`
8252             if test $? = 0 -a "$JAVA_HOME" != ""; then
8253                 AC_MSG_RESULT([$JAVA_HOME])
8254             else
8255                 echo "configure: java test failed" >&5
8256                 cat findhome.java >&5
8257                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8258             fi
8259             # clean-up after ourselves
8260             rm -f ./findhome.java ./findhome.class
8261         else
8262             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8263         fi
8264     fi
8266     # now check if $JAVA_HOME is really valid
8267     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8268         case "${JAVA_HOME}" in
8269             /Library/Java/JavaVirtualMachines/*)
8270                 ;;
8271             *)
8272                 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8273                 ;;
8274         esac
8275         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8276             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8277             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8278             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8279             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8280             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8281             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8282         fi
8283     fi
8284     PathFormat "$JAVA_HOME"
8285     JAVA_HOME="$formatted_path"
8288 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8289     "$_os" != Darwin
8290 then
8291     AC_MSG_CHECKING([for JAWT lib])
8292     if test "$_os" = WINNT; then
8293         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8294         JAWTLIB=jawt.lib
8295     else
8296         case "$host_cpu" in
8297         arm*)
8298             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8299             JAVA_ARCH=$my_java_arch
8300             ;;
8301         i*86)
8302             my_java_arch=i386
8303             ;;
8304         m68k)
8305             my_java_arch=m68k
8306             ;;
8307         powerpc)
8308             my_java_arch=ppc
8309             ;;
8310         powerpc64)
8311             my_java_arch=ppc64
8312             ;;
8313         powerpc64le)
8314             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8315             JAVA_ARCH=$my_java_arch
8316             ;;
8317         sparc64)
8318             my_java_arch=sparcv9
8319             ;;
8320         x86_64)
8321             my_java_arch=amd64
8322             ;;
8323         *)
8324             my_java_arch=$host_cpu
8325             ;;
8326         esac
8327         # This is where JDK9 puts the library
8328         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8329             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8330         else
8331             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8332         fi
8333         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8334     fi
8335     AC_MSG_RESULT([$JAWTLIB])
8337 AC_SUBST(JAWTLIB)
8339 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8340     case "$host_os" in
8342     aix*)
8343         JAVAINC="-I$JAVA_HOME/include"
8344         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8345         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8346         ;;
8348     cygwin*|wsl*)
8349         JAVAINC="-I$JAVA_HOME/include/win32"
8350         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8351         ;;
8353     darwin*)
8354         if test -d "$JAVA_HOME/include/darwin"; then
8355             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8356         else
8357             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8358         fi
8359         ;;
8361     dragonfly*)
8362         JAVAINC="-I$JAVA_HOME/include"
8363         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8364         ;;
8366     freebsd*)
8367         JAVAINC="-I$JAVA_HOME/include"
8368         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8369         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8370         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8371         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8372         ;;
8374     k*bsd*-gnu*)
8375         JAVAINC="-I$JAVA_HOME/include"
8376         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8377         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8378         ;;
8380     linux-gnu*)
8381         JAVAINC="-I$JAVA_HOME/include"
8382         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8383         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8384         ;;
8386     *netbsd*)
8387         JAVAINC="-I$JAVA_HOME/include"
8388         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8389         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8390        ;;
8392     openbsd*)
8393         JAVAINC="-I$JAVA_HOME/include"
8394         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8395         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8396         ;;
8398     solaris*)
8399         JAVAINC="-I$JAVA_HOME/include"
8400         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8401         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8402         ;;
8403     esac
8405 SOLARINC="$SOLARINC $JAVAINC"
8407 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8408     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8409     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8410     JDK_FOR_BUILD=$JDK
8413 AC_SUBST(JAVACFLAGS)
8414 AC_SUBST(JAVACOMPILER)
8415 AC_SUBST(JAVAINTERPRETER)
8416 AC_SUBST(JAVAIFLAGS)
8417 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8418 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8419 AC_SUBST(JAVA_HOME)
8420 AC_SUBST(JAVA_HOME_FOR_BUILD)
8421 AC_SUBST(JDK)
8422 AC_SUBST(JDK_FOR_BUILD)
8423 AC_SUBST(JAVA_SOURCE_VER)
8424 AC_SUBST(JAVA_TARGET_VER)
8427 dnl ===================================================================
8428 dnl Export file validation
8429 dnl ===================================================================
8430 AC_MSG_CHECKING([whether to enable export file validation])
8431 if test "$with_export_validation" != "no"; then
8432     if test -z "$ENABLE_JAVA"; then
8433         if test "$with_export_validation" = "yes"; then
8434             AC_MSG_ERROR([requested, but Java is disabled])
8435         else
8436             AC_MSG_RESULT([no, as Java is disabled])
8437         fi
8438     elif ! test -d "${SRC_ROOT}/schema"; then
8439         if test "$with_export_validation" = "yes"; then
8440             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8441         else
8442             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8443         fi
8444     else
8445         AC_MSG_RESULT([yes])
8446         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8448         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8449         if test -z "$ODFVALIDATOR"; then
8450             # remember to download the ODF toolkit with validator later
8451             AC_MSG_NOTICE([no odfvalidator found, will download it])
8452             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8453             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8455             # and fetch name of odfvalidator jar name from download.lst
8456             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8457             AC_SUBST(ODFVALIDATOR_JAR)
8459             if test -z "$ODFVALIDATOR_JAR"; then
8460                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8461             fi
8462         fi
8463         if test "$build_os" = "cygwin"; then
8464             # In case of Cygwin it will be executed from Windows,
8465             # so we need to run bash and absolute path to validator
8466             # so instead of "odfvalidator" it will be
8467             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8468             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8469         else
8470             ODFVALIDATOR="sh $ODFVALIDATOR"
8471         fi
8472         AC_SUBST(ODFVALIDATOR)
8475         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8476         if test -z "$OFFICEOTRON"; then
8477             # remember to download the officeotron with validator later
8478             AC_MSG_NOTICE([no officeotron found, will download it])
8479             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8480             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8482             # and fetch name of officeotron jar name from download.lst
8483             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8484             AC_SUBST(OFFICEOTRON_JAR)
8486             if test -z "$OFFICEOTRON_JAR"; then
8487                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8488             fi
8489         else
8490             # check version of existing officeotron
8491             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8492             if test 0"$OFFICEOTRON_VER" -lt 704; then
8493                 AC_MSG_ERROR([officeotron too old])
8494             fi
8495         fi
8496         if test "$build_os" = "cygwin"; then
8497             # In case of Cygwin it will be executed from Windows,
8498             # so we need to run bash and absolute path to validator
8499             # so instead of "odfvalidator" it will be
8500             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8501             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8502         else
8503             OFFICEOTRON="sh $OFFICEOTRON"
8504         fi
8505     fi
8506     AC_SUBST(OFFICEOTRON)
8507 else
8508     AC_MSG_RESULT([no])
8511 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8512 if test "$with_bffvalidator" != "no"; then
8513     AC_DEFINE(HAVE_BFFVALIDATOR)
8515     if test "$with_export_validation" = "no"; then
8516         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8517     fi
8519     if test "$with_bffvalidator" = "yes"; then
8520         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8521     else
8522         BFFVALIDATOR="$with_bffvalidator"
8523     fi
8525     if test "$build_os" = "cygwin"; then
8526         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8527             AC_MSG_RESULT($BFFVALIDATOR)
8528         else
8529             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8530         fi
8531     elif test -n "$BFFVALIDATOR"; then
8532         # We are not in Cygwin but need to run Windows binary with wine
8533         AC_PATH_PROGS(WINE, wine)
8535         # so swap in a shell wrapper that converts paths transparently
8536         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8537         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8538         AC_SUBST(BFFVALIDATOR_EXE)
8539         AC_MSG_RESULT($BFFVALIDATOR)
8540     else
8541         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8542     fi
8543     AC_SUBST(BFFVALIDATOR)
8544 else
8545     AC_MSG_RESULT([no])
8548 dnl ===================================================================
8549 dnl Check for C preprocessor to use
8550 dnl ===================================================================
8551 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8552 if test -n "$with_idlc_cpp"; then
8553     AC_MSG_RESULT([$with_idlc_cpp])
8554     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8555 else
8556     AC_MSG_RESULT([ucpp])
8557     AC_MSG_CHECKING([which ucpp tp use])
8558     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8559         AC_MSG_RESULT([external])
8560         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8561     else
8562         AC_MSG_RESULT([internal])
8563         BUILD_TYPE="$BUILD_TYPE UCPP"
8564     fi
8566 AC_SUBST(SYSTEM_UCPP)
8568 dnl ===================================================================
8569 dnl Check for epm (not needed for Windows)
8570 dnl ===================================================================
8571 AC_MSG_CHECKING([whether to enable EPM for packing])
8572 if test "$enable_epm" = "yes"; then
8573     AC_MSG_RESULT([yes])
8574     if test "$_os" != "WINNT"; then
8575         if test $_os = Darwin; then
8576             EPM=internal
8577         elif test -n "$with_epm"; then
8578             EPM=$with_epm
8579         else
8580             AC_PATH_PROG(EPM, epm, no)
8581         fi
8582         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8583             AC_MSG_NOTICE([EPM will be built.])
8584             BUILD_TYPE="$BUILD_TYPE EPM"
8585             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8586         else
8587             # Gentoo has some epm which is something different...
8588             AC_MSG_CHECKING([whether the found epm is the right epm])
8589             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8590                 AC_MSG_RESULT([yes])
8591             else
8592                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8593             fi
8594             AC_MSG_CHECKING([epm version])
8595             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8596             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8597                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8598                 AC_MSG_RESULT([OK, >= 3.7])
8599             else
8600                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8601                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8602             fi
8603         fi
8604     fi
8606     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8607         AC_MSG_CHECKING([for rpm])
8608         for a in "$RPM" rpmbuild rpm; do
8609             $a --usage >/dev/null 2> /dev/null
8610             if test $? -eq 0; then
8611                 RPM=$a
8612                 break
8613             else
8614                 $a --version >/dev/null 2> /dev/null
8615                 if test $? -eq 0; then
8616                     RPM=$a
8617                     break
8618                 fi
8619             fi
8620         done
8621         if test -z "$RPM"; then
8622             AC_MSG_ERROR([not found])
8623         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8624             RPM_PATH=`which $RPM`
8625             AC_MSG_RESULT([$RPM_PATH])
8626             SCPDEFS="$SCPDEFS -DWITH_RPM"
8627         else
8628             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8629         fi
8630     fi
8631     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8632         AC_PATH_PROG(DPKG, dpkg, no)
8633         if test "$DPKG" = "no"; then
8634             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8635         fi
8636     fi
8637     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8638        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8639         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8640             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8641                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8642                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8643                     AC_MSG_RESULT([yes])
8644                 else
8645                     AC_MSG_RESULT([no])
8646                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8647                         _pt="rpm"
8648                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8649                         add_warning "the rpms will need to be installed with --nodeps"
8650                     else
8651                         _pt="pkg"
8652                     fi
8653                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8654                     add_warning "the ${_pt}s will not be relocatable"
8655                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8656                                  relocation will work, you need to patch your epm with the
8657                                  patch in epm/epm-3.7.patch or build with
8658                                  --with-epm=internal which will build a suitable epm])
8659                 fi
8660             fi
8661         fi
8662     fi
8663     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8664         AC_PATH_PROG(PKGMK, pkgmk, no)
8665         if test "$PKGMK" = "no"; then
8666             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8667         fi
8668     fi
8669     AC_SUBST(RPM)
8670     AC_SUBST(DPKG)
8671     AC_SUBST(PKGMK)
8672 else
8673     for i in $PKGFORMAT; do
8674         case "$i" in
8675         aix | bsd | deb | pkg | rpm | native | portable)
8676             AC_MSG_ERROR(
8677                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8678             ;;
8679         esac
8680     done
8681     AC_MSG_RESULT([no])
8682     EPM=NO
8684 AC_SUBST(EPM)
8686 ENABLE_LWP=
8687 if test "$enable_lotuswordpro" = "yes"; then
8688     ENABLE_LWP="TRUE"
8690 AC_SUBST(ENABLE_LWP)
8692 dnl ===================================================================
8693 dnl Check for building ODK
8694 dnl ===================================================================
8695 if test "$enable_odk" = no; then
8696     unset DOXYGEN
8697 else
8698     if test "$with_doxygen" = no; then
8699         AC_MSG_CHECKING([for doxygen])
8700         unset DOXYGEN
8701         AC_MSG_RESULT([no])
8702     else
8703         if test "$with_doxygen" = yes; then
8704             AC_PATH_PROG([DOXYGEN], [doxygen])
8705             if test -z "$DOXYGEN"; then
8706                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8707             fi
8708             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8709                 if ! dot -V 2>/dev/null; then
8710                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8711                 fi
8712             fi
8713         else
8714             AC_MSG_CHECKING([for doxygen])
8715             DOXYGEN=$with_doxygen
8716             AC_MSG_RESULT([$DOXYGEN])
8717         fi
8718         if test -n "$DOXYGEN"; then
8719             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8720             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8721             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8722                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8723             fi
8724         fi
8725     fi
8727 AC_SUBST([DOXYGEN])
8729 AC_MSG_CHECKING([whether to build the ODK])
8730 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8731     AC_MSG_RESULT([yes])
8733     if test "$with_java" != "no"; then
8734         AC_MSG_CHECKING([whether to build unowinreg.dll])
8735         if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8736             # build on Win by default
8737             enable_build_unowinreg=yes
8738         fi
8739         if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8740             AC_MSG_RESULT([no])
8741             BUILD_UNOWINREG=
8742         else
8743             AC_MSG_RESULT([yes])
8744             BUILD_UNOWINREG=TRUE
8745         fi
8746         if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8747             if test -z "$with_mingw_cross_compiler"; then
8748                 dnl Guess...
8749                 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8750             elif test -x "$with_mingw_cross_compiler"; then
8751                  MINGWCXX="$with_mingw_cross_compiler"
8752             else
8753                 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8754             fi
8756             if test "$MINGWCXX" = "false"; then
8757                 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8758             fi
8760             mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8761             if test -x "$mingwstrip_test"; then
8762                 MINGWSTRIP="$mingwstrip_test"
8763             else
8764                 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8765             fi
8767             if test "$MINGWSTRIP" = "false"; then
8768                 AC_MSG_ERROR(MinGW32 binutils not found.)
8769             fi
8770         fi
8771     fi
8772     BUILD_TYPE="$BUILD_TYPE ODK"
8773 else
8774     AC_MSG_RESULT([no])
8775     BUILD_UNOWINREG=
8777 AC_SUBST(BUILD_UNOWINREG)
8778 AC_SUBST(MINGWCXX)
8779 AC_SUBST(MINGWSTRIP)
8781 dnl ===================================================================
8782 dnl Check for system zlib
8783 dnl ===================================================================
8784 if test "$with_system_zlib" = "auto"; then
8785     case "$_os" in
8786     WINNT)
8787         with_system_zlib="$with_system_libs"
8788         ;;
8789     *)
8790         if test "$enable_fuzzers" != "yes"; then
8791             with_system_zlib=yes
8792         else
8793             with_system_zlib=no
8794         fi
8795         ;;
8796     esac
8799 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8800 dnl and has no pkg-config for it at least on some tinderboxes,
8801 dnl so leaving that out for now
8802 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8803 AC_MSG_CHECKING([which zlib to use])
8804 if test "$with_system_zlib" = "yes"; then
8805     AC_MSG_RESULT([external])
8806     SYSTEM_ZLIB=TRUE
8807     AC_CHECK_HEADER(zlib.h, [],
8808         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8809     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8810         [AC_MSG_ERROR(zlib not found or functional)], [])
8811 else
8812     AC_MSG_RESULT([internal])
8813     SYSTEM_ZLIB=
8814     BUILD_TYPE="$BUILD_TYPE ZLIB"
8815     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8816     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8818 AC_SUBST(ZLIB_CFLAGS)
8819 AC_SUBST(ZLIB_LIBS)
8820 AC_SUBST(SYSTEM_ZLIB)
8822 dnl ===================================================================
8823 dnl Check for system jpeg
8824 dnl ===================================================================
8825 AC_MSG_CHECKING([which libjpeg to use])
8826 if test "$with_system_jpeg" = "yes"; then
8827     AC_MSG_RESULT([external])
8828     SYSTEM_LIBJPEG=TRUE
8829     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8830         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8831     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8832         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8833 else
8834     SYSTEM_LIBJPEG=
8835     AC_MSG_RESULT([internal, libjpeg-turbo])
8836     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8837     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8838     if test "$COM" = "MSC"; then
8839         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8840     else
8841         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8842     fi
8844     case "$host_cpu" in
8845     x86_64 | amd64 | i*86 | x86 | ia32)
8846         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8847         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8848             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8849                 NASM="$LODE_HOME/opt/bin/nasm"
8850             elif test -x "/opt/lo/bin/nasm"; then
8851                 NASM="/opt/lo/bin/nasm"
8852             fi
8853         fi
8855         if test -n "$NASM"; then
8856             AC_MSG_CHECKING([for object file format of host system])
8857             case "$host_os" in
8858               cygwin* | mingw* | pw32* | wsl*)
8859                 case "$host_cpu" in
8860                   x86_64)
8861                     objfmt='Win64-COFF'
8862                     ;;
8863                   *)
8864                     objfmt='Win32-COFF'
8865                     ;;
8866                 esac
8867               ;;
8868               msdosdjgpp* | go32*)
8869                 objfmt='COFF'
8870               ;;
8871               os2-emx*) # not tested
8872                 objfmt='MSOMF' # obj
8873               ;;
8874               linux*coff* | linux*oldld*)
8875                 objfmt='COFF' # ???
8876               ;;
8877               linux*aout*)
8878                 objfmt='a.out'
8879               ;;
8880               linux*)
8881                 case "$host_cpu" in
8882                   x86_64)
8883                     objfmt='ELF64'
8884                     ;;
8885                   *)
8886                     objfmt='ELF'
8887                     ;;
8888                 esac
8889               ;;
8890               kfreebsd* | freebsd* | netbsd* | openbsd*)
8891                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8892                   objfmt='BSD-a.out'
8893                 else
8894                   case "$host_cpu" in
8895                     x86_64 | amd64)
8896                       objfmt='ELF64'
8897                       ;;
8898                     *)
8899                       objfmt='ELF'
8900                       ;;
8901                   esac
8902                 fi
8903               ;;
8904               solaris* | sunos* | sysv* | sco*)
8905                 case "$host_cpu" in
8906                   x86_64)
8907                     objfmt='ELF64'
8908                     ;;
8909                   *)
8910                     objfmt='ELF'
8911                     ;;
8912                 esac
8913               ;;
8914               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8915                 case "$host_cpu" in
8916                   x86_64)
8917                     objfmt='Mach-O64'
8918                     ;;
8919                   *)
8920                     objfmt='Mach-O'
8921                     ;;
8922                 esac
8923               ;;
8924               *)
8925                 objfmt='ELF ?'
8926               ;;
8927             esac
8929             AC_MSG_RESULT([$objfmt])
8930             if test "$objfmt" = 'ELF ?'; then
8931               objfmt='ELF'
8932               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8933             fi
8935             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8936             case "$objfmt" in
8937               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8938               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8939               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8940               COFF)       NAFLAGS='-fcoff -DCOFF';;
8941               a.out)      NAFLAGS='-faout -DAOUT';;
8942               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8943               ELF)        NAFLAGS='-felf -DELF';;
8944               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8945               RDF)        NAFLAGS='-frdf -DRDF';;
8946               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8947               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8948             esac
8949             AC_MSG_RESULT([$NAFLAGS])
8951             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8952             cat > conftest.asm << EOF
8953             [%line __oline__ "configure"
8954                     section .text
8955                     global  _main,main
8956             _main:
8957             main:   xor     eax,eax
8958                     ret
8959             ]
8961             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8962             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8963               AC_MSG_RESULT(yes)
8964             else
8965               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8966               cat conftest.asm >&AS_MESSAGE_LOG_FD
8967               rm -rf conftest*
8968               AC_MSG_RESULT(no)
8969               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8970               NASM=""
8971             fi
8973         fi
8975         if test -z "$NASM"; then
8976 cat << _EOS
8977 ****************************************************************************
8978 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8979 To get one please:
8981 _EOS
8982             if test "$build_os" = "cygwin"; then
8983 cat << _EOS
8984 install a pre-compiled binary for Win32
8986 mkdir -p /opt/lo/bin
8987 cd /opt/lo/bin
8988 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8989 chmod +x nasm
8991 or get and install one from http://www.nasm.us/
8993 Then re-run autogen.sh
8995 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8996 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8998 _EOS
8999             else
9000 cat << _EOS
9001 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9003 _EOS
9004             fi
9005             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9006             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9007         fi
9008       ;;
9009     esac
9012 AC_SUBST(NASM)
9013 AC_SUBST(LIBJPEG_CFLAGS)
9014 AC_SUBST(LIBJPEG_LIBS)
9015 AC_SUBST(SYSTEM_LIBJPEG)
9017 dnl ===================================================================
9018 dnl Check for system clucene
9019 dnl ===================================================================
9020 dnl we should rather be using
9021 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9022 dnl but the contribs-lib check seems tricky
9023 AC_MSG_CHECKING([which clucene to use])
9024 if test "$with_system_clucene" = "yes"; then
9025     AC_MSG_RESULT([external])
9026     SYSTEM_CLUCENE=TRUE
9027     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9028     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9029     FilterLibs "${CLUCENE_LIBS}"
9030     CLUCENE_LIBS="${filteredlibs}"
9031     AC_LANG_PUSH([C++])
9032     save_CXXFLAGS=$CXXFLAGS
9033     save_CPPFLAGS=$CPPFLAGS
9034     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9035     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9036     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9037     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9038     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9039                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9040     CXXFLAGS=$save_CXXFLAGS
9041     CPPFLAGS=$save_CPPFLAGS
9042     AC_LANG_POP([C++])
9044     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9045 else
9046     AC_MSG_RESULT([internal])
9047     SYSTEM_CLUCENE=
9048     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9050 AC_SUBST(SYSTEM_CLUCENE)
9051 AC_SUBST(CLUCENE_CFLAGS)
9052 AC_SUBST(CLUCENE_LIBS)
9054 dnl ===================================================================
9055 dnl Check for system expat
9056 dnl ===================================================================
9057 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9059 dnl ===================================================================
9060 dnl Check for system xmlsec
9061 dnl ===================================================================
9062 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9064 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9065 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9066     ENABLE_EOT="TRUE"
9067     AC_DEFINE([ENABLE_EOT])
9068     AC_MSG_RESULT([yes])
9070     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9071 else
9072     ENABLE_EOT=
9073     AC_MSG_RESULT([no])
9075 AC_SUBST([ENABLE_EOT])
9077 dnl ===================================================================
9078 dnl Check for DLP libs
9079 dnl ===================================================================
9080 AS_IF([test "$COM" = "MSC"],
9081       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9082       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9084 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9086 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9088 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9090 AS_IF([test "$COM" = "MSC"],
9091       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9092       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9094 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9096 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9098 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9099 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9101 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9103 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9105 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9107 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9108 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9110 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9111 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9113 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9115 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9116 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9118 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9120 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9122 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9124 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9126 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9127 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9129 dnl ===================================================================
9130 dnl Check for system lcms2
9131 dnl ===================================================================
9132 if test "$with_system_lcms2" != "yes"; then
9133     SYSTEM_LCMS2=
9135 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9136 if test "$GCC" = "yes"; then
9137     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9139 if test "$COM" = "MSC"; then # override the above
9140     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9143 dnl ===================================================================
9144 dnl Check for system cppunit
9145 dnl ===================================================================
9146 if test "$_os" != "Android" ; then
9147     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9150 dnl ===================================================================
9151 dnl Check whether freetype is available
9152 dnl ===================================================================
9153 if test  "$test_freetype" = "yes"; then
9154     AC_MSG_CHECKING([whether freetype is available])
9155     # FreeType has 3 different kinds of versions
9156     # * release, like 2.4.10
9157     # * libtool, like 13.0.7 (this what pkg-config returns)
9158     # * soname
9159     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9160     #
9161     # 9.9.3 is 2.2.0
9162     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9163     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9164     FilterLibs "${FREETYPE_LIBS}"
9165     FREETYPE_LIBS="${filteredlibs}"
9166     SYSTEM_FREETYPE=TRUE
9167 else
9168     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9169     if test "x$ac_config_site_64bit_host" = xYES; then
9170         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9171     else
9172         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9173     fi
9175 AC_SUBST(FREETYPE_CFLAGS)
9176 AC_SUBST(FREETYPE_LIBS)
9177 AC_SUBST([SYSTEM_FREETYPE])
9179 # ===================================================================
9180 # Check for system libxslt
9181 # to prevent incompatibilities between internal libxml2 and external libxslt,
9182 # or vice versa, use with_system_libxml here
9183 # ===================================================================
9184 if test "$with_system_libxml" = "auto"; then
9185     case "$_os" in
9186     WINNT|iOS|Android)
9187         with_system_libxml="$with_system_libs"
9188         ;;
9189     *)
9190         if test "$enable_fuzzers" != "yes"; then
9191             with_system_libxml=yes
9192         else
9193             with_system_libxml=no
9194         fi
9195         ;;
9196     esac
9199 AC_MSG_CHECKING([which libxslt to use])
9200 if test "$with_system_libxml" = "yes"; then
9201     AC_MSG_RESULT([external])
9202     SYSTEM_LIBXSLT=TRUE
9203     if test "$_os" = "Darwin"; then
9204         dnl make sure to use SDK path
9205         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9206         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9207         dnl omit -L/usr/lib
9208         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9209         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9210     else
9211         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9212         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9213         FilterLibs "${LIBXSLT_LIBS}"
9214         LIBXSLT_LIBS="${filteredlibs}"
9215         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9216         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9217         FilterLibs "${LIBEXSLT_LIBS}"
9218         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9219     fi
9221     dnl Check for xsltproc
9222     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9223     if test "$XSLTPROC" = "no"; then
9224         AC_MSG_ERROR([xsltproc is required])
9225     fi
9226 else
9227     AC_MSG_RESULT([internal])
9228     SYSTEM_LIBXSLT=
9229     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9231 AC_SUBST(SYSTEM_LIBXSLT)
9232 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9233     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9235 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9237 AC_SUBST(LIBEXSLT_CFLAGS)
9238 AC_SUBST(LIBEXSLT_LIBS)
9239 AC_SUBST(LIBXSLT_CFLAGS)
9240 AC_SUBST(LIBXSLT_LIBS)
9241 AC_SUBST(XSLTPROC)
9243 # ===================================================================
9244 # Check for system libxml
9245 # ===================================================================
9246 AC_MSG_CHECKING([which libxml to use])
9247 if test "$with_system_libxml" = "yes"; then
9248     AC_MSG_RESULT([external])
9249     SYSTEM_LIBXML=TRUE
9250     if test "$_os" = "Darwin"; then
9251         dnl make sure to use SDK path
9252         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9253         dnl omit -L/usr/lib
9254         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9255     elif test $_os = iOS; then
9256         dnl make sure to use SDK path
9257         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9258         LIBXML_CFLAGS="-I$usr/include/libxml2"
9259         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9260     else
9261         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9262         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9263         FilterLibs "${LIBXML_LIBS}"
9264         LIBXML_LIBS="${filteredlibs}"
9265     fi
9267     dnl Check for xmllint
9268     AC_PATH_PROG(XMLLINT, xmllint, no)
9269     if test "$XMLLINT" = "no"; then
9270         AC_MSG_ERROR([xmllint is required])
9271     fi
9272 else
9273     AC_MSG_RESULT([internal])
9274     SYSTEM_LIBXML=
9275     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9276     if test "$COM" = "MSC"; then
9277         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9278     fi
9279     if test "$COM" = "MSC"; then
9280         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9281     else
9282         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9283         if test "$_os" = Android; then
9284             LIBXML_LIBS="$LIBXML_LIBS -lm"
9285         fi
9286     fi
9287     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9289 AC_SUBST(SYSTEM_LIBXML)
9290 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9291     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9293 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9294 AC_SUBST(LIBXML_CFLAGS)
9295 AC_SUBST(LIBXML_LIBS)
9296 AC_SUBST(XMLLINT)
9298 # =====================================================================
9299 # Checking for a Python interpreter with version >= 3.3.
9300 # Optionally user can pass an option to configure, i. e.
9301 # ./configure PYTHON=/usr/bin/python
9302 # =====================================================================
9303 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9304     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9305     enable_python=internal
9307 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9308     if test -n "$PYTHON"; then
9309         PYTHON_FOR_BUILD=$PYTHON
9310     else
9311         # This allows a lack of system python with no error, we use internal one in that case.
9312         AM_PATH_PYTHON([3.3],, [:])
9313         # Clean PYTHON_VERSION checked below if cross-compiling
9314         PYTHON_VERSION=""
9315         if test "$PYTHON" != ":"; then
9316             PYTHON_FOR_BUILD=$PYTHON
9317         fi
9318     fi
9320 AC_SUBST(PYTHON_FOR_BUILD)
9322 # Checks for Python to use for Pyuno
9323 AC_MSG_CHECKING([which Python to use for Pyuno])
9324 case "$enable_python" in
9325 no|disable)
9326     if test -z $PYTHON_FOR_BUILD; then
9327         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9328         # requirement from the choice whether to include Python stuff in the installer, but why
9329         # bother?
9330         AC_MSG_ERROR([Python is required at build time.])
9331     fi
9332     enable_python=no
9333     AC_MSG_RESULT([none])
9334     ;;
9335 ""|yes|auto)
9336     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9337         AC_MSG_RESULT([no, overridden by --disable-scripting])
9338         enable_python=no
9339     elif test $build_os = cygwin; then
9340         dnl When building on Windows we don't attempt to use any installed
9341         dnl "system"  Python.
9342         AC_MSG_RESULT([fully internal])
9343         enable_python=internal
9344     elif test "$cross_compiling" = yes; then
9345         AC_MSG_RESULT([system])
9346         enable_python=system
9347     else
9348         # Unset variables set by the above AM_PATH_PYTHON so that
9349         # we actually do check anew.
9350         AC_MSG_RESULT([])
9351         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
9352         AM_PATH_PYTHON([3.3],, [:])
9353         AC_MSG_CHECKING([which Python to use for Pyuno])
9354         if test "$PYTHON" = ":"; then
9355             if test -z "$PYTHON_FOR_BUILD"; then
9356                 AC_MSG_RESULT([fully internal])
9357             else
9358                 AC_MSG_RESULT([internal])
9359             fi
9360             enable_python=internal
9361         else
9362             AC_MSG_RESULT([system])
9363             enable_python=system
9364         fi
9365     fi
9366     ;;
9367 internal)
9368     AC_MSG_RESULT([internal])
9369     ;;
9370 fully-internal)
9371     AC_MSG_RESULT([fully internal])
9372     enable_python=internal
9373     ;;
9374 system)
9375     AC_MSG_RESULT([system])
9376     if test "$_os" = Darwin; then
9377         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9378     fi
9379     ;;
9381     AC_MSG_ERROR([Incorrect --enable-python option])
9382     ;;
9383 esac
9385 if test $enable_python != no; then
9386     BUILD_TYPE="$BUILD_TYPE PYUNO"
9389 if test $enable_python = system; then
9390     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9391         # Fallback: Accept these in the environment, or as set above
9392         # for MacOSX.
9393         :
9394     elif test "$cross_compiling" != yes; then
9395         # Unset variables set by the above AM_PATH_PYTHON so that
9396         # we actually do check anew.
9397         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
9398         # This causes an error if no python command is found
9399         AM_PATH_PYTHON([3.3])
9400         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9401         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9402         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9403         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9404         if test -z "$PKG_CONFIG"; then
9405             PYTHON_CFLAGS="-I$python_include"
9406             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9407         elif $PKG_CONFIG --exists python-$python_version-embed; then
9408             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9409             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9410         elif $PKG_CONFIG --exists python-$python_version; then
9411             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9412             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9413         else
9414             PYTHON_CFLAGS="-I$python_include"
9415             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9416         fi
9417         FilterLibs "${PYTHON_LIBS}"
9418         PYTHON_LIBS="${filteredlibs}"
9419     else
9420         dnl How to find out the cross-compilation Python installation path?
9421         AC_MSG_CHECKING([for python version])
9422         AS_IF([test -n "$PYTHON_VERSION"],
9423               [AC_MSG_RESULT([$PYTHON_VERSION])],
9424               [AC_MSG_RESULT([not found])
9425                AC_MSG_ERROR([no usable python found])])
9426         test -n "$PYTHON_CFLAGS" && break
9427     fi
9429     dnl Check if the headers really work
9430     save_CPPFLAGS="$CPPFLAGS"
9431     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9432     AC_CHECK_HEADER(Python.h)
9433     CPPFLAGS="$save_CPPFLAGS"
9435     # let the PYTHON_FOR_BUILD match the same python installation that
9436     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9437     # better for PythonTests.
9438     PYTHON_FOR_BUILD=$PYTHON
9441 if test "$with_lxml" != no; then
9442     if test -z "$PYTHON_FOR_BUILD"; then
9443         case $build_os in
9444             cygwin)
9445                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9446                 ;;
9447             *)
9448                 if test "$cross_compiling" != yes ; then
9449                     BUILD_TYPE="$BUILD_TYPE LXML"
9450                 fi
9451                 ;;
9452         esac
9453     else
9454         AC_MSG_CHECKING([for python lxml])
9455         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9456             AC_MSG_RESULT([yes])
9457         else
9458             case $build_os in
9459                 cygwin)
9460                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9461                     ;;
9462                 *)
9463                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9464                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9465                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9466                         else
9467                             BUILD_TYPE="$BUILD_TYPE LXML"
9468                             AC_MSG_RESULT([no, using internal lxml])
9469                         fi
9470                     else
9471                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9472                     fi
9473                     ;;
9474             esac
9475         fi
9476     fi
9479 dnl By now enable_python should be "system", "internal" or "no"
9480 case $enable_python in
9481 system)
9482     SYSTEM_PYTHON=TRUE
9484     if test "x$ac_cv_header_Python_h" != "xyes"; then
9485        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9486     fi
9488     AC_LANG_PUSH(C)
9489     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9490     AC_MSG_CHECKING([for correct python library version])
9491        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9492 #include <Python.h>
9494 int main(int argc, char **argv) {
9495    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9496    else return 1;
9498        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9499     AC_LANG_POP(C)
9501     dnl FIXME Check if the Python library can be linked with, too?
9502     ;;
9504 internal)
9505     SYSTEM_PYTHON=
9506     PYTHON_VERSION_MAJOR=3
9507     PYTHON_VERSION_MINOR=8
9508     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9509     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9510         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9511     fi
9512     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9513     BUILD_TYPE="$BUILD_TYPE PYTHON"
9514     if test "$OS" = LINUX -o "$OS" = WNT ; then
9515         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9516     fi
9517     # Embedded Python dies without Home set
9518     if test "$HOME" = ""; then
9519         export HOME=""
9520     fi
9521     ;;
9523     DISABLE_PYTHON=TRUE
9524     SYSTEM_PYTHON=
9525     ;;
9527     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9528     ;;
9529 esac
9531 AC_SUBST(DISABLE_PYTHON)
9532 AC_SUBST(SYSTEM_PYTHON)
9533 AC_SUBST(PYTHON_CFLAGS)
9534 AC_SUBST(PYTHON_LIBS)
9535 AC_SUBST(PYTHON_VERSION)
9536 AC_SUBST(PYTHON_VERSION_MAJOR)
9537 AC_SUBST(PYTHON_VERSION_MINOR)
9539 ENABLE_MARIADBC=
9540 MARIADBC_MAJOR=1
9541 MARIADBC_MINOR=0
9542 MARIADBC_MICRO=2
9543 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9544 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9545     ENABLE_MARIADBC=TRUE
9546     AC_MSG_RESULT([yes])
9547     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9548 else
9549     AC_MSG_RESULT([no])
9551 AC_SUBST(ENABLE_MARIADBC)
9552 AC_SUBST(MARIADBC_MAJOR)
9553 AC_SUBST(MARIADBC_MINOR)
9554 AC_SUBST(MARIADBC_MICRO)
9556 if test "$ENABLE_MARIADBC" = "TRUE"; then
9557     dnl ===================================================================
9558     dnl Check for system MariaDB
9559     dnl ===================================================================
9560     AC_MSG_CHECKING([which MariaDB to use])
9561     if test "$with_system_mariadb" = "yes"; then
9562         AC_MSG_RESULT([external])
9563         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9564         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9565         if test -z "$MARIADBCONFIG"; then
9566             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9567             if test -z "$MARIADBCONFIG"; then
9568                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9569                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9570             fi
9571         fi
9572         AC_MSG_CHECKING([MariaDB version])
9573         MARIADB_VERSION=`$MARIADBCONFIG --version`
9574         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9575         if test "$MARIADB_MAJOR" -ge "5"; then
9576             AC_MSG_RESULT([OK])
9577         else
9578             AC_MSG_ERROR([too old, use 5.0.x or later])
9579         fi
9580         AC_MSG_CHECKING([for MariaDB Client library])
9581         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9582         if test "$COM_IS_CLANG" = TRUE; then
9583             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9584         fi
9585         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9586         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9587         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9588         dnl linux32:
9589         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9590             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9591             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9592                 | sed -e 's|/lib64/|/lib/|')
9593         fi
9594         FilterLibs "${MARIADB_LIBS}"
9595         MARIADB_LIBS="${filteredlibs}"
9596         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9597         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9598         if test "$enable_bundle_mariadb" = "yes"; then
9599             AC_MSG_RESULT([yes])
9600             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9601             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9603 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9605 /g' | grep -E '(mysqlclient|mariadb)')
9606             if test "$_os" = "Darwin"; then
9607                 LIBMARIADB=${LIBMARIADB}.dylib
9608             elif test "$_os" = "WINNT"; then
9609                 LIBMARIADB=${LIBMARIADB}.dll
9610             else
9611                 LIBMARIADB=${LIBMARIADB}.so
9612             fi
9613             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9614             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9615             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9616                 AC_MSG_RESULT([found.])
9617                 PathFormat "$LIBMARIADB_PATH"
9618                 LIBMARIADB_PATH="$formatted_path"
9619             else
9620                 AC_MSG_ERROR([not found.])
9621             fi
9622         else
9623             AC_MSG_RESULT([no])
9624             BUNDLE_MARIADB_CONNECTOR_C=
9625         fi
9626     else
9627         AC_MSG_RESULT([internal])
9628         SYSTEM_MARIADB_CONNECTOR_C=
9629         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9630         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9631         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9632     fi
9634     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9635     AC_SUBST(MARIADB_CFLAGS)
9636     AC_SUBST(MARIADB_LIBS)
9637     AC_SUBST(LIBMARIADB)
9638     AC_SUBST(LIBMARIADB_PATH)
9639     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9642 dnl ===================================================================
9643 dnl Check for system hsqldb
9644 dnl ===================================================================
9645 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9646     HSQLDB_USE_JDBC_4_1=
9647     AC_MSG_CHECKING([which hsqldb to use])
9648     if test "$with_system_hsqldb" = "yes"; then
9649         AC_MSG_RESULT([external])
9650         SYSTEM_HSQLDB=TRUE
9651         if test -z $HSQLDB_JAR; then
9652             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9653         fi
9654         if ! test -f $HSQLDB_JAR; then
9655                AC_MSG_ERROR(hsqldb.jar not found.)
9656         fi
9657         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9658         export HSQLDB_JAR
9659         if $PERL -e \
9660            'use Archive::Zip;
9661             my $file = "$ENV{'HSQLDB_JAR'}";
9662             my $zip = Archive::Zip->new( $file );
9663             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9664             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9665             {
9666                 push @l, split(/\n/, $mf);
9667                 foreach my $line (@l)
9668                 {
9669                     if ($line =~ m/Specification-Version:/)
9670                     {
9671                         ($t, $version) = split (/:/,$line);
9672                         $version =~ s/^\s//;
9673                         ($a, $b, $c, $d) = split (/\./,$version);
9674                         if ($c == "0" && $d > "8")
9675                         {
9676                             exit 0;
9677                         }
9678                         else
9679                         {
9680                             exit 1;
9681                         }
9682                     }
9683                 }
9684             }
9685             else
9686             {
9687                 exit 1;
9688             }'; then
9689             AC_MSG_RESULT([yes])
9690         else
9691             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9692         fi
9693     else
9694         AC_MSG_RESULT([internal])
9695         SYSTEM_HSQLDB=
9696         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9697         NEED_ANT=TRUE
9698         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9699         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9700         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9701             AC_MSG_RESULT([yes])
9702             HSQLDB_USE_JDBC_4_1=TRUE
9703         else
9704             AC_MSG_RESULT([no])
9705         fi
9706     fi
9707 else
9708     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9709         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9710     fi
9712 AC_SUBST(SYSTEM_HSQLDB)
9713 AC_SUBST(HSQLDB_JAR)
9714 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9716 dnl ===================================================================
9717 dnl Check for PostgreSQL stuff
9718 dnl ===================================================================
9719 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9720 if test "x$enable_postgresql_sdbc" != "xno"; then
9721     AC_MSG_RESULT([yes])
9722     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9724     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9725         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9726     fi
9727     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9728         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9729     fi
9731     postgres_interface=""
9732     if test "$with_system_postgresql" = "yes"; then
9733         postgres_interface="external PostgreSQL"
9734         SYSTEM_POSTGRESQL=TRUE
9735         if test "$_os" = Darwin; then
9736             supp_path=''
9737             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9738                 pg_supp_path="$P_SEP$d$pg_supp_path"
9739             done
9740         fi
9741         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9742         if test -n "$PGCONFIG"; then
9743             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9744             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9745         else
9746             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9747               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9748               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9749             ],[
9750               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9751             ])
9752         fi
9753         FilterLibs "${POSTGRESQL_LIB}"
9754         POSTGRESQL_LIB="${filteredlibs}"
9755     else
9756         # if/when anything else than PostgreSQL uses Kerberos,
9757         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9758         WITH_KRB5=
9759         WITH_GSSAPI=
9760         case "$_os" in
9761         Darwin)
9762             # macOS has system MIT Kerberos 5 since 10.4
9763             if test "$with_krb5" != "no"; then
9764                 WITH_KRB5=TRUE
9765                 save_LIBS=$LIBS
9766                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9767                 # that the libraries where these functions are located on macOS will change, is it?
9768                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9769                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9770                 KRB5_LIBS=$LIBS
9771                 LIBS=$save_LIBS
9772                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9773                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9774                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9775                 LIBS=$save_LIBS
9776             fi
9777             if test "$with_gssapi" != "no"; then
9778                 WITH_GSSAPI=TRUE
9779                 save_LIBS=$LIBS
9780                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9781                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9782                 GSSAPI_LIBS=$LIBS
9783                 LIBS=$save_LIBS
9784             fi
9785             ;;
9786         WINNT)
9787             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9788                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9789             fi
9790             ;;
9791         Linux|GNU|*BSD|DragonFly)
9792             if test "$with_krb5" != "no"; then
9793                 WITH_KRB5=TRUE
9794                 save_LIBS=$LIBS
9795                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9796                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9797                 KRB5_LIBS=$LIBS
9798                 LIBS=$save_LIBS
9799                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9800                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9801                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9802                 LIBS=$save_LIBS
9803             fi
9804             if test "$with_gssapi" != "no"; then
9805                 WITH_GSSAPI=TRUE
9806                 save_LIBS=$LIBS
9807                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9808                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9809                 GSSAPI_LIBS=$LIBS
9810                 LIBS=$save_LIBS
9811             fi
9812             ;;
9813         *)
9814             if test "$with_krb5" = "yes"; then
9815                 WITH_KRB5=TRUE
9816                 save_LIBS=$LIBS
9817                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9818                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9819                 KRB5_LIBS=$LIBS
9820                 LIBS=$save_LIBS
9821                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9822                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9823                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9824                 LIBS=$save_LIBS
9825             fi
9826             if test "$with_gssapi" = "yes"; then
9827                 WITH_GSSAPI=TRUE
9828                 save_LIBS=$LIBS
9829                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9830                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9831                 LIBS=$save_LIBS
9832                 GSSAPI_LIBS=$LIBS
9833             fi
9834         esac
9836         if test -n "$with_libpq_path"; then
9837             SYSTEM_POSTGRESQL=TRUE
9838             postgres_interface="external libpq"
9839             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9840             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9841         else
9842             SYSTEM_POSTGRESQL=
9843             postgres_interface="internal"
9844             POSTGRESQL_LIB=""
9845             POSTGRESQL_INC="%OVERRIDE_ME%"
9846             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9847         fi
9848     fi
9850     AC_MSG_CHECKING([PostgreSQL C interface])
9851     AC_MSG_RESULT([$postgres_interface])
9853     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9854         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9855         save_CFLAGS=$CFLAGS
9856         save_CPPFLAGS=$CPPFLAGS
9857         save_LIBS=$LIBS
9858         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9859         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9860         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9861         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9862             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9863         CFLAGS=$save_CFLAGS
9864         CPPFLAGS=$save_CPPFLAGS
9865         LIBS=$save_LIBS
9866     fi
9867     BUILD_POSTGRESQL_SDBC=TRUE
9868 else
9869     AC_MSG_RESULT([no])
9871 AC_SUBST(WITH_KRB5)
9872 AC_SUBST(WITH_GSSAPI)
9873 AC_SUBST(GSSAPI_LIBS)
9874 AC_SUBST(KRB5_LIBS)
9875 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9876 AC_SUBST(SYSTEM_POSTGRESQL)
9877 AC_SUBST(POSTGRESQL_INC)
9878 AC_SUBST(POSTGRESQL_LIB)
9880 dnl ===================================================================
9881 dnl Check for Firebird stuff
9882 dnl ===================================================================
9883 ENABLE_FIREBIRD_SDBC=
9884 if test "$enable_firebird_sdbc" = "yes" ; then
9885     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9887     dnl ===================================================================
9888     dnl Check for system Firebird
9889     dnl ===================================================================
9890     AC_MSG_CHECKING([which Firebird to use])
9891     if test "$with_system_firebird" = "yes"; then
9892         AC_MSG_RESULT([external])
9893         SYSTEM_FIREBIRD=TRUE
9894         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9895         if test -z "$FIREBIRDCONFIG"; then
9896             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9897             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9898                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9899             ])
9900             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9901         else
9902             AC_MSG_NOTICE([fb_config found])
9903             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9904             AC_MSG_CHECKING([for Firebird Client library])
9905             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9906             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9907             FilterLibs "${FIREBIRD_LIBS}"
9908             FIREBIRD_LIBS="${filteredlibs}"
9909         fi
9910         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9911         AC_MSG_CHECKING([Firebird version])
9912         if test -n "${FIREBIRD_VERSION}"; then
9913             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9914             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9915             if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9916                 AC_MSG_RESULT([OK])
9917             else
9918                 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9919             fi
9920         else
9921             save_CFLAGS="${CFLAGS}"
9922             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9923             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9924 #if defined(FB_API_VER) && FB_API_VER == 30
9925 int fb_api_is_30(void) { return 0; }
9926 #else
9927 #error "Wrong Firebird API version"
9928 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9929             CFLAGS="$save_CFLAGS"
9930         fi
9931         ENABLE_FIREBIRD_SDBC=TRUE
9932         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9933     elif test "$enable_database_connectivity" != yes; then
9934         AC_MSG_RESULT([none])
9935     elif test "$cross_compiling" = "yes"; then
9936         AC_MSG_RESULT([none])
9937     else
9938         dnl Embedded Firebird has version 3.0
9939         AC_DEFINE(HAVE_FIREBIRD_30, 1)
9940         dnl We need libatomic_ops for any non X86/X64 system
9941         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9942             dnl ===================================================================
9943             dnl Check for system libatomic_ops
9944             dnl ===================================================================
9945             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[ATOMIC_OPS],[atomic_ops >= 0.7.2])
9946             if test "$with_system_libatomic_ops" = "yes"; then
9947                 SYSTEM_LIBATOMIC_OPS=TRUE
9948                 AC_CHECK_HEADERS(atomic_ops.h, [],
9949                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9950             else
9951                 SYSTEM_LIBATOMIC_OPS=
9952                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9953                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9954                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9955             fi
9956         fi
9958         AC_MSG_RESULT([internal])
9959         SYSTEM_FIREBIRD=
9960         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9961         FIREBIRD_LIBS="-lfbclient"
9963         if test "$with_system_libtommath" = "yes"; then
9964             SYSTEM_LIBTOMMATH=TRUE
9965             dnl check for tommath presence
9966             save_LIBS=$LIBS
9967             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9968             AC_CHECK_LIB(tommath, mp_init, TOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9969             LIBS=$save_LIBS
9970         else
9971             SYSTEM_LIBTOMMATH=
9972             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9973             LIBTOMMATH_LIBS="-ltommath"
9974             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9975         fi
9977         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9978         ENABLE_FIREBIRD_SDBC=TRUE
9979         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9980     fi
9982 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9983 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9984 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9985 AC_SUBST(LIBATOMIC_OPS_LIBS)
9986 AC_SUBST(SYSTEM_FIREBIRD)
9987 AC_SUBST(FIREBIRD_CFLAGS)
9988 AC_SUBST(FIREBIRD_LIBS)
9989 AC_SUBST([TOMMATH_CFLAGS])
9990 AC_SUBST([TOMMATH_LIBS])
9992 dnl ===================================================================
9993 dnl Check for system curl
9994 dnl ===================================================================
9995 AC_MSG_CHECKING([which libcurl to use])
9996 if test "$with_system_curl" = "auto"; then
9997     with_system_curl="$with_system_libs"
10000 if test "$with_system_curl" = "yes"; then
10001     AC_MSG_RESULT([external])
10002     SYSTEM_CURL=TRUE
10004     # First try PKGCONFIG and then fall back
10005     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10007     if test -n "$CURL_PKG_ERRORS"; then
10008         AC_PATH_PROG(CURLCONFIG, curl-config)
10009         if test -z "$CURLCONFIG"; then
10010             AC_MSG_ERROR([curl development files not found])
10011         fi
10012         CURL_LIBS=`$CURLCONFIG --libs`
10013         FilterLibs "${CURL_LIBS}"
10014         CURL_LIBS="${filteredlibs}"
10015         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10016         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10018         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10019         case $curl_version in
10020         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10021         dnl so they need to be doubled to end up in the configure script
10022         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10023             AC_MSG_RESULT([yes])
10024             ;;
10025         *)
10026             AC_MSG_ERROR([no, you have $curl_version])
10027             ;;
10028         esac
10029     fi
10031     ENABLE_CURL=TRUE
10032 else
10033     AC_MSG_RESULT([internal])
10034     SYSTEM_CURL=
10035     BUILD_TYPE="$BUILD_TYPE CURL"
10036     ENABLE_CURL=TRUE
10038 AC_SUBST(SYSTEM_CURL)
10039 AC_SUBST(CURL_CFLAGS)
10040 AC_SUBST(CURL_LIBS)
10041 AC_SUBST(ENABLE_CURL)
10043 dnl ===================================================================
10044 dnl Check for system boost
10045 dnl ===================================================================
10046 AC_MSG_CHECKING([which boost to use])
10047 if test "$with_system_boost" = "yes"; then
10048     AC_MSG_RESULT([external])
10049     SYSTEM_BOOST=TRUE
10050     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10051     AX_BOOST_DATE_TIME
10052     AX_BOOST_FILESYSTEM
10053     AX_BOOST_IOSTREAMS
10054     AX_BOOST_LOCALE
10055     AC_LANG_PUSH([C++])
10056     save_CXXFLAGS=$CXXFLAGS
10057     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10058     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10059        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10060     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10061        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10062     CXXFLAGS=$save_CXXFLAGS
10063     AC_LANG_POP([C++])
10064     # this is in m4/ax_boost_base.m4
10065     FilterLibs "${BOOST_LDFLAGS}"
10066     BOOST_LDFLAGS="${filteredlibs}"
10067 else
10068     AC_MSG_RESULT([internal])
10069     BUILD_TYPE="$BUILD_TYPE BOOST"
10070     SYSTEM_BOOST=
10071     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10072         # use warning-suppressing wrapper headers
10073         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10074     else
10075         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10076     fi
10078 AC_SUBST(SYSTEM_BOOST)
10080 dnl ===================================================================
10081 dnl Check for system mdds
10082 dnl ===================================================================
10083 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10085 dnl ===================================================================
10086 dnl Check for system glm
10087 dnl ===================================================================
10088 AC_MSG_CHECKING([which glm to use])
10089 if test "$with_system_glm" = "yes"; then
10090     AC_MSG_RESULT([external])
10091     SYSTEM_GLM=TRUE
10092     AC_LANG_PUSH([C++])
10093     AC_CHECK_HEADER([glm/glm.hpp], [],
10094        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10095     AC_LANG_POP([C++])
10096 else
10097     AC_MSG_RESULT([internal])
10098     BUILD_TYPE="$BUILD_TYPE GLM"
10099     SYSTEM_GLM=
10100     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10102 AC_SUBST([GLM_CFLAGS])
10103 AC_SUBST([SYSTEM_GLM])
10105 dnl ===================================================================
10106 dnl Check for system odbc
10107 dnl ===================================================================
10108 AC_MSG_CHECKING([which odbc headers to use])
10109 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
10110     AC_MSG_RESULT([external])
10111     SYSTEM_ODBC_HEADERS=TRUE
10113     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10114         save_CPPFLAGS=$CPPFLAGS
10115         find_winsdk
10116         PathFormat "$winsdktest"
10117         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"
10118         AC_CHECK_HEADER(sqlext.h, [],
10119             [AC_MSG_ERROR(odbc not found. install odbc)],
10120             [#include <windows.h>])
10121         CPPFLAGS=$save_CPPFLAGS
10122     else
10123         AC_CHECK_HEADER(sqlext.h, [],
10124             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10125     fi
10126 elif test "$enable_database_connectivity" != yes; then
10127     AC_MSG_RESULT([none])
10128 else
10129     AC_MSG_RESULT([internal])
10130     SYSTEM_ODBC_HEADERS=
10132 AC_SUBST(SYSTEM_ODBC_HEADERS)
10134 dnl ===================================================================
10135 dnl Enable LDAP support
10136 dnl ===================================================================
10138 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10139 AC_MSG_CHECKING([whether to enable LDAP support])
10140     if test "$enable_ldap" != "yes"; then
10141         AC_MSG_RESULT([no])
10142         ENABLE_LDAP=""
10143         enable_ldap=no
10144     else
10145         AC_MSG_RESULT([yes])
10146         ENABLE_LDAP="TRUE"
10147     fi
10149 AC_SUBST(ENABLE_LDAP)
10151 dnl ===================================================================
10152 dnl Check for system openldap
10153 dnl ===================================================================
10155 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10156 AC_MSG_CHECKING([which openldap library to use])
10157 if test "$with_system_openldap" = "yes"; then
10158     AC_MSG_RESULT([external])
10159     SYSTEM_OPENLDAP=TRUE
10160     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10161     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10162     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10163 else
10164     AC_MSG_RESULT([internal])
10165     SYSTEM_OPENLDAP=
10166     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10169 AC_SUBST(SYSTEM_OPENLDAP)
10171 dnl ===================================================================
10172 dnl Check for system NSS
10173 dnl ===================================================================
10174 if test "$enable_fuzzers" != "yes"; then
10175     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10176     AC_DEFINE(HAVE_FEATURE_NSS)
10177     ENABLE_NSS="TRUE"
10178     AC_DEFINE(ENABLE_NSS)
10179 elif test $_os != iOS ; then
10180     with_tls=openssl
10182 AC_SUBST(ENABLE_NSS)
10184 dnl ===================================================================
10185 dnl Check for TLS/SSL and cryptographic implementation to use
10186 dnl ===================================================================
10187 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10188 if test -n "$with_tls"; then
10189     case $with_tls in
10190     openssl)
10191         AC_DEFINE(USE_TLS_OPENSSL)
10192         TLS=OPENSSL
10193         AC_MSG_RESULT([$TLS])
10195         if test "$enable_openssl" != "yes"; then
10196             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10197         fi
10199         # warn that OpenSSL has been selected but not all TLS code has this option
10200         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10201         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10202         ;;
10203     nss)
10204         AC_DEFINE(USE_TLS_NSS)
10205         TLS=NSS
10206         AC_MSG_RESULT([$TLS])
10207         ;;
10208     no)
10209         AC_MSG_RESULT([none])
10210         AC_MSG_WARN([Skipping TLS/SSL])
10211         ;;
10212     *)
10213         AC_MSG_RESULT([])
10214         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10215 openssl - OpenSSL
10216 nss - Mozilla's Network Security Services (NSS)
10217     ])
10218         ;;
10219     esac
10220 else
10221     # default to using NSS, it results in smaller oox lib
10222     AC_DEFINE(USE_TLS_NSS)
10223     TLS=NSS
10224     AC_MSG_RESULT([$TLS])
10226 AC_SUBST(TLS)
10228 dnl ===================================================================
10229 dnl Check for system sane
10230 dnl ===================================================================
10231 AC_MSG_CHECKING([which sane header to use])
10232 if test "$with_system_sane" = "yes"; then
10233     AC_MSG_RESULT([external])
10234     AC_CHECK_HEADER(sane/sane.h, [],
10235       [AC_MSG_ERROR(sane not found. install sane)], [])
10236 else
10237     AC_MSG_RESULT([internal])
10238     BUILD_TYPE="$BUILD_TYPE SANE"
10241 dnl ===================================================================
10242 dnl Check for system icu
10243 dnl ===================================================================
10244 SYSTEM_GENBRK=
10245 SYSTEM_GENCCODE=
10246 SYSTEM_GENCMN=
10248 ICU_MAJOR=67
10249 ICU_MINOR=1
10250 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10251 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10252 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10253 AC_MSG_CHECKING([which icu to use])
10254 if test "$with_system_icu" = "yes"; then
10255     AC_MSG_RESULT([external])
10256     SYSTEM_ICU=TRUE
10257     AC_LANG_PUSH([C++])
10258     AC_MSG_CHECKING([for unicode/rbbi.h])
10259     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10260     AC_LANG_POP([C++])
10262     if test "$cross_compiling" != "yes"; then
10263         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10264         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10265         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10266         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10267     fi
10269     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10270         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10271         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10272         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10273         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10274         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10275             AC_MSG_RESULT([yes])
10276         else
10277             AC_MSG_RESULT([no])
10278             if test "$with_system_icu_for_build" != "force"; then
10279                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10280 You can use --with-system-icu-for-build=force to use it anyway.])
10281             fi
10282         fi
10283     fi
10285     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10286         # using the system icu tools can lead to version confusion, use the
10287         # ones from the build environment when cross-compiling
10288         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10289         if test -z "$SYSTEM_GENBRK"; then
10290             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10291         fi
10292         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10293         if test -z "$SYSTEM_GENCCODE"; then
10294             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10295         fi
10296         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10297         if test -z "$SYSTEM_GENCMN"; then
10298             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10299         fi
10300         if test "$ICU_MAJOR" -ge "49"; then
10301             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10302             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10303             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10304         else
10305             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10306             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10307             ICU_RECLASSIFIED_HEBREW_LETTER=
10308         fi
10309     fi
10311     if test "$cross_compiling" = "yes"; then
10312         if test "$ICU_MAJOR" -ge "50"; then
10313             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10314             ICU_MINOR=""
10315         fi
10316     fi
10317 else
10318     AC_MSG_RESULT([internal])
10319     SYSTEM_ICU=
10320     BUILD_TYPE="$BUILD_TYPE ICU"
10321     # surprisingly set these only for "internal" (to be used by various other
10322     # external libs): the system icu-config is quite unhelpful and spits out
10323     # dozens of weird flags and also default path -I/usr/include
10324     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10325     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10327 if test "$ICU_MAJOR" -ge "59"; then
10328     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10329     # with -std=c++11 but not all external libraries can be built with that,
10330     # for those use a bit-compatible typedef uint16_t UChar; see
10331     # icu/source/common/unicode/umachine.h
10332     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10333 else
10334     ICU_UCHAR_TYPE=""
10336 AC_SUBST(SYSTEM_ICU)
10337 AC_SUBST(SYSTEM_GENBRK)
10338 AC_SUBST(SYSTEM_GENCCODE)
10339 AC_SUBST(SYSTEM_GENCMN)
10340 AC_SUBST(ICU_MAJOR)
10341 AC_SUBST(ICU_MINOR)
10342 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10343 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10344 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10345 AC_SUBST(ICU_CFLAGS)
10346 AC_SUBST(ICU_LIBS)
10347 AC_SUBST(ICU_UCHAR_TYPE)
10349 dnl ==================================================================
10350 dnl Breakpad
10351 dnl ==================================================================
10352 DEFAULT_CRASHDUMP_VALUE="true"
10353 AC_MSG_CHECKING([whether to enable breakpad])
10354 if test "$enable_breakpad" != yes; then
10355     AC_MSG_RESULT([no])
10356 else
10357     AC_MSG_RESULT([yes])
10358     ENABLE_BREAKPAD="TRUE"
10359     AC_DEFINE(ENABLE_BREAKPAD)
10360     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10361     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10363     AC_MSG_CHECKING([for disable crash dump])
10364     if test "$enable_crashdump" = no; then
10365         DEFAULT_CRASHDUMP_VALUE="false"
10366         AC_MSG_RESULT([yes])
10367     else
10368        AC_MSG_RESULT([no])
10369     fi
10371     AC_MSG_CHECKING([for crashreport config])
10372     if test "$with_symbol_config" = "no"; then
10373         BREAKPAD_SYMBOL_CONFIG="invalid"
10374         AC_MSG_RESULT([no])
10375     else
10376         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10377         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10378         AC_MSG_RESULT([yes])
10379     fi
10380     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10382 AC_SUBST(ENABLE_BREAKPAD)
10383 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10385 dnl ==================================================================
10386 dnl libfuzzer
10387 dnl ==================================================================
10388 AC_MSG_CHECKING([whether to enable fuzzers])
10389 if test "$enable_fuzzers" != yes; then
10390     AC_MSG_RESULT([no])
10391 else
10392     AC_MSG_RESULT([yes])
10393     ENABLE_FUZZERS="TRUE"
10394     AC_DEFINE([ENABLE_FUZZERS],1)
10395     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10397 AC_SUBST(ENABLE_FUZZERS)
10399 dnl ===================================================================
10400 dnl Orcus
10401 dnl ===================================================================
10402 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10403 if test "$with_system_orcus" != "yes"; then
10404     if test "$SYSTEM_BOOST" = "TRUE"; then
10405         # ===========================================================
10406         # Determine if we are going to need to link with Boost.System
10407         # ===========================================================
10408         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10409         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10410         dnl in documentation has no effect.
10411         AC_MSG_CHECKING([if we need to link with Boost.System])
10412         AC_LANG_PUSH([C++])
10413         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10414                 @%:@include <boost/version.hpp>
10415             ]],[[
10416                 #if BOOST_VERSION >= 105000
10417                 #   error yes, we need to link with Boost.System
10418                 #endif
10419             ]])],[
10420                 AC_MSG_RESULT([no])
10421             ],[
10422                 AC_MSG_RESULT([yes])
10423                 AX_BOOST_SYSTEM
10424         ])
10425         AC_LANG_POP([C++])
10426     fi
10428 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10429 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10430 AC_SUBST([BOOST_SYSTEM_LIB])
10431 AC_SUBST(SYSTEM_LIBORCUS)
10433 dnl ===================================================================
10434 dnl HarfBuzz
10435 dnl ===================================================================
10436 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10437                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10438                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10440 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10441                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10442                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10444 if test "$COM" = "MSC"; then # override the above
10445     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10446     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10449 if test "$with_system_harfbuzz" = "yes"; then
10450     if test "$with_system_graphite" = "no"; then
10451         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10452     fi
10453     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10454     save_LIBS="$LIBS"
10455     save_CFLAGS="$CFLAGS"
10456     LIBS="$LIBS $HARFBUZZ_LIBS"
10457     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10458     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10459     LIBS="$save_LIBS"
10460     CFLAGS="$save_CFLAGS"
10461 else
10462     if test "$with_system_graphite" = "yes"; then
10463         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10464     fi
10467 AC_MSG_CHECKING([whether to use X11])
10468 dnl ***************************************
10469 dnl testing for X libraries and includes...
10470 dnl ***************************************
10471 if test "$USING_X11" = TRUE; then
10472     AC_DEFINE(HAVE_FEATURE_X11)
10474 AC_MSG_RESULT([$USING_X11])
10476 if test "$USING_X11" = TRUE; then
10477     AC_PATH_X
10478     AC_PATH_XTRA
10479     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10481     if test -z "$x_includes"; then
10482         x_includes="default_x_includes"
10483     fi
10484     if test -z "$x_libraries"; then
10485         x_libraries="default_x_libraries"
10486     fi
10487     CFLAGS="$CFLAGS $X_CFLAGS"
10488     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10489     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10490 else
10491     x_includes="no_x_includes"
10492     x_libraries="no_x_libraries"
10495 if test "$USING_X11" = TRUE; then
10496     dnl ===================================================================
10497     dnl Check for extension headers
10498     dnl ===================================================================
10499     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10500      [#include <X11/extensions/shape.h>])
10502     # vcl needs ICE and SM
10503     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10504     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10505         [AC_MSG_ERROR(ICE library not found)])
10506     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10507     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10508         [AC_MSG_ERROR(SM library not found)])
10511 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10512     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10513     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10516 dnl ===================================================================
10517 dnl Check for system Xrender
10518 dnl ===================================================================
10519 AC_MSG_CHECKING([whether to use Xrender])
10520 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10521     AC_MSG_RESULT([yes])
10522     PKG_CHECK_MODULES(XRENDER, xrender)
10523     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10524     FilterLibs "${XRENDER_LIBS}"
10525     XRENDER_LIBS="${filteredlibs}"
10526     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10527       [AC_MSG_ERROR(libXrender not found or functional)], [])
10528     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10529       [AC_MSG_ERROR(Xrender not found. install X)], [])
10530 else
10531     AC_MSG_RESULT([no])
10533 AC_SUBST(XRENDER_CFLAGS)
10534 AC_SUBST(XRENDER_LIBS)
10536 dnl ===================================================================
10537 dnl Check for XRandr
10538 dnl ===================================================================
10539 AC_MSG_CHECKING([whether to enable RandR support])
10540 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10541     AC_MSG_RESULT([yes])
10542     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10543     if test "$ENABLE_RANDR" != "TRUE"; then
10544         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10545                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10546         XRANDR_CFLAGS=" "
10547         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10548           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10549         XRANDR_LIBS="-lXrandr "
10550         ENABLE_RANDR="TRUE"
10551     fi
10552     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10553     FilterLibs "${XRANDR_LIBS}"
10554     XRANDR_LIBS="${filteredlibs}"
10555 else
10556     ENABLE_RANDR=""
10557     AC_MSG_RESULT([no])
10559 AC_SUBST(XRANDR_CFLAGS)
10560 AC_SUBST(XRANDR_LIBS)
10561 AC_SUBST(ENABLE_RANDR)
10563 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10564     if test -z "$WITH_WEBDAV"; then
10565         WITH_WEBDAV="serf"
10566     fi
10568 if test $_os = iOS -o $_os = Android; then
10569     WITH_WEBDAV="no"
10571 AC_MSG_CHECKING([for webdav library])
10572 case "$WITH_WEBDAV" in
10573 serf)
10574     AC_MSG_RESULT([serf])
10575     # Check for system apr-util
10576     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10577                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10578                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10579     if test "$COM" = "MSC"; then
10580         APR_LIB_DIR="LibR"
10581         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10582         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10583     fi
10585     # Check for system serf
10586     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10587                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10588     if test "$COM" = "MSC"; then
10589         SERF_LIB_DIR="Release"
10590         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10591         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10592     fi
10593     ;;
10594 neon)
10595     AC_MSG_RESULT([neon])
10596     # Check for system neon
10597     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10598     if test "$with_system_neon" = "yes"; then
10599         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10600     else
10601         NEON_VERSION=0311
10602     fi
10603     AC_SUBST(NEON_VERSION)
10604     ;;
10606     AC_MSG_RESULT([none, disabled])
10607     WITH_WEBDAV=""
10608     ;;
10609 esac
10610 AC_SUBST(WITH_WEBDAV)
10612 dnl ===================================================================
10613 dnl Check for disabling cve_tests
10614 dnl ===================================================================
10615 AC_MSG_CHECKING([whether to execute CVE tests])
10616 # If not explicitly enabled or disabled, default
10617 if test -z "$enable_cve_tests"; then
10618     case "$OS" in
10619     WNT)
10620         # Default cves off for Windows with its wild and wonderful
10621         # variety of AV software kicking in and panicking
10622         enable_cve_tests=no
10623         ;;
10624     *)
10625         # otherwise yes
10626         enable_cve_tests=yes
10627         ;;
10628     esac
10630 if test "$enable_cve_tests" = "no"; then
10631     AC_MSG_RESULT([no])
10632     DISABLE_CVE_TESTS=TRUE
10633     AC_SUBST(DISABLE_CVE_TESTS)
10634 else
10635     AC_MSG_RESULT([yes])
10638 dnl ===================================================================
10639 dnl Check for enabling chart XShape tests
10640 dnl ===================================================================
10641 AC_MSG_CHECKING([whether to execute chart XShape tests])
10642 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10643     AC_MSG_RESULT([yes])
10644     ENABLE_CHART_TESTS=TRUE
10645     AC_SUBST(ENABLE_CHART_TESTS)
10646 else
10647     AC_MSG_RESULT([no])
10650 dnl ===================================================================
10651 dnl Check for system openssl
10652 dnl ===================================================================
10653 DISABLE_OPENSSL=
10654 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10655 if test "$enable_openssl" = "yes"; then
10656     AC_MSG_RESULT([no])
10657     if test "$_os" = Darwin ; then
10658         # OpenSSL is deprecated when building for 10.7 or later.
10659         #
10660         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10661         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10663         with_system_openssl=no
10664         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10665     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10666             && test "$with_system_openssl" != "no"; then
10667         with_system_openssl=yes
10668         SYSTEM_OPENSSL=TRUE
10669         OPENSSL_CFLAGS=
10670         OPENSSL_LIBS="-lssl -lcrypto"
10671     else
10672         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10673     fi
10674     if test "$with_system_openssl" = "yes"; then
10675         AC_MSG_CHECKING([whether openssl supports SHA512])
10676         AC_LANG_PUSH([C])
10677         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10678             SHA512_CTX context;
10679 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10680         AC_LANG_POP(C)
10681     fi
10682 else
10683     AC_MSG_RESULT([yes])
10684     DISABLE_OPENSSL=TRUE
10686     # warn that although OpenSSL is disabled, system libraries may depend on it
10687     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10688     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10691 AC_SUBST([DISABLE_OPENSSL])
10693 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10694     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10695         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10696         enable_cipher_openssl_backend=no
10697     else
10698         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10699     fi
10701 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10702 ENABLE_CIPHER_OPENSSL_BACKEND=
10703 if test "$enable_cipher_openssl_backend" = yes; then
10704     AC_MSG_RESULT([yes])
10705     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10706 else
10707     AC_MSG_RESULT([no])
10709 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10711 dnl ===================================================================
10712 dnl Check for building gnutls
10713 dnl ===================================================================
10714 AC_MSG_CHECKING([whether to use gnutls])
10715 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10716     AC_MSG_RESULT([yes])
10717     AM_PATH_LIBGCRYPT()
10718     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10719         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10720                       available in the system to use as replacement.]]))
10721     FilterLibs "${LIBGCRYPT_LIBS}"
10722     LIBGCRYPT_LIBS="${filteredlibs}"
10723 else
10724     AC_MSG_RESULT([no])
10727 AC_SUBST([LIBGCRYPT_CFLAGS])
10728 AC_SUBST([LIBGCRYPT_LIBS])
10730 dnl ===================================================================
10731 dnl Check for system redland
10732 dnl ===================================================================
10733 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10734 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10735 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10736 if test "$with_system_redland" = "yes"; then
10737     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10738             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10739 else
10740     RAPTOR_MAJOR="0"
10741     RASQAL_MAJOR="3"
10742     REDLAND_MAJOR="0"
10744 AC_SUBST(RAPTOR_MAJOR)
10745 AC_SUBST(RASQAL_MAJOR)
10746 AC_SUBST(REDLAND_MAJOR)
10748 dnl ===================================================================
10749 dnl Check for system hunspell
10750 dnl ===================================================================
10751 AC_MSG_CHECKING([which libhunspell to use])
10752 if test "$_os" = iOS; then
10753    AC_MSG_RESULT([none])
10754 elif test "$with_system_hunspell" = "yes"; then
10755     AC_MSG_RESULT([external])
10756     SYSTEM_HUNSPELL=TRUE
10757     AC_LANG_PUSH([C++])
10758     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10759     if test "$HUNSPELL_PC" != "TRUE"; then
10760         AC_CHECK_HEADER(hunspell.hxx, [],
10761             [
10762             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10763             [AC_MSG_ERROR(hunspell headers not found.)], [])
10764             ], [])
10765         AC_CHECK_LIB([hunspell], [main], [:],
10766            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10767         HUNSPELL_LIBS=-lhunspell
10768     fi
10769     AC_LANG_POP([C++])
10770     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10771     FilterLibs "${HUNSPELL_LIBS}"
10772     HUNSPELL_LIBS="${filteredlibs}"
10773 else
10774     AC_MSG_RESULT([internal])
10775     SYSTEM_HUNSPELL=
10776     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10777     if test "$COM" = "MSC"; then
10778         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10779     else
10780         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10781     fi
10782     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10784 AC_SUBST(SYSTEM_HUNSPELL)
10785 AC_SUBST(HUNSPELL_CFLAGS)
10786 AC_SUBST(HUNSPELL_LIBS)
10788 dnl ===================================================================
10789 dnl Check for system qrcodegen
10790 dnl ===================================================================
10791 AC_MSG_CHECKING([whether to use libqrcodegen])
10792 if test "$enable_qrcodegen" = "no"; then
10793     AC_MSG_RESULT([no])
10794     ENABLE_QRCODEGEN=
10795     SYSTEM_QRCODEGEN=
10796 else
10797     AC_MSG_RESULT([yes])
10798     ENABLE_QRCODEGEN=TRUE
10799     AC_MSG_CHECKING([which libqrcodegen to use])
10800     if test "$with_system_qrcodegen" = "yes"; then
10801         AC_MSG_RESULT([external])
10802         SYSTEM_QRCODEGEN=TRUE
10803         AC_LANG_PUSH([C++])
10804         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10805             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10806         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10807             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10808         QRCODEGEN_LIBS=-lqrcodegencpp
10809         AC_LANG_POP([C++])
10810         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10811         FilterLibs "${QRCODEGEN_LIBS}"
10812         QRCODEGEN_LIBS="${filteredlibs}"
10813     else
10814         AC_MSG_RESULT([internal])
10815         SYSTEM_QRCODEGEN=
10816         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10817     fi
10818     if test "$ENABLE_QRCODEGEN" = TRUE; then
10819         AC_DEFINE(ENABLE_QRCODEGEN)
10820     fi
10822 AC_SUBST(SYSTEM_QRCODEGEN)
10823 AC_SUBST(ENABLE_QRCODEGEN)
10824 AC_SUBST(QRCODEGEN_CFLAGS)
10825 AC_SUBST(QRCODEGEN_LIBS)
10827 dnl ===================================================================
10828 dnl Check for system box2d
10829 dnl ===================================================================
10830 AC_MSG_CHECKING([which box2d to use])
10831 if test "$with_system_box2d" = "yes"; then
10832     AC_MSG_RESULT([external])
10833     SYSTEM_BOX2D=TRUE
10834     AC_LANG_PUSH([C++])
10835     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10836         [BOX2D_H_FOUND='FALSE'])
10837     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10838         _BOX2D_LIB=box2d
10839         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10840     else
10841         # fail this. there's no other alternative to check when we are here.
10842         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10843                 [AC_MSG_ERROR(box2d headers not found.)])
10844         _BOX2D_LIB=Box2D
10845         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10846     fi
10847     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10848         [ AC_MSG_ERROR(box2d library not found.) ], [])
10849     BOX2D_LIBS=-l$_BOX2D_LIB
10850     AC_LANG_POP([C++])
10851     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10852     FilterLibs "${BOX2D_LIBS}"
10853     BOX2D_LIBS="${filteredlibs}"
10854 else
10855     AC_MSG_RESULT([internal])
10856     SYSTEM_BOX2D=
10857     BUILD_TYPE="$BUILD_TYPE BOX2D"
10859 AC_SUBST(SYSTEM_BOX2D)
10860 AC_SUBST(BOX2D_CFLAGS)
10861 AC_SUBST(BOX2D_LIBS)
10863 dnl ===================================================================
10864 dnl Checking for altlinuxhyph
10865 dnl ===================================================================
10866 AC_MSG_CHECKING([which altlinuxhyph to use])
10867 if test "$with_system_altlinuxhyph" = "yes"; then
10868     AC_MSG_RESULT([external])
10869     SYSTEM_HYPH=TRUE
10870     AC_CHECK_HEADER(hyphen.h, [],
10871        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10872     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10873        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10874        [#include <hyphen.h>])
10875     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10876         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10877     if test -z "$HYPHEN_LIB"; then
10878         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10879            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10880     fi
10881     if test -z "$HYPHEN_LIB"; then
10882         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10883            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10884     fi
10885 else
10886     AC_MSG_RESULT([internal])
10887     SYSTEM_HYPH=
10888     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10889     if test "$COM" = "MSC"; then
10890         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10891     else
10892         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10893     fi
10895 AC_SUBST(SYSTEM_HYPH)
10896 AC_SUBST(HYPHEN_LIB)
10898 dnl ===================================================================
10899 dnl Checking for mythes
10900 dnl ===================================================================
10901 AC_MSG_CHECKING([which mythes to use])
10902 if test "$_os" = iOS; then
10903    AC_MSG_RESULT([none])
10904 elif test "$with_system_mythes" = "yes"; then
10905     AC_MSG_RESULT([external])
10906     SYSTEM_MYTHES=TRUE
10907     AC_LANG_PUSH([C++])
10908     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10909     if test "$MYTHES_PKGCONFIG" = "no"; then
10910         AC_CHECK_HEADER(mythes.hxx, [],
10911             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10912         AC_CHECK_LIB([mythes-1.2], [main], [:],
10913             [ MYTHES_FOUND=no], [])
10914     if test "$MYTHES_FOUND" = "no"; then
10915         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10916                 [ MYTHES_FOUND=no], [])
10917     fi
10918     if test "$MYTHES_FOUND" = "no"; then
10919         AC_MSG_ERROR([mythes library not found!.])
10920     fi
10921     fi
10922     AC_LANG_POP([C++])
10923     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10924     FilterLibs "${MYTHES_LIBS}"
10925     MYTHES_LIBS="${filteredlibs}"
10926 else
10927     AC_MSG_RESULT([internal])
10928     SYSTEM_MYTHES=
10929     BUILD_TYPE="$BUILD_TYPE MYTHES"
10930     if test "$COM" = "MSC"; then
10931         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10932     else
10933         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10934     fi
10936 AC_SUBST(SYSTEM_MYTHES)
10937 AC_SUBST(MYTHES_CFLAGS)
10938 AC_SUBST(MYTHES_LIBS)
10940 dnl ===================================================================
10941 dnl How should we build the linear programming solver ?
10942 dnl ===================================================================
10944 ENABLE_COINMP=
10945 AC_MSG_CHECKING([whether to build with CoinMP])
10946 if test "$enable_coinmp" != "no"; then
10947     ENABLE_COINMP=TRUE
10948     AC_MSG_RESULT([yes])
10949     if test "$with_system_coinmp" = "yes"; then
10950         SYSTEM_COINMP=TRUE
10951         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10952         FilterLibs "${COINMP_LIBS}"
10953         COINMP_LIBS="${filteredlibs}"
10954     else
10955         BUILD_TYPE="$BUILD_TYPE COINMP"
10956     fi
10957 else
10958     AC_MSG_RESULT([no])
10960 AC_SUBST(ENABLE_COINMP)
10961 AC_SUBST(SYSTEM_COINMP)
10962 AC_SUBST(COINMP_CFLAGS)
10963 AC_SUBST(COINMP_LIBS)
10965 ENABLE_LPSOLVE=
10966 AC_MSG_CHECKING([whether to build with lpsolve])
10967 if test "$enable_lpsolve" != "no"; then
10968     ENABLE_LPSOLVE=TRUE
10969     AC_MSG_RESULT([yes])
10970 else
10971     AC_MSG_RESULT([no])
10973 AC_SUBST(ENABLE_LPSOLVE)
10975 if test "$ENABLE_LPSOLVE" = TRUE; then
10976     AC_MSG_CHECKING([which lpsolve to use])
10977     if test "$with_system_lpsolve" = "yes"; then
10978         AC_MSG_RESULT([external])
10979         SYSTEM_LPSOLVE=TRUE
10980         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10981            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10982         save_LIBS=$LIBS
10983         # some systems need this. Like Ubuntu...
10984         AC_CHECK_LIB(m, floor)
10985         AC_CHECK_LIB(dl, dlopen)
10986         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10987             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10988         LIBS=$save_LIBS
10989     else
10990         AC_MSG_RESULT([internal])
10991         SYSTEM_LPSOLVE=
10992         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10993     fi
10995 AC_SUBST(SYSTEM_LPSOLVE)
10997 dnl ===================================================================
10998 dnl Checking for libexttextcat
10999 dnl ===================================================================
11000 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11001 if test "$with_system_libexttextcat" = "yes"; then
11002     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11004 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11006 dnl ===================================================================
11007 dnl Checking for libnumbertext
11008 dnl ===================================================================
11009 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11010 if test "$with_system_libnumbertext" = "yes"; then
11011     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11012     SYSTEM_LIBNUMBERTEXT=YES
11013 else
11014     SYSTEM_LIBNUMBERTEXT=
11015     AC_LANG_PUSH([C++])
11016     save_CPPFLAGS=$CPPFLAGS
11017     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11018     AC_CHECK_HEADERS([codecvt regex])
11019     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11020             [ LIBNUMBERTEXT_CFLAGS=''
11021               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11022                            Enable libnumbertext fallback (missing number to number name conversion).])
11023             ])
11024     CPPFLAGS=$save_CPPFLAGS
11025     AC_LANG_POP([C++])
11027 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11028 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11029 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11031 dnl ***************************************
11032 dnl testing libc version for Linux...
11033 dnl ***************************************
11034 if test "$_os" = "Linux"; then
11035     AC_MSG_CHECKING([whether libc is >= 2.1.1])
11036     exec 6>/dev/null # no output
11037     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11038     exec 6>&1 # output on again
11039     if test "$HAVE_LIBC"; then
11040         AC_MSG_RESULT([yes])
11041     else
11042         AC_MSG_ERROR([no, upgrade libc])
11043     fi
11046 dnl =========================================
11047 dnl Check for uuidgen
11048 dnl =========================================
11049 if test "$_os" = "WINNT"; then
11050     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11051     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11052     UUIDGEN=uuidgen.exe
11053     AC_SUBST(UUIDGEN)
11054 else
11055     AC_PATH_PROG([UUIDGEN], [uuidgen])
11056     if test -z "$UUIDGEN"; then
11057         AC_MSG_WARN([uuid is needed for building installation sets])
11058     fi
11061 dnl ***************************************
11062 dnl Checking for bison and flex
11063 dnl ***************************************
11064 AC_PATH_PROG(BISON, bison)
11065 if test -z "$BISON"; then
11066     AC_MSG_ERROR([no bison found in \$PATH, install it])
11067 else
11068     AC_MSG_CHECKING([the bison version])
11069     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11070     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11071     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11072     dnl cause
11073     dnl
11074     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]
11075     dnl   typedef union YYSTYPE
11076     dnl           ~~~~~~^~~~~~~
11077     dnl
11078     dnl while at least 3.4.1 is know to be good:
11079     if test "$COMPILER_PLUGINS" = TRUE; then
11080         if test "$_bison_longver" -lt 2004; then
11081             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11082         fi
11083     else
11084         if test "$_bison_longver" -lt 2000; then
11085             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11086         fi
11087     fi
11089 AC_SUBST([BISON])
11091 AC_PATH_PROG(FLEX, flex)
11092 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11093     FLEX=`cygpath -m $FLEX`
11095 if test -z "$FLEX"; then
11096     AC_MSG_ERROR([no flex found in \$PATH, install it])
11097 else
11098     AC_MSG_CHECKING([the flex version])
11099     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11100     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11101         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11102     fi
11104 AC_SUBST([FLEX])
11105 dnl ***************************************
11106 dnl Checking for patch
11107 dnl ***************************************
11108 AC_PATH_PROG(PATCH, patch)
11109 if test -z "$PATCH"; then
11110     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11113 dnl On Solaris or macOS, check if --with-gnu-patch was used
11114 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11115     if test -z "$with_gnu_patch"; then
11116         GNUPATCH=$PATCH
11117     else
11118         if test -x "$with_gnu_patch"; then
11119             GNUPATCH=$with_gnu_patch
11120         else
11121             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11122         fi
11123     fi
11125     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11126     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11127         AC_MSG_RESULT([yes])
11128     else
11129         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11130     fi
11131 else
11132     GNUPATCH=$PATCH
11135 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11136     GNUPATCH=`cygpath -m $GNUPATCH`
11139 dnl We also need to check for --with-gnu-cp
11141 if test -z "$with_gnu_cp"; then
11142     # check the place where the good stuff is hidden on Solaris...
11143     if test -x /usr/gnu/bin/cp; then
11144         GNUCP=/usr/gnu/bin/cp
11145     else
11146         AC_PATH_PROGS(GNUCP, gnucp cp)
11147     fi
11148     if test -z $GNUCP; then
11149         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11150     fi
11151 else
11152     if test -x "$with_gnu_cp"; then
11153         GNUCP=$with_gnu_cp
11154     else
11155         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11156     fi
11159 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11160     GNUCP=`cygpath -m $GNUCP`
11163 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11164 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11165     AC_MSG_RESULT([yes])
11166 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11167     AC_MSG_RESULT([yes])
11168 else
11169     case "$build_os" in
11170     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11171         x_GNUCP=[\#]
11172         GNUCP=''
11173         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11174         ;;
11175     *)
11176         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11177         ;;
11178     esac
11181 AC_SUBST(GNUPATCH)
11182 AC_SUBST(GNUCP)
11183 AC_SUBST(x_GNUCP)
11185 dnl ***************************************
11186 dnl testing assembler path
11187 dnl ***************************************
11188 ML_EXE=""
11189 if test "$_os" = "WINNT"; then
11190     case "$WIN_HOST_ARCH" in
11191     x86) assembler=ml.exe ;;
11192     x64) assembler=ml64.exe ;;
11193     arm64) assembler=armasm64.exe ;;
11194     esac
11196     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11197     if test -f "$MSVC_HOST_PATH/$assembler"; then
11198         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11199         AC_MSG_RESULT([$ML_EXE])
11200     else
11201         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11202     fi
11205 AC_SUBST(ML_EXE)
11207 dnl ===================================================================
11208 dnl We need zip and unzip
11209 dnl ===================================================================
11210 AC_PATH_PROG(ZIP, zip)
11211 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11212 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11213     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],,)
11216 AC_PATH_PROG(UNZIP, unzip)
11217 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11219 dnl ===================================================================
11220 dnl Zip must be a specific type for different build types.
11221 dnl ===================================================================
11222 if test $build_os = cygwin; then
11223     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11224         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11225     fi
11228 dnl ===================================================================
11229 dnl We need touch with -h option support.
11230 dnl ===================================================================
11231 AC_PATH_PROG(TOUCH, touch)
11232 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11233 touch warn
11234 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11235     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],,)
11238 dnl ===================================================================
11239 dnl Check for system epoxy
11240 dnl ===================================================================
11241 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11243 dnl ===================================================================
11244 dnl Set vcl option: coordinate device in double or sal_Int32
11245 dnl ===================================================================
11247 dnl disabled for now, we don't want subtle differences between OSs
11248 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11249 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11250 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11251 dnl     AC_MSG_RESULT([double])
11252 dnl else
11253 dnl     AC_MSG_RESULT([sal_Int32])
11254 dnl fi
11256 dnl ===================================================================
11257 dnl Test which vclplugs have to be built.
11258 dnl ===================================================================
11259 R=""
11260 if test "$USING_X11" != TRUE; then
11261     enable_gtk3=no
11264 ENABLE_GTK3=""
11265 if test "x$enable_gtk3" = "xyes"; then
11266     ENABLE_GTK3="TRUE"
11267     AC_DEFINE(ENABLE_GTK3)
11268     R="$R gtk3"
11270 AC_SUBST(ENABLE_GTK3)
11272 ENABLE_GTK3_KDE5=""
11273 if test "x$enable_gtk3_kde5" = "xyes"; then
11274     ENABLE_GTK3_KDE5="TRUE"
11275     AC_DEFINE(ENABLE_GTK3_KDE5)
11276     R="$R gtk3_kde5"
11278 AC_SUBST(ENABLE_GTK3_KDE5)
11280 ENABLE_QT5=""
11281 if test "x$enable_qt5" = "xyes"; then
11282     ENABLE_QT5="TRUE"
11283     AC_DEFINE(ENABLE_QT5)
11284     R="$R qt5"
11286 AC_SUBST(ENABLE_QT5)
11288 ENABLE_KF5=""
11289 if test "x$enable_kf5" = "xyes"; then
11290     ENABLE_KF5="TRUE"
11291     AC_DEFINE(ENABLE_KF5)
11292     R="$R kf5"
11294 AC_SUBST(ENABLE_KF5)
11296 GTK3_CFLAGS=""
11297 GTK3_LIBS=""
11298 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11299     if test "$with_system_cairo" = no; then
11300         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11301     fi
11302     : ${with_system_cairo:=yes}
11303     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)
11304     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11305     FilterLibs "${GTK3_LIBS}"
11306     GTK3_LIBS="${filteredlibs}"
11308     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11309     if test "$with_system_epoxy" != "yes"; then
11310         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11311         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11312                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11313     fi
11315 AC_SUBST(GTK3_LIBS)
11316 AC_SUBST(GTK3_CFLAGS)
11318 if test "$enable_introspection" = yes; then
11319     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11320         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11321     else
11322         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11323     fi
11326 if test "$_os" = "WINNT"; then
11327     R="$R win"
11328 elif test "$_os" = "Darwin"; then
11329     R="$R osx"
11330 elif test "$_os" = "iOS"; then
11331     R="ios (builtin)"
11334 build_vcl_plugins="$R"
11335 if test -z "$build_vcl_plugins"; then
11336     build_vcl_plugins="none"
11338 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11340 dnl ===================================================================
11341 dnl check for dbus support
11342 dnl ===================================================================
11343 ENABLE_DBUS=""
11344 DBUS_CFLAGS=""
11345 DBUS_LIBS=""
11346 DBUS_GLIB_CFLAGS=""
11347 DBUS_GLIB_LIBS=""
11348 DBUS_HAVE_GLIB=""
11350 if test "$enable_dbus" = "no"; then
11351     test_dbus=no
11354 AC_MSG_CHECKING([whether to enable DBUS support])
11355 if test "$test_dbus" = "yes"; then
11356     ENABLE_DBUS="TRUE"
11357     AC_MSG_RESULT([yes])
11358     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11359     AC_DEFINE(ENABLE_DBUS)
11360     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11361     FilterLibs "${DBUS_LIBS}"
11362     DBUS_LIBS="${filteredlibs}"
11364     # Glib is needed for BluetoothServer
11365     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11366     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11367         [
11368             DBUS_HAVE_GLIB="TRUE"
11369             AC_DEFINE(DBUS_HAVE_GLIB,1)
11370         ],
11371         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11372     )
11373 else
11374     AC_MSG_RESULT([no])
11377 AC_SUBST(ENABLE_DBUS)
11378 AC_SUBST(DBUS_CFLAGS)
11379 AC_SUBST(DBUS_LIBS)
11380 AC_SUBST(DBUS_GLIB_CFLAGS)
11381 AC_SUBST(DBUS_GLIB_LIBS)
11382 AC_SUBST(DBUS_HAVE_GLIB)
11384 AC_MSG_CHECKING([whether to enable Impress remote control])
11385 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11386     AC_MSG_RESULT([yes])
11387     ENABLE_SDREMOTE=TRUE
11388     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11390     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11391         # The Bluetooth code doesn't compile with macOS SDK 10.15
11392         if test "$enable_sdremote_bluetooth" = yes; then
11393             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11394         fi
11395         enable_sdremote_bluetooth=no
11396     fi
11397     # If not explicitly enabled or disabled, default
11398     if test -z "$enable_sdremote_bluetooth"; then
11399         case "$OS" in
11400         LINUX|MACOSX|WNT)
11401             # Default to yes for these
11402             enable_sdremote_bluetooth=yes
11403             ;;
11404         *)
11405             # otherwise no
11406             enable_sdremote_bluetooth=no
11407             ;;
11408         esac
11409     fi
11410     # $enable_sdremote_bluetooth is guaranteed non-empty now
11412     if test "$enable_sdremote_bluetooth" != "no"; then
11413         if test "$OS" = "LINUX"; then
11414             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11415                 AC_MSG_RESULT([yes])
11416                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11417                 dnl ===================================================================
11418                 dnl Check for system bluez
11419                 dnl ===================================================================
11420                 AC_MSG_CHECKING([which Bluetooth header to use])
11421                 if test "$with_system_bluez" = "yes"; then
11422                     AC_MSG_RESULT([external])
11423                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11424                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11425                     SYSTEM_BLUEZ=TRUE
11426                 else
11427                     AC_MSG_RESULT([internal])
11428                     SYSTEM_BLUEZ=
11429                 fi
11430             else
11431                 AC_MSG_RESULT([no, dbus disabled])
11432                 ENABLE_SDREMOTE_BLUETOOTH=
11433                 SYSTEM_BLUEZ=
11434             fi
11435         else
11436             AC_MSG_RESULT([yes])
11437             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11438             SYSTEM_BLUEZ=
11439         fi
11440     else
11441         AC_MSG_RESULT([no])
11442         ENABLE_SDREMOTE_BLUETOOTH=
11443         SYSTEM_BLUEZ=
11444     fi
11445 else
11446     ENABLE_SDREMOTE=
11447     SYSTEM_BLUEZ=
11448     AC_MSG_RESULT([no])
11450 AC_SUBST(ENABLE_SDREMOTE)
11451 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11452 AC_SUBST(SYSTEM_BLUEZ)
11454 dnl ===================================================================
11455 dnl Check whether to enable GIO support
11456 dnl ===================================================================
11457 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11458     AC_MSG_CHECKING([whether to enable GIO support])
11459     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11460         dnl Need at least 2.26 for the dbus support.
11461         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11462                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11463         if test "$ENABLE_GIO" = "TRUE"; then
11464             AC_DEFINE(ENABLE_GIO)
11465             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11466             FilterLibs "${GIO_LIBS}"
11467             GIO_LIBS="${filteredlibs}"
11468         fi
11469     else
11470         AC_MSG_RESULT([no])
11471     fi
11473 AC_SUBST(ENABLE_GIO)
11474 AC_SUBST(GIO_CFLAGS)
11475 AC_SUBST(GIO_LIBS)
11478 dnl ===================================================================
11480 SPLIT_APP_MODULES=""
11481 if test "$enable_split_app_modules" = "yes"; then
11482     SPLIT_APP_MODULES="TRUE"
11484 AC_SUBST(SPLIT_APP_MODULES)
11486 SPLIT_OPT_FEATURES=""
11487 if test "$enable_split_opt_features" = "yes"; then
11488     SPLIT_OPT_FEATURES="TRUE"
11490 AC_SUBST(SPLIT_OPT_FEATURES)
11492 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11493     if test "$enable_cairo_canvas" = yes; then
11494         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11495     fi
11496     enable_cairo_canvas=no
11497 elif test -z "$enable_cairo_canvas"; then
11498     enable_cairo_canvas=yes
11501 ENABLE_CAIRO_CANVAS=""
11502 if test "$enable_cairo_canvas" = "yes"; then
11503     test_cairo=yes
11504     ENABLE_CAIRO_CANVAS="TRUE"
11505     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11507 AC_SUBST(ENABLE_CAIRO_CANVAS)
11509 dnl ===================================================================
11510 dnl Check whether the GStreamer libraries are available.
11511 dnl ===================================================================
11513 ENABLE_GSTREAMER_1_0=""
11515 if test "$build_gstreamer_1_0" = "yes"; then
11517     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11518     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11519         ENABLE_GSTREAMER_1_0="TRUE"
11520         AC_MSG_RESULT([yes])
11521         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11522         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11523         FilterLibs "${GSTREAMER_1_0_LIBS}"
11524         GSTREAMER_1_0_LIBS="${filteredlibs}"
11525         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11526     else
11527         AC_MSG_RESULT([no])
11528     fi
11530 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11531 AC_SUBST(GSTREAMER_1_0_LIBS)
11532 AC_SUBST(ENABLE_GSTREAMER_1_0)
11534 dnl ===================================================================
11535 dnl Check whether to build the VLC avmedia backend
11536 dnl ===================================================================
11538 ENABLE_VLC=""
11540 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11541 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11542     ENABLE_VLC="TRUE"
11543     AC_MSG_RESULT([yes])
11544 else
11545     AC_MSG_RESULT([no])
11547 AC_SUBST(ENABLE_VLC)
11549 ENABLE_OPENGL_TRANSITIONS=
11550 ENABLE_OPENGL_CANVAS=
11551 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11552    : # disable
11553 elif test "$_os" = "Darwin"; then
11554     # We use frameworks on macOS, no need for detail checks
11555     ENABLE_OPENGL_TRANSITIONS=TRUE
11556     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11557     ENABLE_OPENGL_CANVAS=TRUE
11558 elif test $_os = WINNT; then
11559     ENABLE_OPENGL_TRANSITIONS=TRUE
11560     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11561     ENABLE_OPENGL_CANVAS=TRUE
11562 else
11563     if test "$USING_X11" = TRUE; then
11564         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11565         ENABLE_OPENGL_TRANSITIONS=TRUE
11566         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11567         ENABLE_OPENGL_CANVAS=TRUE
11568     fi
11571 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11572 AC_SUBST(ENABLE_OPENGL_CANVAS)
11574 dnl =================================================
11575 dnl Check whether to build with OpenCL support.
11576 dnl =================================================
11578 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11579     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11580     # platform (optional at run-time, used through clew).
11581     BUILD_TYPE="$BUILD_TYPE OPENCL"
11582     AC_DEFINE(HAVE_FEATURE_OPENCL)
11585 dnl =================================================
11586 dnl Check whether to build with dconf support.
11587 dnl =================================================
11589 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11590     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11591         if test "$enable_dconf" = yes; then
11592             AC_MSG_ERROR([dconf not found])
11593         else
11594             enable_dconf=no
11595         fi])
11597 AC_MSG_CHECKING([whether to enable dconf])
11598 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11599     DCONF_CFLAGS=
11600     DCONF_LIBS=
11601     ENABLE_DCONF=
11602     AC_MSG_RESULT([no])
11603 else
11604     ENABLE_DCONF=TRUE
11605     AC_DEFINE(ENABLE_DCONF)
11606     AC_MSG_RESULT([yes])
11608 AC_SUBST([DCONF_CFLAGS])
11609 AC_SUBST([DCONF_LIBS])
11610 AC_SUBST([ENABLE_DCONF])
11612 # pdf import?
11613 AC_MSG_CHECKING([whether to build the PDF import feature])
11614 ENABLE_PDFIMPORT=
11615 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11616     AC_MSG_RESULT([yes])
11617     ENABLE_PDFIMPORT=TRUE
11618     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11619 else
11620     AC_MSG_RESULT([no])
11623 # Pdfium?
11624 AC_MSG_CHECKING([whether to build PDFium])
11625 ENABLE_PDFIUM=
11626 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11627     AC_MSG_RESULT([yes])
11628     ENABLE_PDFIUM=TRUE
11629     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11630     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11631 else
11632     AC_MSG_RESULT([no])
11634 AC_SUBST(ENABLE_PDFIUM)
11636 dnl ===================================================================
11637 dnl Check for poppler
11638 dnl ===================================================================
11639 ENABLE_POPPLER=
11640 AC_MSG_CHECKING([whether to build Poppler])
11641 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11642     AC_MSG_RESULT([yes])
11643     ENABLE_POPPLER=TRUE
11644     AC_DEFINE(HAVE_FEATURE_POPPLER)
11645 else
11646     AC_MSG_RESULT([no])
11648 AC_SUBST(ENABLE_POPPLER)
11650 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11651     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11654 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11655     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11658 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11659     dnl ===================================================================
11660     dnl Check for system poppler
11661     dnl ===================================================================
11662     AC_MSG_CHECKING([which PDF import poppler to use])
11663     if test "$with_system_poppler" = "yes"; then
11664         AC_MSG_RESULT([external])
11665         SYSTEM_POPPLER=TRUE
11666         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11667         AC_LANG_PUSH([C++])
11668         save_CXXFLAGS=$CXXFLAGS
11669         save_CPPFLAGS=$CPPFLAGS
11670         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11671         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11672         AC_CHECK_HEADER([cpp/poppler-version.h],
11673             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11674             [])
11675         CXXFLAGS=$save_CXXFLAGS
11676         CPPFLAGS=$save_CPPFLAGS
11677         AC_LANG_POP([C++])
11678         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11680         FilterLibs "${POPPLER_LIBS}"
11681         POPPLER_LIBS="${filteredlibs}"
11682     else
11683         AC_MSG_RESULT([internal])
11684         SYSTEM_POPPLER=
11685         BUILD_TYPE="$BUILD_TYPE POPPLER"
11686         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11687     fi
11688     AC_DEFINE([ENABLE_PDFIMPORT],1)
11690 AC_SUBST(ENABLE_PDFIMPORT)
11691 AC_SUBST(SYSTEM_POPPLER)
11692 AC_SUBST(POPPLER_CFLAGS)
11693 AC_SUBST(POPPLER_LIBS)
11695 # Skia?
11696 AC_MSG_CHECKING([whether to build Skia])
11697 ENABLE_SKIA=
11698 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11699     if test "$enable_skia" = "debug"; then
11700         AC_MSG_RESULT([yes (debug)])
11701         ENABLE_SKIA_DEBUG=TRUE
11702     else
11703         AC_MSG_RESULT([yes])
11704         ENABLE_SKIA_DEBUG=
11705     fi
11706     ENABLE_SKIA=TRUE
11707     AC_DEFINE(HAVE_FEATURE_SKIA)
11708     BUILD_TYPE="$BUILD_TYPE SKIA"
11709 else
11710     AC_MSG_RESULT([no])
11712 AC_SUBST(ENABLE_SKIA)
11713 AC_SUBST(ENABLE_SKIA_DEBUG)
11715 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11716 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11717 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11718 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11719 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11720 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11721 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11722 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11723 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11725 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11726     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11727         AC_MSG_CHECKING([for Clang])
11728         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11729     else
11730         if test "$_os" = "WINNT"; then
11731             AC_MSG_CHECKING([for clang-cl])
11732             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11733                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11734                 dnl explicitly set -m32/-m64
11735                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11736                 LO_CLANG_CXX="$LO_CLANG_CC"
11737                 AC_MSG_RESULT([$LO_CLANG_CC])
11738             else
11739                 AC_MSG_RESULT([no])
11740             fi
11741         else
11742             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11743             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11744         fi
11745     fi
11746     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11747         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11748         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11749         if test "$clang2_ver" -lt 50002; then
11750             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11751             LO_CLANG_CC=
11752             LO_CLANG_CXX=
11753         fi
11754     fi
11755     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11756         # Skia is the default on Windows, so hard-require Clang.
11757         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11758         if test "$_os" = "WINNT"; then
11759             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11760         else
11761             AC_MSG_WARN([Clang compiler not found.])
11762         fi
11763     else
11765         save_CXX="$CXX"
11766         CXX="$LO_CLANG_CXX"
11767         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11768         flag_sse2=-msse2
11769         flag_ssse3=-mssse3
11770         flag_sse41=-msse4.1
11771         flag_sse42=-msse4.2
11772         flag_avx=-mavx
11773         flag_avx2=-mavx2
11774         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11775         flag_f16c=-mf16c
11776         flag_fma=-mfma
11778         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11779         AC_LANG_PUSH([C++])
11780         save_CXXFLAGS=$CXXFLAGS
11781         CXXFLAGS="$CXXFLAGS $flag_sse2"
11782         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11783             #include <emmintrin.h>
11784             int main () {
11785                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11786                 c = _mm_xor_si128 (a, b);
11787                 return 0;
11788             }
11789             ])],
11790             [can_compile_sse2=yes],
11791             [can_compile_sse2=no])
11792         AC_LANG_POP([C++])
11793         CXXFLAGS=$save_CXXFLAGS
11794         AC_MSG_RESULT([${can_compile_sse2}])
11795         if test "${can_compile_sse2}" = "yes" ; then
11796             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11797         fi
11799         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11800         AC_LANG_PUSH([C++])
11801         save_CXXFLAGS=$CXXFLAGS
11802         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11803         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11804             #include <tmmintrin.h>
11805             int main () {
11806                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11807                 c = _mm_maddubs_epi16 (a, b);
11808                 return 0;
11809             }
11810             ])],
11811             [can_compile_ssse3=yes],
11812             [can_compile_ssse3=no])
11813         AC_LANG_POP([C++])
11814         CXXFLAGS=$save_CXXFLAGS
11815         AC_MSG_RESULT([${can_compile_ssse3}])
11816         if test "${can_compile_ssse3}" = "yes" ; then
11817             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11818         fi
11820         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11821         AC_LANG_PUSH([C++])
11822         save_CXXFLAGS=$CXXFLAGS
11823         CXXFLAGS="$CXXFLAGS $flag_sse41"
11824         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11825             #include <smmintrin.h>
11826             int main () {
11827                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11828                 c = _mm_cmpeq_epi64 (a, b);
11829                 return 0;
11830             }
11831             ])],
11832             [can_compile_sse41=yes],
11833             [can_compile_sse41=no])
11834         AC_LANG_POP([C++])
11835         CXXFLAGS=$save_CXXFLAGS
11836         AC_MSG_RESULT([${can_compile_sse41}])
11837         if test "${can_compile_sse41}" = "yes" ; then
11838             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11839         fi
11841         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11842         AC_LANG_PUSH([C++])
11843         save_CXXFLAGS=$CXXFLAGS
11844         CXXFLAGS="$CXXFLAGS $flag_sse42"
11845         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11846             #include <nmmintrin.h>
11847             int main () {
11848                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11849                 c = _mm_cmpgt_epi64 (a, b);
11850                 return 0;
11851             }
11852             ])],
11853             [can_compile_sse42=yes],
11854             [can_compile_sse42=no])
11855         AC_LANG_POP([C++])
11856         CXXFLAGS=$save_CXXFLAGS
11857         AC_MSG_RESULT([${can_compile_sse42}])
11858         if test "${can_compile_sse42}" = "yes" ; then
11859             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11860         fi
11862         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11863         AC_LANG_PUSH([C++])
11864         save_CXXFLAGS=$CXXFLAGS
11865         CXXFLAGS="$CXXFLAGS $flag_avx"
11866         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11867             #include <immintrin.h>
11868             int main () {
11869                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11870                 c = _mm256_xor_ps(a, b);
11871                 return 0;
11872             }
11873             ])],
11874             [can_compile_avx=yes],
11875             [can_compile_avx=no])
11876         AC_LANG_POP([C++])
11877         CXXFLAGS=$save_CXXFLAGS
11878         AC_MSG_RESULT([${can_compile_avx}])
11879         if test "${can_compile_avx}" = "yes" ; then
11880             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11881         fi
11883         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11884         AC_LANG_PUSH([C++])
11885         save_CXXFLAGS=$CXXFLAGS
11886         CXXFLAGS="$CXXFLAGS $flag_avx2"
11887         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11888             #include <immintrin.h>
11889             int main () {
11890                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11891                 c = _mm256_maddubs_epi16(a, b);
11892                 return 0;
11893             }
11894             ])],
11895             [can_compile_avx2=yes],
11896             [can_compile_avx2=no])
11897         AC_LANG_POP([C++])
11898         CXXFLAGS=$save_CXXFLAGS
11899         AC_MSG_RESULT([${can_compile_avx2}])
11900         if test "${can_compile_avx2}" = "yes" ; then
11901             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11902         fi
11904         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11905         AC_LANG_PUSH([C++])
11906         save_CXXFLAGS=$CXXFLAGS
11907         CXXFLAGS="$CXXFLAGS $flag_avx512"
11908         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11909             #include <immintrin.h>
11910             int main () {
11911                 __m512i a = _mm512_loadu_si512(0);
11912                 return 0;
11913             }
11914             ])],
11915             [can_compile_avx512=yes],
11916             [can_compile_avx512=no])
11917         AC_LANG_POP([C++])
11918         CXXFLAGS=$save_CXXFLAGS
11919         AC_MSG_RESULT([${can_compile_avx512}])
11920         if test "${can_compile_avx512}" = "yes" ; then
11921             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11922         fi
11924         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11925         AC_LANG_PUSH([C++])
11926         save_CXXFLAGS=$CXXFLAGS
11927         CXXFLAGS="$CXXFLAGS $flag_f16c"
11928         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11929             #include <immintrin.h>
11930             int main () {
11931                 __m128i a = _mm_set1_epi32 (0);
11932                 __m128 c;
11933                 c = _mm_cvtph_ps(a);
11934                 return 0;
11935             }
11936             ])],
11937             [can_compile_f16c=yes],
11938             [can_compile_f16c=no])
11939         AC_LANG_POP([C++])
11940         CXXFLAGS=$save_CXXFLAGS
11941         AC_MSG_RESULT([${can_compile_f16c}])
11942         if test "${can_compile_f16c}" = "yes" ; then
11943             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11944         fi
11946         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11947         AC_LANG_PUSH([C++])
11948         save_CXXFLAGS=$CXXFLAGS
11949         CXXFLAGS="$CXXFLAGS $flag_fma"
11950         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11951             #include <immintrin.h>
11952             int main () {
11953                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11954                 d = _mm256_fmadd_ps(a, b, c);
11955                 return 0;
11956             }
11957             ])],
11958             [can_compile_fma=yes],
11959             [can_compile_fma=no])
11960         AC_LANG_POP([C++])
11961         CXXFLAGS=$save_CXXFLAGS
11962         AC_MSG_RESULT([${can_compile_fma}])
11963         if test "${can_compile_fma}" = "yes" ; then
11964             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11965         fi
11967         CXX="$save_CXX"
11968     fi
11971 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11973 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11974     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11975     AC_LANG_PUSH([C])
11976     save_CC="$CC"
11977     CC="$LO_CLANG_CC"
11978     save_CFLAGS=$CFLAGS
11979     CFLAGS="$CFLAGS --ccache-skip -O2"
11980     dnl an empty program will do, we're checking the compiler flags
11981     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11982                       [use_ccache=yes], [use_ccache=no])
11983     CFLAGS=$save_CFLAGS
11984     CC=$save_CC
11985     if test $use_ccache = yes; then
11986         AC_MSG_RESULT([yes])
11987     else
11988         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11989         AC_MSG_RESULT([no])
11990     fi
11991     AC_LANG_POP([C])
11993     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11994     AC_LANG_PUSH([C++])
11995     save_CXX="$CXX"
11996     CXX="$LO_CLANG_CXX"
11997     save_CXXFLAGS=$CXXFLAGS
11998     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11999     dnl an empty program will do, we're checking the compiler flags
12000     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12001                       [use_ccache=yes], [use_ccache=no])
12002     if test $use_ccache = yes; then
12003         AC_MSG_RESULT([yes])
12004     else
12005         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12006         AC_MSG_RESULT([no])
12007     fi
12008     CXXFLAGS=$save_CXXFLAGS
12009     CXX=$save_CXX
12010     AC_LANG_POP([C++])
12013 AC_SUBST(LO_CLANG_CC)
12014 AC_SUBST(LO_CLANG_CXX)
12015 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12016 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12017 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12018 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12019 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12020 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12021 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12022 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12023 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12024 AC_SUBST(CLANG_USE_LD)
12026 SYSTEM_GPGMEPP=
12028 if test "$enable_gpgmepp" = no; then
12029     AC_MSG_CHECKING([whether to enable gpgmepp])
12030     AC_MSG_RESULT([no])
12031 elif test "$enable_mpl_subset" = "yes"; then
12032     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12033     AC_MSG_RESULT([yes])
12034 elif test "$enable_fuzzers" = "yes"; then
12035     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12036     AC_MSG_RESULT([yes])
12037 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12038     dnl ===================================================================
12039     dnl Check for system gpgme
12040     dnl ===================================================================
12041     AC_MSG_CHECKING([which gpgmepp to use])
12042     if test "$with_system_gpgmepp" = "yes"; then
12043         AC_MSG_RESULT([external])
12044         SYSTEM_GPGMEPP=TRUE
12046         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12047         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12048             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12049         # progress_callback is the only func with plain C linkage
12050         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12051         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12052             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12053         AC_CHECK_HEADER(gpgme.h, [],
12054             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12055     else
12056         AC_MSG_RESULT([internal])
12057         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12058         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12060         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12061         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12062         if test "$_os" != "WINNT"; then
12063             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12064             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12065         fi
12066     fi
12067     ENABLE_GPGMEPP=TRUE
12068     AC_DEFINE([HAVE_FEATURE_GPGME])
12069     AC_PATH_PROG(GPG, gpg)
12070     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12071     # so let's exclude that manually for the moment
12072     if test -n "$GPG" -a "$_os" != "WINNT"; then
12073         # make sure we not only have a working gpgme, but a full working
12074         # gpg installation to run OpenPGP signature verification
12075         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12076     fi
12077     if test "$_os" = "Linux"; then
12078       uid=`id -u`
12079       AC_MSG_CHECKING([for /run/user/$uid])
12080       if test -d /run/user/$uid; then
12081         AC_MSG_RESULT([yes])
12082         AC_PATH_PROG(GPGCONF, gpgconf)
12084         # Older versions of gpgconf are not working as expected, since
12085         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12086         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12087         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12088         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12089         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12090         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12091         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12092           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12093           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12094           if $GPGCONF --dump-options > /dev/null ; then
12095             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12096               AC_MSG_RESULT([yes])
12097               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12098               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12099             else
12100               AC_MSG_RESULT([no])
12101             fi
12102           else
12103             AC_MSG_RESULT([no. missing or broken gpgconf?])
12104           fi
12105         else
12106           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12107         fi
12108       else
12109         AC_MSG_RESULT([no])
12110      fi
12111    fi
12113 AC_SUBST(ENABLE_GPGMEPP)
12114 AC_SUBST(SYSTEM_GPGMEPP)
12115 AC_SUBST(GPG_ERROR_CFLAGS)
12116 AC_SUBST(GPG_ERROR_LIBS)
12117 AC_SUBST(LIBASSUAN_CFLAGS)
12118 AC_SUBST(LIBASSUAN_LIBS)
12119 AC_SUBST(GPGMEPP_CFLAGS)
12120 AC_SUBST(GPGMEPP_LIBS)
12122 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12123 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12124     AC_MSG_RESULT([yes])
12125     ENABLE_MEDIAWIKI=TRUE
12126     BUILD_TYPE="$BUILD_TYPE XSLTML"
12127     if test  "x$with_java" = "xno"; then
12128         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12129     fi
12130 else
12131     AC_MSG_RESULT([no])
12132     ENABLE_MEDIAWIKI=
12133     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12135 AC_SUBST(ENABLE_MEDIAWIKI)
12137 AC_MSG_CHECKING([whether to build the Report Builder])
12138 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12139     AC_MSG_RESULT([yes])
12140     ENABLE_REPORTBUILDER=TRUE
12141     AC_MSG_CHECKING([which jfreereport libs to use])
12142     if test "$with_system_jfreereport" = "yes"; then
12143         SYSTEM_JFREEREPORT=TRUE
12144         AC_MSG_RESULT([external])
12145         if test -z $SAC_JAR; then
12146             SAC_JAR=/usr/share/java/sac.jar
12147         fi
12148         if ! test -f $SAC_JAR; then
12149              AC_MSG_ERROR(sac.jar not found.)
12150         fi
12152         if test -z $LIBXML_JAR; then
12153             if test -f /usr/share/java/libxml-1.0.0.jar; then
12154                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12155             elif test -f /usr/share/java/libxml.jar; then
12156                 LIBXML_JAR=/usr/share/java/libxml.jar
12157             else
12158                 AC_MSG_ERROR(libxml.jar replacement not found.)
12159             fi
12160         elif ! test -f $LIBXML_JAR; then
12161             AC_MSG_ERROR(libxml.jar not found.)
12162         fi
12164         if test -z $FLUTE_JAR; then
12165             if test -f /usr/share/java/flute-1.3.0.jar; then
12166                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12167             elif test -f /usr/share/java/flute.jar; then
12168                 FLUTE_JAR=/usr/share/java/flute.jar
12169             else
12170                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12171             fi
12172         elif ! test -f $FLUTE_JAR; then
12173             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12174         fi
12176         if test -z $JFREEREPORT_JAR; then
12177             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12178                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12179             elif test -f /usr/share/java/flow-engine.jar; then
12180                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12181             else
12182                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12183             fi
12184         elif ! test -f  $JFREEREPORT_JAR; then
12185                 AC_MSG_ERROR(jfreereport.jar not found.)
12186         fi
12188         if test -z $LIBLAYOUT_JAR; then
12189             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12190                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12191             elif test -f /usr/share/java/liblayout.jar; then
12192                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12193             else
12194                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12195             fi
12196         elif ! test -f $LIBLAYOUT_JAR; then
12197                 AC_MSG_ERROR(liblayout.jar not found.)
12198         fi
12200         if test -z $LIBLOADER_JAR; then
12201             if test -f /usr/share/java/libloader-1.0.0.jar; then
12202                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12203             elif test -f /usr/share/java/libloader.jar; then
12204                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12205             else
12206                 AC_MSG_ERROR(libloader.jar replacement not found.)
12207             fi
12208         elif ! test -f  $LIBLOADER_JAR; then
12209             AC_MSG_ERROR(libloader.jar not found.)
12210         fi
12212         if test -z $LIBFORMULA_JAR; then
12213             if test -f /usr/share/java/libformula-0.2.0.jar; then
12214                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12215             elif test -f /usr/share/java/libformula.jar; then
12216                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12217             else
12218                 AC_MSG_ERROR(libformula.jar replacement not found.)
12219             fi
12220         elif ! test -f $LIBFORMULA_JAR; then
12221                 AC_MSG_ERROR(libformula.jar not found.)
12222         fi
12224         if test -z $LIBREPOSITORY_JAR; then
12225             if test -f /usr/share/java/librepository-1.0.0.jar; then
12226                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12227             elif test -f /usr/share/java/librepository.jar; then
12228                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12229             else
12230                 AC_MSG_ERROR(librepository.jar replacement not found.)
12231             fi
12232         elif ! test -f $LIBREPOSITORY_JAR; then
12233             AC_MSG_ERROR(librepository.jar not found.)
12234         fi
12236         if test -z $LIBFONTS_JAR; then
12237             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12238                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12239             elif test -f /usr/share/java/libfonts.jar; then
12240                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12241             else
12242                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12243             fi
12244         elif ! test -f $LIBFONTS_JAR; then
12245                 AC_MSG_ERROR(libfonts.jar not found.)
12246         fi
12248         if test -z $LIBSERIALIZER_JAR; then
12249             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12250                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12251             elif test -f /usr/share/java/libserializer.jar; then
12252                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12253             else
12254                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12255             fi
12256         elif ! test -f $LIBSERIALIZER_JAR; then
12257                 AC_MSG_ERROR(libserializer.jar not found.)
12258         fi
12260         if test -z $LIBBASE_JAR; then
12261             if test -f /usr/share/java/libbase-1.0.0.jar; then
12262                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12263             elif test -f /usr/share/java/libbase.jar; then
12264                 LIBBASE_JAR=/usr/share/java/libbase.jar
12265             else
12266                 AC_MSG_ERROR(libbase.jar replacement not found.)
12267             fi
12268         elif ! test -f $LIBBASE_JAR; then
12269             AC_MSG_ERROR(libbase.jar not found.)
12270         fi
12272     else
12273         AC_MSG_RESULT([internal])
12274         SYSTEM_JFREEREPORT=
12275         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12276         NEED_ANT=TRUE
12277     fi
12278 else
12279     AC_MSG_RESULT([no])
12280     ENABLE_REPORTBUILDER=
12281     SYSTEM_JFREEREPORT=
12283 AC_SUBST(ENABLE_REPORTBUILDER)
12284 AC_SUBST(SYSTEM_JFREEREPORT)
12285 AC_SUBST(SAC_JAR)
12286 AC_SUBST(LIBXML_JAR)
12287 AC_SUBST(FLUTE_JAR)
12288 AC_SUBST(JFREEREPORT_JAR)
12289 AC_SUBST(LIBBASE_JAR)
12290 AC_SUBST(LIBLAYOUT_JAR)
12291 AC_SUBST(LIBLOADER_JAR)
12292 AC_SUBST(LIBFORMULA_JAR)
12293 AC_SUBST(LIBREPOSITORY_JAR)
12294 AC_SUBST(LIBFONTS_JAR)
12295 AC_SUBST(LIBSERIALIZER_JAR)
12297 # this has to be here because both the Wiki Publisher and the SRB use
12298 # commons-logging
12299 COMMONS_LOGGING_VERSION=1.2
12300 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12301     AC_MSG_CHECKING([which Apache commons-* libs to use])
12302     if test "$with_system_apache_commons" = "yes"; then
12303         SYSTEM_APACHE_COMMONS=TRUE
12304         AC_MSG_RESULT([external])
12305         if test -z $COMMONS_LOGGING_JAR; then
12306             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12307                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12308            elif test -f /usr/share/java/commons-logging.jar; then
12309                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12310             else
12311                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12312             fi
12313         elif ! test -f $COMMONS_LOGGING_JAR; then
12314             AC_MSG_ERROR(commons-logging.jar not found.)
12315         fi
12316     else
12317         AC_MSG_RESULT([internal])
12318         SYSTEM_APACHE_COMMONS=
12319         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12320         NEED_ANT=TRUE
12321     fi
12323 AC_SUBST(SYSTEM_APACHE_COMMONS)
12324 AC_SUBST(COMMONS_LOGGING_JAR)
12325 AC_SUBST(COMMONS_LOGGING_VERSION)
12327 # scripting provider for BeanShell?
12328 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12329 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12330     AC_MSG_RESULT([yes])
12331     ENABLE_SCRIPTING_BEANSHELL=TRUE
12333     dnl ===================================================================
12334     dnl Check for system beanshell
12335     dnl ===================================================================
12336     AC_MSG_CHECKING([which beanshell to use])
12337     if test "$with_system_beanshell" = "yes"; then
12338         AC_MSG_RESULT([external])
12339         SYSTEM_BSH=TRUE
12340         if test -z $BSH_JAR; then
12341             BSH_JAR=/usr/share/java/bsh.jar
12342         fi
12343         if ! test -f $BSH_JAR; then
12344             AC_MSG_ERROR(bsh.jar not found.)
12345         fi
12346     else
12347         AC_MSG_RESULT([internal])
12348         SYSTEM_BSH=
12349         BUILD_TYPE="$BUILD_TYPE BSH"
12350     fi
12351 else
12352     AC_MSG_RESULT([no])
12353     ENABLE_SCRIPTING_BEANSHELL=
12354     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12356 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12357 AC_SUBST(SYSTEM_BSH)
12358 AC_SUBST(BSH_JAR)
12360 # scripting provider for JavaScript?
12361 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12362 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12363     AC_MSG_RESULT([yes])
12364     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12366     dnl ===================================================================
12367     dnl Check for system rhino
12368     dnl ===================================================================
12369     AC_MSG_CHECKING([which rhino to use])
12370     if test "$with_system_rhino" = "yes"; then
12371         AC_MSG_RESULT([external])
12372         SYSTEM_RHINO=TRUE
12373         if test -z $RHINO_JAR; then
12374             RHINO_JAR=/usr/share/java/js.jar
12375         fi
12376         if ! test -f $RHINO_JAR; then
12377             AC_MSG_ERROR(js.jar not found.)
12378         fi
12379     else
12380         AC_MSG_RESULT([internal])
12381         SYSTEM_RHINO=
12382         BUILD_TYPE="$BUILD_TYPE RHINO"
12383         NEED_ANT=TRUE
12384     fi
12385 else
12386     AC_MSG_RESULT([no])
12387     ENABLE_SCRIPTING_JAVASCRIPT=
12388     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12390 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12391 AC_SUBST(SYSTEM_RHINO)
12392 AC_SUBST(RHINO_JAR)
12394 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12395 # paths should be added to library search path. So lets put all 64-bit
12396 # platforms there.
12397 supports_multilib=
12398 case "$host_cpu" in
12399 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12400     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12401         supports_multilib="yes"
12402     fi
12403     ;;
12405     ;;
12406 esac
12408 dnl ===================================================================
12409 dnl QT5 Integration
12410 dnl ===================================================================
12412 QT5_CFLAGS=""
12413 QT5_LIBS=""
12414 QMAKE5="qmake"
12415 MOC5="moc"
12416 QT5_GOBJECT_CFLAGS=""
12417 QT5_GOBJECT_LIBS=""
12418 QT5_HAVE_GOBJECT=""
12419 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12420         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12421         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12422 then
12423     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12424     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12426     if test -n "$supports_multilib"; then
12427         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12428     fi
12430     qt5_test_include="QtWidgets/qapplication.h"
12431     qt5_test_library="libQt5Widgets.so"
12433     dnl Check for qmake5
12434     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12435     if test "$QMAKE5" = "no"; then
12436         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12437     else
12438         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12439         if test -z "$qmake5_test_ver"; then
12440             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12441         fi
12442         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12443         qt5_minimal_minor="6"
12444         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12445             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12446         else
12447             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12448         fi
12449     fi
12451     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12452     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12454     AC_MSG_CHECKING([for Qt5 headers])
12455     qt5_incdir="no"
12456     for inc_dir in $qt5_incdirs; do
12457         if test -r "$inc_dir/$qt5_test_include"; then
12458             qt5_incdir="$inc_dir"
12459             break
12460         fi
12461     done
12462     AC_MSG_RESULT([$qt5_incdir])
12463     if test "x$qt5_incdir" = "xno"; then
12464         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12465     fi
12466     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12467     AC_LANG_PUSH([C++])
12468     save_CPPFLAGS=$CPPFLAGS
12469     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12470     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12471         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12472     CPPFLAGS=$save_CPPFLAGS
12473     AC_LANG_POP([C++])
12475     AC_MSG_CHECKING([for Qt5 libraries])
12476     qt5_libdir="no"
12477     for lib_dir in $qt5_libdirs; do
12478         if test -r "$lib_dir/$qt5_test_library"; then
12479             qt5_libdir="$lib_dir"
12480             break
12481         fi
12482     done
12483     AC_MSG_RESULT([$qt5_libdir])
12484     if test "x$qt5_libdir" = "xno"; then
12485         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12486     fi
12488     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12489     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12490     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12492     if test "$USING_X11" = TRUE; then
12493         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12494         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12495             QT5_HAVE_XCB_ICCCM=1
12496             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12497         ],[
12498             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)])
12499             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12500         ])
12501         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12502         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12503         QT5_USING_X11=1
12504         AC_DEFINE(QT5_USING_X11)
12505     fi
12507     dnl Check for Meta Object Compiler
12509     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12510     if test "$MOC5" = "no"; then
12511         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12512 the root of your Qt installation by exporting QT5DIR before running "configure".])
12513     fi
12515     if test "$build_gstreamer_1_0" = "yes"; then
12516         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12517                 QT5_HAVE_GOBJECT=1
12518                 AC_DEFINE(QT5_HAVE_GOBJECT)
12519             ],
12520             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12521         )
12522     fi
12524 AC_SUBST(QT5_CFLAGS)
12525 AC_SUBST(QT5_LIBS)
12526 AC_SUBST(MOC5)
12527 AC_SUBST(QT5_GOBJECT_CFLAGS)
12528 AC_SUBST(QT5_GOBJECT_LIBS)
12529 AC_SUBST(QT5_HAVE_GOBJECT)
12531 dnl ===================================================================
12532 dnl KF5 Integration
12533 dnl ===================================================================
12535 KF5_CFLAGS=""
12536 KF5_LIBS=""
12537 KF5_CONFIG="kf5-config"
12538 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12539         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12540 then
12541     if test "$OS" = "HAIKU"; then
12542         haiku_arch="`echo $RTL_ARCH | tr X x`"
12543         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12544         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12545     fi
12547     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12548     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12549     if test -n "$supports_multilib"; then
12550         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12551     fi
12553     kf5_test_include="KF5/kcoreaddons_version.h"
12554     kf5_test_library="libKF5CoreAddons.so"
12555     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12557     dnl kf5 KDE4 support compatibility installed
12558     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12559     if test "$KF5_CONFIG" != "no"; then
12560         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12561         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12562     fi
12564     dnl Check for KF5 headers
12565     AC_MSG_CHECKING([for KF5 headers])
12566     kf5_incdir="no"
12567     for kf5_check in $kf5_incdirs; do
12568         if test -r "$kf5_check/$kf5_test_include"; then
12569             kf5_incdir="$kf5_check/KF5"
12570             break
12571         fi
12572     done
12573     AC_MSG_RESULT([$kf5_incdir])
12574     if test "x$kf5_incdir" = "xno"; then
12575         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12576     fi
12578     dnl Check for KF5 libraries
12579     AC_MSG_CHECKING([for KF5 libraries])
12580     kf5_libdir="no"
12581     for kf5_check in $kf5_libdirs; do
12582         if test -r "$kf5_check/$kf5_test_library"; then
12583             kf5_libdir="$kf5_check"
12584             break
12585         fi
12586     done
12588     AC_MSG_RESULT([$kf5_libdir])
12589     if test "x$kf5_libdir" = "xno"; then
12590         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12591     fi
12593     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"
12594     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12595     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12597     if test "$USING_X11" = TRUE; then
12598         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12599     fi
12601     AC_LANG_PUSH([C++])
12602     save_CXXFLAGS=$CXXFLAGS
12603     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12604     AC_MSG_CHECKING([whether KDE is >= 5.0])
12605        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12606 #include <kcoreaddons_version.h>
12608 int main(int argc, char **argv) {
12609        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12610        else return 1;
12612        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12613     CXXFLAGS=$save_CXXFLAGS
12614     AC_LANG_POP([C++])
12616 AC_SUBST(KF5_CFLAGS)
12617 AC_SUBST(KF5_LIBS)
12619 dnl ===================================================================
12620 dnl Test whether to include Evolution 2 support
12621 dnl ===================================================================
12622 AC_MSG_CHECKING([whether to enable evolution 2 support])
12623 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12624     AC_MSG_RESULT([yes])
12625     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12626     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12627     FilterLibs "${GOBJECT_LIBS}"
12628     GOBJECT_LIBS="${filteredlibs}"
12629     ENABLE_EVOAB2="TRUE"
12630 else
12631     ENABLE_EVOAB2=""
12632     AC_MSG_RESULT([no])
12634 AC_SUBST(ENABLE_EVOAB2)
12635 AC_SUBST(GOBJECT_CFLAGS)
12636 AC_SUBST(GOBJECT_LIBS)
12638 dnl ===================================================================
12639 dnl Test which themes to include
12640 dnl ===================================================================
12641 AC_MSG_CHECKING([which themes to include])
12642 # if none given use default subset of available themes
12643 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12644     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"
12647 WITH_THEMES=""
12648 if test "x$with_theme" != "xno"; then
12649     for theme in $with_theme; do
12650         case $theme in
12651         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" ;;
12652         default) real_theme=colibre ;;
12653         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12654         esac
12655         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12656     done
12658 AC_MSG_RESULT([$WITH_THEMES])
12659 AC_SUBST([WITH_THEMES])
12660 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12661 for theme in $with_theme; do
12662     case $theme in
12663     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12664     *) ;;
12665     esac
12666 done
12668 dnl ===================================================================
12669 dnl Test whether to integrate helppacks into the product's installer
12670 dnl ===================================================================
12671 AC_MSG_CHECKING([for helppack integration])
12672 if test "$with_helppack_integration" = "no"; then
12673     AC_MSG_RESULT([no integration])
12674 else
12675     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12676     AC_MSG_RESULT([integration])
12679 ###############################################################################
12680 # Extensions checking
12681 ###############################################################################
12682 AC_MSG_CHECKING([for extensions integration])
12683 if test "x$enable_extension_integration" != "xno"; then
12684     WITH_EXTENSION_INTEGRATION=TRUE
12685     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12686     AC_MSG_RESULT([yes, use integration])
12687 else
12688     WITH_EXTENSION_INTEGRATION=
12689     AC_MSG_RESULT([no, do not integrate])
12691 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12693 dnl Should any extra extensions be included?
12694 dnl There are standalone tests for each of these below.
12695 WITH_EXTRA_EXTENSIONS=
12696 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12698 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12699 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12700 if test "x$with_java" != "xno"; then
12701     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12702     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12705 AC_MSG_CHECKING([whether to build opens___.ttf])
12706 if test "$enable_build_opensymbol" = "yes"; then
12707     AC_MSG_RESULT([yes])
12708     AC_PATH_PROG(FONTFORGE, fontforge)
12709     if test -z "$FONTFORGE"; then
12710         AC_MSG_ERROR([fontforge not installed])
12711     fi
12712 else
12713     AC_MSG_RESULT([no])
12714     OPENSYMBOL_TTF=884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
12715     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12717 AC_SUBST(OPENSYMBOL_TTF)
12718 AC_SUBST(FONTFORGE)
12720 dnl ===================================================================
12721 dnl Test whether to include fonts
12722 dnl ===================================================================
12723 AC_MSG_CHECKING([whether to include third-party fonts])
12724 if test "$with_fonts" != "no"; then
12725     AC_MSG_RESULT([yes])
12726     WITH_FONTS=TRUE
12727     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12728     AC_DEFINE(HAVE_MORE_FONTS)
12729 else
12730     AC_MSG_RESULT([no])
12731     WITH_FONTS=
12732     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12734 AC_SUBST(WITH_FONTS)
12737 dnl ===================================================================
12738 dnl Test whether to enable online update service
12739 dnl ===================================================================
12740 AC_MSG_CHECKING([whether to enable online update])
12741 ENABLE_ONLINE_UPDATE=
12742 ENABLE_ONLINE_UPDATE_MAR=
12743 UPDATE_CONFIG=
12744 if test "$enable_online_update" = ""; then
12745     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12746         AC_MSG_RESULT([yes])
12747         ENABLE_ONLINE_UPDATE="TRUE"
12748     else
12749         AC_MSG_RESULT([no])
12750     fi
12751 else
12752     if test "$enable_online_update" = "mar"; then
12753         AC_MSG_RESULT([yes - MAR-based online update])
12754         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12755         if test "$with_update_config" = ""; then
12756             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12757         fi
12758         UPDATE_CONFIG="$with_update_config"
12759         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12760     elif test "$enable_online_update" = "yes"; then
12761         AC_MSG_RESULT([yes])
12762         ENABLE_ONLINE_UPDATE="TRUE"
12763     else
12764         AC_MSG_RESULT([no])
12765     fi
12767 AC_SUBST(ENABLE_ONLINE_UPDATE)
12768 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12769 AC_SUBST(UPDATE_CONFIG)
12771 dnl ===================================================================
12772 dnl Test whether we need bzip2
12773 dnl ===================================================================
12774 SYSTEM_BZIP2=
12775 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12776     AC_MSG_CHECKING([whether to use system bzip2])
12777     if test "$with_system_bzip2" = yes; then
12778         SYSTEM_BZIP2=TRUE
12779         AC_MSG_RESULT([yes])
12780         PKG_CHECK_MODULES(BZIP2, bzip2)
12781         FilterLibs "${BZIP2_LIBS}"
12782         BZIP2_LIBS="${filteredlibs}"
12783     else
12784         AC_MSG_RESULT([no])
12785         BUILD_TYPE="$BUILD_TYPE BZIP2"
12786     fi
12788 AC_SUBST(SYSTEM_BZIP2)
12789 AC_SUBST(BZIP2_CFLAGS)
12790 AC_SUBST(BZIP2_LIBS)
12792 dnl ===================================================================
12793 dnl Test whether to enable extension update
12794 dnl ===================================================================
12795 AC_MSG_CHECKING([whether to enable extension update])
12796 ENABLE_EXTENSION_UPDATE=
12797 if test "x$enable_extension_update" = "xno"; then
12798     AC_MSG_RESULT([no])
12799 else
12800     AC_MSG_RESULT([yes])
12801     ENABLE_EXTENSION_UPDATE="TRUE"
12802     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12803     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12805 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12808 dnl ===================================================================
12809 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12810 dnl ===================================================================
12811 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12812 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12813     AC_MSG_RESULT([no])
12814     ENABLE_SILENT_MSI=
12815 else
12816     AC_MSG_RESULT([yes])
12817     ENABLE_SILENT_MSI=TRUE
12818     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12820 AC_SUBST(ENABLE_SILENT_MSI)
12822 AC_MSG_CHECKING([whether and how to use Xinerama])
12823 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12824     if test "$x_libraries" = "default_x_libraries"; then
12825         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12826         if test "x$XINERAMALIB" = x; then
12827            XINERAMALIB="/usr/lib"
12828         fi
12829     else
12830         XINERAMALIB="$x_libraries"
12831     fi
12832     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12833         # we have both versions, let the user decide but use the dynamic one
12834         # per default
12835         USE_XINERAMA=TRUE
12836         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12837             XINERAMA_LINK=dynamic
12838         else
12839             XINERAMA_LINK=static
12840         fi
12841     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12842         # we have only the dynamic version
12843         USE_XINERAMA=TRUE
12844         XINERAMA_LINK=dynamic
12845     elif test -e "$XINERAMALIB/libXinerama.a"; then
12846         # static version
12847         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12848             USE_XINERAMA=TRUE
12849             XINERAMA_LINK=static
12850         else
12851             USE_XINERAMA=
12852             XINERAMA_LINK=none
12853         fi
12854     else
12855         # no Xinerama
12856         USE_XINERAMA=
12857         XINERAMA_LINK=none
12858     fi
12859     if test "$USE_XINERAMA" = "TRUE"; then
12860         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12861         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12862             [AC_MSG_ERROR(Xinerama header not found.)], [])
12863         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12864         if test "x$XEXTLIB" = x; then
12865            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12866         fi
12867         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12868         if test "$_os" = "FreeBSD"; then
12869             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12870         fi
12871         if test "$_os" = "Linux"; then
12872             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12873         fi
12874         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12875             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12876     else
12877         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12878     fi
12879 else
12880     USE_XINERAMA=
12881     XINERAMA_LINK=none
12882     AC_MSG_RESULT([no])
12884 AC_SUBST(USE_XINERAMA)
12885 AC_SUBST(XINERAMA_LINK)
12887 dnl ===================================================================
12888 dnl Test whether to build cairo or rely on the system version
12889 dnl ===================================================================
12891 if test "$USING_X11" = TRUE; then
12892     # Used in vcl/Library_vclplug_gen.mk
12893     test_cairo=yes
12896 if test "$test_cairo" = "yes"; then
12897     AC_MSG_CHECKING([whether to use the system cairo])
12899     : ${with_system_cairo:=$with_system_libs}
12900     if test "$with_system_cairo" = "yes"; then
12901         SYSTEM_CAIRO=TRUE
12902         AC_MSG_RESULT([yes])
12904         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12905         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12906         FilterLibs "${CAIRO_LIBS}"
12907         CAIRO_LIBS="${filteredlibs}"
12909         if test "$test_xrender" = "yes"; then
12910             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12911             AC_LANG_PUSH([C])
12912             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12913 #ifdef PictStandardA8
12914 #else
12915       return fail;
12916 #endif
12917 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12919             AC_LANG_POP([C])
12920         fi
12921     else
12922         SYSTEM_CAIRO=
12923         AC_MSG_RESULT([no])
12925         BUILD_TYPE="$BUILD_TYPE CAIRO"
12926     fi
12929 AC_SUBST(SYSTEM_CAIRO)
12930 AC_SUBST(CAIRO_CFLAGS)
12931 AC_SUBST(CAIRO_LIBS)
12933 dnl ===================================================================
12934 dnl Test whether to use avahi
12935 dnl ===================================================================
12936 if test "$_os" = "WINNT"; then
12937     # Windows uses bundled mDNSResponder
12938     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12939 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12940     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12941                       [ENABLE_AVAHI="TRUE"])
12942     AC_DEFINE(HAVE_FEATURE_AVAHI)
12943     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12944     FilterLibs "${AVAHI_LIBS}"
12945     AVAHI_LIBS="${filteredlibs}"
12948 AC_SUBST(ENABLE_AVAHI)
12949 AC_SUBST(AVAHI_CFLAGS)
12950 AC_SUBST(AVAHI_LIBS)
12952 dnl ===================================================================
12953 dnl Test whether to use liblangtag
12954 dnl ===================================================================
12955 SYSTEM_LIBLANGTAG=
12956 AC_MSG_CHECKING([whether to use system liblangtag])
12957 if test "$with_system_liblangtag" = yes; then
12958     SYSTEM_LIBLANGTAG=TRUE
12959     AC_MSG_RESULT([yes])
12960     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12961     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12962     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12963     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12964     FilterLibs "${LIBLANGTAG_LIBS}"
12965     LIBLANGTAG_LIBS="${filteredlibs}"
12966 else
12967     SYSTEM_LIBLANGTAG=
12968     AC_MSG_RESULT([no])
12969     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12970     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12971     if test "$COM" = "MSC"; then
12972         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12973     else
12974         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12975     fi
12977 AC_SUBST(SYSTEM_LIBLANGTAG)
12978 AC_SUBST(LIBLANGTAG_CFLAGS)
12979 AC_SUBST(LIBLANGTAG_LIBS)
12981 dnl ===================================================================
12982 dnl Test whether to build libpng or rely on the system version
12983 dnl ===================================================================
12985 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12987 dnl ===================================================================
12988 dnl Check for runtime JVM search path
12989 dnl ===================================================================
12990 if test "$ENABLE_JAVA" != ""; then
12991     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12992     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12993         AC_MSG_RESULT([yes])
12994         if ! test -d "$with_jvm_path"; then
12995             AC_MSG_ERROR(["$with_jvm_path" not a directory])
12996         fi
12997         if ! test -d "$with_jvm_path"jvm; then
12998             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12999         fi
13000         JVM_ONE_PATH_CHECK="$with_jvm_path"
13001         AC_SUBST(JVM_ONE_PATH_CHECK)
13002     else
13003         AC_MSG_RESULT([no])
13004     fi
13007 dnl ===================================================================
13008 dnl Test for the presence of Ant and that it works
13009 dnl ===================================================================
13011 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13012     ANT_HOME=; export ANT_HOME
13013     WITH_ANT_HOME=; export WITH_ANT_HOME
13014     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13015         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13016             if test "$_os" = "WINNT"; then
13017                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13018             else
13019                 with_ant_home="$LODE_HOME/opt/ant"
13020             fi
13021         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13022             with_ant_home="$LODE_HOME/opt/ant"
13023         fi
13024     fi
13025     if test -z "$with_ant_home"; then
13026         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13027     else
13028         if test "$_os" = "WINNT"; then
13029             # AC_PATH_PROGS needs unix path
13030             with_ant_home=`cygpath -u "$with_ant_home"`
13031         fi
13032         AbsolutePath "$with_ant_home"
13033         with_ant_home=$absolute_path
13034         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13035         WITH_ANT_HOME=$with_ant_home
13036         ANT_HOME=$with_ant_home
13037     fi
13039     if test -z "$ANT"; then
13040         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13041     else
13042         # resolve relative or absolute symlink
13043         while test -h "$ANT"; do
13044             a_cwd=`pwd`
13045             a_basename=`basename "$ANT"`
13046             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13047             cd "`dirname "$ANT"`"
13048             cd "`dirname "$a_script"`"
13049             ANT="`pwd`"/"`basename "$a_script"`"
13050             cd "$a_cwd"
13051         done
13053         AC_MSG_CHECKING([if $ANT works])
13054         mkdir -p conftest.dir
13055         a_cwd=$(pwd)
13056         cd conftest.dir
13057         cat > conftest.java << EOF
13058         public class conftest {
13059             int testmethod(int a, int b) {
13060                     return a + b;
13061             }
13062         }
13065         cat > conftest.xml << EOF
13066         <project name="conftest" default="conftest">
13067         <target name="conftest">
13068             <javac srcdir="." includes="conftest.java">
13069             </javac>
13070         </target>
13071         </project>
13074         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13075         if test $? = 0 -a -f ./conftest.class; then
13076             AC_MSG_RESULT([Ant works])
13077             if test -z "$WITH_ANT_HOME"; then
13078                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13079                 if test -z "$ANT_HOME"; then
13080                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13081                 fi
13082             else
13083                 ANT_HOME="$WITH_ANT_HOME"
13084             fi
13085         else
13086             echo "configure: Ant test failed" >&5
13087             cat conftest.java >&5
13088             cat conftest.xml >&5
13089             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13090         fi
13091         cd "$a_cwd"
13092         rm -fr conftest.dir
13093     fi
13094     if test -z "$ANT_HOME"; then
13095         ANT_HOME="NO_ANT_HOME"
13096     else
13097         PathFormat "$ANT_HOME"
13098         ANT_HOME="$formatted_path"
13099         PathFormat "$ANT"
13100         ANT="$formatted_path"
13101     fi
13103     dnl Checking for ant.jar
13104     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13105         AC_MSG_CHECKING([Ant lib directory])
13106         if test -f $ANT_HOME/lib/ant.jar; then
13107             ANT_LIB="$ANT_HOME/lib"
13108         else
13109             if test -f $ANT_HOME/ant.jar; then
13110                 ANT_LIB="$ANT_HOME"
13111             else
13112                 if test -f /usr/share/java/ant.jar; then
13113                     ANT_LIB=/usr/share/java
13114                 else
13115                     if test -f /usr/share/ant-core/lib/ant.jar; then
13116                         ANT_LIB=/usr/share/ant-core/lib
13117                     else
13118                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13119                             ANT_LIB="$ANT_HOME/lib/ant"
13120                         else
13121                             if test -f /usr/share/lib/ant/ant.jar; then
13122                                 ANT_LIB=/usr/share/lib/ant
13123                             else
13124                                 AC_MSG_ERROR([Ant libraries not found!])
13125                             fi
13126                         fi
13127                     fi
13128                 fi
13129             fi
13130         fi
13131         PathFormat "$ANT_LIB"
13132         ANT_LIB="$formatted_path"
13133         AC_MSG_RESULT([Ant lib directory found.])
13134     fi
13136     ant_minver=1.6.0
13137     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13139     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13140     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13141     ant_version_major=`echo $ant_version | cut -d. -f1`
13142     ant_version_minor=`echo $ant_version | cut -d. -f2`
13143     echo "configure: ant_version $ant_version " >&5
13144     echo "configure: ant_version_major $ant_version_major " >&5
13145     echo "configure: ant_version_minor $ant_version_minor " >&5
13146     if test "$ant_version_major" -ge "2"; then
13147         AC_MSG_RESULT([yes, $ant_version])
13148     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13149         AC_MSG_RESULT([yes, $ant_version])
13150     else
13151         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13152     fi
13154     rm -f conftest* core core.* *.core
13156 AC_SUBST(ANT)
13157 AC_SUBST(ANT_HOME)
13158 AC_SUBST(ANT_LIB)
13160 OOO_JUNIT_JAR=
13161 HAMCREST_JAR=
13162 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13163     AC_MSG_CHECKING([for JUnit 4])
13164     if test "$with_junit" = "yes"; then
13165         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13166             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13167         elif test -e /usr/share/java/junit4.jar; then
13168             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13169         else
13170            if test -e /usr/share/lib/java/junit.jar; then
13171               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13172            else
13173               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13174            fi
13175         fi
13176     else
13177         OOO_JUNIT_JAR=$with_junit
13178     fi
13179     if test "$_os" = "WINNT"; then
13180         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13181     fi
13182     printf 'import org.junit.Before;' > conftest.java
13183     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13184         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13185     else
13186         AC_MSG_ERROR(
13187 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13188  specify its pathname via --with-junit=..., or disable it via --without-junit])
13189     fi
13190     rm -f conftest.class conftest.java
13191     if test $OOO_JUNIT_JAR != ""; then
13192         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13193     fi
13195     AC_MSG_CHECKING([for included Hamcrest])
13196     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13197     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13198         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13199     else
13200         AC_MSG_RESULT([Not included])
13201         AC_MSG_CHECKING([for standalone hamcrest jar.])
13202         if test "$with_hamcrest" = "yes"; then
13203             if test -e /usr/share/lib/java/hamcrest.jar; then
13204                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13205             elif test -e /usr/share/java/hamcrest/core.jar; then
13206                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13207             else
13208                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13209             fi
13210         else
13211             HAMCREST_JAR=$with_hamcrest
13212         fi
13213         if test "$_os" = "WINNT"; then
13214             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13215         fi
13216         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13217             AC_MSG_RESULT([$HAMCREST_JAR])
13218         else
13219             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),
13220                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13221         fi
13222     fi
13223     rm -f conftest.class conftest.java
13225 AC_SUBST(OOO_JUNIT_JAR)
13226 AC_SUBST(HAMCREST_JAR)
13229 AC_SUBST(SCPDEFS)
13232 # check for wget and curl
13234 WGET=
13235 CURL=
13237 if test "$enable_fetch_external" != "no"; then
13239 CURL=`which curl 2>/dev/null`
13241 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13242     # wget new enough?
13243     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13244     if test $? -eq 0; then
13245         WGET=$i
13246         break
13247     fi
13248 done
13250 if test -z "$WGET" -a -z "$CURL"; then
13251     AC_MSG_ERROR([neither wget nor curl found!])
13256 AC_SUBST(WGET)
13257 AC_SUBST(CURL)
13260 # check for sha256sum
13262 SHA256SUM=
13264 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13265     eval "$i -a 256 --version" > /dev/null 2>&1
13266     ret=$?
13267     if test $ret -eq 0; then
13268         SHA256SUM="$i -a 256"
13269         break
13270     fi
13271 done
13273 if test -z "$SHA256SUM"; then
13274     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13275         eval "$i --version" > /dev/null 2>&1
13276         ret=$?
13277         if test $ret -eq 0; then
13278             SHA256SUM=$i
13279             break
13280         fi
13281     done
13284 if test -z "$SHA256SUM"; then
13285     AC_MSG_ERROR([no sha256sum found!])
13288 AC_SUBST(SHA256SUM)
13290 dnl ===================================================================
13291 dnl Dealing with l10n options
13292 dnl ===================================================================
13293 AC_MSG_CHECKING([which languages to be built])
13294 # get list of all languages
13295 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13296 # the sed command does the following:
13297 #   + if a line ends with a backslash, append the next line to it
13298 #   + adds " on the beginning of the value (after =)
13299 #   + adds " at the end of the value
13300 #   + removes en-US; we want to put it on the beginning
13301 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13302 [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)]
13303 ALL_LANGS="en-US $completelangiso"
13304 # check the configured localizations
13305 WITH_LANG="$with_lang"
13307 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13308 # (Norwegian is "nb" and "nn".)
13309 if test "$WITH_LANG" = "no"; then
13310     WITH_LANG=
13313 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13314     AC_MSG_RESULT([en-US])
13315 else
13316     AC_MSG_RESULT([$WITH_LANG])
13317     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13318     if test -z "$MSGFMT"; then
13319         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13320             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13321         elif test -x "/opt/lo/bin/msgfmt"; then
13322             MSGFMT="/opt/lo/bin/msgfmt"
13323         else
13324             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13325             if test -z "$MSGFMT"; then
13326                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13327             fi
13328         fi
13329     fi
13330     if test -z "$MSGUNIQ"; then
13331         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13332             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13333         elif test -x "/opt/lo/bin/msguniq"; then
13334             MSGUNIQ="/opt/lo/bin/msguniq"
13335         else
13336             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13337             if test -z "$MSGUNIQ"; then
13338                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13339             fi
13340         fi
13341     fi
13343 AC_SUBST(MSGFMT)
13344 AC_SUBST(MSGUNIQ)
13345 # check that the list is valid
13346 for lang in $WITH_LANG; do
13347     test "$lang" = "ALL" && continue
13348     # need to check for the exact string, so add space before and after the list of all languages
13349     for vl in $ALL_LANGS; do
13350         if test "$vl" = "$lang"; then
13351            break
13352         fi
13353     done
13354     if test "$vl" != "$lang"; then
13355         # if you're reading this - you prolly quoted your languages remove the quotes ...
13356         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13357     fi
13358 done
13359 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13360     echo $WITH_LANG | grep -q en-US
13361     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13363 # list with substituted ALL
13364 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13365 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13366 test "$WITH_LANG" = "en-US" && WITH_LANG=
13367 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13368     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13369     ALL_LANGS=`echo $ALL_LANGS qtz`
13371 AC_SUBST(ALL_LANGS)
13372 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13373 AC_SUBST(WITH_LANG)
13374 AC_SUBST(WITH_LANG_LIST)
13375 AC_SUBST(GIT_NEEDED_SUBMODULES)
13377 WITH_POOR_HELP_LOCALIZATIONS=
13378 if test -d "$SRC_ROOT/translations/source"; then
13379     for l in `ls -1 $SRC_ROOT/translations/source`; do
13380         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13381             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13382         fi
13383     done
13385 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13387 if test -n "$with_locales"; then
13388     WITH_LOCALES="$with_locales"
13390     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13391     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13392     # config_host/config_locales.h.in
13393     for locale in $WITH_LOCALES; do
13394         lang=${locale%_*}
13396         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13398         case $lang in
13399         hi|mr*ne)
13400             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13401             ;;
13402         bg|ru)
13403             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13404             ;;
13405         esac
13406     done
13407 else
13408     AC_DEFINE(WITH_LOCALE_ALL)
13410 AC_SUBST(WITH_LOCALES)
13412 dnl git submodule update --reference
13413 dnl ===================================================================
13414 if test -n "${GIT_REFERENCE_SRC}"; then
13415     for repo in ${GIT_NEEDED_SUBMODULES}; do
13416         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13417             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13418         fi
13419     done
13421 AC_SUBST(GIT_REFERENCE_SRC)
13423 dnl git submodules linked dirs
13424 dnl ===================================================================
13425 if test -n "${GIT_LINK_SRC}"; then
13426     for repo in ${GIT_NEEDED_SUBMODULES}; do
13427         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13428             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13429         fi
13430     done
13432 AC_SUBST(GIT_LINK_SRC)
13434 dnl branding
13435 dnl ===================================================================
13436 AC_MSG_CHECKING([for alternative branding images directory])
13437 # initialize mapped arrays
13438 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13439 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13441 if test -z "$with_branding" -o "$with_branding" = "no"; then
13442     AC_MSG_RESULT([none])
13443     DEFAULT_BRAND_IMAGES="$brand_files"
13444 else
13445     if ! test -d $with_branding ; then
13446         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13447     else
13448         AC_MSG_RESULT([$with_branding])
13449         CUSTOM_BRAND_DIR="$with_branding"
13450         for lfile in $brand_files
13451         do
13452             if ! test -f $with_branding/$lfile ; then
13453                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13454                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13455             else
13456                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13457             fi
13458         done
13459         check_for_progress="yes"
13460     fi
13462 AC_SUBST([BRAND_INTRO_IMAGES])
13463 AC_SUBST([CUSTOM_BRAND_DIR])
13464 AC_SUBST([CUSTOM_BRAND_IMAGES])
13465 AC_SUBST([DEFAULT_BRAND_IMAGES])
13468 AC_MSG_CHECKING([for 'intro' progress settings])
13469 PROGRESSBARCOLOR=
13470 PROGRESSSIZE=
13471 PROGRESSPOSITION=
13472 PROGRESSFRAMECOLOR=
13473 PROGRESSTEXTCOLOR=
13474 PROGRESSTEXTBASELINE=
13476 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13477     source "$with_branding/progress.conf"
13478     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13479 else
13480     AC_MSG_RESULT([none])
13483 AC_SUBST(PROGRESSBARCOLOR)
13484 AC_SUBST(PROGRESSSIZE)
13485 AC_SUBST(PROGRESSPOSITION)
13486 AC_SUBST(PROGRESSFRAMECOLOR)
13487 AC_SUBST(PROGRESSTEXTCOLOR)
13488 AC_SUBST(PROGRESSTEXTBASELINE)
13491 dnl ===================================================================
13492 dnl Custom build version
13493 dnl ===================================================================
13494 AC_MSG_CHECKING([for extra build ID])
13495 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13496     EXTRA_BUILDID="$with_extra_buildid"
13498 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13499 if test -n "$EXTRA_BUILDID" ; then
13500     AC_MSG_RESULT([$EXTRA_BUILDID])
13501 else
13502     AC_MSG_RESULT([not set])
13504 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13506 OOO_VENDOR=
13507 AC_MSG_CHECKING([for vendor])
13508 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13509     OOO_VENDOR="$USERNAME"
13511     if test -z "$OOO_VENDOR"; then
13512         OOO_VENDOR="$USER"
13513     fi
13515     if test -z "$OOO_VENDOR"; then
13516         OOO_VENDOR="`id -u -n`"
13517     fi
13519     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13520 else
13521     OOO_VENDOR="$with_vendor"
13522     AC_MSG_RESULT([$OOO_VENDOR])
13524 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13525 AC_SUBST(OOO_VENDOR)
13527 if test "$_os" = "Android" ; then
13528     ANDROID_PACKAGE_NAME=
13529     AC_MSG_CHECKING([for Android package name])
13530     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13531         if test -n "$ENABLE_DEBUG"; then
13532             # Default to the package name that makes ndk-gdb happy.
13533             ANDROID_PACKAGE_NAME="org.libreoffice"
13534         else
13535             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13536         fi
13538         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13539     else
13540         ANDROID_PACKAGE_NAME="$with_android_package_name"
13541         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13542     fi
13543     AC_SUBST(ANDROID_PACKAGE_NAME)
13546 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13547 if test "$with_compat_oowrappers" = "yes"; then
13548     WITH_COMPAT_OOWRAPPERS=TRUE
13549     AC_MSG_RESULT(yes)
13550 else
13551     WITH_COMPAT_OOWRAPPERS=
13552     AC_MSG_RESULT(no)
13554 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13556 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13557 AC_MSG_CHECKING([for install dirname])
13558 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13559     INSTALLDIRNAME="$with_install_dirname"
13561 AC_MSG_RESULT([$INSTALLDIRNAME])
13562 AC_SUBST(INSTALLDIRNAME)
13564 AC_MSG_CHECKING([for prefix])
13565 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13566 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13567 PREFIXDIR="$prefix"
13568 AC_MSG_RESULT([$PREFIXDIR])
13569 AC_SUBST(PREFIXDIR)
13571 LIBDIR=[$(eval echo $(eval echo $libdir))]
13572 AC_SUBST(LIBDIR)
13574 DATADIR=[$(eval echo $(eval echo $datadir))]
13575 AC_SUBST(DATADIR)
13577 MANDIR=[$(eval echo $(eval echo $mandir))]
13578 AC_SUBST(MANDIR)
13580 DOCDIR=[$(eval echo $(eval echo $docdir))]
13581 AC_SUBST(DOCDIR)
13583 BINDIR=[$(eval echo $(eval echo $bindir))]
13584 AC_SUBST(BINDIR)
13586 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13587 AC_SUBST(INSTALLDIR)
13589 TESTINSTALLDIR="${BUILDDIR}/test-install"
13590 AC_SUBST(TESTINSTALLDIR)
13593 # ===================================================================
13594 # OAuth2 id and secrets
13595 # ===================================================================
13597 AC_MSG_CHECKING([for Google Drive client id and secret])
13598 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13599     AC_MSG_RESULT([not set])
13600     GDRIVE_CLIENT_ID="\"\""
13601     GDRIVE_CLIENT_SECRET="\"\""
13602 else
13603     AC_MSG_RESULT([set])
13604     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13605     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13607 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13608 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13610 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13611 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13612     AC_MSG_RESULT([not set])
13613     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13614     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13615 else
13616     AC_MSG_RESULT([set])
13617     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13618     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13620 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13621 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13623 AC_MSG_CHECKING([for OneDrive client id and secret])
13624 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13625     AC_MSG_RESULT([not set])
13626     ONEDRIVE_CLIENT_ID="\"\""
13627     ONEDRIVE_CLIENT_SECRET="\"\""
13628 else
13629     AC_MSG_RESULT([set])
13630     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13631     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13633 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13634 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13637 dnl ===================================================================
13638 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13639 dnl --enable-dependency-tracking configure option
13640 dnl ===================================================================
13641 AC_MSG_CHECKING([whether to enable dependency tracking])
13642 if test "$enable_dependency_tracking" = "no"; then
13643     nodep=TRUE
13644     AC_MSG_RESULT([no])
13645 else
13646     AC_MSG_RESULT([yes])
13648 AC_SUBST(nodep)
13650 dnl ===================================================================
13651 dnl Number of CPUs to use during the build
13652 dnl ===================================================================
13653 AC_MSG_CHECKING([for number of processors to use])
13654 # plain --with-parallelism is just the default
13655 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13656     if test "$with_parallelism" = "no"; then
13657         PARALLELISM=0
13658     else
13659         PARALLELISM=$with_parallelism
13660     fi
13661 else
13662     if test "$enable_icecream" = "yes"; then
13663         PARALLELISM="40"
13664     else
13665         case `uname -s` in
13667         Darwin|FreeBSD|NetBSD|OpenBSD)
13668             PARALLELISM=`sysctl -n hw.ncpu`
13669             ;;
13671         Linux)
13672             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13673         ;;
13674         # what else than above does profit here *and* has /proc?
13675         *)
13676             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13677             ;;
13678         esac
13680         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13681         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13682     fi
13685 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13686     if test -z "$with_parallelism"; then
13687             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13688             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13689             PARALLELISM="1"
13690     else
13691         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."
13692     fi
13695 if test $PARALLELISM -eq 0; then
13696     AC_MSG_RESULT([explicit make -j option needed])
13697 else
13698     AC_MSG_RESULT([$PARALLELISM])
13700 AC_SUBST(PARALLELISM)
13702 IWYU_PATH="$with_iwyu"
13703 AC_SUBST(IWYU_PATH)
13704 if test ! -z "$IWYU_PATH"; then
13705     if test ! -f "$IWYU_PATH"; then
13706         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13707     fi
13711 # Set up ILIB for MSVC build
13713 ILIB1=
13714 if test "$build_os" = "cygwin"; then
13715     ILIB="."
13716     if test -n "$JAVA_HOME"; then
13717         ILIB="$ILIB;$JAVA_HOME/lib"
13718     fi
13719     ILIB1=-link
13720     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13721     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13722     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13723     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13724     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13725         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13726         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13727     fi
13728     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13729     ucrtlibpath_formatted=$formatted_path
13730     ILIB="$ILIB;$ucrtlibpath_formatted"
13731     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13732     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13733         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13734     else
13735         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13736     fi
13738     if test "$cross_compiling" != "yes"; then
13739         ILIB_FOR_BUILD="$ILIB"
13740     fi
13742 AC_SUBST(ILIB)
13743 AC_SUBST(ILIB_FOR_BUILD)
13745 # ===================================================================
13746 # Creating bigger shared library to link against
13747 # ===================================================================
13748 AC_MSG_CHECKING([whether to create huge library])
13749 MERGELIBS=
13751 if test $_os = iOS -o $_os = Android; then
13752     # Never any point in mergelibs for these as we build just static
13753     # libraries anyway...
13754     enable_mergelibs=no
13757 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13758     if test $_os != Linux -a $_os != WINNT; then
13759         add_warning "--enable-mergelibs is not tested for this platform"
13760     fi
13761     MERGELIBS="TRUE"
13762     AC_MSG_RESULT([yes])
13763     AC_DEFINE(ENABLE_MERGELIBS)
13764 else
13765     AC_MSG_RESULT([no])
13767 AC_SUBST([MERGELIBS])
13769 dnl ===================================================================
13770 dnl icerun is a wrapper that stops us spawning tens of processes
13771 dnl locally - for tools that can't be executed on the compile cluster
13772 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13773 dnl ===================================================================
13774 AC_MSG_CHECKING([whether to use icerun wrapper])
13775 ICECREAM_RUN=
13776 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13777     ICECREAM_RUN=icerun
13778     AC_MSG_RESULT([yes])
13779 else
13780     AC_MSG_RESULT([no])
13782 AC_SUBST(ICECREAM_RUN)
13784 dnl ===================================================================
13785 dnl Setup the ICECC_VERSION for the build the same way it was set for
13786 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13787 dnl ===================================================================
13788 x_ICECC_VERSION=[\#]
13789 if test -n "$ICECC_VERSION" ; then
13790     x_ICECC_VERSION=
13792 AC_SUBST(x_ICECC_VERSION)
13793 AC_SUBST(ICECC_VERSION)
13795 dnl ===================================================================
13797 AC_MSG_CHECKING([MPL subset])
13798 MPL_SUBSET=
13800 if test "$enable_mpl_subset" = "yes"; then
13801     warn_report=false
13802     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13803         warn_report=true
13804     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13805         warn_report=true
13806     fi
13807     if test "$warn_report" = "true"; then
13808         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13809     fi
13810     if test "x$enable_postgresql_sdbc" != "xno"; then
13811         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13812     fi
13813     if test "$enable_lotuswordpro" = "yes"; then
13814         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13815     fi
13816     if test "$WITH_WEBDAV" = "neon"; then
13817         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13818     fi
13819     if test -n "$ENABLE_POPPLER"; then
13820         if test "x$SYSTEM_POPPLER" = "x"; then
13821             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13822         fi
13823     fi
13824     # cf. m4/libo_check_extension.m4
13825     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13826         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13827     fi
13828     for theme in $WITH_THEMES; do
13829         case $theme in
13830         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13831             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13832         *) : ;;
13833         esac
13834     done
13836     ENABLE_OPENGL_TRANSITIONS=
13838     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13839         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13840     fi
13842     MPL_SUBSET="TRUE"
13843     AC_DEFINE(MPL_HAVE_SUBSET)
13844     AC_MSG_RESULT([only])
13845 else
13846     AC_MSG_RESULT([no restrictions])
13848 AC_SUBST(MPL_SUBSET)
13850 dnl ===================================================================
13852 AC_MSG_CHECKING([formula logger])
13853 ENABLE_FORMULA_LOGGER=
13855 if test "x$enable_formula_logger" = "xyes"; then
13856     AC_MSG_RESULT([yes])
13857     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13858     ENABLE_FORMULA_LOGGER=TRUE
13859 elif test -n "$ENABLE_DBGUTIL" ; then
13860     AC_MSG_RESULT([yes])
13861     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13862     ENABLE_FORMULA_LOGGER=TRUE
13863 else
13864     AC_MSG_RESULT([no])
13867 AC_SUBST(ENABLE_FORMULA_LOGGER)
13869 dnl ===================================================================
13870 dnl Checking for active Antivirus software.
13871 dnl ===================================================================
13873 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13874     AC_MSG_CHECKING([for active Antivirus software])
13875     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13876     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13877         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13878             AC_MSG_RESULT([found])
13879             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13880             echo $EICAR_STRING > $SRC_ROOT/eicar
13881             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13882             rm $SRC_ROOT/eicar
13883             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13884                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13885             fi
13886             echo $EICAR_STRING > $BUILDDIR/eicar
13887             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13888             rm $BUILDDIR/eicar
13889             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13890                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13891             fi
13892             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"
13893         else
13894             AC_MSG_RESULT([not found])
13895         fi
13896     else
13897         AC_MSG_RESULT([n/a])
13898     fi
13901 dnl ===================================================================
13902 dnl Setting up the environment.
13903 dnl ===================================================================
13904 AC_MSG_NOTICE([setting up the build environment variables...])
13906 AC_SUBST(COMPATH)
13908 if test "$build_os" = "cygwin"; then
13909     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13910         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13911         ATL_INCLUDE="$COMPATH/atlmfc/include"
13912     elif test -d "$COMPATH/atlmfc/lib"; then
13913         ATL_LIB="$COMPATH/atlmfc/lib"
13914         ATL_INCLUDE="$COMPATH/atlmfc/include"
13915     else
13916         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13917         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13918     fi
13919     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13920     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13921     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13923     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13924     PathFormat "/usr/bin/find.exe"
13925     FIND="$formatted_path"
13926     PathFormat "/usr/bin/sort.exe"
13927     SORT="$formatted_path"
13928     PathFormat "/usr/bin/grep.exe"
13929     WIN_GREP="$formatted_path"
13930     PathFormat "/usr/bin/ls.exe"
13931     WIN_LS="$formatted_path"
13932     PathFormat "/usr/bin/touch.exe"
13933     WIN_TOUCH="$formatted_path"
13934 else
13935     FIND=find
13936     SORT=sort
13939 AC_SUBST(ATL_INCLUDE)
13940 AC_SUBST(ATL_LIB)
13941 AC_SUBST(FIND)
13942 AC_SUBST(SORT)
13943 AC_SUBST(WIN_GREP)
13944 AC_SUBST(WIN_LS)
13945 AC_SUBST(WIN_TOUCH)
13947 AC_SUBST(BUILD_TYPE)
13949 AC_SUBST(SOLARINC)
13951 PathFormat "$PERL"
13952 PERL="$formatted_path"
13953 AC_SUBST(PERL)
13955 if test -n "$TMPDIR"; then
13956     TEMP_DIRECTORY="$TMPDIR"
13957 else
13958     TEMP_DIRECTORY="/tmp"
13960 if test "$build_os" = "cygwin"; then
13961     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13963 AC_SUBST(TEMP_DIRECTORY)
13965 # setup the PATH for the environment
13966 if test -n "$LO_PATH_FOR_BUILD"; then
13967     LO_PATH="$LO_PATH_FOR_BUILD"
13968     case "$host_os" in
13969     cygwin*|wsl*)
13970         pathmunge "$MSVC_HOST_PATH" "before"
13971         ;;
13972     esac
13973 else
13974     LO_PATH="$PATH"
13976     case "$host_os" in
13978     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13979         if test "$ENABLE_JAVA" != ""; then
13980             pathmunge "$JAVA_HOME/bin" "after"
13981         fi
13982         ;;
13984     cygwin*|wsl*)
13985         # Win32 make needs native paths
13986         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13987             LO_PATH=`cygpath -p -m "$PATH"`
13988         fi
13989         if test "$WIN_BUILD_ARCH" = "x64"; then
13990             # needed for msi packaging
13991             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13992         fi
13993         # .NET 4.6 and higher don't have bin directory
13994         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13995             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13996         fi
13997         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13998         pathmunge "$CSC_PATH" "before"
13999         pathmunge "$MIDL_PATH" "before"
14000         pathmunge "$AL_PATH" "before"
14001         pathmunge "$MSVC_MULTI_PATH" "before"
14002         pathmunge "$MSVC_BUILD_PATH" "before"
14003         if test -n "$MSBUILD_PATH" ; then
14004             pathmunge "$MSBUILD_PATH" "before"
14005         fi
14006         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14007         if test "$ENABLE_JAVA" != ""; then
14008             if test -d "$JAVA_HOME/jre/bin/client"; then
14009                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14010             fi
14011             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14012                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14013             fi
14014             pathmunge "$JAVA_HOME/bin" "before"
14015         fi
14016         pathmunge "$MSVC_HOST_PATH" "before"
14017         ;;
14019     solaris*)
14020         pathmunge "/usr/css/bin" "before"
14021         if test "$ENABLE_JAVA" != ""; then
14022             pathmunge "$JAVA_HOME/bin" "after"
14023         fi
14024         ;;
14025     esac
14028 AC_SUBST(LO_PATH)
14030 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14031 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14032     x_LO_ELFCHECK_ALLOWLIST=
14033 else
14034     x_LO_ELFCHECK_ALLOWLIST=[\#]
14036 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14037 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14039 libo_FUZZ_SUMMARY
14041 # Generate a configuration sha256 we can use for deps
14042 if test -f config_host.mk; then
14043     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14045 if test -f config_host_lang.mk; then
14046     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14049 CFLAGS=$my_original_CFLAGS
14050 CXXFLAGS=$my_original_CXXFLAGS
14051 CPPFLAGS=$my_original_CPPFLAGS
14053 AC_CONFIG_LINKS([include:include])
14055 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14056 # BUILD platform configuration] - otherwise breaks cross building
14057 AC_CONFIG_FILES([config_host.mk
14058                  config_host_lang.mk
14059                  Makefile
14060                  bin/bffvalidator.sh
14061                  bin/odfvalidator.sh
14062                  bin/officeotron.sh
14063                  hardened_runtime.xcent
14064                  instsetoo_native/util/openoffice.lst
14065                  sysui/desktop/macosx/Info.plist])
14066 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14067 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14068 AC_CONFIG_HEADERS([config_host/config_clang.h])
14069 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14070 AC_CONFIG_HEADERS([config_host/config_eot.h])
14071 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14072 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14073 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14074 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14075 AC_CONFIG_HEADERS([config_host/config_features.h])
14076 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14077 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14078 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14079 AC_CONFIG_HEADERS([config_host/config_folders.h])
14080 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14081 AC_CONFIG_HEADERS([config_host/config_gio.h])
14082 AC_CONFIG_HEADERS([config_host/config_global.h])
14083 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14084 AC_CONFIG_HEADERS([config_host/config_java.h])
14085 AC_CONFIG_HEADERS([config_host/config_langs.h])
14086 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14087 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14088 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14089 AC_CONFIG_HEADERS([config_host/config_locales.h])
14090 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14091 AC_CONFIG_HEADERS([config_host/config_oox.h])
14092 AC_CONFIG_HEADERS([config_host/config_options.h])
14093 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14094 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14095 AC_CONFIG_HEADERS([config_host/config_skia.h])
14096 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14097 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14098 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14099 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14100 AC_CONFIG_HEADERS([config_host/config_version.h])
14101 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14102 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14103 AC_CONFIG_HEADERS([config_host/config_python.h])
14104 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14105 AC_OUTPUT
14107 if test "$CROSS_COMPILING" = TRUE; then
14108     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14111 # touch the config timestamp file
14112 if test ! -f config_host.mk.stamp; then
14113     echo > config_host.mk.stamp
14114 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14115     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14116 else
14117     echo > config_host.mk.stamp
14120 # touch the config lang timestamp file
14121 if test ! -f config_host_lang.mk.stamp; then
14122     echo > config_host_lang.mk.stamp
14123 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14124     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14125 else
14126     echo > config_host_lang.mk.stamp
14130 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14131         -a "$build_os" = "cygwin"; then
14133 cat << _EOS
14134 ****************************************************************************
14135 WARNING:
14136 Your make version is known to be horribly slow, and hard to debug
14137 problems with. To get a reasonably functional make please do:
14139 to install a pre-compiled binary make for Win32
14141  mkdir -p /opt/lo/bin
14142  cd /opt/lo/bin
14143  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14144  cp make-4.2.1-msvc.exe make
14145  chmod +x make
14147 to install from source:
14148 place yourself in a working directory of you choice.
14150  git clone git://git.savannah.gnu.org/make.git
14152  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14153  set PATH=%PATH%;C:\Cygwin\bin
14154  [or Cygwin64, if that is what you have]
14155  cd path-to-make-repo-you-cloned-above
14156  build_w32.bat --without-guile
14158 should result in a WinRel/gnumake.exe.
14159 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14161 Then re-run autogen.sh
14163 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14164 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14166 _EOS
14167 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14168     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14173 cat << _EOF
14174 ****************************************************************************
14176 To build, run:
14177 $GNUMAKE
14179 To view some help, run:
14180 $GNUMAKE help
14182 _EOF
14184 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14185     cat << _EOF
14186 After the build has finished successfully, you can immediately run what you built using the command:
14187 _EOF
14189     if test $_os = Darwin; then
14190         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14191     else
14192         echo instdir/program/soffice
14193     fi
14194     cat << _EOF
14196 If you want to run the smoketest, run:
14197 $GNUMAKE check
14199 _EOF
14202 if test -f warn; then
14203     cat warn
14204     rm warn
14207 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: