LOKit: hide 'To document' dropdown
[LibreOffice.git] / configure.ac
blob3827f49005d81ee193995d1019d6cd418ee50ad7
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.2.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 rm -f warn
206 have_WARNINGS="no"
207 add_warning()
209     if test "$have_WARNINGS" = "no"; then
210         echo "*************************************" > warn
211         have_WARNINGS="yes"
212         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
213             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
214             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
215         else
216             COLORWARN="* WARNING :"
217         fi
218     fi
219     echo "$COLORWARN $@" >> warn
222 dnl Some Mac User have the bad habit of letting a lot of crap
223 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
224 dnl that confuse the build.
225 dnl For the ones that use LODE, let's be nice and protect them
226 dnl from themselves
228 mac_sanitize_path()
230     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
231 dnl a common but nevertheless necessary thing that may be in a fancy
232 dnl path location is git, so make sure we have it
233     mac_git_path=`which git 2>/dev/null`
234     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
235         mac_path="$mac_path:`dirname $mac_git_path`"
236     fi
237 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
238 dnl path location is gpg, so make sure we find it
239     mac_gpg_path=`which gpg 2>/dev/null`
240     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
241         mac_path="$mac_path:`dirname $mac_gpg_path`"
242     fi
243     PATH="$mac_path"
244     unset mac_path
245     unset mac_git_path
246     unset mac_gpg_path
249 echo "********************************************************************"
250 echo "*"
251 echo "*   Running ${PACKAGE_NAME} build configuration."
252 echo "*"
253 echo "********************************************************************"
254 echo ""
256 dnl ===================================================================
257 dnl checks build and host OSes
258 dnl do this before argument processing to allow for platform dependent defaults
259 dnl ===================================================================
261 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
262 # Linux on WSL) trust that.
263 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
264     ac_cv_host="x86_64-pc-wsl"
265     ac_cv_host_cpu="x86_64"
266     ac_cv_host_os="wsl"
267     ac_cv_build="$ac_cv_host"
268     ac_cv_build_cpu="$ac_cv_host_cpu"
269     ac_cv_build_os="$ac_cv_host_os"
271     # Emulation of Cygwin's cygpath command for WSL.
272     cygpath()
273     {
274         if test -n "$UNITTEST_WSL_CYGPATH"; then
275             echo -n cygpath "$@" "==> "
276         fi
278         # Cygwin's real cygpath has a plethora of options but we use only a few here.
279         local args="$@"
280         local opt
281         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
282         OPTIND=1
284         while getopts dmuwlsp opt; do
285             case "$opt" in
286                 \?)
287                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
288                     ;;
289                 ?)
290                     eval opt_$opt=yes
291                     ;;
292             esac
293         done
295         shift $((OPTIND-1))
297         if test $# -ne 1; then
298             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
299         fi
301         local input="$1"
303         local result
305         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
306             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
308             if test -n "$opt_u"; then
309                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
310             fi
312             case "$input" in
313                 /mnt/*)
314                     # A Windows file in WSL format
315                     input=$(wslpath -w "$input")
316                     ;;
317                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
318                     # Already in Windows format
319                     ;;
320                 /*)
321                     input=$(wslpath -w "$input")
322                     ;;
323                 *)
324                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
325                     ;;
326             esac
327             if test -n "$opt_d" -o -n "$opt_s"; then
328                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
329             fi
330             if test -n "$opt_m"; then
331                 input="${input//\\//}"
332             fi
333             echo "$input"
334         else
335             # Print Unix path
337             case "$input" in
338                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
339                     wslpath -u "$input"
340                     ;;
341                 /)
342                     echo "$input"
343                     ;;
344                 *)
345                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
346                     ;;
347             esac
348         fi
349     }
351     if test -n "$UNITTEST_WSL_CYGPATH"; then
352         BUILDDIR=.
354         # Nothing special with these file names, just arbitrary ones picked to test with
355         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
356         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
357         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
359         # At least on my machine for instance this file does have an 8.3 name
360         cygpath -d /mnt/c/windows/WindowsUpdate.log
361         # But for instance this one doesn't
362         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
363         cygpath -ws /mnt/c/windows/WindowsUpdate.log
364         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ms /mnt/c/windows/WindowsUpdate.log
367         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
368         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
370         exit 0
371     fi
374 AC_CANONICAL_HOST
375 AC_CANONICAL_BUILD
377 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
378     BUILDDIR=.
379     GREP=grep
381     # Use of PathFormat must be after AC_CANONICAL_BUILD above
382     PathFormat /
383     printf "$formatted_path , $formatted_path_unix\n"
385     PathFormat $PWD
386     printf "$formatted_path , $formatted_path_unix\n"
388     PathFormat "$PROGRAMFILESX86"
389     printf "$formatted_path , $formatted_path_unix\n"
391     exit 0
394 AC_MSG_CHECKING([for product name])
395 PRODUCTNAME="AC_PACKAGE_NAME"
396 if test -n "$with_product_name" -a "$with_product_name" != no; then
397     PRODUCTNAME="$with_product_name"
399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
400     PRODUCTNAME="${PRODUCTNAME}Dev"
402 AC_MSG_RESULT([$PRODUCTNAME])
403 AC_SUBST(PRODUCTNAME)
404 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
405 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
407 dnl ===================================================================
408 dnl Our version is defined by the AC_INIT() at the top of this script.
409 dnl ===================================================================
411 AC_MSG_CHECKING([for package version])
412 if test -n "$with_package_version" -a "$with_package_version" != no; then
413     PACKAGE_VERSION="$with_package_version"
415 AC_MSG_RESULT([$PACKAGE_VERSION])
417 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
419 LIBO_VERSION_MAJOR=$1
420 LIBO_VERSION_MINOR=$2
421 LIBO_VERSION_MICRO=$3
422 LIBO_VERSION_PATCH=$4
424 LIBO_VERSION_SUFFIX=$5
426 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
427 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
428 # they get undoubled before actually passed to sed.
429 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
430 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
431 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
432 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
434 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
435 # three non-negative integers. Please find more information about CFBundleVersion at
436 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
438 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
439 # of at most three non-negative integers. Please find more information about
440 # CFBundleShortVersionString at
441 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
443 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
445 if test "$enable_macosx_sandbox" = yes; then
446     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
447     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
448 else
449     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
450     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
453 AC_SUBST(LIBO_VERSION_MAJOR)
454 AC_SUBST(LIBO_VERSION_MINOR)
455 AC_SUBST(LIBO_VERSION_MICRO)
456 AC_SUBST(LIBO_VERSION_PATCH)
457 AC_SUBST(LIBO_VERSION_SUFFIX)
458 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
459 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
460 AC_SUBST(MACOSX_BUNDLE_VERSION)
462 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
463 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
467 LIBO_THIS_YEAR=`date +%Y`
468 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
470 dnl ===================================================================
471 dnl Product version
472 dnl ===================================================================
473 AC_MSG_CHECKING([for product version])
474 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
475 AC_MSG_RESULT([$PRODUCTVERSION])
476 AC_SUBST(PRODUCTVERSION)
478 AC_PROG_EGREP
479 # AC_PROG_EGREP doesn't set GREP on all systems as well
480 AC_PATH_PROG(GREP, grep)
482 BUILDDIR=`pwd`
483 cd $srcdir
484 SRC_ROOT=`pwd`
485 cd $BUILDDIR
486 x_Cygwin=[\#]
488 dnl ======================================
489 dnl Required GObject introspection version
490 dnl ======================================
491 INTROSPECTION_REQUIRED_VERSION=1.32.0
493 dnl ===================================================================
494 dnl Search all the common names for GNU Make
495 dnl ===================================================================
496 AC_MSG_CHECKING([for GNU Make])
498 # try to use our own make if it is available and GNUMAKE was not already defined
499 if test -z "$GNUMAKE"; then
500     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
501         GNUMAKE="$LODE_HOME/opt/bin/make"
502     elif test -x "/opt/lo/bin/make"; then
503         GNUMAKE="/opt/lo/bin/make"
504     fi
507 GNUMAKE_WIN_NATIVE=
508 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
509     if test -n "$a"; then
510         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
511         if test $? -eq 0;  then
512             if test "$build_os" = "cygwin"; then
513                 if test -n "$($a -v | grep 'Built for Windows')" ; then
514                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
515                     GNUMAKE_WIN_NATIVE="TRUE"
516                 else
517                     GNUMAKE=`which $a`
518                 fi
519             else
520                 GNUMAKE=`which $a`
521             fi
522             break
523         fi
524     fi
525 done
526 AC_MSG_RESULT($GNUMAKE)
527 if test -z "$GNUMAKE"; then
528     AC_MSG_ERROR([not found. install GNU Make.])
529 else
530     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
531         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
532     fi
535 win_short_path_for_make()
537     local short_path="$1"
538     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
539         cygpath -sm "$short_path"
540     else
541         cygpath -u "$(cygpath -d "$short_path")"
542     fi
546 if test "$build_os" = "cygwin"; then
547     PathFormat "$SRC_ROOT"
548     SRC_ROOT="$formatted_path"
549     PathFormat "$BUILDDIR"
550     BUILDDIR="$formatted_path"
551     x_Cygwin=
552     AC_MSG_CHECKING(for explicit COMSPEC)
553     if test -z "$COMSPEC"; then
554         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
555     else
556         AC_MSG_RESULT([found: $COMSPEC])
557     fi
560 AC_SUBST(SRC_ROOT)
561 AC_SUBST(BUILDDIR)
562 AC_SUBST(x_Cygwin)
563 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
564 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
565 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
567 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
568     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
571 # need sed in os checks...
572 AC_PATH_PROGS(SED, sed)
573 if test -z "$SED"; then
574     AC_MSG_ERROR([install sed to run this script])
577 # Set the ENABLE_LTO variable
578 # ===================================================================
579 AC_MSG_CHECKING([whether to use link-time optimization])
580 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
581     ENABLE_LTO="TRUE"
582     AC_MSG_RESULT([yes])
583 else
584     ENABLE_LTO=""
585     AC_MSG_RESULT([no])
587 AC_SUBST(ENABLE_LTO)
589 AC_ARG_ENABLE(fuzz-options,
590     AS_HELP_STRING([--enable-fuzz-options],
591         [Randomly enable or disable each of those configurable options
592          that are supposed to be freely selectable without interdependencies,
593          or where bad interaction from interdependencies is automatically avoided.])
596 dnl ===================================================================
597 dnl When building for Android, --with-android-ndk,
598 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
599 dnl mandatory
600 dnl ===================================================================
602 AC_ARG_WITH(android-ndk,
603     AS_HELP_STRING([--with-android-ndk],
604         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
607 AC_ARG_WITH(android-ndk-toolchain-version,
608     AS_HELP_STRING([--with-android-ndk-toolchain-version],
609         [Specify which toolchain version to use, of those present in the
610         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
611         with_android_ndk_toolchain_version=clang5.0)
613 AC_ARG_WITH(android-sdk,
614     AS_HELP_STRING([--with-android-sdk],
615         [Specify location of the Android SDK. Mandatory when building for Android.]),
618 AC_ARG_WITH(android-api-level,
619     AS_HELP_STRING([--with-android-api-level],
620         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
623 ANDROID_NDK_HOME=
624 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
625     with_android_ndk="$SRC_ROOT/external/android-ndk"
627 if test -n "$with_android_ndk"; then
628     eval ANDROID_NDK_HOME=$with_android_ndk
630     # Set up a lot of pre-canned defaults
632     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
633         if test ! -f $ANDROID_NDK_HOME/source.properties; then
634             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
635         fi
636         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
637     else
638         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
639     fi
640     if test -z "$ANDROID_NDK_VERSION";  then
641         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
642     fi
643     case $ANDROID_NDK_VERSION in
644     r9*|r10*)
645         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
646         ;;
647     11.1.*|12.1.*|13.1.*|14.1.*)
648         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
649         ;;
650     16.*|17.*|18.*|19.*|20.*)
651         ;;
652     *)
653         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
654         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
655         ;;
656     esac
658     ANDROID_API_LEVEL=16
659     if test -n "$with_android_api_level" ; then
660         ANDROID_API_LEVEL="$with_android_api_level"
661     fi
663     android_cpu=$host_cpu
664     if test $host_cpu = arm; then
665         android_platform_prefix=arm-linux-androideabi
666         android_gnu_prefix=$android_platform_prefix
667         LLVM_TRIPLE=armv7a-linux-androideabi
668         ANDROID_APP_ABI=armeabi-v7a
669         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
670     elif test $host_cpu = aarch64; then
671         android_platform_prefix=aarch64-linux-android
672         android_gnu_prefix=$android_platform_prefix
673         LLVM_TRIPLE=$android_platform_prefix
674         # minimum android version that supports aarch64
675         if test "$ANDROID_API_LEVEL" -lt "21" ; then
676             ANDROID_API_LEVEL=21
677         fi
678         ANDROID_APP_ABI=arm64-v8a
679     elif test $host_cpu = x86_64; then
680         android_platform_prefix=x86_64-linux-android
681         android_gnu_prefix=$android_platform_prefix
682         LLVM_TRIPLE=$android_platform_prefix
683         # minimum android version that supports x86_64
684         ANDROID_API_LEVEL=21
685         ANDROID_APP_ABI=x86_64
686     else
687         # host_cpu is something like "i386" or "i686" I guess, NDK uses
688         # "x86" in some contexts
689         android_cpu=x86
690         android_platform_prefix=$android_cpu
691         android_gnu_prefix=i686-linux-android
692         LLVM_TRIPLE=$android_gnu_prefix
693         ANDROID_APP_ABI=x86
694     fi
696     case "$with_android_ndk_toolchain_version" in
697     clang5.0)
698         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
699         ;;
700     *)
701         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
702     esac
704     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
706     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
707     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
708     # manage to link the (app-specific) single huge .so that is built for the app in
709     # android/source/ if there is debug information in a significant part of the object files.
710     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
711     # all objects have been built with debug information.)
712     case $build_os in
713     linux-gnu*)
714         android_HOST_TAG=linux-x86_64
715         ;;
716     darwin*)
717         android_HOST_TAG=darwin-x86_64
718         ;;
719     *)
720         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
721         # ndk would also support windows and windows-x86_64
722         ;;
723     esac
724     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
725     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
726     dnl TODO: NSS build uses it...
727     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
728     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
730     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
731     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
732     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
733     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
734     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
736     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
737     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
738     if test "$ENABLE_LTO" = TRUE; then
739         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
740         # $CC and $CXX when building external libraries
741         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
742     fi
744     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
746     if test -z "$CC"; then
747         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
748         CC_BASE="clang"
749     fi
750     if test -z "$CXX"; then
751         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
752         CXX_BASE="clang++"
753     fi
755     # remember to download the ownCloud Android library later
756     BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
758 AC_SUBST(ANDROID_NDK_HOME)
759 AC_SUBST(ANDROID_APP_ABI)
760 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
762 dnl ===================================================================
763 dnl --with-android-sdk
764 dnl ===================================================================
765 ANDROID_SDK_HOME=
766 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
767     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
769 if test -n "$with_android_sdk"; then
770     eval ANDROID_SDK_HOME=$with_android_sdk
771     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
773 AC_SUBST(ANDROID_SDK_HOME)
775 AC_ARG_ENABLE([android-lok],
776     AS_HELP_STRING([--enable-android-lok],
777         [The Android app from the android/ subdir needs several tweaks all
778          over the place that break the LOK when used in the Online-based
779          Android app.  This switch indicates that the intent of this build is
780          actually the Online-based, non-modified LOK.])
782 ENABLE_ANDROID_LOK=
783 if test -n "$ANDROID_NDK_HOME" ; then
784     if test "$enable_android_lok" = yes; then
785         ENABLE_ANDROID_LOK=TRUE
786         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
787         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
788     else
789         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
790     fi
792 AC_SUBST([ENABLE_ANDROID_LOK])
794 libo_FUZZ_ARG_ENABLE([android-editing],
795     AS_HELP_STRING([--enable-android-editing],
796         [Enable the experimental editing feature on Android.])
798 ENABLE_ANDROID_EDITING=
799 if test "$enable_android_editing" = yes; then
800     ENABLE_ANDROID_EDITING=TRUE
802 AC_SUBST([ENABLE_ANDROID_EDITING])
804 dnl ===================================================================
805 dnl The following is a list of supported systems.
806 dnl Sequential to keep the logic very simple
807 dnl These values may be checked and reset later.
808 dnl ===================================================================
809 #defaults unless the os test overrides this:
810 test_randr=yes
811 test_xrender=yes
812 test_cups=yes
813 test_dbus=yes
814 test_fontconfig=yes
815 test_cairo=no
816 test_gdb_index=no
817 test_split_debug=no
819 # Default values, as such probably valid just for Linux, set
820 # differently below just for Mac OSX, but at least better than
821 # hardcoding these as we used to do. Much of this is duplicated also
822 # in solenv for old build system and for gbuild, ideally we should
823 # perhaps define stuff like this only here in configure.ac?
825 LINKFLAGSSHL="-shared"
826 PICSWITCH="-fpic"
827 DLLPOST=".so"
829 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
831 INSTROOTBASESUFFIX=
832 INSTROOTCONTENTSUFFIX=
833 SDKDIRNAME=sdk
835 HOST_PLATFORM="$host"
837 host_cpu_for_clang="$host_cpu"
839 case "$host_os" in
841 solaris*)
842     build_gstreamer_1_0=yes
843     test_freetype=yes
844     build_skia=yes
845     _os=SunOS
847     dnl ===========================================================
848     dnl Check whether we're using Solaris 10 - SPARC or Intel.
849     dnl ===========================================================
850     AC_MSG_CHECKING([the Solaris operating system release])
851     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
852     if test "$_os_release" -lt "10"; then
853         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
854     else
855         AC_MSG_RESULT([ok ($_os_release)])
856     fi
858     dnl Check whether we're using a SPARC or i386 processor
859     AC_MSG_CHECKING([the processor type])
860     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
861         AC_MSG_RESULT([ok ($host_cpu)])
862     else
863         AC_MSG_ERROR([only SPARC and i386 processors are supported])
864     fi
865     ;;
867 linux-gnu*|k*bsd*-gnu*)
868     build_gstreamer_1_0=yes
869     test_kf5=yes
870     test_gtk3_kde5=yes
871     build_skia=yes
872     test_gdb_index=yes
873     test_split_debug=yes
874     if test "$enable_fuzzers" != yes; then
875         test_freetype=yes
876         test_fontconfig=yes
877     else
878         test_freetype=no
879         test_fontconfig=no
880         BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
881     fi
882     _os=Linux
883     ;;
885 gnu)
886     test_randr=no
887     test_xrender=no
888     _os=GNU
889      ;;
891 cygwin*|wsl*)
893     # When building on Windows normally with MSVC under Cygwin,
894     # configure thinks that the host platform (the platform the
895     # built code will run on) is Cygwin, even if it obviously is
896     # Windows, which in Autoconf terminology is called
897     # "mingw32". (Which is misleading as MinGW is the name of the
898     # tool-chain, not an operating system.)
900     # Somewhat confusing, yes. But this configure script doesn't
901     # look at $host etc that much, it mostly uses its own $_os
902     # variable, set here in this case statement.
904     test_cups=no
905     test_dbus=no
906     test_randr=no
907     test_xrender=no
908     test_freetype=no
909     test_fontconfig=no
910     build_skia=yes
911     _os=WINNT
913     DLLPOST=".dll"
914     LINKFLAGSNOUNDEFS=
916     if test "$host_cpu" = "aarch64"; then
917         enable_gpgmepp=no
918         enable_coinmp=no
919         enable_firebird_sdbc=no
920     fi
921     ;;
923 darwin*|macos*) # macOS
924     test_randr=no
925     test_xrender=no
926     test_freetype=no
927     test_fontconfig=no
928     test_dbus=no
929     if test -n "$LODE_HOME" ; then
930         mac_sanitize_path
931         AC_MSG_NOTICE([sanitized the PATH to $PATH])
932     fi
933     _os=Darwin
934     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
935     INSTROOTCONTENTSUFFIX=/Contents
936     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
937     # See comment above the case "$host_os"
938     LINKFLAGSSHL="-dynamiclib -single_module"
940     # -fPIC is default
941     PICSWITCH=""
943     DLLPOST=".dylib"
945     # -undefined error is the default
946     LINKFLAGSNOUNDEFS=""
947     case "$host_cpu" in
948     aarch64|arm64)
949         case "$host_os" in
950         macos*)
951             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
952             # the "macos" part so be sure to use aarch64-apple-darwin for now.
953             HOST_PLATFORM=aarch64-apple-darwin
954             ;;
955         esac
957         # Apple's Clang uses "arm64"
958         host_cpu_for_clang=arm64
959     esac
962 ios*) # iOS
963     test_randr=no
964     test_xrender=no
965     test_freetype=no
966     test_fontconfig=no
967     test_dbus=no
968     if test -n "$LODE_HOME" ; then
969         mac_sanitize_path
970         AC_MSG_NOTICE([sanitized the PATH to $PATH])
971     fi
972     enable_gpgmepp=no
973     _os=iOS
974     test_cups=no
975     enable_mpl_subset=yes
976     enable_lotuswordpro=no
977     enable_coinmp=no
978     enable_lpsolve=no
979     enable_mariadb_sdbc=no
980     enable_postgresql_sdbc=no
981     enable_extension_integration=no
982     enable_report_builder=no
983     with_ppds=no
984     if test "$enable_ios_simulator" = "yes"; then
985         host=x86_64-apple-darwin
986     fi
987     # See comment above the case "$host_os"
988     LINKFLAGSSHL="-dynamiclib -single_module"
990     # -fPIC is default
991     PICSWITCH=""
993     DLLPOST=".dylib"
995     # -undefined error is the default
996     LINKFLAGSNOUNDEFS=""
998     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
999     # part, so use aarch64-apple-darwin for now.
1000     HOST_PLATFORM=aarch64-apple-darwin
1002     # Apple's Clang uses "arm64"
1003     host_cpu_for_clang=arm64
1006 freebsd*)
1007     build_gstreamer_1_0=yes
1008     test_kf5=yes
1009     test_gtk3_kde5=yes
1010     test_freetype=yes
1011     build_skia=yes
1012     AC_MSG_CHECKING([the FreeBSD operating system release])
1013     if test -n "$with_os_version"; then
1014         OSVERSION="$with_os_version"
1015     else
1016         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1017     fi
1018     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1019     AC_MSG_CHECKING([which thread library to use])
1020     if test "$OSVERSION" -lt "500016"; then
1021         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1022         PTHREAD_LIBS="-pthread"
1023     elif test "$OSVERSION" -lt "502102"; then
1024         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1025         PTHREAD_LIBS="-lc_r"
1026     else
1027         PTHREAD_CFLAGS=""
1028         PTHREAD_LIBS="-pthread"
1029     fi
1030     AC_MSG_RESULT([$PTHREAD_LIBS])
1031     _os=FreeBSD
1032     ;;
1034 *netbsd*)
1035     build_gstreamer_1_0=yes
1036     test_kf5=yes
1037     test_gtk3_kde5=yes
1038     test_freetype=yes
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     test_randr=no
1046     test_freetype=yes
1047     PTHREAD_LIBS=-pthread
1048     _os=AIX
1049     ;;
1051 openbsd*)
1052     test_freetype=yes
1053     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054     PTHREAD_LIBS="-pthread"
1055     _os=OpenBSD
1056     ;;
1058 dragonfly*)
1059     build_gstreamer_1_0=yes
1060     test_kf5=yes
1061     test_gtk3_kde5=yes
1062     test_freetype=yes
1063     build_skia=yes
1064     PTHREAD_LIBS="-pthread"
1065     _os=DragonFly
1066     ;;
1068 linux-android*)
1069     build_gstreamer_1_0=no
1070     enable_lotuswordpro=no
1071     enable_mpl_subset=yes
1072     enable_coinmp=yes
1073     enable_lpsolve=no
1074     enable_mariadb_sdbc=no
1075     enable_report_builder=no
1076     enable_odk=no
1077     enable_postgresql_sdbc=no
1078     enable_python=no
1079     test_cups=no
1080     test_dbus=no
1081     test_fontconfig=no
1082     test_freetype=no
1083     test_kf5=no
1084     test_qt5=no
1085     test_gtk3_kde5=no
1086     test_randr=no
1087     test_xrender=no
1088     _os=Android
1090     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1091     BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
1092     ;;
1094 haiku*)
1095     test_cups=no
1096     test_dbus=no
1097     test_randr=no
1098     test_xrender=no
1099     test_freetype=yes
1100     enable_odk=no
1101     enable_gstreamer_1_0=no
1102     enable_vlc=no
1103     enable_coinmp=no
1104     enable_pdfium=no
1105     enable_sdremote=no
1106     enable_postgresql_sdbc=no
1107     enable_firebird_sdbc=no
1108     _os=Haiku
1109     ;;
1112     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1113     ;;
1114 esac
1116 AC_SUBST(HOST_PLATFORM)
1118 if test "$_os" = "Android" ; then
1119     # Verify that the NDK and SDK options are proper
1120     if test -z "$with_android_ndk"; then
1121         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1122     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1123         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1124     fi
1126     if test -z "$ANDROID_SDK_HOME"; then
1127         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1128     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1129         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1130     fi
1132     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1133     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1134         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1135                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1136                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1137         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1138         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1139         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1140     fi
1141     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1142         AC_MSG_WARN([android support repository not found - install with
1143                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1144                      to allow the build to download the specified version of the android support libraries])
1145         add_warning "android support repository not found - install with"
1146         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1147         add_warning "to allow the build to download the specified version of the android support libraries"
1148     fi
1151 if test "$_os" = "AIX"; then
1152     AC_PATH_PROG(GAWK, gawk)
1153     if test -z "$GAWK"; then
1154         AC_MSG_ERROR([gawk not found in \$PATH])
1155     fi
1158 AC_SUBST(SDKDIRNAME)
1160 AC_SUBST(PTHREAD_CFLAGS)
1161 AC_SUBST(PTHREAD_LIBS)
1163 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1164 # By default use the ones specified by our build system,
1165 # but explicit override is possible.
1166 AC_MSG_CHECKING(for explicit AFLAGS)
1167 if test -n "$AFLAGS"; then
1168     AC_MSG_RESULT([$AFLAGS])
1169     x_AFLAGS=
1170 else
1171     AC_MSG_RESULT(no)
1172     x_AFLAGS=[\#]
1174 AC_MSG_CHECKING(for explicit CFLAGS)
1175 if test -n "$CFLAGS"; then
1176     AC_MSG_RESULT([$CFLAGS])
1177     x_CFLAGS=
1178 else
1179     AC_MSG_RESULT(no)
1180     x_CFLAGS=[\#]
1182 AC_MSG_CHECKING(for explicit CXXFLAGS)
1183 if test -n "$CXXFLAGS"; then
1184     AC_MSG_RESULT([$CXXFLAGS])
1185     x_CXXFLAGS=
1186 else
1187     AC_MSG_RESULT(no)
1188     x_CXXFLAGS=[\#]
1190 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1191 if test -n "$OBJCFLAGS"; then
1192     AC_MSG_RESULT([$OBJCFLAGS])
1193     x_OBJCFLAGS=
1194 else
1195     AC_MSG_RESULT(no)
1196     x_OBJCFLAGS=[\#]
1198 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1199 if test -n "$OBJCXXFLAGS"; then
1200     AC_MSG_RESULT([$OBJCXXFLAGS])
1201     x_OBJCXXFLAGS=
1202 else
1203     AC_MSG_RESULT(no)
1204     x_OBJCXXFLAGS=[\#]
1206 AC_MSG_CHECKING(for explicit LDFLAGS)
1207 if test -n "$LDFLAGS"; then
1208     AC_MSG_RESULT([$LDFLAGS])
1209     x_LDFLAGS=
1210 else
1211     AC_MSG_RESULT(no)
1212     x_LDFLAGS=[\#]
1214 AC_SUBST(AFLAGS)
1215 AC_SUBST(CFLAGS)
1216 AC_SUBST(CXXFLAGS)
1217 AC_SUBST(OBJCFLAGS)
1218 AC_SUBST(OBJCXXFLAGS)
1219 AC_SUBST(LDFLAGS)
1220 AC_SUBST(x_AFLAGS)
1221 AC_SUBST(x_CFLAGS)
1222 AC_SUBST(x_CXXFLAGS)
1223 AC_SUBST(x_OBJCFLAGS)
1224 AC_SUBST(x_OBJCXXFLAGS)
1225 AC_SUBST(x_LDFLAGS)
1227 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1228 my_original_CFLAGS=$CFLAGS
1229 my_original_CXXFLAGS=$CXXFLAGS
1230 my_original_CPPFLAGS=$CPPFLAGS
1232 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1233 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1234 dnl AC_PROG_CC internally.
1235 if test "$_os" != "WINNT"; then
1236     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1237     save_CFLAGS=$CFLAGS
1238     AC_PROG_CC
1239     CFLAGS=$save_CFLAGS
1240     if test -z "$CC_BASE"; then
1241         CC_BASE=`first_arg_basename "$CC"`
1242     fi
1245 if test "$_os" != "WINNT"; then
1246     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1247 else
1248     ENDIANNESS=little
1250 AC_SUBST(ENDIANNESS)
1252 if test $_os != "WINNT"; then
1253     save_LIBS="$LIBS"
1254     AC_SEARCH_LIBS([dlsym], [dl],
1255         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1256         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1257     LIBS="$save_LIBS"
1259 AC_SUBST(DLOPEN_LIBS)
1261 AC_ARG_ENABLE(ios-simulator,
1262     AS_HELP_STRING([--enable-ios-simulator],
1263         [build for iOS simulator])
1266 AC_ARG_ENABLE(ios-libreofficelight-app,
1267     AS_HELP_STRING([--enable-ios-libreofficelight-app],
1268         [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
1269          (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
1270          and also that its actual build (in Xcode) requires some obvious modifications to the project.])
1273 ENABLE_IOS_LIBREOFFICELIGHT_APP=
1274 if test "$enable_ios_libreofficelight_app" = yes; then
1275     ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
1277 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
1279 ###############################################################################
1280 # Extensions switches --enable/--disable
1281 ###############################################################################
1282 # By default these should be enabled unless having extra dependencies.
1283 # If there is extra dependency over configure options then the enable should
1284 # be automagic based on whether the requiring feature is enabled or not.
1285 # All this options change anything only with --enable-extension-integration.
1287 # The name of this option and its help string makes it sound as if
1288 # extensions are built anyway, just not integrated in the installer,
1289 # if you use --disable-extension-integration. Is that really the
1290 # case?
1292 libo_FUZZ_ARG_ENABLE(extension-integration,
1293     AS_HELP_STRING([--disable-extension-integration],
1294         [Disable integration of the built extensions in the installer of the
1295          product. Use this switch to disable the integration.])
1298 AC_ARG_ENABLE(avmedia,
1299     AS_HELP_STRING([--disable-avmedia],
1300         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1303 AC_ARG_ENABLE(database-connectivity,
1304     AS_HELP_STRING([--disable-database-connectivity],
1305         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1308 # This doesn't mean not building (or "integrating") extensions
1309 # (although it probably should; i.e. it should imply
1310 # --disable-extension-integration I guess), it means not supporting
1311 # any extension mechanism at all
1312 libo_FUZZ_ARG_ENABLE(extensions,
1313     AS_HELP_STRING([--disable-extensions],
1314         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1317 AC_ARG_ENABLE(scripting,
1318     AS_HELP_STRING([--disable-scripting],
1319         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1322 # This is mainly for Android and iOS, but could potentially be used in some
1323 # special case otherwise, too, so factored out as a separate setting
1325 AC_ARG_ENABLE(dynamic-loading,
1326     AS_HELP_STRING([--disable-dynamic-loading],
1327         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1330 libo_FUZZ_ARG_ENABLE(report-builder,
1331     AS_HELP_STRING([--disable-report-builder],
1332         [Disable the Report Builder.])
1335 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1336     AS_HELP_STRING([--enable-ext-wiki-publisher],
1337         [Enable the Wiki Publisher extension.])
1340 libo_FUZZ_ARG_ENABLE(lpsolve,
1341     AS_HELP_STRING([--disable-lpsolve],
1342         [Disable compilation of the lp solve solver ])
1344 libo_FUZZ_ARG_ENABLE(coinmp,
1345     AS_HELP_STRING([--disable-coinmp],
1346         [Disable compilation of the CoinMP solver ])
1349 libo_FUZZ_ARG_ENABLE(pdfimport,
1350     AS_HELP_STRING([--disable-pdfimport],
1351         [Disable building the PDF import feature.])
1354 libo_FUZZ_ARG_ENABLE(pdfium,
1355     AS_HELP_STRING([--disable-pdfium],
1356         [Disable building PDFium. Results in unsecure PDF signature verification.])
1359 libo_FUZZ_ARG_ENABLE(skia,
1360     AS_HELP_STRING([--disable-skia],
1361         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1364 ###############################################################################
1366 dnl ---------- *** ----------
1368 libo_FUZZ_ARG_ENABLE(mergelibs,
1369     AS_HELP_STRING([--enable-mergelibs],
1370         [Merge several of the smaller libraries into one big, "merged", one.])
1373 libo_FUZZ_ARG_ENABLE(breakpad,
1374     AS_HELP_STRING([--enable-breakpad],
1375         [Enables breakpad for crash reporting.])
1378 libo_FUZZ_ARG_ENABLE(crashdump,
1379     AS_HELP_STRING([--disable-crashdump],
1380         [Disable dump.ini and dump-file, when --enable-breakpad])
1383 AC_ARG_ENABLE(fetch-external,
1384     AS_HELP_STRING([--disable-fetch-external],
1385         [Disables fetching external tarballs from web sources.])
1388 AC_ARG_ENABLE(fuzzers,
1389     AS_HELP_STRING([--enable-fuzzers],
1390         [Enables building libfuzzer targets for fuzz testing.])
1393 libo_FUZZ_ARG_ENABLE(pch,
1394     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1395         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1396          Using 'system' will include only external headers, 'base' will add also headers
1397          from base modules, 'normal' will also add all headers except from the module built,
1398          'full' will use all suitable headers even from a module itself.])
1401 libo_FUZZ_ARG_ENABLE(epm,
1402     AS_HELP_STRING([--enable-epm],
1403         [LibreOffice includes self-packaging code, that requires epm, however epm is
1404          useless for large scale package building.])
1407 libo_FUZZ_ARG_ENABLE(odk,
1408     AS_HELP_STRING([--disable-odk],
1409         [LibreOffice includes an ODK, office development kit which some packagers may
1410          wish to build without.])
1413 AC_ARG_ENABLE(mpl-subset,
1414     AS_HELP_STRING([--enable-mpl-subset],
1415         [Don't compile any pieces which are not MPL or more liberally licensed])
1418 libo_FUZZ_ARG_ENABLE(evolution2,
1419     AS_HELP_STRING([--enable-evolution2],
1420         [Allows the built-in evolution 2 addressbook connectivity build to be
1421          enabled.])
1424 AC_ARG_ENABLE(avahi,
1425     AS_HELP_STRING([--enable-avahi],
1426         [Determines whether to use Avahi to advertise Impress to remote controls.])
1429 libo_FUZZ_ARG_ENABLE(werror,
1430     AS_HELP_STRING([--enable-werror],
1431         [Turn warnings to errors. (Has no effect in modules where the treating
1432          of warnings as errors is disabled explicitly.)]),
1435 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1436     AS_HELP_STRING([--enable-assert-always-abort],
1437         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1440 libo_FUZZ_ARG_ENABLE(dbgutil,
1441     AS_HELP_STRING([--enable-dbgutil],
1442         [Provide debugging support from --enable-debug and include additional debugging
1443          utilities such as object counting or more expensive checks.
1444          This is the recommended option for developers.
1445          Note that this makes the build ABI incompatible, it is not possible to mix object
1446          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1448 libo_FUZZ_ARG_ENABLE(debug,
1449     AS_HELP_STRING([--enable-debug],
1450         [Include debugging information, disable compiler optimization and inlining plus
1451          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1453 libo_FUZZ_ARG_ENABLE(split-debug,
1454     AS_HELP_STRING([--disable-split-debug],
1455         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1456          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1458 libo_FUZZ_ARG_ENABLE(gdb-index,
1459     AS_HELP_STRING([--disable-gdb-index],
1460         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1461          The feature requires the gold or lld linker.]))
1463 libo_FUZZ_ARG_ENABLE(sal-log,
1464     AS_HELP_STRING([--enable-sal-log],
1465         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1467 libo_FUZZ_ARG_ENABLE(symbols,
1468     AS_HELP_STRING([--enable-symbols],
1469         [Generate debug information.
1470          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1471          otherwise. It is possible to explicitly specify gbuild build targets
1472          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1473          everything in the directory; there is no ordering, more specific overrides
1474          more general, and disabling takes precedence).
1475          Example: --enable-symbols="all -sw/ -Library_sc".]))
1477 libo_FUZZ_ARG_ENABLE(optimized,
1478     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1479         [Whether to compile with optimization flags.
1480          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1481          otherwise. Using 'debug' will try to use only optimizations that should
1482          not interfere with debugging.]))
1484 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1485     AS_HELP_STRING([--disable-runtime-optimizations],
1486         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1487          JVM JIT) that are known to interact badly with certain dynamic analysis
1488          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1489          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1490          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1492 AC_ARG_WITH(valgrind,
1493     AS_HELP_STRING([--with-valgrind],
1494         [Make availability of Valgrind headers a hard requirement.]))
1496 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1497     AS_HELP_STRING([--enable-compiler-plugins],
1498         [Enable compiler plugins that will perform additional checks during
1499          building. Enabled automatically by --enable-dbgutil.
1500          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1501 COMPILER_PLUGINS_DEBUG=
1502 if test "$enable_compiler_plugins" = debug; then
1503     enable_compiler_plugins=yes
1504     COMPILER_PLUGINS_DEBUG=TRUE
1507 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1508     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1509         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1510          relevant in the --disable-compiler-plugins case.]))
1512 libo_FUZZ_ARG_ENABLE(ooenv,
1513     AS_HELP_STRING([--disable-ooenv],
1514         [Disable ooenv for the instdir installation.]))
1516 AC_ARG_ENABLE(lto,
1517     AS_HELP_STRING([--enable-lto],
1518         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1519          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1520          linker. For MSVC, this option is broken at the moment. This is experimental work
1521          in progress that shouldn't be used unless you are working on it.)]))
1523 AC_ARG_ENABLE(python,
1524     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1525         [Enables or disables Python support at run-time.
1526          Also specifies what Python to use at build-time.
1527          'fully-internal' even forces the internal version for uses of Python
1528          during the build.
1529          On macOS the only choices are
1530          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1531          ]))
1533 libo_FUZZ_ARG_ENABLE(gtk3,
1534     AS_HELP_STRING([--disable-gtk3],
1535         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1536 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1538 AC_ARG_ENABLE(introspection,
1539     AS_HELP_STRING([--enable-introspection],
1540         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1541          Linux distributions.)]))
1543 AC_ARG_ENABLE(split-app-modules,
1544     AS_HELP_STRING([--enable-split-app-modules],
1545         [Split file lists for app modules, e.g. base, calc.
1546          Has effect only with make distro-pack-install]),
1549 AC_ARG_ENABLE(split-opt-features,
1550     AS_HELP_STRING([--enable-split-opt-features],
1551         [Split file lists for some optional features, e.g. pyuno, testtool.
1552          Has effect only with make distro-pack-install]),
1555 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1556     AS_HELP_STRING([--disable-cairo-canvas],
1557         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1560 libo_FUZZ_ARG_ENABLE(dbus,
1561     AS_HELP_STRING([--disable-dbus],
1562         [Determines whether to enable features that depend on dbus.
1563          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1564 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1566 libo_FUZZ_ARG_ENABLE(sdremote,
1567     AS_HELP_STRING([--disable-sdremote],
1568         [Determines whether to enable Impress remote control (i.e. the server component).]),
1569 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1571 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1572     AS_HELP_STRING([--disable-sdremote-bluetooth],
1573         [Determines whether to build sdremote with bluetooth support.
1574          Requires dbus on Linux.]))
1576 libo_FUZZ_ARG_ENABLE(gio,
1577     AS_HELP_STRING([--disable-gio],
1578         [Determines whether to use the GIO support.]),
1579 ,test "${enable_gio+set}" = set || enable_gio=yes)
1581 AC_ARG_ENABLE(qt5,
1582     AS_HELP_STRING([--enable-qt5],
1583         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1584          available.]),
1587 AC_ARG_ENABLE(kf5,
1588     AS_HELP_STRING([--enable-kf5],
1589         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1590          KF5 are available.]),
1593 AC_ARG_ENABLE(kde5,
1594     AS_HELP_STRING([--enable-kde5],
1595         [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1598 AC_ARG_ENABLE(gtk3_kde5,
1599     AS_HELP_STRING([--enable-gtk3-kde5],
1600         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1601          platforms where Gtk3, Qt5 and Plasma is available.]),
1604 AC_ARG_ENABLE(gui,
1605     AS_HELP_STRING([--disable-gui],
1606         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1607 ,enable_gui=yes)
1609 libo_FUZZ_ARG_ENABLE(randr,
1610     AS_HELP_STRING([--disable-randr],
1611         [Disable RandR support in the vcl project.]),
1612 ,test "${enable_randr+set}" = set || enable_randr=yes)
1614 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1615     AS_HELP_STRING([--disable-gstreamer-1-0],
1616         [Disable building with the gstreamer 1.0 avmedia backend.]),
1617 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1619 libo_FUZZ_ARG_ENABLE(vlc,
1620     AS_HELP_STRING([--enable-vlc],
1621         [Enable building with the (experimental) VLC avmedia backend.]),
1622 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1624 libo_FUZZ_ARG_ENABLE(neon,
1625     AS_HELP_STRING([--disable-neon],
1626         [Disable neon and the compilation of webdav binding.]),
1629 libo_FUZZ_ARG_ENABLE([eot],
1630     [AS_HELP_STRING([--enable-eot],
1631         [Enable support for Embedded OpenType fonts.])],
1632 ,test "${enable_eot+set}" = set || enable_eot=no)
1634 libo_FUZZ_ARG_ENABLE(cve-tests,
1635     AS_HELP_STRING([--disable-cve-tests],
1636         [Prevent CVE tests to be executed]),
1639 libo_FUZZ_ARG_ENABLE(chart-tests,
1640     AS_HELP_STRING([--enable-chart-tests],
1641         [Executes chart XShape tests. In a perfect world these tests would be
1642          stable and everyone could run them, in reality it is best to run them
1643          only on a few machines that are known to work and maintained by people
1644          who can judge if a test failure is a regression or not.]),
1647 AC_ARG_ENABLE(build-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 -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3357         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3358     elif test "$enable_macosx_sandbox" = yes; then
3359         ENABLE_MACOSX_SANDBOX=TRUE
3360         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3361         AC_MSG_RESULT([yes])
3362     else
3363         AC_MSG_RESULT([no])
3364     fi
3366     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3367     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3368     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3370 AC_SUBST(MACOSX_SDK_PATH)
3371 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3372 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3373 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3374 AC_SUBST(INSTALL_NAME_TOOL)
3375 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3376 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3377 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3378 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3379 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3381 dnl ===================================================================
3382 dnl Check iOS SDK and compiler
3383 dnl ===================================================================
3385 if test $_os = iOS; then
3386     AC_MSG_CHECKING([what iOS SDK to use])
3387     current_sdk_ver=14.2
3388     older_sdk_vers="14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3389     if test "$enable_ios_simulator" = "yes"; then
3390         platform=iPhoneSimulator
3391         versionmin=-mios-simulator-version-min=12.2
3392     else
3393         platform=iPhoneOS
3394         versionmin=-miphoneos-version-min=12.2
3395     fi
3396     xcode_developer=`xcode-select -print-path`
3398     for sdkver in $current_sdk_ver $older_sdk_vers; do
3399         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3400         if test -d $t; then
3401             sysroot=$t
3402             break
3403         fi
3404     done
3406     if test -z "$sysroot"; then
3407         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3408     fi
3410     AC_MSG_RESULT($sysroot)
3412     stdlib="-stdlib=libc++"
3414     AC_MSG_CHECKING([what C compiler to use])
3415     CC="`xcrun -find clang`"
3416     CC_BASE=`first_arg_basename "$CC"`
3417     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3418     AC_MSG_RESULT([$CC])
3420     AC_MSG_CHECKING([what C++ compiler to use])
3421     CXX="`xcrun -find clang++`"
3422     CXX_BASE=`first_arg_basename "$CXX"`
3423     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3424     AC_MSG_RESULT([$CXX])
3426     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3427     AR=`xcrun -find ar`
3428     NM=`xcrun -find nm`
3429     STRIP=`xcrun -find strip`
3430     LIBTOOL=`xcrun -find libtool`
3431     RANLIB=`xcrun -find ranlib`
3434 AC_MSG_CHECKING([whether to treat the installation as read-only])
3436 if test $_os = Darwin; then
3437     enable_readonly_installset=yes
3438 elif test "$enable_extensions" != yes; then
3439     enable_readonly_installset=yes
3441 if test "$enable_readonly_installset" = yes; then
3442     AC_MSG_RESULT([yes])
3443     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3444 else
3445     AC_MSG_RESULT([no])
3448 dnl ===================================================================
3449 dnl Structure of install set
3450 dnl ===================================================================
3452 if test $_os = Darwin; then
3453     LIBO_BIN_FOLDER=MacOS
3454     LIBO_ETC_FOLDER=Resources
3455     LIBO_LIBEXEC_FOLDER=MacOS
3456     LIBO_LIB_FOLDER=Frameworks
3457     LIBO_LIB_PYUNO_FOLDER=Resources
3458     LIBO_SHARE_FOLDER=Resources
3459     LIBO_SHARE_HELP_FOLDER=Resources/help
3460     LIBO_SHARE_JAVA_FOLDER=Resources/java
3461     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3462     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3463     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3464     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3465     LIBO_URE_BIN_FOLDER=MacOS
3466     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3467     LIBO_URE_LIB_FOLDER=Frameworks
3468     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3469     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3470 elif test $_os = WINNT; then
3471     LIBO_BIN_FOLDER=program
3472     LIBO_ETC_FOLDER=program
3473     LIBO_LIBEXEC_FOLDER=program
3474     LIBO_LIB_FOLDER=program
3475     LIBO_LIB_PYUNO_FOLDER=program
3476     LIBO_SHARE_FOLDER=share
3477     LIBO_SHARE_HELP_FOLDER=help
3478     LIBO_SHARE_JAVA_FOLDER=program/classes
3479     LIBO_SHARE_PRESETS_FOLDER=presets
3480     LIBO_SHARE_READMES_FOLDER=readmes
3481     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3482     LIBO_SHARE_SHELL_FOLDER=program/shell
3483     LIBO_URE_BIN_FOLDER=program
3484     LIBO_URE_ETC_FOLDER=program
3485     LIBO_URE_LIB_FOLDER=program
3486     LIBO_URE_MISC_FOLDER=program
3487     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3488 else
3489     LIBO_BIN_FOLDER=program
3490     LIBO_ETC_FOLDER=program
3491     LIBO_LIBEXEC_FOLDER=program
3492     LIBO_LIB_FOLDER=program
3493     LIBO_LIB_PYUNO_FOLDER=program
3494     LIBO_SHARE_FOLDER=share
3495     LIBO_SHARE_HELP_FOLDER=help
3496     LIBO_SHARE_JAVA_FOLDER=program/classes
3497     LIBO_SHARE_PRESETS_FOLDER=presets
3498     LIBO_SHARE_READMES_FOLDER=readmes
3499     if test "$enable_fuzzers" != yes; then
3500         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3501     else
3502         LIBO_SHARE_RESOURCE_FOLDER=resource
3503     fi
3504     LIBO_SHARE_SHELL_FOLDER=program/shell
3505     LIBO_URE_BIN_FOLDER=program
3506     LIBO_URE_ETC_FOLDER=program
3507     LIBO_URE_LIB_FOLDER=program
3508     LIBO_URE_MISC_FOLDER=program
3509     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3511 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3521 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3522 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3523 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3524 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3525 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3526 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3528 # Not all of them needed in config_host.mk, add more if need arises
3529 AC_SUBST(LIBO_BIN_FOLDER)
3530 AC_SUBST(LIBO_ETC_FOLDER)
3531 AC_SUBST(LIBO_LIB_FOLDER)
3532 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3533 AC_SUBST(LIBO_SHARE_FOLDER)
3534 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3535 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3536 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3537 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3538 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3539 AC_SUBST(LIBO_URE_BIN_FOLDER)
3540 AC_SUBST(LIBO_URE_ETC_FOLDER)
3541 AC_SUBST(LIBO_URE_LIB_FOLDER)
3542 AC_SUBST(LIBO_URE_MISC_FOLDER)
3543 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3545 dnl ===================================================================
3546 dnl Windows specific tests and stuff
3547 dnl ===================================================================
3549 reg_get_value()
3551     # Return value: $regvalue
3552     unset regvalue
3554     if test "$build_os" = "wsl"; then
3555         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3556         return
3557     fi
3559     local _regentry="/proc/registry${1}/${2}"
3560     if test -f "$_regentry"; then
3561         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3562         # Registry keys read via /proc/registry* are always \0 terminated!
3563         local _regvalue=$(tr -d '\0' < "$_regentry")
3564         if test $? -eq 0; then
3565             regvalue=$_regvalue
3566         fi
3567     fi
3570 # Get a value from the 32-bit side of the Registry
3571 reg_get_value_32()
3573     reg_get_value "32" "$1"
3576 # Get a value from the 64-bit side of the Registry
3577 reg_get_value_64()
3579     reg_get_value "64" "$1"
3582 case "$host_os" in
3583 cygwin*|wsl*)
3584     COM=MSC
3585     USING_X11=
3586     OS=WNT
3587     RTL_OS=Windows
3588     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3589         P_SEP=";"
3590     else
3591         P_SEP=:
3592     fi
3593     case "$host_cpu" in
3594     x86_64)
3595         CPUNAME=X86_64
3596         RTL_ARCH=X86_64
3597         PLATFORMID=windows_x86_64
3598         WINDOWS_X64=1
3599         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3600         WIN_HOST_ARCH="x64"
3601         WIN_MULTI_ARCH="x86"
3602         WIN_HOST_BITS=64
3603         ;;
3604     i*86)
3605         CPUNAME=INTEL
3606         RTL_ARCH=x86
3607         PLATFORMID=windows_x86
3608         WIN_HOST_ARCH="x86"
3609         WIN_HOST_BITS=32
3610         WIN_OTHER_ARCH="x64"
3611         ;;
3612     aarch64)
3613         CPUNAME=ARM64
3614         RTL_ARCH=arm64
3615         PLATFORMID=windows_arm64
3616         WINDOWS_X64=1
3617         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3618         WIN_HOST_ARCH="arm64"
3619         WIN_HOST_BITS=64
3620         with_ucrt_dir=no
3621         ;;
3622     *)
3623         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3624         ;;
3625     esac
3627     case "$build_cpu" in
3628     x86_64) WIN_BUILD_ARCH="x64" ;;
3629     i*86) WIN_BUILD_ARCH="x86" ;;
3630     aarch64) WIN_BUILD_ARCH="arm64" ;;
3631     *)
3632         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3633         ;;
3634     esac
3636     SCPDEFS="$SCPDEFS -D_MSC_VER"
3637     ;;
3638 esac
3640 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3641 # other-arch won't, but wouldn't break the build (x64 on x86).
3642 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3643     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3647 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3648     # To allow building Windows multi-arch releases without cross-tooling
3649     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3650         cross_compiling="yes"
3651     fi
3653 if test "$cross_compiling" = "yes"; then
3654     export CROSS_COMPILING=TRUE
3655 else
3656     CROSS_COMPILING=
3657     BUILD_TYPE="$BUILD_TYPE NATIVE"
3659 AC_SUBST(CROSS_COMPILING)
3661 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3662 # NOTE: must _not_ be used for bundled external libraries!
3663 ISYSTEM=
3664 if test "$GCC" = "yes"; then
3665     AC_MSG_CHECKING( for -isystem )
3666     save_CFLAGS=$CFLAGS
3667     CFLAGS="$CFLAGS -Werror"
3668     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3669     CFLAGS=$save_CFLAGS
3670     if test -n "$ISYSTEM"; then
3671         AC_MSG_RESULT(yes)
3672     else
3673         AC_MSG_RESULT(no)
3674     fi
3676 if test -z "$ISYSTEM"; then
3677     # fall back to using -I
3678     ISYSTEM=-I
3680 AC_SUBST(ISYSTEM)
3682 dnl ===================================================================
3683 dnl  Check which Visual Studio compiler is used
3684 dnl ===================================================================
3686 map_vs_year_to_version()
3688     # Return value: $vsversion
3690     unset vsversion
3692     case $1 in
3693     2019)
3694         vsversion=16;;
3695     *)
3696         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3697     esac
3700 vs_versions_to_check()
3702     # Args: $1 (optional) : versions to check, in the order of preference
3703     # Return value: $vsversions
3705     unset vsversions
3707     if test -n "$1"; then
3708         map_vs_year_to_version "$1"
3709         vsversions=$vsversion
3710     else
3711         # We accept only 2019
3712         vsversions="16"
3713     fi
3716 win_get_env_from_vsvars32bat()
3718     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3719     # Also seems to be located in another directory under the same name: vsvars32.bat
3720     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3721     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3722     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3723     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3724     local result
3725     if test "$build_os" = "wsl"; then
3726         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3727     else
3728         chmod +x $WRAPPERBATCHFILEPATH
3729         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3730     fi
3731     rm -f $WRAPPERBATCHFILEPATH
3732     printf '%s' "$result"
3735 find_ucrt()
3737     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3738     if test -n "$regvalue"; then
3739         PathFormat "$regvalue"
3740         UCRTSDKDIR=$formatted_path_unix
3741         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3742         UCRTVERSION=$regvalue
3743         # Rest if not exist
3744         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3745           UCRTSDKDIR=
3746         fi
3747     fi
3748     if test -z "$UCRTSDKDIR"; then
3749         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3750         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3751         if test -f "$ide_env_file"; then
3752             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3753             UCRTSDKDIR=$formatted_path
3754             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3755             dnl Hack needed at least by tml:
3756             if test "$UCRTVERSION" = 10.0.15063.0 \
3757                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3758                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3759             then
3760                 UCRTVERSION=10.0.14393.0
3761             fi
3762         else
3763           AC_MSG_ERROR([No UCRT found])
3764         fi
3765     fi
3768 find_msvc()
3770     # Find Visual C++ 2019
3771     # Args: $1 (optional) : The VS version year
3772     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3774     unset vctest vcnum vcnumwithdot vcbuildnumber
3776     vs_versions_to_check "$1"
3777     if test "$build_os" = wsl; then
3778         vswhere="$PROGRAMFILESX86"
3779     else
3780         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3781     fi
3782     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3783     PathFormat "$vswhere"
3784     vswhere=$formatted_path_unix
3785     for ver in $vsversions; do
3786         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3787         # Fall back to all MS products (this includes VC++ Build Tools)
3788         if ! test -n "$vswhereoutput"; then
3789             AC_MSG_CHECKING([VC++ Build Tools and similar])
3790             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3791         fi
3792         if test -n "$vswhereoutput"; then
3793             PathFormat "$vswhereoutput"
3794             vctest=$formatted_path_unix
3795             break
3796         fi
3797     done
3799     if test -n "$vctest"; then
3800         vcnumwithdot="$ver.0"
3801         case "$vcnumwithdot" in
3802         16.0)
3803             vcyear=2019
3804             vcnum=160
3805             ;;
3806         esac
3807         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3809     fi
3812 test_cl_exe()
3814     AC_MSG_CHECKING([$1 compiler])
3816     CL_EXE_PATH="$2/cl.exe"
3818     if test ! -f "$CL_EXE_PATH"; then
3819         if test "$1" = "multi-arch"; then
3820             AC_MSG_WARN([no compiler (cl.exe) in $2])
3821             return 1
3822         else
3823             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3824         fi
3825     fi
3827     dnl ===========================================================
3828     dnl  Check for the corresponding mspdb*.dll
3829     dnl ===========================================================
3831     # MSVC 15.0 has libraries from 14.0?
3832     mspdbnum="140"
3834     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3835         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3836     fi
3838     # The compiles has to find its shared libraries
3839     OLD_PATH="$PATH"
3840     TEMP_PATH=`cygpath -d "$2"`
3841     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3843     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3844         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3845     fi
3847     PATH="$OLD_PATH"
3849     AC_MSG_RESULT([$CL_EXE_PATH])
3852 SOLARINC=
3853 MSBUILD_PATH=
3854 DEVENV=
3855 if test "$_os" = "WINNT"; then
3856     AC_MSG_CHECKING([Visual C++])
3857     find_msvc "$with_visual_studio"
3858     if test -z "$vctest"; then
3859         if test -n "$with_visual_studio"; then
3860             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3861         else
3862             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3863         fi
3864     fi
3865     AC_MSG_RESULT([])
3867     VC_PRODUCT_DIR="$vctest/VC"
3868     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3870     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3871     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3872         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3873         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3874         if test $? -ne 0; then
3875             WIN_MULTI_ARCH=""
3876             WIN_OTHER_ARCH=""
3877         fi
3878     fi
3880     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3881         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3882         test_cl_exe "build" "$MSVC_BUILD_PATH"
3883     fi
3885     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3886         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3887         test_cl_exe "host" "$MSVC_HOST_PATH"
3888     else
3889         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3890     fi
3892     AC_MSG_CHECKING([for short pathname of VC product directory])
3893     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3894     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3896     UCRTSDKDIR=
3897     UCRTVERSION=
3899     AC_MSG_CHECKING([for UCRT location])
3900     find_ucrt
3901     # find_ucrt errors out if it doesn't find it
3902     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3903     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3904     ucrtincpath_formatted=$formatted_path
3905     # SOLARINC is used for external modules and must be set too.
3906     # And no, it's not sufficient to set SOLARINC only, as configure
3907     # itself doesn't honour it.
3908     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3909     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3910     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3911     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3913     AC_SUBST(UCRTSDKDIR)
3914     AC_SUBST(UCRTVERSION)
3916     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3917     # Find the proper version of MSBuild.exe to use based on the VS version
3918     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3919     if test -n "$regvalue" ; then
3920         AC_MSG_RESULT([found: $regvalue])
3921         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3922     else
3923         if test "$vcnumwithdot" = "16.0"; then
3924             if test "$WIN_BUILD_ARCH" != "x64"; then
3925                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3926             else
3927                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3928             fi
3929         else
3930             if test "$WIN_BUILD_ARCH" != "x64"; then
3931                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3932             else
3933                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3934             fi
3935         fi
3936         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3937         AC_MSG_RESULT([$regvalue])
3938     fi
3940     # Find the version of devenv.exe
3941     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3942     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3943     DEVENV_unix=$(cygpath -u "$DEVENV")
3944     if test ! -e "$DEVENV_unix"; then
3945         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3946     fi
3948     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3949     dnl needed when building CLR code:
3950     if test -z "$MSVC_CXX"; then
3951         # This gives us a posix path with 8.3 filename restrictions
3952         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3953     fi
3955     if test -z "$CC"; then
3956         CC=$MSVC_CXX
3957         CC_BASE=`first_arg_basename "$CC"`
3958     fi
3959     if test -z "$CXX"; then
3960         CXX=$MSVC_CXX
3961         CXX_BASE=`first_arg_basename "$CXX"`
3962     fi
3964     if test -n "$CC"; then
3965         # Remove /cl.exe from CC case insensitive
3966         AC_MSG_NOTICE([found Visual C++ $vcyear])
3968         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3969         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3971         PathFormat "$COMPATH"
3972         COMPATH=`win_short_path_for_make "$formatted_path"`
3974         VCVER=$vcnum
3976         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
3977         # are always "better", we list them in reverse chronological order.
3979         case "$vcnum" in
3980         160)
3981             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3982             ;;
3983         esac
3985         # The expectation is that --with-windows-sdk should not need to be used
3986         if test -n "$with_windows_sdk"; then
3987             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3988             *" "$with_windows_sdk" "*)
3989                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3990                 ;;
3991             *)
3992                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3993                 ;;
3994             esac
3995         fi
3997         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3998         ac_objext=obj
3999         ac_exeext=exe
4001     else
4002         AC_MSG_ERROR([Visual C++ not found after all, huh])
4003     fi
4005     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4006     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4007         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4008         // between Visual Studio versions and _MSC_VER:
4009         #if _MSC_VER < 1924
4010         #error
4011         #endif
4012     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4014     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4015     # version of the Explorer extension (and maybe other small
4016     # bits, too) needed when installing a 32-bit LibreOffice on a
4017     # 64-bit OS. The 64-bit Explorer extension is a feature that
4018     # has been present since long in OOo. Don't confuse it with
4019     # building LibreOffice itself as 64-bit code.
4021     BUILD_X64=
4022     CXX_X64_BINARY=
4024     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4025         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4026         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4027              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4028         then
4029             BUILD_X64=TRUE
4030             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4031             AC_MSG_RESULT([found])
4032         else
4033             AC_MSG_RESULT([not found])
4034             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4035         fi
4036     elif test "$WIN_HOST_ARCH" = "x64"; then
4037         CXX_X64_BINARY=$CXX
4038     fi
4039     AC_SUBST(BUILD_X64)
4041     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4042     AC_SUBST(CXX_X64_BINARY)
4044     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4045     # needed to support TWAIN scan on both 32- and 64-bit systems
4047     case "$WIN_HOST_ARCH" in
4048     x64)
4049         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4050         if test -n "$CXX_X86_BINARY"; then
4051             BUILD_X86=TRUE
4052             AC_MSG_RESULT([preset])
4053         elif test -n "$WIN_MULTI_ARCH"; then
4054             BUILD_X86=TRUE
4055             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4056             CXX_X86_BINARY+=" /arch:SSE"
4057             AC_MSG_RESULT([found])
4058         else
4059             AC_MSG_RESULT([not found])
4060             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4061         fi
4062         ;;
4063     x86)
4064         BUILD_X86=TRUE
4065         CXX_X86_BINARY=$MSVC_CXX
4066         ;;
4067     esac
4068     AC_SUBST(BUILD_X86)
4069     AC_SUBST(CXX_X86_BINARY)
4071 AC_SUBST(VCVER)
4072 AC_SUBST(DEVENV)
4073 AC_SUBST(MSVC_CXX)
4076 # unowinreg.dll
4078 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4079 AC_SUBST(UNOWINREG_DLL)
4081 COM_IS_CLANG=
4082 AC_MSG_CHECKING([whether the compiler is actually Clang])
4083 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4084     #ifndef __clang__
4085     you lose
4086     #endif
4087     int foo=42;
4088     ]])],
4089     [AC_MSG_RESULT([yes])
4090      COM_IS_CLANG=TRUE],
4091     [AC_MSG_RESULT([no])])
4092 AC_SUBST(COM_IS_CLANG)
4094 CC_PLAIN=$CC
4095 CLANGVER=
4096 if test "$COM_IS_CLANG" = TRUE; then
4097     AC_MSG_CHECKING([whether Clang is new enough])
4098     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4099         #if !defined __apple_build_version__
4100         #error
4101         #endif
4102         ]])],
4103         [my_apple_clang=yes],[my_apple_clang=])
4104     if test "$my_apple_clang" = yes; then
4105         AC_MSG_RESULT([assumed yes (Apple Clang)])
4106     else
4107         if test "$_os" = WINNT; then
4108             dnl In which case, assume clang-cl:
4109             my_args="/EP /TC"
4110             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4111             dnl clang-cl:
4112             CC_PLAIN=
4113             for i in $CC; do
4114                 case $i in
4115                 -FIIntrin.h)
4116                     ;;
4117                 *)
4118                     CC_PLAIN="$CC_PLAIN $i"
4119                     ;;
4120                 esac
4121             done
4122         else
4123             my_args="-E -P"
4124         fi
4125         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4126         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4127         CLANGVER=`echo $clang_version \
4128             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4129         if test "$CLANGVER" -ge 50002; then
4130             AC_MSG_RESULT([yes ($clang_version)])
4131         else
4132             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4133         fi
4134         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4135         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4136     fi
4139 SHOWINCLUDES_PREFIX=
4140 if test "$_os" = WINNT; then
4141     dnl We need to guess the prefix of the -showIncludes output, it can be
4142     dnl localized
4143     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4144     echo "#include <stdlib.h>" > conftest.c
4145     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4146         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4147     rm -f conftest.c conftest.obj
4148     if test -z "$SHOWINCLUDES_PREFIX"; then
4149         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4150     else
4151         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4152     fi
4154 AC_SUBST(SHOWINCLUDES_PREFIX)
4157 # prefix C with ccache if needed
4159 if test "$CCACHE" != ""; then
4160     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4162     AC_LANG_PUSH([C])
4163     save_CFLAGS=$CFLAGS
4164     CFLAGS="$CFLAGS --ccache-skip -O2"
4165     dnl an empty program will do, we're checking the compiler flags
4166     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4167                       [use_ccache=yes], [use_ccache=no])
4168     CFLAGS=$save_CFLAGS
4169     if test $use_ccache = yes; then
4170         AC_MSG_RESULT([yes])
4171     else
4172         CC="$CCACHE $CC"
4173         CC_BASE="ccache $CC_BASE"
4174         AC_MSG_RESULT([no])
4175     fi
4176     AC_LANG_POP([C])
4179 # ===================================================================
4180 # check various GCC options that Clang does not support now but maybe
4181 # will somewhen in the future, check them even for GCC, so that the
4182 # flags are set
4183 # ===================================================================
4185 HAVE_GCC_GGDB2=
4186 if test "$GCC" = "yes"; then
4187     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4188     save_CFLAGS=$CFLAGS
4189     CFLAGS="$CFLAGS -Werror -ggdb2"
4190     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4191     CFLAGS=$save_CFLAGS
4192     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4193         AC_MSG_RESULT([yes])
4194     else
4195         AC_MSG_RESULT([no])
4196     fi
4198     if test "$host_cpu" = "m68k"; then
4199         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4200         save_CFLAGS=$CFLAGS
4201         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4202         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4203         CFLAGS=$save_CFLAGS
4204         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4205             AC_MSG_RESULT([yes])
4206         else
4207             AC_MSG_ERROR([no])
4208         fi
4209     fi
4211 AC_SUBST(HAVE_GCC_GGDB2)
4213 dnl ===================================================================
4214 dnl  Test the gcc version
4215 dnl ===================================================================
4216 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4217     AC_MSG_CHECKING([the GCC version])
4218     _gcc_version=`$CC -dumpversion`
4219     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4220         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4221     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4223     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4225     if test "$gcc_full_version" -lt 70000; then
4226         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4227     fi
4228 else
4229     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4230     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4231     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4232     # (which reports itself as GCC 4.2.1).
4233     GCC_VERSION=
4235 AC_SUBST(GCC_VERSION)
4237 dnl Set the ENABLE_DBGUTIL variable
4238 dnl ===================================================================
4239 AC_MSG_CHECKING([whether to build with additional debug utilities])
4240 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4241     ENABLE_DBGUTIL="TRUE"
4242     # this is an extra var so it can have different default on different MSVC
4243     # versions (in case there are version specific problems with it)
4244     MSVC_USE_DEBUG_RUNTIME="TRUE"
4246     AC_MSG_RESULT([yes])
4247     # cppunit and graphite expose STL in public headers
4248     if test "$with_system_cppunit" = "yes"; then
4249         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4250     else
4251         with_system_cppunit=no
4252     fi
4253     if test "$with_system_graphite" = "yes"; then
4254         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4255     else
4256         with_system_graphite=no
4257     fi
4258     if test "$with_system_orcus" = "yes"; then
4259         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4260     else
4261         with_system_orcus=no
4262     fi
4263     if test "$with_system_libcmis" = "yes"; then
4264         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4265     else
4266         with_system_libcmis=no
4267     fi
4268     if test "$with_system_hunspell" = "yes"; then
4269         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4270     else
4271         with_system_hunspell=no
4272     fi
4273     if test "$with_system_gpgmepp" = "yes"; then
4274         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4275     else
4276         with_system_gpgmepp=no
4277     fi
4278     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4279     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4280     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4281     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4282     # of those two is using the system variant:
4283     if test "$with_system_libnumbertext" = "yes"; then
4284         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4285     else
4286         with_system_libnumbertext=no
4287     fi
4288     if test "$with_system_libwps" = "yes"; then
4289         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4290     else
4291         with_system_libwps=no
4292     fi
4293 else
4294     ENABLE_DBGUTIL=""
4295     MSVC_USE_DEBUG_RUNTIME=""
4296     AC_MSG_RESULT([no])
4298 AC_SUBST(ENABLE_DBGUTIL)
4299 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4301 dnl Set the ENABLE_DEBUG variable.
4302 dnl ===================================================================
4303 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4304     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4306 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4307     if test -z "$libo_fuzzed_enable_debug"; then
4308         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4309     else
4310         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4311         enable_debug=yes
4312     fi
4315 AC_MSG_CHECKING([whether to do a debug build])
4316 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4317     ENABLE_DEBUG="TRUE"
4318     if test -n "$ENABLE_DBGUTIL" ; then
4319         AC_MSG_RESULT([yes (dbgutil)])
4320     else
4321         AC_MSG_RESULT([yes])
4322     fi
4323 else
4324     ENABLE_DEBUG=""
4325     AC_MSG_RESULT([no])
4327 AC_SUBST(ENABLE_DEBUG)
4329 dnl ===================================================================
4330 dnl Select the linker to use (gold/lld/ld.bfd).
4331 dnl This is done only after compiler checks (need to know if Clang is
4332 dnl used, for different defaults) and after checking if a debug build
4333 dnl is wanted (non-debug builds get the default linker if not explicitly
4334 dnl specified otherwise).
4335 dnl All checks for linker features/options should come after this.
4336 dnl ===================================================================
4337 check_use_ld()
4339     use_ld=-fuse-ld=${1%%:*}
4340     use_ld_path=${1#*:}
4341     if test "$use_ld_path" != "$1"; then
4342         use_ld="$use_ld --ld-path=$use_ld_path"
4343     fi
4344     use_ld_fail_if_error=$2
4345     use_ld_ok=
4346     AC_MSG_CHECKING([for $use_ld linker support])
4347     use_ld_ldflags_save="$LDFLAGS"
4348     LDFLAGS="$LDFLAGS $use_ld"
4349     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4350 #include <stdio.h>
4351         ],[
4352 printf ("hello world\n");
4353         ])], USE_LD=$use_ld, [])
4354     if test -n "$USE_LD"; then
4355         AC_MSG_RESULT( yes )
4356         use_ld_ok=yes
4357     else
4358         if test -n "$use_ld_fail_if_error"; then
4359             AC_MSG_ERROR( no )
4360         else
4361             AC_MSG_RESULT( no )
4362         fi
4363     fi
4364     if test -n "$use_ld_ok"; then
4365         dnl keep the value of LDFLAGS
4366         return 0
4367     fi
4368     LDFLAGS="$use_ld_ldflags_save"
4369     return 1
4371 USE_LD=
4372 if test "$enable_ld" != "no"; then
4373     if test "$GCC" = "yes"; then
4374         if test -n "$enable_ld"; then
4375             check_use_ld "$enable_ld" fail_if_error
4376         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4377             dnl non-debug builds default to the default linker
4378             true
4379         elif test -n "$COM_IS_CLANG"; then
4380             check_use_ld lld
4381             if test $? -ne 0; then
4382                 check_use_ld gold
4383             fi
4384         else
4385             # For gcc first try gold, new versions also support lld.
4386             check_use_ld gold
4387             if test $? -ne 0; then
4388                 check_use_ld lld
4389             fi
4390         fi
4391         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4392         rm conftest.out
4393         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4394         if test -z "$ld_used"; then
4395             ld_used="unknown"
4396         fi
4397         AC_MSG_CHECKING([for linker that is used])
4398         AC_MSG_RESULT([$ld_used])
4399         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4400             if echo "$ld_used" | grep -q "^GNU ld"; then
4401                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4402                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4403             fi
4404         fi
4405     else
4406         if test "$enable_ld" = "yes"; then
4407             AC_MSG_ERROR([--enable-ld not supported])
4408         fi
4409     fi
4411 AC_SUBST(USE_LD)
4413 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4414 if test "$GCC" = "yes"; then
4415     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4416     bsymbolic_functions_ldflags_save=$LDFLAGS
4417     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4418     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4419 #include <stdio.h>
4420         ],[
4421 printf ("hello world\n");
4422         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4423     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4424         AC_MSG_RESULT( found )
4425     else
4426         AC_MSG_RESULT( not found )
4427     fi
4428     LDFLAGS=$bsymbolic_functions_ldflags_save
4430 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4432 LD_GC_SECTIONS=
4433 if test "$GCC" = "yes"; then
4434     for flag in "--gc-sections" "-dead_strip"; do
4435         AC_MSG_CHECKING([for $flag linker support])
4436         ldflags_save=$LDFLAGS
4437         LDFLAGS="$LDFLAGS -Wl,$flag"
4438         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4439 #include <stdio.h>
4440             ],[
4441 printf ("hello world\n");
4442             ])],[
4443             LD_GC_SECTIONS="-Wl,$flag"
4444             AC_MSG_RESULT( found )
4445             ], [
4446             AC_MSG_RESULT( not found )
4447             ])
4448         LDFLAGS=$ldflags_save
4449         if test -n "$LD_GC_SECTIONS"; then
4450             break
4451         fi
4452     done
4454 AC_SUBST(LD_GC_SECTIONS)
4456 HAVE_GSPLIT_DWARF=
4457 if test "$enable_split_debug" != no; then
4458     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4459     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4460         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4461         save_CFLAGS=$CFLAGS
4462         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4463         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4464         CFLAGS=$save_CFLAGS
4465         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4466             AC_MSG_RESULT([yes])
4467         else
4468             if test "$enable_split_debug" = yes; then
4469                 AC_MSG_ERROR([no])
4470             else
4471                 AC_MSG_RESULT([no])
4472             fi
4473         fi
4474     fi
4475     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4476         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4477         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4478     fi
4480 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4482 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4483 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4484 save_CFLAGS=$CFLAGS
4485 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4486 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4487 CFLAGS=$save_CFLAGS
4488 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4489     AC_MSG_RESULT([yes])
4490 else
4491     AC_MSG_RESULT([no])
4493 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4495 ENABLE_GDB_INDEX=
4496 if test "$enable_gdb_index" != "no"; then
4497     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4498     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4499         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4500         save_CFLAGS=$CFLAGS
4501         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4502         have_ggnu_pubnames=
4503         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4504         if test "$have_ggnu_pubnames" != "TRUE"; then
4505             if test "$enable_gdb_index" = "yes"; then
4506                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4507             else
4508                 AC_MSG_RESULT( no )
4509             fi
4510         else
4511             AC_MSG_RESULT( yes )
4512             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4513             ldflags_save=$LDFLAGS
4514             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4515             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4516 #include <stdio.h>
4517                 ],[
4518 printf ("hello world\n");
4519                 ])], ENABLE_GDB_INDEX=TRUE, [])
4520             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4521                 AC_MSG_RESULT( yes )
4522             else
4523                 if test "$enable_gdb_index" = "yes"; then
4524                     AC_MSG_ERROR( no )
4525                 else
4526                     AC_MSG_RESULT( no )
4527                 fi
4528             fi
4529             LDFLAGS=$ldflags_save
4530         fi
4531         CFLAGS=$save_CFLAGS
4532         fi
4533     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4534         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4535         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4536     fi
4538 AC_SUBST(ENABLE_GDB_INDEX)
4540 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4541     enable_sal_log=yes
4543 if test "$enable_sal_log" = yes; then
4544     ENABLE_SAL_LOG=TRUE
4546 AC_SUBST(ENABLE_SAL_LOG)
4548 dnl Check for enable symbols option
4549 dnl ===================================================================
4550 AC_MSG_CHECKING([whether to generate debug information])
4551 if test -z "$enable_symbols"; then
4552     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4553         enable_symbols=yes
4554     else
4555         enable_symbols=no
4556     fi
4558 if test "$enable_symbols" = yes; then
4559     ENABLE_SYMBOLS_FOR=all
4560     AC_MSG_RESULT([yes])
4561 elif test "$enable_symbols" = no; then
4562     ENABLE_SYMBOLS_FOR=
4563     AC_MSG_RESULT([no])
4564 else
4565     # Selective debuginfo.
4566     ENABLE_SYMBOLS_FOR="$enable_symbols"
4567     AC_MSG_RESULT([for "$enable_symbols"])
4569 AC_SUBST(ENABLE_SYMBOLS_FOR)
4571 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4572     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4573     AC_MSG_CHECKING([whether enough memory is available for linking])
4574     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4575     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4576     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4577         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4578     else
4579         AC_MSG_RESULT([yes])
4580     fi
4583 ENABLE_OPTIMIZED=
4584 ENABLE_OPTIMIZED_DEBUG=
4585 AC_MSG_CHECKING([whether to compile with optimization flags])
4586 if test -z "$enable_optimized"; then
4587     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4588         enable_optimized=no
4589     else
4590         enable_optimized=yes
4591     fi
4593 if test "$enable_optimized" = yes; then
4594     ENABLE_OPTIMIZED=TRUE
4595     AC_MSG_RESULT([yes])
4596 elif test "$enable_optimized" = debug; then
4597     ENABLE_OPTIMIZED_DEBUG=TRUE
4598     AC_MSG_RESULT([yes (debug)])
4599     HAVE_GCC_OG=
4600     if test "$GCC" = "yes"; then
4601         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4602         save_CFLAGS=$CFLAGS
4603         CFLAGS="$CFLAGS -Werror -Og"
4604         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4605         CFLAGS=$save_CFLAGS
4606         if test "$HAVE_GCC_OG" = "TRUE"; then
4607             AC_MSG_RESULT([yes])
4608         else
4609             AC_MSG_RESULT([no])
4610         fi
4611     fi
4612     if test -z "$HAVE_GCC_OG"; then
4613         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4614     fi
4615 else
4616     AC_MSG_RESULT([no])
4618 AC_SUBST(ENABLE_OPTIMIZED)
4619 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4622 # determine CPUNAME, OS, ...
4623 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4625 case "$host_os" in
4627 aix*)
4628     COM=GCC
4629     CPUNAME=POWERPC
4630     USING_X11=TRUE
4631     OS=AIX
4632     RTL_OS=AIX
4633     RTL_ARCH=PowerPC
4634     PLATFORMID=aix_powerpc
4635     P_SEP=:
4636     ;;
4638 cygwin*|wsl*)
4639     # Already handled
4640     ;;
4642 darwin*|macos*)
4643     COM=GCC
4644     USING_X11=
4645     OS=MACOSX
4646     RTL_OS=MacOSX
4647     P_SEP=:
4649     case "$host_cpu" in
4650     aarch64|arm64)
4651         if test "$enable_ios_simulator" = "yes"; then
4652             OS=iOS
4653         else
4654             CPUNAME=AARCH64
4655             RTL_ARCH=AARCH64
4656             PLATFORMID=macosx_arm64
4657         fi
4658         ;;
4659     x86_64)
4660         if test "$enable_ios_simulator" = "yes"; then
4661             OS=iOS
4662         fi
4663         CPUNAME=X86_64
4664         RTL_ARCH=X86_64
4665         PLATFORMID=macosx_x86_64
4666         ;;
4667     *)
4668         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4669         ;;
4670     esac
4671     ;;
4673 ios*)
4674     COM=GCC
4675     USING_X11=
4676     OS=iOS
4677     RTL_OS=iOS
4678     P_SEP=:
4680     case "$host_cpu" in
4681     aarch64|arm64)
4682         if test "$enable_ios_simulator" = "yes"; then
4683             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4684         fi
4685         ;;
4686     *)
4687         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4688         ;;
4689     esac
4690     CPUNAME=AARCH64
4691     RTL_ARCH=AARCH64
4692     PLATFORMID=ios_arm64
4693     ;;
4695 dragonfly*)
4696     COM=GCC
4697     USING_X11=TRUE
4698     OS=DRAGONFLY
4699     RTL_OS=DragonFly
4700     P_SEP=:
4702     case "$host_cpu" in
4703     i*86)
4704         CPUNAME=INTEL
4705         RTL_ARCH=x86
4706         PLATFORMID=dragonfly_x86
4707         ;;
4708     x86_64)
4709         CPUNAME=X86_64
4710         RTL_ARCH=X86_64
4711         PLATFORMID=dragonfly_x86_64
4712         ;;
4713     *)
4714         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4715         ;;
4716     esac
4717     ;;
4719 freebsd*)
4720     COM=GCC
4721     USING_X11=TRUE
4722     RTL_OS=FreeBSD
4723     OS=FREEBSD
4724     P_SEP=:
4726     case "$host_cpu" in
4727     aarch64)
4728         CPUNAME=AARCH64
4729         PLATFORMID=freebsd_aarch64
4730         RTL_ARCH=AARCH64
4731         ;;
4732     i*86)
4733         CPUNAME=INTEL
4734         RTL_ARCH=x86
4735         PLATFORMID=freebsd_x86
4736         ;;
4737     x86_64|amd64)
4738         CPUNAME=X86_64
4739         RTL_ARCH=X86_64
4740         PLATFORMID=freebsd_x86_64
4741         ;;
4742     powerpc64)
4743         CPUNAME=POWERPC64
4744         RTL_ARCH=PowerPC_64
4745         PLATFORMID=freebsd_powerpc64
4746         ;;
4747     powerpc|powerpcspe)
4748         CPUNAME=POWERPC
4749         RTL_ARCH=PowerPC
4750         PLATFORMID=freebsd_powerpc
4751         ;;
4752     *)
4753         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4754         ;;
4755     esac
4756     ;;
4758 haiku*)
4759     COM=GCC
4760     USING_X11=
4761     GUIBASE=haiku
4762     RTL_OS=Haiku
4763     OS=HAIKU
4764     P_SEP=:
4766     case "$host_cpu" in
4767     i*86)
4768         CPUNAME=INTEL
4769         RTL_ARCH=x86
4770         PLATFORMID=haiku_x86
4771         ;;
4772     x86_64|amd64)
4773         CPUNAME=X86_64
4774         RTL_ARCH=X86_64
4775         PLATFORMID=haiku_x86_64
4776         ;;
4777     *)
4778         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4779         ;;
4780     esac
4781     ;;
4783 kfreebsd*)
4784     COM=GCC
4785     USING_X11=TRUE
4786     OS=LINUX
4787     RTL_OS=kFreeBSD
4788     P_SEP=:
4790     case "$host_cpu" in
4792     i*86)
4793         CPUNAME=INTEL
4794         RTL_ARCH=x86
4795         PLATFORMID=kfreebsd_x86
4796         ;;
4797     x86_64)
4798         CPUNAME=X86_64
4799         RTL_ARCH=X86_64
4800         PLATFORMID=kfreebsd_x86_64
4801         ;;
4802     *)
4803         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4804         ;;
4805     esac
4806     ;;
4808 linux-gnu*)
4809     COM=GCC
4810     USING_X11=TRUE
4811     OS=LINUX
4812     RTL_OS=Linux
4813     P_SEP=:
4815     case "$host_cpu" in
4817     aarch64)
4818         CPUNAME=AARCH64
4819         PLATFORMID=linux_aarch64
4820         RTL_ARCH=AARCH64
4821         ;;
4822     alpha)
4823         CPUNAME=AXP
4824         RTL_ARCH=ALPHA
4825         PLATFORMID=linux_alpha
4826         ;;
4827     arm*)
4828         CPUNAME=ARM
4829         EPM_FLAGS="-a arm"
4830         RTL_ARCH=ARM_EABI
4831         PLATFORMID=linux_arm_eabi
4832         case "$host_cpu" in
4833         arm*-linux)
4834             RTL_ARCH=ARM_OABI
4835             PLATFORMID=linux_arm_oabi
4836             ;;
4837         esac
4838         ;;
4839     hppa)
4840         CPUNAME=HPPA
4841         RTL_ARCH=HPPA
4842         EPM_FLAGS="-a hppa"
4843         PLATFORMID=linux_hppa
4844         ;;
4845     i*86)
4846         CPUNAME=INTEL
4847         RTL_ARCH=x86
4848         PLATFORMID=linux_x86
4849         ;;
4850     ia64)
4851         CPUNAME=IA64
4852         RTL_ARCH=IA64
4853         PLATFORMID=linux_ia64
4854         ;;
4855     mips)
4856         CPUNAME=GODSON
4857         RTL_ARCH=MIPS_EB
4858         EPM_FLAGS="-a mips"
4859         PLATFORMID=linux_mips_eb
4860         ;;
4861     mips64)
4862         CPUNAME=GODSON64
4863         RTL_ARCH=MIPS64_EB
4864         EPM_FLAGS="-a mips64"
4865         PLATFORMID=linux_mips64_eb
4866         ;;
4867     mips64el)
4868         CPUNAME=GODSON64
4869         RTL_ARCH=MIPS64_EL
4870         EPM_FLAGS="-a mips64el"
4871         PLATFORMID=linux_mips64_el
4872         ;;
4873     mipsel)
4874         CPUNAME=GODSON
4875         RTL_ARCH=MIPS_EL
4876         EPM_FLAGS="-a mipsel"
4877         PLATFORMID=linux_mips_el
4878         ;;
4879     m68k)
4880         CPUNAME=M68K
4881         RTL_ARCH=M68K
4882         PLATFORMID=linux_m68k
4883         ;;
4884     powerpc)
4885         CPUNAME=POWERPC
4886         RTL_ARCH=PowerPC
4887         PLATFORMID=linux_powerpc
4888         ;;
4889     powerpc64)
4890         CPUNAME=POWERPC64
4891         RTL_ARCH=PowerPC_64
4892         PLATFORMID=linux_powerpc64
4893         ;;
4894     powerpc64le)
4895         CPUNAME=POWERPC64
4896         RTL_ARCH=PowerPC_64_LE
4897         PLATFORMID=linux_powerpc64_le
4898         ;;
4899     sparc)
4900         CPUNAME=SPARC
4901         RTL_ARCH=SPARC
4902         PLATFORMID=linux_sparc
4903         ;;
4904     sparc64)
4905         CPUNAME=SPARC64
4906         RTL_ARCH=SPARC64
4907         PLATFORMID=linux_sparc64
4908         ;;
4909     s390)
4910         CPUNAME=S390
4911         RTL_ARCH=S390
4912         PLATFORMID=linux_s390
4913         ;;
4914     s390x)
4915         CPUNAME=S390X
4916         RTL_ARCH=S390x
4917         PLATFORMID=linux_s390x
4918         ;;
4919     x86_64)
4920         CPUNAME=X86_64
4921         RTL_ARCH=X86_64
4922         PLATFORMID=linux_x86_64
4923         ;;
4924     *)
4925         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4926         ;;
4927     esac
4928     ;;
4930 linux-android*)
4931     COM=GCC
4932     USING_X11=
4933     OS=ANDROID
4934     RTL_OS=Android
4935     P_SEP=:
4937     case "$host_cpu" in
4939     arm|armel)
4940         CPUNAME=ARM
4941         RTL_ARCH=ARM_EABI
4942         PLATFORMID=android_arm_eabi
4943         ;;
4944     aarch64)
4945         CPUNAME=AARCH64
4946         RTL_ARCH=AARCH64
4947         PLATFORMID=android_aarch64
4948         ;;
4949     i*86)
4950         CPUNAME=INTEL
4951         RTL_ARCH=x86
4952         PLATFORMID=android_x86
4953         ;;
4954     x86_64)
4955         CPUNAME=X86_64
4956         RTL_ARCH=X86_64
4957         PLATFORMID=android_x86_64
4958         ;;
4959     *)
4960         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4961         ;;
4962     esac
4963     ;;
4965 *netbsd*)
4966     COM=GCC
4967     USING_X11=TRUE
4968     OS=NETBSD
4969     RTL_OS=NetBSD
4970     P_SEP=:
4972     case "$host_cpu" in
4973     i*86)
4974         CPUNAME=INTEL
4975         RTL_ARCH=x86
4976         PLATFORMID=netbsd_x86
4977         ;;
4978     powerpc)
4979         CPUNAME=POWERPC
4980         RTL_ARCH=PowerPC
4981         PLATFORMID=netbsd_powerpc
4982         ;;
4983     sparc)
4984         CPUNAME=SPARC
4985         RTL_ARCH=SPARC
4986         PLATFORMID=netbsd_sparc
4987         ;;
4988     x86_64)
4989         CPUNAME=X86_64
4990         RTL_ARCH=X86_64
4991         PLATFORMID=netbsd_x86_64
4992         ;;
4993     *)
4994         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4995         ;;
4996     esac
4997     ;;
4999 openbsd*)
5000     COM=GCC
5001     USING_X11=TRUE
5002     OS=OPENBSD
5003     RTL_OS=OpenBSD
5004     P_SEP=:
5006     case "$host_cpu" in
5007     i*86)
5008         CPUNAME=INTEL
5009         RTL_ARCH=x86
5010         PLATFORMID=openbsd_x86
5011         ;;
5012     x86_64)
5013         CPUNAME=X86_64
5014         RTL_ARCH=X86_64
5015         PLATFORMID=openbsd_x86_64
5016         ;;
5017     *)
5018         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5019         ;;
5020     esac
5021     SOLARINC="$SOLARINC -I/usr/local/include"
5022     ;;
5024 solaris*)
5025     COM=GCC
5026     USING_X11=TRUE
5027     OS=SOLARIS
5028     RTL_OS=Solaris
5029     P_SEP=:
5031     case "$host_cpu" in
5032     i*86)
5033         CPUNAME=INTEL
5034         RTL_ARCH=x86
5035         PLATFORMID=solaris_x86
5036         ;;
5037     sparc)
5038         CPUNAME=SPARC
5039         RTL_ARCH=SPARC
5040         PLATFORMID=solaris_sparc
5041         ;;
5042     sparc64)
5043         CPUNAME=SPARC64
5044         RTL_ARCH=SPARC64
5045         PLATFORMID=solaris_sparc64
5046         ;;
5047     *)
5048         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5049         ;;
5050     esac
5051     SOLARINC="$SOLARINC -I/usr/local/include"
5052     ;;
5055     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5056     ;;
5057 esac
5059 if test "$with_x" = "no"; then
5060     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5063 DISABLE_GUI=""
5064 if test "$enable_gui" = "no"; then
5065     if test "$USING_X11" != TRUE; then
5066         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5067     fi
5068     USING_X11=
5069     DISABLE_GUI=TRUE
5070     AC_DEFINE(HAVE_FEATURE_UI,0)
5071     test_cairo=yes
5073 AC_SUBST(DISABLE_GUI)
5075 WORKDIR="${BUILDDIR}/workdir"
5076 INSTDIR="${BUILDDIR}/instdir"
5077 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5078 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5079 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5080 AC_SUBST(COM)
5081 AC_SUBST(CPUNAME)
5082 AC_SUBST(RTL_OS)
5083 AC_SUBST(RTL_ARCH)
5084 AC_SUBST(EPM_FLAGS)
5085 AC_SUBST(USING_X11)
5086 AC_SUBST([INSTDIR])
5087 AC_SUBST([INSTROOT])
5088 AC_SUBST([INSTROOTBASE])
5089 AC_SUBST(OS)
5090 AC_SUBST(P_SEP)
5091 AC_SUBST(WORKDIR)
5092 AC_SUBST(PLATFORMID)
5093 AC_SUBST(WINDOWS_X64)
5094 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5096 dnl ===================================================================
5097 dnl Test which package format to use
5098 dnl ===================================================================
5099 AC_MSG_CHECKING([which package format to use])
5100 if test -n "$with_package_format" -a "$with_package_format" != no; then
5101     for i in $with_package_format; do
5102         case "$i" in
5103         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5104             ;;
5105         *)
5106             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5107 aix - AIX software distribution
5108 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5109 deb - Debian software distribution
5110 pkg - Solaris software distribution
5111 rpm - RedHat software distribution
5113 LibreOffice additionally supports:
5114 archive - .tar.gz or .zip
5115 dmg - macOS .dmg
5116 installed - installation tree
5117 msi - Windows .msi
5118         ])
5119             ;;
5120         esac
5121     done
5122     # fakeroot is needed to ensure correct file ownerships/permissions
5123     # inside deb packages and tar archives created on Linux and Solaris.
5124     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5125         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5126         if test "$FAKEROOT" = "no"; then
5127             AC_MSG_ERROR(
5128                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5129         fi
5130     fi
5131     PKGFORMAT="$with_package_format"
5132     AC_MSG_RESULT([$PKGFORMAT])
5133 else
5134     PKGFORMAT=
5135     AC_MSG_RESULT([none])
5137 AC_SUBST(PKGFORMAT)
5139 dnl ===================================================================
5140 dnl Set up a different compiler to produce tools to run on the build
5141 dnl machine when doing cross-compilation
5142 dnl ===================================================================
5144 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5145 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5146 if test "$cross_compiling" = "yes"; then
5147     AC_MSG_CHECKING([for BUILD platform configuration])
5148     echo
5149     rm -rf CONF-FOR-BUILD config_build.mk
5150     mkdir CONF-FOR-BUILD
5151     # Here must be listed all files needed when running the configure script. In particular, also
5152     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5153     # keep them in the same order as there.
5154     (cd $SRC_ROOT && tar cf - \
5155         config.guess \
5156         bin/get_config_variables \
5157         solenv/bin/getcompver.awk \
5158         solenv/inc/langlist.mk \
5159         download.lst \
5160         config_host.mk.in \
5161         config_host_lang.mk.in \
5162         Makefile.in \
5163         bin/bffvalidator.sh.in \
5164         bin/odfvalidator.sh.in \
5165         bin/officeotron.sh.in \
5166         hardened_runtime.xcent.in \
5167         instsetoo_native/util/openoffice.lst.in \
5168         config_host/*.in \
5169         sysui/desktop/macosx/Info.plist.in) \
5170     | (cd CONF-FOR-BUILD && tar xf -)
5171     cp configure CONF-FOR-BUILD
5172     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5173     (
5174     unset COM USING_X11 OS CPUNAME
5175     unset CC CXX SYSBASE CFLAGS
5176     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5177     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5178     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5179     if test -n "$CC_FOR_BUILD"; then
5180         export CC="$CC_FOR_BUILD"
5181         CC_BASE=`first_arg_basename "$CC"`
5182     fi
5183     if test -n "$CXX_FOR_BUILD"; then
5184         export CXX="$CXX_FOR_BUILD"
5185         CXX_BASE=`first_arg_basename "$CXX"`
5186     fi
5187     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5188     cd CONF-FOR-BUILD
5190     sub_conf_opts=""
5191     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5192     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5193     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5194     if test -n "$ENABLE_JAVA"; then
5195         case "$_os" in
5196         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5197         Android)
5198             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5199             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5200             ;;
5201         *)
5202             if test -z "$with_jdk_home"; then
5203                 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.])
5204             fi
5205             ;;
5206         esac
5207     else
5208         sub_conf_opts="$sub_conf_opts --without-java"
5209     fi
5210     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5211     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5212     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5214     # Don't bother having configure look for stuff not needed for the build platform anyway
5215     ./configure \
5216         --build="$build_alias" \
5217         --disable-cups \
5218         --disable-firebird-sdbc \
5219         --disable-gpgmepp \
5220         --disable-gstreamer-1-0 \
5221         --disable-gtk3 \
5222         --disable-mariadb-sdbc \
5223         --disable-online-update \
5224         --disable-opencl \
5225         --disable-pdfimport \
5226         --disable-postgresql-sdbc \
5227         --disable-skia \
5228         --enable-icecream="$enable_icecream" \
5229         --without-doxygen \
5230         --without-webdav \
5231         --with-parallelism="$with_parallelism" \
5232         --with-theme="$with_theme" \
5233         --with-tls=openssl \
5234         $sub_conf_opts \
5235         --srcdir=$srcdir \
5236         2>&1 | sed -e 's/^/    /'
5237     test -f ./config_host.mk 2>/dev/null || exit
5239     # filter permitted build targets
5240     PERMITTED_BUILD_TARGETS="
5241         AVMEDIA
5242         BOOST
5243         CLUCENE
5244         DBCONNECTIVITY
5245         DESKTOP
5246         DYNLOADING
5247         EPOXY
5248         EXPAT
5249         GLM
5250         GRAPHITE
5251         HARFBUZZ
5252         ICU
5253         LCMS2
5254         LIBJPEG_TURBO
5255         LIBLANGTAG
5256         LibO
5257         LIBFFI
5258         LIBPN
5259         LIBXML2
5260         LIBXSLT
5261         MDDS
5262         NATIVE
5263         OPENSSL
5264         ORCUS
5265         PYTHON
5266         SCRIPTING
5267         ZLIB
5269     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5270     # newlined lists, to use grep as a filter
5271     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5272     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5273     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5274     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5276     cp config_host.mk ../config_build.mk
5277     cp config_host_lang.mk ../config_build_lang.mk
5278     mv config.log ../config.Build.log
5279     mkdir -p ../config_build
5280     mv config_host/*.h ../config_build
5282     # all these will get a _FOR_BUILD postfix
5283     DIRECT_FOR_BUILD_SETTINGS="
5284         CC
5285         CXX
5286         ILIB
5287         JAVA_HOME
5288         JAVAIFLAGS
5289         JDK
5290         LIBO_BIN_FOLDER
5291         LIBO_LIB_FOLDER
5292         LIBO_URE_LIB_FOLDER
5293         LIBO_URE_MISC_FOLDER
5294         OS
5295         SDKDIRNAME
5296         SYSTEM_LIBXML
5297         SYSTEM_LIBXSLT
5299     # these overwrite host config with build config
5300     OVERWRITING_SETTINGS="
5301         ANT
5302         ANT_HOME
5303         ANT_LIB
5304         HSQLDB_USE_JDBC_4_1
5305         JAVA_CLASSPATH_NOT_SET
5306         JAVA_SOURCE_VER
5307         JAVA_TARGET_VER
5308         JAVACFLAGS
5309         JAVACOMPILER
5310         JAVADOC
5311         JAVADOCISGJDOC
5313     # these need some special handling
5314     EXTRA_HANDLED_SETTINGS="
5315         INSTDIR
5316         INSTROOT
5317         PATH
5318         WORKDIR
5320     OLD_PATH=$PATH
5321     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5322     BUILD_PATH=$PATH
5323     PATH=$OLD_PATH
5325     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5326     echo "$line" >>build-config
5328     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5329         VV='$'$V
5330         VV=`eval "echo $VV"`
5331         if test -n "$VV"; then
5332             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5333             echo "$line" >>build-config
5334         fi
5335     done
5337     for V in $OVERWRITING_SETTINGS; do
5338         VV='$'$V
5339         VV=`eval "echo $VV"`
5340         if test -n "$VV"; then
5341             line=${V}='${'${V}:-$VV'}'
5342             echo "$line" >>build-config
5343         fi
5344     done
5346     for V in INSTDIR INSTROOT WORKDIR; do
5347         VV='$'$V
5348         VV=`eval "echo $VV"`
5349         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5350         if test -n "$VV"; then
5351             line="${V}_FOR_BUILD='$VV'"
5352             echo "$line" >>build-config
5353         fi
5354     done
5356     )
5357     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5358     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])
5359     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5360              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5362     eval `cat CONF-FOR-BUILD/build-config`
5364     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5366     rm -rf CONF-FOR-BUILD
5367 else
5368     OS_FOR_BUILD="$OS"
5369     CC_FOR_BUILD="$CC"
5370     CXX_FOR_BUILD="$CXX"
5371     INSTDIR_FOR_BUILD="$INSTDIR"
5372     INSTROOT_FOR_BUILD="$INSTROOT"
5373     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5374     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5375     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5376     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5377     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5378     WORKDIR_FOR_BUILD="$WORKDIR"
5380 AC_SUBST(OS_FOR_BUILD)
5381 AC_SUBST(INSTDIR_FOR_BUILD)
5382 AC_SUBST(INSTROOT_FOR_BUILD)
5383 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5384 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5385 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5386 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5387 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5388 AC_SUBST(WORKDIR_FOR_BUILD)
5389 AC_SUBST(CC_FOR_BUILD)
5390 AC_SUBST(CXX_FOR_BUILD)
5392 dnl ===================================================================
5393 dnl Check for syslog header
5394 dnl ===================================================================
5395 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5397 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5398 dnl ===================================================================
5399 AC_MSG_CHECKING([whether to turn warnings to errors])
5400 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5401     ENABLE_WERROR="TRUE"
5402     PYTHONWARNINGS="error"
5403     AC_MSG_RESULT([yes])
5404 else
5405     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5406         ENABLE_WERROR="TRUE"
5407         PYTHONWARNINGS="error"
5408         AC_MSG_RESULT([yes])
5409     else
5410         AC_MSG_RESULT([no])
5411     fi
5413 AC_SUBST(ENABLE_WERROR)
5414 AC_SUBST(PYTHONWARNINGS)
5416 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5417 dnl ===================================================================
5418 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5419 if test -z "$enable_assert_always_abort"; then
5420    if test "$ENABLE_DEBUG" = TRUE; then
5421        enable_assert_always_abort=yes
5422    else
5423        enable_assert_always_abort=no
5424    fi
5426 if test "$enable_assert_always_abort" = "yes"; then
5427     ASSERT_ALWAYS_ABORT="TRUE"
5428     AC_MSG_RESULT([yes])
5429 else
5430     ASSERT_ALWAYS_ABORT="FALSE"
5431     AC_MSG_RESULT([no])
5433 AC_SUBST(ASSERT_ALWAYS_ABORT)
5435 # Determine whether to use ooenv for the instdir installation
5436 # ===================================================================
5437 if test $_os != "WINNT" -a $_os != "Darwin"; then
5438     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5439     if test "$enable_ooenv" = "no"; then
5440         AC_MSG_RESULT([no])
5441     else
5442         ENABLE_OOENV="TRUE"
5443         AC_MSG_RESULT([yes])
5444     fi
5446 AC_SUBST(ENABLE_OOENV)
5448 if test "$USING_X11" != TRUE; then
5449     # be sure to do not mess with unneeded stuff
5450     test_randr=no
5451     test_xrender=no
5452     test_cups=no
5453     test_dbus=no
5454     build_gstreamer_1_0=no
5455     test_kf5=no
5456     test_qt5=no
5457     test_gtk3_kde5=no
5458     enable_cairo_canvas=no
5461 if test "$OS" = "HAIKU"; then
5462     enable_cairo_canvas=yes
5463     test_kf5=yes
5466 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5467     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!])
5468     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!"
5469     enable_kf5=yes
5472 if test "$test_kf5" = "yes"; then
5473     test_qt5=yes
5476 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5477     if test "$enable_qt5" = "no"; then
5478         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5479     else
5480         enable_qt5=yes
5481     fi
5484 dnl ===================================================================
5485 dnl check for cups support
5486 dnl ===================================================================
5487 ENABLE_CUPS=""
5489 if test "$enable_cups" = "no"; then
5490     test_cups=no
5493 AC_MSG_CHECKING([whether to enable CUPS support])
5494 if test "$test_cups" = "yes"; then
5495     ENABLE_CUPS="TRUE"
5496     AC_MSG_RESULT([yes])
5498     AC_MSG_CHECKING([whether cups support is present])
5499     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5500     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5501     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5502         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5503     fi
5505 else
5506     AC_MSG_RESULT([no])
5509 AC_SUBST(ENABLE_CUPS)
5511 # fontconfig checks
5512 if test "$test_fontconfig" = "yes"; then
5513     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5514     SYSTEM_FONTCONFIG=TRUE
5515     FilterLibs "${FONTCONFIG_LIBS}"
5516     FONTCONFIG_LIBS="${filteredlibs}"
5518 AC_SUBST(FONTCONFIG_CFLAGS)
5519 AC_SUBST(FONTCONFIG_LIBS)
5520 AC_SUBST([SYSTEM_FONTCONFIG])
5522 dnl whether to find & fetch external tarballs?
5523 dnl ===================================================================
5524 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5525    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5526        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5527    else
5528        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5529    fi
5531 if test -z "$TARFILE_LOCATION"; then
5532     if test -d "$SRC_ROOT/src" ; then
5533         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5534         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5535     fi
5536     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5537 else
5538     AbsolutePath "$TARFILE_LOCATION"
5539     PathFormat "${absolute_path}"
5540     TARFILE_LOCATION="${formatted_path}"
5542 AC_SUBST(TARFILE_LOCATION)
5544 AC_MSG_CHECKING([whether we want to fetch tarballs])
5545 if test "$enable_fetch_external" != "no"; then
5546     if test "$with_all_tarballs" = "yes"; then
5547         AC_MSG_RESULT([yes, all of them])
5548         DO_FETCH_TARBALLS="ALL"
5549     else
5550         AC_MSG_RESULT([yes, if we use them])
5551         DO_FETCH_TARBALLS="TRUE"
5552     fi
5553 else
5554     AC_MSG_RESULT([no])
5555     DO_FETCH_TARBALLS=
5557 AC_SUBST(DO_FETCH_TARBALLS)
5559 AC_MSG_CHECKING([whether to build help])
5560 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5561     BUILD_TYPE="$BUILD_TYPE HELP"
5562     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5563     case "$with_help" in
5564     "html")
5565         ENABLE_HTMLHELP=TRUE
5566         SCPDEFS="$SCPDEFS -DWITH_HELP"
5567         AC_MSG_RESULT([HTML])
5568         ;;
5569     "online")
5570         ENABLE_HTMLHELP=TRUE
5571         HELP_ONLINE=TRUE
5572         AC_MSG_RESULT([HTML])
5573         ;;
5574     yes)
5575         SCPDEFS="$SCPDEFS -DWITH_HELP"
5576         AC_MSG_RESULT([yes])
5577         ;;
5578     *)
5579         AC_MSG_ERROR([Unknown --with-help=$with_help])
5580         ;;
5581     esac
5582 else
5583     AC_MSG_RESULT([no])
5585 AC_SUBST([ENABLE_HTMLHELP])
5586 AC_SUBST([HELP_ONLINE])
5588 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5589 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5590     BUILD_TYPE="$BUILD_TYPE HELP"
5591     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5592     case "$with_omindex" in
5593     "server")
5594         ENABLE_HTMLHELP=TRUE
5595         HELP_ONLINE=TRUE
5596         HELP_OMINDEX_PAGE=TRUE
5597         AC_MSG_RESULT([SERVER])
5598         ;;
5599     "noxap")
5600         ENABLE_HTMLHELP=TRUE
5601         HELP_ONLINE=TRUE
5602         HELP_OMINDEX_PAGE=FALSE
5603         AC_MSG_RESULT([NOXAP])
5604         ;;
5605     *)
5606         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5607         ;;
5608     esac
5609 else
5610     HELP_OMINDEX_PAGE=FALSE
5611     AC_MSG_RESULT([no])
5613 AC_SUBST([ENABLE_HTMLHELP])
5614 AC_SUBST([HELP_OMINDEX_PAGE])
5615 AC_SUBST([HELP_ONLINE])
5618 dnl Test whether to include MySpell dictionaries
5619 dnl ===================================================================
5620 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5621 if test "$with_myspell_dicts" = "yes"; then
5622     AC_MSG_RESULT([yes])
5623     WITH_MYSPELL_DICTS=TRUE
5624     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5625     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5626 else
5627     AC_MSG_RESULT([no])
5628     WITH_MYSPELL_DICTS=
5630 AC_SUBST(WITH_MYSPELL_DICTS)
5632 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5633 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5634     if test "$with_system_dicts" = yes; then
5635         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5636     fi
5637     with_system_dicts=no
5640 AC_MSG_CHECKING([whether to use dicts from external paths])
5641 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5642     AC_MSG_RESULT([yes])
5643     SYSTEM_DICTS=TRUE
5644     AC_MSG_CHECKING([for spelling dictionary directory])
5645     if test -n "$with_external_dict_dir"; then
5646         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5647     else
5648         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5649         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5650             DICT_SYSTEM_DIR=file:///usr/share/myspell
5651         fi
5652     fi
5653     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5654     AC_MSG_CHECKING([for hyphenation patterns directory])
5655     if test -n "$with_external_hyph_dir"; then
5656         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5657     else
5658         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5659     fi
5660     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5661     AC_MSG_CHECKING([for thesaurus directory])
5662     if test -n "$with_external_thes_dir"; then
5663         THES_SYSTEM_DIR=file://$with_external_thes_dir
5664     else
5665         THES_SYSTEM_DIR=file:///usr/share/mythes
5666     fi
5667     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5668 else
5669     AC_MSG_RESULT([no])
5670     SYSTEM_DICTS=
5672 AC_SUBST(SYSTEM_DICTS)
5673 AC_SUBST(DICT_SYSTEM_DIR)
5674 AC_SUBST(HYPH_SYSTEM_DIR)
5675 AC_SUBST(THES_SYSTEM_DIR)
5677 dnl ===================================================================
5678 dnl Precompiled headers.
5679 ENABLE_PCH=""
5680 AC_MSG_CHECKING([whether to enable pch feature])
5681 if test -z "$enable_pch"; then
5682     if test "$_os" = "WINNT"; then
5683         # Enabled by default on Windows.
5684         enable_pch=yes
5685     else
5686         enable_pch=no
5687     fi
5689 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5690     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5692 if test "$enable_pch" = "system"; then
5693     ENABLE_PCH="1"
5694     AC_MSG_RESULT([yes (system headers)])
5695 elif test "$enable_pch" = "base"; then
5696     ENABLE_PCH="2"
5697     AC_MSG_RESULT([yes (system and base headers)])
5698 elif test "$enable_pch" = "normal"; then
5699     ENABLE_PCH="3"
5700     AC_MSG_RESULT([yes (normal)])
5701 elif test "$enable_pch" = "full"; then
5702     ENABLE_PCH="4"
5703     AC_MSG_RESULT([yes (full)])
5704 elif test "$enable_pch" = "yes"; then
5705     # Pick a suitable default.
5706     if test "$GCC" = "yes"; then
5707         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5708         # while making the PCHs larger and rebuilds more likely.
5709         ENABLE_PCH="2"
5710         AC_MSG_RESULT([yes (system and base headers)])
5711     else
5712         # With MSVC the highest level makes a significant difference,
5713         # and it was the default when there used to be no PCH levels.
5714         ENABLE_PCH="4"
5715         AC_MSG_RESULT([yes (full)])
5716     fi
5717 elif test "$enable_pch" = "no"; then
5718     AC_MSG_RESULT([no])
5719 else
5720     AC_MSG_ERROR([Unknown value for --enable-pch])
5722 AC_SUBST(ENABLE_PCH)
5723 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5724 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5725     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5726     if test "$CCACHE_BIN" != "not found"; then
5727         AC_MSG_CHECKING([ccache version])
5728         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5729         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5730         AC_MSG_RESULT([$CCACHE_VERSION])
5731         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5732         if test "$CCACHE_NUMVER" -gt "030701"; then
5733             AC_MSG_RESULT([yes])
5734         else
5735             AC_MSG_RESULT([no (not newer than 3.7.1)])
5736             CCACHE_DEPEND_MODE=
5737         fi
5738     fi
5741 PCH_INSTANTIATE_TEMPLATES=
5742 if test -n "$ENABLE_PCH"; then
5743     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5744     save_CFLAGS=$CFLAGS
5745     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5746     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5747     CFLAGS=$save_CFLAGS
5748     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5749         AC_MSG_RESULT(yes)
5750     else
5751         AC_MSG_RESULT(no)
5752     fi
5754 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5756 BUILDING_PCH_WITH_OBJ=
5757 if test -n "$ENABLE_PCH"; then
5758     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5759     save_CFLAGS=$CFLAGS
5760     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5761     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5762     CFLAGS=$save_CFLAGS
5763     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5764         AC_MSG_RESULT(yes)
5765     else
5766         AC_MSG_RESULT(no)
5767     fi
5769 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5771 PCH_CODEGEN=
5772 PCH_NO_CODEGEN=
5773 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5774     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5775     save_CFLAGS=$CFLAGS
5776     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5777     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5778         [
5779         PCH_CODEGEN="-fpch-codegen"
5780         PCH_NO_CODEGEN="-fno-pch-codegen"
5781         ],[])
5782     CFLAGS=$save_CFLAGS
5783     if test -n "$PCH_CODEGEN"; then
5784         AC_MSG_RESULT(yes)
5785     else
5786         AC_MSG_RESULT(no)
5787     fi
5789 AC_SUBST(PCH_CODEGEN)
5790 AC_SUBST(PCH_NO_CODEGEN)
5791 PCH_DEBUGINFO=
5792 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5793     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5794     save_CFLAGS=$CFLAGS
5795     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5796     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5797     CFLAGS=$save_CFLAGS
5798     if test -n "$PCH_DEBUGINFO"; then
5799         AC_MSG_RESULT(yes)
5800     else
5801         AC_MSG_RESULT(no)
5802     fi
5804 AC_SUBST(PCH_DEBUGINFO)
5806 TAB=`printf '\t'`
5808 AC_MSG_CHECKING([the GNU Make version])
5809 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5810 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5811 if test "$_make_longver" -ge "038200"; then
5812     AC_MSG_RESULT([$GNUMAKE $_make_version])
5814 elif test "$_make_longver" -ge "038100"; then
5815     if test "$build_os" = "cygwin"; then
5816         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5817     fi
5818     AC_MSG_RESULT([$GNUMAKE $_make_version])
5820     dnl ===================================================================
5821     dnl Search all the common names for sha1sum
5822     dnl ===================================================================
5823     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5824     if test -z "$SHA1SUM"; then
5825         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5826     elif test "$SHA1SUM" = "openssl"; then
5827         SHA1SUM="openssl sha1"
5828     fi
5829     AC_MSG_CHECKING([for GNU Make bug 20033])
5830     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5831     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5832 A := \$(wildcard *.a)
5834 .PHONY: all
5835 all: \$(A:.a=.b)
5836 <TAB>@echo survived bug20033.
5838 .PHONY: setup
5839 setup:
5840 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5842 define d1
5843 @echo lala \$(1)
5844 @sleep 1
5845 endef
5847 define d2
5848 @echo tyty \$(1)
5849 @sleep 1
5850 endef
5852 %.b : %.a
5853 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5854 <TAB>\$(call d1,\$(CHECKSUM)),\
5855 <TAB>\$(call d2,\$(CHECKSUM)))
5857     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5858         no_parallelism_make="YES"
5859         AC_MSG_RESULT([yes, disable parallelism])
5860     else
5861         AC_MSG_RESULT([no, keep parallelism enabled])
5862     fi
5863     rm -rf $TESTGMAKEBUG20033
5864 else
5865     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5868 # find if gnumake support file function
5869 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5870 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5871 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5872     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5874 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5875 \$(file >test.txt,Success )
5877 .PHONY: all
5878 all:
5879 <TAB>@cat test.txt
5882 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5883 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5884     HAVE_GNUMAKE_FILE_FUNC=TRUE
5885     AC_MSG_RESULT([yes])
5886 else
5887     AC_MSG_RESULT([no])
5889 rm -rf $TESTGMAKEFILEFUNC
5890 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5891 AC_SUBST(GNUMAKE_WIN_NATIVE)
5893 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5894 STALE_MAKE=
5895 if test "$_make_ver_check" = ""; then
5896    STALE_MAKE=TRUE
5899 HAVE_LD_HASH_STYLE=FALSE
5900 WITH_LINKER_HASH_STYLE=
5901 AC_MSG_CHECKING([for --hash-style gcc linker support])
5902 if test "$GCC" = "yes"; then
5903     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5904         hash_styles="gnu sysv"
5905     elif test "$with_linker_hash_style" = "no"; then
5906         hash_styles=
5907     else
5908         hash_styles="$with_linker_hash_style"
5909     fi
5911     for hash_style in $hash_styles; do
5912         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5913         hash_style_ldflags_save=$LDFLAGS
5914         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5916         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5917             [
5918 #include <stdio.h>
5919             ],[
5920 printf ("");
5921             ])],
5922             [
5923                   HAVE_LD_HASH_STYLE=TRUE
5924                   WITH_LINKER_HASH_STYLE=$hash_style
5925             ],
5926             [HAVE_LD_HASH_STYLE=FALSE],
5927             [HAVE_LD_HASH_STYLE=FALSE])
5928         LDFLAGS=$hash_style_ldflags_save
5929     done
5931     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5932         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5933     else
5934         AC_MSG_RESULT( no )
5935     fi
5936     LDFLAGS=$hash_style_ldflags_save
5937 else
5938     AC_MSG_RESULT( no )
5940 AC_SUBST(HAVE_LD_HASH_STYLE)
5941 AC_SUBST(WITH_LINKER_HASH_STYLE)
5943 dnl ===================================================================
5944 dnl Check whether there's a Perl version available.
5945 dnl ===================================================================
5946 if test -z "$with_perl_home"; then
5947     AC_PATH_PROG(PERL, perl)
5948 else
5949     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5950     _perl_path="$with_perl_home/bin/perl"
5951     if test -x "$_perl_path"; then
5952         PERL=$_perl_path
5953     else
5954         AC_MSG_ERROR([$_perl_path not found])
5955     fi
5958 dnl ===================================================================
5959 dnl Testing for Perl version 5 or greater.
5960 dnl $] is the Perl version variable, it is returned as an integer
5961 dnl ===================================================================
5962 if test "$PERL"; then
5963     AC_MSG_CHECKING([the Perl version])
5964     ${PERL} -e "exit($]);"
5965     _perl_version=$?
5966     if test "$_perl_version" -lt 5; then
5967         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5968     fi
5969     AC_MSG_RESULT([Perl $_perl_version])
5970 else
5971     AC_MSG_ERROR([Perl not found, install Perl 5])
5974 dnl ===================================================================
5975 dnl Testing for required Perl modules
5976 dnl ===================================================================
5978 AC_MSG_CHECKING([for required Perl modules])
5979 perl_use_string="use Cwd ; use Digest::MD5"
5980 if test "$_os" = "WINNT"; then
5981     if test -n "$PKGFORMAT"; then
5982         for i in $PKGFORMAT; do
5983             case "$i" in
5984             msi)
5985                 # for getting fonts versions to use in MSI
5986                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5987                 ;;
5988             esac
5989         done
5990     fi
5992 if test "$with_system_hsqldb" = "yes"; then
5993     perl_use_string="$perl_use_string ; use Archive::Zip"
5995 if test "$with_system_openssl" != "yes"; then
5996     # OpenSSL needs that to build
5997     perl_use_string="$perl_use_string ; use FindBin"
5999 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6000     AC_MSG_RESULT([all modules found])
6001 else
6002     AC_MSG_RESULT([failed to find some modules])
6003     # Find out which modules are missing.
6004     for i in $perl_use_string; do
6005         if test "$i" != "use" -a "$i" != ";"; then
6006             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6007                 missing_perl_modules="$missing_perl_modules $i"
6008             fi
6009         fi
6010     done
6011     AC_MSG_ERROR([
6012     The missing Perl modules are: $missing_perl_modules
6013     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6016 dnl ===================================================================
6017 dnl Check for pkg-config
6018 dnl ===================================================================
6019 if test "$_os" != "WINNT"; then
6020     PKG_PROG_PKG_CONFIG
6023 if test "$_os" != "WINNT"; then
6025     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6026     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6027     # explicitly. Or put /path/to/compiler in PATH yourself.
6029     # Use wrappers for LTO
6030     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6031         AC_CHECK_TOOL(AR,gcc-ar)
6032         AC_CHECK_TOOL(NM,gcc-nm)
6033         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6034     else
6035         AC_CHECK_TOOL(AR,ar)
6036         AC_CHECK_TOOL(NM,nm)
6037         AC_CHECK_TOOL(RANLIB,ranlib)
6038     fi
6039     AC_CHECK_TOOL(OBJDUMP,objdump)
6040     AC_CHECK_TOOL(READELF,readelf)
6041     AC_CHECK_TOOL(STRIP,strip)
6042     if test "$_os" = "WINNT"; then
6043         AC_CHECK_TOOL(DLLTOOL,dlltool)
6044         AC_CHECK_TOOL(WINDRES,windres)
6045     fi
6047 AC_SUBST(AR)
6048 AC_SUBST(DLLTOOL)
6049 AC_SUBST(NM)
6050 AC_SUBST(OBJDUMP)
6051 AC_SUBST(PKG_CONFIG)
6052 AC_SUBST(RANLIB)
6053 AC_SUBST(READELF)
6054 AC_SUBST(STRIP)
6055 AC_SUBST(WINDRES)
6057 dnl ===================================================================
6058 dnl pkg-config checks on macOS
6059 dnl ===================================================================
6061 if test $_os = Darwin; then
6062     AC_MSG_CHECKING([for bogus pkg-config])
6063     if test -n "$PKG_CONFIG"; then
6064         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6065             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6066         else
6067             if test "$enable_bogus_pkg_config" = "yes"; then
6068                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6069             else
6070                 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.])
6071             fi
6072         fi
6073     else
6074         AC_MSG_RESULT([no, good])
6075     fi
6078 find_csc()
6080     # Return value: $csctest
6082     unset csctest
6084     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6085     if test -n "$regvalue"; then
6086         csctest=$regvalue
6087         return
6088     fi
6091 find_al()
6093     # Return value: $altest
6095     unset altest
6097     # We need this check to detect 4.6.1 or above.
6098     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6099         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6100         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6101             altest=$regvalue
6102             return
6103         fi
6104     done
6106     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6107         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6108         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6109             altest=$regvalue
6110             return
6111         fi
6112     done
6115 find_dotnetsdk46()
6117     unset frametest
6119     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6120         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6121         if test -n "$regvalue"; then
6122             frametest=$regvalue
6123             return
6124         fi
6125     done
6128 find_winsdk_version()
6130     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6131     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6133     unset winsdktest winsdkbinsubdir winsdklibsubdir
6135     case "$1" in
6136     8.0|8.0A)
6137         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6138         if test -n "$regvalue"; then
6139             winsdktest=$regvalue
6140             winsdklibsubdir=win8
6141             return
6142         fi
6143         ;;
6144     8.1|8.1A)
6145         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6146         if test -n "$regvalue"; then
6147             winsdktest=$regvalue
6148             winsdklibsubdir=winv6.3
6149             return
6150         fi
6151         ;;
6152     10.0)
6153         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6154         if test -n "$regvalue"; then
6155             winsdktest=$regvalue
6156             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6157             if test -n "$regvalue"; then
6158                 winsdkbinsubdir="$regvalue".0
6159                 winsdklibsubdir=$winsdkbinsubdir
6160                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6161                 local tmppath_unix=$(cygpath -u "$tmppath")
6162                 # test exist the SDK path
6163                 if test -d "$tmppath_unix"; then
6164                    # when path is convertible to a short path then path is okay
6165                    cygpath -d "$tmppath" >/dev/null 2>&1
6166                    if test $? -ne 0; then
6167                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6168                    fi
6169                 else
6170                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6171                 fi
6172             fi
6173             return
6174         fi
6175         ;;
6176     esac
6179 find_winsdk()
6181     # Return value: From find_winsdk_version
6183     unset winsdktest
6185     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6186         find_winsdk_version $ver
6187         if test -n "$winsdktest"; then
6188             return
6189         fi
6190     done
6193 find_msms()
6195     # Return value: $msmdir
6197     AC_MSG_CHECKING([for MSVC merge modules directory])
6198     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6199     local my_msm_dir
6201     case "$VCVER" in
6202         160)
6203         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6204         ;;
6205     esac
6206     for f in $my_msm_files; do
6207         echo "$as_me:$LINENO: searching for $f" >&5
6208     done
6210     msmdir=
6211     for ver in 14.0 15.0; do
6212         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6213         if test -n "$regvalue"; then
6214             for f in ${my_msm_files}; do
6215                 if test -e "$regvalue/${f}"; then
6216                     msmdir=$regvalue
6217                     break
6218                 fi
6219             done
6220         fi
6221     done
6222     dnl Is the following fallback really necessary, or was it added in response
6223     dnl to never having started Visual Studio on a given machine, so the
6224     dnl registry keys checked above had presumably not yet been created?
6225     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6226     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6227     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6228     dnl expanding to "C:\Program Files\Common Files"), which would need
6229     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6230     dnl obtain its value from cygwin:
6231     if test -z "$msmdir"; then
6232         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6233         for f in ${my_msm_files}; do
6234             if test -e "$my_msm_dir/${f}"; then
6235                 msmdir=$my_msm_dir
6236             fi
6237         done
6238     fi
6240     dnl Starting from MSVC 15.0, merge modules are located in different directory
6241     case "$VCVER" in
6242     160)
6243         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6244             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6245             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6246             for f in ${my_msm_files}; do
6247                 if test -e "$my_msm_dir/${f}"; then
6248                     msmdir=$my_msm_dir
6249                     break
6250                 fi
6251             done
6252         done
6253         ;;
6254     esac
6256     if test -n "$msmdir"; then
6257         msmdir=`cygpath -m "$msmdir"`
6258         AC_MSG_RESULT([$msmdir])
6259     else
6260         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6261             AC_MSG_FAILURE([not found])
6262         else
6263             AC_MSG_WARN([not found (check config.log)])
6264             add_warning "MSM none of ${my_msm_files} found"
6265         fi
6266     fi
6269 find_msvc_x64_dlls()
6271     # Return value: $msvcdllpath, $msvcdlls
6273     AC_MSG_CHECKING([for MSVC x64 DLL path])
6274     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6275     case "$VCVER" in
6276     160)
6277         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6278             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6279             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6280                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6281                 break
6282             fi
6283             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6284             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6285                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6286                 break
6287             fi
6288         done
6289         ;;
6290     esac
6291     AC_MSG_RESULT([$msvcdllpath])
6292     AC_MSG_CHECKING([for MSVC x64 DLLs])
6293     msvcdlls="msvcp140.dll vcruntime140.dll"
6294     for dll in $msvcdlls; do
6295         if ! test -f "$msvcdllpath/$dll"; then
6296             AC_MSG_FAILURE([missing $dll])
6297         fi
6298     done
6299     AC_MSG_RESULT([found all ($msvcdlls)])
6302 dnl =========================================
6303 dnl Check for the Windows  SDK.
6304 dnl =========================================
6305 if test "$_os" = "WINNT"; then
6306     AC_MSG_CHECKING([for Windows SDK])
6307     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6308         find_winsdk
6309         WINDOWS_SDK_HOME=$winsdktest
6311         # normalize if found
6312         if test -n "$WINDOWS_SDK_HOME"; then
6313             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6314             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6315         fi
6317         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6318     fi
6320     if test -n "$WINDOWS_SDK_HOME"; then
6321         # Remove a possible trailing backslash
6322         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6324         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6325              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6326              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6327             have_windows_sdk_headers=yes
6328         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6329              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6330              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6331             have_windows_sdk_headers=yes
6332         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6333              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6334              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6335             have_windows_sdk_headers=yes
6336         else
6337             have_windows_sdk_headers=no
6338         fi
6340         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6341             have_windows_sdk_libs=yes
6342         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6343             have_windows_sdk_libs=yes
6344         else
6345             have_windows_sdk_libs=no
6346         fi
6348         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6349             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6350 the  Windows SDK are installed.])
6351         fi
6352     fi
6354     if test -z "$WINDOWS_SDK_HOME"; then
6355         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6356     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6357         WINDOWS_SDK_VERSION=80
6358         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6359     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6360         WINDOWS_SDK_VERSION=81
6361         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6362     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6363         WINDOWS_SDK_VERSION=10
6364         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6365     else
6366         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6367     fi
6368     PathFormat "$WINDOWS_SDK_HOME"
6369     WINDOWS_SDK_HOME="$formatted_path"
6370     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6371     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6372         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6373         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6374             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6375         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6376             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6377         fi
6378     fi
6380     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6381     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6382     dnl but not in v8.0), so allow this to be overridden with a
6383     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6384     dnl and configuration error if no WiLangId.vbs is found would arguably be
6385     dnl better, but I do not know under which conditions exactly it is needed by
6386     dnl msiglobal.pm:
6387     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6388         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6389         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6390         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6391             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6392             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6393         fi
6394         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6395             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6396             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6397         fi
6398         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6399             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6400             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6401         fi
6402     fi
6403     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6404         if test -n "$with_package_format" -a "$with_package_format" != no; then
6405             for i in "$with_package_format"; do
6406                 if test "$i" = "msi"; then
6407                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6408                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6409                     fi
6410                 fi
6411             done
6412         fi
6413     fi
6415 AC_SUBST(WINDOWS_SDK_HOME)
6416 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6417 AC_SUBST(WINDOWS_SDK_VERSION)
6418 AC_SUBST(WINDOWS_SDK_WILANGID)
6420 if test "$build_os" = "cygwin"; then
6421     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6422     dnl dir, it also determines that dir's path w/o an arch segment if any,
6423     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6424     AC_MSG_CHECKING([for midl.exe])
6426     find_winsdk
6427     if test -n "$winsdkbinsubdir" \
6428         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6429     then
6430         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6431         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6432     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6433         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6434         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6435     elif test -f "$winsdktest/Bin/midl.exe"; then
6436         MIDL_PATH=$winsdktest/Bin
6437         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6438     fi
6439     if test ! -f "$MIDL_PATH/midl.exe"; then
6440         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6441     else
6442         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6443     fi
6445     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6446     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6448     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6449          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6450          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6451          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6452     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6453          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6454          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6455          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6456     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6457          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6458          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6459          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6460     else
6461         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6462     fi
6464     dnl Check csc.exe
6465     AC_MSG_CHECKING([for csc.exe])
6466     find_csc
6467     if test -f "$csctest/csc.exe"; then
6468         CSC_PATH="$csctest"
6469     fi
6470     if test ! -f "$CSC_PATH/csc.exe"; then
6471         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6472     else
6473         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6474     fi
6476     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6478     dnl Check al.exe
6479     AC_MSG_CHECKING([for al.exe])
6480     find_winsdk
6481     if test -n "$winsdkbinsubdir" \
6482         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6483     then
6484         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6485     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6486         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6487     elif test -f "$winsdktest/Bin/al.exe"; then
6488         AL_PATH="$winsdktest/Bin"
6489     fi
6491     if test -z "$AL_PATH"; then
6492         find_al
6493         if test -f "$altest/bin/al.exe"; then
6494             AL_PATH="$altest/bin"
6495         elif test -f "$altest/al.exe"; then
6496             AL_PATH="$altest"
6497         fi
6498     fi
6499     if test ! -f "$AL_PATH/al.exe"; then
6500         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6501     else
6502         AC_MSG_RESULT([$AL_PATH/al.exe])
6503     fi
6505     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6507     dnl Check mscoree.lib / .NET Framework dir
6508     AC_MSG_CHECKING(.NET Framework)
6509     find_dotnetsdk46
6510     PathFormat "$frametest"
6511     frametest="$formatted_path"
6512     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6513         DOTNET_FRAMEWORK_HOME="$frametest"
6514     else
6515         find_winsdk
6516         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6517             DOTNET_FRAMEWORK_HOME="$winsdktest"
6518         fi
6519     fi
6520     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
6521         AC_MSG_ERROR([mscoree.lib not found])
6522     fi
6523     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6525     PathFormat "$MIDL_PATH"
6526     MIDL_PATH="$formatted_path"
6528     PathFormat "$AL_PATH"
6529     AL_PATH="$formatted_path"
6531     PathFormat "$DOTNET_FRAMEWORK_HOME"
6532     DOTNET_FRAMEWORK_HOME="$formatted_path"
6534     PathFormat "$CSC_PATH"
6535     CSC_PATH="$formatted_path"
6538 dnl ===================================================================
6539 dnl Testing for C++ compiler and version...
6540 dnl ===================================================================
6542 if test "$_os" != "WINNT"; then
6543     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6544     save_CXXFLAGS=$CXXFLAGS
6545     AC_PROG_CXX
6546     CXXFLAGS=$save_CXXFLAGS
6547     if test -z "$CXX_BASE"; then
6548         CXX_BASE=`first_arg_basename "$CXX"`
6549     fi
6552 dnl check for GNU C++ compiler version
6553 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6554     AC_MSG_CHECKING([the GNU C++ compiler version])
6556     _gpp_version=`$CXX -dumpversion`
6557     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6559     if test "$_gpp_majmin" -lt "700"; then
6560         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6561     else
6562         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6563     fi
6565     dnl see https://code.google.com/p/android/issues/detail?id=41770
6566         glibcxx_threads=no
6567         AC_LANG_PUSH([C++])
6568         AC_REQUIRE_CPP
6569         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6570         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6571             #include <bits/c++config.h>]],[[
6572             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6573             && !defined(_GLIBCXX__PTHREADS) \
6574             && !defined(_GLIBCXX_HAS_GTHREADS)
6575             choke me
6576             #endif
6577         ]])],[AC_MSG_RESULT([yes])
6578         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6579         AC_LANG_POP([C++])
6580         if test $glibcxx_threads = yes; then
6581             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6582         fi
6584 AC_SUBST(BOOST_CXXFLAGS)
6587 # prefx CXX with ccache if needed
6589 if test "$CCACHE" != ""; then
6590     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6591     AC_LANG_PUSH([C++])
6592     save_CXXFLAGS=$CXXFLAGS
6593     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6594     dnl an empty program will do, we're checking the compiler flags
6595     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6596                       [use_ccache=yes], [use_ccache=no])
6597     if test $use_ccache = yes; then
6598         AC_MSG_RESULT([yes])
6599     else
6600         CXX="$CCACHE $CXX"
6601         CXX_BASE="ccache $CXX_BASE"
6602         AC_MSG_RESULT([no])
6603     fi
6604     CXXFLAGS=$save_CXXFLAGS
6605     AC_LANG_POP([C++])
6608 dnl ===================================================================
6609 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6610 dnl ===================================================================
6612 if test "$_os" != "WINNT"; then
6613     AC_PROG_CXXCPP
6615     dnl Check whether there's a C pre-processor.
6616     AC_PROG_CPP
6620 dnl ===================================================================
6621 dnl Find integral type sizes and alignments
6622 dnl ===================================================================
6624 if test "$_os" != "WINNT"; then
6626     AC_CHECK_SIZEOF(long)
6627     AC_CHECK_SIZEOF(short)
6628     AC_CHECK_SIZEOF(int)
6629     AC_CHECK_SIZEOF(long long)
6630     AC_CHECK_SIZEOF(double)
6631     AC_CHECK_SIZEOF(void*)
6633     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6634     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6635     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6636     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6637     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6639     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6640     m4_pattern_allow([AC_CHECK_ALIGNOF])
6641     m4_ifdef([AC_CHECK_ALIGNOF],
6642         [
6643             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6644             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6645             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6646             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6647         ],
6648         [
6649             case "$_os-$host_cpu" in
6650             Linux-i686)
6651                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6652                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6653                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6654                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6655                 ;;
6656             Linux-x86_64)
6657                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6658                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6659                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6660                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6661                 ;;
6662             *)
6663                 if test -z "$ac_cv_alignof_short" -o \
6664                         -z "$ac_cv_alignof_int" -o \
6665                         -z "$ac_cv_alignof_long" -o \
6666                         -z "$ac_cv_alignof_double"; then
6667                    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.])
6668                 fi
6669                 ;;
6670             esac
6671         ])
6673     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6674     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6675     if test $ac_cv_sizeof_long -eq 8; then
6676         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6677     elif test $ac_cv_sizeof_double -eq 8; then
6678         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6679     else
6680         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6681     fi
6683     dnl Check for large file support
6684     AC_SYS_LARGEFILE
6685     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6686         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6687     fi
6688     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6689         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6690     fi
6691 else
6692     # Hardcode for MSVC
6693     SAL_TYPES_SIZEOFSHORT=2
6694     SAL_TYPES_SIZEOFINT=4
6695     SAL_TYPES_SIZEOFLONG=4
6696     SAL_TYPES_SIZEOFLONGLONG=8
6697     if test $WIN_HOST_BITS -eq 32; then
6698         SAL_TYPES_SIZEOFPOINTER=4
6699     else
6700         SAL_TYPES_SIZEOFPOINTER=8
6701     fi
6702     SAL_TYPES_ALIGNMENT2=2
6703     SAL_TYPES_ALIGNMENT4=4
6704     SAL_TYPES_ALIGNMENT8=8
6705     LFS_CFLAGS=''
6707 AC_SUBST(LFS_CFLAGS)
6709 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6710 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6711 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6712 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6713 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6714 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6715 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6716 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6718 dnl ===================================================================
6719 dnl Check whether to enable runtime optimizations
6720 dnl ===================================================================
6721 ENABLE_RUNTIME_OPTIMIZATIONS=
6722 AC_MSG_CHECKING([whether to enable runtime optimizations])
6723 if test -z "$enable_runtime_optimizations"; then
6724     for i in $CC; do
6725         case $i in
6726         -fsanitize=*)
6727             enable_runtime_optimizations=no
6728             break
6729             ;;
6730         esac
6731     done
6733 if test "$enable_runtime_optimizations" != no; then
6734     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6735     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6736     AC_MSG_RESULT([yes])
6737 else
6738     AC_MSG_RESULT([no])
6740 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6742 dnl ===================================================================
6743 dnl Check if valgrind headers are available
6744 dnl ===================================================================
6745 ENABLE_VALGRIND=
6746 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6747     prev_cppflags=$CPPFLAGS
6748     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6749     # or where does it come from?
6750     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6751     AC_CHECK_HEADER([valgrind/valgrind.h],
6752         [ENABLE_VALGRIND=TRUE])
6753     CPPFLAGS=$prev_cppflags
6755 AC_SUBST([ENABLE_VALGRIND])
6756 if test -z "$ENABLE_VALGRIND"; then
6757     if test "$with_valgrind" = yes; then
6758         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6759     fi
6760     VALGRIND_CFLAGS=
6762 AC_SUBST([VALGRIND_CFLAGS])
6765 dnl ===================================================================
6766 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6767 dnl ===================================================================
6769 # We need at least the sys/sdt.h include header.
6770 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6771 if test "$SDT_H_FOUND" = "TRUE"; then
6772     # Found sys/sdt.h header, now make sure the c++ compiler works.
6773     # Old g++ versions had problems with probes in constructors/destructors.
6774     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6775     AC_LANG_PUSH([C++])
6776     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6777     #include <sys/sdt.h>
6778     class ProbeClass
6779     {
6780     private:
6781       int& ref;
6782       const char *name;
6784     public:
6785       ProbeClass(int& v, const char *n) : ref(v), name(n)
6786       {
6787         DTRACE_PROBE2(_test_, cons, name, ref);
6788       }
6790       void method(int min)
6791       {
6792         DTRACE_PROBE3(_test_, meth, name, ref, min);
6793         ref -= min;
6794       }
6796       ~ProbeClass()
6797       {
6798         DTRACE_PROBE2(_test_, dest, name, ref);
6799       }
6800     };
6801     ]],[[
6802     int i = 64;
6803     DTRACE_PROBE1(_test_, call, i);
6804     ProbeClass inst = ProbeClass(i, "call");
6805     inst.method(24);
6806     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6807           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6808     AC_LANG_POP([C++])
6810 AC_CONFIG_HEADERS([config_host/config_probes.h])
6812 dnl ===================================================================
6813 dnl GCC features
6814 dnl ===================================================================
6815 HAVE_GCC_STACK_CLASH_PROTECTION=
6816 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6817     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6818     save_CFLAGS=$CFLAGS
6819     CFLAGS="$CFLAGS -fstack-clash-protection"
6820     AC_LINK_IFELSE(
6821         [AC_LANG_PROGRAM(, [[return 0;]])],
6822         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6823         [AC_MSG_RESULT([no])])
6824     CFLAGS=$save_CFLAGS
6826     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6827     save_CFLAGS=$CFLAGS
6828     CFLAGS="$CFLAGS -Werror -mno-avx"
6829     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6830     CFLAGS=$save_CFLAGS
6831     if test "$HAVE_GCC_AVX" = "TRUE"; then
6832         AC_MSG_RESULT([yes])
6833     else
6834         AC_MSG_RESULT([no])
6835     fi
6837     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6838     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6839     int v = 0;
6840     if (__sync_add_and_fetch(&v, 1) != 1 ||
6841         __sync_sub_and_fetch(&v, 1) != 0)
6842         return 1;
6843     __sync_synchronize();
6844     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6845         v != 1)
6846         return 1;
6847     return 0;
6848 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6849     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6850         AC_MSG_RESULT([yes])
6851         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6852     else
6853         AC_MSG_RESULT([no])
6854     fi
6856     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6857     AC_LANG_PUSH([C++])
6858     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6859             #include <cstddef>
6860             #include <cxxabi.h>
6861             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6862         ])], [
6863             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6864             AC_MSG_RESULT([yes])
6865         ], [AC_MSG_RESULT([no])])
6866     AC_LANG_POP([C++])
6868     AC_MSG_CHECKING([whether $CXX_BASE defines __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::__class_type_info); }
6874         ])], [
6875             AC_DEFINE([HAVE_CXXABI_H_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 declares __cxa_allocate_exception in cxxabi.h])
6881     AC_LANG_PUSH([C++])
6882     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6883             #include <cxxabi.h>
6884             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6885         ])], [
6886             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6887             AC_MSG_RESULT([yes])
6888         ], [AC_MSG_RESULT([no])])
6889     AC_LANG_POP([C++])
6891     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6892     AC_LANG_PUSH([C++])
6893     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6894             #include <cstddef>
6895             #include <cxxabi.h>
6896             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6897         ])], [
6898             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[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_exception 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_exception); }
6909         ])], [
6910             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6911             AC_MSG_RESULT([yes])
6912         ], [AC_MSG_RESULT([no])])
6913     AC_LANG_POP([C++])
6915     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6916     AC_LANG_PUSH([C++])
6917     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6918             #include <cxxabi.h>
6919             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6920         ])], [
6921             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6922             AC_MSG_RESULT([yes])
6923         ], [AC_MSG_RESULT([no])])
6924     AC_LANG_POP([C++])
6926     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6927     AC_LANG_PUSH([C++])
6928     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6929             #include <cxxabi.h>
6930             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6931         ])], [
6932             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6933             AC_MSG_RESULT([yes])
6934         ], [AC_MSG_RESULT([no])])
6935     AC_LANG_POP([C++])
6937     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6938     AC_LANG_PUSH([C++])
6939     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6940             #include <cxxabi.h>
6941             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6942         ])], [
6943             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6944             AC_MSG_RESULT([yes])
6945         ], [AC_MSG_RESULT([no])])
6946     AC_LANG_POP([C++])
6948     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6949     AC_LANG_PUSH([C++])
6950     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6951             #include <cstddef>
6952             #include <cxxabi.h>
6953             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6954         ])], [
6955             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6956             AC_MSG_RESULT([yes])
6957         ], [AC_MSG_RESULT([no])])
6958     AC_LANG_POP([C++])
6960     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_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::__vmi_class_type_info); }
6966         ])], [
6967             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6968             AC_MSG_RESULT([yes])
6969         ], [AC_MSG_RESULT([no])])
6970     AC_LANG_POP([C++])
6973 AC_SUBST(HAVE_GCC_AVX)
6974 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6975 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6977 dnl ===================================================================
6978 dnl Identify the C++ library
6979 dnl ===================================================================
6981 AC_MSG_CHECKING([what the C++ library is])
6982 AC_LANG_PUSH([C++])
6983 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6984 #include <utility>
6985 #ifndef __GLIBCXX__
6986 foo bar
6987 #endif
6988 ]])],
6989     [CPP_LIBRARY=GLIBCXX
6990      cpp_library_name="GNU libstdc++"
6991     ],
6992     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6993 #include <utility>
6994 #ifndef _LIBCPP_VERSION
6995 foo bar
6996 #endif
6997 ]])],
6998     [CPP_LIBRARY=LIBCPP
6999      cpp_library_name="LLVM libc++"
7000      AC_DEFINE([HAVE_LIBCXX])
7001     ],
7002     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7003 #include <utility>
7004 #ifndef _MSC_VER
7005 foo bar
7006 #endif
7007 ]])],
7008     [CPP_LIBRARY=MSVCRT
7009      cpp_library_name="Microsoft"
7010     ],
7011     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7012 AC_MSG_RESULT([$cpp_library_name])
7013 AC_LANG_POP([C++])
7015 dnl ===================================================================
7016 dnl Check for gperf
7017 dnl ===================================================================
7018 AC_PATH_PROG(GPERF, gperf)
7019 if test -z "$GPERF"; then
7020     AC_MSG_ERROR([gperf not found but needed. Install it.])
7022 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7023     GPERF=`cygpath -m $GPERF`
7025 AC_MSG_CHECKING([whether gperf is new enough])
7026 my_gperf_ver1=$($GPERF --version | head -n 1)
7027 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7028 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7029 if test "$my_gperf_ver3" -ge 301; then
7030     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7031 else
7032     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7034 AC_SUBST(GPERF)
7036 dnl ===================================================================
7037 dnl Check for system libcmis
7038 dnl ===================================================================
7039 # libcmis requires curl and we can't build curl for iOS
7040 if test $_os != iOS; then
7041     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7042     ENABLE_LIBCMIS=TRUE
7043 else
7044     ENABLE_LIBCMIS=
7046 AC_SUBST(ENABLE_LIBCMIS)
7048 dnl ===================================================================
7049 dnl C++11
7050 dnl ===================================================================
7052 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7053 CXXFLAGS_CXX11=
7054 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7055     if test "$with_latest_c__" = yes; then
7056         CXXFLAGS_CXX11=-std:c++latest
7057     else
7058         CXXFLAGS_CXX11=-std:c++17
7059     fi
7060     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7061 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7062     my_flags='-std=c++17 -std=c++1z'
7063     if test "$with_latest_c__" = yes; then
7064         my_flags="-std=c++20 -std=c++2a $my_flags"
7065     fi
7066     for flag in $my_flags; do
7067         if test "$COM" = MSC; then
7068             flag="-Xclang $flag"
7069         fi
7070         save_CXXFLAGS=$CXXFLAGS
7071         CXXFLAGS="$CXXFLAGS $flag -Werror"
7072         if test "$SYSTEM_LIBCMIS" = TRUE; then
7073             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7074         fi
7075         AC_LANG_PUSH([C++])
7076         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7077             #include <algorithm>
7078             #include <functional>
7079             #include <vector>
7081             #if defined SYSTEM_LIBCMIS
7082             // See ucb/source/ucp/cmis/auth_provider.hxx:
7083             #if !defined __clang__
7084             #pragma GCC diagnostic push
7085             #pragma GCC diagnostic ignored "-Wdeprecated"
7086             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7087             #endif
7088             #include <libcmis/libcmis.hxx>
7089             #if !defined __clang__
7090             #pragma GCC diagnostic pop
7091             #endif
7092             #endif
7094             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7095                 std::sort(v.begin(), v.end(), fn);
7096             }
7097             ]])],[CXXFLAGS_CXX11=$flag])
7098         AC_LANG_POP([C++])
7099         CXXFLAGS=$save_CXXFLAGS
7100         if test -n "$CXXFLAGS_CXX11"; then
7101             break
7102         fi
7103     done
7105 if test -n "$CXXFLAGS_CXX11"; then
7106     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7107 else
7108     AC_MSG_ERROR(no)
7110 AC_SUBST(CXXFLAGS_CXX11)
7112 if test "$GCC" = "yes"; then
7113     save_CXXFLAGS=$CXXFLAGS
7114     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7115     CHECK_L_ATOMIC
7116     CXXFLAGS=$save_CXXFLAGS
7117     AC_SUBST(ATOMIC_LIB)
7120 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7121 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7122 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7123 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7124 dnl again towards 4.7.2:
7125 if test $CPP_LIBRARY = GLIBCXX; then
7126     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7127     AC_LANG_PUSH([C++])
7128     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7129 #include <list>
7130 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7131     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7132     //   GCC 4.7.0: 20120322
7133     //   GCC 4.7.1: 20120614
7134     // and using a range check is not possible as the mapping between
7135     // __GLIBCXX__ values and GCC versions is not monotonic
7136 /* ok */
7137 #else
7138 abi broken
7139 #endif
7140         ]])], [AC_MSG_RESULT(no, ok)],
7141         [AC_MSG_ERROR(yes)])
7142     AC_LANG_POP([C++])
7145 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7146 save_CXXFLAGS=$CXXFLAGS
7147 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7148 AC_LANG_PUSH([C++])
7150 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7151 #include <stddef.h>
7153 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7155 namespace
7157         struct b
7158         {
7159                 int i;
7160                 int j;
7161         };
7163 ]], [[
7164 struct a
7166         int i;
7167         int j;
7169 a thinga[]={{0,0}, {1,1}};
7170 b thingb[]={{0,0}, {1,1}};
7171 size_t i = sizeof(sal_n_array_size(thinga));
7172 size_t j = sizeof(sal_n_array_size(thingb));
7173 return !(i != 0 && j != 0);
7175     ], [ AC_MSG_RESULT(yes) ],
7176     [ AC_MSG_ERROR(no)])
7177 AC_LANG_POP([C++])
7178 CXXFLAGS=$save_CXXFLAGS
7180 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7181 if test "$GCC" = yes; then
7182     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7183     AC_LANG_PUSH([C++])
7184     save_CXXFLAGS=$CXXFLAGS
7185     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7186     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7187     CXXFLAGS=$save_CXXFLAGS
7188     AC_LANG_POP([C++])
7189     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7190         AC_MSG_RESULT([yes])
7191     else
7192         AC_MSG_RESULT([no])
7193     fi
7195 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7197 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7198 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7199 dnl from consteval constructor initializing const variable":
7200 AC_LANG_PUSH([C++])
7201 save_CXXFLAGS=$CXXFLAGS
7202 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7203 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7204         struct S {
7205             consteval S() { i = 1; }
7206             int i = 0;
7207         };
7208         S const s;
7209     ], [
7210         return (s.i == 1) ? 0 : 1;
7211     ])], [
7212         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7213         AC_MSG_RESULT([yes])
7214     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7215 CXXFLAGS=$save_CXXFLAGS
7216 AC_LANG_POP([C++])
7218 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7219 AC_LANG_PUSH([C++])
7220 save_CXXFLAGS=$CXXFLAGS
7221 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7222 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7223         #include <algorithm>
7224         #include <initializer_list>
7225         #include <vector>
7226         template<typename T> class S {
7227         private:
7228             std::vector<T> v_;
7229         public:
7230             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7231         };
7232         constinit S<int> s{3, 2, 1};
7233     ])], [
7234         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7235         AC_MSG_RESULT([yes])
7236     ], [AC_MSG_RESULT([no])])
7237 CXXFLAGS=$save_CXXFLAGS
7238 AC_LANG_POP([C++])
7240 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7241 AC_LANG_PUSH([C++])
7242 save_CXXFLAGS=$CXXFLAGS
7243 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7244 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7245         #include <span>
7246         #include <type_traits>
7247         // Don't check size_type directly, as it was called index_type before P1872R0:
7248         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7249     ])], [
7250         AC_DEFINE([HAVE_CPP_SPAN],[1])
7251         AC_MSG_RESULT([yes])
7252     ], [AC_MSG_RESULT([no])])
7253 CXXFLAGS=$save_CXXFLAGS
7254 AC_LANG_POP([C++])
7256 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7257 AC_LANG_PUSH([C++])
7258 save_CXXFLAGS=$CXXFLAGS
7259 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7260 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7261         struct S1 { S1(S1 &&); };
7262         struct S2: S1 {};
7263         S1 f(S2 s) { return s; }
7264     ])], [
7265         AC_DEFINE([HAVE_P1155R3],[1])
7266         AC_MSG_RESULT([yes])
7267     ], [AC_MSG_RESULT([no])])
7268 CXXFLAGS=$save_CXXFLAGS
7269 AC_LANG_POP([C++])
7271 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7272 dnl which is included in -Wextra anyway):
7273 HAVE_WDEPRECATED_COPY_DTOR=
7274 if test "$GCC" = yes; then
7275     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7276     AC_LANG_PUSH([C++])
7277     save_CXXFLAGS=$CXXFLAGS
7278     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7279     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7280             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7281             AC_MSG_RESULT([yes])
7282         ], [AC_MSG_RESULT([no])])
7283     CXXFLAGS=$save_CXXFLAGS
7284     AC_LANG_POP([C++])
7286 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7288 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7289 dnl uninitialized warning for code like
7291 dnl   OString f();
7292 dnl   boost::optional<OString> * g(bool b) {
7293 dnl       boost::optional<OString> o;
7294 dnl       if (b) o = f();
7295 dnl       return new boost::optional<OString>(o);
7296 dnl   }
7298 dnl (as is e.g. present, in a slightly more elaborate form, in
7299 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7300 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7301 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7302 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7303     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7304     AC_LANG_PUSH([C++])
7305     save_CXXFLAGS=$CXXFLAGS
7306     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7307     if test "$ENABLE_OPTIMIZED" = TRUE; then
7308         CXXFLAGS="$CXXFLAGS -O2"
7309     else
7310         CXXFLAGS="$CXXFLAGS -O0"
7311     fi
7312     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7313             #include <new>
7314             void f1(int);
7315             struct S1 {
7316                 ~S1() { f1(n); }
7317                 int n = 0;
7318             };
7319             struct S2 {
7320                 S2() {}
7321                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7322                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7323                 void set(S1 s) {
7324                     new (stg) S1(s);
7325                     init = true;
7326                 }
7327                 bool init = false;
7328                 char stg[sizeof (S1)];
7329             } ;
7330             S1 f2();
7331             S2 * f3(bool b) {
7332                 S2 o;
7333                 if (b) o.set(f2());
7334                 return new S2(o);
7335             }
7336         ]])], [AC_MSG_RESULT([no])], [
7337             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7338             AC_MSG_RESULT([yes])
7339         ])
7340     CXXFLAGS=$save_CXXFLAGS
7341     AC_LANG_POP([C++])
7343 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7345 dnl ===================================================================
7346 dnl CPU Intrinsics support - SSE, AVX
7347 dnl ===================================================================
7349 CXXFLAGS_INTRINSICS_SSE2=
7350 CXXFLAGS_INTRINSICS_SSSE3=
7351 CXXFLAGS_INTRINSICS_SSE41=
7352 CXXFLAGS_INTRINSICS_SSE42=
7353 CXXFLAGS_INTRINSICS_AVX=
7354 CXXFLAGS_INTRINSICS_AVX2=
7355 CXXFLAGS_INTRINSICS_AVX512=
7356 CXXFLAGS_INTRINSICS_F16C=
7357 CXXFLAGS_INTRINSICS_FMA=
7359 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7360     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7361     flag_sse2=-msse2
7362     flag_ssse3=-mssse3
7363     flag_sse41=-msse4.1
7364     flag_sse42=-msse4.2
7365     flag_avx=-mavx
7366     flag_avx2=-mavx2
7367     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7368     flag_f16c=-mf16c
7369     flag_fma=-mfma
7370 else
7371     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7372     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7373     # SSE2 seems to be SSE2+.
7374     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7375     # is not empty (and can be tested in gbuild).
7376     flag_sse2=-arch:SSE2
7377     flag_ssse3=-arch:SSE2
7378     flag_sse41=-arch:SSE2
7379     flag_sse42=-arch:SSE2
7380     flag_avx=-arch:AVX
7381     flag_avx2=-arch:AVX2
7382     flag_avx512=-arch:AVX512
7383     # These are part of -arch:AVX2
7384     flag_f16c=-arch:AVX2
7385     flag_fma=-arch:AVX2
7388 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7389 AC_LANG_PUSH([C++])
7390 save_CXXFLAGS=$CXXFLAGS
7391 CXXFLAGS="$CXXFLAGS $flag_sse2"
7392 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393     #include <emmintrin.h>
7394     int main () {
7395         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7396         c = _mm_xor_si128 (a, b);
7397         return 0;
7398     }
7399     ])],
7400     [can_compile_sse2=yes],
7401     [can_compile_sse2=no])
7402 AC_LANG_POP([C++])
7403 CXXFLAGS=$save_CXXFLAGS
7404 AC_MSG_RESULT([${can_compile_sse2}])
7405 if test "${can_compile_sse2}" = "yes" ; then
7406     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7409 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7410 AC_LANG_PUSH([C++])
7411 save_CXXFLAGS=$CXXFLAGS
7412 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7414     #include <tmmintrin.h>
7415     int main () {
7416         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7417         c = _mm_maddubs_epi16 (a, b);
7418         return 0;
7419     }
7420     ])],
7421     [can_compile_ssse3=yes],
7422     [can_compile_ssse3=no])
7423 AC_LANG_POP([C++])
7424 CXXFLAGS=$save_CXXFLAGS
7425 AC_MSG_RESULT([${can_compile_ssse3}])
7426 if test "${can_compile_ssse3}" = "yes" ; then
7427     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7430 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7431 AC_LANG_PUSH([C++])
7432 save_CXXFLAGS=$CXXFLAGS
7433 CXXFLAGS="$CXXFLAGS $flag_sse41"
7434 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7435     #include <smmintrin.h>
7436     int main () {
7437         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7438         c = _mm_cmpeq_epi64 (a, b);
7439         return 0;
7440     }
7441     ])],
7442     [can_compile_sse41=yes],
7443     [can_compile_sse41=no])
7444 AC_LANG_POP([C++])
7445 CXXFLAGS=$save_CXXFLAGS
7446 AC_MSG_RESULT([${can_compile_sse41}])
7447 if test "${can_compile_sse41}" = "yes" ; then
7448     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7451 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7452 AC_LANG_PUSH([C++])
7453 save_CXXFLAGS=$CXXFLAGS
7454 CXXFLAGS="$CXXFLAGS $flag_sse42"
7455 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7456     #include <nmmintrin.h>
7457     int main () {
7458         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7459         c = _mm_cmpgt_epi64 (a, b);
7460         return 0;
7461     }
7462     ])],
7463     [can_compile_sse42=yes],
7464     [can_compile_sse42=no])
7465 AC_LANG_POP([C++])
7466 CXXFLAGS=$save_CXXFLAGS
7467 AC_MSG_RESULT([${can_compile_sse42}])
7468 if test "${can_compile_sse42}" = "yes" ; then
7469     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7472 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7473 AC_LANG_PUSH([C++])
7474 save_CXXFLAGS=$CXXFLAGS
7475 CXXFLAGS="$CXXFLAGS $flag_avx"
7476 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7477     #include <immintrin.h>
7478     int main () {
7479         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7480         c = _mm256_xor_ps(a, b);
7481         return 0;
7482     }
7483     ])],
7484     [can_compile_avx=yes],
7485     [can_compile_avx=no])
7486 AC_LANG_POP([C++])
7487 CXXFLAGS=$save_CXXFLAGS
7488 AC_MSG_RESULT([${can_compile_avx}])
7489 if test "${can_compile_avx}" = "yes" ; then
7490     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7493 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7494 AC_LANG_PUSH([C++])
7495 save_CXXFLAGS=$CXXFLAGS
7496 CXXFLAGS="$CXXFLAGS $flag_avx2"
7497 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7498     #include <immintrin.h>
7499     int main () {
7500         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7501         c = _mm256_maddubs_epi16(a, b);
7502         return 0;
7503     }
7504     ])],
7505     [can_compile_avx2=yes],
7506     [can_compile_avx2=no])
7507 AC_LANG_POP([C++])
7508 CXXFLAGS=$save_CXXFLAGS
7509 AC_MSG_RESULT([${can_compile_avx2}])
7510 if test "${can_compile_avx2}" = "yes" ; then
7511     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7514 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7515 AC_LANG_PUSH([C++])
7516 save_CXXFLAGS=$CXXFLAGS
7517 CXXFLAGS="$CXXFLAGS $flag_avx512"
7518 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7519     #include <immintrin.h>
7520     int main () {
7521         __m512i a = _mm512_loadu_si512(0);
7522         return 0;
7523     }
7524     ])],
7525     [can_compile_avx512=yes],
7526     [can_compile_avx512=no])
7527 AC_LANG_POP([C++])
7528 CXXFLAGS=$save_CXXFLAGS
7529 AC_MSG_RESULT([${can_compile_avx512}])
7530 if test "${can_compile_avx512}" = "yes" ; then
7531     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7534 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7535 AC_LANG_PUSH([C++])
7536 save_CXXFLAGS=$CXXFLAGS
7537 CXXFLAGS="$CXXFLAGS $flag_f16c"
7538 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7539     #include <immintrin.h>
7540     int main () {
7541         __m128i a = _mm_set1_epi32 (0);
7542         __m128 c;
7543         c = _mm_cvtph_ps(a);
7544         return 0;
7545     }
7546     ])],
7547     [can_compile_f16c=yes],
7548     [can_compile_f16c=no])
7549 AC_LANG_POP([C++])
7550 CXXFLAGS=$save_CXXFLAGS
7551 AC_MSG_RESULT([${can_compile_f16c}])
7552 if test "${can_compile_f16c}" = "yes" ; then
7553     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7556 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7557 AC_LANG_PUSH([C++])
7558 save_CXXFLAGS=$CXXFLAGS
7559 CXXFLAGS="$CXXFLAGS $flag_fma"
7560 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7561     #include <immintrin.h>
7562     int main () {
7563         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7564         d = _mm256_fmadd_ps(a, b, c);
7565         return 0;
7566     }
7567     ])],
7568     [can_compile_fma=yes],
7569     [can_compile_fma=no])
7570 AC_LANG_POP([C++])
7571 CXXFLAGS=$save_CXXFLAGS
7572 AC_MSG_RESULT([${can_compile_fma}])
7573 if test "${can_compile_fma}" = "yes" ; then
7574     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7577 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7578 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7579 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7580 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7581 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7582 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7583 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7584 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7585 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7587 dnl ===================================================================
7588 dnl system stl sanity tests
7589 dnl ===================================================================
7590 if test "$_os" != "WINNT"; then
7592     AC_LANG_PUSH([C++])
7594     save_CPPFLAGS="$CPPFLAGS"
7595     if test -n "$MACOSX_SDK_PATH"; then
7596         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7597     fi
7599     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7600     # only.
7601     if test "$CPP_LIBRARY" = GLIBCXX; then
7602         dnl gcc#19664, gcc#22482, rhbz#162935
7603         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7604         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7605         AC_MSG_RESULT([$stlvisok])
7606         if test "$stlvisok" = "no"; then
7607             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7608         fi
7609     fi
7611     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7612     # when we don't make any dynamic libraries?
7613     if test "$DISABLE_DYNLOADING" = ""; then
7614         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7615         cat > conftestlib1.cc <<_ACEOF
7616 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7617 struct S2: S1<int> { virtual ~S2(); };
7618 S2::~S2() {}
7619 _ACEOF
7620         cat > conftestlib2.cc <<_ACEOF
7621 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7622 struct S2: S1<int> { virtual ~S2(); };
7623 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7624 _ACEOF
7625         gccvisinlineshiddenok=yes
7626         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7627             gccvisinlineshiddenok=no
7628         else
7629             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7630             dnl known to not work with -z defs (unsetting which makes the test
7631             dnl moot, though):
7632             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7633             if test "$COM_IS_CLANG" = TRUE; then
7634                 for i in $CXX $CXXFLAGS; do
7635                     case $i in
7636                     -fsanitize=*)
7637                         my_linkflagsnoundefs=
7638                         break
7639                         ;;
7640                     esac
7641                 done
7642             fi
7643             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7644                 gccvisinlineshiddenok=no
7645             fi
7646         fi
7648         rm -fr libconftest*
7649         AC_MSG_RESULT([$gccvisinlineshiddenok])
7650         if test "$gccvisinlineshiddenok" = "no"; then
7651             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7652         fi
7653     fi
7655    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7656     cat >visibility.cxx <<_ACEOF
7657 #pragma GCC visibility push(hidden)
7658 struct __attribute__ ((visibility ("default"))) TestStruct {
7659   static void Init();
7661 __attribute__ ((visibility ("default"))) void TestFunc() {
7662   TestStruct::Init();
7664 _ACEOF
7665     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7666         gccvisbroken=yes
7667     else
7668         case "$host_cpu" in
7669         i?86|x86_64)
7670             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7671                 gccvisbroken=no
7672             else
7673                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7674                     gccvisbroken=no
7675                 else
7676                     gccvisbroken=yes
7677                 fi
7678             fi
7679             ;;
7680         *)
7681             gccvisbroken=no
7682             ;;
7683         esac
7684     fi
7685     rm -f visibility.s visibility.cxx
7687     AC_MSG_RESULT([$gccvisbroken])
7688     if test "$gccvisbroken" = "yes"; then
7689         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7690     fi
7692     CPPFLAGS="$save_CPPFLAGS"
7694     AC_LANG_POP([C++])
7697 dnl ===================================================================
7698 dnl  Clang++ tests
7699 dnl ===================================================================
7701 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7702 if test "$GCC" = "yes"; then
7703     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7704     AC_LANG_PUSH([C++])
7705     save_CXXFLAGS=$CXXFLAGS
7706     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7707     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7708     CXXFLAGS=$save_CXXFLAGS
7709     AC_LANG_POP([C++])
7710     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7711         AC_MSG_RESULT([yes])
7712     else
7713         AC_MSG_RESULT([no])
7714     fi
7716 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7718 dnl ===================================================================
7719 dnl Compiler plugins
7720 dnl ===================================================================
7722 COMPILER_PLUGINS=
7723 # currently only Clang
7725 if test "$COM_IS_CLANG" != "TRUE"; then
7726     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7727         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7728         enable_compiler_plugins=no
7729     fi
7732 COMPILER_PLUGINS_COM_IS_CLANG=
7733 if test "$COM_IS_CLANG" = "TRUE"; then
7734     if test -n "$enable_compiler_plugins"; then
7735         compiler_plugins="$enable_compiler_plugins"
7736     elif test -n "$ENABLE_DBGUTIL"; then
7737         compiler_plugins=test
7738     else
7739         compiler_plugins=no
7740     fi
7741     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7742         if test "$CLANGVER" -lt 50002; then
7743             if test "$compiler_plugins" = yes; then
7744                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7745             else
7746                 compiler_plugins=no
7747             fi
7748         fi
7749     fi
7750     if test "$compiler_plugins" != "no"; then
7751         dnl The prefix where Clang resides, override to where Clang resides if
7752         dnl using a source build:
7753         if test -z "$CLANGDIR"; then
7754             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7755         fi
7756         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7757         if test -z "$COMPILER_PLUGINS_CXX"; then
7758             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7759         fi
7760         clangbindir=$CLANGDIR/bin
7761         if test "$build_os" = "cygwin"; then
7762             clangbindir=$(cygpath -u "$clangbindir")
7763         fi
7764         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7765         if test -n "$LLVM_CONFIG"; then
7766             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7767             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7768             if test -z "$CLANGLIBDIR"; then
7769                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7770             fi
7771             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7772             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7773             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7774             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7775                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7776             fi
7777             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7778             clangobjdir=$($LLVM_CONFIG --obj-root)
7779             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7780                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7781             fi
7782         fi
7783         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7784         AC_LANG_PUSH([C++])
7785         save_CXX=$CXX
7786         save_CXXCPP=$CXXCPP
7787         save_CPPFLAGS=$CPPFLAGS
7788         save_CXXFLAGS=$CXXFLAGS
7789         save_LDFLAGS=$LDFLAGS
7790         save_LIBS=$LIBS
7791         CXX=$COMPILER_PLUGINS_CXX
7792         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7793         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7794         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7795         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7796             [COMPILER_PLUGINS=TRUE],
7797             [
7798             if test "$compiler_plugins" = "yes"; then
7799                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7800             else
7801                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7802                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7803             fi
7804             ])
7805         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7806         dnl comment in compilerplugins/Makefile-clang.mk:
7807         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7808             LDFLAGS=""
7809             AC_MSG_CHECKING([for clang libraries to use])
7810             if test -z "$CLANGTOOLLIBS"; then
7811                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7812  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7813                 AC_LINK_IFELSE([
7814                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7815                         [[ clang::FullSourceLoc().dump(); ]])
7816                 ],[CLANGTOOLLIBS="$LIBS"],[])
7817             fi
7818             if test -z "$CLANGTOOLLIBS"; then
7819                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7820                 AC_LINK_IFELSE([
7821                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7822                         [[ clang::FullSourceLoc().dump(); ]])
7823                 ],[CLANGTOOLLIBS="$LIBS"],[])
7824             fi
7825             AC_MSG_RESULT([$CLANGTOOLLIBS])
7826             if test -z "$CLANGTOOLLIBS"; then
7827                 if test "$compiler_plugins" = "yes"; then
7828                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7829                 else
7830                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7831                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7832                 fi
7833                 COMPILER_PLUGINS=
7834             fi
7835             if test -n "$COMPILER_PLUGINS"; then
7836                 if test -z "$CLANGSYSINCLUDE"; then
7837                     if test -n "$LLVM_CONFIG"; then
7838                         # Path to the clang system headers (no idea if there's a better way to get it).
7839                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7840                     fi
7841                 fi
7842             fi
7843         fi
7844         CXX=$save_CXX
7845         CXXCPP=$save_CXXCPP
7846         CPPFLAGS=$save_CPPFLAGS
7847         CXXFLAGS=$save_CXXFLAGS
7848         LDFLAGS=$save_LDFLAGS
7849         LIBS="$save_LIBS"
7850         AC_LANG_POP([C++])
7852         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7853         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7854             #ifndef __clang__
7855             you lose
7856             #endif
7857             int foo=42;
7858             ]])],
7859             [AC_MSG_RESULT([yes])
7860              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7861             [AC_MSG_RESULT([no])])
7862         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7863     fi
7864 else
7865     if test "$enable_compiler_plugins" = "yes"; then
7866         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7867     fi
7869 COMPILER_PLUGINS_ANALYZER_PCH=
7870 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7871     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7873 AC_SUBST(COMPILER_PLUGINS)
7874 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7875 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7876 AC_SUBST(COMPILER_PLUGINS_CXX)
7877 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7878 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7879 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7880 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7881 AC_SUBST(CLANGDIR)
7882 AC_SUBST(CLANGLIBDIR)
7883 AC_SUBST(CLANGTOOLLIBS)
7884 AC_SUBST(CLANGSYSINCLUDE)
7886 # Plugin to help linker.
7887 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7888 # This makes --enable-lto build with clang work.
7889 AC_SUBST(LD_PLUGIN)
7891 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7892 AC_SUBST(HAVE_POSIX_FALLOCATE)
7894 JITC_PROCESSOR_TYPE=""
7895 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7896     # IBMs JDK needs this...
7897     JITC_PROCESSOR_TYPE=6
7898     export JITC_PROCESSOR_TYPE
7900 AC_SUBST([JITC_PROCESSOR_TYPE])
7902 # Misc Windows Stuff
7903 AC_ARG_WITH(ucrt-dir,
7904     AS_HELP_STRING([--with-ucrt-dir],
7905         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7906         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7907         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7908             Windows6.1-KB2999226-x64.msu
7909             Windows6.1-KB2999226-x86.msu
7910             Windows8.1-KB2999226-x64.msu
7911             Windows8.1-KB2999226-x86.msu
7912             Windows8-RT-KB2999226-x64.msu
7913             Windows8-RT-KB2999226-x86.msu
7914         A zip archive including those files is available from Microsoft site:
7915         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7918 UCRT_REDISTDIR="$with_ucrt_dir"
7919 if test $_os = "WINNT"; then
7920     find_msvc_x64_dlls
7921     for i in $PKGFORMAT; do
7922         if test "$i" = msi; then
7923             find_msms
7924             break
7925         fi
7926     done
7927     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7928     MSVC_DLLS="$msvcdlls"
7929     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7930     # MSVC 15.3 changed it to VC141
7931     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7932         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7933     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7934         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7935     else
7936         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7937     fi
7939     if test "$UCRT_REDISTDIR" = "no"; then
7940         dnl explicitly disabled
7941         UCRT_REDISTDIR=""
7942     else
7943         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7944                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7945                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7946                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7947                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7948                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7949             UCRT_REDISTDIR=""
7950             if test -n "$PKGFORMAT"; then
7951                for i in $PKGFORMAT; do
7952                    case "$i" in
7953                    msi)
7954                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7955                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7956                        ;;
7957                    esac
7958                done
7959             fi
7960         fi
7961     fi
7964 AC_SUBST(UCRT_REDISTDIR)
7965 AC_SUBST(MSVC_DLL_PATH)
7966 AC_SUBST(MSVC_DLLS)
7967 AC_SUBST(MSM_PATH)
7969 dnl ===================================================================
7970 dnl Checks for Java
7971 dnl ===================================================================
7972 if test "$ENABLE_JAVA" != ""; then
7974     # Windows-specific tests
7975     if test "$build_os" = "cygwin"; then
7976         if test -z "$with_jdk_home"; then
7977             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7978             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7979             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7980             if test -n "$regvalue"; then
7981                 ver=$regvalue
7982                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7983                 reg_jdk_home=$regvalue
7984             fi
7986             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7987                 with_jdk_home="$reg_jdk_home"
7988                 howfound="found automatically"
7989             else
7990                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7991             fi
7992         else
7993             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7994             howfound="you passed"
7995         fi
7996     fi
7998     # 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.
7999     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8000     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8001         with_jdk_home=`/usr/libexec/java_home`
8002     fi
8004     JAVA_HOME=; export JAVA_HOME
8005     if test -z "$with_jdk_home"; then
8006         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8007     else
8008         _java_path="$with_jdk_home/bin/$with_java"
8009         dnl Check if there is a Java interpreter at all.
8010         if test -x "$_java_path"; then
8011             JAVAINTERPRETER=$_java_path
8012         else
8013             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8014         fi
8015     fi
8017     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8018     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8019     dnl loaded by java to run JunitTests:
8020     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8021         shortjdkhome=`cygpath -d "$with_jdk_home"`
8022         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
8023             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8024             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8025         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
8026             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8027             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8028         fi
8030         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8031             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8032         fi
8033         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8034     elif test "$cross_compiling" != "yes"; then
8035         case $CPUNAME in
8036             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8037                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8038                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8039                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8040                 fi
8041                 ;;
8042             *) # assumption: everything else 32-bit
8043                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8044                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8045                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8046                 fi
8047                 ;;
8048         esac
8049     fi
8052 dnl ===================================================================
8053 dnl Checks for JDK.
8054 dnl ===================================================================
8056 # Whether all the complexity here actually is needed any more or not, no idea.
8058 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8059     _gij_longver=0
8060     AC_MSG_CHECKING([the installed JDK])
8061     if test -n "$JAVAINTERPRETER"; then
8062         dnl java -version sends output to stderr!
8063         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8064             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8065         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8066             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8067         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8068             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8069         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8070             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8071         else
8072             JDK=sun
8074             dnl Sun JDK specific tests
8075             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8076             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8078             if test "$_jdk_ver" -lt 10900; then
8079                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8080             fi
8081             if test "$_jdk_ver" -gt 10900; then
8082                 JAVA_CLASSPATH_NOT_SET=TRUE
8083             fi
8085             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8086             if test "$_os" = "WINNT"; then
8087                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8088             fi
8089             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8091             # set to limit VM usage for JunitTests
8092             JAVAIFLAGS=-Xmx64M
8093             # set to limit VM usage for javac
8094             JAVACFLAGS=-J-Xmx128M
8095         fi
8096     else
8097         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8098     fi
8099 else
8100     if test -z "$ENABLE_JAVA"; then
8101         dnl Java disabled
8102         JAVA_HOME=
8103         export JAVA_HOME
8104     elif test "$cross_compiling" = "yes"; then
8105         # Just assume compatibility of build and host JDK
8106         JDK=$JDK_FOR_BUILD
8107         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8108     fi
8111 dnl ===================================================================
8112 dnl Checks for javac
8113 dnl ===================================================================
8114 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8115     javacompiler="javac"
8116     : ${JAVA_SOURCE_VER=8}
8117     : ${JAVA_TARGET_VER=8}
8118     if test -z "$with_jdk_home"; then
8119         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8120     else
8121         _javac_path="$with_jdk_home/bin/$javacompiler"
8122         dnl Check if there is a Java compiler at all.
8123         if test -x "$_javac_path"; then
8124             JAVACOMPILER=$_javac_path
8125         fi
8126     fi
8127     if test -z "$JAVACOMPILER"; then
8128         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8129     fi
8130     if test "$build_os" = "cygwin"; then
8131         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8132             JAVACOMPILER="${JAVACOMPILER}.exe"
8133         fi
8134         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8135     fi
8138 dnl ===================================================================
8139 dnl Checks for javadoc
8140 dnl ===================================================================
8141 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8142     if test -z "$with_jdk_home"; then
8143         AC_PATH_PROG(JAVADOC, javadoc)
8144     else
8145         _javadoc_path="$with_jdk_home/bin/javadoc"
8146         dnl Check if there is a javadoc at all.
8147         if test -x "$_javadoc_path"; then
8148             JAVADOC=$_javadoc_path
8149         else
8150             AC_PATH_PROG(JAVADOC, javadoc)
8151         fi
8152     fi
8153     if test -z "$JAVADOC"; then
8154         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8155     fi
8156     if test "$build_os" = "cygwin"; then
8157         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8158             JAVADOC="${JAVADOC}.exe"
8159         fi
8160         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8161     fi
8163     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8164     JAVADOCISGJDOC="yes"
8165     fi
8167 AC_SUBST(JAVADOC)
8168 AC_SUBST(JAVADOCISGJDOC)
8170 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8171     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8172     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8173         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8174            # try to recover first by looking whether we have an alternative
8175            # system as in Debian or newer SuSEs where following /usr/bin/javac
8176            # over /etc/alternatives/javac leads to the right bindir where we
8177            # just need to strip a bit away to get a valid JAVA_HOME
8178            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8179         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8180             # maybe only one level of symlink (e.g. on Mac)
8181             JAVA_HOME=$(readlink $JAVACOMPILER)
8182             if test "$(dirname $JAVA_HOME)" = "."; then
8183                 # we've got no path to trim back
8184                 JAVA_HOME=""
8185             fi
8186         else
8187             # else warn
8188             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8189             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8190             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8191             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8192         fi
8193         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8194         if test "$JAVA_HOME" != "/usr"; then
8195             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8196                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8197                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8198                 dnl Tiger already returns a JDK path...
8199                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8200             else
8201                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8202                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8203                 dnl that checks which version to run
8204                 if test -f "$JAVA_HOME"; then
8205                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8206                 fi
8207             fi
8208         fi
8209     fi
8210     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8212     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8213     if test -z "$JAVA_HOME"; then
8214         if test "x$with_jdk_home" = "x"; then
8215             cat > findhome.java <<_ACEOF
8216 [import java.io.File;
8218 class findhome
8220     public static void main(String args[])
8221     {
8222         String jrelocation = System.getProperty("java.home");
8223         File jre = new File(jrelocation);
8224         System.out.println(jre.getParent());
8225     }
8227 _ACEOF
8228             AC_MSG_CHECKING([if javac works])
8229             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8230             AC_TRY_EVAL(javac_cmd)
8231             if test $? = 0 -a -f ./findhome.class; then
8232                 AC_MSG_RESULT([javac works])
8233             else
8234                 echo "configure: javac test failed" >&5
8235                 cat findhome.java >&5
8236                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8237             fi
8238             AC_MSG_CHECKING([if gij knows its java.home])
8239             JAVA_HOME=`$JAVAINTERPRETER findhome`
8240             if test $? = 0 -a "$JAVA_HOME" != ""; then
8241                 AC_MSG_RESULT([$JAVA_HOME])
8242             else
8243                 echo "configure: java test failed" >&5
8244                 cat findhome.java >&5
8245                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8246             fi
8247             # clean-up after ourselves
8248             rm -f ./findhome.java ./findhome.class
8249         else
8250             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8251         fi
8252     fi
8254     # now check if $JAVA_HOME is really valid
8255     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8256         case "${JAVA_HOME}" in
8257             /Library/Java/JavaVirtualMachines/*)
8258                 ;;
8259             *)
8260                 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8261                 ;;
8262         esac
8263         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8264             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8265             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8266             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8267             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8268             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8269             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8270         fi
8271     fi
8272     PathFormat "$JAVA_HOME"
8273     JAVA_HOME="$formatted_path"
8276 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8277     "$_os" != Darwin
8278 then
8279     AC_MSG_CHECKING([for JAWT lib])
8280     if test "$_os" = WINNT; then
8281         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8282         JAWTLIB=jawt.lib
8283     else
8284         case "$host_cpu" in
8285         arm*)
8286             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8287             JAVA_ARCH=$my_java_arch
8288             ;;
8289         i*86)
8290             my_java_arch=i386
8291             ;;
8292         m68k)
8293             my_java_arch=m68k
8294             ;;
8295         powerpc)
8296             my_java_arch=ppc
8297             ;;
8298         powerpc64)
8299             my_java_arch=ppc64
8300             ;;
8301         powerpc64le)
8302             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8303             JAVA_ARCH=$my_java_arch
8304             ;;
8305         sparc64)
8306             my_java_arch=sparcv9
8307             ;;
8308         x86_64)
8309             my_java_arch=amd64
8310             ;;
8311         *)
8312             my_java_arch=$host_cpu
8313             ;;
8314         esac
8315         # This is where JDK9 puts the library
8316         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8317             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8318         else
8319             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8320         fi
8321         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8322     fi
8323     AC_MSG_RESULT([$JAWTLIB])
8325 AC_SUBST(JAWTLIB)
8327 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8328     case "$host_os" in
8330     aix*)
8331         JAVAINC="-I$JAVA_HOME/include"
8332         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8333         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8334         ;;
8336     cygwin*|wsl*)
8337         JAVAINC="-I$JAVA_HOME/include/win32"
8338         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8339         ;;
8341     darwin*)
8342         if test -d "$JAVA_HOME/include/darwin"; then
8343             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8344         else
8345             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8346         fi
8347         ;;
8349     dragonfly*)
8350         JAVAINC="-I$JAVA_HOME/include"
8351         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8352         ;;
8354     freebsd*)
8355         JAVAINC="-I$JAVA_HOME/include"
8356         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8357         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8358         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8359         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8360         ;;
8362     k*bsd*-gnu*)
8363         JAVAINC="-I$JAVA_HOME/include"
8364         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8365         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8366         ;;
8368     linux-gnu*)
8369         JAVAINC="-I$JAVA_HOME/include"
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     *netbsd*)
8375         JAVAINC="-I$JAVA_HOME/include"
8376         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8377         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8378        ;;
8380     openbsd*)
8381         JAVAINC="-I$JAVA_HOME/include"
8382         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8383         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8384         ;;
8386     solaris*)
8387         JAVAINC="-I$JAVA_HOME/include"
8388         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8389         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8390         ;;
8391     esac
8393 SOLARINC="$SOLARINC $JAVAINC"
8395 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8396     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8397     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8398     JDK_FOR_BUILD=$JDK
8401 AC_SUBST(JAVACFLAGS)
8402 AC_SUBST(JAVACOMPILER)
8403 AC_SUBST(JAVAINTERPRETER)
8404 AC_SUBST(JAVAIFLAGS)
8405 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8406 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8407 AC_SUBST(JAVA_HOME)
8408 AC_SUBST(JAVA_HOME_FOR_BUILD)
8409 AC_SUBST(JDK)
8410 AC_SUBST(JDK_FOR_BUILD)
8411 AC_SUBST(JAVA_SOURCE_VER)
8412 AC_SUBST(JAVA_TARGET_VER)
8415 dnl ===================================================================
8416 dnl Export file validation
8417 dnl ===================================================================
8418 AC_MSG_CHECKING([whether to enable export file validation])
8419 if test "$with_export_validation" != "no"; then
8420     if test -z "$ENABLE_JAVA"; then
8421         if test "$with_export_validation" = "yes"; then
8422             AC_MSG_ERROR([requested, but Java is disabled])
8423         else
8424             AC_MSG_RESULT([no, as Java is disabled])
8425         fi
8426     elif ! test -d "${SRC_ROOT}/schema"; then
8427         if test "$with_export_validation" = "yes"; then
8428             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8429         else
8430             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8431         fi
8432     else
8433         AC_MSG_RESULT([yes])
8434         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8436         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8437         if test -z "$ODFVALIDATOR"; then
8438             # remember to download the ODF toolkit with validator later
8439             AC_MSG_NOTICE([no odfvalidator found, will download it])
8440             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8441             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8443             # and fetch name of odfvalidator jar name from download.lst
8444             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8445             AC_SUBST(ODFVALIDATOR_JAR)
8447             if test -z "$ODFVALIDATOR_JAR"; then
8448                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8449             fi
8450         fi
8451         if test "$build_os" = "cygwin"; then
8452             # In case of Cygwin it will be executed from Windows,
8453             # so we need to run bash and absolute path to validator
8454             # so instead of "odfvalidator" it will be
8455             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8456             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8457         else
8458             ODFVALIDATOR="sh $ODFVALIDATOR"
8459         fi
8460         AC_SUBST(ODFVALIDATOR)
8463         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8464         if test -z "$OFFICEOTRON"; then
8465             # remember to download the officeotron with validator later
8466             AC_MSG_NOTICE([no officeotron found, will download it])
8467             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8468             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8470             # and fetch name of officeotron jar name from download.lst
8471             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8472             AC_SUBST(OFFICEOTRON_JAR)
8474             if test -z "$OFFICEOTRON_JAR"; then
8475                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8476             fi
8477         else
8478             # check version of existing officeotron
8479             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8480             if test 0"$OFFICEOTRON_VER" -lt 704; then
8481                 AC_MSG_ERROR([officeotron too old])
8482             fi
8483         fi
8484         if test "$build_os" = "cygwin"; then
8485             # In case of Cygwin it will be executed from Windows,
8486             # so we need to run bash and absolute path to validator
8487             # so instead of "odfvalidator" it will be
8488             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8489             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8490         else
8491             OFFICEOTRON="sh $OFFICEOTRON"
8492         fi
8493     fi
8494     AC_SUBST(OFFICEOTRON)
8495 else
8496     AC_MSG_RESULT([no])
8499 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8500 if test "$with_bffvalidator" != "no"; then
8501     AC_DEFINE(HAVE_BFFVALIDATOR)
8503     if test "$with_export_validation" = "no"; then
8504         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8505     fi
8507     if test "$with_bffvalidator" = "yes"; then
8508         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8509     else
8510         BFFVALIDATOR="$with_bffvalidator"
8511     fi
8513     if test "$build_os" = "cygwin"; then
8514         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8515             AC_MSG_RESULT($BFFVALIDATOR)
8516         else
8517             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8518         fi
8519     elif test -n "$BFFVALIDATOR"; then
8520         # We are not in Cygwin but need to run Windows binary with wine
8521         AC_PATH_PROGS(WINE, wine)
8523         # so swap in a shell wrapper that converts paths transparently
8524         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8525         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8526         AC_SUBST(BFFVALIDATOR_EXE)
8527         AC_MSG_RESULT($BFFVALIDATOR)
8528     else
8529         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8530     fi
8531     AC_SUBST(BFFVALIDATOR)
8532 else
8533     AC_MSG_RESULT([no])
8536 dnl ===================================================================
8537 dnl Check for C preprocessor to use
8538 dnl ===================================================================
8539 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8540 if test -n "$with_idlc_cpp"; then
8541     AC_MSG_RESULT([$with_idlc_cpp])
8542     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8543 else
8544     AC_MSG_RESULT([ucpp])
8545     AC_MSG_CHECKING([which ucpp tp use])
8546     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8547         AC_MSG_RESULT([external])
8548         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8549     else
8550         AC_MSG_RESULT([internal])
8551         BUILD_TYPE="$BUILD_TYPE UCPP"
8552     fi
8554 AC_SUBST(SYSTEM_UCPP)
8556 dnl ===================================================================
8557 dnl Check for epm (not needed for Windows)
8558 dnl ===================================================================
8559 AC_MSG_CHECKING([whether to enable EPM for packing])
8560 if test "$enable_epm" = "yes"; then
8561     AC_MSG_RESULT([yes])
8562     if test "$_os" != "WINNT"; then
8563         if test $_os = Darwin; then
8564             EPM=internal
8565         elif test -n "$with_epm"; then
8566             EPM=$with_epm
8567         else
8568             AC_PATH_PROG(EPM, epm, no)
8569         fi
8570         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8571             AC_MSG_NOTICE([EPM will be built.])
8572             BUILD_TYPE="$BUILD_TYPE EPM"
8573             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8574         else
8575             # Gentoo has some epm which is something different...
8576             AC_MSG_CHECKING([whether the found epm is the right epm])
8577             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8578                 AC_MSG_RESULT([yes])
8579             else
8580                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8581             fi
8582             AC_MSG_CHECKING([epm version])
8583             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8584             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8585                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8586                 AC_MSG_RESULT([OK, >= 3.7])
8587             else
8588                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8589                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8590             fi
8591         fi
8592     fi
8594     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8595         AC_MSG_CHECKING([for rpm])
8596         for a in "$RPM" rpmbuild rpm; do
8597             $a --usage >/dev/null 2> /dev/null
8598             if test $? -eq 0; then
8599                 RPM=$a
8600                 break
8601             else
8602                 $a --version >/dev/null 2> /dev/null
8603                 if test $? -eq 0; then
8604                     RPM=$a
8605                     break
8606                 fi
8607             fi
8608         done
8609         if test -z "$RPM"; then
8610             AC_MSG_ERROR([not found])
8611         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8612             RPM_PATH=`which $RPM`
8613             AC_MSG_RESULT([$RPM_PATH])
8614             SCPDEFS="$SCPDEFS -DWITH_RPM"
8615         else
8616             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8617         fi
8618     fi
8619     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8620         AC_PATH_PROG(DPKG, dpkg, no)
8621         if test "$DPKG" = "no"; then
8622             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8623         fi
8624     fi
8625     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8626        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8627         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8628             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8629                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8630                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8631                     AC_MSG_RESULT([yes])
8632                 else
8633                     AC_MSG_RESULT([no])
8634                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8635                         _pt="rpm"
8636                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8637                         add_warning "the rpms will need to be installed with --nodeps"
8638                     else
8639                         _pt="pkg"
8640                     fi
8641                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8642                     add_warning "the ${_pt}s will not be relocatable"
8643                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8644                                  relocation will work, you need to patch your epm with the
8645                                  patch in epm/epm-3.7.patch or build with
8646                                  --with-epm=internal which will build a suitable epm])
8647                 fi
8648             fi
8649         fi
8650     fi
8651     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8652         AC_PATH_PROG(PKGMK, pkgmk, no)
8653         if test "$PKGMK" = "no"; then
8654             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8655         fi
8656     fi
8657     AC_SUBST(RPM)
8658     AC_SUBST(DPKG)
8659     AC_SUBST(PKGMK)
8660 else
8661     for i in $PKGFORMAT; do
8662         case "$i" in
8663         aix | bsd | deb | pkg | rpm | native | portable)
8664             AC_MSG_ERROR(
8665                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8666             ;;
8667         esac
8668     done
8669     AC_MSG_RESULT([no])
8670     EPM=NO
8672 AC_SUBST(EPM)
8674 ENABLE_LWP=
8675 if test "$enable_lotuswordpro" = "yes"; then
8676     ENABLE_LWP="TRUE"
8678 AC_SUBST(ENABLE_LWP)
8680 dnl ===================================================================
8681 dnl Check for building ODK
8682 dnl ===================================================================
8683 if test "$enable_odk" = no; then
8684     unset DOXYGEN
8685 else
8686     if test "$with_doxygen" = no; then
8687         AC_MSG_CHECKING([for doxygen])
8688         unset DOXYGEN
8689         AC_MSG_RESULT([no])
8690     else
8691         if test "$with_doxygen" = yes; then
8692             AC_PATH_PROG([DOXYGEN], [doxygen])
8693             if test -z "$DOXYGEN"; then
8694                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8695             fi
8696             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8697                 if ! dot -V 2>/dev/null; then
8698                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8699                 fi
8700             fi
8701         else
8702             AC_MSG_CHECKING([for doxygen])
8703             DOXYGEN=$with_doxygen
8704             AC_MSG_RESULT([$DOXYGEN])
8705         fi
8706         if test -n "$DOXYGEN"; then
8707             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8708             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8709             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8710                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8711             fi
8712         fi
8713     fi
8715 AC_SUBST([DOXYGEN])
8717 AC_MSG_CHECKING([whether to build the ODK])
8718 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8719     AC_MSG_RESULT([yes])
8721     if test "$with_java" != "no"; then
8722         AC_MSG_CHECKING([whether to build unowinreg.dll])
8723         if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8724             # build on Win by default
8725             enable_build_unowinreg=yes
8726         fi
8727         if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8728             AC_MSG_RESULT([no])
8729             BUILD_UNOWINREG=
8730         else
8731             AC_MSG_RESULT([yes])
8732             BUILD_UNOWINREG=TRUE
8733         fi
8734         if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8735             if test -z "$with_mingw_cross_compiler"; then
8736                 dnl Guess...
8737                 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8738             elif test -x "$with_mingw_cross_compiler"; then
8739                  MINGWCXX="$with_mingw_cross_compiler"
8740             else
8741                 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8742             fi
8744             if test "$MINGWCXX" = "false"; then
8745                 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8746             fi
8748             mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8749             if test -x "$mingwstrip_test"; then
8750                 MINGWSTRIP="$mingwstrip_test"
8751             else
8752                 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8753             fi
8755             if test "$MINGWSTRIP" = "false"; then
8756                 AC_MSG_ERROR(MinGW32 binutils not found.)
8757             fi
8758         fi
8759     fi
8760     BUILD_TYPE="$BUILD_TYPE ODK"
8761 else
8762     AC_MSG_RESULT([no])
8763     BUILD_UNOWINREG=
8765 AC_SUBST(BUILD_UNOWINREG)
8766 AC_SUBST(MINGWCXX)
8767 AC_SUBST(MINGWSTRIP)
8769 dnl ===================================================================
8770 dnl Check for system zlib
8771 dnl ===================================================================
8772 if test "$with_system_zlib" = "auto"; then
8773     case "$_os" in
8774     WINNT)
8775         with_system_zlib="$with_system_libs"
8776         ;;
8777     *)
8778         if test "$enable_fuzzers" != "yes"; then
8779             with_system_zlib=yes
8780         else
8781             with_system_zlib=no
8782         fi
8783         ;;
8784     esac
8787 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8788 dnl and has no pkg-config for it at least on some tinderboxes,
8789 dnl so leaving that out for now
8790 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8791 AC_MSG_CHECKING([which zlib to use])
8792 if test "$with_system_zlib" = "yes"; then
8793     AC_MSG_RESULT([external])
8794     SYSTEM_ZLIB=TRUE
8795     AC_CHECK_HEADER(zlib.h, [],
8796         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8797     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8798         [AC_MSG_ERROR(zlib not found or functional)], [])
8799 else
8800     AC_MSG_RESULT([internal])
8801     SYSTEM_ZLIB=
8802     BUILD_TYPE="$BUILD_TYPE ZLIB"
8803     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8804     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8806 AC_SUBST(ZLIB_CFLAGS)
8807 AC_SUBST(ZLIB_LIBS)
8808 AC_SUBST(SYSTEM_ZLIB)
8810 dnl ===================================================================
8811 dnl Check for system jpeg
8812 dnl ===================================================================
8813 AC_MSG_CHECKING([which libjpeg to use])
8814 if test "$with_system_jpeg" = "yes"; then
8815     AC_MSG_RESULT([external])
8816     SYSTEM_LIBJPEG=TRUE
8817     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8818         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8819     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8820         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8821 else
8822     SYSTEM_LIBJPEG=
8823     AC_MSG_RESULT([internal, libjpeg-turbo])
8824     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8825     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8826     if test "$COM" = "MSC"; then
8827         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8828     else
8829         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8830     fi
8832     case "$host_cpu" in
8833     x86_64 | amd64 | i*86 | x86 | ia32)
8834         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8835         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8836             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8837                 NASM="$LODE_HOME/opt/bin/nasm"
8838             elif test -x "/opt/lo/bin/nasm"; then
8839                 NASM="/opt/lo/bin/nasm"
8840             fi
8841         fi
8843         if test -n "$NASM"; then
8844             AC_MSG_CHECKING([for object file format of host system])
8845             case "$host_os" in
8846               cygwin* | mingw* | pw32* | wsl*)
8847                 case "$host_cpu" in
8848                   x86_64)
8849                     objfmt='Win64-COFF'
8850                     ;;
8851                   *)
8852                     objfmt='Win32-COFF'
8853                     ;;
8854                 esac
8855               ;;
8856               msdosdjgpp* | go32*)
8857                 objfmt='COFF'
8858               ;;
8859               os2-emx*) # not tested
8860                 objfmt='MSOMF' # obj
8861               ;;
8862               linux*coff* | linux*oldld*)
8863                 objfmt='COFF' # ???
8864               ;;
8865               linux*aout*)
8866                 objfmt='a.out'
8867               ;;
8868               linux*)
8869                 case "$host_cpu" in
8870                   x86_64)
8871                     objfmt='ELF64'
8872                     ;;
8873                   *)
8874                     objfmt='ELF'
8875                     ;;
8876                 esac
8877               ;;
8878               kfreebsd* | freebsd* | netbsd* | openbsd*)
8879                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8880                   objfmt='BSD-a.out'
8881                 else
8882                   case "$host_cpu" in
8883                     x86_64 | amd64)
8884                       objfmt='ELF64'
8885                       ;;
8886                     *)
8887                       objfmt='ELF'
8888                       ;;
8889                   esac
8890                 fi
8891               ;;
8892               solaris* | sunos* | sysv* | sco*)
8893                 case "$host_cpu" in
8894                   x86_64)
8895                     objfmt='ELF64'
8896                     ;;
8897                   *)
8898                     objfmt='ELF'
8899                     ;;
8900                 esac
8901               ;;
8902               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8903                 case "$host_cpu" in
8904                   x86_64)
8905                     objfmt='Mach-O64'
8906                     ;;
8907                   *)
8908                     objfmt='Mach-O'
8909                     ;;
8910                 esac
8911               ;;
8912               *)
8913                 objfmt='ELF ?'
8914               ;;
8915             esac
8917             AC_MSG_RESULT([$objfmt])
8918             if test "$objfmt" = 'ELF ?'; then
8919               objfmt='ELF'
8920               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8921             fi
8923             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8924             case "$objfmt" in
8925               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8926               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8927               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8928               COFF)       NAFLAGS='-fcoff -DCOFF';;
8929               a.out)      NAFLAGS='-faout -DAOUT';;
8930               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8931               ELF)        NAFLAGS='-felf -DELF';;
8932               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8933               RDF)        NAFLAGS='-frdf -DRDF';;
8934               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8935               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8936             esac
8937             AC_MSG_RESULT([$NAFLAGS])
8939             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8940             cat > conftest.asm << EOF
8941             [%line __oline__ "configure"
8942                     section .text
8943                     global  _main,main
8944             _main:
8945             main:   xor     eax,eax
8946                     ret
8947             ]
8949             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8950             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8951               AC_MSG_RESULT(yes)
8952             else
8953               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8954               cat conftest.asm >&AS_MESSAGE_LOG_FD
8955               rm -rf conftest*
8956               AC_MSG_RESULT(no)
8957               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8958               NASM=""
8959             fi
8961         fi
8963         if test -z "$NASM"; then
8964 cat << _EOS
8965 ****************************************************************************
8966 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8967 To get one please:
8969 _EOS
8970             if test "$build_os" = "cygwin"; then
8971 cat << _EOS
8972 install a pre-compiled binary for Win32
8974 mkdir -p /opt/lo/bin
8975 cd /opt/lo/bin
8976 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8977 chmod +x nasm
8979 or get and install one from http://www.nasm.us/
8981 Then re-run autogen.sh
8983 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8984 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8986 _EOS
8987             else
8988 cat << _EOS
8989 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8991 _EOS
8992             fi
8993             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8994             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8995         fi
8996       ;;
8997     esac
9000 AC_SUBST(NASM)
9001 AC_SUBST(LIBJPEG_CFLAGS)
9002 AC_SUBST(LIBJPEG_LIBS)
9003 AC_SUBST(SYSTEM_LIBJPEG)
9005 dnl ===================================================================
9006 dnl Check for system clucene
9007 dnl ===================================================================
9008 dnl we should rather be using
9009 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9010 dnl but the contribs-lib check seems tricky
9011 AC_MSG_CHECKING([which clucene to use])
9012 if test "$with_system_clucene" = "yes"; then
9013     AC_MSG_RESULT([external])
9014     SYSTEM_CLUCENE=TRUE
9015     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9016     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9017     FilterLibs "${CLUCENE_LIBS}"
9018     CLUCENE_LIBS="${filteredlibs}"
9019     AC_LANG_PUSH([C++])
9020     save_CXXFLAGS=$CXXFLAGS
9021     save_CPPFLAGS=$CPPFLAGS
9022     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9023     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9024     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9025     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9026     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9027                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9028     CXXFLAGS=$save_CXXFLAGS
9029     CPPFLAGS=$save_CPPFLAGS
9030     AC_LANG_POP([C++])
9032     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9033 else
9034     AC_MSG_RESULT([internal])
9035     SYSTEM_CLUCENE=
9036     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9038 AC_SUBST(SYSTEM_CLUCENE)
9039 AC_SUBST(CLUCENE_CFLAGS)
9040 AC_SUBST(CLUCENE_LIBS)
9042 dnl ===================================================================
9043 dnl Check for system expat
9044 dnl ===================================================================
9045 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9047 dnl ===================================================================
9048 dnl Check for system xmlsec
9049 dnl ===================================================================
9050 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9052 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9053 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9054     ENABLE_EOT="TRUE"
9055     AC_DEFINE([ENABLE_EOT])
9056     AC_MSG_RESULT([yes])
9058     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9059 else
9060     ENABLE_EOT=
9061     AC_MSG_RESULT([no])
9063 AC_SUBST([ENABLE_EOT])
9065 dnl ===================================================================
9066 dnl Check for DLP libs
9067 dnl ===================================================================
9068 AS_IF([test "$COM" = "MSC"],
9069       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9070       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9072 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9074 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9076 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9078 AS_IF([test "$COM" = "MSC"],
9079       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9080       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9082 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9084 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9086 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9087 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9089 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9091 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9093 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9095 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9096 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9098 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9099 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9101 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9103 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9104 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9106 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9108 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9110 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9112 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9114 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9115 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9117 dnl ===================================================================
9118 dnl Check for system lcms2
9119 dnl ===================================================================
9120 if test "$with_system_lcms2" != "yes"; then
9121     SYSTEM_LCMS2=
9123 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9124 if test "$GCC" = "yes"; then
9125     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9127 if test "$COM" = "MSC"; then # override the above
9128     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9131 dnl ===================================================================
9132 dnl Check for system cppunit
9133 dnl ===================================================================
9134 if test "$_os" != "Android" ; then
9135     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9138 dnl ===================================================================
9139 dnl Check whether freetype is available
9140 dnl ===================================================================
9141 if test  "$test_freetype" = "yes"; then
9142     AC_MSG_CHECKING([whether freetype is available])
9143     # FreeType has 3 different kinds of versions
9144     # * release, like 2.4.10
9145     # * libtool, like 13.0.7 (this what pkg-config returns)
9146     # * soname
9147     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9148     #
9149     # 9.9.3 is 2.2.0
9150     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9151     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9152     FilterLibs "${FREETYPE_LIBS}"
9153     FREETYPE_LIBS="${filteredlibs}"
9154     SYSTEM_FREETYPE=TRUE
9155 else
9156     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9157     if test "x$ac_config_site_64bit_host" = xYES; then
9158         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9159     else
9160         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9161     fi
9163 AC_SUBST(FREETYPE_CFLAGS)
9164 AC_SUBST(FREETYPE_LIBS)
9165 AC_SUBST([SYSTEM_FREETYPE])
9167 # ===================================================================
9168 # Check for system libxslt
9169 # to prevent incompatibilities between internal libxml2 and external libxslt,
9170 # or vice versa, use with_system_libxml here
9171 # ===================================================================
9172 if test "$with_system_libxml" = "auto"; then
9173     case "$_os" in
9174     WINNT|iOS|Android)
9175         with_system_libxml="$with_system_libs"
9176         ;;
9177     *)
9178         if test "$enable_fuzzers" != "yes"; then
9179             with_system_libxml=yes
9180         else
9181             with_system_libxml=no
9182         fi
9183         ;;
9184     esac
9187 AC_MSG_CHECKING([which libxslt to use])
9188 if test "$with_system_libxml" = "yes"; then
9189     AC_MSG_RESULT([external])
9190     SYSTEM_LIBXSLT=TRUE
9191     if test "$_os" = "Darwin"; then
9192         dnl make sure to use SDK path
9193         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9194         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9195         dnl omit -L/usr/lib
9196         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9197         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9198     else
9199         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9200         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9201         FilterLibs "${LIBXSLT_LIBS}"
9202         LIBXSLT_LIBS="${filteredlibs}"
9203         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9204         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9205         FilterLibs "${LIBEXSLT_LIBS}"
9206         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9207     fi
9209     dnl Check for xsltproc
9210     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9211     if test "$XSLTPROC" = "no"; then
9212         AC_MSG_ERROR([xsltproc is required])
9213     fi
9214 else
9215     AC_MSG_RESULT([internal])
9216     SYSTEM_LIBXSLT=
9217     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9219 AC_SUBST(SYSTEM_LIBXSLT)
9220 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9221     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9223 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9225 AC_SUBST(LIBEXSLT_CFLAGS)
9226 AC_SUBST(LIBEXSLT_LIBS)
9227 AC_SUBST(LIBXSLT_CFLAGS)
9228 AC_SUBST(LIBXSLT_LIBS)
9229 AC_SUBST(XSLTPROC)
9231 # ===================================================================
9232 # Check for system libxml
9233 # ===================================================================
9234 AC_MSG_CHECKING([which libxml to use])
9235 if test "$with_system_libxml" = "yes"; then
9236     AC_MSG_RESULT([external])
9237     SYSTEM_LIBXML=TRUE
9238     if test "$_os" = "Darwin"; then
9239         dnl make sure to use SDK path
9240         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9241         dnl omit -L/usr/lib
9242         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9243     elif test $_os = iOS; then
9244         dnl make sure to use SDK path
9245         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9246         LIBXML_CFLAGS="-I$usr/include/libxml2"
9247         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9248     else
9249         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9250         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9251         FilterLibs "${LIBXML_LIBS}"
9252         LIBXML_LIBS="${filteredlibs}"
9253     fi
9255     dnl Check for xmllint
9256     AC_PATH_PROG(XMLLINT, xmllint, no)
9257     if test "$XMLLINT" = "no"; then
9258         AC_MSG_ERROR([xmllint is required])
9259     fi
9260 else
9261     AC_MSG_RESULT([internal])
9262     SYSTEM_LIBXML=
9263     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9264     if test "$COM" = "MSC"; then
9265         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9266     fi
9267     if test "$COM" = "MSC"; then
9268         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9269     else
9270         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9271         if test "$_os" = Android; then
9272             LIBXML_LIBS="$LIBXML_LIBS -lm"
9273         fi
9274     fi
9275     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9277 AC_SUBST(SYSTEM_LIBXML)
9278 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9279     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9281 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9282 AC_SUBST(LIBXML_CFLAGS)
9283 AC_SUBST(LIBXML_LIBS)
9284 AC_SUBST(XMLLINT)
9286 # =====================================================================
9287 # Checking for a Python interpreter with version >= 3.3.
9288 # Optionally user can pass an option to configure, i. e.
9289 # ./configure PYTHON=/usr/bin/python
9290 # =====================================================================
9291 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9292     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9293     enable_python=internal
9295 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9296     if test -n "$PYTHON"; then
9297         PYTHON_FOR_BUILD=$PYTHON
9298     else
9299         # This allows a lack of system python with no error, we use internal one in that case.
9300         AM_PATH_PYTHON([3.3],, [:])
9301         # Clean PYTHON_VERSION checked below if cross-compiling
9302         PYTHON_VERSION=""
9303         if test "$PYTHON" != ":"; then
9304             PYTHON_FOR_BUILD=$PYTHON
9305         fi
9306     fi
9308 AC_SUBST(PYTHON_FOR_BUILD)
9310 # Checks for Python to use for Pyuno
9311 AC_MSG_CHECKING([which Python to use for Pyuno])
9312 case "$enable_python" in
9313 no|disable)
9314     if test -z $PYTHON_FOR_BUILD; then
9315         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9316         # requirement from the choice whether to include Python stuff in the installer, but why
9317         # bother?
9318         AC_MSG_ERROR([Python is required at build time.])
9319     fi
9320     enable_python=no
9321     AC_MSG_RESULT([none])
9322     ;;
9323 ""|yes|auto)
9324     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9325         AC_MSG_RESULT([no, overridden by --disable-scripting])
9326         enable_python=no
9327     elif test $build_os = cygwin; then
9328         dnl When building on Windows we don't attempt to use any installed
9329         dnl "system"  Python.
9330         AC_MSG_RESULT([fully internal])
9331         enable_python=internal
9332     elif test "$cross_compiling" = yes; then
9333         AC_MSG_RESULT([system])
9334         enable_python=system
9335     else
9336         # Unset variables set by the above AM_PATH_PYTHON so that
9337         # we actually do check anew.
9338         AC_MSG_RESULT([])
9339         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
9340         AM_PATH_PYTHON([3.3],, [:])
9341         AC_MSG_CHECKING([which Python to use for Pyuno])
9342         if test "$PYTHON" = ":"; then
9343             if test -z "$PYTHON_FOR_BUILD"; then
9344                 AC_MSG_RESULT([fully internal])
9345             else
9346                 AC_MSG_RESULT([internal])
9347             fi
9348             enable_python=internal
9349         else
9350             AC_MSG_RESULT([system])
9351             enable_python=system
9352         fi
9353     fi
9354     ;;
9355 internal)
9356     AC_MSG_RESULT([internal])
9357     ;;
9358 fully-internal)
9359     AC_MSG_RESULT([fully internal])
9360     enable_python=internal
9361     ;;
9362 system)
9363     AC_MSG_RESULT([system])
9364     if test "$_os" = Darwin; then
9365         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9366     fi
9367     ;;
9369     AC_MSG_ERROR([Incorrect --enable-python option])
9370     ;;
9371 esac
9373 if test $enable_python != no; then
9374     BUILD_TYPE="$BUILD_TYPE PYUNO"
9377 if test $enable_python = system; then
9378     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9379         # Fallback: Accept these in the environment, or as set above
9380         # for MacOSX.
9381         :
9382     elif test "$cross_compiling" != yes; then
9383         # Unset variables set by the above AM_PATH_PYTHON so that
9384         # we actually do check anew.
9385         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
9386         # This causes an error if no python command is found
9387         AM_PATH_PYTHON([3.3])
9388         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9389         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9390         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9391         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9392         if test -z "$PKG_CONFIG"; then
9393             PYTHON_CFLAGS="-I$python_include"
9394             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9395         elif $PKG_CONFIG --exists python-$python_version-embed; then
9396             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9397             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9398         elif $PKG_CONFIG --exists python-$python_version; then
9399             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9400             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9401         else
9402             PYTHON_CFLAGS="-I$python_include"
9403             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9404         fi
9405         FilterLibs "${PYTHON_LIBS}"
9406         PYTHON_LIBS="${filteredlibs}"
9407     else
9408         dnl How to find out the cross-compilation Python installation path?
9409         AC_MSG_CHECKING([for python version])
9410         AS_IF([test -n "$PYTHON_VERSION"],
9411               [AC_MSG_RESULT([$PYTHON_VERSION])],
9412               [AC_MSG_RESULT([not found])
9413                AC_MSG_ERROR([no usable python found])])
9414         test -n "$PYTHON_CFLAGS" && break
9415     fi
9417     dnl Check if the headers really work
9418     save_CPPFLAGS="$CPPFLAGS"
9419     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9420     AC_CHECK_HEADER(Python.h)
9421     CPPFLAGS="$save_CPPFLAGS"
9423     # let the PYTHON_FOR_BUILD match the same python installation that
9424     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9425     # better for PythonTests.
9426     PYTHON_FOR_BUILD=$PYTHON
9429 if test "$with_lxml" != no; then
9430     if test -z "$PYTHON_FOR_BUILD"; then
9431         case $build_os in
9432             cygwin)
9433                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9434                 ;;
9435             *)
9436                 if test "$cross_compiling" != yes ; then
9437                     BUILD_TYPE="$BUILD_TYPE LXML"
9438                 fi
9439                 ;;
9440         esac
9441     else
9442         AC_MSG_CHECKING([for python lxml])
9443         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9444             AC_MSG_RESULT([yes])
9445         else
9446             case $build_os in
9447                 cygwin)
9448                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9449                     ;;
9450                 *)
9451                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9452                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9453                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9454                         else
9455                             BUILD_TYPE="$BUILD_TYPE LXML"
9456                             AC_MSG_RESULT([no, using internal lxml])
9457                         fi
9458                     else
9459                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9460                     fi
9461                     ;;
9462             esac
9463         fi
9464     fi
9467 dnl By now enable_python should be "system", "internal" or "no"
9468 case $enable_python in
9469 system)
9470     SYSTEM_PYTHON=TRUE
9472     if test "x$ac_cv_header_Python_h" != "xyes"; then
9473        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9474     fi
9476     AC_LANG_PUSH(C)
9477     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9478     AC_MSG_CHECKING([for correct python library version])
9479        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9480 #include <Python.h>
9482 int main(int argc, char **argv) {
9483    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9484    else return 1;
9486        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9487     AC_LANG_POP(C)
9489     dnl FIXME Check if the Python library can be linked with, too?
9490     ;;
9492 internal)
9493     SYSTEM_PYTHON=
9494     PYTHON_VERSION_MAJOR=3
9495     PYTHON_VERSION_MINOR=8
9496     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9497     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9498         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9499     fi
9500     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9501     BUILD_TYPE="$BUILD_TYPE PYTHON"
9502     if test "$OS" = LINUX -o "$OS" = WNT ; then
9503         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9504     fi
9505     # Embedded Python dies without Home set
9506     if test "$HOME" = ""; then
9507         export HOME=""
9508     fi
9509     ;;
9511     DISABLE_PYTHON=TRUE
9512     SYSTEM_PYTHON=
9513     ;;
9515     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9516     ;;
9517 esac
9519 AC_SUBST(DISABLE_PYTHON)
9520 AC_SUBST(SYSTEM_PYTHON)
9521 AC_SUBST(PYTHON_CFLAGS)
9522 AC_SUBST(PYTHON_LIBS)
9523 AC_SUBST(PYTHON_VERSION)
9524 AC_SUBST(PYTHON_VERSION_MAJOR)
9525 AC_SUBST(PYTHON_VERSION_MINOR)
9527 ENABLE_MARIADBC=
9528 MARIADBC_MAJOR=1
9529 MARIADBC_MINOR=0
9530 MARIADBC_MICRO=2
9531 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9532 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9533     ENABLE_MARIADBC=TRUE
9534     AC_MSG_RESULT([yes])
9535     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9536 else
9537     AC_MSG_RESULT([no])
9539 AC_SUBST(ENABLE_MARIADBC)
9540 AC_SUBST(MARIADBC_MAJOR)
9541 AC_SUBST(MARIADBC_MINOR)
9542 AC_SUBST(MARIADBC_MICRO)
9544 if test "$ENABLE_MARIADBC" = "TRUE"; then
9545     dnl ===================================================================
9546     dnl Check for system MariaDB
9547     dnl ===================================================================
9548     AC_MSG_CHECKING([which MariaDB to use])
9549     if test "$with_system_mariadb" = "yes"; then
9550         AC_MSG_RESULT([external])
9551         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9552         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9553         if test -z "$MARIADBCONFIG"; then
9554             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9555             if test -z "$MARIADBCONFIG"; then
9556                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9557                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9558             fi
9559         fi
9560         AC_MSG_CHECKING([MariaDB version])
9561         MARIADB_VERSION=`$MARIADBCONFIG --version`
9562         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9563         if test "$MARIADB_MAJOR" -ge "5"; then
9564             AC_MSG_RESULT([OK])
9565         else
9566             AC_MSG_ERROR([too old, use 5.0.x or later])
9567         fi
9568         AC_MSG_CHECKING([for MariaDB Client library])
9569         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9570         if test "$COM_IS_CLANG" = TRUE; then
9571             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9572         fi
9573         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9574         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9575         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9576         dnl linux32:
9577         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9578             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9579             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9580                 | sed -e 's|/lib64/|/lib/|')
9581         fi
9582         FilterLibs "${MARIADB_LIBS}"
9583         MARIADB_LIBS="${filteredlibs}"
9584         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9585         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9586         if test "$enable_bundle_mariadb" = "yes"; then
9587             AC_MSG_RESULT([yes])
9588             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9589             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9591 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9593 /g' | grep -E '(mysqlclient|mariadb)')
9594             if test "$_os" = "Darwin"; then
9595                 LIBMARIADB=${LIBMARIADB}.dylib
9596             elif test "$_os" = "WINNT"; then
9597                 LIBMARIADB=${LIBMARIADB}.dll
9598             else
9599                 LIBMARIADB=${LIBMARIADB}.so
9600             fi
9601             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9602             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9603             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9604                 AC_MSG_RESULT([found.])
9605                 PathFormat "$LIBMARIADB_PATH"
9606                 LIBMARIADB_PATH="$formatted_path"
9607             else
9608                 AC_MSG_ERROR([not found.])
9609             fi
9610         else
9611             AC_MSG_RESULT([no])
9612             BUNDLE_MARIADB_CONNECTOR_C=
9613         fi
9614     else
9615         AC_MSG_RESULT([internal])
9616         SYSTEM_MARIADB_CONNECTOR_C=
9617         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9618         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9619         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9620     fi
9622     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9623     AC_SUBST(MARIADB_CFLAGS)
9624     AC_SUBST(MARIADB_LIBS)
9625     AC_SUBST(LIBMARIADB)
9626     AC_SUBST(LIBMARIADB_PATH)
9627     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9630 dnl ===================================================================
9631 dnl Check for system hsqldb
9632 dnl ===================================================================
9633 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9634     HSQLDB_USE_JDBC_4_1=
9635     AC_MSG_CHECKING([which hsqldb to use])
9636     if test "$with_system_hsqldb" = "yes"; then
9637         AC_MSG_RESULT([external])
9638         SYSTEM_HSQLDB=TRUE
9639         if test -z $HSQLDB_JAR; then
9640             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9641         fi
9642         if ! test -f $HSQLDB_JAR; then
9643                AC_MSG_ERROR(hsqldb.jar not found.)
9644         fi
9645         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9646         export HSQLDB_JAR
9647         if $PERL -e \
9648            'use Archive::Zip;
9649             my $file = "$ENV{'HSQLDB_JAR'}";
9650             my $zip = Archive::Zip->new( $file );
9651             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9652             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9653             {
9654                 push @l, split(/\n/, $mf);
9655                 foreach my $line (@l)
9656                 {
9657                     if ($line =~ m/Specification-Version:/)
9658                     {
9659                         ($t, $version) = split (/:/,$line);
9660                         $version =~ s/^\s//;
9661                         ($a, $b, $c, $d) = split (/\./,$version);
9662                         if ($c == "0" && $d > "8")
9663                         {
9664                             exit 0;
9665                         }
9666                         else
9667                         {
9668                             exit 1;
9669                         }
9670                     }
9671                 }
9672             }
9673             else
9674             {
9675                 exit 1;
9676             }'; then
9677             AC_MSG_RESULT([yes])
9678         else
9679             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9680         fi
9681     else
9682         AC_MSG_RESULT([internal])
9683         SYSTEM_HSQLDB=
9684         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9685         NEED_ANT=TRUE
9686         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9687         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9688         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9689             AC_MSG_RESULT([yes])
9690             HSQLDB_USE_JDBC_4_1=TRUE
9691         else
9692             AC_MSG_RESULT([no])
9693         fi
9694     fi
9695 else
9696     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9697         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9698     fi
9700 AC_SUBST(SYSTEM_HSQLDB)
9701 AC_SUBST(HSQLDB_JAR)
9702 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9704 dnl ===================================================================
9705 dnl Check for PostgreSQL stuff
9706 dnl ===================================================================
9707 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9708 if test "x$enable_postgresql_sdbc" != "xno"; then
9709     AC_MSG_RESULT([yes])
9710     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9712     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9713         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9714     fi
9715     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9716         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9717     fi
9719     postgres_interface=""
9720     if test "$with_system_postgresql" = "yes"; then
9721         postgres_interface="external PostgreSQL"
9722         SYSTEM_POSTGRESQL=TRUE
9723         if test "$_os" = Darwin; then
9724             supp_path=''
9725             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9726                 pg_supp_path="$P_SEP$d$pg_supp_path"
9727             done
9728         fi
9729         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9730         if test -n "$PGCONFIG"; then
9731             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9732             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9733         else
9734             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9735               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9736               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9737             ],[
9738               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9739             ])
9740         fi
9741         FilterLibs "${POSTGRESQL_LIB}"
9742         POSTGRESQL_LIB="${filteredlibs}"
9743     else
9744         # if/when anything else than PostgreSQL uses Kerberos,
9745         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9746         WITH_KRB5=
9747         WITH_GSSAPI=
9748         case "$_os" in
9749         Darwin)
9750             # macOS has system MIT Kerberos 5 since 10.4
9751             if test "$with_krb5" != "no"; then
9752                 WITH_KRB5=TRUE
9753                 save_LIBS=$LIBS
9754                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9755                 # that the libraries where these functions are located on macOS will change, is it?
9756                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9757                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9758                 KRB5_LIBS=$LIBS
9759                 LIBS=$save_LIBS
9760                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9761                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9762                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9763                 LIBS=$save_LIBS
9764             fi
9765             if test "$with_gssapi" != "no"; then
9766                 WITH_GSSAPI=TRUE
9767                 save_LIBS=$LIBS
9768                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9769                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9770                 GSSAPI_LIBS=$LIBS
9771                 LIBS=$save_LIBS
9772             fi
9773             ;;
9774         WINNT)
9775             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9776                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9777             fi
9778             ;;
9779         Linux|GNU|*BSD|DragonFly)
9780             if test "$with_krb5" != "no"; then
9781                 WITH_KRB5=TRUE
9782                 save_LIBS=$LIBS
9783                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9784                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9785                 KRB5_LIBS=$LIBS
9786                 LIBS=$save_LIBS
9787                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9788                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9789                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9790                 LIBS=$save_LIBS
9791             fi
9792             if test "$with_gssapi" != "no"; then
9793                 WITH_GSSAPI=TRUE
9794                 save_LIBS=$LIBS
9795                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9796                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9797                 GSSAPI_LIBS=$LIBS
9798                 LIBS=$save_LIBS
9799             fi
9800             ;;
9801         *)
9802             if test "$with_krb5" = "yes"; then
9803                 WITH_KRB5=TRUE
9804                 save_LIBS=$LIBS
9805                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9806                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9807                 KRB5_LIBS=$LIBS
9808                 LIBS=$save_LIBS
9809                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9810                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9811                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9812                 LIBS=$save_LIBS
9813             fi
9814             if test "$with_gssapi" = "yes"; then
9815                 WITH_GSSAPI=TRUE
9816                 save_LIBS=$LIBS
9817                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9818                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9819                 LIBS=$save_LIBS
9820                 GSSAPI_LIBS=$LIBS
9821             fi
9822         esac
9824         if test -n "$with_libpq_path"; then
9825             SYSTEM_POSTGRESQL=TRUE
9826             postgres_interface="external libpq"
9827             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9828             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9829         else
9830             SYSTEM_POSTGRESQL=
9831             postgres_interface="internal"
9832             POSTGRESQL_LIB=""
9833             POSTGRESQL_INC="%OVERRIDE_ME%"
9834             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9835         fi
9836     fi
9838     AC_MSG_CHECKING([PostgreSQL C interface])
9839     AC_MSG_RESULT([$postgres_interface])
9841     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9842         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9843         save_CFLAGS=$CFLAGS
9844         save_CPPFLAGS=$CPPFLAGS
9845         save_LIBS=$LIBS
9846         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9847         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9848         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9849         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9850             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9851         CFLAGS=$save_CFLAGS
9852         CPPFLAGS=$save_CPPFLAGS
9853         LIBS=$save_LIBS
9854     fi
9855     BUILD_POSTGRESQL_SDBC=TRUE
9856 else
9857     AC_MSG_RESULT([no])
9859 AC_SUBST(WITH_KRB5)
9860 AC_SUBST(WITH_GSSAPI)
9861 AC_SUBST(GSSAPI_LIBS)
9862 AC_SUBST(KRB5_LIBS)
9863 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9864 AC_SUBST(SYSTEM_POSTGRESQL)
9865 AC_SUBST(POSTGRESQL_INC)
9866 AC_SUBST(POSTGRESQL_LIB)
9868 dnl ===================================================================
9869 dnl Check for Firebird stuff
9870 dnl ===================================================================
9871 ENABLE_FIREBIRD_SDBC=
9872 if test "$enable_firebird_sdbc" = "yes" ; then
9873     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9875     dnl ===================================================================
9876     dnl Check for system Firebird
9877     dnl ===================================================================
9878     AC_MSG_CHECKING([which Firebird to use])
9879     if test "$with_system_firebird" = "yes"; then
9880         AC_MSG_RESULT([external])
9881         SYSTEM_FIREBIRD=TRUE
9882         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9883         if test -z "$FIREBIRDCONFIG"; then
9884             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9885             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9886                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9887             ])
9888             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9889         else
9890             AC_MSG_NOTICE([fb_config found])
9891             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9892             AC_MSG_CHECKING([for Firebird Client library])
9893             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9894             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9895             FilterLibs "${FIREBIRD_LIBS}"
9896             FIREBIRD_LIBS="${filteredlibs}"
9897         fi
9898         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9899         AC_MSG_CHECKING([Firebird version])
9900         if test -n "${FIREBIRD_VERSION}"; then
9901             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9902             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9903             if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9904                 AC_MSG_RESULT([OK])
9905             else
9906                 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9907             fi
9908         else
9909             save_CFLAGS="${CFLAGS}"
9910             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9911             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9912 #if defined(FB_API_VER) && FB_API_VER == 30
9913 int fb_api_is_30(void) { return 0; }
9914 #else
9915 #error "Wrong Firebird API version"
9916 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9917             CFLAGS="$save_CFLAGS"
9918         fi
9919         ENABLE_FIREBIRD_SDBC=TRUE
9920         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9921     elif test "$enable_database_connectivity" != yes; then
9922         AC_MSG_RESULT([none])
9923     elif test "$cross_compiling" = "yes"; then
9924         AC_MSG_RESULT([none])
9925     else
9926         dnl Embedded Firebird has version 3.0
9927         AC_DEFINE(HAVE_FIREBIRD_30, 1)
9928         dnl We need libatomic_ops for any non X86/X64 system
9929         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9930             dnl ===================================================================
9931             dnl Check for system libatomic_ops
9932             dnl ===================================================================
9933             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9934             if test "$with_system_libatomic_ops" = "yes"; then
9935                 SYSTEM_LIBATOMIC_OPS=TRUE
9936                 AC_CHECK_HEADERS(atomic_ops.h, [],
9937                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9938             else
9939                 SYSTEM_LIBATOMIC_OPS=
9940                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9941                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9942                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9943             fi
9944         fi
9946         AC_MSG_RESULT([internal])
9947         SYSTEM_FIREBIRD=
9948         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9949         FIREBIRD_LIBS="-lfbclient"
9951         if test "$with_system_libtommath" = "yes"; then
9952             SYSTEM_LIBTOMMATH=TRUE
9953             dnl check for tommath presence
9954             save_LIBS=$LIBS
9955             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9956             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9957             LIBS=$save_LIBS
9958         else
9959             SYSTEM_LIBTOMMATH=
9960             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9961             LIBTOMMATH_LIBS="-ltommath"
9962             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9963         fi
9965         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9966         ENABLE_FIREBIRD_SDBC=TRUE
9967         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9968     fi
9970 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9971 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9972 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9973 AC_SUBST(LIBATOMIC_OPS_LIBS)
9974 AC_SUBST(SYSTEM_FIREBIRD)
9975 AC_SUBST(FIREBIRD_CFLAGS)
9976 AC_SUBST(FIREBIRD_LIBS)
9977 AC_SUBST(SYSTEM_LIBTOMMATH)
9978 AC_SUBST(LIBTOMMATH_CFLAGS)
9979 AC_SUBST(LIBTOMMATH_LIBS)
9981 dnl ===================================================================
9982 dnl Check for system curl
9983 dnl ===================================================================
9984 AC_MSG_CHECKING([which libcurl to use])
9985 if test "$with_system_curl" = "auto"; then
9986     with_system_curl="$with_system_libs"
9989 if test "$with_system_curl" = "yes"; then
9990     AC_MSG_RESULT([external])
9991     SYSTEM_CURL=TRUE
9993     # First try PKGCONFIG and then fall back
9994     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9996     if test -n "$CURL_PKG_ERRORS"; then
9997         AC_PATH_PROG(CURLCONFIG, curl-config)
9998         if test -z "$CURLCONFIG"; then
9999             AC_MSG_ERROR([curl development files not found])
10000         fi
10001         CURL_LIBS=`$CURLCONFIG --libs`
10002         FilterLibs "${CURL_LIBS}"
10003         CURL_LIBS="${filteredlibs}"
10004         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10005         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10007         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10008         case $curl_version in
10009         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10010         dnl so they need to be doubled to end up in the configure script
10011         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10012             AC_MSG_RESULT([yes])
10013             ;;
10014         *)
10015             AC_MSG_ERROR([no, you have $curl_version])
10016             ;;
10017         esac
10018     fi
10020     ENABLE_CURL=TRUE
10021 else
10022     AC_MSG_RESULT([internal])
10023     SYSTEM_CURL=
10024     BUILD_TYPE="$BUILD_TYPE CURL"
10025     ENABLE_CURL=TRUE
10027 AC_SUBST(SYSTEM_CURL)
10028 AC_SUBST(CURL_CFLAGS)
10029 AC_SUBST(CURL_LIBS)
10030 AC_SUBST(ENABLE_CURL)
10032 dnl ===================================================================
10033 dnl Check for system boost
10034 dnl ===================================================================
10035 AC_MSG_CHECKING([which boost to use])
10036 if test "$with_system_boost" = "yes"; then
10037     AC_MSG_RESULT([external])
10038     SYSTEM_BOOST=TRUE
10039     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10040     AX_BOOST_DATE_TIME
10041     AX_BOOST_FILESYSTEM
10042     AX_BOOST_IOSTREAMS
10043     AX_BOOST_LOCALE
10044     AC_LANG_PUSH([C++])
10045     save_CXXFLAGS=$CXXFLAGS
10046     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10047     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10048        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10049     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10050        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10051     CXXFLAGS=$save_CXXFLAGS
10052     AC_LANG_POP([C++])
10053     # this is in m4/ax_boost_base.m4
10054     FilterLibs "${BOOST_LDFLAGS}"
10055     BOOST_LDFLAGS="${filteredlibs}"
10056 else
10057     AC_MSG_RESULT([internal])
10058     BUILD_TYPE="$BUILD_TYPE BOOST"
10059     SYSTEM_BOOST=
10060     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10061         # use warning-suppressing wrapper headers
10062         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10063     else
10064         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10065     fi
10067 AC_SUBST(SYSTEM_BOOST)
10069 dnl ===================================================================
10070 dnl Check for system mdds
10071 dnl ===================================================================
10072 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10074 dnl ===================================================================
10075 dnl Check for system glm
10076 dnl ===================================================================
10077 AC_MSG_CHECKING([which glm to use])
10078 if test "$with_system_glm" = "yes"; then
10079     AC_MSG_RESULT([external])
10080     SYSTEM_GLM=TRUE
10081     AC_LANG_PUSH([C++])
10082     AC_CHECK_HEADER([glm/glm.hpp], [],
10083        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10084     AC_LANG_POP([C++])
10085 else
10086     AC_MSG_RESULT([internal])
10087     BUILD_TYPE="$BUILD_TYPE GLM"
10088     SYSTEM_GLM=
10089     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10091 AC_SUBST([GLM_CFLAGS])
10092 AC_SUBST([SYSTEM_GLM])
10094 dnl ===================================================================
10095 dnl Check for system odbc
10096 dnl ===================================================================
10097 AC_MSG_CHECKING([which odbc headers to use])
10098 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
10099     AC_MSG_RESULT([external])
10100     SYSTEM_ODBC_HEADERS=TRUE
10102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10103         save_CPPFLAGS=$CPPFLAGS
10104         find_winsdk
10105         PathFormat "$winsdktest"
10106         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"
10107         AC_CHECK_HEADER(sqlext.h, [],
10108             [AC_MSG_ERROR(odbc not found. install odbc)],
10109             [#include <windows.h>])
10110         CPPFLAGS=$save_CPPFLAGS
10111     else
10112         AC_CHECK_HEADER(sqlext.h, [],
10113             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10114     fi
10115 elif test "$enable_database_connectivity" != yes; then
10116     AC_MSG_RESULT([none])
10117 else
10118     AC_MSG_RESULT([internal])
10119     SYSTEM_ODBC_HEADERS=
10121 AC_SUBST(SYSTEM_ODBC_HEADERS)
10123 dnl ===================================================================
10124 dnl Enable LDAP support
10125 dnl ===================================================================
10127 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10128 AC_MSG_CHECKING([whether to enable LDAP support])
10129     if test "$enable_ldap" != "yes"; then
10130         AC_MSG_RESULT([no])
10131         ENABLE_LDAP=""
10132         enable_ldap=no
10133     else
10134         AC_MSG_RESULT([yes])
10135         ENABLE_LDAP="TRUE"
10136     fi
10138 AC_SUBST(ENABLE_LDAP)
10140 dnl ===================================================================
10141 dnl Check for system openldap
10142 dnl ===================================================================
10144 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10145 AC_MSG_CHECKING([which openldap library to use])
10146 if test "$with_system_openldap" = "yes"; then
10147     AC_MSG_RESULT([external])
10148     SYSTEM_OPENLDAP=TRUE
10149     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10150     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10151     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10152 else
10153     AC_MSG_RESULT([internal])
10154     SYSTEM_OPENLDAP=
10155     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10158 AC_SUBST(SYSTEM_OPENLDAP)
10160 dnl ===================================================================
10161 dnl Check for system NSS
10162 dnl ===================================================================
10163 if test "$enable_fuzzers" != "yes"; then
10164     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10165     AC_DEFINE(HAVE_FEATURE_NSS)
10166     ENABLE_NSS="TRUE"
10167     AC_DEFINE(ENABLE_NSS)
10168 elif test $_os != iOS ; then
10169     with_tls=openssl
10171 AC_SUBST(ENABLE_NSS)
10173 dnl ===================================================================
10174 dnl Check for TLS/SSL and cryptographic implementation to use
10175 dnl ===================================================================
10176 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10177 if test -n "$with_tls"; then
10178     case $with_tls in
10179     openssl)
10180         AC_DEFINE(USE_TLS_OPENSSL)
10181         TLS=OPENSSL
10182         AC_MSG_RESULT([$TLS])
10184         if test "$enable_openssl" != "yes"; then
10185             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10186         fi
10188         # warn that OpenSSL has been selected but not all TLS code has this option
10189         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10190         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10191         ;;
10192     nss)
10193         AC_DEFINE(USE_TLS_NSS)
10194         TLS=NSS
10195         AC_MSG_RESULT([$TLS])
10196         ;;
10197     no)
10198         AC_MSG_RESULT([none])
10199         AC_MSG_WARN([Skipping TLS/SSL])
10200         ;;
10201     *)
10202         AC_MSG_RESULT([])
10203         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10204 openssl - OpenSSL
10205 nss - Mozilla's Network Security Services (NSS)
10206     ])
10207         ;;
10208     esac
10209 else
10210     # default to using NSS, it results in smaller oox lib
10211     AC_DEFINE(USE_TLS_NSS)
10212     TLS=NSS
10213     AC_MSG_RESULT([$TLS])
10215 AC_SUBST(TLS)
10217 dnl ===================================================================
10218 dnl Check for system sane
10219 dnl ===================================================================
10220 AC_MSG_CHECKING([which sane header to use])
10221 if test "$with_system_sane" = "yes"; then
10222     AC_MSG_RESULT([external])
10223     AC_CHECK_HEADER(sane/sane.h, [],
10224       [AC_MSG_ERROR(sane not found. install sane)], [])
10225 else
10226     AC_MSG_RESULT([internal])
10227     BUILD_TYPE="$BUILD_TYPE SANE"
10230 dnl ===================================================================
10231 dnl Check for system icu
10232 dnl ===================================================================
10233 SYSTEM_GENBRK=
10234 SYSTEM_GENCCODE=
10235 SYSTEM_GENCMN=
10237 ICU_MAJOR=68
10238 ICU_MINOR=1
10239 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10240 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10241 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10242 AC_MSG_CHECKING([which icu to use])
10243 if test "$with_system_icu" = "yes"; then
10244     AC_MSG_RESULT([external])
10245     SYSTEM_ICU=TRUE
10246     AC_LANG_PUSH([C++])
10247     AC_MSG_CHECKING([for unicode/rbbi.h])
10248     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10249     AC_LANG_POP([C++])
10251     if test "$cross_compiling" != "yes"; then
10252         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10253         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10254         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10255         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10256     fi
10258     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10259         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10260         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10261         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10262         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10263         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10264             AC_MSG_RESULT([yes])
10265         else
10266             AC_MSG_RESULT([no])
10267             if test "$with_system_icu_for_build" != "force"; then
10268                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10269 You can use --with-system-icu-for-build=force to use it anyway.])
10270             fi
10271         fi
10272     fi
10274     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10275         # using the system icu tools can lead to version confusion, use the
10276         # ones from the build environment when cross-compiling
10277         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10278         if test -z "$SYSTEM_GENBRK"; then
10279             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10280         fi
10281         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10282         if test -z "$SYSTEM_GENCCODE"; then
10283             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10284         fi
10285         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10286         if test -z "$SYSTEM_GENCMN"; then
10287             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10288         fi
10289         if test "$ICU_MAJOR" -ge "49"; then
10290             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10291             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10292             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10293         else
10294             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10295             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10296             ICU_RECLASSIFIED_HEBREW_LETTER=
10297         fi
10298     fi
10300     if test "$cross_compiling" = "yes"; then
10301         if test "$ICU_MAJOR" -ge "50"; then
10302             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10303             ICU_MINOR=""
10304         fi
10305     fi
10306 else
10307     AC_MSG_RESULT([internal])
10308     SYSTEM_ICU=
10309     BUILD_TYPE="$BUILD_TYPE ICU"
10310     # surprisingly set these only for "internal" (to be used by various other
10311     # external libs): the system icu-config is quite unhelpful and spits out
10312     # dozens of weird flags and also default path -I/usr/include
10313     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10314     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10316 if test "$ICU_MAJOR" -ge "59"; then
10317     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10318     # with -std=c++11 but not all external libraries can be built with that,
10319     # for those use a bit-compatible typedef uint16_t UChar; see
10320     # icu/source/common/unicode/umachine.h
10321     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10322 else
10323     ICU_UCHAR_TYPE=""
10325 AC_SUBST(SYSTEM_ICU)
10326 AC_SUBST(SYSTEM_GENBRK)
10327 AC_SUBST(SYSTEM_GENCCODE)
10328 AC_SUBST(SYSTEM_GENCMN)
10329 AC_SUBST(ICU_MAJOR)
10330 AC_SUBST(ICU_MINOR)
10331 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10332 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10333 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10334 AC_SUBST(ICU_CFLAGS)
10335 AC_SUBST(ICU_LIBS)
10336 AC_SUBST(ICU_UCHAR_TYPE)
10338 dnl ==================================================================
10339 dnl Breakpad
10340 dnl ==================================================================
10341 DEFAULT_CRASHDUMP_VALUE="true"
10342 AC_MSG_CHECKING([whether to enable breakpad])
10343 if test "$enable_breakpad" != yes; then
10344     AC_MSG_RESULT([no])
10345 else
10346     AC_MSG_RESULT([yes])
10347     ENABLE_BREAKPAD="TRUE"
10348     AC_DEFINE(ENABLE_BREAKPAD)
10349     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10350     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10352     AC_MSG_CHECKING([for disable crash dump])
10353     if test "$enable_crashdump" = no; then
10354         DEFAULT_CRASHDUMP_VALUE="false"
10355         AC_MSG_RESULT([yes])
10356     else
10357        AC_MSG_RESULT([no])
10358     fi
10360     AC_MSG_CHECKING([for crashreport config])
10361     if test "$with_symbol_config" = "no"; then
10362         BREAKPAD_SYMBOL_CONFIG="invalid"
10363         AC_MSG_RESULT([no])
10364     else
10365         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10366         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10367         AC_MSG_RESULT([yes])
10368     fi
10369     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10371 AC_SUBST(ENABLE_BREAKPAD)
10372 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10374 dnl ==================================================================
10375 dnl libfuzzer
10376 dnl ==================================================================
10377 AC_MSG_CHECKING([whether to enable fuzzers])
10378 if test "$enable_fuzzers" != yes; then
10379     AC_MSG_RESULT([no])
10380 else
10381     AC_MSG_RESULT([yes])
10382     ENABLE_FUZZERS="TRUE"
10383     AC_DEFINE([ENABLE_FUZZERS],1)
10384     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10386 AC_SUBST(ENABLE_FUZZERS)
10388 dnl ===================================================================
10389 dnl Orcus
10390 dnl ===================================================================
10391 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10392 if test "$with_system_orcus" != "yes"; then
10393     if test "$SYSTEM_BOOST" = "TRUE"; then
10394         # ===========================================================
10395         # Determine if we are going to need to link with Boost.System
10396         # ===========================================================
10397         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10398         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10399         dnl in documentation has no effect.
10400         AC_MSG_CHECKING([if we need to link with Boost.System])
10401         AC_LANG_PUSH([C++])
10402         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10403                 @%:@include <boost/version.hpp>
10404             ]],[[
10405                 #if BOOST_VERSION >= 105000
10406                 #   error yes, we need to link with Boost.System
10407                 #endif
10408             ]])],[
10409                 AC_MSG_RESULT([no])
10410             ],[
10411                 AC_MSG_RESULT([yes])
10412                 AX_BOOST_SYSTEM
10413         ])
10414         AC_LANG_POP([C++])
10415     fi
10417 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10418 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10419 AC_SUBST([BOOST_SYSTEM_LIB])
10420 AC_SUBST(SYSTEM_LIBORCUS)
10422 dnl ===================================================================
10423 dnl HarfBuzz
10424 dnl ===================================================================
10425 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10426                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10427                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10429 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10430                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10431                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10433 if test "$COM" = "MSC"; then # override the above
10434     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10435     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10438 if test "$with_system_harfbuzz" = "yes"; then
10439     if test "$with_system_graphite" = "no"; then
10440         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10441     fi
10442     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10443     save_LIBS="$LIBS"
10444     save_CFLAGS="$CFLAGS"
10445     LIBS="$LIBS $HARFBUZZ_LIBS"
10446     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10447     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10448     LIBS="$save_LIBS"
10449     CFLAGS="$save_CFLAGS"
10450 else
10451     if test "$with_system_graphite" = "yes"; then
10452         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10453     fi
10456 AC_MSG_CHECKING([whether to use X11])
10457 dnl ***************************************
10458 dnl testing for X libraries and includes...
10459 dnl ***************************************
10460 if test "$USING_X11" = TRUE; then
10461     AC_DEFINE(HAVE_FEATURE_X11)
10463 AC_MSG_RESULT([$USING_X11])
10465 if test "$USING_X11" = TRUE; then
10466     AC_PATH_X
10467     AC_PATH_XTRA
10468     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10470     if test -z "$x_includes"; then
10471         x_includes="default_x_includes"
10472     fi
10473     if test -z "$x_libraries"; then
10474         x_libraries="default_x_libraries"
10475     fi
10476     CFLAGS="$CFLAGS $X_CFLAGS"
10477     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10478     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10479 else
10480     x_includes="no_x_includes"
10481     x_libraries="no_x_libraries"
10484 if test "$USING_X11" = TRUE; then
10485     dnl ===================================================================
10486     dnl Check for extension headers
10487     dnl ===================================================================
10488     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10489      [#include <X11/extensions/shape.h>])
10491     # vcl needs ICE and SM
10492     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10493     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10494         [AC_MSG_ERROR(ICE library not found)])
10495     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10496     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10497         [AC_MSG_ERROR(SM library not found)])
10500 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10501     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10502     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10505 dnl ===================================================================
10506 dnl Check for system Xrender
10507 dnl ===================================================================
10508 AC_MSG_CHECKING([whether to use Xrender])
10509 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10510     AC_MSG_RESULT([yes])
10511     PKG_CHECK_MODULES(XRENDER, xrender)
10512     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10513     FilterLibs "${XRENDER_LIBS}"
10514     XRENDER_LIBS="${filteredlibs}"
10515     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10516       [AC_MSG_ERROR(libXrender not found or functional)], [])
10517     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10518       [AC_MSG_ERROR(Xrender not found. install X)], [])
10519 else
10520     AC_MSG_RESULT([no])
10522 AC_SUBST(XRENDER_CFLAGS)
10523 AC_SUBST(XRENDER_LIBS)
10525 dnl ===================================================================
10526 dnl Check for XRandr
10527 dnl ===================================================================
10528 AC_MSG_CHECKING([whether to enable RandR support])
10529 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10530     AC_MSG_RESULT([yes])
10531     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10532     if test "$ENABLE_RANDR" != "TRUE"; then
10533         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10534                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10535         XRANDR_CFLAGS=" "
10536         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10537           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10538         XRANDR_LIBS="-lXrandr "
10539         ENABLE_RANDR="TRUE"
10540     fi
10541     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10542     FilterLibs "${XRANDR_LIBS}"
10543     XRANDR_LIBS="${filteredlibs}"
10544 else
10545     ENABLE_RANDR=""
10546     AC_MSG_RESULT([no])
10548 AC_SUBST(XRANDR_CFLAGS)
10549 AC_SUBST(XRANDR_LIBS)
10550 AC_SUBST(ENABLE_RANDR)
10552 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10553     if test -z "$WITH_WEBDAV"; then
10554         WITH_WEBDAV="serf"
10555     fi
10557 if test $_os = iOS -o $_os = Android; then
10558     WITH_WEBDAV="no"
10560 AC_MSG_CHECKING([for webdav library])
10561 case "$WITH_WEBDAV" in
10562 serf)
10563     AC_MSG_RESULT([serf])
10564     # Check for system apr-util
10565     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10566                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10567                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10568     if test "$COM" = "MSC"; then
10569         APR_LIB_DIR="LibR"
10570         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10571         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10572     fi
10574     # Check for system serf
10575     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10576                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10577     if test "$COM" = "MSC"; then
10578         SERF_LIB_DIR="Release"
10579         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10580         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10581     fi
10582     ;;
10583 neon)
10584     AC_MSG_RESULT([neon])
10585     # Check for system neon
10586     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10587     if test "$with_system_neon" = "yes"; then
10588         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10589     else
10590         NEON_VERSION=0311
10591     fi
10592     AC_SUBST(NEON_VERSION)
10593     ;;
10595     AC_MSG_RESULT([none, disabled])
10596     WITH_WEBDAV=""
10597     ;;
10598 esac
10599 AC_SUBST(WITH_WEBDAV)
10601 dnl ===================================================================
10602 dnl Check for disabling cve_tests
10603 dnl ===================================================================
10604 AC_MSG_CHECKING([whether to execute CVE tests])
10605 # If not explicitly enabled or disabled, default
10606 if test -z "$enable_cve_tests"; then
10607     case "$OS" in
10608     WNT)
10609         # Default cves off for Windows with its wild and wonderful
10610         # variety of AV software kicking in and panicking
10611         enable_cve_tests=no
10612         ;;
10613     *)
10614         # otherwise yes
10615         enable_cve_tests=yes
10616         ;;
10617     esac
10619 if test "$enable_cve_tests" = "no"; then
10620     AC_MSG_RESULT([no])
10621     DISABLE_CVE_TESTS=TRUE
10622     AC_SUBST(DISABLE_CVE_TESTS)
10623 else
10624     AC_MSG_RESULT([yes])
10627 dnl ===================================================================
10628 dnl Check for enabling chart XShape tests
10629 dnl ===================================================================
10630 AC_MSG_CHECKING([whether to execute chart XShape tests])
10631 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10632     AC_MSG_RESULT([yes])
10633     ENABLE_CHART_TESTS=TRUE
10634     AC_SUBST(ENABLE_CHART_TESTS)
10635 else
10636     AC_MSG_RESULT([no])
10639 dnl ===================================================================
10640 dnl Check for system openssl
10641 dnl ===================================================================
10642 DISABLE_OPENSSL=
10643 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10644 if test "$enable_openssl" = "yes"; then
10645     AC_MSG_RESULT([no])
10646     if test "$_os" = Darwin ; then
10647         # OpenSSL is deprecated when building for 10.7 or later.
10648         #
10649         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10650         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10652         with_system_openssl=no
10653         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10654     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10655             && test "$with_system_openssl" != "no"; then
10656         with_system_openssl=yes
10657         SYSTEM_OPENSSL=TRUE
10658         OPENSSL_CFLAGS=
10659         OPENSSL_LIBS="-lssl -lcrypto"
10660     else
10661         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10662     fi
10663     if test "$with_system_openssl" = "yes"; then
10664         AC_MSG_CHECKING([whether openssl supports SHA512])
10665         AC_LANG_PUSH([C])
10666         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10667             SHA512_CTX context;
10668 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10669         AC_LANG_POP(C)
10670     fi
10671 else
10672     AC_MSG_RESULT([yes])
10673     DISABLE_OPENSSL=TRUE
10675     # warn that although OpenSSL is disabled, system libraries may depend on it
10676     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10677     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10680 AC_SUBST([DISABLE_OPENSSL])
10682 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10683     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10684         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10685         enable_cipher_openssl_backend=no
10686     else
10687         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10688     fi
10690 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10691 ENABLE_CIPHER_OPENSSL_BACKEND=
10692 if test "$enable_cipher_openssl_backend" = yes; then
10693     AC_MSG_RESULT([yes])
10694     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10695 else
10696     AC_MSG_RESULT([no])
10698 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10700 dnl ===================================================================
10701 dnl Check for building gnutls
10702 dnl ===================================================================
10703 AC_MSG_CHECKING([whether to use gnutls])
10704 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10705     AC_MSG_RESULT([yes])
10706     AM_PATH_LIBGCRYPT()
10707     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10708         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10709                       available in the system to use as replacement.]]))
10710     FilterLibs "${LIBGCRYPT_LIBS}"
10711     LIBGCRYPT_LIBS="${filteredlibs}"
10712 else
10713     AC_MSG_RESULT([no])
10716 AC_SUBST([LIBGCRYPT_CFLAGS])
10717 AC_SUBST([LIBGCRYPT_LIBS])
10719 dnl ===================================================================
10720 dnl Check for system redland
10721 dnl ===================================================================
10722 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10723 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10724 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10725 if test "$with_system_redland" = "yes"; then
10726     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10727             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10728 else
10729     RAPTOR_MAJOR="0"
10730     RASQAL_MAJOR="3"
10731     REDLAND_MAJOR="0"
10733 AC_SUBST(RAPTOR_MAJOR)
10734 AC_SUBST(RASQAL_MAJOR)
10735 AC_SUBST(REDLAND_MAJOR)
10737 dnl ===================================================================
10738 dnl Check for system hunspell
10739 dnl ===================================================================
10740 AC_MSG_CHECKING([which libhunspell to use])
10741 if test "$_os" = iOS; then
10742    AC_MSG_RESULT([none])
10743 elif test "$with_system_hunspell" = "yes"; then
10744     AC_MSG_RESULT([external])
10745     SYSTEM_HUNSPELL=TRUE
10746     AC_LANG_PUSH([C++])
10747     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10748     if test "$HUNSPELL_PC" != "TRUE"; then
10749         AC_CHECK_HEADER(hunspell.hxx, [],
10750             [
10751             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10752             [AC_MSG_ERROR(hunspell headers not found.)], [])
10753             ], [])
10754         AC_CHECK_LIB([hunspell], [main], [:],
10755            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10756         HUNSPELL_LIBS=-lhunspell
10757     fi
10758     AC_LANG_POP([C++])
10759     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10760     FilterLibs "${HUNSPELL_LIBS}"
10761     HUNSPELL_LIBS="${filteredlibs}"
10762 else
10763     AC_MSG_RESULT([internal])
10764     SYSTEM_HUNSPELL=
10765     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10766     if test "$COM" = "MSC"; then
10767         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10768     else
10769         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10770     fi
10771     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10773 AC_SUBST(SYSTEM_HUNSPELL)
10774 AC_SUBST(HUNSPELL_CFLAGS)
10775 AC_SUBST(HUNSPELL_LIBS)
10777 dnl ===================================================================
10778 dnl Check for system qrcodegen
10779 dnl ===================================================================
10780 AC_MSG_CHECKING([whether to use libqrcodegen])
10781 if test "$enable_qrcodegen" = "no"; then
10782     AC_MSG_RESULT([no])
10783     ENABLE_QRCODEGEN=
10784     SYSTEM_QRCODEGEN=
10785 else
10786     AC_MSG_RESULT([yes])
10787     ENABLE_QRCODEGEN=TRUE
10788     AC_MSG_CHECKING([which libqrcodegen to use])
10789     if test "$with_system_qrcodegen" = "yes"; then
10790         AC_MSG_RESULT([external])
10791         SYSTEM_QRCODEGEN=TRUE
10792         AC_LANG_PUSH([C++])
10793         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10794             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10795         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10796             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10797         QRCODEGEN_LIBS=-lqrcodegencpp
10798         AC_LANG_POP([C++])
10799         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10800         FilterLibs "${QRCODEGEN_LIBS}"
10801         QRCODEGEN_LIBS="${filteredlibs}"
10802     else
10803         AC_MSG_RESULT([internal])
10804         SYSTEM_QRCODEGEN=
10805         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10806     fi
10807     if test "$ENABLE_QRCODEGEN" = TRUE; then
10808         AC_DEFINE(ENABLE_QRCODEGEN)
10809     fi
10811 AC_SUBST(SYSTEM_QRCODEGEN)
10812 AC_SUBST(ENABLE_QRCODEGEN)
10813 AC_SUBST(QRCODEGEN_CFLAGS)
10814 AC_SUBST(QRCODEGEN_LIBS)
10816 dnl ===================================================================
10817 dnl Check for system box2d
10818 dnl ===================================================================
10819 AC_MSG_CHECKING([which box2d to use])
10820 if test "$with_system_box2d" = "yes"; then
10821     AC_MSG_RESULT([external])
10822     SYSTEM_BOX2D=TRUE
10823     AC_LANG_PUSH([C++])
10824     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10825         [BOX2D_H_FOUND='FALSE'])
10826     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10827         _BOX2D_LIB=box2d
10828         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10829     else
10830         # fail this. there's no other alternative to check when we are here.
10831         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10832                 [AC_MSG_ERROR(box2d headers not found.)])
10833         _BOX2D_LIB=Box2D
10834         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10835     fi
10836     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10837         [ AC_MSG_ERROR(box2d library not found.) ], [])
10838     BOX2D_LIBS=-l$_BOX2D_LIB
10839     AC_LANG_POP([C++])
10840     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10841     FilterLibs "${BOX2D_LIBS}"
10842     BOX2D_LIBS="${filteredlibs}"
10843 else
10844     AC_MSG_RESULT([internal])
10845     SYSTEM_BOX2D=
10846     BUILD_TYPE="$BUILD_TYPE BOX2D"
10848 AC_SUBST(SYSTEM_BOX2D)
10849 AC_SUBST(BOX2D_CFLAGS)
10850 AC_SUBST(BOX2D_LIBS)
10852 dnl ===================================================================
10853 dnl Checking for altlinuxhyph
10854 dnl ===================================================================
10855 AC_MSG_CHECKING([which altlinuxhyph to use])
10856 if test "$with_system_altlinuxhyph" = "yes"; then
10857     AC_MSG_RESULT([external])
10858     SYSTEM_HYPH=TRUE
10859     AC_CHECK_HEADER(hyphen.h, [],
10860        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10861     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10862        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10863        [#include <hyphen.h>])
10864     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10865         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10866     if test -z "$HYPHEN_LIB"; then
10867         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10868            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10869     fi
10870     if test -z "$HYPHEN_LIB"; then
10871         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10872            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10873     fi
10874 else
10875     AC_MSG_RESULT([internal])
10876     SYSTEM_HYPH=
10877     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10878     if test "$COM" = "MSC"; then
10879         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10880     else
10881         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10882     fi
10884 AC_SUBST(SYSTEM_HYPH)
10885 AC_SUBST(HYPHEN_LIB)
10887 dnl ===================================================================
10888 dnl Checking for mythes
10889 dnl ===================================================================
10890 AC_MSG_CHECKING([which mythes to use])
10891 if test "$_os" = iOS; then
10892    AC_MSG_RESULT([none])
10893 elif test "$with_system_mythes" = "yes"; then
10894     AC_MSG_RESULT([external])
10895     SYSTEM_MYTHES=TRUE
10896     AC_LANG_PUSH([C++])
10897     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10898     if test "$MYTHES_PKGCONFIG" = "no"; then
10899         AC_CHECK_HEADER(mythes.hxx, [],
10900             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10901         AC_CHECK_LIB([mythes-1.2], [main], [:],
10902             [ MYTHES_FOUND=no], [])
10903     if test "$MYTHES_FOUND" = "no"; then
10904         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10905                 [ MYTHES_FOUND=no], [])
10906     fi
10907     if test "$MYTHES_FOUND" = "no"; then
10908         AC_MSG_ERROR([mythes library not found!.])
10909     fi
10910     fi
10911     AC_LANG_POP([C++])
10912     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10913     FilterLibs "${MYTHES_LIBS}"
10914     MYTHES_LIBS="${filteredlibs}"
10915 else
10916     AC_MSG_RESULT([internal])
10917     SYSTEM_MYTHES=
10918     BUILD_TYPE="$BUILD_TYPE MYTHES"
10919     if test "$COM" = "MSC"; then
10920         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10921     else
10922         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10923     fi
10925 AC_SUBST(SYSTEM_MYTHES)
10926 AC_SUBST(MYTHES_CFLAGS)
10927 AC_SUBST(MYTHES_LIBS)
10929 dnl ===================================================================
10930 dnl How should we build the linear programming solver ?
10931 dnl ===================================================================
10933 ENABLE_COINMP=
10934 AC_MSG_CHECKING([whether to build with CoinMP])
10935 if test "$enable_coinmp" != "no"; then
10936     ENABLE_COINMP=TRUE
10937     AC_MSG_RESULT([yes])
10938     if test "$with_system_coinmp" = "yes"; then
10939         SYSTEM_COINMP=TRUE
10940         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10941         FilterLibs "${COINMP_LIBS}"
10942         COINMP_LIBS="${filteredlibs}"
10943     else
10944         BUILD_TYPE="$BUILD_TYPE COINMP"
10945     fi
10946 else
10947     AC_MSG_RESULT([no])
10949 AC_SUBST(ENABLE_COINMP)
10950 AC_SUBST(SYSTEM_COINMP)
10951 AC_SUBST(COINMP_CFLAGS)
10952 AC_SUBST(COINMP_LIBS)
10954 ENABLE_LPSOLVE=
10955 AC_MSG_CHECKING([whether to build with lpsolve])
10956 if test "$enable_lpsolve" != "no"; then
10957     ENABLE_LPSOLVE=TRUE
10958     AC_MSG_RESULT([yes])
10959 else
10960     AC_MSG_RESULT([no])
10962 AC_SUBST(ENABLE_LPSOLVE)
10964 if test "$ENABLE_LPSOLVE" = TRUE; then
10965     AC_MSG_CHECKING([which lpsolve to use])
10966     if test "$with_system_lpsolve" = "yes"; then
10967         AC_MSG_RESULT([external])
10968         SYSTEM_LPSOLVE=TRUE
10969         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10970            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10971         save_LIBS=$LIBS
10972         # some systems need this. Like Ubuntu...
10973         AC_CHECK_LIB(m, floor)
10974         AC_CHECK_LIB(dl, dlopen)
10975         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10976             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10977         LIBS=$save_LIBS
10978     else
10979         AC_MSG_RESULT([internal])
10980         SYSTEM_LPSOLVE=
10981         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10982     fi
10984 AC_SUBST(SYSTEM_LPSOLVE)
10986 dnl ===================================================================
10987 dnl Checking for libexttextcat
10988 dnl ===================================================================
10989 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10990 if test "$with_system_libexttextcat" = "yes"; then
10991     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10993 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10995 dnl ===================================================================
10996 dnl Checking for libnumbertext
10997 dnl ===================================================================
10998 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10999 if test "$with_system_libnumbertext" = "yes"; then
11000     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11001     SYSTEM_LIBNUMBERTEXT=YES
11002 else
11003     SYSTEM_LIBNUMBERTEXT=
11004     AC_LANG_PUSH([C++])
11005     save_CPPFLAGS=$CPPFLAGS
11006     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11007     AC_CHECK_HEADERS([codecvt regex])
11008     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11009             [ LIBNUMBERTEXT_CFLAGS=''
11010               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11011                            Enable libnumbertext fallback (missing number to number name conversion).])
11012             ])
11013     CPPFLAGS=$save_CPPFLAGS
11014     AC_LANG_POP([C++])
11016 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11017 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11018 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11020 dnl ***************************************
11021 dnl testing libc version for Linux...
11022 dnl ***************************************
11023 if test "$_os" = "Linux"; then
11024     AC_MSG_CHECKING([whether libc is >= 2.1.1])
11025     exec 6>/dev/null # no output
11026     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11027     exec 6>&1 # output on again
11028     if test "$HAVE_LIBC"; then
11029         AC_MSG_RESULT([yes])
11030     else
11031         AC_MSG_ERROR([no, upgrade libc])
11032     fi
11035 dnl =========================================
11036 dnl Check for uuidgen
11037 dnl =========================================
11038 if test "$_os" = "WINNT"; then
11039     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11040     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11041     UUIDGEN=uuidgen.exe
11042     AC_SUBST(UUIDGEN)
11043 else
11044     AC_PATH_PROG([UUIDGEN], [uuidgen])
11045     if test -z "$UUIDGEN"; then
11046         AC_MSG_WARN([uuid is needed for building installation sets])
11047     fi
11050 dnl ***************************************
11051 dnl Checking for bison and flex
11052 dnl ***************************************
11053 AC_PATH_PROG(BISON, bison)
11054 if test -z "$BISON"; then
11055     AC_MSG_ERROR([no bison found in \$PATH, install it])
11056 else
11057     AC_MSG_CHECKING([the bison version])
11058     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11059     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11060     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11061     dnl cause
11062     dnl
11063     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]
11064     dnl   typedef union YYSTYPE
11065     dnl           ~~~~~~^~~~~~~
11066     dnl
11067     dnl while at least 3.4.1 is know to be good:
11068     if test "$COMPILER_PLUGINS" = TRUE; then
11069         if test "$_bison_longver" -lt 2004; then
11070             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11071         fi
11072     else
11073         if test "$_bison_longver" -lt 2000; then
11074             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11075         fi
11076     fi
11078 AC_SUBST([BISON])
11080 AC_PATH_PROG(FLEX, flex)
11081 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11082     FLEX=`cygpath -m $FLEX`
11084 if test -z "$FLEX"; then
11085     AC_MSG_ERROR([no flex found in \$PATH, install it])
11086 else
11087     AC_MSG_CHECKING([the flex version])
11088     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11089     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11090         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11091     fi
11093 AC_SUBST([FLEX])
11094 dnl ***************************************
11095 dnl Checking for patch
11096 dnl ***************************************
11097 AC_PATH_PROG(PATCH, patch)
11098 if test -z "$PATCH"; then
11099     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11102 dnl On Solaris or macOS, check if --with-gnu-patch was used
11103 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11104     if test -z "$with_gnu_patch"; then
11105         GNUPATCH=$PATCH
11106     else
11107         if test -x "$with_gnu_patch"; then
11108             GNUPATCH=$with_gnu_patch
11109         else
11110             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11111         fi
11112     fi
11114     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11115     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11116         AC_MSG_RESULT([yes])
11117     else
11118         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11119     fi
11120 else
11121     GNUPATCH=$PATCH
11124 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11125     GNUPATCH=`cygpath -m $GNUPATCH`
11128 dnl We also need to check for --with-gnu-cp
11130 if test -z "$with_gnu_cp"; then
11131     # check the place where the good stuff is hidden on Solaris...
11132     if test -x /usr/gnu/bin/cp; then
11133         GNUCP=/usr/gnu/bin/cp
11134     else
11135         AC_PATH_PROGS(GNUCP, gnucp cp)
11136     fi
11137     if test -z $GNUCP; then
11138         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11139     fi
11140 else
11141     if test -x "$with_gnu_cp"; then
11142         GNUCP=$with_gnu_cp
11143     else
11144         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11145     fi
11148 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11149     GNUCP=`cygpath -m $GNUCP`
11152 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11153 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11154     AC_MSG_RESULT([yes])
11155 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11156     AC_MSG_RESULT([yes])
11157 else
11158     case "$build_os" in
11159     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11160         x_GNUCP=[\#]
11161         GNUCP=''
11162         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11163         ;;
11164     *)
11165         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11166         ;;
11167     esac
11170 AC_SUBST(GNUPATCH)
11171 AC_SUBST(GNUCP)
11172 AC_SUBST(x_GNUCP)
11174 dnl ***************************************
11175 dnl testing assembler path
11176 dnl ***************************************
11177 ML_EXE=""
11178 if test "$_os" = "WINNT"; then
11179     case "$WIN_HOST_ARCH" in
11180     x86) assembler=ml.exe ;;
11181     x64) assembler=ml64.exe ;;
11182     arm64) assembler=armasm64.exe ;;
11183     esac
11185     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11186     if test -f "$MSVC_HOST_PATH/$assembler"; then
11187         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11188         AC_MSG_RESULT([$ML_EXE])
11189     else
11190         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11191     fi
11194 AC_SUBST(ML_EXE)
11196 dnl ===================================================================
11197 dnl We need zip and unzip
11198 dnl ===================================================================
11199 AC_PATH_PROG(ZIP, zip)
11200 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11201 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11202     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],,)
11205 AC_PATH_PROG(UNZIP, unzip)
11206 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11208 dnl ===================================================================
11209 dnl Zip must be a specific type for different build types.
11210 dnl ===================================================================
11211 if test $build_os = cygwin; then
11212     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11213         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11214     fi
11217 dnl ===================================================================
11218 dnl We need touch with -h option support.
11219 dnl ===================================================================
11220 AC_PATH_PROG(TOUCH, touch)
11221 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11222 touch warn
11223 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11224     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],,)
11227 dnl ===================================================================
11228 dnl Check for system epoxy
11229 dnl ===================================================================
11230 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11232 dnl ===================================================================
11233 dnl Set vcl option: coordinate device in double or sal_Int32
11234 dnl ===================================================================
11236 dnl disabled for now, we don't want subtle differences between OSs
11237 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11238 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11239 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11240 dnl     AC_MSG_RESULT([double])
11241 dnl else
11242 dnl     AC_MSG_RESULT([sal_Int32])
11243 dnl fi
11245 dnl ===================================================================
11246 dnl Test which vclplugs have to be built.
11247 dnl ===================================================================
11248 R=""
11249 if test "$USING_X11" != TRUE; then
11250     enable_gtk3=no
11253 ENABLE_GTK3=""
11254 if test "x$enable_gtk3" = "xyes"; then
11255     ENABLE_GTK3="TRUE"
11256     AC_DEFINE(ENABLE_GTK3)
11257     R="$R gtk3"
11259 AC_SUBST(ENABLE_GTK3)
11261 ENABLE_GTK3_KDE5=""
11262 if test "x$enable_gtk3_kde5" = "xyes"; then
11263     ENABLE_GTK3_KDE5="TRUE"
11264     AC_DEFINE(ENABLE_GTK3_KDE5)
11265     R="$R gtk3_kde5"
11267 AC_SUBST(ENABLE_GTK3_KDE5)
11269 ENABLE_QT5=""
11270 if test "x$enable_qt5" = "xyes"; then
11271     ENABLE_QT5="TRUE"
11272     AC_DEFINE(ENABLE_QT5)
11273     R="$R qt5"
11275 AC_SUBST(ENABLE_QT5)
11277 ENABLE_KF5=""
11278 if test "x$enable_kf5" = "xyes"; then
11279     ENABLE_KF5="TRUE"
11280     AC_DEFINE(ENABLE_KF5)
11281     R="$R kf5"
11283 AC_SUBST(ENABLE_KF5)
11285 GTK3_CFLAGS=""
11286 GTK3_LIBS=""
11287 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11288     if test "$with_system_cairo" = no; then
11289         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11290     fi
11291     : ${with_system_cairo:=yes}
11292     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)
11293     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11294     FilterLibs "${GTK3_LIBS}"
11295     GTK3_LIBS="${filteredlibs}"
11297     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11298     if test "$with_system_epoxy" != "yes"; then
11299         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11300         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11301                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11302     fi
11304 AC_SUBST(GTK3_LIBS)
11305 AC_SUBST(GTK3_CFLAGS)
11307 if test "$enable_introspection" = yes; then
11308     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11309         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11310     else
11311         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11312     fi
11315 if test "$_os" = "WINNT"; then
11316     R="$R win"
11317 elif test "$_os" = "Darwin"; then
11318     R="$R osx"
11319 elif test "$_os" = "iOS"; then
11320     R="ios (builtin)"
11323 build_vcl_plugins="$R"
11324 if test -z "$build_vcl_plugins"; then
11325     build_vcl_plugins="none"
11327 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11329 dnl ===================================================================
11330 dnl check for dbus support
11331 dnl ===================================================================
11332 ENABLE_DBUS=""
11333 DBUS_CFLAGS=""
11334 DBUS_LIBS=""
11335 DBUS_GLIB_CFLAGS=""
11336 DBUS_GLIB_LIBS=""
11337 DBUS_HAVE_GLIB=""
11339 if test "$enable_dbus" = "no"; then
11340     test_dbus=no
11343 AC_MSG_CHECKING([whether to enable DBUS support])
11344 if test "$test_dbus" = "yes"; then
11345     ENABLE_DBUS="TRUE"
11346     AC_MSG_RESULT([yes])
11347     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11348     AC_DEFINE(ENABLE_DBUS)
11349     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11350     FilterLibs "${DBUS_LIBS}"
11351     DBUS_LIBS="${filteredlibs}"
11353     # Glib is needed for BluetoothServer
11354     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11355     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11356         [
11357             DBUS_HAVE_GLIB="TRUE"
11358             AC_DEFINE(DBUS_HAVE_GLIB,1)
11359         ],
11360         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11361     )
11362 else
11363     AC_MSG_RESULT([no])
11366 AC_SUBST(ENABLE_DBUS)
11367 AC_SUBST(DBUS_CFLAGS)
11368 AC_SUBST(DBUS_LIBS)
11369 AC_SUBST(DBUS_GLIB_CFLAGS)
11370 AC_SUBST(DBUS_GLIB_LIBS)
11371 AC_SUBST(DBUS_HAVE_GLIB)
11373 AC_MSG_CHECKING([whether to enable Impress remote control])
11374 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11375     AC_MSG_RESULT([yes])
11376     ENABLE_SDREMOTE=TRUE
11377     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11379     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11380         # The Bluetooth code doesn't compile with macOS SDK 10.15
11381         if test "$enable_sdremote_bluetooth" = yes; then
11382             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11383         fi
11384         enable_sdremote_bluetooth=no
11385     fi
11386     # If not explicitly enabled or disabled, default
11387     if test -z "$enable_sdremote_bluetooth"; then
11388         case "$OS" in
11389         LINUX|MACOSX|WNT)
11390             # Default to yes for these
11391             enable_sdremote_bluetooth=yes
11392             ;;
11393         *)
11394             # otherwise no
11395             enable_sdremote_bluetooth=no
11396             ;;
11397         esac
11398     fi
11399     # $enable_sdremote_bluetooth is guaranteed non-empty now
11401     if test "$enable_sdremote_bluetooth" != "no"; then
11402         if test "$OS" = "LINUX"; then
11403             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11404                 AC_MSG_RESULT([yes])
11405                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11406                 dnl ===================================================================
11407                 dnl Check for system bluez
11408                 dnl ===================================================================
11409                 AC_MSG_CHECKING([which Bluetooth header to use])
11410                 if test "$with_system_bluez" = "yes"; then
11411                     AC_MSG_RESULT([external])
11412                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11413                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11414                     SYSTEM_BLUEZ=TRUE
11415                 else
11416                     AC_MSG_RESULT([internal])
11417                     SYSTEM_BLUEZ=
11418                 fi
11419             else
11420                 AC_MSG_RESULT([no, dbus disabled])
11421                 ENABLE_SDREMOTE_BLUETOOTH=
11422                 SYSTEM_BLUEZ=
11423             fi
11424         else
11425             AC_MSG_RESULT([yes])
11426             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11427             SYSTEM_BLUEZ=
11428         fi
11429     else
11430         AC_MSG_RESULT([no])
11431         ENABLE_SDREMOTE_BLUETOOTH=
11432         SYSTEM_BLUEZ=
11433     fi
11434 else
11435     ENABLE_SDREMOTE=
11436     SYSTEM_BLUEZ=
11437     AC_MSG_RESULT([no])
11439 AC_SUBST(ENABLE_SDREMOTE)
11440 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11441 AC_SUBST(SYSTEM_BLUEZ)
11443 dnl ===================================================================
11444 dnl Check whether to enable GIO support
11445 dnl ===================================================================
11446 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11447     AC_MSG_CHECKING([whether to enable GIO support])
11448     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11449         dnl Need at least 2.26 for the dbus support.
11450         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11451                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11452         if test "$ENABLE_GIO" = "TRUE"; then
11453             AC_DEFINE(ENABLE_GIO)
11454             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11455             FilterLibs "${GIO_LIBS}"
11456             GIO_LIBS="${filteredlibs}"
11457         fi
11458     else
11459         AC_MSG_RESULT([no])
11460     fi
11462 AC_SUBST(ENABLE_GIO)
11463 AC_SUBST(GIO_CFLAGS)
11464 AC_SUBST(GIO_LIBS)
11467 dnl ===================================================================
11469 SPLIT_APP_MODULES=""
11470 if test "$enable_split_app_modules" = "yes"; then
11471     SPLIT_APP_MODULES="TRUE"
11473 AC_SUBST(SPLIT_APP_MODULES)
11475 SPLIT_OPT_FEATURES=""
11476 if test "$enable_split_opt_features" = "yes"; then
11477     SPLIT_OPT_FEATURES="TRUE"
11479 AC_SUBST(SPLIT_OPT_FEATURES)
11481 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11482     if test "$enable_cairo_canvas" = yes; then
11483         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11484     fi
11485     enable_cairo_canvas=no
11486 elif test -z "$enable_cairo_canvas"; then
11487     enable_cairo_canvas=yes
11490 ENABLE_CAIRO_CANVAS=""
11491 if test "$enable_cairo_canvas" = "yes"; then
11492     test_cairo=yes
11493     ENABLE_CAIRO_CANVAS="TRUE"
11494     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11496 AC_SUBST(ENABLE_CAIRO_CANVAS)
11498 dnl ===================================================================
11499 dnl Check whether the GStreamer libraries are available.
11500 dnl ===================================================================
11502 ENABLE_GSTREAMER_1_0=""
11504 if test "$build_gstreamer_1_0" = "yes"; then
11506     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11507     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11508         ENABLE_GSTREAMER_1_0="TRUE"
11509         AC_MSG_RESULT([yes])
11510         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11511         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11512         FilterLibs "${GSTREAMER_1_0_LIBS}"
11513         GSTREAMER_1_0_LIBS="${filteredlibs}"
11514         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11515     else
11516         AC_MSG_RESULT([no])
11517     fi
11519 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11520 AC_SUBST(GSTREAMER_1_0_LIBS)
11521 AC_SUBST(ENABLE_GSTREAMER_1_0)
11523 dnl ===================================================================
11524 dnl Check whether to build the VLC avmedia backend
11525 dnl ===================================================================
11527 ENABLE_VLC=""
11529 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11530 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11531     ENABLE_VLC="TRUE"
11532     AC_MSG_RESULT([yes])
11533 else
11534     AC_MSG_RESULT([no])
11536 AC_SUBST(ENABLE_VLC)
11538 ENABLE_OPENGL_TRANSITIONS=
11539 ENABLE_OPENGL_CANVAS=
11540 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11541    : # disable
11542 elif test "$_os" = "Darwin"; then
11543     # We use frameworks on macOS, no need for detail checks
11544     ENABLE_OPENGL_TRANSITIONS=TRUE
11545     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11546     ENABLE_OPENGL_CANVAS=TRUE
11547 elif test $_os = WINNT; then
11548     ENABLE_OPENGL_TRANSITIONS=TRUE
11549     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11550     ENABLE_OPENGL_CANVAS=TRUE
11551 else
11552     if test "$USING_X11" = TRUE; then
11553         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11554         ENABLE_OPENGL_TRANSITIONS=TRUE
11555         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11556         ENABLE_OPENGL_CANVAS=TRUE
11557     fi
11560 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11561 AC_SUBST(ENABLE_OPENGL_CANVAS)
11563 dnl =================================================
11564 dnl Check whether to build with OpenCL support.
11565 dnl =================================================
11567 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11568     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11569     # platform (optional at run-time, used through clew).
11570     BUILD_TYPE="$BUILD_TYPE OPENCL"
11571     AC_DEFINE(HAVE_FEATURE_OPENCL)
11574 dnl =================================================
11575 dnl Check whether to build with dconf support.
11576 dnl =================================================
11578 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11579     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11580         if test "$enable_dconf" = yes; then
11581             AC_MSG_ERROR([dconf not found])
11582         else
11583             enable_dconf=no
11584         fi])
11586 AC_MSG_CHECKING([whether to enable dconf])
11587 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11588     DCONF_CFLAGS=
11589     DCONF_LIBS=
11590     ENABLE_DCONF=
11591     AC_MSG_RESULT([no])
11592 else
11593     ENABLE_DCONF=TRUE
11594     AC_DEFINE(ENABLE_DCONF)
11595     AC_MSG_RESULT([yes])
11597 AC_SUBST([DCONF_CFLAGS])
11598 AC_SUBST([DCONF_LIBS])
11599 AC_SUBST([ENABLE_DCONF])
11601 # pdf import?
11602 AC_MSG_CHECKING([whether to build the PDF import feature])
11603 ENABLE_PDFIMPORT=
11604 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11605     AC_MSG_RESULT([yes])
11606     ENABLE_PDFIMPORT=TRUE
11607     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11608 else
11609     AC_MSG_RESULT([no])
11612 # Pdfium?
11613 AC_MSG_CHECKING([whether to build PDFium])
11614 ENABLE_PDFIUM=
11615 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11616     AC_MSG_RESULT([yes])
11617     ENABLE_PDFIUM=TRUE
11618     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11619     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11620 else
11621     AC_MSG_RESULT([no])
11623 AC_SUBST(ENABLE_PDFIUM)
11625 dnl ===================================================================
11626 dnl Check for poppler
11627 dnl ===================================================================
11628 ENABLE_POPPLER=
11629 AC_MSG_CHECKING([whether to build Poppler])
11630 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11631     AC_MSG_RESULT([yes])
11632     ENABLE_POPPLER=TRUE
11633     AC_DEFINE(HAVE_FEATURE_POPPLER)
11634 else
11635     AC_MSG_RESULT([no])
11637 AC_SUBST(ENABLE_POPPLER)
11639 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11640     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11643 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11644     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11647 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11648     dnl ===================================================================
11649     dnl Check for system poppler
11650     dnl ===================================================================
11651     AC_MSG_CHECKING([which PDF import poppler to use])
11652     if test "$with_system_poppler" = "yes"; then
11653         AC_MSG_RESULT([external])
11654         SYSTEM_POPPLER=TRUE
11655         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11656         AC_LANG_PUSH([C++])
11657         save_CXXFLAGS=$CXXFLAGS
11658         save_CPPFLAGS=$CPPFLAGS
11659         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11660         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11661         AC_CHECK_HEADER([cpp/poppler-version.h],
11662             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11663             [])
11664         CXXFLAGS=$save_CXXFLAGS
11665         CPPFLAGS=$save_CPPFLAGS
11666         AC_LANG_POP([C++])
11667         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11669         FilterLibs "${POPPLER_LIBS}"
11670         POPPLER_LIBS="${filteredlibs}"
11671     else
11672         AC_MSG_RESULT([internal])
11673         SYSTEM_POPPLER=
11674         BUILD_TYPE="$BUILD_TYPE POPPLER"
11675         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11676     fi
11677     AC_DEFINE([ENABLE_PDFIMPORT],1)
11679 AC_SUBST(ENABLE_PDFIMPORT)
11680 AC_SUBST(SYSTEM_POPPLER)
11681 AC_SUBST(POPPLER_CFLAGS)
11682 AC_SUBST(POPPLER_LIBS)
11684 # Skia?
11685 AC_MSG_CHECKING([whether to build Skia])
11686 ENABLE_SKIA=
11687 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11688     if test "$enable_skia" = "debug"; then
11689         AC_MSG_RESULT([yes (debug)])
11690         ENABLE_SKIA_DEBUG=TRUE
11691     else
11692         AC_MSG_RESULT([yes])
11693         ENABLE_SKIA_DEBUG=
11694     fi
11695     ENABLE_SKIA=TRUE
11696     AC_DEFINE(HAVE_FEATURE_SKIA)
11697     BUILD_TYPE="$BUILD_TYPE SKIA"
11698 else
11699     AC_MSG_RESULT([no])
11701 AC_SUBST(ENABLE_SKIA)
11702 AC_SUBST(ENABLE_SKIA_DEBUG)
11704 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11705 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11706 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11707 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11708 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11709 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11710 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11711 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11712 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11714 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11715     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11716         AC_MSG_CHECKING([for Clang])
11717         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11718     else
11719         if test "$_os" = "WINNT"; then
11720             AC_MSG_CHECKING([for clang-cl])
11721             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11722                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11723                 dnl explicitly set -m32/-m64
11724                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11725                 LO_CLANG_CXX="$LO_CLANG_CC"
11726                 AC_MSG_RESULT([$LO_CLANG_CC])
11727             else
11728                 AC_MSG_RESULT([no])
11729             fi
11730         else
11731             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11732             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11733         fi
11734     fi
11735     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11736         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11737         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11738         if test "$clang2_ver" -lt 50002; then
11739             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11740             LO_CLANG_CC=
11741             LO_CLANG_CXX=
11742         fi
11743     fi
11744     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11745         # Skia is the default on Windows, so hard-require Clang.
11746         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11747         if test "$_os" = "WINNT"; then
11748             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11749         else
11750             AC_MSG_WARN([Clang compiler not found.])
11751         fi
11752     else
11754         save_CXX="$CXX"
11755         CXX="$LO_CLANG_CXX"
11756         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11757         flag_sse2=-msse2
11758         flag_ssse3=-mssse3
11759         flag_sse41=-msse4.1
11760         flag_sse42=-msse4.2
11761         flag_avx=-mavx
11762         flag_avx2=-mavx2
11763         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11764         flag_f16c=-mf16c
11765         flag_fma=-mfma
11767         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11768         AC_LANG_PUSH([C++])
11769         save_CXXFLAGS=$CXXFLAGS
11770         CXXFLAGS="$CXXFLAGS $flag_sse2"
11771         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11772             #include <emmintrin.h>
11773             int main () {
11774                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11775                 c = _mm_xor_si128 (a, b);
11776                 return 0;
11777             }
11778             ])],
11779             [can_compile_sse2=yes],
11780             [can_compile_sse2=no])
11781         AC_LANG_POP([C++])
11782         CXXFLAGS=$save_CXXFLAGS
11783         AC_MSG_RESULT([${can_compile_sse2}])
11784         if test "${can_compile_sse2}" = "yes" ; then
11785             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11786         fi
11788         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11789         AC_LANG_PUSH([C++])
11790         save_CXXFLAGS=$CXXFLAGS
11791         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11792         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11793             #include <tmmintrin.h>
11794             int main () {
11795                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11796                 c = _mm_maddubs_epi16 (a, b);
11797                 return 0;
11798             }
11799             ])],
11800             [can_compile_ssse3=yes],
11801             [can_compile_ssse3=no])
11802         AC_LANG_POP([C++])
11803         CXXFLAGS=$save_CXXFLAGS
11804         AC_MSG_RESULT([${can_compile_ssse3}])
11805         if test "${can_compile_ssse3}" = "yes" ; then
11806             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11807         fi
11809         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11810         AC_LANG_PUSH([C++])
11811         save_CXXFLAGS=$CXXFLAGS
11812         CXXFLAGS="$CXXFLAGS $flag_sse41"
11813         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11814             #include <smmintrin.h>
11815             int main () {
11816                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11817                 c = _mm_cmpeq_epi64 (a, b);
11818                 return 0;
11819             }
11820             ])],
11821             [can_compile_sse41=yes],
11822             [can_compile_sse41=no])
11823         AC_LANG_POP([C++])
11824         CXXFLAGS=$save_CXXFLAGS
11825         AC_MSG_RESULT([${can_compile_sse41}])
11826         if test "${can_compile_sse41}" = "yes" ; then
11827             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11828         fi
11830         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11831         AC_LANG_PUSH([C++])
11832         save_CXXFLAGS=$CXXFLAGS
11833         CXXFLAGS="$CXXFLAGS $flag_sse42"
11834         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11835             #include <nmmintrin.h>
11836             int main () {
11837                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11838                 c = _mm_cmpgt_epi64 (a, b);
11839                 return 0;
11840             }
11841             ])],
11842             [can_compile_sse42=yes],
11843             [can_compile_sse42=no])
11844         AC_LANG_POP([C++])
11845         CXXFLAGS=$save_CXXFLAGS
11846         AC_MSG_RESULT([${can_compile_sse42}])
11847         if test "${can_compile_sse42}" = "yes" ; then
11848             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11849         fi
11851         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11852         AC_LANG_PUSH([C++])
11853         save_CXXFLAGS=$CXXFLAGS
11854         CXXFLAGS="$CXXFLAGS $flag_avx"
11855         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11856             #include <immintrin.h>
11857             int main () {
11858                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11859                 c = _mm256_xor_ps(a, b);
11860                 return 0;
11861             }
11862             ])],
11863             [can_compile_avx=yes],
11864             [can_compile_avx=no])
11865         AC_LANG_POP([C++])
11866         CXXFLAGS=$save_CXXFLAGS
11867         AC_MSG_RESULT([${can_compile_avx}])
11868         if test "${can_compile_avx}" = "yes" ; then
11869             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11870         fi
11872         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11873         AC_LANG_PUSH([C++])
11874         save_CXXFLAGS=$CXXFLAGS
11875         CXXFLAGS="$CXXFLAGS $flag_avx2"
11876         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11877             #include <immintrin.h>
11878             int main () {
11879                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11880                 c = _mm256_maddubs_epi16(a, b);
11881                 return 0;
11882             }
11883             ])],
11884             [can_compile_avx2=yes],
11885             [can_compile_avx2=no])
11886         AC_LANG_POP([C++])
11887         CXXFLAGS=$save_CXXFLAGS
11888         AC_MSG_RESULT([${can_compile_avx2}])
11889         if test "${can_compile_avx2}" = "yes" ; then
11890             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11891         fi
11893         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11894         AC_LANG_PUSH([C++])
11895         save_CXXFLAGS=$CXXFLAGS
11896         CXXFLAGS="$CXXFLAGS $flag_avx512"
11897         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11898             #include <immintrin.h>
11899             int main () {
11900                 __m512i a = _mm512_loadu_si512(0);
11901                 return 0;
11902             }
11903             ])],
11904             [can_compile_avx512=yes],
11905             [can_compile_avx512=no])
11906         AC_LANG_POP([C++])
11907         CXXFLAGS=$save_CXXFLAGS
11908         AC_MSG_RESULT([${can_compile_avx512}])
11909         if test "${can_compile_avx512}" = "yes" ; then
11910             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11911         fi
11913         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11914         AC_LANG_PUSH([C++])
11915         save_CXXFLAGS=$CXXFLAGS
11916         CXXFLAGS="$CXXFLAGS $flag_f16c"
11917         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11918             #include <immintrin.h>
11919             int main () {
11920                 __m128i a = _mm_set1_epi32 (0);
11921                 __m128 c;
11922                 c = _mm_cvtph_ps(a);
11923                 return 0;
11924             }
11925             ])],
11926             [can_compile_f16c=yes],
11927             [can_compile_f16c=no])
11928         AC_LANG_POP([C++])
11929         CXXFLAGS=$save_CXXFLAGS
11930         AC_MSG_RESULT([${can_compile_f16c}])
11931         if test "${can_compile_f16c}" = "yes" ; then
11932             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11933         fi
11935         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11936         AC_LANG_PUSH([C++])
11937         save_CXXFLAGS=$CXXFLAGS
11938         CXXFLAGS="$CXXFLAGS $flag_fma"
11939         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11940             #include <immintrin.h>
11941             int main () {
11942                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11943                 d = _mm256_fmadd_ps(a, b, c);
11944                 return 0;
11945             }
11946             ])],
11947             [can_compile_fma=yes],
11948             [can_compile_fma=no])
11949         AC_LANG_POP([C++])
11950         CXXFLAGS=$save_CXXFLAGS
11951         AC_MSG_RESULT([${can_compile_fma}])
11952         if test "${can_compile_fma}" = "yes" ; then
11953             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11954         fi
11956         CXX="$save_CXX"
11957     fi
11960 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11962 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11963     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11964     AC_LANG_PUSH([C])
11965     save_CC="$CC"
11966     CC="$LO_CLANG_CC"
11967     save_CFLAGS=$CFLAGS
11968     CFLAGS="$CFLAGS --ccache-skip -O2"
11969     dnl an empty program will do, we're checking the compiler flags
11970     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11971                       [use_ccache=yes], [use_ccache=no])
11972     CFLAGS=$save_CFLAGS
11973     CC=$save_CC
11974     if test $use_ccache = yes; then
11975         AC_MSG_RESULT([yes])
11976     else
11977         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11978         AC_MSG_RESULT([no])
11979     fi
11980     AC_LANG_POP([C])
11982     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11983     AC_LANG_PUSH([C++])
11984     save_CXX="$CXX"
11985     CXX="$LO_CLANG_CXX"
11986     save_CXXFLAGS=$CXXFLAGS
11987     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11988     dnl an empty program will do, we're checking the compiler flags
11989     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11990                       [use_ccache=yes], [use_ccache=no])
11991     if test $use_ccache = yes; then
11992         AC_MSG_RESULT([yes])
11993     else
11994         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11995         AC_MSG_RESULT([no])
11996     fi
11997     CXXFLAGS=$save_CXXFLAGS
11998     CXX=$save_CXX
11999     AC_LANG_POP([C++])
12002 AC_SUBST(LO_CLANG_CC)
12003 AC_SUBST(LO_CLANG_CXX)
12004 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12005 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12006 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12007 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12008 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12009 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12010 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12011 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12012 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12013 AC_SUBST(CLANG_USE_LD)
12015 SYSTEM_GPGMEPP=
12017 if test "$enable_gpgmepp" = no; then
12018     AC_MSG_CHECKING([whether to enable gpgmepp])
12019     AC_MSG_RESULT([no])
12020 elif test "$enable_mpl_subset" = "yes"; then
12021     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12022     AC_MSG_RESULT([yes])
12023 elif test "$enable_fuzzers" = "yes"; then
12024     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12025     AC_MSG_RESULT([yes])
12026 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12027     dnl ===================================================================
12028     dnl Check for system gpgme
12029     dnl ===================================================================
12030     AC_MSG_CHECKING([which gpgmepp to use])
12031     if test "$with_system_gpgmepp" = "yes"; then
12032         AC_MSG_RESULT([external])
12033         SYSTEM_GPGMEPP=TRUE
12035         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12036         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12037             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12038         # progress_callback is the only func with plain C linkage
12039         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12040         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12041             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12042         AC_CHECK_HEADER(gpgme.h, [],
12043             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12044     else
12045         AC_MSG_RESULT([internal])
12046         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12047         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12049         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12050         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12051         if test "$_os" != "WINNT"; then
12052             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12053             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12054         fi
12055     fi
12056     ENABLE_GPGMEPP=TRUE
12057     AC_DEFINE([HAVE_FEATURE_GPGME])
12058     AC_PATH_PROG(GPG, gpg)
12059     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12060     # so let's exclude that manually for the moment
12061     if test -n "$GPG" -a "$_os" != "WINNT"; then
12062         # make sure we not only have a working gpgme, but a full working
12063         # gpg installation to run OpenPGP signature verification
12064         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12065     fi
12066     if test "$_os" = "Linux"; then
12067       uid=`id -u`
12068       AC_MSG_CHECKING([for /run/user/$uid])
12069       if test -d /run/user/$uid; then
12070         AC_MSG_RESULT([yes])
12071         AC_PATH_PROG(GPGCONF, gpgconf)
12073         # Older versions of gpgconf are not working as expected, since
12074         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12075         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12076         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12077         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12078         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12079         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12080         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12081           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12082           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12083           if $GPGCONF --dump-options > /dev/null ; then
12084             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12085               AC_MSG_RESULT([yes])
12086               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12087               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12088             else
12089               AC_MSG_RESULT([no])
12090             fi
12091           else
12092             AC_MSG_RESULT([no. missing or broken gpgconf?])
12093           fi
12094         else
12095           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12096         fi
12097       else
12098         AC_MSG_RESULT([no])
12099      fi
12100    fi
12102 AC_SUBST(ENABLE_GPGMEPP)
12103 AC_SUBST(SYSTEM_GPGMEPP)
12104 AC_SUBST(GPG_ERROR_CFLAGS)
12105 AC_SUBST(GPG_ERROR_LIBS)
12106 AC_SUBST(LIBASSUAN_CFLAGS)
12107 AC_SUBST(LIBASSUAN_LIBS)
12108 AC_SUBST(GPGMEPP_CFLAGS)
12109 AC_SUBST(GPGMEPP_LIBS)
12111 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12112 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12113     AC_MSG_RESULT([yes])
12114     ENABLE_MEDIAWIKI=TRUE
12115     BUILD_TYPE="$BUILD_TYPE XSLTML"
12116     if test  "x$with_java" = "xno"; then
12117         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12118     fi
12119 else
12120     AC_MSG_RESULT([no])
12121     ENABLE_MEDIAWIKI=
12122     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12124 AC_SUBST(ENABLE_MEDIAWIKI)
12126 AC_MSG_CHECKING([whether to build the Report Builder])
12127 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12128     AC_MSG_RESULT([yes])
12129     ENABLE_REPORTBUILDER=TRUE
12130     AC_MSG_CHECKING([which jfreereport libs to use])
12131     if test "$with_system_jfreereport" = "yes"; then
12132         SYSTEM_JFREEREPORT=TRUE
12133         AC_MSG_RESULT([external])
12134         if test -z $SAC_JAR; then
12135             SAC_JAR=/usr/share/java/sac.jar
12136         fi
12137         if ! test -f $SAC_JAR; then
12138              AC_MSG_ERROR(sac.jar not found.)
12139         fi
12141         if test -z $LIBXML_JAR; then
12142             if test -f /usr/share/java/libxml-1.0.0.jar; then
12143                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12144             elif test -f /usr/share/java/libxml.jar; then
12145                 LIBXML_JAR=/usr/share/java/libxml.jar
12146             else
12147                 AC_MSG_ERROR(libxml.jar replacement not found.)
12148             fi
12149         elif ! test -f $LIBXML_JAR; then
12150             AC_MSG_ERROR(libxml.jar not found.)
12151         fi
12153         if test -z $FLUTE_JAR; then
12154             if test -f /usr/share/java/flute-1.3.0.jar; then
12155                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12156             elif test -f /usr/share/java/flute.jar; then
12157                 FLUTE_JAR=/usr/share/java/flute.jar
12158             else
12159                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12160             fi
12161         elif ! test -f $FLUTE_JAR; then
12162             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12163         fi
12165         if test -z $JFREEREPORT_JAR; then
12166             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12167                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12168             elif test -f /usr/share/java/flow-engine.jar; then
12169                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12170             else
12171                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12172             fi
12173         elif ! test -f  $JFREEREPORT_JAR; then
12174                 AC_MSG_ERROR(jfreereport.jar not found.)
12175         fi
12177         if test -z $LIBLAYOUT_JAR; then
12178             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12179                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12180             elif test -f /usr/share/java/liblayout.jar; then
12181                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12182             else
12183                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12184             fi
12185         elif ! test -f $LIBLAYOUT_JAR; then
12186                 AC_MSG_ERROR(liblayout.jar not found.)
12187         fi
12189         if test -z $LIBLOADER_JAR; then
12190             if test -f /usr/share/java/libloader-1.0.0.jar; then
12191                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12192             elif test -f /usr/share/java/libloader.jar; then
12193                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12194             else
12195                 AC_MSG_ERROR(libloader.jar replacement not found.)
12196             fi
12197         elif ! test -f  $LIBLOADER_JAR; then
12198             AC_MSG_ERROR(libloader.jar not found.)
12199         fi
12201         if test -z $LIBFORMULA_JAR; then
12202             if test -f /usr/share/java/libformula-0.2.0.jar; then
12203                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12204             elif test -f /usr/share/java/libformula.jar; then
12205                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12206             else
12207                 AC_MSG_ERROR(libformula.jar replacement not found.)
12208             fi
12209         elif ! test -f $LIBFORMULA_JAR; then
12210                 AC_MSG_ERROR(libformula.jar not found.)
12211         fi
12213         if test -z $LIBREPOSITORY_JAR; then
12214             if test -f /usr/share/java/librepository-1.0.0.jar; then
12215                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12216             elif test -f /usr/share/java/librepository.jar; then
12217                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12218             else
12219                 AC_MSG_ERROR(librepository.jar replacement not found.)
12220             fi
12221         elif ! test -f $LIBREPOSITORY_JAR; then
12222             AC_MSG_ERROR(librepository.jar not found.)
12223         fi
12225         if test -z $LIBFONTS_JAR; then
12226             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12227                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12228             elif test -f /usr/share/java/libfonts.jar; then
12229                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12230             else
12231                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12232             fi
12233         elif ! test -f $LIBFONTS_JAR; then
12234                 AC_MSG_ERROR(libfonts.jar not found.)
12235         fi
12237         if test -z $LIBSERIALIZER_JAR; then
12238             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12239                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12240             elif test -f /usr/share/java/libserializer.jar; then
12241                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12242             else
12243                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12244             fi
12245         elif ! test -f $LIBSERIALIZER_JAR; then
12246                 AC_MSG_ERROR(libserializer.jar not found.)
12247         fi
12249         if test -z $LIBBASE_JAR; then
12250             if test -f /usr/share/java/libbase-1.0.0.jar; then
12251                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12252             elif test -f /usr/share/java/libbase.jar; then
12253                 LIBBASE_JAR=/usr/share/java/libbase.jar
12254             else
12255                 AC_MSG_ERROR(libbase.jar replacement not found.)
12256             fi
12257         elif ! test -f $LIBBASE_JAR; then
12258             AC_MSG_ERROR(libbase.jar not found.)
12259         fi
12261     else
12262         AC_MSG_RESULT([internal])
12263         SYSTEM_JFREEREPORT=
12264         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12265         NEED_ANT=TRUE
12266     fi
12267 else
12268     AC_MSG_RESULT([no])
12269     ENABLE_REPORTBUILDER=
12270     SYSTEM_JFREEREPORT=
12272 AC_SUBST(ENABLE_REPORTBUILDER)
12273 AC_SUBST(SYSTEM_JFREEREPORT)
12274 AC_SUBST(SAC_JAR)
12275 AC_SUBST(LIBXML_JAR)
12276 AC_SUBST(FLUTE_JAR)
12277 AC_SUBST(JFREEREPORT_JAR)
12278 AC_SUBST(LIBBASE_JAR)
12279 AC_SUBST(LIBLAYOUT_JAR)
12280 AC_SUBST(LIBLOADER_JAR)
12281 AC_SUBST(LIBFORMULA_JAR)
12282 AC_SUBST(LIBREPOSITORY_JAR)
12283 AC_SUBST(LIBFONTS_JAR)
12284 AC_SUBST(LIBSERIALIZER_JAR)
12286 # this has to be here because both the Wiki Publisher and the SRB use
12287 # commons-logging
12288 COMMONS_LOGGING_VERSION=1.2
12289 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12290     AC_MSG_CHECKING([which Apache commons-* libs to use])
12291     if test "$with_system_apache_commons" = "yes"; then
12292         SYSTEM_APACHE_COMMONS=TRUE
12293         AC_MSG_RESULT([external])
12294         if test -z $COMMONS_LOGGING_JAR; then
12295             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12296                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12297            elif test -f /usr/share/java/commons-logging.jar; then
12298                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12299             else
12300                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12301             fi
12302         elif ! test -f $COMMONS_LOGGING_JAR; then
12303             AC_MSG_ERROR(commons-logging.jar not found.)
12304         fi
12305     else
12306         AC_MSG_RESULT([internal])
12307         SYSTEM_APACHE_COMMONS=
12308         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12309         NEED_ANT=TRUE
12310     fi
12312 AC_SUBST(SYSTEM_APACHE_COMMONS)
12313 AC_SUBST(COMMONS_LOGGING_JAR)
12314 AC_SUBST(COMMONS_LOGGING_VERSION)
12316 # scripting provider for BeanShell?
12317 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12318 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12319     AC_MSG_RESULT([yes])
12320     ENABLE_SCRIPTING_BEANSHELL=TRUE
12322     dnl ===================================================================
12323     dnl Check for system beanshell
12324     dnl ===================================================================
12325     AC_MSG_CHECKING([which beanshell to use])
12326     if test "$with_system_beanshell" = "yes"; then
12327         AC_MSG_RESULT([external])
12328         SYSTEM_BSH=TRUE
12329         if test -z $BSH_JAR; then
12330             BSH_JAR=/usr/share/java/bsh.jar
12331         fi
12332         if ! test -f $BSH_JAR; then
12333             AC_MSG_ERROR(bsh.jar not found.)
12334         fi
12335     else
12336         AC_MSG_RESULT([internal])
12337         SYSTEM_BSH=
12338         BUILD_TYPE="$BUILD_TYPE BSH"
12339     fi
12340 else
12341     AC_MSG_RESULT([no])
12342     ENABLE_SCRIPTING_BEANSHELL=
12343     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12345 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12346 AC_SUBST(SYSTEM_BSH)
12347 AC_SUBST(BSH_JAR)
12349 # scripting provider for JavaScript?
12350 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12351 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12352     AC_MSG_RESULT([yes])
12353     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12355     dnl ===================================================================
12356     dnl Check for system rhino
12357     dnl ===================================================================
12358     AC_MSG_CHECKING([which rhino to use])
12359     if test "$with_system_rhino" = "yes"; then
12360         AC_MSG_RESULT([external])
12361         SYSTEM_RHINO=TRUE
12362         if test -z $RHINO_JAR; then
12363             RHINO_JAR=/usr/share/java/js.jar
12364         fi
12365         if ! test -f $RHINO_JAR; then
12366             AC_MSG_ERROR(js.jar not found.)
12367         fi
12368     else
12369         AC_MSG_RESULT([internal])
12370         SYSTEM_RHINO=
12371         BUILD_TYPE="$BUILD_TYPE RHINO"
12372         NEED_ANT=TRUE
12373     fi
12374 else
12375     AC_MSG_RESULT([no])
12376     ENABLE_SCRIPTING_JAVASCRIPT=
12377     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12379 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12380 AC_SUBST(SYSTEM_RHINO)
12381 AC_SUBST(RHINO_JAR)
12383 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12384 # paths should be added to library search path. So lets put all 64-bit
12385 # platforms there.
12386 supports_multilib=
12387 case "$host_cpu" in
12388 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12389     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12390         supports_multilib="yes"
12391     fi
12392     ;;
12394     ;;
12395 esac
12397 dnl ===================================================================
12398 dnl QT5 Integration
12399 dnl ===================================================================
12401 QT5_CFLAGS=""
12402 QT5_LIBS=""
12403 QMAKE5="qmake"
12404 MOC5="moc"
12405 QT5_GOBJECT_CFLAGS=""
12406 QT5_GOBJECT_LIBS=""
12407 QT5_HAVE_GOBJECT=""
12408 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12409         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12410         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12411 then
12412     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12413     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12415     if test -n "$supports_multilib"; then
12416         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12417     fi
12419     qt5_test_include="QtWidgets/qapplication.h"
12420     qt5_test_library="libQt5Widgets.so"
12422     dnl Check for qmake5
12423     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12424     if test "$QMAKE5" = "no"; then
12425         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12426     else
12427         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12428         if test -z "$qmake5_test_ver"; then
12429             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12430         fi
12431         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12432         qt5_minimal_minor="6"
12433         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12434             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12435         else
12436             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12437         fi
12438     fi
12440     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12441     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12443     AC_MSG_CHECKING([for Qt5 headers])
12444     qt5_incdir="no"
12445     for inc_dir in $qt5_incdirs; do
12446         if test -r "$inc_dir/$qt5_test_include"; then
12447             qt5_incdir="$inc_dir"
12448             break
12449         fi
12450     done
12451     AC_MSG_RESULT([$qt5_incdir])
12452     if test "x$qt5_incdir" = "xno"; then
12453         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12454     fi
12455     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12456     AC_LANG_PUSH([C++])
12457     save_CPPFLAGS=$CPPFLAGS
12458     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12459     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12460         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12461     CPPFLAGS=$save_CPPFLAGS
12462     AC_LANG_POP([C++])
12464     AC_MSG_CHECKING([for Qt5 libraries])
12465     qt5_libdir="no"
12466     for lib_dir in $qt5_libdirs; do
12467         if test -r "$lib_dir/$qt5_test_library"; then
12468             qt5_libdir="$lib_dir"
12469             break
12470         fi
12471     done
12472     AC_MSG_RESULT([$qt5_libdir])
12473     if test "x$qt5_libdir" = "xno"; then
12474         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12475     fi
12477     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12478     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12479     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12481     if test "$USING_X11" = TRUE; then
12482         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12483         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12484             QT5_HAVE_XCB_ICCCM=1
12485             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12486         ],[
12487             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)])
12488             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12489         ])
12490         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12491         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12492         QT5_USING_X11=1
12493         AC_DEFINE(QT5_USING_X11)
12494     fi
12496     dnl Check for Meta Object Compiler
12498     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12499     if test "$MOC5" = "no"; then
12500         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12501 the root of your Qt installation by exporting QT5DIR before running "configure".])
12502     fi
12504     if test "$build_gstreamer_1_0" = "yes"; then
12505         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12506                 QT5_HAVE_GOBJECT=1
12507                 AC_DEFINE(QT5_HAVE_GOBJECT)
12508             ],
12509             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12510         )
12511     fi
12513 AC_SUBST(QT5_CFLAGS)
12514 AC_SUBST(QT5_LIBS)
12515 AC_SUBST(MOC5)
12516 AC_SUBST(QT5_GOBJECT_CFLAGS)
12517 AC_SUBST(QT5_GOBJECT_LIBS)
12518 AC_SUBST(QT5_HAVE_GOBJECT)
12520 dnl ===================================================================
12521 dnl KF5 Integration
12522 dnl ===================================================================
12524 KF5_CFLAGS=""
12525 KF5_LIBS=""
12526 KF5_CONFIG="kf5-config"
12527 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12528         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12529 then
12530     if test "$OS" = "HAIKU"; then
12531         haiku_arch="`echo $RTL_ARCH | tr X x`"
12532         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12533         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12534     fi
12536     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12537     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12538     if test -n "$supports_multilib"; then
12539         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12540     fi
12542     kf5_test_include="KF5/kcoreaddons_version.h"
12543     kf5_test_library="libKF5CoreAddons.so"
12544     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12546     dnl kf5 KDE4 support compatibility installed
12547     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12548     if test "$KF5_CONFIG" != "no"; then
12549         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12550         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12551     fi
12553     dnl Check for KF5 headers
12554     AC_MSG_CHECKING([for KF5 headers])
12555     kf5_incdir="no"
12556     for kf5_check in $kf5_incdirs; do
12557         if test -r "$kf5_check/$kf5_test_include"; then
12558             kf5_incdir="$kf5_check/KF5"
12559             break
12560         fi
12561     done
12562     AC_MSG_RESULT([$kf5_incdir])
12563     if test "x$kf5_incdir" = "xno"; then
12564         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12565     fi
12567     dnl Check for KF5 libraries
12568     AC_MSG_CHECKING([for KF5 libraries])
12569     kf5_libdir="no"
12570     for kf5_check in $kf5_libdirs; do
12571         if test -r "$kf5_check/$kf5_test_library"; then
12572             kf5_libdir="$kf5_check"
12573             break
12574         fi
12575     done
12577     AC_MSG_RESULT([$kf5_libdir])
12578     if test "x$kf5_libdir" = "xno"; then
12579         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12580     fi
12582     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"
12583     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12584     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12586     if test "$USING_X11" = TRUE; then
12587         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12588     fi
12590     AC_LANG_PUSH([C++])
12591     save_CXXFLAGS=$CXXFLAGS
12592     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12593     AC_MSG_CHECKING([whether KDE is >= 5.0])
12594        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12595 #include <kcoreaddons_version.h>
12597 int main(int argc, char **argv) {
12598        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12599        else return 1;
12601        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12602     CXXFLAGS=$save_CXXFLAGS
12603     AC_LANG_POP([C++])
12605 AC_SUBST(KF5_CFLAGS)
12606 AC_SUBST(KF5_LIBS)
12608 dnl ===================================================================
12609 dnl Test whether to include Evolution 2 support
12610 dnl ===================================================================
12611 AC_MSG_CHECKING([whether to enable evolution 2 support])
12612 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12613     AC_MSG_RESULT([yes])
12614     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12615     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12616     FilterLibs "${GOBJECT_LIBS}"
12617     GOBJECT_LIBS="${filteredlibs}"
12618     ENABLE_EVOAB2="TRUE"
12619 else
12620     ENABLE_EVOAB2=""
12621     AC_MSG_RESULT([no])
12623 AC_SUBST(ENABLE_EVOAB2)
12624 AC_SUBST(GOBJECT_CFLAGS)
12625 AC_SUBST(GOBJECT_LIBS)
12627 dnl ===================================================================
12628 dnl Test which themes to include
12629 dnl ===================================================================
12630 AC_MSG_CHECKING([which themes to include])
12631 # if none given use default subset of available themes
12632 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12633     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"
12636 WITH_THEMES=""
12637 if test "x$with_theme" != "xno"; then
12638     for theme in $with_theme; do
12639         case $theme in
12640         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" ;;
12641         default) real_theme=colibre ;;
12642         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12643         esac
12644         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12645     done
12647 AC_MSG_RESULT([$WITH_THEMES])
12648 AC_SUBST([WITH_THEMES])
12649 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12650 for theme in $with_theme; do
12651     case $theme in
12652     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12653     *) ;;
12654     esac
12655 done
12657 dnl ===================================================================
12658 dnl Test whether to integrate helppacks into the product's installer
12659 dnl ===================================================================
12660 AC_MSG_CHECKING([for helppack integration])
12661 if test "$with_helppack_integration" = "no"; then
12662     AC_MSG_RESULT([no integration])
12663 else
12664     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12665     AC_MSG_RESULT([integration])
12668 ###############################################################################
12669 # Extensions checking
12670 ###############################################################################
12671 AC_MSG_CHECKING([for extensions integration])
12672 if test "x$enable_extension_integration" != "xno"; then
12673     WITH_EXTENSION_INTEGRATION=TRUE
12674     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12675     AC_MSG_RESULT([yes, use integration])
12676 else
12677     WITH_EXTENSION_INTEGRATION=
12678     AC_MSG_RESULT([no, do not integrate])
12680 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12682 dnl Should any extra extensions be included?
12683 dnl There are standalone tests for each of these below.
12684 WITH_EXTRA_EXTENSIONS=
12685 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12687 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12688 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12689 if test "x$with_java" != "xno"; then
12690     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12691     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12694 AC_MSG_CHECKING([whether to build opens___.ttf])
12695 if test "$enable_build_opensymbol" = "yes"; then
12696     AC_MSG_RESULT([yes])
12697     AC_PATH_PROG(FONTFORGE, fontforge)
12698     if test -z "$FONTFORGE"; then
12699         AC_MSG_ERROR([fontforge not installed])
12700     fi
12701 else
12702     AC_MSG_RESULT([no])
12703     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12704     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12706 AC_SUBST(OPENSYMBOL_TTF)
12707 AC_SUBST(FONTFORGE)
12709 dnl ===================================================================
12710 dnl Test whether to include fonts
12711 dnl ===================================================================
12712 AC_MSG_CHECKING([whether to include third-party fonts])
12713 if test "$with_fonts" != "no"; then
12714     AC_MSG_RESULT([yes])
12715     WITH_FONTS=TRUE
12716     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12717     AC_DEFINE(HAVE_MORE_FONTS)
12718 else
12719     AC_MSG_RESULT([no])
12720     WITH_FONTS=
12721     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12723 AC_SUBST(WITH_FONTS)
12726 dnl ===================================================================
12727 dnl Test whether to enable online update service
12728 dnl ===================================================================
12729 AC_MSG_CHECKING([whether to enable online update])
12730 ENABLE_ONLINE_UPDATE=
12731 ENABLE_ONLINE_UPDATE_MAR=
12732 UPDATE_CONFIG=
12733 if test "$enable_online_update" = ""; then
12734     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12735         AC_MSG_RESULT([yes])
12736         ENABLE_ONLINE_UPDATE="TRUE"
12737     else
12738         AC_MSG_RESULT([no])
12739     fi
12740 else
12741     if test "$enable_online_update" = "mar"; then
12742         AC_MSG_RESULT([yes - MAR-based online update])
12743         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12744         if test "$with_update_config" = ""; then
12745             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12746         fi
12747         UPDATE_CONFIG="$with_update_config"
12748         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12749     elif test "$enable_online_update" = "yes"; then
12750         AC_MSG_RESULT([yes])
12751         ENABLE_ONLINE_UPDATE="TRUE"
12752     else
12753         AC_MSG_RESULT([no])
12754     fi
12756 AC_SUBST(ENABLE_ONLINE_UPDATE)
12757 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12758 AC_SUBST(UPDATE_CONFIG)
12760 dnl ===================================================================
12761 dnl Test whether we need bzip2
12762 dnl ===================================================================
12763 SYSTEM_BZIP2=
12764 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12765     AC_MSG_CHECKING([whether to use system bzip2])
12766     if test "$with_system_bzip2" = yes; then
12767         SYSTEM_BZIP2=TRUE
12768         AC_MSG_RESULT([yes])
12769         PKG_CHECK_MODULES(BZIP2, bzip2)
12770         FilterLibs "${BZIP2_LIBS}"
12771         BZIP2_LIBS="${filteredlibs}"
12772     else
12773         AC_MSG_RESULT([no])
12774         BUILD_TYPE="$BUILD_TYPE BZIP2"
12775     fi
12777 AC_SUBST(SYSTEM_BZIP2)
12778 AC_SUBST(BZIP2_CFLAGS)
12779 AC_SUBST(BZIP2_LIBS)
12781 dnl ===================================================================
12782 dnl Test whether to enable extension update
12783 dnl ===================================================================
12784 AC_MSG_CHECKING([whether to enable extension update])
12785 ENABLE_EXTENSION_UPDATE=
12786 if test "x$enable_extension_update" = "xno"; then
12787     AC_MSG_RESULT([no])
12788 else
12789     AC_MSG_RESULT([yes])
12790     ENABLE_EXTENSION_UPDATE="TRUE"
12791     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12792     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12794 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12797 dnl ===================================================================
12798 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12799 dnl ===================================================================
12800 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12801 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12802     AC_MSG_RESULT([no])
12803     ENABLE_SILENT_MSI=
12804 else
12805     AC_MSG_RESULT([yes])
12806     ENABLE_SILENT_MSI=TRUE
12807     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12809 AC_SUBST(ENABLE_SILENT_MSI)
12811 AC_MSG_CHECKING([whether and how to use Xinerama])
12812 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12813     if test "$x_libraries" = "default_x_libraries"; then
12814         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12815         if test "x$XINERAMALIB" = x; then
12816            XINERAMALIB="/usr/lib"
12817         fi
12818     else
12819         XINERAMALIB="$x_libraries"
12820     fi
12821     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12822         # we have both versions, let the user decide but use the dynamic one
12823         # per default
12824         USE_XINERAMA=TRUE
12825         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12826             XINERAMA_LINK=dynamic
12827         else
12828             XINERAMA_LINK=static
12829         fi
12830     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12831         # we have only the dynamic version
12832         USE_XINERAMA=TRUE
12833         XINERAMA_LINK=dynamic
12834     elif test -e "$XINERAMALIB/libXinerama.a"; then
12835         # static version
12836         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12837             USE_XINERAMA=TRUE
12838             XINERAMA_LINK=static
12839         else
12840             USE_XINERAMA=
12841             XINERAMA_LINK=none
12842         fi
12843     else
12844         # no Xinerama
12845         USE_XINERAMA=
12846         XINERAMA_LINK=none
12847     fi
12848     if test "$USE_XINERAMA" = "TRUE"; then
12849         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12850         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12851             [AC_MSG_ERROR(Xinerama header not found.)], [])
12852         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12853         if test "x$XEXTLIB" = x; then
12854            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12855         fi
12856         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12857         if test "$_os" = "FreeBSD"; then
12858             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12859         fi
12860         if test "$_os" = "Linux"; then
12861             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12862         fi
12863         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12864             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12865     else
12866         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12867     fi
12868 else
12869     USE_XINERAMA=
12870     XINERAMA_LINK=none
12871     AC_MSG_RESULT([no])
12873 AC_SUBST(USE_XINERAMA)
12874 AC_SUBST(XINERAMA_LINK)
12876 dnl ===================================================================
12877 dnl Test whether to build cairo or rely on the system version
12878 dnl ===================================================================
12880 if test "$USING_X11" = TRUE; then
12881     # Used in vcl/Library_vclplug_gen.mk
12882     test_cairo=yes
12885 if test "$test_cairo" = "yes"; then
12886     AC_MSG_CHECKING([whether to use the system cairo])
12888     : ${with_system_cairo:=$with_system_libs}
12889     if test "$with_system_cairo" = "yes"; then
12890         SYSTEM_CAIRO=TRUE
12891         AC_MSG_RESULT([yes])
12893         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12894         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12895         FilterLibs "${CAIRO_LIBS}"
12896         CAIRO_LIBS="${filteredlibs}"
12898         if test "$test_xrender" = "yes"; then
12899             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12900             AC_LANG_PUSH([C])
12901             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12902 #ifdef PictStandardA8
12903 #else
12904       return fail;
12905 #endif
12906 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12908             AC_LANG_POP([C])
12909         fi
12910     else
12911         SYSTEM_CAIRO=
12912         AC_MSG_RESULT([no])
12914         BUILD_TYPE="$BUILD_TYPE CAIRO"
12915     fi
12918 AC_SUBST(SYSTEM_CAIRO)
12919 AC_SUBST(CAIRO_CFLAGS)
12920 AC_SUBST(CAIRO_LIBS)
12922 dnl ===================================================================
12923 dnl Test whether to use avahi
12924 dnl ===================================================================
12925 if test "$_os" = "WINNT"; then
12926     # Windows uses bundled mDNSResponder
12927     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12928 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12929     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12930                       [ENABLE_AVAHI="TRUE"])
12931     AC_DEFINE(HAVE_FEATURE_AVAHI)
12932     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12933     FilterLibs "${AVAHI_LIBS}"
12934     AVAHI_LIBS="${filteredlibs}"
12937 AC_SUBST(ENABLE_AVAHI)
12938 AC_SUBST(AVAHI_CFLAGS)
12939 AC_SUBST(AVAHI_LIBS)
12941 dnl ===================================================================
12942 dnl Test whether to use liblangtag
12943 dnl ===================================================================
12944 SYSTEM_LIBLANGTAG=
12945 AC_MSG_CHECKING([whether to use system liblangtag])
12946 if test "$with_system_liblangtag" = yes; then
12947     SYSTEM_LIBLANGTAG=TRUE
12948     AC_MSG_RESULT([yes])
12949     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12950     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12951     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12952     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12953     FilterLibs "${LIBLANGTAG_LIBS}"
12954     LIBLANGTAG_LIBS="${filteredlibs}"
12955 else
12956     SYSTEM_LIBLANGTAG=
12957     AC_MSG_RESULT([no])
12958     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12959     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12960     if test "$COM" = "MSC"; then
12961         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12962     else
12963         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12964     fi
12966 AC_SUBST(SYSTEM_LIBLANGTAG)
12967 AC_SUBST(LIBLANGTAG_CFLAGS)
12968 AC_SUBST(LIBLANGTAG_LIBS)
12970 dnl ===================================================================
12971 dnl Test whether to build libpng or rely on the system version
12972 dnl ===================================================================
12974 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12976 dnl ===================================================================
12977 dnl Check for runtime JVM search path
12978 dnl ===================================================================
12979 if test "$ENABLE_JAVA" != ""; then
12980     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12981     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12982         AC_MSG_RESULT([yes])
12983         if ! test -d "$with_jvm_path"; then
12984             AC_MSG_ERROR(["$with_jvm_path" not a directory])
12985         fi
12986         if ! test -d "$with_jvm_path"jvm; then
12987             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12988         fi
12989         JVM_ONE_PATH_CHECK="$with_jvm_path"
12990         AC_SUBST(JVM_ONE_PATH_CHECK)
12991     else
12992         AC_MSG_RESULT([no])
12993     fi
12996 dnl ===================================================================
12997 dnl Test for the presence of Ant and that it works
12998 dnl ===================================================================
13000 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13001     ANT_HOME=; export ANT_HOME
13002     WITH_ANT_HOME=; export WITH_ANT_HOME
13003     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13004         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13005             if test "$_os" = "WINNT"; then
13006                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13007             else
13008                 with_ant_home="$LODE_HOME/opt/ant"
13009             fi
13010         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13011             with_ant_home="$LODE_HOME/opt/ant"
13012         fi
13013     fi
13014     if test -z "$with_ant_home"; then
13015         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13016     else
13017         if test "$_os" = "WINNT"; then
13018             # AC_PATH_PROGS needs unix path
13019             with_ant_home=`cygpath -u "$with_ant_home"`
13020         fi
13021         AbsolutePath "$with_ant_home"
13022         with_ant_home=$absolute_path
13023         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13024         WITH_ANT_HOME=$with_ant_home
13025         ANT_HOME=$with_ant_home
13026     fi
13028     if test -z "$ANT"; then
13029         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13030     else
13031         # resolve relative or absolute symlink
13032         while test -h "$ANT"; do
13033             a_cwd=`pwd`
13034             a_basename=`basename "$ANT"`
13035             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13036             cd "`dirname "$ANT"`"
13037             cd "`dirname "$a_script"`"
13038             ANT="`pwd`"/"`basename "$a_script"`"
13039             cd "$a_cwd"
13040         done
13042         AC_MSG_CHECKING([if $ANT works])
13043         mkdir -p conftest.dir
13044         a_cwd=$(pwd)
13045         cd conftest.dir
13046         cat > conftest.java << EOF
13047         public class conftest {
13048             int testmethod(int a, int b) {
13049                     return a + b;
13050             }
13051         }
13054         cat > conftest.xml << EOF
13055         <project name="conftest" default="conftest">
13056         <target name="conftest">
13057             <javac srcdir="." includes="conftest.java">
13058             </javac>
13059         </target>
13060         </project>
13063         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13064         if test $? = 0 -a -f ./conftest.class; then
13065             AC_MSG_RESULT([Ant works])
13066             if test -z "$WITH_ANT_HOME"; then
13067                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13068                 if test -z "$ANT_HOME"; then
13069                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13070                 fi
13071             else
13072                 ANT_HOME="$WITH_ANT_HOME"
13073             fi
13074         else
13075             echo "configure: Ant test failed" >&5
13076             cat conftest.java >&5
13077             cat conftest.xml >&5
13078             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13079         fi
13080         cd "$a_cwd"
13081         rm -fr conftest.dir
13082     fi
13083     if test -z "$ANT_HOME"; then
13084         ANT_HOME="NO_ANT_HOME"
13085     else
13086         PathFormat "$ANT_HOME"
13087         ANT_HOME="$formatted_path"
13088         PathFormat "$ANT"
13089         ANT="$formatted_path"
13090     fi
13092     dnl Checking for ant.jar
13093     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13094         AC_MSG_CHECKING([Ant lib directory])
13095         if test -f $ANT_HOME/lib/ant.jar; then
13096             ANT_LIB="$ANT_HOME/lib"
13097         else
13098             if test -f $ANT_HOME/ant.jar; then
13099                 ANT_LIB="$ANT_HOME"
13100             else
13101                 if test -f /usr/share/java/ant.jar; then
13102                     ANT_LIB=/usr/share/java
13103                 else
13104                     if test -f /usr/share/ant-core/lib/ant.jar; then
13105                         ANT_LIB=/usr/share/ant-core/lib
13106                     else
13107                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13108                             ANT_LIB="$ANT_HOME/lib/ant"
13109                         else
13110                             if test -f /usr/share/lib/ant/ant.jar; then
13111                                 ANT_LIB=/usr/share/lib/ant
13112                             else
13113                                 AC_MSG_ERROR([Ant libraries not found!])
13114                             fi
13115                         fi
13116                     fi
13117                 fi
13118             fi
13119         fi
13120         PathFormat "$ANT_LIB"
13121         ANT_LIB="$formatted_path"
13122         AC_MSG_RESULT([Ant lib directory found.])
13123     fi
13125     ant_minver=1.6.0
13126     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13128     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13129     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13130     ant_version_major=`echo $ant_version | cut -d. -f1`
13131     ant_version_minor=`echo $ant_version | cut -d. -f2`
13132     echo "configure: ant_version $ant_version " >&5
13133     echo "configure: ant_version_major $ant_version_major " >&5
13134     echo "configure: ant_version_minor $ant_version_minor " >&5
13135     if test "$ant_version_major" -ge "2"; then
13136         AC_MSG_RESULT([yes, $ant_version])
13137     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13138         AC_MSG_RESULT([yes, $ant_version])
13139     else
13140         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13141     fi
13143     rm -f conftest* core core.* *.core
13145 AC_SUBST(ANT)
13146 AC_SUBST(ANT_HOME)
13147 AC_SUBST(ANT_LIB)
13149 OOO_JUNIT_JAR=
13150 HAMCREST_JAR=
13151 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13152     AC_MSG_CHECKING([for JUnit 4])
13153     if test "$with_junit" = "yes"; then
13154         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13155             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13156         elif test -e /usr/share/java/junit4.jar; then
13157             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13158         else
13159            if test -e /usr/share/lib/java/junit.jar; then
13160               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13161            else
13162               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13163            fi
13164         fi
13165     else
13166         OOO_JUNIT_JAR=$with_junit
13167     fi
13168     if test "$_os" = "WINNT"; then
13169         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13170     fi
13171     printf 'import org.junit.Before;' > conftest.java
13172     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13173         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13174     else
13175         AC_MSG_ERROR(
13176 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13177  specify its pathname via --with-junit=..., or disable it via --without-junit])
13178     fi
13179     rm -f conftest.class conftest.java
13180     if test $OOO_JUNIT_JAR != ""; then
13181         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13182     fi
13184     AC_MSG_CHECKING([for included Hamcrest])
13185     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13186     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13187         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13188     else
13189         AC_MSG_RESULT([Not included])
13190         AC_MSG_CHECKING([for standalone hamcrest jar.])
13191         if test "$with_hamcrest" = "yes"; then
13192             if test -e /usr/share/lib/java/hamcrest.jar; then
13193                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13194             elif test -e /usr/share/java/hamcrest/core.jar; then
13195                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13196             else
13197                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13198             fi
13199         else
13200             HAMCREST_JAR=$with_hamcrest
13201         fi
13202         if test "$_os" = "WINNT"; then
13203             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13204         fi
13205         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13206             AC_MSG_RESULT([$HAMCREST_JAR])
13207         else
13208             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),
13209                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13210         fi
13211     fi
13212     rm -f conftest.class conftest.java
13214 AC_SUBST(OOO_JUNIT_JAR)
13215 AC_SUBST(HAMCREST_JAR)
13218 AC_SUBST(SCPDEFS)
13221 # check for wget and curl
13223 WGET=
13224 CURL=
13226 if test "$enable_fetch_external" != "no"; then
13228 CURL=`which curl 2>/dev/null`
13230 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13231     # wget new enough?
13232     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13233     if test $? -eq 0; then
13234         WGET=$i
13235         break
13236     fi
13237 done
13239 if test -z "$WGET" -a -z "$CURL"; then
13240     AC_MSG_ERROR([neither wget nor curl found!])
13245 AC_SUBST(WGET)
13246 AC_SUBST(CURL)
13249 # check for sha256sum
13251 SHA256SUM=
13253 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13254     eval "$i -a 256 --version" > /dev/null 2>&1
13255     ret=$?
13256     if test $ret -eq 0; then
13257         SHA256SUM="$i -a 256"
13258         break
13259     fi
13260 done
13262 if test -z "$SHA256SUM"; then
13263     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13264         eval "$i --version" > /dev/null 2>&1
13265         ret=$?
13266         if test $ret -eq 0; then
13267             SHA256SUM=$i
13268             break
13269         fi
13270     done
13273 if test -z "$SHA256SUM"; then
13274     AC_MSG_ERROR([no sha256sum found!])
13277 AC_SUBST(SHA256SUM)
13279 dnl ===================================================================
13280 dnl Dealing with l10n options
13281 dnl ===================================================================
13282 AC_MSG_CHECKING([which languages to be built])
13283 # get list of all languages
13284 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13285 # the sed command does the following:
13286 #   + if a line ends with a backslash, append the next line to it
13287 #   + adds " on the beginning of the value (after =)
13288 #   + adds " at the end of the value
13289 #   + removes en-US; we want to put it on the beginning
13290 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13291 [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)]
13292 ALL_LANGS="en-US $completelangiso"
13293 # check the configured localizations
13294 WITH_LANG="$with_lang"
13296 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13297 # (Norwegian is "nb" and "nn".)
13298 if test "$WITH_LANG" = "no"; then
13299     WITH_LANG=
13302 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13303     AC_MSG_RESULT([en-US])
13304 else
13305     AC_MSG_RESULT([$WITH_LANG])
13306     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13307     if test -z "$MSGFMT"; then
13308         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13309             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13310         elif test -x "/opt/lo/bin/msgfmt"; then
13311             MSGFMT="/opt/lo/bin/msgfmt"
13312         else
13313             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13314             if test -z "$MSGFMT"; then
13315                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13316             fi
13317         fi
13318     fi
13319     if test -z "$MSGUNIQ"; then
13320         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13321             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13322         elif test -x "/opt/lo/bin/msguniq"; then
13323             MSGUNIQ="/opt/lo/bin/msguniq"
13324         else
13325             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13326             if test -z "$MSGUNIQ"; then
13327                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13328             fi
13329         fi
13330     fi
13332 AC_SUBST(MSGFMT)
13333 AC_SUBST(MSGUNIQ)
13334 # check that the list is valid
13335 for lang in $WITH_LANG; do
13336     test "$lang" = "ALL" && continue
13337     # need to check for the exact string, so add space before and after the list of all languages
13338     for vl in $ALL_LANGS; do
13339         if test "$vl" = "$lang"; then
13340            break
13341         fi
13342     done
13343     if test "$vl" != "$lang"; then
13344         # if you're reading this - you prolly quoted your languages remove the quotes ...
13345         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13346     fi
13347 done
13348 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13349     echo $WITH_LANG | grep -q en-US
13350     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13352 # list with substituted ALL
13353 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13354 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13355 test "$WITH_LANG" = "en-US" && WITH_LANG=
13356 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13357     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13358     ALL_LANGS=`echo $ALL_LANGS qtz`
13360 AC_SUBST(ALL_LANGS)
13361 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13362 AC_SUBST(WITH_LANG)
13363 AC_SUBST(WITH_LANG_LIST)
13364 AC_SUBST(GIT_NEEDED_SUBMODULES)
13366 WITH_POOR_HELP_LOCALIZATIONS=
13367 if test -d "$SRC_ROOT/translations/source"; then
13368     for l in `ls -1 $SRC_ROOT/translations/source`; do
13369         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13370             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13371         fi
13372     done
13374 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13376 if test -n "$with_locales"; then
13377     WITH_LOCALES="$with_locales"
13379     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13380     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13381     # config_host/config_locales.h.in
13382     for locale in $WITH_LOCALES; do
13383         lang=${locale%_*}
13385         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13387         case $lang in
13388         hi|mr*ne)
13389             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13390             ;;
13391         bg|ru)
13392             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13393             ;;
13394         esac
13395     done
13396 else
13397     AC_DEFINE(WITH_LOCALE_ALL)
13399 AC_SUBST(WITH_LOCALES)
13401 dnl git submodule update --reference
13402 dnl ===================================================================
13403 if test -n "${GIT_REFERENCE_SRC}"; then
13404     for repo in ${GIT_NEEDED_SUBMODULES}; do
13405         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13406             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13407         fi
13408     done
13410 AC_SUBST(GIT_REFERENCE_SRC)
13412 dnl git submodules linked dirs
13413 dnl ===================================================================
13414 if test -n "${GIT_LINK_SRC}"; then
13415     for repo in ${GIT_NEEDED_SUBMODULES}; do
13416         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13417             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13418         fi
13419     done
13421 AC_SUBST(GIT_LINK_SRC)
13423 dnl branding
13424 dnl ===================================================================
13425 AC_MSG_CHECKING([for alternative branding images directory])
13426 # initialize mapped arrays
13427 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13428 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13430 if test -z "$with_branding" -o "$with_branding" = "no"; then
13431     AC_MSG_RESULT([none])
13432     DEFAULT_BRAND_IMAGES="$brand_files"
13433 else
13434     if ! test -d $with_branding ; then
13435         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13436     else
13437         AC_MSG_RESULT([$with_branding])
13438         CUSTOM_BRAND_DIR="$with_branding"
13439         for lfile in $brand_files
13440         do
13441             if ! test -f $with_branding/$lfile ; then
13442                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13443                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13444             else
13445                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13446             fi
13447         done
13448         check_for_progress="yes"
13449     fi
13451 AC_SUBST([BRAND_INTRO_IMAGES])
13452 AC_SUBST([CUSTOM_BRAND_DIR])
13453 AC_SUBST([CUSTOM_BRAND_IMAGES])
13454 AC_SUBST([DEFAULT_BRAND_IMAGES])
13457 AC_MSG_CHECKING([for 'intro' progress settings])
13458 PROGRESSBARCOLOR=
13459 PROGRESSSIZE=
13460 PROGRESSPOSITION=
13461 PROGRESSFRAMECOLOR=
13462 PROGRESSTEXTCOLOR=
13463 PROGRESSTEXTBASELINE=
13465 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13466     source "$with_branding/progress.conf"
13467     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13468 else
13469     AC_MSG_RESULT([none])
13472 AC_SUBST(PROGRESSBARCOLOR)
13473 AC_SUBST(PROGRESSSIZE)
13474 AC_SUBST(PROGRESSPOSITION)
13475 AC_SUBST(PROGRESSFRAMECOLOR)
13476 AC_SUBST(PROGRESSTEXTCOLOR)
13477 AC_SUBST(PROGRESSTEXTBASELINE)
13480 dnl ===================================================================
13481 dnl Custom build version
13482 dnl ===================================================================
13483 AC_MSG_CHECKING([for extra build ID])
13484 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13485     EXTRA_BUILDID="$with_extra_buildid"
13487 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13488 if test -n "$EXTRA_BUILDID" ; then
13489     AC_MSG_RESULT([$EXTRA_BUILDID])
13490 else
13491     AC_MSG_RESULT([not set])
13493 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13495 OOO_VENDOR=
13496 AC_MSG_CHECKING([for vendor])
13497 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13498     OOO_VENDOR="$USERNAME"
13500     if test -z "$OOO_VENDOR"; then
13501         OOO_VENDOR="$USER"
13502     fi
13504     if test -z "$OOO_VENDOR"; then
13505         OOO_VENDOR="`id -u -n`"
13506     fi
13508     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13509 else
13510     OOO_VENDOR="$with_vendor"
13511     AC_MSG_RESULT([$OOO_VENDOR])
13513 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13514 AC_SUBST(OOO_VENDOR)
13516 if test "$_os" = "Android" ; then
13517     ANDROID_PACKAGE_NAME=
13518     AC_MSG_CHECKING([for Android package name])
13519     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13520         if test -n "$ENABLE_DEBUG"; then
13521             # Default to the package name that makes ndk-gdb happy.
13522             ANDROID_PACKAGE_NAME="org.libreoffice"
13523         else
13524             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13525         fi
13527         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13528     else
13529         ANDROID_PACKAGE_NAME="$with_android_package_name"
13530         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13531     fi
13532     AC_SUBST(ANDROID_PACKAGE_NAME)
13535 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13536 if test "$with_compat_oowrappers" = "yes"; then
13537     WITH_COMPAT_OOWRAPPERS=TRUE
13538     AC_MSG_RESULT(yes)
13539 else
13540     WITH_COMPAT_OOWRAPPERS=
13541     AC_MSG_RESULT(no)
13543 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13545 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13546 AC_MSG_CHECKING([for install dirname])
13547 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13548     INSTALLDIRNAME="$with_install_dirname"
13550 AC_MSG_RESULT([$INSTALLDIRNAME])
13551 AC_SUBST(INSTALLDIRNAME)
13553 AC_MSG_CHECKING([for prefix])
13554 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13555 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13556 PREFIXDIR="$prefix"
13557 AC_MSG_RESULT([$PREFIXDIR])
13558 AC_SUBST(PREFIXDIR)
13560 LIBDIR=[$(eval echo $(eval echo $libdir))]
13561 AC_SUBST(LIBDIR)
13563 DATADIR=[$(eval echo $(eval echo $datadir))]
13564 AC_SUBST(DATADIR)
13566 MANDIR=[$(eval echo $(eval echo $mandir))]
13567 AC_SUBST(MANDIR)
13569 DOCDIR=[$(eval echo $(eval echo $docdir))]
13570 AC_SUBST(DOCDIR)
13572 BINDIR=[$(eval echo $(eval echo $bindir))]
13573 AC_SUBST(BINDIR)
13575 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13576 AC_SUBST(INSTALLDIR)
13578 TESTINSTALLDIR="${BUILDDIR}/test-install"
13579 AC_SUBST(TESTINSTALLDIR)
13582 # ===================================================================
13583 # OAuth2 id and secrets
13584 # ===================================================================
13586 AC_MSG_CHECKING([for Google Drive client id and secret])
13587 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13588     AC_MSG_RESULT([not set])
13589     GDRIVE_CLIENT_ID="\"\""
13590     GDRIVE_CLIENT_SECRET="\"\""
13591 else
13592     AC_MSG_RESULT([set])
13593     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13594     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13596 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13597 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13599 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13600 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13601     AC_MSG_RESULT([not set])
13602     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13603     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13604 else
13605     AC_MSG_RESULT([set])
13606     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13607     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13609 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13610 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13612 AC_MSG_CHECKING([for OneDrive client id and secret])
13613 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13614     AC_MSG_RESULT([not set])
13615     ONEDRIVE_CLIENT_ID="\"\""
13616     ONEDRIVE_CLIENT_SECRET="\"\""
13617 else
13618     AC_MSG_RESULT([set])
13619     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13620     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13622 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13623 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13626 dnl ===================================================================
13627 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13628 dnl --enable-dependency-tracking configure option
13629 dnl ===================================================================
13630 AC_MSG_CHECKING([whether to enable dependency tracking])
13631 if test "$enable_dependency_tracking" = "no"; then
13632     nodep=TRUE
13633     AC_MSG_RESULT([no])
13634 else
13635     AC_MSG_RESULT([yes])
13637 AC_SUBST(nodep)
13639 dnl ===================================================================
13640 dnl Number of CPUs to use during the build
13641 dnl ===================================================================
13642 AC_MSG_CHECKING([for number of processors to use])
13643 # plain --with-parallelism is just the default
13644 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13645     if test "$with_parallelism" = "no"; then
13646         PARALLELISM=0
13647     else
13648         PARALLELISM=$with_parallelism
13649     fi
13650 else
13651     if test "$enable_icecream" = "yes"; then
13652         PARALLELISM="40"
13653     else
13654         case `uname -s` in
13656         Darwin|FreeBSD|NetBSD|OpenBSD)
13657             PARALLELISM=`sysctl -n hw.ncpu`
13658             ;;
13660         Linux)
13661             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13662         ;;
13663         # what else than above does profit here *and* has /proc?
13664         *)
13665             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13666             ;;
13667         esac
13669         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13670         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13671     fi
13674 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13675     if test -z "$with_parallelism"; then
13676             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13677             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13678             PARALLELISM="1"
13679     else
13680         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."
13681     fi
13684 if test $PARALLELISM -eq 0; then
13685     AC_MSG_RESULT([explicit make -j option needed])
13686 else
13687     AC_MSG_RESULT([$PARALLELISM])
13689 AC_SUBST(PARALLELISM)
13691 IWYU_PATH="$with_iwyu"
13692 AC_SUBST(IWYU_PATH)
13693 if test ! -z "$IWYU_PATH"; then
13694     if test ! -f "$IWYU_PATH"; then
13695         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13696     fi
13700 # Set up ILIB for MSVC build
13702 ILIB1=
13703 if test "$build_os" = "cygwin"; then
13704     ILIB="."
13705     if test -n "$JAVA_HOME"; then
13706         ILIB="$ILIB;$JAVA_HOME/lib"
13707     fi
13708     ILIB1=-link
13709     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13710     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13711     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13712     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13713     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13714         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13715         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13716     fi
13717     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13718     ucrtlibpath_formatted=$formatted_path
13719     ILIB="$ILIB;$ucrtlibpath_formatted"
13720     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13721     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13722         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13723     else
13724         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13725     fi
13727     if test "$cross_compiling" != "yes"; then
13728         ILIB_FOR_BUILD="$ILIB"
13729     fi
13731 AC_SUBST(ILIB)
13732 AC_SUBST(ILIB_FOR_BUILD)
13734 # ===================================================================
13735 # Creating bigger shared library to link against
13736 # ===================================================================
13737 AC_MSG_CHECKING([whether to create huge library])
13738 MERGELIBS=
13740 if test $_os = iOS -o $_os = Android; then
13741     # Never any point in mergelibs for these as we build just static
13742     # libraries anyway...
13743     enable_mergelibs=no
13746 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13747     if test $_os != Linux -a $_os != WINNT; then
13748         add_warning "--enable-mergelibs is not tested for this platform"
13749     fi
13750     MERGELIBS="TRUE"
13751     AC_MSG_RESULT([yes])
13752     AC_DEFINE(ENABLE_MERGELIBS)
13753 else
13754     AC_MSG_RESULT([no])
13756 AC_SUBST([MERGELIBS])
13758 dnl ===================================================================
13759 dnl icerun is a wrapper that stops us spawning tens of processes
13760 dnl locally - for tools that can't be executed on the compile cluster
13761 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13762 dnl ===================================================================
13763 AC_MSG_CHECKING([whether to use icerun wrapper])
13764 ICECREAM_RUN=
13765 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13766     ICECREAM_RUN=icerun
13767     AC_MSG_RESULT([yes])
13768 else
13769     AC_MSG_RESULT([no])
13771 AC_SUBST(ICECREAM_RUN)
13773 dnl ===================================================================
13774 dnl Setup the ICECC_VERSION for the build the same way it was set for
13775 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13776 dnl ===================================================================
13777 x_ICECC_VERSION=[\#]
13778 if test -n "$ICECC_VERSION" ; then
13779     x_ICECC_VERSION=
13781 AC_SUBST(x_ICECC_VERSION)
13782 AC_SUBST(ICECC_VERSION)
13784 dnl ===================================================================
13786 AC_MSG_CHECKING([MPL subset])
13787 MPL_SUBSET=
13789 if test "$enable_mpl_subset" = "yes"; then
13790     warn_report=false
13791     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13792         warn_report=true
13793     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13794         warn_report=true
13795     fi
13796     if test "$warn_report" = "true"; then
13797         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13798     fi
13799     if test "x$enable_postgresql_sdbc" != "xno"; then
13800         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13801     fi
13802     if test "$enable_lotuswordpro" = "yes"; then
13803         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13804     fi
13805     if test "$WITH_WEBDAV" = "neon"; then
13806         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13807     fi
13808     if test -n "$ENABLE_POPPLER"; then
13809         if test "x$SYSTEM_POPPLER" = "x"; then
13810             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13811         fi
13812     fi
13813     # cf. m4/libo_check_extension.m4
13814     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13815         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13816     fi
13817     for theme in $WITH_THEMES; do
13818         case $theme in
13819         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13820             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13821         *) : ;;
13822         esac
13823     done
13825     ENABLE_OPENGL_TRANSITIONS=
13827     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13828         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13829     fi
13831     MPL_SUBSET="TRUE"
13832     AC_DEFINE(MPL_HAVE_SUBSET)
13833     AC_MSG_RESULT([only])
13834 else
13835     AC_MSG_RESULT([no restrictions])
13837 AC_SUBST(MPL_SUBSET)
13839 dnl ===================================================================
13841 AC_MSG_CHECKING([formula logger])
13842 ENABLE_FORMULA_LOGGER=
13844 if test "x$enable_formula_logger" = "xyes"; then
13845     AC_MSG_RESULT([yes])
13846     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13847     ENABLE_FORMULA_LOGGER=TRUE
13848 elif test -n "$ENABLE_DBGUTIL" ; then
13849     AC_MSG_RESULT([yes])
13850     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13851     ENABLE_FORMULA_LOGGER=TRUE
13852 else
13853     AC_MSG_RESULT([no])
13856 AC_SUBST(ENABLE_FORMULA_LOGGER)
13858 dnl ===================================================================
13859 dnl Checking for active Antivirus software.
13860 dnl ===================================================================
13862 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13863     AC_MSG_CHECKING([for active Antivirus software])
13864     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13865     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13866         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13867             AC_MSG_RESULT([found])
13868             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13869             echo $EICAR_STRING > $SRC_ROOT/eicar
13870             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13871             rm $SRC_ROOT/eicar
13872             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13873                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13874             fi
13875             echo $EICAR_STRING > $BUILDDIR/eicar
13876             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13877             rm $BUILDDIR/eicar
13878             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13879                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13880             fi
13881             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"
13882         else
13883             AC_MSG_RESULT([not found])
13884         fi
13885     else
13886         AC_MSG_RESULT([n/a])
13887     fi
13890 dnl ===================================================================
13891 dnl Setting up the environment.
13892 dnl ===================================================================
13893 AC_MSG_NOTICE([setting up the build environment variables...])
13895 AC_SUBST(COMPATH)
13897 if test "$build_os" = "cygwin"; then
13898     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13899         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13900         ATL_INCLUDE="$COMPATH/atlmfc/include"
13901     elif test -d "$COMPATH/atlmfc/lib"; then
13902         ATL_LIB="$COMPATH/atlmfc/lib"
13903         ATL_INCLUDE="$COMPATH/atlmfc/include"
13904     else
13905         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13906         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13907     fi
13908     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13909     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13910     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13912     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13913     PathFormat "/usr/bin/find.exe"
13914     FIND="$formatted_path"
13915     PathFormat "/usr/bin/sort.exe"
13916     SORT="$formatted_path"
13917     PathFormat "/usr/bin/grep.exe"
13918     WIN_GREP="$formatted_path"
13919     PathFormat "/usr/bin/ls.exe"
13920     WIN_LS="$formatted_path"
13921     PathFormat "/usr/bin/touch.exe"
13922     WIN_TOUCH="$formatted_path"
13923 else
13924     FIND=find
13925     SORT=sort
13928 AC_SUBST(ATL_INCLUDE)
13929 AC_SUBST(ATL_LIB)
13930 AC_SUBST(FIND)
13931 AC_SUBST(SORT)
13932 AC_SUBST(WIN_GREP)
13933 AC_SUBST(WIN_LS)
13934 AC_SUBST(WIN_TOUCH)
13936 AC_SUBST(BUILD_TYPE)
13938 AC_SUBST(SOLARINC)
13940 PathFormat "$PERL"
13941 PERL="$formatted_path"
13942 AC_SUBST(PERL)
13944 if test -n "$TMPDIR"; then
13945     TEMP_DIRECTORY="$TMPDIR"
13946 else
13947     TEMP_DIRECTORY="/tmp"
13949 if test "$build_os" = "cygwin"; then
13950     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13952 AC_SUBST(TEMP_DIRECTORY)
13954 # setup the PATH for the environment
13955 if test -n "$LO_PATH_FOR_BUILD"; then
13956     LO_PATH="$LO_PATH_FOR_BUILD"
13957     case "$host_os" in
13958     cygwin*|wsl*)
13959         pathmunge "$MSVC_HOST_PATH" "before"
13960         ;;
13961     esac
13962 else
13963     LO_PATH="$PATH"
13965     case "$host_os" in
13967     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13968         if test "$ENABLE_JAVA" != ""; then
13969             pathmunge "$JAVA_HOME/bin" "after"
13970         fi
13971         ;;
13973     cygwin*|wsl*)
13974         # Win32 make needs native paths
13975         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13976             LO_PATH=`cygpath -p -m "$PATH"`
13977         fi
13978         if test "$WIN_BUILD_ARCH" = "x64"; then
13979             # needed for msi packaging
13980             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13981         fi
13982         # .NET 4.6 and higher don't have bin directory
13983         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13984             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13985         fi
13986         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13987         pathmunge "$CSC_PATH" "before"
13988         pathmunge "$MIDL_PATH" "before"
13989         pathmunge "$AL_PATH" "before"
13990         pathmunge "$MSVC_MULTI_PATH" "before"
13991         pathmunge "$MSVC_BUILD_PATH" "before"
13992         if test -n "$MSBUILD_PATH" ; then
13993             pathmunge "$MSBUILD_PATH" "before"
13994         fi
13995         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13996         if test "$ENABLE_JAVA" != ""; then
13997             if test -d "$JAVA_HOME/jre/bin/client"; then
13998                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13999             fi
14000             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14001                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14002             fi
14003             pathmunge "$JAVA_HOME/bin" "before"
14004         fi
14005         pathmunge "$MSVC_HOST_PATH" "before"
14006         ;;
14008     solaris*)
14009         pathmunge "/usr/css/bin" "before"
14010         if test "$ENABLE_JAVA" != ""; then
14011             pathmunge "$JAVA_HOME/bin" "after"
14012         fi
14013         ;;
14014     esac
14017 AC_SUBST(LO_PATH)
14019 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14020 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14021     x_LO_ELFCHECK_ALLOWLIST=
14022 else
14023     x_LO_ELFCHECK_ALLOWLIST=[\#]
14025 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14026 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14028 libo_FUZZ_SUMMARY
14030 # Generate a configuration sha256 we can use for deps
14031 if test -f config_host.mk; then
14032     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14034 if test -f config_host_lang.mk; then
14035     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14038 CFLAGS=$my_original_CFLAGS
14039 CXXFLAGS=$my_original_CXXFLAGS
14040 CPPFLAGS=$my_original_CPPFLAGS
14042 AC_CONFIG_LINKS([include:include])
14044 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14045 # BUILD platform configuration] - otherwise breaks cross building
14046 AC_CONFIG_FILES([config_host.mk
14047                  config_host_lang.mk
14048                  Makefile
14049                  bin/bffvalidator.sh
14050                  bin/odfvalidator.sh
14051                  bin/officeotron.sh
14052                  hardened_runtime.xcent
14053                  instsetoo_native/util/openoffice.lst
14054                  sysui/desktop/macosx/Info.plist])
14055 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14056 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14057 AC_CONFIG_HEADERS([config_host/config_clang.h])
14058 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14059 AC_CONFIG_HEADERS([config_host/config_eot.h])
14060 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14061 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14062 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14063 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14064 AC_CONFIG_HEADERS([config_host/config_features.h])
14065 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14066 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14067 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14068 AC_CONFIG_HEADERS([config_host/config_folders.h])
14069 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14070 AC_CONFIG_HEADERS([config_host/config_gio.h])
14071 AC_CONFIG_HEADERS([config_host/config_global.h])
14072 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14073 AC_CONFIG_HEADERS([config_host/config_java.h])
14074 AC_CONFIG_HEADERS([config_host/config_langs.h])
14075 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14076 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14077 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14078 AC_CONFIG_HEADERS([config_host/config_locales.h])
14079 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14080 AC_CONFIG_HEADERS([config_host/config_oox.h])
14081 AC_CONFIG_HEADERS([config_host/config_options.h])
14082 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14083 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14084 AC_CONFIG_HEADERS([config_host/config_skia.h])
14085 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14086 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14087 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14088 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14089 AC_CONFIG_HEADERS([config_host/config_version.h])
14090 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14091 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14092 AC_CONFIG_HEADERS([config_host/config_python.h])
14093 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14094 AC_OUTPUT
14096 if test "$CROSS_COMPILING" = TRUE; then
14097     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14100 # touch the config timestamp file
14101 if test ! -f config_host.mk.stamp; then
14102     echo > config_host.mk.stamp
14103 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14104     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14105 else
14106     echo > config_host.mk.stamp
14109 # touch the config lang timestamp file
14110 if test ! -f config_host_lang.mk.stamp; then
14111     echo > config_host_lang.mk.stamp
14112 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14113     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14114 else
14115     echo > config_host_lang.mk.stamp
14119 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14120         -a "$build_os" = "cygwin"; then
14122 cat << _EOS
14123 ****************************************************************************
14124 WARNING:
14125 Your make version is known to be horribly slow, and hard to debug
14126 problems with. To get a reasonably functional make please do:
14128 to install a pre-compiled binary make for Win32
14130  mkdir -p /opt/lo/bin
14131  cd /opt/lo/bin
14132  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14133  cp make-4.2.1-msvc.exe make
14134  chmod +x make
14136 to install from source:
14137 place yourself in a working directory of you choice.
14139  git clone git://git.savannah.gnu.org/make.git
14141  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14142  set PATH=%PATH%;C:\Cygwin\bin
14143  [or Cygwin64, if that is what you have]
14144  cd path-to-make-repo-you-cloned-above
14145  build_w32.bat --without-guile
14147 should result in a WinRel/gnumake.exe.
14148 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14150 Then re-run autogen.sh
14152 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14153 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14155 _EOS
14156 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14157     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14162 cat << _EOF
14163 ****************************************************************************
14165 To build, run:
14166 $GNUMAKE
14168 To view some help, run:
14169 $GNUMAKE help
14171 _EOF
14173 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14174     cat << _EOF
14175 After the build has finished successfully, you can immediately run what you built using the command:
14176 _EOF
14178     if test $_os = Darwin; then
14179         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14180     else
14181         echo instdir/program/soffice
14182     fi
14183     cat << _EOF
14185 If you want to run the smoketest, run:
14186 $GNUMAKE check
14188 _EOF
14191 if test -f warn; then
14192     cat warn
14193     rm warn
14196 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: