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
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.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
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)
58 filteredlibs="$filteredlibs $f"
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.
69 # Return value: $formatted_path and $formatted_path_unix.
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).
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
79 # Errors out if 8.3 names are needed but aren't present for some of the path components.
83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
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
91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98 printf "PathFormat $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')
108 # spaces,parentheses,brackets,braces are problematic in pathname
110 case "$formatted_path" in
111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
115 if test "$pf_conv_to_dos" = "yes"; then
116 if test "$build_os" = "wsl"; then
117 case "$formatted_path" in
119 formatted_path=$(wslpath -w "$formatted_path")
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"`
126 formatted_path=`cygpath -d "$formatted_path"`
128 if test $? -ne 0; then
129 AC_MSG_ERROR([path conversion failed for "$1".])
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.])
140 formatted_path="$new_formatted_path"
143 if test "$build_os" = "wsl"; then
144 if test "$fp_count_colon" != "0"; then
145 formatted_path=$(wslpath "$formatted_path")
147 case "$formatted_path" in
152 formatted_path=$(wslpath -m $formatted_path)
153 case "$formatted_path" in
157 formatted_path="$formatted_path"$final_slash
161 formatted_path=$(wslpath -m "$formatted_path")
164 formatted_path=`cygpath -m "$formatted_path"`
166 if test $? -ne 0; then
167 AC_MSG_ERROR([path conversion failed for "$1".])
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?])
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")
180 formatted_path_unix="$formatted_path"
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
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)"
201 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
209 if test "$have_WARNINGS" = "no"; then
210 echo "*************************************" > warn
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:'
216 COLORWARN="* WARNING :"
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
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`"
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`"
249 echo "********************************************************************"
251 echo "* Running ${PACKAGE_NAME} build configuration."
253 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"
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.
274 if test -n "$UNITTEST_WSL_CYGPATH"; then
275 echo -n cygpath "$@" "==> "
278 # Cygwin's real cygpath has a plethora of options but we use only a few here.
281 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
284 while getopts dmuwlsp opt; do
287 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
297 if test $# -ne 1; then
298 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
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])
314 # A Windows file in WSL format
315 input=$(wslpath -w "$input")
317 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
318 # Already in Windows format
321 input=$(wslpath -w "$input")
324 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
327 if test -n "$opt_d" -o -n "$opt_s"; then
328 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
330 if test -n "$opt_m"; then
331 input="${input//\\//}"
338 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
345 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
351 if test -n "$UNITTEST_WSL_CYGPATH"; then
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'
377 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
381 # Use of PathFormat must be after AC_CANONICAL_BUILD above
383 printf "$formatted_path , $formatted_path_unix\n"
386 printf "$formatted_path , $formatted_path_unix\n"
388 PathFormat "$PROGRAMFILESX86"
389 printf "$formatted_path , $formatted_path_unix\n"
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
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 ===================================================================
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)
479 # AC_PROG_EGREP doesn't set GREP on all systems as well
480 AC_PATH_PROG(GREP, grep)
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"
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"
526 AC_MSG_RESULT($GNUMAKE)
527 if test -z "$GNUMAKE"; then
528 AC_MSG_ERROR([not found. install GNU Make.])
530 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
531 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
535 win_short_path_for_make()
537 local short_path="$1"
538 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
539 cygpath -sm "$short_path"
541 cygpath -u "$(cygpath -d "$short_path")"
546 if test "$build_os" = "cygwin"; then
547 PathFormat "$SRC_ROOT"
548 SRC_ROOT="$formatted_path"
549 PathFormat "$BUILDDIR"
550 BUILDDIR="$formatted_path"
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])
556 AC_MSG_RESULT([found: $COMSPEC])
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
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
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]),
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.])
636 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
638 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
640 if test -z "$ANDROID_NDK_VERSION"; then
641 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
643 case $ANDROID_NDK_VERSION in
645 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
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.*])
650 16.*|17.*|18.*|19.*|20.*)
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."
659 if test -n "$with_android_api_level" ; then
660 ANDROID_API_LEVEL="$with_android_api_level"
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
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
685 ANDROID_APP_ABI=x86_64
687 # host_cpu is something like "i386" or "i686" I guess, NDK uses
688 # "x86" in some contexts
690 android_platform_prefix=$android_cpu
691 android_gnu_prefix=i686-linux-android
692 LLVM_TRIPLE=$android_gnu_prefix
696 case "$with_android_ndk_toolchain_version" in
698 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
701 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
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.)
714 android_HOST_TAG=linux-x86_64
717 android_HOST_TAG=darwin-x86_64
720 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
721 # ndk would also support windows and windows-x86_64
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"
744 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
746 if test -z "$CC"; then
747 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
750 if test -z "$CXX"; then
751 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
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 ===================================================================
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.])
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])
789 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
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:
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"
829 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
832 INSTROOTCONTENTSUFFIX=
835 HOST_PLATFORM="$host"
837 host_cpu_for_clang="$host_cpu"
842 build_gstreamer_1_0=yes
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])
855 AC_MSG_RESULT([ok ($_os_release)])
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)])
863 AC_MSG_ERROR([only SPARC and i386 processors are supported])
867 linux-gnu*|k*bsd*-gnu*)
868 build_gstreamer_1_0=yes
874 if test "$enable_fuzzers" != yes; then
880 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
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.
916 if test "$host_cpu" = "aarch64"; then
919 enable_firebird_sdbc=no
923 darwin*|macos*) # macOS
929 if test -n "$LODE_HOME" ; then
931 AC_MSG_NOTICE([sanitized the PATH to $PATH])
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"
945 # -undefined error is the default
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
957 # Apple's Clang uses "arm64"
958 host_cpu_for_clang=arm64
968 if test -n "$LODE_HOME" ; then
970 AC_MSG_NOTICE([sanitized the PATH to $PATH])
975 enable_mpl_subset=yes
976 enable_lotuswordpro=no
979 enable_mariadb_sdbc=no
980 enable_postgresql_sdbc=no
981 enable_extension_integration=no
982 enable_report_builder=no
984 if test "$enable_ios_simulator" = "yes"; then
985 host=x86_64-apple-darwin
987 # See comment above the case "$host_os"
988 LINKFLAGSSHL="-dynamiclib -single_module"
995 # -undefined error is the default
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
1007 build_gstreamer_1_0=yes
1012 AC_MSG_CHECKING([the FreeBSD operating system release])
1013 if test -n "$with_os_version"; then
1014 OSVERSION="$with_os_version"
1016 OSVERSION=`/sbin/sysctl -n kern.osreldate`
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"
1028 PTHREAD_LIBS="-pthread"
1030 AC_MSG_RESULT([$PTHREAD_LIBS])
1035 build_gstreamer_1_0=yes
1040 PTHREAD_LIBS="-pthread -lpthread"
1047 PTHREAD_LIBS=-pthread
1053 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054 PTHREAD_LIBS="-pthread"
1059 build_gstreamer_1_0=yes
1064 PTHREAD_LIBS="-pthread"
1069 build_gstreamer_1_0=no
1070 enable_lotuswordpro=no
1071 enable_mpl_subset=yes
1074 enable_mariadb_sdbc=no
1075 enable_report_builder=no
1077 enable_postgresql_sdbc=no
1090 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1091 BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
1101 enable_gstreamer_1_0=no
1106 enable_postgresql_sdbc=no
1107 enable_firebird_sdbc=no
1112 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
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])
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])
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"
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"
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])
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])
1174 AC_MSG_CHECKING(for explicit CFLAGS)
1175 if test -n "$CFLAGS"; then
1176 AC_MSG_RESULT([$CFLAGS])
1182 AC_MSG_CHECKING(for explicit CXXFLAGS)
1183 if test -n "$CXXFLAGS"; then
1184 AC_MSG_RESULT([$CXXFLAGS])
1190 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1191 if test -n "$OBJCFLAGS"; then
1192 AC_MSG_RESULT([$OBJCFLAGS])
1198 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1199 if test -n "$OBJCXXFLAGS"; then
1200 AC_MSG_RESULT([$OBJCXXFLAGS])
1206 AC_MSG_CHECKING(for explicit LDFLAGS)
1207 if test -n "$LDFLAGS"; then
1208 AC_MSG_RESULT([$LDFLAGS])
1218 AC_SUBST(OBJCXXFLAGS)
1222 AC_SUBST(x_CXXFLAGS)
1223 AC_SUBST(x_OBJCFLAGS)
1224 AC_SUBST(x_OBJCXXFLAGS)
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
1240 if test -z "$CC_BASE"; then
1241 CC_BASE=`first_arg_basename "$CC"`
1245 if test "$_os" != "WINNT"; then
1246 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1250 AC_SUBST(ENDIANNESS)
1252 if test $_os != "WINNT"; then
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])])
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
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
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.]))
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
1529 On macOS the only choices are
1530 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
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)
1582 AS_HELP_STRING([--enable-qt5],
1583 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1588 AS_HELP_STRING([--enable-kf5],
1589 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1590 KF5 are available.]),
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.]),
1605 AS_HELP_STRING([--disable-gui],
1606 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1609 libo_FUZZ_ARG_ENABLE(randr,
1610 AS_HELP_STRING([--disable-randr],
1611 [Disable RandR support in the vcl project.]),
1612 ,test "${enable_randr+set}" = set || enable_randr=yes)
1614 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1615 AS_HELP_STRING([--disable-gstreamer-1-0],
1616 [Disable building with the gstreamer 1.0 avmedia backend.]),
1617 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1619 libo_FUZZ_ARG_ENABLE(vlc,
1620 AS_HELP_STRING([--enable-vlc],
1621 [Enable building with the (experimental) VLC avmedia backend.]),
1622 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1624 libo_FUZZ_ARG_ENABLE(neon,
1625 AS_HELP_STRING([--disable-neon],
1626 [Disable neon and the compilation of webdav binding.]),
1629 libo_FUZZ_ARG_ENABLE([eot],
1630 [AS_HELP_STRING([--enable-eot],
1631 [Enable support for Embedded OpenType fonts.])],
1632 ,test "${enable_eot+set}" = set || enable_eot=no)
1634 libo_FUZZ_ARG_ENABLE(cve-tests,
1635 AS_HELP_STRING([--disable-cve-tests],
1636 [Prevent CVE tests to be executed]),
1639 libo_FUZZ_ARG_ENABLE(chart-tests,
1640 AS_HELP_STRING([--enable-chart-tests],
1641 [Executes chart XShape tests. In a perfect world these tests would be
1642 stable and everyone could run them, in reality it is best to run them
1643 only on a few machines that are known to work and maintained by people
1644 who can judge if a test failure is a regression or not.]),
1647 AC_ARG_ENABLE(build-opensymbol,
1648 AS_HELP_STRING([--enable-build-opensymbol],
1649 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1650 fontforge installed.]),
1653 AC_ARG_ENABLE(dependency-tracking,
1654 AS_HELP_STRING([--enable-dependency-tracking],
1655 [Do not reject slow dependency extractors.])[
1656 --disable-dependency-tracking
1657 Disables generation of dependency information.
1658 Speed up one-time builds.],
1661 AC_ARG_ENABLE(icecream,
1662 AS_HELP_STRING([--enable-icecream],
1663 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1664 It defaults to /opt/icecream for the location of the icecream gcc/g++
1665 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1669 AS_HELP_STRING([--enable-ld=<linker>],
1670 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1671 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1672 If <linker> contains any ':', the part before the first ':' is used as the value of
1673 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1674 needed for Clang 12).]),
1677 libo_FUZZ_ARG_ENABLE(cups,
1678 AS_HELP_STRING([--disable-cups],
1679 [Do not build cups support.])
1682 AC_ARG_ENABLE(ccache,
1683 AS_HELP_STRING([--disable-ccache],
1684 [Do not try to use ccache automatically.
1685 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1686 CC/CXX are not yet set, and --enable-icecream is not given, we
1687 attempt to use ccache. --disable-ccache disables ccache completely.
1688 Additionally ccache's depend mode is enabled if possible,
1689 use --enable-ccache=nodepend to enable ccache without depend mode.
1693 libo_FUZZ_ARG_ENABLE(online-update,
1694 AS_HELP_STRING([--enable-online-update],
1695 [Enable the online update service that will check for new versions of
1696 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1697 If the value is "mar", the experimental Mozilla-like update will be
1698 enabled instead of the traditional update mechanism.]),
1701 AC_ARG_WITH(update-config,
1702 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1703 [Path to the update config ini file]))
1705 libo_FUZZ_ARG_ENABLE(extension-update,
1706 AS_HELP_STRING([--disable-extension-update],
1707 [Disable possibility to update installed extensions.]),
1710 libo_FUZZ_ARG_ENABLE(release-build,
1711 AS_HELP_STRING([--enable-release-build],
1712 [Enable release build. Note that the "release build" choice is orthogonal to
1713 whether symbols are present, debug info is generated, or optimization
1715 See http://wiki.documentfoundation.org/Development/DevBuild]),
1718 AC_ARG_ENABLE(windows-build-signing,
1719 AS_HELP_STRING([--enable-windows-build-signing],
1720 [Enable signing of windows binaries (*.exe, *.dll)]),
1723 AC_ARG_ENABLE(silent-msi,
1724 AS_HELP_STRING([--enable-silent-msi],
1725 [Enable MSI with LIMITUI=1 (silent install).]),
1728 AC_ARG_ENABLE(macosx-code-signing,
1729 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1730 [Sign executables, dylibs, frameworks and the app bundle. If you
1731 don't provide an identity the first suitable certificate
1732 in your keychain is used.]),
1735 AC_ARG_ENABLE(macosx-package-signing,
1736 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1737 [Create a .pkg suitable for uploading to the Mac App Store and sign
1738 it. If you don't provide an identity the first suitable certificate
1739 in your keychain is used.]),
1742 AC_ARG_ENABLE(macosx-sandbox,
1743 AS_HELP_STRING([--enable-macosx-sandbox],
1744 [Make the app bundle run in a sandbox. Requires code signing.
1745 Is required by apps distributed in the Mac App Store, and implies
1746 adherence to App Store rules.]),
1749 AC_ARG_WITH(macosx-bundle-identifier,
1750 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1751 [Define the macOS bundle identifier. Default is the somewhat weird
1752 org.libreoffice.script ("script", huh?).]),
1753 ,with_macosx_bundle_identifier=org.libreoffice.script)
1755 AC_ARG_WITH(product-name,
1756 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1757 [Define the product name. Default is AC_PACKAGE_NAME.]),
1758 ,with_product_name=$PRODUCTNAME)
1760 AC_ARG_WITH(package-version,
1761 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1762 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1765 libo_FUZZ_ARG_ENABLE(readonly-installset,
1766 AS_HELP_STRING([--enable-readonly-installset],
1767 [Prevents any attempts by LibreOffice to write into its installation. That means
1768 at least that no "system-wide" extensions can be added. Partly experimental work in
1769 progress, probably not fully implemented. Always enabled for macOS.]),
1772 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1773 AS_HELP_STRING([--disable-mariadb-sdbc],
1774 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1777 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1778 AS_HELP_STRING([--disable-postgresql-sdbc],
1779 [Disable the build of the PostgreSQL-SDBC driver.])
1782 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1783 AS_HELP_STRING([--disable-lotuswordpro],
1784 [Disable the build of the Lotus Word Pro filter.]),
1785 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1787 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1788 AS_HELP_STRING([--disable-firebird-sdbc],
1789 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1790 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1792 AC_ARG_ENABLE(bogus-pkg-config,
1793 AS_HELP_STRING([--enable-bogus-pkg-config],
1794 [MACOSX only: on MacOSX pkg-config can cause trouble. by default if one is found in the PATH, an error is issued. This flag turn that error into a warning.]),
1797 AC_ARG_ENABLE(openssl,
1798 AS_HELP_STRING([--disable-openssl],
1799 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1800 components will either use GNUTLS or NSS. Work in progress,
1801 use only if you are hacking on it.]),
1802 ,enable_openssl=yes)
1804 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1805 AS_HELP_STRING([--enable-cipher-openssl-backend],
1806 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1807 Requires --enable-openssl.]))
1809 AC_ARG_ENABLE(library-bin-tar,
1810 AS_HELP_STRING([--enable-library-bin-tar],
1811 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1812 Some libraries can save their build result in a tarball
1813 stored in TARFILE_LOCATION. That binary tarball is
1814 uniquely identified by the source tarball,
1815 the content of the config_host.mk file and the content
1816 of the top-level directory in core for that library
1817 If this option is enabled, then if such a tarfile exist, it will be untarred
1818 instead of the source tarfile, and the build step will be skipped for that
1820 If a proper tarfile does not exist, then the normal source-based
1821 build is done for that library and a proper binary tarfile is created
1822 for the next time.]),
1825 AC_ARG_ENABLE(dconf,
1826 AS_HELP_STRING([--disable-dconf],
1827 [Disable the dconf configuration backend (enabled by default where
1830 libo_FUZZ_ARG_ENABLE(formula-logger,
1832 [--enable-formula-logger],
1833 [Enable formula logger for logging formula calculation flow in Calc.]
1838 AS_HELP_STRING([--disable-ldap],
1839 [Disable LDAP support.]),
1842 AC_ARG_ENABLE(opencl,
1843 AS_HELP_STRING([--disable-opencl],
1844 [Disable OpenCL support.]),
1847 dnl ===================================================================
1848 dnl Optional Packages (--with/without-)
1849 dnl ===================================================================
1851 AC_ARG_WITH(gcc-home,
1852 AS_HELP_STRING([--with-gcc-home],
1853 [Specify the location of gcc/g++ manually. This can be used in conjunction
1854 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1855 non-default path.]),
1858 AC_ARG_WITH(gnu-patch,
1859 AS_HELP_STRING([--with-gnu-patch],
1860 [Specify location of GNU patch on Solaris or FreeBSD.]),
1863 AC_ARG_WITH(build-platform-configure-options,
1864 AS_HELP_STRING([--with-build-platform-configure-options],
1865 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1869 AS_HELP_STRING([--with-gnu-cp],
1870 [Specify location of GNU cp on Solaris or FreeBSD.]),
1873 AC_ARG_WITH(external-tar,
1874 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1875 [Specify an absolute path of where to find (and store) tarfiles.]),
1876 TARFILE_LOCATION=$withval ,
1879 AC_ARG_WITH(referenced-git,
1880 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1881 [Specify another checkout directory to reference. This makes use of
1882 git submodule update --reference, and saves a lot of diskspace
1883 when having multiple trees side-by-side.]),
1884 GIT_REFERENCE_SRC=$withval ,
1887 AC_ARG_WITH(linked-git,
1888 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1889 [Specify a directory where the repositories of submodules are located.
1890 This uses a method similar to git-new-workdir to get submodules.]),
1891 GIT_LINK_SRC=$withval ,
1894 AC_ARG_WITH(galleries,
1895 AS_HELP_STRING([--with-galleries],
1896 [Specify how galleries should be built. It is possible either to
1897 build these internally from source ("build"),
1898 or to disable them ("no")]),
1902 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1903 [Choose which themes to include. By default those themes with an '*' are included.
1904 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1905 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1908 libo_FUZZ_ARG_WITH(helppack-integration,
1909 AS_HELP_STRING([--without-helppack-integration],
1910 [It will not integrate the helppacks to the installer
1911 of the product. Please use this switch to use the online help
1912 or separate help packages.]),
1915 libo_FUZZ_ARG_WITH(fonts,
1916 AS_HELP_STRING([--without-fonts],
1917 [LibreOffice includes some third-party fonts to provide a reliable basis for
1918 help content, templates, samples, etc. When these fonts are already
1919 known to be available on the system then you should use this option.]),
1923 AS_HELP_STRING([--with-epm],
1924 [Decides which epm to use. Default is to use the one from the system if
1925 one is built. When either this is not there or you say =internal epm
1929 AC_ARG_WITH(package-format,
1930 AS_HELP_STRING([--with-package-format],
1931 [Specify package format(s) for LibreOffice installation sets. The
1932 implicit --without-package-format leads to no installation sets being
1933 generated. Possible values: aix, archive, bsd, deb, dmg,
1934 installed, msi, pkg, and rpm.
1935 Example: --with-package-format='deb rpm']),
1939 AS_HELP_STRING([--with-tls],
1940 [Decides which TLS/SSL and cryptographic implementations to use for
1941 LibreOffice's code. Notice that this doesn't apply for depending
1942 libraries like "neon", for example. Default is to use NSS
1943 although OpenSSL is also possible. Notice that selecting NSS restricts
1944 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1945 restrict by now the usage of NSS in LO's code. Possible values:
1946 openssl, nss. Example: --with-tls="nss"]),
1949 AC_ARG_WITH(system-libs,
1950 AS_HELP_STRING([--with-system-libs],
1951 [Use libraries already on system -- enables all --with-system-* flags.]),
1954 AC_ARG_WITH(system-bzip2,
1955 AS_HELP_STRING([--with-system-bzip2],
1956 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1957 [with_system_bzip2="$with_system_libs"])
1959 AC_ARG_WITH(system-headers,
1960 AS_HELP_STRING([--with-system-headers],
1961 [Use headers already on system -- enables all --with-system-* flags for
1962 external packages whose headers are the only entities used i.e.
1963 boost/odbc/sane-header(s).]),,
1964 [with_system_headers="$with_system_libs"])
1966 AC_ARG_WITH(system-jars,
1967 AS_HELP_STRING([--without-system-jars],
1968 [When building with --with-system-libs, also the needed jars are expected
1969 on the system. Use this to disable that]),,
1970 [with_system_jars="$with_system_libs"])
1972 AC_ARG_WITH(system-cairo,
1973 AS_HELP_STRING([--with-system-cairo],
1974 [Use cairo libraries already on system. Happens automatically for
1975 (implicit) --enable-gtk3.]))
1977 AC_ARG_WITH(system-epoxy,
1978 AS_HELP_STRING([--with-system-epoxy],
1979 [Use epoxy libraries already on system. Happens automatically for
1980 (implicit) --enable-gtk3.]),,
1981 [with_system_epoxy="$with_system_libs"])
1983 AC_ARG_WITH(myspell-dicts,
1984 AS_HELP_STRING([--with-myspell-dicts],
1985 [Adds myspell dictionaries to the LibreOffice installation set]),
1988 AC_ARG_WITH(system-dicts,
1989 AS_HELP_STRING([--without-system-dicts],
1990 [Do not use dictionaries from system paths.]),
1993 AC_ARG_WITH(external-dict-dir,
1994 AS_HELP_STRING([--with-external-dict-dir],
1995 [Specify external dictionary dir.]),
1998 AC_ARG_WITH(external-hyph-dir,
1999 AS_HELP_STRING([--with-external-hyph-dir],
2000 [Specify external hyphenation pattern dir.]),
2003 AC_ARG_WITH(external-thes-dir,
2004 AS_HELP_STRING([--with-external-thes-dir],
2005 [Specify external thesaurus dir.]),
2008 AC_ARG_WITH(system-zlib,
2009 AS_HELP_STRING([--with-system-zlib],
2010 [Use zlib already on system.]),,
2011 [with_system_zlib=auto])
2013 AC_ARG_WITH(system-jpeg,
2014 AS_HELP_STRING([--with-system-jpeg],
2015 [Use jpeg already on system.]),,
2016 [with_system_jpeg="$with_system_libs"])
2018 AC_ARG_WITH(system-clucene,
2019 AS_HELP_STRING([--with-system-clucene],
2020 [Use clucene already on system.]),,
2021 [with_system_clucene="$with_system_libs"])
2023 AC_ARG_WITH(system-expat,
2024 AS_HELP_STRING([--with-system-expat],
2025 [Use expat already on system.]),,
2026 [with_system_expat="$with_system_libs"])
2028 AC_ARG_WITH(system-libxml,
2029 AS_HELP_STRING([--with-system-libxml],
2030 [Use libxml/libxslt already on system.]),,
2031 [with_system_libxml=auto])
2033 AC_ARG_WITH(system-icu,
2034 AS_HELP_STRING([--with-system-icu],
2035 [Use icu already on system.]),,
2036 [with_system_icu="$with_system_libs"])
2038 AC_ARG_WITH(system-ucpp,
2039 AS_HELP_STRING([--with-system-ucpp],
2040 [Use ucpp already on system.]),,
2043 AC_ARG_WITH(system-openldap,
2044 AS_HELP_STRING([--with-system-openldap],
2045 [Use the OpenLDAP LDAP SDK already on system.]),,
2046 [with_system_openldap="$with_system_libs"])
2048 libo_FUZZ_ARG_ENABLE(poppler,
2049 AS_HELP_STRING([--disable-poppler],
2050 [Disable building Poppler.])
2053 AC_ARG_WITH(system-poppler,
2054 AS_HELP_STRING([--with-system-poppler],
2055 [Use system poppler (only needed for PDF import).]),,
2056 [with_system_poppler="$with_system_libs"])
2058 libo_FUZZ_ARG_ENABLE(gpgmepp,
2059 AS_HELP_STRING([--disable-gpgmepp],
2060 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2063 AC_ARG_WITH(system-gpgmepp,
2064 AS_HELP_STRING([--with-system-gpgmepp],
2065 [Use gpgmepp already on system]),,
2066 [with_system_gpgmepp="$with_system_libs"])
2068 AC_ARG_WITH(system-apache-commons,
2069 AS_HELP_STRING([--with-system-apache-commons],
2070 [Use Apache commons libraries already on system.]),,
2071 [with_system_apache_commons="$with_system_jars"])
2073 AC_ARG_WITH(system-mariadb,
2074 AS_HELP_STRING([--with-system-mariadb],
2075 [Use MariaDB/MySQL libraries already on system.]),,
2076 [with_system_mariadb="$with_system_libs"])
2078 AC_ARG_ENABLE(bundle-mariadb,
2079 AS_HELP_STRING([--enable-bundle-mariadb],
2080 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2083 AC_ARG_WITH(system-postgresql,
2084 AS_HELP_STRING([--with-system-postgresql],
2085 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2086 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2087 [with_system_postgresql="$with_system_libs"])
2089 AC_ARG_WITH(libpq-path,
2090 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2091 [Use this PostgreSQL C interface (libpq) installation for building
2092 the PostgreSQL-SDBC extension.]),
2095 AC_ARG_WITH(system-firebird,
2096 AS_HELP_STRING([--with-system-firebird],
2097 [Use Firebird libraries already on system, for building the Firebird-SDBC
2098 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2099 [with_system_firebird="$with_system_libs"])
2101 AC_ARG_WITH(system-libtommath,
2102 AS_HELP_STRING([--with-system-libtommath],
2103 [Use libtommath already on system]),,
2104 [with_system_libtommath="$with_system_libs"])
2106 AC_ARG_WITH(system-hsqldb,
2107 AS_HELP_STRING([--with-system-hsqldb],
2108 [Use hsqldb already on system.]))
2110 AC_ARG_WITH(hsqldb-jar,
2111 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2112 [Specify path to jarfile manually.]),
2113 HSQLDB_JAR=$withval)
2115 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2116 AS_HELP_STRING([--disable-scripting-beanshell],
2117 [Disable support for scripts in BeanShell.]),
2121 AC_ARG_WITH(system-beanshell,
2122 AS_HELP_STRING([--with-system-beanshell],
2123 [Use beanshell already on system.]),,
2124 [with_system_beanshell="$with_system_jars"])
2126 AC_ARG_WITH(beanshell-jar,
2127 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2128 [Specify path to jarfile manually.]),
2131 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2132 AS_HELP_STRING([--disable-scripting-javascript],
2133 [Disable support for scripts in JavaScript.]),
2137 AC_ARG_WITH(system-rhino,
2138 AS_HELP_STRING([--with-system-rhino],
2139 [Use rhino already on system.]),,)
2140 # [with_system_rhino="$with_system_jars"])
2141 # Above is not used as we have different debug interface
2142 # patched into internal rhino. This code needs to be fixed
2143 # before we can enable it by default.
2145 AC_ARG_WITH(rhino-jar,
2146 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2147 [Specify path to jarfile manually.]),
2150 AC_ARG_WITH(commons-logging-jar,
2151 AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2152 [Specify path to jarfile manually.]),
2153 COMMONS_LOGGING_JAR=$withval)
2155 AC_ARG_WITH(system-jfreereport,
2156 AS_HELP_STRING([--with-system-jfreereport],
2157 [Use JFreeReport already on system.]),,
2158 [with_system_jfreereport="$with_system_jars"])
2160 AC_ARG_WITH(sac-jar,
2161 AS_HELP_STRING([--with-sac-jar=JARFILE],
2162 [Specify path to jarfile manually.]),
2165 AC_ARG_WITH(libxml-jar,
2166 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2167 [Specify path to jarfile manually.]),
2168 LIBXML_JAR=$withval)
2170 AC_ARG_WITH(flute-jar,
2171 AS_HELP_STRING([--with-flute-jar=JARFILE],
2172 [Specify path to jarfile manually.]),
2175 AC_ARG_WITH(jfreereport-jar,
2176 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2177 [Specify path to jarfile manually.]),
2178 JFREEREPORT_JAR=$withval)
2180 AC_ARG_WITH(liblayout-jar,
2181 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2182 [Specify path to jarfile manually.]),
2183 LIBLAYOUT_JAR=$withval)
2185 AC_ARG_WITH(libloader-jar,
2186 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2187 [Specify path to jarfile manually.]),
2188 LIBLOADER_JAR=$withval)
2190 AC_ARG_WITH(libformula-jar,
2191 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2192 [Specify path to jarfile manually.]),
2193 LIBFORMULA_JAR=$withval)
2195 AC_ARG_WITH(librepository-jar,
2196 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2197 [Specify path to jarfile manually.]),
2198 LIBREPOSITORY_JAR=$withval)
2200 AC_ARG_WITH(libfonts-jar,
2201 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2202 [Specify path to jarfile manually.]),
2203 LIBFONTS_JAR=$withval)
2205 AC_ARG_WITH(libserializer-jar,
2206 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2207 [Specify path to jarfile manually.]),
2208 LIBSERIALIZER_JAR=$withval)
2210 AC_ARG_WITH(libbase-jar,
2211 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2212 [Specify path to jarfile manually.]),
2213 LIBBASE_JAR=$withval)
2215 AC_ARG_WITH(system-odbc,
2216 AS_HELP_STRING([--with-system-odbc],
2217 [Use the odbc headers already on system.]),,
2218 [with_system_odbc="auto"])
2220 AC_ARG_WITH(system-sane,
2221 AS_HELP_STRING([--with-system-sane],
2222 [Use sane.h already on system.]),,
2223 [with_system_sane="$with_system_headers"])
2225 AC_ARG_WITH(system-bluez,
2226 AS_HELP_STRING([--with-system-bluez],
2227 [Use bluetooth.h already on system.]),,
2228 [with_system_bluez="$with_system_headers"])
2230 AC_ARG_WITH(system-curl,
2231 AS_HELP_STRING([--with-system-curl],
2232 [Use curl already on system.]),,
2233 [with_system_curl=auto])
2235 AC_ARG_WITH(system-boost,
2236 AS_HELP_STRING([--with-system-boost],
2237 [Use boost already on system.]),,
2238 [with_system_boost="$with_system_headers"])
2240 AC_ARG_WITH(system-glm,
2241 AS_HELP_STRING([--with-system-glm],
2242 [Use glm already on system.]),,
2243 [with_system_glm="$with_system_headers"])
2245 AC_ARG_WITH(system-hunspell,
2246 AS_HELP_STRING([--with-system-hunspell],
2247 [Use libhunspell already on system.]),,
2248 [with_system_hunspell="$with_system_libs"])
2250 libo_FUZZ_ARG_ENABLE(qrcodegen,
2251 AS_HELP_STRING([--disable-qrcodegen],
2252 [Disable use of qrcodegen external library.]))
2254 AC_ARG_WITH(system-qrcodegen,
2255 AS_HELP_STRING([--with-system-qrcodegen],
2256 [Use libqrcodegen already on system.]),,
2257 [with_system_qrcodegen="$with_system_libs"])
2259 AC_ARG_WITH(system-box2d,
2260 AS_HELP_STRING([--with-system-box2d],
2261 [Use box2d already on system.]),,
2262 [with_system_box2d="$with_system_libs"])
2264 AC_ARG_WITH(system-mythes,
2265 AS_HELP_STRING([--with-system-mythes],
2266 [Use mythes already on system.]),,
2267 [with_system_mythes="$with_system_libs"])
2269 AC_ARG_WITH(system-altlinuxhyph,
2270 AS_HELP_STRING([--with-system-altlinuxhyph],
2271 [Use ALTLinuxhyph already on system.]),,
2272 [with_system_altlinuxhyph="$with_system_libs"])
2274 AC_ARG_WITH(system-lpsolve,
2275 AS_HELP_STRING([--with-system-lpsolve],
2276 [Use lpsolve already on system.]),,
2277 [with_system_lpsolve="$with_system_libs"])
2279 AC_ARG_WITH(system-coinmp,
2280 AS_HELP_STRING([--with-system-coinmp],
2281 [Use CoinMP already on system.]),,
2282 [with_system_coinmp="$with_system_libs"])
2284 AC_ARG_WITH(system-liblangtag,
2285 AS_HELP_STRING([--with-system-liblangtag],
2286 [Use liblangtag library already on system.]),,
2287 [with_system_liblangtag="$with_system_libs"])
2290 AS_HELP_STRING([--with-webdav],
2291 [Specify which library to use for webdav implementation.
2292 Possible values: "neon", "serf", "no". The default value is "neon".
2293 Example: --with-webdav="serf"]),
2294 WITH_WEBDAV=$withval,
2297 AC_ARG_WITH(linker-hash-style,
2298 AS_HELP_STRING([--with-linker-hash-style],
2299 [Use linker with --hash-style=<style> when linking shared objects.
2300 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2301 if supported on the build system, and "sysv" otherwise.]))
2303 AC_ARG_WITH(jdk-home,
2304 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2305 [If you have installed JDK 9 or later on your system please supply the
2306 path here. Note that this is not the location of the java command but the
2307 location of the entire distribution. In case of cross-compiling, this
2308 is the JDK of the host os. Use --with-build-platform-configure-options
2309 to point to a different build platform JDK.]),
2313 AS_HELP_STRING([--with-help],
2314 [Enable the build of help. There is a special parameter "common" that
2315 can be used to bundle only the common part, .e.g help-specific icons.
2316 This is useful when you build the helpcontent separately.])
2318 Usage: --with-help build the old local help
2319 --without-help no local help (default)
2320 --with-help=html build the new HTML local help
2321 --with-help=online build the new HTML online help
2325 AC_ARG_WITH(omindex,
2326 AS_HELP_STRING([--with-omindex],
2327 [Enable the support of xapian-omega index for online help.])
2329 Usage: --with-omindex=server prepare the pages for omindex
2330 but let xapian-omega be built in server.
2331 --with-omindex=noxap do not prepare online pages
2336 libo_FUZZ_ARG_WITH(java,
2337 AS_HELP_STRING([--with-java=<java command>],
2338 [Specify the name of the Java interpreter command. Typically "java"
2339 which is the default.
2341 To build without support for Java components, applets, accessibility
2342 or the XML filters written in Java, use --without-java or --with-java=no.]),
2343 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2344 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2347 AC_ARG_WITH(jvm-path,
2348 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2349 [Use a specific JVM search path at runtime.
2350 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2353 AC_ARG_WITH(ant-home,
2354 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2355 [If you have installed Apache Ant on your system, please supply the path here.
2356 Note that this is not the location of the Ant binary but the location
2357 of the entire distribution.]),
2360 AC_ARG_WITH(symbol-config,
2361 AS_HELP_STRING([--with-symbol-config],
2362 [Configuration for the crashreport symbol upload]),
2364 [with_symbol_config=no])
2366 AC_ARG_WITH(export-validation,
2367 AS_HELP_STRING([--without-export-validation],
2368 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2369 ,with_export_validation=auto)
2371 AC_ARG_WITH(bffvalidator,
2372 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2373 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2374 Requires installed Microsoft Office Binary File Format Validator.
2375 Note: export-validation (--with-export-validation) is required to be turned on.
2376 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2377 ,with_bffvalidator=no)
2379 libo_FUZZ_ARG_WITH(junit,
2380 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2381 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2382 --without-junit disables those tests. Not relevant in the --without-java case.]),
2385 AC_ARG_WITH(hamcrest,
2386 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2387 [Specifies the hamcrest jar file to use for JUnit-based tests.
2388 --without-junit disables those tests. Not relevant in the --without-java case.]),
2391 AC_ARG_WITH(perl-home,
2392 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2393 [If you have installed Perl 5 Distribution, on your system, please
2394 supply the path here. Note that this is not the location of the Perl
2395 binary but the location of the entire distribution.]),
2398 libo_FUZZ_ARG_WITH(doxygen,
2400 [--with-doxygen=<absolute path to doxygen executable>],
2401 [Specifies the doxygen executable to use when generating ODK C/C++
2402 documentation. --without-doxygen disables generation of ODK C/C++
2403 documentation. Not relevant in the --disable-odk case.]),
2406 AC_ARG_WITH(visual-studio,
2407 AS_HELP_STRING([--with-visual-studio=<2019>],
2408 [Specify which Visual Studio version to use in case several are
2409 installed. Currently only 2019 (default) is supported.]),
2412 AC_ARG_WITH(windows-sdk,
2413 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2414 [Specify which Windows SDK, or "Windows Kit", version to use
2415 in case the one that came with the selected Visual Studio
2416 is not what you want for some reason. Note that not all compiler/SDK
2417 combinations are supported. The intent is that this option should not
2422 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2423 [Use this option to build LibreOffice with additional UI language support.
2424 English (US) is always included by default.
2425 Separate multiple languages with space.
2426 For all languages, use --with-lang=ALL.]),
2429 AC_ARG_WITH(locales,
2430 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2431 [Use this option to limit the locale information built in.
2432 Separate multiple locales with space.
2433 Very experimental and might well break stuff.
2434 Just a desperate measure to shrink code and data size.
2435 By default all the locales available is included.
2436 This option is completely unrelated to --with-lang.])
2438 Affects also our character encoding conversion
2439 tables for encodings mainly targeted for a
2440 particular locale, like EUC-CN and EUC-TW for
2441 zh, ISO-2022-JP for ja.
2443 Affects also our add-on break iterator data for
2446 For the default, all locales, don't use this switch at all.
2447 Specifying just the language part of a locale means all matching
2448 locales will be included.
2452 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2453 libo_FUZZ_ARG_WITH(krb5,
2454 AS_HELP_STRING([--with-krb5],
2455 [Enable MIT Kerberos 5 support in modules that support it.
2456 By default automatically enabled on platforms
2457 where a good system Kerberos 5 is available.]),
2460 libo_FUZZ_ARG_WITH(gssapi,
2461 AS_HELP_STRING([--with-gssapi],
2462 [Enable GSSAPI support in modules that support it.
2463 By default automatically enabled on platforms
2464 where a good system GSSAPI is available.]),
2468 AS_HELP_STRING([--with-iwyu],
2469 [Use given IWYU binary path to check unneeded includes instead of building.
2470 Use only if you are hacking on it.]),
2473 libo_FUZZ_ARG_WITH(lxml,
2474 AS_HELP_STRING([--without-lxml],
2475 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2476 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2477 report widget classes and ids.]),
2480 libo_FUZZ_ARG_WITH(latest-c++,
2481 AS_HELP_STRING([--with-latest-c++],
2482 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2483 published standard.]),,
2484 [with_latest_c__=no])
2486 dnl ===================================================================
2488 dnl ===================================================================
2490 AC_ARG_WITH(branding,
2491 AS_HELP_STRING([--with-branding=/path/to/images],
2492 [Use given path to retrieve branding images set.])
2494 Search for intro.png about.svg and logo.svg.
2495 If any is missing, default ones will be used instead.
2497 Search also progress.conf for progress
2498 settings on intro screen :
2500 PROGRESSBARCOLOR="255,255,255" Set color of
2501 progress bar. Comma separated RGB decimal values.
2502 PROGRESSSIZE="407,6" Set size of progress bar.
2503 Comma separated decimal values (width, height).
2504 PROGRESSPOSITION="61,317" Set position of progress
2505 bar from left,top. Comma separated decimal values.
2506 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2507 bar frame. Comma separated RGB decimal values.
2508 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2509 bar text. Comma separated RGB decimal values.
2510 PROGRESSTEXTBASELINE="287" Set vertical position of
2511 progress bar text from top. Decimal value.
2513 Default values will be used if not found.
2518 AC_ARG_WITH(extra-buildid,
2519 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2520 [Show addition build identification in about dialog.]),
2525 AS_HELP_STRING([--with-vendor="John the Builder"],
2526 [Set vendor of the build.]),
2529 AC_ARG_WITH(android-package-name,
2530 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2531 [Set Android package name of the build.]),
2534 AC_ARG_WITH(compat-oowrappers,
2535 AS_HELP_STRING([--with-compat-oowrappers],
2536 [Install oo* wrappers in parallel with
2537 lo* ones to keep backward compatibility.
2538 Has effect only with make distro-pack-install]),
2541 AC_ARG_WITH(os-version,
2542 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2543 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2546 AC_ARG_WITH(idlc-cpp,
2547 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2548 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2551 AC_ARG_WITH(parallelism,
2552 AS_HELP_STRING([--with-parallelism],
2553 [Number of jobs to run simultaneously during build. Parallel builds can
2554 save a lot of time on multi-cpu machines. Defaults to the number of
2555 CPUs on the machine, unless you configure --enable-icecream - then to
2559 AC_ARG_WITH(all-tarballs,
2560 AS_HELP_STRING([--with-all-tarballs],
2561 [Download all external tarballs unconditionally]))
2563 AC_ARG_WITH(gdrive-client-id,
2564 AS_HELP_STRING([--with-gdrive-client-id],
2565 [Provides the client id of the application for OAuth2 authentication
2566 on Google Drive. If either this or --with-gdrive-client-secret is
2567 empty, the feature will be disabled]),
2570 AC_ARG_WITH(gdrive-client-secret,
2571 AS_HELP_STRING([--with-gdrive-client-secret],
2572 [Provides the client secret of the application for OAuth2
2573 authentication on Google Drive. If either this or
2574 --with-gdrive-client-id is empty, the feature will be disabled]),
2577 AC_ARG_WITH(alfresco-cloud-client-id,
2578 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2579 [Provides the client id of the application for OAuth2 authentication
2580 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2581 empty, the feature will be disabled]),
2584 AC_ARG_WITH(alfresco-cloud-client-secret,
2585 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2586 [Provides the client secret of the application for OAuth2
2587 authentication on Alfresco Cloud. If either this or
2588 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2591 AC_ARG_WITH(onedrive-client-id,
2592 AS_HELP_STRING([--with-onedrive-client-id],
2593 [Provides the client id of the application for OAuth2 authentication
2594 on OneDrive. If either this or --with-onedrive-client-secret is
2595 empty, the feature will be disabled]),
2598 AC_ARG_WITH(onedrive-client-secret,
2599 AS_HELP_STRING([--with-onedrive-client-secret],
2600 [Provides the client secret of the application for OAuth2
2601 authentication on OneDrive. If either this or
2602 --with-onedrive-client-id is empty, the feature will be disabled]),
2604 dnl ===================================================================
2605 dnl Do we want to use pre-build binary tarball for recompile
2606 dnl ===================================================================
2608 if test "$enable_library_bin_tar" = "yes" ; then
2609 USE_LIBRARY_BIN_TAR=TRUE
2611 USE_LIBRARY_BIN_TAR=
2613 AC_SUBST(USE_LIBRARY_BIN_TAR)
2615 dnl ===================================================================
2616 dnl Test whether build target is Release Build
2617 dnl ===================================================================
2618 AC_MSG_CHECKING([whether build target is Release Build])
2619 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2621 ENABLE_RELEASE_BUILD=
2622 GET_TASK_ALLOW_ENTITLEMENT='
2623 <!-- We want to be able to debug a hardened process when not building for release -->
2624 <key>com.apple.security.get-task-allow</key>
2627 AC_MSG_RESULT([yes])
2628 ENABLE_RELEASE_BUILD=TRUE
2629 GET_TASK_ALLOW_ENTITLEMENT=''
2631 AC_SUBST(ENABLE_RELEASE_BUILD)
2632 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2634 dnl ===================================================================
2635 dnl Test whether to sign Windows Build
2636 dnl ===================================================================
2637 AC_MSG_CHECKING([whether to sign windows build])
2638 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2639 AC_MSG_RESULT([yes])
2640 WINDOWS_BUILD_SIGNING="TRUE"
2643 WINDOWS_BUILD_SIGNING="FALSE"
2645 AC_SUBST(WINDOWS_BUILD_SIGNING)
2647 dnl ===================================================================
2648 dnl MacOSX build and runtime environment options
2649 dnl ===================================================================
2651 AC_ARG_WITH(macosx-sdk,
2652 AS_HELP_STRING([--with-macosx-sdk=<version>],
2653 [Prefer a specific SDK for building.])
2655 If the requested SDK is not available, a search for the oldest one will be done.
2656 With current Xcode versions, only the latest SDK is included, so this option is
2657 not terribly useful. It works fine to build with a new SDK and run the result
2660 e. g.: --with-macosx-sdk=10.10
2662 there are 3 options to control the MacOSX build:
2663 --with-macosx-sdk (referred as 'sdk' below)
2664 --with-macosx-version-min-required (referred as 'min' below)
2665 --with-macosx-version-max-allowed (referred as 'max' below)
2667 the connection between these value and the default they take is as follow:
2668 ( ? means not specified on the command line, s means the SDK version found,
2669 constraint: 8 <= x <= y <= z)
2671 ==========================================
2672 command line || config result
2673 ==========================================
2674 min | max | sdk || min | max | sdk |
2675 ? | ? | ? || 10.10 | 10.s | 10.s |
2676 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2677 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2678 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2679 10.x | ? | ? || 10.x | 10.s | 10.s |
2680 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2681 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2682 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2685 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2686 for a detailed technical explanation of these variables
2688 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2692 AC_ARG_WITH(macosx-version-min-required,
2693 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2694 [set the minimum OS version needed to run the built LibreOffice])
2696 e. g.: --with-macosx-version-min-required=10.10
2697 see --with-macosx-sdk for more info
2701 AC_ARG_WITH(macosx-version-max-allowed,
2702 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2703 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2705 e. g.: --with-macosx-version-max-allowed=10.10
2706 see --with-macosx-sdk for more info
2711 dnl ===================================================================
2712 dnl options for stuff used during cross-compilation build
2713 dnl Not quite superseded by --with-build-platform-configure-options.
2714 dnl TODO: check, if the "force" option is still needed anywhere.
2715 dnl ===================================================================
2717 AC_ARG_WITH(system-icu-for-build,
2718 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2719 [Use icu already on system for build tools (cross-compilation only).]))
2722 dnl ===================================================================
2723 dnl Check for incompatible options set by fuzzing, and reset those
2724 dnl automatically to working combinations
2725 dnl ===================================================================
2727 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2728 "$enable_dbus" != "$enable_avahi"; then
2729 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2730 enable_avahi=$enable_dbus
2735 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2736 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2740 add_lopath_before ()
2745 for dir in $LO_PATH ; do
2746 if test "$dir" != "$1" ; then
2747 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2750 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2753 dnl ===================================================================
2754 dnl check for required programs (grep, awk, sed, bash)
2755 dnl ===================================================================
2760 if test -n "$1"; then
2761 if test "$build_os" = "cygwin"; then
2762 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2764 new_path=`cygpath -sm "$formatted_path"`
2767 new_path=`cygpath -u "$formatted_path"`
2772 if test "$2" = "after"; then
2773 add_lopath_after "$new_path"
2775 add_lopath_before "$new_path"
2781 AC_PATH_PROG( AWK, $AWK)
2782 if test -z "$AWK"; then
2783 AC_MSG_ERROR([install awk to run this script])
2786 AC_PATH_PROG(BASH, bash)
2787 if test -z "$BASH"; then
2788 AC_MSG_ERROR([bash not found in \$PATH])
2792 AC_MSG_CHECKING([for GNU or BSD tar])
2793 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2794 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2795 if test $? -eq 0; then
2800 AC_MSG_RESULT($GNUTAR)
2801 if test -z "$GNUTAR"; then
2802 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2806 AC_MSG_CHECKING([for tar's option to strip components])
2807 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2808 if test $? -eq 0; then
2809 STRIP_COMPONENTS="--strip-components"
2811 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2812 if test $? -eq 0; then
2813 STRIP_COMPONENTS="--strip-path"
2815 STRIP_COMPONENTS="unsupported"
2818 AC_MSG_RESULT($STRIP_COMPONENTS)
2819 if test x$STRIP_COMPONENTS = xunsupported; then
2820 AC_MSG_ERROR([you need a tar that is able to strip components.])
2822 AC_SUBST(STRIP_COMPONENTS)
2824 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2825 dnl desktop OSes from "mobile" ones.
2827 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2828 dnl In other words, that when building for an OS that is not a
2829 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2831 dnl Note the direction of the implication; there is no assumption that
2832 dnl cross-compiling would imply a non-desktop OS.
2834 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2835 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2836 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2837 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2840 # Whether to build "avmedia" functionality or not.
2842 if test -z "$enable_avmedia"; then
2846 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2847 if test "$enable_avmedia" = yes; then
2848 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2850 USE_AVMEDIA_DUMMY='TRUE'
2852 AC_SUBST(USE_AVMEDIA_DUMMY)
2854 # Decide whether to build database connectivity stuff (including
2855 # Base) or not. We probably don't want to on non-desktop OSes.
2856 if test -z "$enable_database_connectivity"; then
2857 # --disable-database-connectivity is unfinished work in progress
2858 # and the iOS test app doesn't link if we actually try to use it.
2859 # if test $_os != iOS -a $_os != Android; then
2860 if test $_os != iOS; then
2861 enable_database_connectivity=yes
2865 if test "$enable_database_connectivity" = yes; then
2866 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2867 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2870 if test -z "$enable_extensions"; then
2871 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2872 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2873 enable_extensions=yes
2877 if test "$enable_extensions" = yes; then
2878 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2879 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2882 if test -z "$enable_scripting"; then
2883 # Disable scripting for iOS unless specifically overridden
2884 # with --enable-scripting.
2885 if test $_os != iOS; then
2886 enable_scripting=yes
2890 DISABLE_SCRIPTING=''
2891 if test "$enable_scripting" = yes; then
2892 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2893 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2895 DISABLE_SCRIPTING='TRUE'
2896 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2899 if test $_os = iOS -o $_os = Android; then
2900 # Disable dynamic_loading always for iOS and Android
2901 enable_dynamic_loading=no
2902 elif test -z "$enable_dynamic_loading"; then
2903 # Otherwise enable it unless specifically disabled
2904 enable_dynamic_loading=yes
2907 DISABLE_DYNLOADING=''
2908 if test "$enable_dynamic_loading" = yes; then
2909 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2911 DISABLE_DYNLOADING='TRUE'
2913 AC_SUBST(DISABLE_DYNLOADING)
2915 # remember SYSBASE value
2918 dnl ===================================================================
2919 dnl Sort out various gallery compilation options
2920 dnl ===================================================================
2921 AC_MSG_CHECKING([how to build and package galleries])
2922 if test -n "${with_galleries}"; then
2923 if test "$with_galleries" = "build"; then
2924 WITH_GALLERY_BUILD=TRUE
2925 AC_MSG_RESULT([build from source images internally])
2926 elif test "$with_galleries" = "no"; then
2928 AC_MSG_RESULT([disable non-internal gallery build])
2930 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2933 if test $_os != iOS -a $_os != Android; then
2934 WITH_GALLERY_BUILD=TRUE
2935 AC_MSG_RESULT([internal src images for desktop])
2938 AC_MSG_RESULT([disable src image build])
2941 AC_SUBST(WITH_GALLERY_BUILD)
2943 dnl ===================================================================
2944 dnl Checks if ccache is available
2945 dnl ===================================================================
2947 if test "$_os" = "WINNT"; then
2948 # on windows/VC build do not use ccache
2950 elif test "$enable_ccache" = "no"; then
2952 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2953 case "%$CC%$CXX%" in
2954 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2955 # assume that's good then
2956 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2957 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2958 CCACHE_DEPEND_MODE=1
2961 AC_PATH_PROG([CCACHE],[ccache],[not found])
2962 if test "$CCACHE" = "not found"; then
2965 CCACHE_DEPEND_MODE=1
2966 # Need to check for ccache version: otherwise prevents
2967 # caching of the results (like "-x objective-c++" for Mac)
2968 if test $_os = Darwin -o $_os = iOS; then
2969 # Check ccache version
2970 AC_MSG_CHECKING([whether version of ccache is suitable])
2971 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2972 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2973 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2974 AC_MSG_RESULT([yes, $CCACHE_VERSION])
2976 AC_MSG_RESULT([no, $CCACHE_VERSION])
2987 if test "$enable_ccache" = "nodepend"; then
2988 CCACHE_DEPEND_MODE=""
2990 AC_SUBST(CCACHE_DEPEND_MODE)
2992 if test "$CCACHE" != ""; then
2993 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2994 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2995 if test "$ccache_size" = ""; then
2996 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2997 if test "$ccache_size" = ""; then
3000 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3001 if test $ccache_size -lt 1024; then
3003 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3004 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3006 # warn that ccache may be too small for debug build
3007 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3008 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3011 if test $ccache_size -lt 5; then
3012 #warn that ccache may be too small for debug build
3013 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3014 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3019 dnl ===================================================================
3020 dnl Checks for C compiler,
3021 dnl The check for the C++ compiler is later on.
3022 dnl ===================================================================
3023 if test "$_os" != "WINNT"; then
3025 AC_MSG_CHECKING([gcc home])
3026 if test -z "$with_gcc_home"; then
3027 if test "$enable_icecream" = "yes"; then
3028 if test -d "/usr/lib/icecc/bin"; then
3029 GCC_HOME="/usr/lib/icecc/"
3030 elif test -d "/usr/libexec/icecc/bin"; then
3031 GCC_HOME="/usr/libexec/icecc/"
3032 elif test -d "/opt/icecream/bin"; then
3033 GCC_HOME="/opt/icecream/"
3035 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3039 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3040 GCC_HOME_SET="false"
3043 GCC_HOME="$with_gcc_home"
3045 AC_MSG_RESULT($GCC_HOME)
3048 if test "$GCC_HOME_SET" = "true"; then
3049 if test -z "$CC"; then
3050 CC="$GCC_HOME/bin/gcc"
3053 if test -z "$CXX"; then
3054 CXX="$GCC_HOME/bin/g++"
3060 COMPATH=`dirname "$CC"`
3061 if test "$COMPATH" = "."; then
3062 AC_PATH_PROGS(COMPATH, $CC)
3063 dnl double square bracket to get single because of M4 quote...
3064 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3066 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3068 dnl ===================================================================
3070 dnl ===================================================================
3071 AC_MSG_CHECKING([whether to build with Java support])
3072 if test "$with_java" != "no"; then
3073 if test "$DISABLE_SCRIPTING" = TRUE; then
3074 AC_MSG_RESULT([no, overridden by --disable-scripting])
3078 AC_MSG_RESULT([yes])
3080 AC_DEFINE(HAVE_FEATURE_JAVA)
3087 AC_SUBST(ENABLE_JAVA)
3089 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3091 dnl ENABLE_JAVA="" indicate no Java support at all
3093 dnl ===================================================================
3094 dnl Check macOS SDK and compiler
3095 dnl ===================================================================
3097 if test $_os = Darwin; then
3099 # If no --with-macosx-sdk option is given, look for one
3101 # The intent is that for "most" Mac-based developers, a suitable
3102 # SDK will be found automatically without any configure options.
3104 # For developers with a current Xcode, the lowest-numbered SDK
3105 # higher than or equal to the minimum required should be found.
3107 AC_MSG_CHECKING([what macOS SDK to use])
3108 for _macosx_sdk in ${with_macosx_sdk-11.1 11.0 10.15 10.14 10.13}; do
3109 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3110 if test -d "$MACOSX_SDK_PATH"; then
3111 with_macosx_sdk="${_macosx_sdk}"
3114 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3115 if test -d "$MACOSX_SDK_PATH"; then
3116 with_macosx_sdk="${_macosx_sdk}"
3121 if test ! -d "$MACOSX_SDK_PATH"; then
3122 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3125 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3127 case $with_macosx_sdk in
3129 MACOSX_SDK_VERSION=101300
3132 MACOSX_SDK_VERSION=101400
3135 MACOSX_SDK_VERSION=101500
3138 MACOSX_SDK_VERSION=110000
3141 MACOSX_SDK_VERSION=110100
3144 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.1])
3148 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3149 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3152 if test "$with_macosx_version_min_required" = "" ; then
3153 if test "$host_cpu" = x86_64; then
3154 with_macosx_version_min_required="10.10";
3156 with_macosx_version_min_required="11.0";
3160 if test "$with_macosx_version_max_allowed" = "" ; then
3161 with_macosx_version_max_allowed="$with_macosx_sdk"
3164 # export this so that "xcrun" invocations later return matching values
3165 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3166 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3167 export DEVELOPER_DIR
3168 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3169 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3171 AC_MSG_CHECKING([whether Xcode is new enough])
3172 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3173 my_xcode_ver2=${my_xcode_ver1#Xcode }
3174 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3175 if test "$my_xcode_ver3" -ge 1103; then
3176 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3178 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3181 case "$with_macosx_version_min_required" in
3183 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3186 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3189 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3192 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3195 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3198 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3201 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3204 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3207 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3210 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.1])
3214 LIBTOOL=/usr/bin/libtool
3215 INSTALL_NAME_TOOL=install_name_tool
3216 if test -z "$save_CC"; then
3217 stdlib=-stdlib=libc++
3219 AC_MSG_CHECKING([what C compiler to use])
3220 CC="`xcrun -find clang`"
3221 CC_BASE=`first_arg_basename "$CC"`
3222 if test "$host_cpu" = x86_64; then
3223 CC+=" -target x86_64-apple-macos"
3225 CC+=" -target arm64-apple-macos"
3227 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3228 AC_MSG_RESULT([$CC])
3230 AC_MSG_CHECKING([what C++ compiler to use])
3231 CXX="`xcrun -find clang++`"
3232 CXX_BASE=`first_arg_basename "$CXX"`
3233 if test "$host_cpu" = x86_64; then
3234 CXX+=" -target x86_64-apple-macos"
3236 CXX+=" -target arm64-apple-macos"
3238 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3239 AC_MSG_RESULT([$CXX])
3241 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3244 STRIP=`xcrun -find strip`
3245 LIBTOOL=`xcrun -find libtool`
3246 RANLIB=`xcrun -find ranlib`
3249 case "$with_macosx_version_max_allowed" in
3251 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3254 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3257 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3260 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3263 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3266 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3269 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3272 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3275 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.1])
3279 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3280 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3281 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 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3287 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3288 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3292 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3293 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3295 AC_MSG_CHECKING([whether to do code signing])
3297 if test "$enable_macosx_code_signing" = yes; then
3298 # By default use the first suitable certificate (?).
3300 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3301 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3302 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3303 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3304 # "Developer ID Application" one.
3306 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3307 if test -n "$identity"; then
3308 MACOSX_CODESIGNING_IDENTITY=$identity
3309 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3310 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3312 AC_MSG_ERROR([cannot determine identity to use])
3314 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3315 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3316 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3317 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3322 AC_MSG_CHECKING([whether to create a Mac App Store package])
3324 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3326 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3327 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3328 elif test "$enable_macosx_package_signing" = yes; then
3329 # By default use the first suitable certificate.
3330 # It should be a "3rd Party Mac Developer Installer" one
3332 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3333 if test -n "$identity"; then
3334 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3335 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3336 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3338 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3341 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3342 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3343 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3346 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3347 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3350 AC_MSG_CHECKING([whether to sandbox the application])
3352 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3353 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3354 elif test "$enable_macosx_sandbox" = yes; then
3355 ENABLE_MACOSX_SANDBOX=TRUE
3356 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3357 AC_MSG_RESULT([yes])
3362 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3363 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3364 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3366 AC_SUBST(MACOSX_SDK_PATH)
3367 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3368 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3369 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3370 AC_SUBST(INSTALL_NAME_TOOL)
3371 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3372 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3373 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3374 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3375 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3377 dnl ===================================================================
3378 dnl Check iOS SDK and compiler
3379 dnl ===================================================================
3381 if test $_os = iOS; then
3382 AC_MSG_CHECKING([what iOS SDK to use])
3383 current_sdk_ver=14.3
3384 older_sdk_vers="14.2 14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3385 if test "$enable_ios_simulator" = "yes"; then
3386 platform=iPhoneSimulator
3387 versionmin=-mios-simulator-version-min=12.2
3390 versionmin=-miphoneos-version-min=12.2
3392 xcode_developer=`xcode-select -print-path`
3394 for sdkver in $current_sdk_ver $older_sdk_vers; do
3395 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3402 if test -z "$sysroot"; then
3403 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3406 AC_MSG_RESULT($sysroot)
3408 stdlib="-stdlib=libc++"
3410 AC_MSG_CHECKING([what C compiler to use])
3411 CC="`xcrun -find clang`"
3412 CC_BASE=`first_arg_basename "$CC"`
3413 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3414 AC_MSG_RESULT([$CC])
3416 AC_MSG_CHECKING([what C++ compiler to use])
3417 CXX="`xcrun -find clang++`"
3418 CXX_BASE=`first_arg_basename "$CXX"`
3419 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3420 AC_MSG_RESULT([$CXX])
3422 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3425 STRIP=`xcrun -find strip`
3426 LIBTOOL=`xcrun -find libtool`
3427 RANLIB=`xcrun -find ranlib`
3430 AC_MSG_CHECKING([whether to treat the installation as read-only])
3432 if test $_os = Darwin; then
3433 enable_readonly_installset=yes
3434 elif test "$enable_extensions" != yes; then
3435 enable_readonly_installset=yes
3437 if test "$enable_readonly_installset" = yes; then
3438 AC_MSG_RESULT([yes])
3439 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3444 dnl ===================================================================
3445 dnl Structure of install set
3446 dnl ===================================================================
3448 if test $_os = Darwin; then
3449 LIBO_BIN_FOLDER=MacOS
3450 LIBO_ETC_FOLDER=Resources
3451 LIBO_LIBEXEC_FOLDER=MacOS
3452 LIBO_LIB_FOLDER=Frameworks
3453 LIBO_LIB_PYUNO_FOLDER=Resources
3454 LIBO_SHARE_FOLDER=Resources
3455 LIBO_SHARE_HELP_FOLDER=Resources/help
3456 LIBO_SHARE_JAVA_FOLDER=Resources/java
3457 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3458 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3459 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3460 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3461 LIBO_URE_BIN_FOLDER=MacOS
3462 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3463 LIBO_URE_LIB_FOLDER=Frameworks
3464 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3465 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3466 elif test $_os = WINNT; then
3467 LIBO_BIN_FOLDER=program
3468 LIBO_ETC_FOLDER=program
3469 LIBO_LIBEXEC_FOLDER=program
3470 LIBO_LIB_FOLDER=program
3471 LIBO_LIB_PYUNO_FOLDER=program
3472 LIBO_SHARE_FOLDER=share
3473 LIBO_SHARE_HELP_FOLDER=help
3474 LIBO_SHARE_JAVA_FOLDER=program/classes
3475 LIBO_SHARE_PRESETS_FOLDER=presets
3476 LIBO_SHARE_READMES_FOLDER=readmes
3477 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3478 LIBO_SHARE_SHELL_FOLDER=program/shell
3479 LIBO_URE_BIN_FOLDER=program
3480 LIBO_URE_ETC_FOLDER=program
3481 LIBO_URE_LIB_FOLDER=program
3482 LIBO_URE_MISC_FOLDER=program
3483 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3485 LIBO_BIN_FOLDER=program
3486 LIBO_ETC_FOLDER=program
3487 LIBO_LIBEXEC_FOLDER=program
3488 LIBO_LIB_FOLDER=program
3489 LIBO_LIB_PYUNO_FOLDER=program
3490 LIBO_SHARE_FOLDER=share
3491 LIBO_SHARE_HELP_FOLDER=help
3492 LIBO_SHARE_JAVA_FOLDER=program/classes
3493 LIBO_SHARE_PRESETS_FOLDER=presets
3494 LIBO_SHARE_READMES_FOLDER=readmes
3495 if test "$enable_fuzzers" != yes; then
3496 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3498 LIBO_SHARE_RESOURCE_FOLDER=resource
3500 LIBO_SHARE_SHELL_FOLDER=program/shell
3501 LIBO_URE_BIN_FOLDER=program
3502 LIBO_URE_ETC_FOLDER=program
3503 LIBO_URE_LIB_FOLDER=program
3504 LIBO_URE_MISC_FOLDER=program
3505 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3507 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3508 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3509 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3510 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3511 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3521 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3522 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3524 # Not all of them needed in config_host.mk, add more if need arises
3525 AC_SUBST(LIBO_BIN_FOLDER)
3526 AC_SUBST(LIBO_ETC_FOLDER)
3527 AC_SUBST(LIBO_LIB_FOLDER)
3528 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3529 AC_SUBST(LIBO_SHARE_FOLDER)
3530 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3531 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3532 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3533 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3534 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3535 AC_SUBST(LIBO_URE_BIN_FOLDER)
3536 AC_SUBST(LIBO_URE_ETC_FOLDER)
3537 AC_SUBST(LIBO_URE_LIB_FOLDER)
3538 AC_SUBST(LIBO_URE_MISC_FOLDER)
3539 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3541 dnl ===================================================================
3542 dnl Windows specific tests and stuff
3543 dnl ===================================================================
3547 # Return value: $regvalue
3550 if test "$build_os" = "wsl"; then
3551 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3555 local _regentry="/proc/registry${1}/${2}"
3556 if test -f "$_regentry"; then
3557 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3558 # Registry keys read via /proc/registry* are always \0 terminated!
3559 local _regvalue=$(tr -d '\0' < "$_regentry")
3560 if test $? -eq 0; then
3566 # Get a value from the 32-bit side of the Registry
3569 reg_get_value "32" "$1"
3572 # Get a value from the 64-bit side of the Registry
3575 reg_get_value "64" "$1"
3584 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3593 PLATFORMID=windows_x86_64
3595 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3597 WIN_MULTI_ARCH="x86"
3603 PLATFORMID=windows_x86
3606 WIN_OTHER_ARCH="x64"
3611 PLATFORMID=windows_arm64
3613 SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3614 WIN_HOST_ARCH="arm64"
3619 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3623 case "$build_cpu" in
3624 x86_64) WIN_BUILD_ARCH="x64" ;;
3625 i*86) WIN_BUILD_ARCH="x86" ;;
3626 aarch64) WIN_BUILD_ARCH="arm64" ;;
3628 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3632 SCPDEFS="$SCPDEFS -D_MSC_VER"
3636 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3637 # other-arch won't, but wouldn't break the build (x64 on x86).
3638 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3639 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3643 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3644 # To allow building Windows multi-arch releases without cross-tooling
3645 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3646 cross_compiling="yes"
3649 if test "$cross_compiling" = "yes"; then
3650 export CROSS_COMPILING=TRUE
3653 BUILD_TYPE="$BUILD_TYPE NATIVE"
3655 AC_SUBST(CROSS_COMPILING)
3657 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3658 # NOTE: must _not_ be used for bundled external libraries!
3660 if test "$GCC" = "yes"; then
3661 AC_MSG_CHECKING( for -isystem )
3663 CFLAGS="$CFLAGS -Werror"
3664 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3666 if test -n "$ISYSTEM"; then
3672 if test -z "$ISYSTEM"; then
3673 # fall back to using -I
3678 dnl ===================================================================
3679 dnl Check which Visual Studio compiler is used
3680 dnl ===================================================================
3682 map_vs_year_to_version()
3684 # Return value: $vsversion
3692 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3696 vs_versions_to_check()
3698 # Args: $1 (optional) : versions to check, in the order of preference
3699 # Return value: $vsversions
3703 if test -n "$1"; then
3704 map_vs_year_to_version "$1"
3705 vsversions=$vsversion
3707 # We accept only 2019
3712 win_get_env_from_vsvars32bat()
3714 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3715 # Also seems to be located in another directory under the same name: vsvars32.bat
3716 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3717 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3718 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3719 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3721 if test "$build_os" = "wsl"; then
3722 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3724 chmod +x $WRAPPERBATCHFILEPATH
3725 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3727 rm -f $WRAPPERBATCHFILEPATH
3728 printf '%s' "$result"
3733 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3734 if test -n "$regvalue"; then
3735 PathFormat "$regvalue"
3736 UCRTSDKDIR=$formatted_path_unix
3737 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3738 UCRTVERSION=$regvalue
3740 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3744 if test -z "$UCRTSDKDIR"; then
3745 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3746 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3747 if test -f "$ide_env_file"; then
3748 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3749 UCRTSDKDIR=$formatted_path
3750 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3751 dnl Hack needed at least by tml:
3752 if test "$UCRTVERSION" = 10.0.15063.0 \
3753 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3754 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3756 UCRTVERSION=10.0.14393.0
3759 AC_MSG_ERROR([No UCRT found])
3766 # Find Visual C++ 2019
3767 # Args: $1 (optional) : The VS version year
3768 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3770 unset vctest vcnum vcnumwithdot vcbuildnumber
3772 vs_versions_to_check "$1"
3773 if test "$build_os" = wsl; then
3774 vswhere="$PROGRAMFILESX86"
3776 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3778 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3779 PathFormat "$vswhere"
3780 vswhere=$formatted_path_unix
3781 for ver in $vsversions; do
3782 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3783 # Fall back to all MS products (this includes VC++ Build Tools)
3784 if ! test -n "$vswhereoutput"; then
3785 AC_MSG_CHECKING([VC++ Build Tools and similar])
3786 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3788 if test -n "$vswhereoutput"; then
3789 PathFormat "$vswhereoutput"
3790 vctest=$formatted_path_unix
3795 if test -n "$vctest"; then
3796 vcnumwithdot="$ver.0"
3797 case "$vcnumwithdot" in
3803 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3810 AC_MSG_CHECKING([$1 compiler])
3812 CL_EXE_PATH="$2/cl.exe"
3814 if test ! -f "$CL_EXE_PATH"; then
3815 if test "$1" = "multi-arch"; then
3816 AC_MSG_WARN([no compiler (cl.exe) in $2])
3819 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3823 dnl ===========================================================
3824 dnl Check for the corresponding mspdb*.dll
3825 dnl ===========================================================
3827 # MSVC 15.0 has libraries from 14.0?
3830 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3831 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3834 # The compiles has to find its shared libraries
3836 TEMP_PATH=`cygpath -d "$2"`
3837 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3839 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3840 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3845 AC_MSG_RESULT([$CL_EXE_PATH])
3851 if test "$_os" = "WINNT"; then
3852 AC_MSG_CHECKING([Visual C++])
3853 find_msvc "$with_visual_studio"
3854 if test -z "$vctest"; then
3855 if test -n "$with_visual_studio"; then
3856 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3858 AC_MSG_ERROR([no Visual Studio 2019 installation found])
3863 VC_PRODUCT_DIR="$vctest/VC"
3864 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3866 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3867 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3868 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3869 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3870 if test $? -ne 0; then
3876 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3877 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3878 test_cl_exe "build" "$MSVC_BUILD_PATH"
3881 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3882 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3883 test_cl_exe "host" "$MSVC_HOST_PATH"
3885 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3888 AC_MSG_CHECKING([for short pathname of VC product directory])
3889 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3890 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3895 AC_MSG_CHECKING([for UCRT location])
3897 # find_ucrt errors out if it doesn't find it
3898 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3899 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3900 ucrtincpath_formatted=$formatted_path
3901 # SOLARINC is used for external modules and must be set too.
3902 # And no, it's not sufficient to set SOLARINC only, as configure
3903 # itself doesn't honour it.
3904 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3905 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3906 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3907 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3909 AC_SUBST(UCRTSDKDIR)
3910 AC_SUBST(UCRTVERSION)
3912 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3913 # Find the proper version of MSBuild.exe to use based on the VS version
3914 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3915 if test -n "$regvalue" ; then
3916 AC_MSG_RESULT([found: $regvalue])
3917 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3919 if test "$vcnumwithdot" = "16.0"; then
3920 if test "$WIN_BUILD_ARCH" != "x64"; then
3921 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3923 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3926 if test "$WIN_BUILD_ARCH" != "x64"; then
3927 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3929 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3932 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3933 AC_MSG_RESULT([$regvalue])
3936 # Find the version of devenv.exe
3937 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3938 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3939 DEVENV_unix=$(cygpath -u "$DEVENV")
3940 if test ! -e "$DEVENV_unix"; then
3941 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3944 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3945 dnl needed when building CLR code:
3946 if test -z "$MSVC_CXX"; then
3947 # This gives us a posix path with 8.3 filename restrictions
3948 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3951 if test -z "$CC"; then
3953 CC_BASE=`first_arg_basename "$CC"`
3955 if test -z "$CXX"; then
3957 CXX_BASE=`first_arg_basename "$CXX"`
3960 if test -n "$CC"; then
3961 # Remove /cl.exe from CC case insensitive
3962 AC_MSG_NOTICE([found Visual C++ $vcyear])
3964 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3965 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3967 PathFormat "$COMPATH"
3968 COMPATH=`win_short_path_for_make "$formatted_path"`
3972 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
3973 # are always "better", we list them in reverse chronological order.
3977 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3981 # The expectation is that --with-windows-sdk should not need to be used
3982 if test -n "$with_windows_sdk"; then
3983 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3984 *" "$with_windows_sdk" "*)
3985 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3988 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3993 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3998 AC_MSG_ERROR([Visual C++ not found after all, huh])
4001 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4002 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4003 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4004 // between Visual Studio versions and _MSC_VER:
4008 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4010 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4011 # version of the Explorer extension (and maybe other small
4012 # bits, too) needed when installing a 32-bit LibreOffice on a
4013 # 64-bit OS. The 64-bit Explorer extension is a feature that
4014 # has been present since long in OOo. Don't confuse it with
4015 # building LibreOffice itself as 64-bit code.
4020 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4021 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4022 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4023 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4026 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4027 AC_MSG_RESULT([found])
4029 AC_MSG_RESULT([not found])
4030 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4032 elif test "$WIN_HOST_ARCH" = "x64"; then
4037 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4038 AC_SUBST(CXX_X64_BINARY)
4040 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4041 # needed to support TWAIN scan on both 32- and 64-bit systems
4043 case "$WIN_HOST_ARCH" in
4045 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4046 if test -n "$CXX_X86_BINARY"; then
4048 AC_MSG_RESULT([preset])
4049 elif test -n "$WIN_MULTI_ARCH"; then
4051 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4052 CXX_X86_BINARY+=" /arch:SSE"
4053 AC_MSG_RESULT([found])
4055 AC_MSG_RESULT([not found])
4056 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4061 CXX_X86_BINARY=$MSVC_CXX
4065 AC_SUBST(CXX_X86_BINARY)
4072 AC_MSG_CHECKING([whether the compiler is actually Clang])
4073 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4079 [AC_MSG_RESULT([yes])
4081 [AC_MSG_RESULT([no])])
4082 AC_SUBST(COM_IS_CLANG)
4086 if test "$COM_IS_CLANG" = TRUE; then
4087 AC_MSG_CHECKING([whether Clang is new enough])
4088 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4089 #if !defined __apple_build_version__
4093 [my_apple_clang=yes],[my_apple_clang=])
4094 if test "$my_apple_clang" = yes; then
4095 AC_MSG_RESULT([assumed yes (Apple Clang)])
4097 if test "$_os" = WINNT; then
4098 dnl In which case, assume clang-cl:
4100 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4108 CC_PLAIN="$CC_PLAIN $i"
4115 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4116 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4117 CLANGVER=`echo $clang_version \
4118 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4119 if test "$CLANGVER" -ge 50002; then
4120 AC_MSG_RESULT([yes ($clang_version)])
4122 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4124 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4125 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4129 SHOWINCLUDES_PREFIX=
4130 if test "$_os" = WINNT; then
4131 dnl We need to guess the prefix of the -showIncludes output, it can be
4133 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4134 echo "#include <stdlib.h>" > conftest.c
4135 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4136 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4137 rm -f conftest.c conftest.obj
4138 if test -z "$SHOWINCLUDES_PREFIX"; then
4139 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4141 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4144 AC_SUBST(SHOWINCLUDES_PREFIX)
4147 # prefix C with ccache if needed
4149 if test "$CCACHE" != ""; then
4150 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4154 CFLAGS="$CFLAGS --ccache-skip -O2"
4155 dnl an empty program will do, we're checking the compiler flags
4156 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4157 [use_ccache=yes], [use_ccache=no])
4159 if test $use_ccache = yes; then
4160 AC_MSG_RESULT([yes])
4163 CC_BASE="ccache $CC_BASE"
4169 # ===================================================================
4170 # check various GCC options that Clang does not support now but maybe
4171 # will somewhen in the future, check them even for GCC, so that the
4173 # ===================================================================
4176 if test "$GCC" = "yes"; then
4177 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4179 CFLAGS="$CFLAGS -Werror -ggdb2"
4180 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4182 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4183 AC_MSG_RESULT([yes])
4188 if test "$host_cpu" = "m68k"; then
4189 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4191 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4192 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4194 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4195 AC_MSG_RESULT([yes])
4201 AC_SUBST(HAVE_GCC_GGDB2)
4203 dnl ===================================================================
4204 dnl Test the gcc version
4205 dnl ===================================================================
4206 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4207 AC_MSG_CHECKING([the GCC version])
4208 _gcc_version=`$CC -dumpversion`
4209 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4210 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4211 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4213 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4215 if test "$gcc_full_version" -lt 70000; then
4216 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4219 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4220 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4221 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4222 # (which reports itself as GCC 4.2.1).
4225 AC_SUBST(GCC_VERSION)
4227 dnl Set the ENABLE_DBGUTIL variable
4228 dnl ===================================================================
4229 AC_MSG_CHECKING([whether to build with additional debug utilities])
4230 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4231 ENABLE_DBGUTIL="TRUE"
4232 # this is an extra var so it can have different default on different MSVC
4233 # versions (in case there are version specific problems with it)
4234 MSVC_USE_DEBUG_RUNTIME="TRUE"
4236 AC_MSG_RESULT([yes])
4237 # cppunit and graphite expose STL in public headers
4238 if test "$with_system_cppunit" = "yes"; then
4239 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4241 with_system_cppunit=no
4243 if test "$with_system_graphite" = "yes"; then
4244 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4246 with_system_graphite=no
4248 if test "$with_system_orcus" = "yes"; then
4249 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4251 with_system_orcus=no
4253 if test "$with_system_libcmis" = "yes"; then
4254 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4256 with_system_libcmis=no
4258 if test "$with_system_hunspell" = "yes"; then
4259 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4261 with_system_hunspell=no
4263 if test "$with_system_gpgmepp" = "yes"; then
4264 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4266 with_system_gpgmepp=no
4268 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4269 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4270 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4271 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4272 # of those two is using the system variant:
4273 if test "$with_system_libnumbertext" = "yes"; then
4274 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4276 with_system_libnumbertext=no
4278 if test "$with_system_libwps" = "yes"; then
4279 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4281 with_system_libwps=no
4285 MSVC_USE_DEBUG_RUNTIME=""
4288 AC_SUBST(ENABLE_DBGUTIL)
4289 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4291 dnl Set the ENABLE_DEBUG variable.
4292 dnl ===================================================================
4293 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4294 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4296 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4297 if test -z "$libo_fuzzed_enable_debug"; then
4298 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4300 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4305 AC_MSG_CHECKING([whether to do a debug build])
4306 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4308 if test -n "$ENABLE_DBGUTIL" ; then
4309 AC_MSG_RESULT([yes (dbgutil)])
4311 AC_MSG_RESULT([yes])
4317 AC_SUBST(ENABLE_DEBUG)
4319 dnl ===================================================================
4320 dnl Select the linker to use (gold/lld/ld.bfd).
4321 dnl This is done only after compiler checks (need to know if Clang is
4322 dnl used, for different defaults) and after checking if a debug build
4323 dnl is wanted (non-debug builds get the default linker if not explicitly
4324 dnl specified otherwise).
4325 dnl All checks for linker features/options should come after this.
4326 dnl ===================================================================
4329 use_ld=-fuse-ld=${1%%:*}
4331 if test "$use_ld_path" != "$1"; then
4332 use_ld="$use_ld --ld-path=$use_ld_path"
4334 use_ld_fail_if_error=$2
4336 AC_MSG_CHECKING([for $use_ld linker support])
4337 use_ld_ldflags_save="$LDFLAGS"
4338 LDFLAGS="$LDFLAGS $use_ld"
4339 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4342 printf ("hello world\n");
4343 ])], USE_LD=$use_ld, [])
4344 if test -n "$USE_LD"; then
4345 AC_MSG_RESULT( yes )
4348 if test -n "$use_ld_fail_if_error"; then
4354 if test -n "$use_ld_ok"; then
4355 dnl keep the value of LDFLAGS
4358 LDFLAGS="$use_ld_ldflags_save"
4362 if test "$enable_ld" != "no"; then
4363 if test "$GCC" = "yes"; then
4364 if test -n "$enable_ld"; then
4365 check_use_ld "$enable_ld" fail_if_error
4366 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4367 dnl non-debug builds default to the default linker
4369 elif test -n "$COM_IS_CLANG"; then
4371 if test $? -ne 0; then
4375 # For gcc first try gold, new versions also support lld.
4377 if test $? -ne 0; then
4381 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4383 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4384 if test -z "$ld_used"; then
4387 AC_MSG_CHECKING([for linker that is used])
4388 AC_MSG_RESULT([$ld_used])
4389 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4390 if echo "$ld_used" | grep -q "^GNU ld"; then
4391 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4392 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4396 if test "$enable_ld" = "yes"; then
4397 AC_MSG_ERROR([--enable-ld not supported])
4403 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4404 if test "$GCC" = "yes"; then
4405 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4406 bsymbolic_functions_ldflags_save=$LDFLAGS
4407 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4408 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4411 printf ("hello world\n");
4412 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4413 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4414 AC_MSG_RESULT( found )
4416 AC_MSG_RESULT( not found )
4418 LDFLAGS=$bsymbolic_functions_ldflags_save
4420 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4423 if test "$GCC" = "yes"; then
4424 for flag in "--gc-sections" "-dead_strip"; do
4425 AC_MSG_CHECKING([for $flag linker support])
4426 ldflags_save=$LDFLAGS
4427 LDFLAGS="$LDFLAGS -Wl,$flag"
4428 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4431 printf ("hello world\n");
4433 LD_GC_SECTIONS="-Wl,$flag"
4434 AC_MSG_RESULT( found )
4436 AC_MSG_RESULT( not found )
4438 LDFLAGS=$ldflags_save
4439 if test -n "$LD_GC_SECTIONS"; then
4444 AC_SUBST(LD_GC_SECTIONS)
4447 if test "$enable_split_debug" != no; then
4448 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4449 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4450 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4452 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4453 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4455 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4456 AC_MSG_RESULT([yes])
4458 if test "$enable_split_debug" = yes; then
4465 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4466 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4467 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4470 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4472 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4473 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4475 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4476 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4478 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4479 AC_MSG_RESULT([yes])
4483 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4486 if test "$enable_gdb_index" != "no"; then
4487 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4488 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4489 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4491 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4493 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4494 if test "$have_ggnu_pubnames" != "TRUE"; then
4495 if test "$enable_gdb_index" = "yes"; then
4496 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4501 AC_MSG_RESULT( yes )
4502 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4503 ldflags_save=$LDFLAGS
4504 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4505 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4508 printf ("hello world\n");
4509 ])], ENABLE_GDB_INDEX=TRUE, [])
4510 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4511 AC_MSG_RESULT( yes )
4513 if test "$enable_gdb_index" = "yes"; then
4519 LDFLAGS=$ldflags_save
4523 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4524 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4525 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4528 AC_SUBST(ENABLE_GDB_INDEX)
4530 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4533 if test "$enable_sal_log" = yes; then
4536 AC_SUBST(ENABLE_SAL_LOG)
4538 dnl Check for enable symbols option
4539 dnl ===================================================================
4540 AC_MSG_CHECKING([whether to generate debug information])
4541 if test -z "$enable_symbols"; then
4542 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4548 if test "$enable_symbols" = yes; then
4549 ENABLE_SYMBOLS_FOR=all
4550 AC_MSG_RESULT([yes])
4551 elif test "$enable_symbols" = no; then
4555 # Selective debuginfo.
4556 ENABLE_SYMBOLS_FOR="$enable_symbols"
4557 AC_MSG_RESULT([for "$enable_symbols"])
4559 AC_SUBST(ENABLE_SYMBOLS_FOR)
4561 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4562 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4563 AC_MSG_CHECKING([whether enough memory is available for linking])
4564 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4565 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4566 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4567 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4569 AC_MSG_RESULT([yes])
4574 ENABLE_OPTIMIZED_DEBUG=
4575 AC_MSG_CHECKING([whether to compile with optimization flags])
4576 if test -z "$enable_optimized"; then
4577 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4580 enable_optimized=yes
4583 if test "$enable_optimized" = yes; then
4584 ENABLE_OPTIMIZED=TRUE
4585 AC_MSG_RESULT([yes])
4586 elif test "$enable_optimized" = debug; then
4587 ENABLE_OPTIMIZED_DEBUG=TRUE
4588 AC_MSG_RESULT([yes (debug)])
4590 if test "$GCC" = "yes"; then
4591 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4593 CFLAGS="$CFLAGS -Werror -Og"
4594 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4596 if test "$HAVE_GCC_OG" = "TRUE"; then
4597 AC_MSG_RESULT([yes])
4602 if test -z "$HAVE_GCC_OG"; then
4603 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4608 AC_SUBST(ENABLE_OPTIMIZED)
4609 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4612 # determine CPUNAME, OS, ...
4613 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4624 PLATFORMID=aix_powerpc
4641 if test "$enable_ios_simulator" = "yes"; then
4646 PLATFORMID=macosx_arm64
4650 if test "$enable_ios_simulator" = "yes"; then
4655 PLATFORMID=macosx_x86_64
4658 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4672 if test "$enable_ios_simulator" = "yes"; then
4673 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4677 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4682 PLATFORMID=ios_arm64
4696 PLATFORMID=dragonfly_x86
4701 PLATFORMID=dragonfly_x86_64
4704 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4719 PLATFORMID=freebsd_aarch64
4725 PLATFORMID=freebsd_x86
4730 PLATFORMID=freebsd_x86_64
4735 PLATFORMID=freebsd_powerpc64
4740 PLATFORMID=freebsd_powerpc
4743 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4760 PLATFORMID=haiku_x86
4765 PLATFORMID=haiku_x86_64
4768 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4785 PLATFORMID=kfreebsd_x86
4790 PLATFORMID=kfreebsd_x86_64
4793 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4809 PLATFORMID=linux_aarch64
4815 PLATFORMID=linux_alpha
4821 PLATFORMID=linux_arm_eabi
4825 PLATFORMID=linux_arm_oabi
4833 PLATFORMID=linux_hppa
4838 PLATFORMID=linux_x86
4843 PLATFORMID=linux_ia64
4849 PLATFORMID=linux_mips_eb
4854 EPM_FLAGS="-a mips64"
4855 PLATFORMID=linux_mips64_eb
4860 EPM_FLAGS="-a mips64el"
4861 PLATFORMID=linux_mips64_el
4866 EPM_FLAGS="-a mipsel"
4867 PLATFORMID=linux_mips_el
4872 PLATFORMID=linux_m68k
4877 PLATFORMID=linux_powerpc
4882 PLATFORMID=linux_powerpc64
4886 RTL_ARCH=PowerPC_64_LE
4887 PLATFORMID=linux_powerpc64_le
4892 PLATFORMID=linux_sparc
4897 PLATFORMID=linux_sparc64
4902 PLATFORMID=linux_s390
4907 PLATFORMID=linux_s390x
4912 PLATFORMID=linux_x86_64
4915 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4932 PLATFORMID=android_arm_eabi
4937 PLATFORMID=android_aarch64
4942 PLATFORMID=android_x86
4947 PLATFORMID=android_x86_64
4950 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4966 PLATFORMID=netbsd_x86
4971 PLATFORMID=netbsd_powerpc
4976 PLATFORMID=netbsd_sparc
4981 PLATFORMID=netbsd_x86_64
4984 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5000 PLATFORMID=openbsd_x86
5005 PLATFORMID=openbsd_x86_64
5008 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5011 SOLARINC="$SOLARINC -I/usr/local/include"
5025 PLATFORMID=solaris_x86
5030 PLATFORMID=solaris_sparc
5035 PLATFORMID=solaris_sparc64
5038 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5041 SOLARINC="$SOLARINC -I/usr/local/include"
5045 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5049 if test "$with_x" = "no"; then
5050 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5054 if test "$enable_gui" = "no"; then
5055 if test "$USING_X11" != TRUE; then
5056 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5060 AC_DEFINE(HAVE_FEATURE_UI,0)
5063 AC_SUBST(DISABLE_GUI)
5065 WORKDIR="${BUILDDIR}/workdir"
5066 INSTDIR="${BUILDDIR}/instdir"
5067 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5068 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5069 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5077 AC_SUBST([INSTROOT])
5078 AC_SUBST([INSTROOTBASE])
5082 AC_SUBST(PLATFORMID)
5083 AC_SUBST(WINDOWS_X64)
5084 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5086 dnl ===================================================================
5087 dnl Test which package format to use
5088 dnl ===================================================================
5089 AC_MSG_CHECKING([which package format to use])
5090 if test -n "$with_package_format" -a "$with_package_format" != no; then
5091 for i in $with_package_format; do
5093 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5096 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5097 aix - AIX software distribution
5098 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5099 deb - Debian software distribution
5100 pkg - Solaris software distribution
5101 rpm - RedHat software distribution
5103 LibreOffice additionally supports:
5104 archive - .tar.gz or .zip
5106 installed - installation tree
5112 # fakeroot is needed to ensure correct file ownerships/permissions
5113 # inside deb packages and tar archives created on Linux and Solaris.
5114 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5115 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5116 if test "$FAKEROOT" = "no"; then
5118 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5121 PKGFORMAT="$with_package_format"
5122 AC_MSG_RESULT([$PKGFORMAT])
5125 AC_MSG_RESULT([none])
5129 dnl ===================================================================
5130 dnl Set up a different compiler to produce tools to run on the build
5131 dnl machine when doing cross-compilation
5132 dnl ===================================================================
5134 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5135 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5136 if test "$cross_compiling" = "yes"; then
5137 AC_MSG_CHECKING([for BUILD platform configuration])
5139 rm -rf CONF-FOR-BUILD config_build.mk
5140 mkdir CONF-FOR-BUILD
5141 # Here must be listed all files needed when running the configure script. In particular, also
5142 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5143 # keep them in the same order as there.
5144 (cd $SRC_ROOT && tar cf - \
5146 bin/get_config_variables \
5147 solenv/bin/getcompver.awk \
5148 solenv/inc/langlist.mk \
5151 config_host_lang.mk.in \
5153 bin/bffvalidator.sh.in \
5154 bin/odfvalidator.sh.in \
5155 bin/officeotron.sh.in \
5156 hardened_runtime.xcent.in \
5157 instsetoo_native/util/openoffice.lst.in \
5159 sysui/desktop/macosx/Info.plist.in \
5160 .vscode/vs-code-template.code-workspace.in \
5162 | (cd CONF-FOR-BUILD && tar xf -)
5163 cp configure CONF-FOR-BUILD
5164 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5166 unset COM USING_X11 OS CPUNAME
5167 unset CC CXX SYSBASE CFLAGS
5168 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5169 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5170 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5171 if test -n "$CC_FOR_BUILD"; then
5172 export CC="$CC_FOR_BUILD"
5173 CC_BASE=`first_arg_basename "$CC"`
5175 if test -n "$CXX_FOR_BUILD"; then
5176 export CXX="$CXX_FOR_BUILD"
5177 CXX_BASE=`first_arg_basename "$CXX"`
5179 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5183 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5184 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5185 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5186 if test -n "$ENABLE_JAVA"; then
5188 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5190 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5191 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5194 if test -z "$with_jdk_home"; then
5195 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.])
5200 sub_conf_opts="$sub_conf_opts --without-java"
5202 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5203 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5204 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5206 # Don't bother having configure look for stuff not needed for the build platform anyway
5208 --build="$build_alias" \
5210 --disable-firebird-sdbc \
5212 --disable-gstreamer-1-0 \
5214 --disable-mariadb-sdbc \
5215 --disable-online-update \
5217 --disable-pdfimport \
5218 --disable-postgresql-sdbc \
5220 --enable-icecream="$enable_icecream" \
5223 --with-parallelism="$with_parallelism" \
5224 --with-theme="$with_theme" \
5225 --with-tls=openssl \
5228 2>&1 | sed -e 's/^/ /'
5229 test -f ./config_host.mk 2>/dev/null || exit
5231 # filter permitted build targets
5232 PERMITTED_BUILD_TARGETS="
5261 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5262 # newlined lists, to use grep as a filter
5263 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5264 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5265 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5266 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5268 cp config_host.mk ../config_build.mk
5269 cp config_host_lang.mk ../config_build_lang.mk
5270 mv config.log ../config.Build.log
5271 mkdir -p ../config_build
5272 mv config_host/*.h ../config_build
5274 # all these will get a _FOR_BUILD postfix
5275 DIRECT_FOR_BUILD_SETTINGS="
5285 LIBO_URE_MISC_FOLDER
5291 # these overwrite host config with build config
5292 OVERWRITING_SETTINGS="
5297 JAVA_CLASSPATH_NOT_SET
5305 # these need some special handling
5306 EXTRA_HANDLED_SETTINGS="
5313 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5317 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5318 echo "$line" >>build-config
5320 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5322 VV=`eval "echo $VV"`
5323 if test -n "$VV"; then
5324 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5325 echo "$line" >>build-config
5329 for V in $OVERWRITING_SETTINGS; do
5331 VV=`eval "echo $VV"`
5332 if test -n "$VV"; then
5333 line=${V}='${'${V}:-$VV'}'
5334 echo "$line" >>build-config
5338 for V in INSTDIR INSTROOT WORKDIR; do
5340 VV=`eval "echo $VV"`
5341 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5342 if test -n "$VV"; then
5343 line="${V}_FOR_BUILD='$VV'"
5344 echo "$line" >>build-config
5349 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5350 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])
5351 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5352 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5354 eval `cat CONF-FOR-BUILD/build-config`
5356 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5358 rm -rf CONF-FOR-BUILD
5362 CXX_FOR_BUILD="$CXX"
5363 INSTDIR_FOR_BUILD="$INSTDIR"
5364 INSTROOT_FOR_BUILD="$INSTROOT"
5365 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5366 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5367 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5368 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5369 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5370 WORKDIR_FOR_BUILD="$WORKDIR"
5372 AC_SUBST(OS_FOR_BUILD)
5373 AC_SUBST(INSTDIR_FOR_BUILD)
5374 AC_SUBST(INSTROOT_FOR_BUILD)
5375 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5376 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5377 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5378 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5379 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5380 AC_SUBST(WORKDIR_FOR_BUILD)
5381 AC_SUBST(CC_FOR_BUILD)
5382 AC_SUBST(CXX_FOR_BUILD)
5384 dnl ===================================================================
5385 dnl Check for syslog header
5386 dnl ===================================================================
5387 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5389 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5390 dnl ===================================================================
5391 AC_MSG_CHECKING([whether to turn warnings to errors])
5392 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5393 ENABLE_WERROR="TRUE"
5394 PYTHONWARNINGS="error"
5395 AC_MSG_RESULT([yes])
5397 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5398 ENABLE_WERROR="TRUE"
5399 PYTHONWARNINGS="error"
5400 AC_MSG_RESULT([yes])
5405 AC_SUBST(ENABLE_WERROR)
5406 AC_SUBST(PYTHONWARNINGS)
5408 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5409 dnl ===================================================================
5410 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5411 if test -z "$enable_assert_always_abort"; then
5412 if test "$ENABLE_DEBUG" = TRUE; then
5413 enable_assert_always_abort=yes
5415 enable_assert_always_abort=no
5418 if test "$enable_assert_always_abort" = "yes"; then
5419 ASSERT_ALWAYS_ABORT="TRUE"
5420 AC_MSG_RESULT([yes])
5422 ASSERT_ALWAYS_ABORT="FALSE"
5425 AC_SUBST(ASSERT_ALWAYS_ABORT)
5427 # Determine whether to use ooenv for the instdir installation
5428 # ===================================================================
5429 if test $_os != "WINNT" -a $_os != "Darwin"; then
5430 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5431 if test "$enable_ooenv" = "no"; then
5435 AC_MSG_RESULT([yes])
5438 AC_SUBST(ENABLE_OOENV)
5440 if test "$USING_X11" != TRUE; then
5441 # be sure to do not mess with unneeded stuff
5446 build_gstreamer_1_0=no
5450 enable_cairo_canvas=no
5453 if test "$OS" = "HAIKU"; then
5454 enable_cairo_canvas=yes
5458 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5459 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!])
5460 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!"
5464 if test "$test_kf5" = "yes"; then
5468 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5469 if test "$enable_qt5" = "no"; then
5470 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5476 dnl ===================================================================
5477 dnl check for cups support
5478 dnl ===================================================================
5481 if test "$enable_cups" = "no"; then
5485 AC_MSG_CHECKING([whether to enable CUPS support])
5486 if test "$test_cups" = "yes"; then
5488 AC_MSG_RESULT([yes])
5490 AC_MSG_CHECKING([whether cups support is present])
5491 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5492 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5493 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5494 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5501 AC_SUBST(ENABLE_CUPS)
5504 if test "$test_fontconfig" = "yes"; then
5505 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5506 SYSTEM_FONTCONFIG=TRUE
5507 FilterLibs "${FONTCONFIG_LIBS}"
5508 FONTCONFIG_LIBS="${filteredlibs}"
5510 AC_SUBST(FONTCONFIG_CFLAGS)
5511 AC_SUBST(FONTCONFIG_LIBS)
5512 AC_SUBST([SYSTEM_FONTCONFIG])
5514 dnl whether to find & fetch external tarballs?
5515 dnl ===================================================================
5516 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5517 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5518 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5520 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5523 if test -z "$TARFILE_LOCATION"; then
5524 if test -d "$SRC_ROOT/src" ; then
5525 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5526 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5528 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5530 AbsolutePath "$TARFILE_LOCATION"
5531 PathFormat "${absolute_path}"
5532 TARFILE_LOCATION="${formatted_path}"
5534 AC_SUBST(TARFILE_LOCATION)
5536 AC_MSG_CHECKING([whether we want to fetch tarballs])
5537 if test "$enable_fetch_external" != "no"; then
5538 if test "$with_all_tarballs" = "yes"; then
5539 AC_MSG_RESULT([yes, all of them])
5540 DO_FETCH_TARBALLS="ALL"
5542 AC_MSG_RESULT([yes, if we use them])
5543 DO_FETCH_TARBALLS="TRUE"
5549 AC_SUBST(DO_FETCH_TARBALLS)
5551 AC_MSG_CHECKING([whether to build help])
5552 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5553 BUILD_TYPE="$BUILD_TYPE HELP"
5554 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5555 case "$with_help" in
5557 ENABLE_HTMLHELP=TRUE
5558 SCPDEFS="$SCPDEFS -DWITH_HELP"
5559 AC_MSG_RESULT([HTML])
5562 ENABLE_HTMLHELP=TRUE
5564 AC_MSG_RESULT([HTML])
5567 SCPDEFS="$SCPDEFS -DWITH_HELP"
5568 AC_MSG_RESULT([yes])
5571 AC_MSG_ERROR([Unknown --with-help=$with_help])
5577 AC_SUBST([ENABLE_HTMLHELP])
5578 AC_SUBST([HELP_ONLINE])
5580 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5581 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5582 BUILD_TYPE="$BUILD_TYPE HELP"
5583 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5584 case "$with_omindex" in
5586 ENABLE_HTMLHELP=TRUE
5588 HELP_OMINDEX_PAGE=TRUE
5589 AC_MSG_RESULT([SERVER])
5592 ENABLE_HTMLHELP=TRUE
5594 HELP_OMINDEX_PAGE=FALSE
5595 AC_MSG_RESULT([NOXAP])
5598 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5602 HELP_OMINDEX_PAGE=FALSE
5605 AC_SUBST([ENABLE_HTMLHELP])
5606 AC_SUBST([HELP_OMINDEX_PAGE])
5607 AC_SUBST([HELP_ONLINE])
5610 dnl Test whether to include MySpell dictionaries
5611 dnl ===================================================================
5612 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5613 if test "$with_myspell_dicts" = "yes"; then
5614 AC_MSG_RESULT([yes])
5615 WITH_MYSPELL_DICTS=TRUE
5616 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5617 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5622 AC_SUBST(WITH_MYSPELL_DICTS)
5624 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5625 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5626 if test "$with_system_dicts" = yes; then
5627 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5629 with_system_dicts=no
5632 AC_MSG_CHECKING([whether to use dicts from external paths])
5633 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5634 AC_MSG_RESULT([yes])
5636 AC_MSG_CHECKING([for spelling dictionary directory])
5637 if test -n "$with_external_dict_dir"; then
5638 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5640 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5641 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5642 DICT_SYSTEM_DIR=file:///usr/share/myspell
5645 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5646 AC_MSG_CHECKING([for hyphenation patterns directory])
5647 if test -n "$with_external_hyph_dir"; then
5648 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5650 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5652 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5653 AC_MSG_CHECKING([for thesaurus directory])
5654 if test -n "$with_external_thes_dir"; then
5655 THES_SYSTEM_DIR=file://$with_external_thes_dir
5657 THES_SYSTEM_DIR=file:///usr/share/mythes
5659 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5664 AC_SUBST(SYSTEM_DICTS)
5665 AC_SUBST(DICT_SYSTEM_DIR)
5666 AC_SUBST(HYPH_SYSTEM_DIR)
5667 AC_SUBST(THES_SYSTEM_DIR)
5669 dnl ===================================================================
5670 dnl Precompiled headers.
5672 AC_MSG_CHECKING([whether to enable pch feature])
5673 if test -z "$enable_pch"; then
5674 if test "$_os" = "WINNT"; then
5675 # Enabled by default on Windows.
5681 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5682 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5684 if test "$enable_pch" = "system"; then
5686 AC_MSG_RESULT([yes (system headers)])
5687 elif test "$enable_pch" = "base"; then
5689 AC_MSG_RESULT([yes (system and base headers)])
5690 elif test "$enable_pch" = "normal"; then
5692 AC_MSG_RESULT([yes (normal)])
5693 elif test "$enable_pch" = "full"; then
5695 AC_MSG_RESULT([yes (full)])
5696 elif test "$enable_pch" = "yes"; then
5697 # Pick a suitable default.
5698 if test "$GCC" = "yes"; then
5699 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5700 # while making the PCHs larger and rebuilds more likely.
5702 AC_MSG_RESULT([yes (system and base headers)])
5704 # With MSVC the highest level makes a significant difference,
5705 # and it was the default when there used to be no PCH levels.
5707 AC_MSG_RESULT([yes (full)])
5709 elif test "$enable_pch" = "no"; then
5712 AC_MSG_ERROR([Unknown value for --enable-pch])
5714 AC_SUBST(ENABLE_PCH)
5715 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5716 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5717 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5718 if test "$CCACHE_BIN" != "not found"; then
5719 AC_MSG_CHECKING([ccache version])
5720 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5721 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5722 AC_MSG_RESULT([$CCACHE_VERSION])
5723 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5724 if test "$CCACHE_NUMVER" -gt "030701"; then
5725 AC_MSG_RESULT([yes])
5727 AC_MSG_RESULT([no (not newer than 3.7.1)])
5733 PCH_INSTANTIATE_TEMPLATES=
5734 if test -n "$ENABLE_PCH"; then
5735 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5737 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5738 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5740 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5746 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5748 BUILDING_PCH_WITH_OBJ=
5749 if test -n "$ENABLE_PCH"; then
5750 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5752 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5753 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5755 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5761 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5765 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5766 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5768 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5769 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5771 PCH_CODEGEN="-fpch-codegen"
5772 PCH_NO_CODEGEN="-fno-pch-codegen"
5775 if test -n "$PCH_CODEGEN"; then
5781 AC_SUBST(PCH_CODEGEN)
5782 AC_SUBST(PCH_NO_CODEGEN)
5784 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5785 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5787 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5788 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5790 if test -n "$PCH_DEBUGINFO"; then
5796 AC_SUBST(PCH_DEBUGINFO)
5800 AC_MSG_CHECKING([the GNU Make version])
5801 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5802 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5803 if test "$_make_longver" -ge "038200"; then
5804 AC_MSG_RESULT([$GNUMAKE $_make_version])
5806 elif test "$_make_longver" -ge "038100"; then
5807 if test "$build_os" = "cygwin"; then
5808 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5810 AC_MSG_RESULT([$GNUMAKE $_make_version])
5812 dnl ===================================================================
5813 dnl Search all the common names for sha1sum
5814 dnl ===================================================================
5815 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5816 if test -z "$SHA1SUM"; then
5817 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5818 elif test "$SHA1SUM" = "openssl"; then
5819 SHA1SUM="openssl sha1"
5821 AC_MSG_CHECKING([for GNU Make bug 20033])
5822 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5823 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5824 A := \$(wildcard *.a)
5828 <TAB>@echo survived bug20033.
5832 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5845 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5846 <TAB>\$(call d1,\$(CHECKSUM)),\
5847 <TAB>\$(call d2,\$(CHECKSUM)))
5849 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5850 no_parallelism_make="YES"
5851 AC_MSG_RESULT([yes, disable parallelism])
5853 AC_MSG_RESULT([no, keep parallelism enabled])
5855 rm -rf $TESTGMAKEBUG20033
5857 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5860 # find if gnumake support file function
5861 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5862 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5863 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5864 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5866 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5867 \$(file >test.txt,Success )
5874 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5875 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5876 HAVE_GNUMAKE_FILE_FUNC=TRUE
5877 AC_MSG_RESULT([yes])
5881 rm -rf $TESTGMAKEFILEFUNC
5882 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5883 AC_SUBST(GNUMAKE_WIN_NATIVE)
5885 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5887 if test "$_make_ver_check" = ""; then
5891 HAVE_LD_HASH_STYLE=FALSE
5892 WITH_LINKER_HASH_STYLE=
5893 AC_MSG_CHECKING([for --hash-style gcc linker support])
5894 if test "$GCC" = "yes"; then
5895 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5896 hash_styles="gnu sysv"
5897 elif test "$with_linker_hash_style" = "no"; then
5900 hash_styles="$with_linker_hash_style"
5903 for hash_style in $hash_styles; do
5904 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5905 hash_style_ldflags_save=$LDFLAGS
5906 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5908 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5915 HAVE_LD_HASH_STYLE=TRUE
5916 WITH_LINKER_HASH_STYLE=$hash_style
5918 [HAVE_LD_HASH_STYLE=FALSE],
5919 [HAVE_LD_HASH_STYLE=FALSE])
5920 LDFLAGS=$hash_style_ldflags_save
5923 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5924 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5928 LDFLAGS=$hash_style_ldflags_save
5932 AC_SUBST(HAVE_LD_HASH_STYLE)
5933 AC_SUBST(WITH_LINKER_HASH_STYLE)
5935 dnl ===================================================================
5936 dnl Check whether there's a Perl version available.
5937 dnl ===================================================================
5938 if test -z "$with_perl_home"; then
5939 AC_PATH_PROG(PERL, perl)
5941 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5942 _perl_path="$with_perl_home/bin/perl"
5943 if test -x "$_perl_path"; then
5946 AC_MSG_ERROR([$_perl_path not found])
5950 dnl ===================================================================
5951 dnl Testing for Perl version 5 or greater.
5952 dnl $] is the Perl version variable, it is returned as an integer
5953 dnl ===================================================================
5954 if test "$PERL"; then
5955 AC_MSG_CHECKING([the Perl version])
5956 ${PERL} -e "exit($]);"
5958 if test "$_perl_version" -lt 5; then
5959 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5961 AC_MSG_RESULT([Perl $_perl_version])
5963 AC_MSG_ERROR([Perl not found, install Perl 5])
5966 dnl ===================================================================
5967 dnl Testing for required Perl modules
5968 dnl ===================================================================
5970 AC_MSG_CHECKING([for required Perl modules])
5971 perl_use_string="use Cwd ; use Digest::MD5"
5972 if test "$_os" = "WINNT"; then
5973 if test -n "$PKGFORMAT"; then
5974 for i in $PKGFORMAT; do
5977 # for getting fonts versions to use in MSI
5978 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5984 if test "$with_system_hsqldb" = "yes"; then
5985 perl_use_string="$perl_use_string ; use Archive::Zip"
5987 if test "$with_system_openssl" != "yes"; then
5988 # OpenSSL needs that to build
5989 perl_use_string="$perl_use_string ; use FindBin"
5991 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5992 AC_MSG_RESULT([all modules found])
5994 AC_MSG_RESULT([failed to find some modules])
5995 # Find out which modules are missing.
5996 for i in $perl_use_string; do
5997 if test "$i" != "use" -a "$i" != ";"; then
5998 if ! $PERL -e "use $i;">/dev/null 2>&1; then
5999 missing_perl_modules="$missing_perl_modules $i"
6004 The missing Perl modules are: $missing_perl_modules
6005 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6008 dnl ===================================================================
6009 dnl Check for pkg-config
6010 dnl ===================================================================
6011 if test "$_os" != "WINNT"; then
6015 if test "$_os" != "WINNT"; then
6017 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6018 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6019 # explicitly. Or put /path/to/compiler in PATH yourself.
6021 # Use wrappers for LTO
6022 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6023 AC_CHECK_TOOL(AR,gcc-ar)
6024 AC_CHECK_TOOL(NM,gcc-nm)
6025 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6027 AC_CHECK_TOOL(AR,ar)
6028 AC_CHECK_TOOL(NM,nm)
6029 AC_CHECK_TOOL(RANLIB,ranlib)
6031 AC_CHECK_TOOL(OBJDUMP,objdump)
6032 AC_CHECK_TOOL(READELF,readelf)
6033 AC_CHECK_TOOL(STRIP,strip)
6034 if test "$_os" = "WINNT"; then
6035 AC_CHECK_TOOL(DLLTOOL,dlltool)
6036 AC_CHECK_TOOL(WINDRES,windres)
6043 AC_SUBST(PKG_CONFIG)
6049 dnl ===================================================================
6050 dnl pkg-config checks on macOS
6051 dnl ===================================================================
6053 if test $_os = Darwin; then
6054 AC_MSG_CHECKING([for bogus pkg-config])
6055 if test -n "$PKG_CONFIG"; then
6056 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6057 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6059 if test "$enable_bogus_pkg_config" = "yes"; then
6060 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6062 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.])
6066 AC_MSG_RESULT([no, good])
6072 # Return value: $csctest
6076 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6077 if test -n "$regvalue"; then
6085 # Return value: $altest
6089 # We need this check to detect 4.6.1 or above.
6090 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6091 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6092 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6098 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6099 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6100 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6111 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6112 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6113 if test -n "$regvalue"; then
6120 find_winsdk_version()
6122 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6123 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6125 unset winsdktest winsdkbinsubdir winsdklibsubdir
6129 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6130 if test -n "$regvalue"; then
6131 winsdktest=$regvalue
6132 winsdklibsubdir=win8
6137 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6138 if test -n "$regvalue"; then
6139 winsdktest=$regvalue
6140 winsdklibsubdir=winv6.3
6145 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6146 if test -n "$regvalue"; then
6147 winsdktest=$regvalue
6148 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6149 if test -n "$regvalue"; then
6150 winsdkbinsubdir="$regvalue".0
6151 winsdklibsubdir=$winsdkbinsubdir
6152 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6153 local tmppath_unix=$(cygpath -u "$tmppath")
6154 # test exist the SDK path
6155 if test -d "$tmppath_unix"; then
6156 # when path is convertible to a short path then path is okay
6157 cygpath -d "$tmppath" >/dev/null 2>&1
6158 if test $? -ne 0; then
6159 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6162 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6173 # Return value: From find_winsdk_version
6177 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6178 find_winsdk_version $ver
6179 if test -n "$winsdktest"; then
6187 # Return value: $msmdir
6189 AC_MSG_CHECKING([for MSVC merge modules directory])
6190 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6195 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6198 for f in $my_msm_files; do
6199 echo "$as_me:$LINENO: searching for $f" >&5
6203 for ver in 14.0 15.0; do
6204 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6205 if test -n "$regvalue"; then
6206 for f in ${my_msm_files}; do
6207 if test -e "$regvalue/${f}"; then
6214 dnl Is the following fallback really necessary, or was it added in response
6215 dnl to never having started Visual Studio on a given machine, so the
6216 dnl registry keys checked above had presumably not yet been created?
6217 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6218 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6219 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6220 dnl expanding to "C:\Program Files\Common Files"), which would need
6221 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6222 dnl obtain its value from cygwin:
6223 if test -z "$msmdir"; then
6224 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6225 for f in ${my_msm_files}; do
6226 if test -e "$my_msm_dir/${f}"; then
6232 dnl Starting from MSVC 15.0, merge modules are located in different directory
6235 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6236 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6237 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6238 for f in ${my_msm_files}; do
6239 if test -e "$my_msm_dir/${f}"; then
6248 if test -n "$msmdir"; then
6249 msmdir=`cygpath -m "$msmdir"`
6250 AC_MSG_RESULT([$msmdir])
6252 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6253 AC_MSG_FAILURE([not found])
6255 AC_MSG_WARN([not found (check config.log)])
6256 add_warning "MSM none of ${my_msm_files} found"
6261 find_msvc_x64_dlls()
6263 # Return value: $msvcdllpath, $msvcdlls
6265 AC_MSG_CHECKING([for MSVC x64 DLL path])
6266 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6269 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6270 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6271 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6272 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6275 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6276 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6277 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6283 AC_MSG_RESULT([$msvcdllpath])
6284 AC_MSG_CHECKING([for MSVC x64 DLLs])
6285 msvcdlls="msvcp140.dll vcruntime140.dll"
6286 for dll in $msvcdlls; do
6287 if ! test -f "$msvcdllpath/$dll"; then
6288 AC_MSG_FAILURE([missing $dll])
6291 AC_MSG_RESULT([found all ($msvcdlls)])
6294 dnl =========================================
6295 dnl Check for the Windows SDK.
6296 dnl =========================================
6297 if test "$_os" = "WINNT"; then
6298 AC_MSG_CHECKING([for Windows SDK])
6299 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6301 WINDOWS_SDK_HOME=$winsdktest
6303 # normalize if found
6304 if test -n "$WINDOWS_SDK_HOME"; then
6305 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6306 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6309 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6312 if test -n "$WINDOWS_SDK_HOME"; then
6313 # Remove a possible trailing backslash
6314 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6316 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6317 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6318 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6319 have_windows_sdk_headers=yes
6320 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6321 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6322 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6323 have_windows_sdk_headers=yes
6324 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6325 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6326 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6327 have_windows_sdk_headers=yes
6329 have_windows_sdk_headers=no
6332 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6333 have_windows_sdk_libs=yes
6334 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6335 have_windows_sdk_libs=yes
6337 have_windows_sdk_libs=no
6340 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6341 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6342 the Windows SDK are installed.])
6346 if test -z "$WINDOWS_SDK_HOME"; then
6347 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6348 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6349 WINDOWS_SDK_VERSION=80
6350 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6351 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6352 WINDOWS_SDK_VERSION=81
6353 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6354 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6355 WINDOWS_SDK_VERSION=10
6356 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6358 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6360 PathFormat "$WINDOWS_SDK_HOME"
6361 WINDOWS_SDK_HOME="$formatted_path"
6362 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6363 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6364 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6365 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6366 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6367 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6368 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6372 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6373 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6374 dnl but not in v8.0), so allow this to be overridden with a
6375 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6376 dnl and configuration error if no WiLangId.vbs is found would arguably be
6377 dnl better, but I do not know under which conditions exactly it is needed by
6379 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6380 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6381 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6382 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6383 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6384 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6386 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6387 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6388 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6390 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6391 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6392 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6395 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6396 if test -n "$with_package_format" -a "$with_package_format" != no; then
6397 for i in "$with_package_format"; do
6398 if test "$i" = "msi"; then
6399 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6400 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6407 AC_SUBST(WINDOWS_SDK_HOME)
6408 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6409 AC_SUBST(WINDOWS_SDK_VERSION)
6410 AC_SUBST(WINDOWS_SDK_WILANGID)
6412 if test "$build_os" = "cygwin"; then
6413 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6414 dnl dir, it also determines that dir's path w/o an arch segment if any,
6415 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6416 AC_MSG_CHECKING([for midl.exe])
6419 if test -n "$winsdkbinsubdir" \
6420 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6422 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6423 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6424 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6425 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6426 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6427 elif test -f "$winsdktest/Bin/midl.exe"; then
6428 MIDL_PATH=$winsdktest/Bin
6429 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6431 if test ! -f "$MIDL_PATH/midl.exe"; then
6432 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6434 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6437 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6438 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6440 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6441 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6442 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6443 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6444 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6445 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6446 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6447 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6448 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6449 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6450 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6451 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6453 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6457 AC_MSG_CHECKING([for csc.exe])
6459 if test -f "$csctest/csc.exe"; then
6462 if test ! -f "$CSC_PATH/csc.exe"; then
6463 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6465 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6468 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6471 AC_MSG_CHECKING([for al.exe])
6473 if test -n "$winsdkbinsubdir" \
6474 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6476 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6477 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6478 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6479 elif test -f "$winsdktest/Bin/al.exe"; then
6480 AL_PATH="$winsdktest/Bin"
6483 if test -z "$AL_PATH"; then
6485 if test -f "$altest/bin/al.exe"; then
6486 AL_PATH="$altest/bin"
6487 elif test -f "$altest/al.exe"; then
6491 if test ! -f "$AL_PATH/al.exe"; then
6492 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6494 AC_MSG_RESULT([$AL_PATH/al.exe])
6497 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6499 dnl Check mscoree.lib / .NET Framework dir
6500 AC_MSG_CHECKING(.NET Framework)
6502 PathFormat "$frametest"
6503 frametest="$formatted_path"
6504 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6505 DOTNET_FRAMEWORK_HOME="$frametest"
6508 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6509 DOTNET_FRAMEWORK_HOME="$winsdktest"
6512 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
6513 AC_MSG_ERROR([mscoree.lib not found])
6515 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6517 PathFormat "$MIDL_PATH"
6518 MIDL_PATH="$formatted_path"
6520 PathFormat "$AL_PATH"
6521 AL_PATH="$formatted_path"
6523 PathFormat "$DOTNET_FRAMEWORK_HOME"
6524 DOTNET_FRAMEWORK_HOME="$formatted_path"
6526 PathFormat "$CSC_PATH"
6527 CSC_PATH="$formatted_path"
6530 dnl ===================================================================
6531 dnl Testing for C++ compiler and version...
6532 dnl ===================================================================
6534 if test "$_os" != "WINNT"; then
6535 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6536 save_CXXFLAGS=$CXXFLAGS
6538 CXXFLAGS=$save_CXXFLAGS
6539 if test -z "$CXX_BASE"; then
6540 CXX_BASE=`first_arg_basename "$CXX"`
6544 dnl check for GNU C++ compiler version
6545 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6546 AC_MSG_CHECKING([the GNU C++ compiler version])
6548 _gpp_version=`$CXX -dumpversion`
6549 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6551 if test "$_gpp_majmin" -lt "700"; then
6552 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6554 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6557 dnl see https://code.google.com/p/android/issues/detail?id=41770
6561 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6562 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6563 #include <bits/c++config.h>]],[[
6564 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6565 && !defined(_GLIBCXX__PTHREADS) \
6566 && !defined(_GLIBCXX_HAS_GTHREADS)
6569 ]])],[AC_MSG_RESULT([yes])
6570 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6572 if test $glibcxx_threads = yes; then
6573 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6576 AC_SUBST(BOOST_CXXFLAGS)
6579 # prefx CXX with ccache if needed
6581 if test "$CCACHE" != ""; then
6582 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6584 save_CXXFLAGS=$CXXFLAGS
6585 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6586 dnl an empty program will do, we're checking the compiler flags
6587 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6588 [use_ccache=yes], [use_ccache=no])
6589 if test $use_ccache = yes; then
6590 AC_MSG_RESULT([yes])
6593 CXX_BASE="ccache $CXX_BASE"
6596 CXXFLAGS=$save_CXXFLAGS
6600 dnl ===================================================================
6601 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6602 dnl ===================================================================
6604 if test "$_os" != "WINNT"; then
6607 dnl Check whether there's a C pre-processor.
6612 dnl ===================================================================
6613 dnl Find integral type sizes and alignments
6614 dnl ===================================================================
6616 if test "$_os" != "WINNT"; then
6618 AC_CHECK_SIZEOF(long)
6619 AC_CHECK_SIZEOF(short)
6620 AC_CHECK_SIZEOF(int)
6621 AC_CHECK_SIZEOF(long long)
6622 AC_CHECK_SIZEOF(double)
6623 AC_CHECK_SIZEOF(void*)
6625 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6626 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6627 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6628 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6629 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6631 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6632 m4_pattern_allow([AC_CHECK_ALIGNOF])
6633 m4_ifdef([AC_CHECK_ALIGNOF],
6635 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6636 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6637 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6638 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6641 case "$_os-$host_cpu" in
6643 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6644 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6645 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6646 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6649 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6650 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6651 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6652 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6655 if test -z "$ac_cv_alignof_short" -o \
6656 -z "$ac_cv_alignof_int" -o \
6657 -z "$ac_cv_alignof_long" -o \
6658 -z "$ac_cv_alignof_double"; then
6659 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.])
6665 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6666 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6667 if test $ac_cv_sizeof_long -eq 8; then
6668 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6669 elif test $ac_cv_sizeof_double -eq 8; then
6670 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6672 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6675 dnl Check for large file support
6677 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6678 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6680 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6681 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6685 SAL_TYPES_SIZEOFSHORT=2
6686 SAL_TYPES_SIZEOFINT=4
6687 SAL_TYPES_SIZEOFLONG=4
6688 SAL_TYPES_SIZEOFLONGLONG=8
6689 if test $WIN_HOST_BITS -eq 32; then
6690 SAL_TYPES_SIZEOFPOINTER=4
6692 SAL_TYPES_SIZEOFPOINTER=8
6694 SAL_TYPES_ALIGNMENT2=2
6695 SAL_TYPES_ALIGNMENT4=4
6696 SAL_TYPES_ALIGNMENT8=8
6699 AC_SUBST(LFS_CFLAGS)
6701 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6702 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6703 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6704 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6705 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6706 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6707 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6708 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6710 dnl ===================================================================
6711 dnl Check whether to enable runtime optimizations
6712 dnl ===================================================================
6713 ENABLE_RUNTIME_OPTIMIZATIONS=
6714 AC_MSG_CHECKING([whether to enable runtime optimizations])
6715 if test -z "$enable_runtime_optimizations"; then
6719 enable_runtime_optimizations=no
6725 if test "$enable_runtime_optimizations" != no; then
6726 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6727 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6728 AC_MSG_RESULT([yes])
6732 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6734 dnl ===================================================================
6735 dnl Check if valgrind headers are available
6736 dnl ===================================================================
6738 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6739 prev_cppflags=$CPPFLAGS
6740 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6741 # or where does it come from?
6742 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6743 AC_CHECK_HEADER([valgrind/valgrind.h],
6744 [ENABLE_VALGRIND=TRUE])
6745 CPPFLAGS=$prev_cppflags
6747 AC_SUBST([ENABLE_VALGRIND])
6748 if test -z "$ENABLE_VALGRIND"; then
6749 if test "$with_valgrind" = yes; then
6750 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6754 AC_SUBST([VALGRIND_CFLAGS])
6757 dnl ===================================================================
6758 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6759 dnl ===================================================================
6761 # We need at least the sys/sdt.h include header.
6762 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6763 if test "$SDT_H_FOUND" = "TRUE"; then
6764 # Found sys/sdt.h header, now make sure the c++ compiler works.
6765 # Old g++ versions had problems with probes in constructors/destructors.
6766 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6768 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6769 #include <sys/sdt.h>
6777 ProbeClass(int& v, const char *n) : ref(v), name(n)
6779 DTRACE_PROBE2(_test_, cons, name, ref);
6782 void method(int min)
6784 DTRACE_PROBE3(_test_, meth, name, ref, min);
6790 DTRACE_PROBE2(_test_, dest, name, ref);
6795 DTRACE_PROBE1(_test_, call, i);
6796 ProbeClass inst = ProbeClass(i, "call");
6798 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6799 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6802 AC_CONFIG_HEADERS([config_host/config_probes.h])
6804 dnl ===================================================================
6806 dnl ===================================================================
6807 HAVE_GCC_STACK_CLASH_PROTECTION=
6808 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6809 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6811 CFLAGS="$CFLAGS -fstack-clash-protection"
6813 [AC_LANG_PROGRAM(, [[return 0;]])],
6814 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6815 [AC_MSG_RESULT([no])])
6818 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6820 CFLAGS="$CFLAGS -Werror -mno-avx"
6821 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6823 if test "$HAVE_GCC_AVX" = "TRUE"; then
6824 AC_MSG_RESULT([yes])
6829 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6830 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6832 if (__sync_add_and_fetch(&v, 1) != 1 ||
6833 __sync_sub_and_fetch(&v, 1) != 0)
6835 __sync_synchronize();
6836 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6840 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6841 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6842 AC_MSG_RESULT([yes])
6843 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6848 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6850 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6853 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6855 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6856 AC_MSG_RESULT([yes])
6857 ], [AC_MSG_RESULT([no])])
6860 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6862 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6865 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6867 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6868 AC_MSG_RESULT([yes])
6869 ], [AC_MSG_RESULT([no])])
6872 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6874 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6876 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6878 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6879 AC_MSG_RESULT([yes])
6880 ], [AC_MSG_RESULT([no])])
6883 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6885 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6888 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6890 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6891 AC_MSG_RESULT([yes])
6892 ], [AC_MSG_RESULT([no])])
6895 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6897 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6900 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6902 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6903 AC_MSG_RESULT([yes])
6904 ], [AC_MSG_RESULT([no])])
6907 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6909 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6911 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6913 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6914 AC_MSG_RESULT([yes])
6915 ], [AC_MSG_RESULT([no])])
6918 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6920 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6922 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6924 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6925 AC_MSG_RESULT([yes])
6926 ], [AC_MSG_RESULT([no])])
6929 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6931 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6933 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6935 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6936 AC_MSG_RESULT([yes])
6937 ], [AC_MSG_RESULT([no])])
6940 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6942 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6945 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6947 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6948 AC_MSG_RESULT([yes])
6949 ], [AC_MSG_RESULT([no])])
6952 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6954 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6957 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6959 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6960 AC_MSG_RESULT([yes])
6961 ], [AC_MSG_RESULT([no])])
6965 AC_SUBST(HAVE_GCC_AVX)
6966 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6967 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6969 dnl ===================================================================
6970 dnl Identify the C++ library
6971 dnl ===================================================================
6973 AC_MSG_CHECKING([what the C++ library is])
6975 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6981 [CPP_LIBRARY=GLIBCXX
6982 cpp_library_name="GNU libstdc++"
6984 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6986 #ifndef _LIBCPP_VERSION
6991 cpp_library_name="LLVM libc++"
6992 AC_DEFINE([HAVE_LIBCXX])
6994 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7001 cpp_library_name="Microsoft"
7003 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7004 AC_MSG_RESULT([$cpp_library_name])
7007 dnl ===================================================================
7009 dnl ===================================================================
7010 AC_PATH_PROG(GPERF, gperf)
7011 if test -z "$GPERF"; then
7012 AC_MSG_ERROR([gperf not found but needed. Install it.])
7014 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7015 GPERF=`cygpath -m $GPERF`
7017 AC_MSG_CHECKING([whether gperf is new enough])
7018 my_gperf_ver1=$($GPERF --version | head -n 1)
7019 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7020 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7021 if test "$my_gperf_ver3" -ge 301; then
7022 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7024 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7028 dnl ===================================================================
7029 dnl Check for system libcmis
7030 dnl ===================================================================
7031 # libcmis requires curl and we can't build curl for iOS
7032 if test $_os != iOS; then
7033 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7038 AC_SUBST(ENABLE_LIBCMIS)
7040 dnl ===================================================================
7042 dnl ===================================================================
7044 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7046 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7047 if test "$with_latest_c__" = yes; then
7048 CXXFLAGS_CXX11=-std:c++latest
7050 CXXFLAGS_CXX11=-std:c++17
7052 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7053 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7054 my_flags='-std=c++17 -std=c++1z'
7055 if test "$with_latest_c__" = yes; then
7056 my_flags="-std=c++2b -std=c++20 -std=c++2a $my_flags"
7058 for flag in $my_flags; do
7059 if test "$COM" = MSC; then
7060 flag="-Xclang $flag"
7062 save_CXXFLAGS=$CXXFLAGS
7063 CXXFLAGS="$CXXFLAGS $flag -Werror"
7064 if test "$SYSTEM_LIBCMIS" = TRUE; then
7065 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7068 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7069 #include <algorithm>
7070 #include <functional>
7073 #if defined SYSTEM_LIBCMIS
7074 // See ucb/source/ucp/cmis/auth_provider.hxx:
7075 #if !defined __clang__
7076 #pragma GCC diagnostic push
7077 #pragma GCC diagnostic ignored "-Wdeprecated"
7078 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7080 #include <libcmis/libcmis.hxx>
7081 #if !defined __clang__
7082 #pragma GCC diagnostic pop
7086 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7087 std::sort(v.begin(), v.end(), fn);
7089 ]])],[CXXFLAGS_CXX11=$flag])
7091 CXXFLAGS=$save_CXXFLAGS
7092 if test -n "$CXXFLAGS_CXX11"; then
7097 if test -n "$CXXFLAGS_CXX11"; then
7098 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7102 AC_SUBST(CXXFLAGS_CXX11)
7104 if test "$GCC" = "yes"; then
7105 save_CXXFLAGS=$CXXFLAGS
7106 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7108 CXXFLAGS=$save_CXXFLAGS
7109 AC_SUBST(ATOMIC_LIB)
7112 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7113 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7114 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7115 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7116 dnl again towards 4.7.2:
7117 if test $CPP_LIBRARY = GLIBCXX; then
7118 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7120 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7122 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7123 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7124 // GCC 4.7.0: 20120322
7125 // GCC 4.7.1: 20120614
7126 // and using a range check is not possible as the mapping between
7127 // __GLIBCXX__ values and GCC versions is not monotonic
7132 ]])], [AC_MSG_RESULT(no, ok)],
7133 [AC_MSG_ERROR(yes)])
7137 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7138 save_CXXFLAGS=$CXXFLAGS
7139 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7142 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7145 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7161 a thinga[]={{0,0}, {1,1}};
7162 b thingb[]={{0,0}, {1,1}};
7163 size_t i = sizeof(sal_n_array_size(thinga));
7164 size_t j = sizeof(sal_n_array_size(thingb));
7165 return !(i != 0 && j != 0);
7167 ], [ AC_MSG_RESULT(yes) ],
7168 [ AC_MSG_ERROR(no)])
7170 CXXFLAGS=$save_CXXFLAGS
7172 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7173 if test "$GCC" = yes; then
7174 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7176 save_CXXFLAGS=$CXXFLAGS
7177 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7178 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7179 CXXFLAGS=$save_CXXFLAGS
7181 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7182 AC_MSG_RESULT([yes])
7187 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7189 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7190 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7191 dnl from consteval constructor initializing const variable":
7193 save_CXXFLAGS=$CXXFLAGS
7194 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7195 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7197 consteval S() { i = 1; }
7202 return (s.i == 1) ? 0 : 1;
7204 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7205 AC_MSG_RESULT([yes])
7206 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7207 CXXFLAGS=$save_CXXFLAGS
7210 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7212 save_CXXFLAGS=$CXXFLAGS
7213 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7214 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7215 #include <algorithm>
7216 #include <initializer_list>
7218 template<typename T> class S {
7222 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7224 constinit S<int> s{3, 2, 1};
7226 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7227 AC_MSG_RESULT([yes])
7228 ], [AC_MSG_RESULT([no])])
7229 CXXFLAGS=$save_CXXFLAGS
7232 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7234 save_CXXFLAGS=$CXXFLAGS
7235 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7236 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7238 #include <type_traits>
7239 // Don't check size_type directly, as it was called index_type before P1872R0:
7240 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7242 AC_DEFINE([HAVE_CPP_SPAN],[1])
7243 AC_MSG_RESULT([yes])
7244 ], [AC_MSG_RESULT([no])])
7245 CXXFLAGS=$save_CXXFLAGS
7248 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7250 save_CXXFLAGS=$CXXFLAGS
7251 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7252 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7253 struct S1 { S1(S1 &&); };
7255 S1 f(S2 s) { return s; }
7257 AC_DEFINE([HAVE_P1155R3],[1])
7258 AC_MSG_RESULT([yes])
7259 ], [AC_MSG_RESULT([no])])
7260 CXXFLAGS=$save_CXXFLAGS
7263 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7264 dnl which is included in -Wextra anyway):
7265 HAVE_WDEPRECATED_COPY_DTOR=
7266 if test "$GCC" = yes; then
7267 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7269 save_CXXFLAGS=$CXXFLAGS
7270 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7271 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7272 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7273 AC_MSG_RESULT([yes])
7274 ], [AC_MSG_RESULT([no])])
7275 CXXFLAGS=$save_CXXFLAGS
7278 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7280 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7281 dnl uninitialized warning for code like
7284 dnl boost::optional<OString> * g(bool b) {
7285 dnl boost::optional<OString> o;
7287 dnl return new boost::optional<OString>(o);
7290 dnl (as is e.g. present, in a slightly more elaborate form, in
7291 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7292 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7293 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7294 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7295 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7297 save_CXXFLAGS=$CXXFLAGS
7298 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7299 if test "$ENABLE_OPTIMIZED" = TRUE; then
7300 CXXFLAGS="$CXXFLAGS -O2"
7302 CXXFLAGS="$CXXFLAGS -O0"
7304 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7313 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7314 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7320 char stg[sizeof (S1)];
7328 ]])], [AC_MSG_RESULT([no])], [
7329 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7330 AC_MSG_RESULT([yes])
7332 CXXFLAGS=$save_CXXFLAGS
7335 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7337 dnl ===================================================================
7338 dnl CPU Intrinsics support - SSE, AVX
7339 dnl ===================================================================
7341 CXXFLAGS_INTRINSICS_SSE2=
7342 CXXFLAGS_INTRINSICS_SSSE3=
7343 CXXFLAGS_INTRINSICS_SSE41=
7344 CXXFLAGS_INTRINSICS_SSE42=
7345 CXXFLAGS_INTRINSICS_AVX=
7346 CXXFLAGS_INTRINSICS_AVX2=
7347 CXXFLAGS_INTRINSICS_AVX512=
7348 CXXFLAGS_INTRINSICS_F16C=
7349 CXXFLAGS_INTRINSICS_FMA=
7351 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7352 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7359 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7363 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7364 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7365 # SSE2 seems to be SSE2+.
7366 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7367 # is not empty (and can be tested in gbuild).
7368 flag_sse2=-arch:SSE2
7369 flag_ssse3=-arch:SSE2
7370 flag_sse41=-arch:SSE2
7371 flag_sse42=-arch:SSE2
7373 flag_avx2=-arch:AVX2
7374 flag_avx512=-arch:AVX512
7375 # These are part of -arch:AVX2
7376 flag_f16c=-arch:AVX2
7380 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7382 save_CXXFLAGS=$CXXFLAGS
7383 CXXFLAGS="$CXXFLAGS $flag_sse2"
7384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7385 #include <emmintrin.h>
7387 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7388 c = _mm_xor_si128 (a, b);
7392 [can_compile_sse2=yes],
7393 [can_compile_sse2=no])
7395 CXXFLAGS=$save_CXXFLAGS
7396 AC_MSG_RESULT([${can_compile_sse2}])
7397 if test "${can_compile_sse2}" = "yes" ; then
7398 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7401 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7403 save_CXXFLAGS=$CXXFLAGS
7404 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7405 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7406 #include <tmmintrin.h>
7408 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7409 c = _mm_maddubs_epi16 (a, b);
7413 [can_compile_ssse3=yes],
7414 [can_compile_ssse3=no])
7416 CXXFLAGS=$save_CXXFLAGS
7417 AC_MSG_RESULT([${can_compile_ssse3}])
7418 if test "${can_compile_ssse3}" = "yes" ; then
7419 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7422 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7424 save_CXXFLAGS=$CXXFLAGS
7425 CXXFLAGS="$CXXFLAGS $flag_sse41"
7426 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7427 #include <smmintrin.h>
7429 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7430 c = _mm_cmpeq_epi64 (a, b);
7434 [can_compile_sse41=yes],
7435 [can_compile_sse41=no])
7437 CXXFLAGS=$save_CXXFLAGS
7438 AC_MSG_RESULT([${can_compile_sse41}])
7439 if test "${can_compile_sse41}" = "yes" ; then
7440 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7443 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7445 save_CXXFLAGS=$CXXFLAGS
7446 CXXFLAGS="$CXXFLAGS $flag_sse42"
7447 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7448 #include <nmmintrin.h>
7450 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7451 c = _mm_cmpgt_epi64 (a, b);
7455 [can_compile_sse42=yes],
7456 [can_compile_sse42=no])
7458 CXXFLAGS=$save_CXXFLAGS
7459 AC_MSG_RESULT([${can_compile_sse42}])
7460 if test "${can_compile_sse42}" = "yes" ; then
7461 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7464 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7466 save_CXXFLAGS=$CXXFLAGS
7467 CXXFLAGS="$CXXFLAGS $flag_avx"
7468 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7469 #include <immintrin.h>
7471 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7472 c = _mm256_xor_ps(a, b);
7476 [can_compile_avx=yes],
7477 [can_compile_avx=no])
7479 CXXFLAGS=$save_CXXFLAGS
7480 AC_MSG_RESULT([${can_compile_avx}])
7481 if test "${can_compile_avx}" = "yes" ; then
7482 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7485 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7487 save_CXXFLAGS=$CXXFLAGS
7488 CXXFLAGS="$CXXFLAGS $flag_avx2"
7489 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7490 #include <immintrin.h>
7492 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7493 c = _mm256_maddubs_epi16(a, b);
7497 [can_compile_avx2=yes],
7498 [can_compile_avx2=no])
7500 CXXFLAGS=$save_CXXFLAGS
7501 AC_MSG_RESULT([${can_compile_avx2}])
7502 if test "${can_compile_avx2}" = "yes" ; then
7503 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7506 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7508 save_CXXFLAGS=$CXXFLAGS
7509 CXXFLAGS="$CXXFLAGS $flag_avx512"
7510 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7511 #include <immintrin.h>
7513 __m512i a = _mm512_loadu_si512(0);
7517 [can_compile_avx512=yes],
7518 [can_compile_avx512=no])
7520 CXXFLAGS=$save_CXXFLAGS
7521 AC_MSG_RESULT([${can_compile_avx512}])
7522 if test "${can_compile_avx512}" = "yes" ; then
7523 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7526 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7528 save_CXXFLAGS=$CXXFLAGS
7529 CXXFLAGS="$CXXFLAGS $flag_f16c"
7530 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7531 #include <immintrin.h>
7533 __m128i a = _mm_set1_epi32 (0);
7535 c = _mm_cvtph_ps(a);
7539 [can_compile_f16c=yes],
7540 [can_compile_f16c=no])
7542 CXXFLAGS=$save_CXXFLAGS
7543 AC_MSG_RESULT([${can_compile_f16c}])
7544 if test "${can_compile_f16c}" = "yes" ; then
7545 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7548 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7550 save_CXXFLAGS=$CXXFLAGS
7551 CXXFLAGS="$CXXFLAGS $flag_fma"
7552 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7553 #include <immintrin.h>
7555 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7556 d = _mm256_fmadd_ps(a, b, c);
7560 [can_compile_fma=yes],
7561 [can_compile_fma=no])
7563 CXXFLAGS=$save_CXXFLAGS
7564 AC_MSG_RESULT([${can_compile_fma}])
7565 if test "${can_compile_fma}" = "yes" ; then
7566 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7569 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7570 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7571 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7572 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7573 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7574 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7575 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7576 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7577 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7579 dnl ===================================================================
7580 dnl system stl sanity tests
7581 dnl ===================================================================
7582 if test "$_os" != "WINNT"; then
7586 save_CPPFLAGS="$CPPFLAGS"
7587 if test -n "$MACOSX_SDK_PATH"; then
7588 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7591 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7593 if test "$CPP_LIBRARY" = GLIBCXX; then
7594 dnl gcc#19664, gcc#22482, rhbz#162935
7595 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7596 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7597 AC_MSG_RESULT([$stlvisok])
7598 if test "$stlvisok" = "no"; then
7599 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7603 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7604 # when we don't make any dynamic libraries?
7605 if test "$DISABLE_DYNLOADING" = ""; then
7606 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7607 cat > conftestlib1.cc <<_ACEOF
7608 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7609 struct S2: S1<int> { virtual ~S2(); };
7612 cat > conftestlib2.cc <<_ACEOF
7613 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7614 struct S2: S1<int> { virtual ~S2(); };
7615 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7617 gccvisinlineshiddenok=yes
7618 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7619 gccvisinlineshiddenok=no
7621 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7622 dnl known to not work with -z defs (unsetting which makes the test
7624 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7625 if test "$COM_IS_CLANG" = TRUE; then
7626 for i in $CXX $CXXFLAGS; do
7629 my_linkflagsnoundefs=
7635 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7636 gccvisinlineshiddenok=no
7641 AC_MSG_RESULT([$gccvisinlineshiddenok])
7642 if test "$gccvisinlineshiddenok" = "no"; then
7643 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7647 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7648 cat >visibility.cxx <<_ACEOF
7649 #pragma GCC visibility push(hidden)
7650 struct __attribute__ ((visibility ("default"))) TestStruct {
7653 __attribute__ ((visibility ("default"))) void TestFunc() {
7657 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7662 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7665 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7677 rm -f visibility.s visibility.cxx
7679 AC_MSG_RESULT([$gccvisbroken])
7680 if test "$gccvisbroken" = "yes"; then
7681 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7684 CPPFLAGS="$save_CPPFLAGS"
7689 dnl ===================================================================
7691 dnl ===================================================================
7693 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7694 if test "$GCC" = "yes"; then
7695 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7697 save_CXXFLAGS=$CXXFLAGS
7698 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7699 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7700 CXXFLAGS=$save_CXXFLAGS
7702 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7703 AC_MSG_RESULT([yes])
7708 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7710 dnl ===================================================================
7711 dnl Compiler plugins
7712 dnl ===================================================================
7715 # currently only Clang
7717 if test "$COM_IS_CLANG" != "TRUE"; then
7718 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7719 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7720 enable_compiler_plugins=no
7724 COMPILER_PLUGINS_COM_IS_CLANG=
7725 if test "$COM_IS_CLANG" = "TRUE"; then
7726 if test -n "$enable_compiler_plugins"; then
7727 compiler_plugins="$enable_compiler_plugins"
7728 elif test -n "$ENABLE_DBGUTIL"; then
7729 compiler_plugins=test
7733 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7734 if test "$CLANGVER" -lt 50002; then
7735 if test "$compiler_plugins" = yes; then
7736 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7742 if test "$compiler_plugins" != "no"; then
7743 dnl The prefix where Clang resides, override to where Clang resides if
7744 dnl using a source build:
7745 if test -z "$CLANGDIR"; then
7746 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7748 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7749 if test -z "$COMPILER_PLUGINS_CXX"; then
7750 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7752 clangbindir=$CLANGDIR/bin
7753 if test "$build_os" = "cygwin"; then
7754 clangbindir=$(cygpath -u "$clangbindir")
7756 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7757 if test -n "$LLVM_CONFIG"; then
7758 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7759 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7760 if test -z "$CLANGLIBDIR"; then
7761 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7763 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7764 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7765 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7766 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7767 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7769 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7770 clangobjdir=$($LLVM_CONFIG --obj-root)
7771 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7772 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7775 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7779 save_CPPFLAGS=$CPPFLAGS
7780 save_CXXFLAGS=$CXXFLAGS
7781 save_LDFLAGS=$LDFLAGS
7783 CXX=$COMPILER_PLUGINS_CXX
7784 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7785 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7786 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7787 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7788 [COMPILER_PLUGINS=TRUE],
7790 if test "$compiler_plugins" = "yes"; then
7791 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7793 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7794 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7797 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7798 dnl comment in compilerplugins/Makefile-clang.mk:
7799 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7801 AC_MSG_CHECKING([for clang libraries to use])
7802 if test -z "$CLANGTOOLLIBS"; then
7803 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7804 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7806 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7807 [[ clang::FullSourceLoc().dump(); ]])
7808 ],[CLANGTOOLLIBS="$LIBS"],[])
7810 if test -z "$CLANGTOOLLIBS"; then
7811 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7813 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7814 [[ clang::FullSourceLoc().dump(); ]])
7815 ],[CLANGTOOLLIBS="$LIBS"],[])
7817 AC_MSG_RESULT([$CLANGTOOLLIBS])
7818 if test -z "$CLANGTOOLLIBS"; then
7819 if test "$compiler_plugins" = "yes"; then
7820 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7822 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7823 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7827 if test -n "$COMPILER_PLUGINS"; then
7828 if test -z "$CLANGSYSINCLUDE"; then
7829 if test -n "$LLVM_CONFIG"; then
7830 # Path to the clang system headers (no idea if there's a better way to get it).
7831 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7838 CPPFLAGS=$save_CPPFLAGS
7839 CXXFLAGS=$save_CXXFLAGS
7840 LDFLAGS=$save_LDFLAGS
7844 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7845 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7851 [AC_MSG_RESULT([yes])
7852 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7853 [AC_MSG_RESULT([no])])
7854 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7857 if test "$enable_compiler_plugins" = "yes"; then
7858 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7861 COMPILER_PLUGINS_ANALYZER_PCH=
7862 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7863 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7865 AC_SUBST(COMPILER_PLUGINS)
7866 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7867 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7868 AC_SUBST(COMPILER_PLUGINS_CXX)
7869 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7870 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7871 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7872 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7874 AC_SUBST(CLANGLIBDIR)
7875 AC_SUBST(CLANGTOOLLIBS)
7876 AC_SUBST(CLANGSYSINCLUDE)
7878 # Plugin to help linker.
7879 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7880 # This makes --enable-lto build with clang work.
7883 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7884 AC_SUBST(HAVE_POSIX_FALLOCATE)
7886 JITC_PROCESSOR_TYPE=""
7887 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7888 # IBMs JDK needs this...
7889 JITC_PROCESSOR_TYPE=6
7890 export JITC_PROCESSOR_TYPE
7892 AC_SUBST([JITC_PROCESSOR_TYPE])
7894 # Misc Windows Stuff
7895 AC_ARG_WITH(ucrt-dir,
7896 AS_HELP_STRING([--with-ucrt-dir],
7897 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7898 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7899 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7900 Windows6.1-KB2999226-x64.msu
7901 Windows6.1-KB2999226-x86.msu
7902 Windows8.1-KB2999226-x64.msu
7903 Windows8.1-KB2999226-x86.msu
7904 Windows8-RT-KB2999226-x64.msu
7905 Windows8-RT-KB2999226-x86.msu
7906 A zip archive including those files is available from Microsoft site:
7907 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7910 UCRT_REDISTDIR="$with_ucrt_dir"
7911 if test $_os = "WINNT"; then
7913 for i in $PKGFORMAT; do
7914 if test "$i" = msi; then
7919 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7920 MSVC_DLLS="$msvcdlls"
7921 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7922 # MSVC 15.3 changed it to VC141
7923 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7924 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7925 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7926 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7928 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7931 if test "$UCRT_REDISTDIR" = "no"; then
7932 dnl explicitly disabled
7935 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7936 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7937 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7938 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7939 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7940 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7942 if test -n "$PKGFORMAT"; then
7943 for i in $PKGFORMAT; do
7946 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7947 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7956 AC_SUBST(UCRT_REDISTDIR)
7957 AC_SUBST(MSVC_DLL_PATH)
7961 dnl ===================================================================
7963 dnl ===================================================================
7964 if test "$ENABLE_JAVA" != ""; then
7966 # Windows-specific tests
7967 if test "$build_os" = "cygwin"; then
7968 if test -z "$with_jdk_home"; then
7969 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7970 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7971 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7972 if test -n "$regvalue"; then
7974 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7975 reg_jdk_home=$regvalue
7978 if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7979 with_jdk_home="$reg_jdk_home"
7980 howfound="found automatically"
7982 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7985 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7986 howfound="you passed"
7990 # 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.
7991 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
7992 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
7993 with_jdk_home=`/usr/libexec/java_home`
7996 JAVA_HOME=; export JAVA_HOME
7997 if test -z "$with_jdk_home"; then
7998 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8000 _java_path="$with_jdk_home/bin/$with_java"
8001 dnl Check if there is a Java interpreter at all.
8002 if test -x "$_java_path"; then
8003 JAVAINTERPRETER=$_java_path
8005 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8009 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8010 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8011 dnl loaded by java to run JunitTests:
8012 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8013 shortjdkhome=`cygpath -d "$with_jdk_home"`
8014 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
8015 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8016 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8017 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
8018 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8019 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8022 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8023 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8025 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8026 elif test "$cross_compiling" != "yes"; then
8028 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8029 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8030 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8031 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8034 *) # assumption: everything else 32-bit
8035 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8036 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8037 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8044 dnl ===================================================================
8046 dnl ===================================================================
8048 # Whether all the complexity here actually is needed any more or not, no idea.
8050 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8052 AC_MSG_CHECKING([the installed JDK])
8053 if test -n "$JAVAINTERPRETER"; then
8054 dnl java -version sends output to stderr!
8055 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8056 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8057 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8058 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8059 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8060 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8061 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8062 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8066 dnl Sun JDK specific tests
8067 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8068 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8070 if test "$_jdk_ver" -lt 10900; then
8071 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8073 if test "$_jdk_ver" -gt 10900; then
8074 JAVA_CLASSPATH_NOT_SET=TRUE
8077 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8078 if test "$_os" = "WINNT"; then
8079 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8081 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8083 # set to limit VM usage for JunitTests
8085 # set to limit VM usage for javac
8086 JAVACFLAGS=-J-Xmx128M
8089 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8092 if test -z "$ENABLE_JAVA"; then
8096 elif test "$cross_compiling" = "yes"; then
8097 # Just assume compatibility of build and host JDK
8099 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8103 dnl ===================================================================
8104 dnl Checks for javac
8105 dnl ===================================================================
8106 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8107 javacompiler="javac"
8108 : ${JAVA_SOURCE_VER=8}
8109 : ${JAVA_TARGET_VER=8}
8110 if test -z "$with_jdk_home"; then
8111 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8113 _javac_path="$with_jdk_home/bin/$javacompiler"
8114 dnl Check if there is a Java compiler at all.
8115 if test -x "$_javac_path"; then
8116 JAVACOMPILER=$_javac_path
8119 if test -z "$JAVACOMPILER"; then
8120 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8122 if test "$build_os" = "cygwin"; then
8123 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8124 JAVACOMPILER="${JAVACOMPILER}.exe"
8126 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8130 dnl ===================================================================
8131 dnl Checks for javadoc
8132 dnl ===================================================================
8133 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8134 if test -z "$with_jdk_home"; then
8135 AC_PATH_PROG(JAVADOC, javadoc)
8137 _javadoc_path="$with_jdk_home/bin/javadoc"
8138 dnl Check if there is a javadoc at all.
8139 if test -x "$_javadoc_path"; then
8140 JAVADOC=$_javadoc_path
8142 AC_PATH_PROG(JAVADOC, javadoc)
8145 if test -z "$JAVADOC"; then
8146 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8148 if test "$build_os" = "cygwin"; then
8149 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8150 JAVADOC="${JAVADOC}.exe"
8152 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8155 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8156 JAVADOCISGJDOC="yes"
8160 AC_SUBST(JAVADOCISGJDOC)
8162 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8163 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8164 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8165 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8166 # try to recover first by looking whether we have an alternative
8167 # system as in Debian or newer SuSEs where following /usr/bin/javac
8168 # over /etc/alternatives/javac leads to the right bindir where we
8169 # just need to strip a bit away to get a valid JAVA_HOME
8170 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8171 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8172 # maybe only one level of symlink (e.g. on Mac)
8173 JAVA_HOME=$(readlink $JAVACOMPILER)
8174 if test "$(dirname $JAVA_HOME)" = "."; then
8175 # we've got no path to trim back
8180 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8181 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8182 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8183 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8185 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8186 if test "$JAVA_HOME" != "/usr"; then
8187 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8188 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8189 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8190 dnl Tiger already returns a JDK path...
8191 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8193 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8194 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8195 dnl that checks which version to run
8196 if test -f "$JAVA_HOME"; then
8197 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8202 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8204 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8205 if test -z "$JAVA_HOME"; then
8206 if test "x$with_jdk_home" = "x"; then
8207 cat > findhome.java <<_ACEOF
8208 [import java.io.File;
8212 public static void main(String args[])
8214 String jrelocation = System.getProperty("java.home");
8215 File jre = new File(jrelocation);
8216 System.out.println(jre.getParent());
8220 AC_MSG_CHECKING([if javac works])
8221 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8222 AC_TRY_EVAL(javac_cmd)
8223 if test $? = 0 -a -f ./findhome.class; then
8224 AC_MSG_RESULT([javac works])
8226 echo "configure: javac test failed" >&5
8227 cat findhome.java >&5
8228 AC_MSG_ERROR([javac does not work - java projects will not build!])
8230 AC_MSG_CHECKING([if gij knows its java.home])
8231 JAVA_HOME=`$JAVAINTERPRETER findhome`
8232 if test $? = 0 -a "$JAVA_HOME" != ""; then
8233 AC_MSG_RESULT([$JAVA_HOME])
8235 echo "configure: java test failed" >&5
8236 cat findhome.java >&5
8237 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8239 # clean-up after ourselves
8240 rm -f ./findhome.java ./findhome.class
8242 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8246 # now check if $JAVA_HOME is really valid
8247 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8248 case "${JAVA_HOME}" in
8249 /Library/Java/JavaVirtualMachines/*)
8252 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8255 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8256 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8257 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8258 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8259 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8260 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8261 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8264 PathFormat "$JAVA_HOME"
8265 JAVA_HOME="$formatted_path"
8268 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8271 AC_MSG_CHECKING([for JAWT lib])
8272 if test "$_os" = WINNT; then
8273 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8278 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8279 JAVA_ARCH=$my_java_arch
8294 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8295 JAVA_ARCH=$my_java_arch
8298 my_java_arch=sparcv9
8304 my_java_arch=$host_cpu
8307 # This is where JDK9 puts the library
8308 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8309 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8311 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8313 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8315 AC_MSG_RESULT([$JAWTLIB])
8319 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8323 JAVAINC="-I$JAVA_HOME/include"
8324 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8325 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8329 JAVAINC="-I$JAVA_HOME/include/win32"
8330 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8334 if test -d "$JAVA_HOME/include/darwin"; then
8335 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8337 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8342 JAVAINC="-I$JAVA_HOME/include"
8343 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8347 JAVAINC="-I$JAVA_HOME/include"
8348 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8349 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8350 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8351 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8355 JAVAINC="-I$JAVA_HOME/include"
8356 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8357 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8361 JAVAINC="-I$JAVA_HOME/include"
8362 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8363 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8367 JAVAINC="-I$JAVA_HOME/include"
8368 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8369 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8373 JAVAINC="-I$JAVA_HOME/include"
8374 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8375 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8379 JAVAINC="-I$JAVA_HOME/include"
8380 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8381 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8385 SOLARINC="$SOLARINC $JAVAINC"
8387 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8388 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8389 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8393 AC_SUBST(JAVACFLAGS)
8394 AC_SUBST(JAVACOMPILER)
8395 AC_SUBST(JAVAINTERPRETER)
8396 AC_SUBST(JAVAIFLAGS)
8397 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8398 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8400 AC_SUBST(JAVA_HOME_FOR_BUILD)
8402 AC_SUBST(JDK_FOR_BUILD)
8403 AC_SUBST(JAVA_SOURCE_VER)
8404 AC_SUBST(JAVA_TARGET_VER)
8407 dnl ===================================================================
8408 dnl Export file validation
8409 dnl ===================================================================
8410 AC_MSG_CHECKING([whether to enable export file validation])
8411 if test "$with_export_validation" != "no"; then
8412 if test -z "$ENABLE_JAVA"; then
8413 if test "$with_export_validation" = "yes"; then
8414 AC_MSG_ERROR([requested, but Java is disabled])
8416 AC_MSG_RESULT([no, as Java is disabled])
8418 elif ! test -d "${SRC_ROOT}/schema"; then
8419 if test "$with_export_validation" = "yes"; then
8420 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8422 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8425 AC_MSG_RESULT([yes])
8426 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8428 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8429 if test -z "$ODFVALIDATOR"; then
8430 # remember to download the ODF toolkit with validator later
8431 AC_MSG_NOTICE([no odfvalidator found, will download it])
8432 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8433 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8435 # and fetch name of odfvalidator jar name from download.lst
8436 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8437 AC_SUBST(ODFVALIDATOR_JAR)
8439 if test -z "$ODFVALIDATOR_JAR"; then
8440 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8443 if test "$build_os" = "cygwin"; then
8444 # In case of Cygwin it will be executed from Windows,
8445 # so we need to run bash and absolute path to validator
8446 # so instead of "odfvalidator" it will be
8447 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8448 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8450 ODFVALIDATOR="sh $ODFVALIDATOR"
8452 AC_SUBST(ODFVALIDATOR)
8455 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8456 if test -z "$OFFICEOTRON"; then
8457 # remember to download the officeotron with validator later
8458 AC_MSG_NOTICE([no officeotron found, will download it])
8459 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8460 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8462 # and fetch name of officeotron jar name from download.lst
8463 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8464 AC_SUBST(OFFICEOTRON_JAR)
8466 if test -z "$OFFICEOTRON_JAR"; then
8467 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8470 # check version of existing officeotron
8471 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8472 if test 0"$OFFICEOTRON_VER" -lt 704; then
8473 AC_MSG_ERROR([officeotron too old])
8476 if test "$build_os" = "cygwin"; then
8477 # In case of Cygwin it will be executed from Windows,
8478 # so we need to run bash and absolute path to validator
8479 # so instead of "odfvalidator" it will be
8480 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8481 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8483 OFFICEOTRON="sh $OFFICEOTRON"
8486 AC_SUBST(OFFICEOTRON)
8491 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8492 if test "$with_bffvalidator" != "no"; then
8493 AC_DEFINE(HAVE_BFFVALIDATOR)
8495 if test "$with_export_validation" = "no"; then
8496 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8499 if test "$with_bffvalidator" = "yes"; then
8500 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8502 BFFVALIDATOR="$with_bffvalidator"
8505 if test "$build_os" = "cygwin"; then
8506 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8507 AC_MSG_RESULT($BFFVALIDATOR)
8509 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8511 elif test -n "$BFFVALIDATOR"; then
8512 # We are not in Cygwin but need to run Windows binary with wine
8513 AC_PATH_PROGS(WINE, wine)
8515 # so swap in a shell wrapper that converts paths transparently
8516 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8517 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8518 AC_SUBST(BFFVALIDATOR_EXE)
8519 AC_MSG_RESULT($BFFVALIDATOR)
8521 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8523 AC_SUBST(BFFVALIDATOR)
8528 dnl ===================================================================
8529 dnl Check for C preprocessor to use
8530 dnl ===================================================================
8531 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8532 if test -n "$with_idlc_cpp"; then
8533 AC_MSG_RESULT([$with_idlc_cpp])
8534 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8536 AC_MSG_RESULT([ucpp])
8537 AC_MSG_CHECKING([which ucpp tp use])
8538 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8539 AC_MSG_RESULT([external])
8540 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8542 AC_MSG_RESULT([internal])
8543 BUILD_TYPE="$BUILD_TYPE UCPP"
8546 AC_SUBST(SYSTEM_UCPP)
8548 dnl ===================================================================
8549 dnl Check for epm (not needed for Windows)
8550 dnl ===================================================================
8551 AC_MSG_CHECKING([whether to enable EPM for packing])
8552 if test "$enable_epm" = "yes"; then
8553 AC_MSG_RESULT([yes])
8554 if test "$_os" != "WINNT"; then
8555 if test $_os = Darwin; then
8557 elif test -n "$with_epm"; then
8560 AC_PATH_PROG(EPM, epm, no)
8562 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8563 AC_MSG_NOTICE([EPM will be built.])
8564 BUILD_TYPE="$BUILD_TYPE EPM"
8565 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8567 # Gentoo has some epm which is something different...
8568 AC_MSG_CHECKING([whether the found epm is the right epm])
8569 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8570 AC_MSG_RESULT([yes])
8572 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8574 AC_MSG_CHECKING([epm version])
8575 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8576 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8577 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8578 AC_MSG_RESULT([OK, >= 3.7])
8580 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8581 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8586 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8587 AC_MSG_CHECKING([for rpm])
8588 for a in "$RPM" rpmbuild rpm; do
8589 $a --usage >/dev/null 2> /dev/null
8590 if test $? -eq 0; then
8594 $a --version >/dev/null 2> /dev/null
8595 if test $? -eq 0; then
8601 if test -z "$RPM"; then
8602 AC_MSG_ERROR([not found])
8603 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8604 RPM_PATH=`which $RPM`
8605 AC_MSG_RESULT([$RPM_PATH])
8606 SCPDEFS="$SCPDEFS -DWITH_RPM"
8608 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8611 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8612 AC_PATH_PROG(DPKG, dpkg, no)
8613 if test "$DPKG" = "no"; then
8614 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8617 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8618 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8619 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8620 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8621 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8622 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8623 AC_MSG_RESULT([yes])
8626 if echo "$PKGFORMAT" | $GREP -q rpm; then
8628 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8629 add_warning "the rpms will need to be installed with --nodeps"
8633 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8634 add_warning "the ${_pt}s will not be relocatable"
8635 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8636 relocation will work, you need to patch your epm with the
8637 patch in epm/epm-3.7.patch or build with
8638 --with-epm=internal which will build a suitable epm])
8643 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8644 AC_PATH_PROG(PKGMK, pkgmk, no)
8645 if test "$PKGMK" = "no"; then
8646 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8653 for i in $PKGFORMAT; do
8655 aix | bsd | deb | pkg | rpm | native | portable)
8657 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8667 if test "$enable_lotuswordpro" = "yes"; then
8670 AC_SUBST(ENABLE_LWP)
8672 dnl ===================================================================
8673 dnl Check for building ODK
8674 dnl ===================================================================
8675 if test "$enable_odk" = no; then
8678 if test "$with_doxygen" = no; then
8679 AC_MSG_CHECKING([for doxygen])
8683 if test "$with_doxygen" = yes; then
8684 AC_PATH_PROG([DOXYGEN], [doxygen])
8685 if test -z "$DOXYGEN"; then
8686 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8688 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8689 if ! dot -V 2>/dev/null; then
8690 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8694 AC_MSG_CHECKING([for doxygen])
8695 DOXYGEN=$with_doxygen
8696 AC_MSG_RESULT([$DOXYGEN])
8698 if test -n "$DOXYGEN"; then
8699 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8700 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8701 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8702 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8709 AC_MSG_CHECKING([whether to build the ODK])
8710 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8711 AC_MSG_RESULT([yes])
8712 BUILD_TYPE="$BUILD_TYPE ODK"
8717 dnl ===================================================================
8718 dnl Check for system zlib
8719 dnl ===================================================================
8720 if test "$with_system_zlib" = "auto"; then
8723 with_system_zlib="$with_system_libs"
8726 if test "$enable_fuzzers" != "yes"; then
8727 with_system_zlib=yes
8735 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8736 dnl and has no pkg-config for it at least on some tinderboxes,
8737 dnl so leaving that out for now
8738 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8739 AC_MSG_CHECKING([which zlib to use])
8740 if test "$with_system_zlib" = "yes"; then
8741 AC_MSG_RESULT([external])
8743 AC_CHECK_HEADER(zlib.h, [],
8744 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8745 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8746 [AC_MSG_ERROR(zlib not found or functional)], [])
8748 AC_MSG_RESULT([internal])
8750 BUILD_TYPE="$BUILD_TYPE ZLIB"
8751 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8752 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8754 AC_SUBST(ZLIB_CFLAGS)
8756 AC_SUBST(SYSTEM_ZLIB)
8758 dnl ===================================================================
8759 dnl Check for system jpeg
8760 dnl ===================================================================
8761 AC_MSG_CHECKING([which libjpeg to use])
8762 if test "$with_system_jpeg" = "yes"; then
8763 AC_MSG_RESULT([external])
8765 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8766 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8767 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8768 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8771 AC_MSG_RESULT([internal, libjpeg-turbo])
8772 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8773 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8774 if test "$COM" = "MSC"; then
8775 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8777 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8781 x86_64 | amd64 | i*86 | x86 | ia32)
8782 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8783 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8784 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8785 NASM="$LODE_HOME/opt/bin/nasm"
8786 elif test -x "/opt/lo/bin/nasm"; then
8787 NASM="/opt/lo/bin/nasm"
8791 if test -n "$NASM"; then
8792 AC_MSG_CHECKING([for object file format of host system])
8794 cygwin* | mingw* | pw32* | wsl*)
8804 msdosdjgpp* | go32*)
8807 os2-emx*) # not tested
8808 objfmt='MSOMF' # obj
8810 linux*coff* | linux*oldld*)
8826 kfreebsd* | freebsd* | netbsd* | openbsd*)
8827 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8840 solaris* | sunos* | sysv* | sco*)
8850 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8865 AC_MSG_RESULT([$objfmt])
8866 if test "$objfmt" = 'ELF ?'; then
8868 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8871 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8873 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8874 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8875 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8876 COFF) NAFLAGS='-fcoff -DCOFF';;
8877 a.out) NAFLAGS='-faout -DAOUT';;
8878 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8879 ELF) NAFLAGS='-felf -DELF';;
8880 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8881 RDF) NAFLAGS='-frdf -DRDF';;
8882 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8883 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8885 AC_MSG_RESULT([$NAFLAGS])
8887 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8888 cat > conftest.asm << EOF
8889 [%line __oline__ "configure"
8897 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8898 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8901 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8902 cat conftest.asm >&AS_MESSAGE_LOG_FD
8905 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8911 if test -z "$NASM"; then
8913 ****************************************************************************
8914 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8918 if test "$build_os" = "cygwin"; then
8920 install a pre-compiled binary for Win32
8922 mkdir -p /opt/lo/bin
8924 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8927 or get and install one from http://www.nasm.us/
8929 Then re-run autogen.sh
8931 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8932 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8937 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8941 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8942 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8949 AC_SUBST(LIBJPEG_CFLAGS)
8950 AC_SUBST(LIBJPEG_LIBS)
8951 AC_SUBST(SYSTEM_LIBJPEG)
8953 dnl ===================================================================
8954 dnl Check for system clucene
8955 dnl ===================================================================
8956 dnl we should rather be using
8957 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8958 dnl but the contribs-lib check seems tricky
8959 AC_MSG_CHECKING([which clucene to use])
8960 if test "$with_system_clucene" = "yes"; then
8961 AC_MSG_RESULT([external])
8963 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8964 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8965 FilterLibs "${CLUCENE_LIBS}"
8966 CLUCENE_LIBS="${filteredlibs}"
8968 save_CXXFLAGS=$CXXFLAGS
8969 save_CPPFLAGS=$CPPFLAGS
8970 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8971 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8972 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8973 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8974 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8975 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8976 CXXFLAGS=$save_CXXFLAGS
8977 CPPFLAGS=$save_CPPFLAGS
8980 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8982 AC_MSG_RESULT([internal])
8984 BUILD_TYPE="$BUILD_TYPE CLUCENE"
8986 AC_SUBST(SYSTEM_CLUCENE)
8987 AC_SUBST(CLUCENE_CFLAGS)
8988 AC_SUBST(CLUCENE_LIBS)
8990 dnl ===================================================================
8991 dnl Check for system expat
8992 dnl ===================================================================
8993 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8995 dnl ===================================================================
8996 dnl Check for system xmlsec
8997 dnl ===================================================================
8998 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9000 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9001 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9003 AC_DEFINE([ENABLE_EOT])
9004 AC_MSG_RESULT([yes])
9006 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9011 AC_SUBST([ENABLE_EOT])
9013 dnl ===================================================================
9014 dnl Check for DLP libs
9015 dnl ===================================================================
9016 AS_IF([test "$COM" = "MSC"],
9017 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9018 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9020 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9022 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9024 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9026 AS_IF([test "$COM" = "MSC"],
9027 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9028 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9030 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9032 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9034 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9035 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9037 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9039 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9041 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9043 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9044 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9046 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9047 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9049 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9051 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9052 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9054 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9056 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9058 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9060 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9062 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9063 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9065 dnl ===================================================================
9066 dnl Check for system lcms2
9067 dnl ===================================================================
9068 if test "$with_system_lcms2" != "yes"; then
9071 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9072 if test "$GCC" = "yes"; then
9073 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9075 if test "$COM" = "MSC"; then # override the above
9076 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9079 dnl ===================================================================
9080 dnl Check for system cppunit
9081 dnl ===================================================================
9082 if test "$_os" != "Android" ; then
9083 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9086 dnl ===================================================================
9087 dnl Check whether freetype is available
9088 dnl ===================================================================
9089 if test "$test_freetype" = "yes"; then
9090 AC_MSG_CHECKING([whether freetype is available])
9091 # FreeType has 3 different kinds of versions
9092 # * release, like 2.4.10
9093 # * libtool, like 13.0.7 (this what pkg-config returns)
9095 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9098 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9099 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9100 FilterLibs "${FREETYPE_LIBS}"
9101 FREETYPE_LIBS="${filteredlibs}"
9102 SYSTEM_FREETYPE=TRUE
9104 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9105 if test "x$ac_config_site_64bit_host" = xYES; then
9106 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9108 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9111 AC_SUBST(FREETYPE_CFLAGS)
9112 AC_SUBST(FREETYPE_LIBS)
9113 AC_SUBST([SYSTEM_FREETYPE])
9115 # ===================================================================
9116 # Check for system libxslt
9117 # to prevent incompatibilities between internal libxml2 and external libxslt,
9118 # or vice versa, use with_system_libxml here
9119 # ===================================================================
9120 if test "$with_system_libxml" = "auto"; then
9123 with_system_libxml="$with_system_libs"
9126 if test "$enable_fuzzers" != "yes"; then
9127 with_system_libxml=yes
9129 with_system_libxml=no
9135 AC_MSG_CHECKING([which libxslt to use])
9136 if test "$with_system_libxml" = "yes"; then
9137 AC_MSG_RESULT([external])
9139 if test "$_os" = "Darwin"; then
9140 dnl make sure to use SDK path
9141 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9142 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9144 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9145 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9147 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9148 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9149 FilterLibs "${LIBXSLT_LIBS}"
9150 LIBXSLT_LIBS="${filteredlibs}"
9151 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9152 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9153 FilterLibs "${LIBEXSLT_LIBS}"
9154 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9157 dnl Check for xsltproc
9158 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9159 if test "$XSLTPROC" = "no"; then
9160 AC_MSG_ERROR([xsltproc is required])
9163 AC_MSG_RESULT([internal])
9165 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9167 AC_SUBST(SYSTEM_LIBXSLT)
9168 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9169 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9171 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9173 AC_SUBST(LIBEXSLT_CFLAGS)
9174 AC_SUBST(LIBEXSLT_LIBS)
9175 AC_SUBST(LIBXSLT_CFLAGS)
9176 AC_SUBST(LIBXSLT_LIBS)
9179 # ===================================================================
9180 # Check for system libxml
9181 # ===================================================================
9182 AC_MSG_CHECKING([which libxml to use])
9183 if test "$with_system_libxml" = "yes"; then
9184 AC_MSG_RESULT([external])
9186 if test "$_os" = "Darwin"; then
9187 dnl make sure to use SDK path
9188 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9190 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9191 elif test $_os = iOS; then
9192 dnl make sure to use SDK path
9193 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9194 LIBXML_CFLAGS="-I$usr/include/libxml2"
9195 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9197 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9198 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9199 FilterLibs "${LIBXML_LIBS}"
9200 LIBXML_LIBS="${filteredlibs}"
9203 dnl Check for xmllint
9204 AC_PATH_PROG(XMLLINT, xmllint, no)
9205 if test "$XMLLINT" = "no"; then
9206 AC_MSG_ERROR([xmllint is required])
9209 AC_MSG_RESULT([internal])
9211 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9212 if test "$COM" = "MSC"; then
9213 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9215 if test "$COM" = "MSC"; then
9216 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9218 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9219 if test "$_os" = Android; then
9220 LIBXML_LIBS="$LIBXML_LIBS -lm"
9223 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9225 AC_SUBST(SYSTEM_LIBXML)
9226 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9227 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9229 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9230 AC_SUBST(LIBXML_CFLAGS)
9231 AC_SUBST(LIBXML_LIBS)
9234 # =====================================================================
9235 # Checking for a Python interpreter with version >= 3.3.
9236 # Optionally user can pass an option to configure, i. e.
9237 # ./configure PYTHON=/usr/bin/python
9238 # =====================================================================
9239 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9240 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9241 enable_python=internal
9243 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9244 if test -n "$PYTHON"; then
9245 PYTHON_FOR_BUILD=$PYTHON
9247 # This allows a lack of system python with no error, we use internal one in that case.
9248 AM_PATH_PYTHON([3.3],, [:])
9249 # Clean PYTHON_VERSION checked below if cross-compiling
9251 if test "$PYTHON" != ":"; then
9252 PYTHON_FOR_BUILD=$PYTHON
9256 AC_SUBST(PYTHON_FOR_BUILD)
9258 # Checks for Python to use for Pyuno
9259 AC_MSG_CHECKING([which Python to use for Pyuno])
9260 case "$enable_python" in
9262 if test -z $PYTHON_FOR_BUILD; then
9263 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9264 # requirement from the choice whether to include Python stuff in the installer, but why
9266 AC_MSG_ERROR([Python is required at build time.])
9269 AC_MSG_RESULT([none])
9272 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9273 AC_MSG_RESULT([no, overridden by --disable-scripting])
9275 elif test $build_os = cygwin; then
9276 dnl When building on Windows we don't attempt to use any installed
9277 dnl "system" Python.
9278 AC_MSG_RESULT([fully internal])
9279 enable_python=internal
9280 elif test "$cross_compiling" = yes; then
9281 AC_MSG_RESULT([system])
9282 enable_python=system
9284 # Unset variables set by the above AM_PATH_PYTHON so that
9285 # we actually do check anew.
9287 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
9288 AM_PATH_PYTHON([3.3],, [:])
9289 AC_MSG_CHECKING([which Python to use for Pyuno])
9290 if test "$PYTHON" = ":"; then
9291 if test -z "$PYTHON_FOR_BUILD"; then
9292 AC_MSG_RESULT([fully internal])
9294 AC_MSG_RESULT([internal])
9296 enable_python=internal
9298 AC_MSG_RESULT([system])
9299 enable_python=system
9304 AC_MSG_RESULT([internal])
9307 AC_MSG_RESULT([fully internal])
9308 enable_python=internal
9311 AC_MSG_RESULT([system])
9312 if test "$_os" = Darwin; then
9313 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9317 AC_MSG_ERROR([Incorrect --enable-python option])
9321 if test $enable_python != no; then
9322 BUILD_TYPE="$BUILD_TYPE PYUNO"
9325 if test $enable_python = system; then
9326 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9327 # Fallback: Accept these in the environment, or as set above
9330 elif test "$cross_compiling" != yes; then
9331 # Unset variables set by the above AM_PATH_PYTHON so that
9332 # we actually do check anew.
9333 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
9334 # This causes an error if no python command is found
9335 AM_PATH_PYTHON([3.3])
9336 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9337 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9338 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9339 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9340 if test -z "$PKG_CONFIG"; then
9341 PYTHON_CFLAGS="-I$python_include"
9342 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9343 elif $PKG_CONFIG --exists python-$python_version-embed; then
9344 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9345 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9346 elif $PKG_CONFIG --exists python-$python_version; then
9347 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9348 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9350 PYTHON_CFLAGS="-I$python_include"
9351 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9353 FilterLibs "${PYTHON_LIBS}"
9354 PYTHON_LIBS="${filteredlibs}"
9356 dnl How to find out the cross-compilation Python installation path?
9357 AC_MSG_CHECKING([for python version])
9358 AS_IF([test -n "$PYTHON_VERSION"],
9359 [AC_MSG_RESULT([$PYTHON_VERSION])],
9360 [AC_MSG_RESULT([not found])
9361 AC_MSG_ERROR([no usable python found])])
9362 test -n "$PYTHON_CFLAGS" && break
9365 dnl Check if the headers really work
9366 save_CPPFLAGS="$CPPFLAGS"
9367 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9368 AC_CHECK_HEADER(Python.h)
9369 CPPFLAGS="$save_CPPFLAGS"
9371 # let the PYTHON_FOR_BUILD match the same python installation that
9372 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9373 # better for PythonTests.
9374 PYTHON_FOR_BUILD=$PYTHON
9377 if test "$with_lxml" != no; then
9378 if test -z "$PYTHON_FOR_BUILD"; then
9381 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9384 if test "$cross_compiling" != yes ; then
9385 BUILD_TYPE="$BUILD_TYPE LXML"
9390 AC_MSG_CHECKING([for python lxml])
9391 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9392 AC_MSG_RESULT([yes])
9396 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9399 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9400 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9401 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9403 BUILD_TYPE="$BUILD_TYPE LXML"
9404 AC_MSG_RESULT([no, using internal lxml])
9407 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9415 dnl By now enable_python should be "system", "internal" or "no"
9416 case $enable_python in
9420 if test "x$ac_cv_header_Python_h" != "xyes"; then
9421 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9425 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9426 AC_MSG_CHECKING([for correct python library version])
9427 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9430 int main(int argc, char **argv) {
9431 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9434 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9437 dnl FIXME Check if the Python library can be linked with, too?
9442 PYTHON_VERSION_MAJOR=3
9443 PYTHON_VERSION_MINOR=8
9444 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9445 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9446 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9448 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9449 BUILD_TYPE="$BUILD_TYPE PYTHON"
9450 if test "$OS" = LINUX -o "$OS" = WNT ; then
9451 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9453 # Embedded Python dies without Home set
9454 if test "$HOME" = ""; then
9463 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9467 AC_SUBST(DISABLE_PYTHON)
9468 AC_SUBST(SYSTEM_PYTHON)
9469 AC_SUBST(PYTHON_CFLAGS)
9470 AC_SUBST(PYTHON_LIBS)
9471 AC_SUBST(PYTHON_VERSION)
9472 AC_SUBST(PYTHON_VERSION_MAJOR)
9473 AC_SUBST(PYTHON_VERSION_MINOR)
9479 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9480 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9481 ENABLE_MARIADBC=TRUE
9482 AC_MSG_RESULT([yes])
9483 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9487 AC_SUBST(ENABLE_MARIADBC)
9488 AC_SUBST(MARIADBC_MAJOR)
9489 AC_SUBST(MARIADBC_MINOR)
9490 AC_SUBST(MARIADBC_MICRO)
9492 if test "$ENABLE_MARIADBC" = "TRUE"; then
9493 dnl ===================================================================
9494 dnl Check for system MariaDB
9495 dnl ===================================================================
9496 AC_MSG_CHECKING([which MariaDB to use])
9497 if test "$with_system_mariadb" = "yes"; then
9498 AC_MSG_RESULT([external])
9499 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9500 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9501 if test -z "$MARIADBCONFIG"; then
9502 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9503 if test -z "$MARIADBCONFIG"; then
9504 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9505 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9508 AC_MSG_CHECKING([MariaDB version])
9509 MARIADB_VERSION=`$MARIADBCONFIG --version`
9510 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9511 if test "$MARIADB_MAJOR" -ge "5"; then
9514 AC_MSG_ERROR([too old, use 5.0.x or later])
9516 AC_MSG_CHECKING([for MariaDB Client library])
9517 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9518 if test "$COM_IS_CLANG" = TRUE; then
9519 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9521 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9522 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9523 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9525 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9526 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9527 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9528 | sed -e 's|/lib64/|/lib/|')
9530 FilterLibs "${MARIADB_LIBS}"
9531 MARIADB_LIBS="${filteredlibs}"
9532 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9533 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9534 if test "$enable_bundle_mariadb" = "yes"; then
9535 AC_MSG_RESULT([yes])
9536 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9537 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9539 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9541 /g' | grep -E '(mysqlclient|mariadb)')
9542 if test "$_os" = "Darwin"; then
9543 LIBMARIADB=${LIBMARIADB}.dylib
9544 elif test "$_os" = "WINNT"; then
9545 LIBMARIADB=${LIBMARIADB}.dll
9547 LIBMARIADB=${LIBMARIADB}.so
9549 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9550 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9551 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9552 AC_MSG_RESULT([found.])
9553 PathFormat "$LIBMARIADB_PATH"
9554 LIBMARIADB_PATH="$formatted_path"
9556 AC_MSG_ERROR([not found.])
9560 BUNDLE_MARIADB_CONNECTOR_C=
9563 AC_MSG_RESULT([internal])
9564 SYSTEM_MARIADB_CONNECTOR_C=
9565 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9566 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9567 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9570 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9571 AC_SUBST(MARIADB_CFLAGS)
9572 AC_SUBST(MARIADB_LIBS)
9573 AC_SUBST(LIBMARIADB)
9574 AC_SUBST(LIBMARIADB_PATH)
9575 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9578 dnl ===================================================================
9579 dnl Check for system hsqldb
9580 dnl ===================================================================
9581 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9582 HSQLDB_USE_JDBC_4_1=
9583 AC_MSG_CHECKING([which hsqldb to use])
9584 if test "$with_system_hsqldb" = "yes"; then
9585 AC_MSG_RESULT([external])
9587 if test -z $HSQLDB_JAR; then
9588 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9590 if ! test -f $HSQLDB_JAR; then
9591 AC_MSG_ERROR(hsqldb.jar not found.)
9593 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9597 my $file = "$ENV{'HSQLDB_JAR'}";
9598 my $zip = Archive::Zip->new( $file );
9599 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9600 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9602 push @l, split(/\n/, $mf);
9603 foreach my $line (@l)
9605 if ($line =~ m/Specification-Version:/)
9607 ($t, $version) = split (/:/,$line);
9608 $version =~ s/^\s//;
9609 ($a, $b, $c, $d) = split (/\./,$version);
9610 if ($c == "0" && $d > "8")
9625 AC_MSG_RESULT([yes])
9627 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9630 AC_MSG_RESULT([internal])
9632 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9634 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9635 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9636 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9637 AC_MSG_RESULT([yes])
9638 HSQLDB_USE_JDBC_4_1=TRUE
9644 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9645 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9648 AC_SUBST(SYSTEM_HSQLDB)
9649 AC_SUBST(HSQLDB_JAR)
9650 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9652 dnl ===================================================================
9653 dnl Check for PostgreSQL stuff
9654 dnl ===================================================================
9655 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9656 if test "x$enable_postgresql_sdbc" != "xno"; then
9657 AC_MSG_RESULT([yes])
9658 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9660 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9661 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9663 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9664 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9667 postgres_interface=""
9668 if test "$with_system_postgresql" = "yes"; then
9669 postgres_interface="external PostgreSQL"
9670 SYSTEM_POSTGRESQL=TRUE
9671 if test "$_os" = Darwin; then
9673 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9674 pg_supp_path="$P_SEP$d$pg_supp_path"
9677 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9678 if test -n "$PGCONFIG"; then
9679 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9680 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9682 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9683 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9684 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9686 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9689 FilterLibs "${POSTGRESQL_LIB}"
9690 POSTGRESQL_LIB="${filteredlibs}"
9692 # if/when anything else than PostgreSQL uses Kerberos,
9693 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9698 # macOS has system MIT Kerberos 5 since 10.4
9699 if test "$with_krb5" != "no"; then
9702 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9703 # that the libraries where these functions are located on macOS will change, is it?
9704 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9705 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9708 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9709 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9710 KRB5_LIBS="$KRB5_LIBS $LIBS"
9713 if test "$with_gssapi" != "no"; then
9716 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9717 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9723 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9724 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9727 Linux|GNU|*BSD|DragonFly)
9728 if test "$with_krb5" != "no"; then
9731 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9732 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9735 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9736 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9737 KRB5_LIBS="$KRB5_LIBS $LIBS"
9740 if test "$with_gssapi" != "no"; then
9743 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9744 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9750 if test "$with_krb5" = "yes"; then
9753 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9754 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9757 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9758 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9759 KRB5_LIBS="$KRB5_LIBS $LIBS"
9762 if test "$with_gssapi" = "yes"; then
9765 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9766 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9772 if test -n "$with_libpq_path"; then
9773 SYSTEM_POSTGRESQL=TRUE
9774 postgres_interface="external libpq"
9775 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9776 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9779 postgres_interface="internal"
9781 POSTGRESQL_INC="%OVERRIDE_ME%"
9782 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9786 AC_MSG_CHECKING([PostgreSQL C interface])
9787 AC_MSG_RESULT([$postgres_interface])
9789 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9790 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9792 save_CPPFLAGS=$CPPFLAGS
9794 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9795 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9796 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9797 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9798 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9800 CPPFLAGS=$save_CPPFLAGS
9803 BUILD_POSTGRESQL_SDBC=TRUE
9808 AC_SUBST(WITH_GSSAPI)
9809 AC_SUBST(GSSAPI_LIBS)
9811 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9812 AC_SUBST(SYSTEM_POSTGRESQL)
9813 AC_SUBST(POSTGRESQL_INC)
9814 AC_SUBST(POSTGRESQL_LIB)
9816 dnl ===================================================================
9817 dnl Check for Firebird stuff
9818 dnl ===================================================================
9819 ENABLE_FIREBIRD_SDBC=
9820 if test "$enable_firebird_sdbc" = "yes" ; then
9821 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9823 dnl ===================================================================
9824 dnl Check for system Firebird
9825 dnl ===================================================================
9826 AC_MSG_CHECKING([which Firebird to use])
9827 if test "$with_system_firebird" = "yes"; then
9828 AC_MSG_RESULT([external])
9829 SYSTEM_FIREBIRD=TRUE
9830 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9831 if test -z "$FIREBIRDCONFIG"; then
9832 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9833 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9834 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9836 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9838 AC_MSG_NOTICE([fb_config found])
9839 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9840 AC_MSG_CHECKING([for Firebird Client library])
9841 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9842 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9843 FilterLibs "${FIREBIRD_LIBS}"
9844 FIREBIRD_LIBS="${filteredlibs}"
9846 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9847 AC_MSG_CHECKING([Firebird version])
9848 if test -n "${FIREBIRD_VERSION}"; then
9849 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9850 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9851 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9854 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9857 save_CFLAGS="${CFLAGS}"
9858 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9859 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9860 #if defined(FB_API_VER) && FB_API_VER == 30
9861 int fb_api_is_30(void) { return 0; }
9863 #error "Wrong Firebird API version"
9864 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9865 CFLAGS="$save_CFLAGS"
9867 ENABLE_FIREBIRD_SDBC=TRUE
9868 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9869 elif test "$enable_database_connectivity" != yes; then
9870 AC_MSG_RESULT([none])
9871 elif test "$cross_compiling" = "yes"; then
9872 AC_MSG_RESULT([none])
9874 dnl Embedded Firebird has version 3.0
9875 AC_DEFINE(HAVE_FIREBIRD_30, 1)
9876 dnl We need libatomic_ops for any non X86/X64 system
9877 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9878 dnl ===================================================================
9879 dnl Check for system libatomic_ops
9880 dnl ===================================================================
9881 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9882 if test "$with_system_libatomic_ops" = "yes"; then
9883 SYSTEM_LIBATOMIC_OPS=TRUE
9884 AC_CHECK_HEADERS(atomic_ops.h, [],
9885 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9887 SYSTEM_LIBATOMIC_OPS=
9888 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9889 LIBATOMIC_OPS_LIBS="-latomic_ops"
9890 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9894 AC_MSG_RESULT([internal])
9896 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9897 FIREBIRD_LIBS="-lfbclient"
9899 if test "$with_system_libtommath" = "yes"; then
9900 SYSTEM_LIBTOMMATH=TRUE
9901 dnl check for tommath presence
9903 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9904 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9908 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9909 LIBTOMMATH_LIBS="-ltommath"
9910 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9913 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9914 ENABLE_FIREBIRD_SDBC=TRUE
9915 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9918 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9919 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9920 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9921 AC_SUBST(LIBATOMIC_OPS_LIBS)
9922 AC_SUBST(SYSTEM_FIREBIRD)
9923 AC_SUBST(FIREBIRD_CFLAGS)
9924 AC_SUBST(FIREBIRD_LIBS)
9925 AC_SUBST(SYSTEM_LIBTOMMATH)
9926 AC_SUBST(LIBTOMMATH_CFLAGS)
9927 AC_SUBST(LIBTOMMATH_LIBS)
9929 dnl ===================================================================
9930 dnl Check for system curl
9931 dnl ===================================================================
9932 AC_MSG_CHECKING([which libcurl to use])
9933 if test "$with_system_curl" = "auto"; then
9934 with_system_curl="$with_system_libs"
9937 if test "$with_system_curl" = "yes"; then
9938 AC_MSG_RESULT([external])
9941 # First try PKGCONFIG and then fall back
9942 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9944 if test -n "$CURL_PKG_ERRORS"; then
9945 AC_PATH_PROG(CURLCONFIG, curl-config)
9946 if test -z "$CURLCONFIG"; then
9947 AC_MSG_ERROR([curl development files not found])
9949 CURL_LIBS=`$CURLCONFIG --libs`
9950 FilterLibs "${CURL_LIBS}"
9951 CURL_LIBS="${filteredlibs}"
9952 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9953 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9955 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9956 case $curl_version in
9957 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9958 dnl so they need to be doubled to end up in the configure script
9959 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9960 AC_MSG_RESULT([yes])
9963 AC_MSG_ERROR([no, you have $curl_version])
9970 AC_MSG_RESULT([internal])
9972 BUILD_TYPE="$BUILD_TYPE CURL"
9975 AC_SUBST(SYSTEM_CURL)
9976 AC_SUBST(CURL_CFLAGS)
9978 AC_SUBST(ENABLE_CURL)
9980 dnl ===================================================================
9981 dnl Check for system boost
9982 dnl ===================================================================
9983 AC_MSG_CHECKING([which boost to use])
9984 if test "$with_system_boost" = "yes"; then
9985 AC_MSG_RESULT([external])
9987 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
9993 save_CXXFLAGS=$CXXFLAGS
9994 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
9995 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
9996 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
9997 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
9998 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
9999 CXXFLAGS=$save_CXXFLAGS
10001 # this is in m4/ax_boost_base.m4
10002 FilterLibs "${BOOST_LDFLAGS}"
10003 BOOST_LDFLAGS="${filteredlibs}"
10005 AC_MSG_RESULT([internal])
10006 BUILD_TYPE="$BUILD_TYPE BOOST"
10008 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10009 # use warning-suppressing wrapper headers
10010 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10012 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10015 AC_SUBST(SYSTEM_BOOST)
10017 dnl ===================================================================
10018 dnl Check for system mdds
10019 dnl ===================================================================
10020 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10022 dnl ===================================================================
10023 dnl Check for system glm
10024 dnl ===================================================================
10025 AC_MSG_CHECKING([which glm to use])
10026 if test "$with_system_glm" = "yes"; then
10027 AC_MSG_RESULT([external])
10029 AC_LANG_PUSH([C++])
10030 AC_CHECK_HEADER([glm/glm.hpp], [],
10031 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10034 AC_MSG_RESULT([internal])
10035 BUILD_TYPE="$BUILD_TYPE GLM"
10037 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10039 AC_SUBST([GLM_CFLAGS])
10040 AC_SUBST([SYSTEM_GLM])
10042 dnl ===================================================================
10043 dnl Check for system odbc
10044 dnl ===================================================================
10045 AC_MSG_CHECKING([which odbc headers to use])
10046 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
10047 AC_MSG_RESULT([external])
10048 SYSTEM_ODBC_HEADERS=TRUE
10050 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10051 save_CPPFLAGS=$CPPFLAGS
10053 PathFormat "$winsdktest"
10054 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"
10055 AC_CHECK_HEADER(sqlext.h, [],
10056 [AC_MSG_ERROR(odbc not found. install odbc)],
10057 [#include <windows.h>])
10058 CPPFLAGS=$save_CPPFLAGS
10060 AC_CHECK_HEADER(sqlext.h, [],
10061 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10063 elif test "$enable_database_connectivity" != yes; then
10064 AC_MSG_RESULT([none])
10066 AC_MSG_RESULT([internal])
10067 SYSTEM_ODBC_HEADERS=
10069 AC_SUBST(SYSTEM_ODBC_HEADERS)
10071 dnl ===================================================================
10072 dnl Enable LDAP support
10073 dnl ===================================================================
10075 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10076 AC_MSG_CHECKING([whether to enable LDAP support])
10077 if test "$enable_ldap" != "yes"; then
10078 AC_MSG_RESULT([no])
10082 AC_MSG_RESULT([yes])
10086 AC_SUBST(ENABLE_LDAP)
10088 dnl ===================================================================
10089 dnl Check for system openldap
10090 dnl ===================================================================
10092 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10093 AC_MSG_CHECKING([which openldap library to use])
10094 if test "$with_system_openldap" = "yes"; then
10095 AC_MSG_RESULT([external])
10096 SYSTEM_OPENLDAP=TRUE
10097 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10098 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10099 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10101 AC_MSG_RESULT([internal])
10103 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10106 AC_SUBST(SYSTEM_OPENLDAP)
10108 dnl ===================================================================
10109 dnl Check for system NSS
10110 dnl ===================================================================
10111 if test "$enable_fuzzers" != "yes"; then
10112 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10113 AC_DEFINE(HAVE_FEATURE_NSS)
10115 AC_DEFINE(ENABLE_NSS)
10116 elif test $_os != iOS ; then
10119 AC_SUBST(ENABLE_NSS)
10121 dnl ===================================================================
10122 dnl Check for TLS/SSL and cryptographic implementation to use
10123 dnl ===================================================================
10124 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10125 if test -n "$with_tls"; then
10128 AC_DEFINE(USE_TLS_OPENSSL)
10130 AC_MSG_RESULT([$TLS])
10132 if test "$enable_openssl" != "yes"; then
10133 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10136 # warn that OpenSSL has been selected but not all TLS code has this option
10137 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10138 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10141 AC_DEFINE(USE_TLS_NSS)
10143 AC_MSG_RESULT([$TLS])
10146 AC_MSG_RESULT([none])
10147 AC_MSG_WARN([Skipping TLS/SSL])
10151 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10153 nss - Mozilla's Network Security Services (NSS)
10158 # default to using NSS, it results in smaller oox lib
10159 AC_DEFINE(USE_TLS_NSS)
10161 AC_MSG_RESULT([$TLS])
10165 dnl ===================================================================
10166 dnl Check for system sane
10167 dnl ===================================================================
10168 AC_MSG_CHECKING([which sane header to use])
10169 if test "$with_system_sane" = "yes"; then
10170 AC_MSG_RESULT([external])
10171 AC_CHECK_HEADER(sane/sane.h, [],
10172 [AC_MSG_ERROR(sane not found. install sane)], [])
10174 AC_MSG_RESULT([internal])
10175 BUILD_TYPE="$BUILD_TYPE SANE"
10178 dnl ===================================================================
10179 dnl Check for system icu
10180 dnl ===================================================================
10187 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10188 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10189 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10190 AC_MSG_CHECKING([which icu to use])
10191 if test "$with_system_icu" = "yes"; then
10192 AC_MSG_RESULT([external])
10194 AC_LANG_PUSH([C++])
10195 AC_MSG_CHECKING([for unicode/rbbi.h])
10196 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10199 if test "$cross_compiling" != "yes"; then
10200 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10201 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10202 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10203 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10206 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10207 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10208 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10209 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10210 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10211 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10212 AC_MSG_RESULT([yes])
10214 AC_MSG_RESULT([no])
10215 if test "$with_system_icu_for_build" != "force"; then
10216 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10217 You can use --with-system-icu-for-build=force to use it anyway.])
10222 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10223 # using the system icu tools can lead to version confusion, use the
10224 # ones from the build environment when cross-compiling
10225 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10226 if test -z "$SYSTEM_GENBRK"; then
10227 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10229 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10230 if test -z "$SYSTEM_GENCCODE"; then
10231 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10233 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10234 if test -z "$SYSTEM_GENCMN"; then
10235 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10237 if test "$ICU_MAJOR" -ge "49"; then
10238 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10239 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10240 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10242 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10243 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10244 ICU_RECLASSIFIED_HEBREW_LETTER=
10248 if test "$cross_compiling" = "yes"; then
10249 if test "$ICU_MAJOR" -ge "50"; then
10250 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10255 AC_MSG_RESULT([internal])
10257 BUILD_TYPE="$BUILD_TYPE ICU"
10258 # surprisingly set these only for "internal" (to be used by various other
10259 # external libs): the system icu-config is quite unhelpful and spits out
10260 # dozens of weird flags and also default path -I/usr/include
10261 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10262 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10264 if test "$ICU_MAJOR" -ge "59"; then
10265 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10266 # with -std=c++11 but not all external libraries can be built with that,
10267 # for those use a bit-compatible typedef uint16_t UChar; see
10268 # icu/source/common/unicode/umachine.h
10269 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10273 AC_SUBST(SYSTEM_ICU)
10274 AC_SUBST(SYSTEM_GENBRK)
10275 AC_SUBST(SYSTEM_GENCCODE)
10276 AC_SUBST(SYSTEM_GENCMN)
10277 AC_SUBST(ICU_MAJOR)
10278 AC_SUBST(ICU_MINOR)
10279 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10280 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10281 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10282 AC_SUBST(ICU_CFLAGS)
10284 AC_SUBST(ICU_UCHAR_TYPE)
10286 dnl ==================================================================
10288 dnl ==================================================================
10289 DEFAULT_CRASHDUMP_VALUE="true"
10290 AC_MSG_CHECKING([whether to enable breakpad])
10291 if test "$enable_breakpad" != yes; then
10292 AC_MSG_RESULT([no])
10294 AC_MSG_RESULT([yes])
10295 ENABLE_BREAKPAD="TRUE"
10296 AC_DEFINE(ENABLE_BREAKPAD)
10297 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10298 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10300 AC_MSG_CHECKING([for disable crash dump])
10301 if test "$enable_crashdump" = no; then
10302 DEFAULT_CRASHDUMP_VALUE="false"
10303 AC_MSG_RESULT([yes])
10305 AC_MSG_RESULT([no])
10308 AC_MSG_CHECKING([for crashreport config])
10309 if test "$with_symbol_config" = "no"; then
10310 BREAKPAD_SYMBOL_CONFIG="invalid"
10311 AC_MSG_RESULT([no])
10313 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10314 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10315 AC_MSG_RESULT([yes])
10317 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10319 AC_SUBST(ENABLE_BREAKPAD)
10320 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10322 dnl ==================================================================
10324 dnl ==================================================================
10325 AC_MSG_CHECKING([whether to enable fuzzers])
10326 if test "$enable_fuzzers" != yes; then
10327 AC_MSG_RESULT([no])
10329 AC_MSG_RESULT([yes])
10330 ENABLE_FUZZERS="TRUE"
10331 AC_DEFINE([ENABLE_FUZZERS],1)
10332 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10334 AC_SUBST(ENABLE_FUZZERS)
10336 dnl ===================================================================
10338 dnl ===================================================================
10339 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10340 if test "$with_system_orcus" != "yes"; then
10341 if test "$SYSTEM_BOOST" = "TRUE"; then
10342 # ===========================================================
10343 # Determine if we are going to need to link with Boost.System
10344 # ===========================================================
10345 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10346 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10347 dnl in documentation has no effect.
10348 AC_MSG_CHECKING([if we need to link with Boost.System])
10349 AC_LANG_PUSH([C++])
10350 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10351 @%:@include <boost/version.hpp>
10353 #if BOOST_VERSION >= 105000
10354 # error yes, we need to link with Boost.System
10357 AC_MSG_RESULT([no])
10359 AC_MSG_RESULT([yes])
10365 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10366 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10367 AC_SUBST([BOOST_SYSTEM_LIB])
10368 AC_SUBST(SYSTEM_LIBORCUS)
10370 dnl ===================================================================
10372 dnl ===================================================================
10373 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10374 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10375 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10377 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10378 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10379 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10381 if test "$COM" = "MSC"; then # override the above
10382 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10383 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10386 if test "$with_system_harfbuzz" = "yes"; then
10387 if test "$with_system_graphite" = "no"; then
10388 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10390 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10392 save_CFLAGS="$CFLAGS"
10393 LIBS="$LIBS $HARFBUZZ_LIBS"
10394 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10395 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10397 CFLAGS="$save_CFLAGS"
10399 if test "$with_system_graphite" = "yes"; then
10400 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10404 AC_MSG_CHECKING([whether to use X11])
10405 dnl ***************************************
10406 dnl testing for X libraries and includes...
10407 dnl ***************************************
10408 if test "$USING_X11" = TRUE; then
10409 AC_DEFINE(HAVE_FEATURE_X11)
10411 AC_MSG_RESULT([$USING_X11])
10413 if test "$USING_X11" = TRUE; then
10416 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10418 if test -z "$x_includes"; then
10419 x_includes="default_x_includes"
10421 if test -z "$x_libraries"; then
10422 x_libraries="default_x_libraries"
10424 CFLAGS="$CFLAGS $X_CFLAGS"
10425 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10426 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10428 x_includes="no_x_includes"
10429 x_libraries="no_x_libraries"
10432 if test "$USING_X11" = TRUE; then
10433 dnl ===================================================================
10434 dnl Check for extension headers
10435 dnl ===================================================================
10436 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10437 [#include <X11/extensions/shape.h>])
10439 # vcl needs ICE and SM
10440 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10441 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10442 [AC_MSG_ERROR(ICE library not found)])
10443 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10444 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10445 [AC_MSG_ERROR(SM library not found)])
10448 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10449 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10450 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10453 dnl ===================================================================
10454 dnl Check for system Xrender
10455 dnl ===================================================================
10456 AC_MSG_CHECKING([whether to use Xrender])
10457 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10458 AC_MSG_RESULT([yes])
10459 PKG_CHECK_MODULES(XRENDER, xrender)
10460 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10461 FilterLibs "${XRENDER_LIBS}"
10462 XRENDER_LIBS="${filteredlibs}"
10463 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10464 [AC_MSG_ERROR(libXrender not found or functional)], [])
10465 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10466 [AC_MSG_ERROR(Xrender not found. install X)], [])
10468 AC_MSG_RESULT([no])
10470 AC_SUBST(XRENDER_CFLAGS)
10471 AC_SUBST(XRENDER_LIBS)
10473 dnl ===================================================================
10474 dnl Check for XRandr
10475 dnl ===================================================================
10476 AC_MSG_CHECKING([whether to enable RandR support])
10477 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10478 AC_MSG_RESULT([yes])
10479 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10480 if test "$ENABLE_RANDR" != "TRUE"; then
10481 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10482 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10484 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10485 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10486 XRANDR_LIBS="-lXrandr "
10487 ENABLE_RANDR="TRUE"
10489 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10490 FilterLibs "${XRANDR_LIBS}"
10491 XRANDR_LIBS="${filteredlibs}"
10494 AC_MSG_RESULT([no])
10496 AC_SUBST(XRANDR_CFLAGS)
10497 AC_SUBST(XRANDR_LIBS)
10498 AC_SUBST(ENABLE_RANDR)
10500 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10501 if test -z "$WITH_WEBDAV"; then
10505 if test $_os = iOS -o $_os = Android; then
10508 AC_MSG_CHECKING([for webdav library])
10509 case "$WITH_WEBDAV" in
10511 AC_MSG_RESULT([serf])
10512 # Check for system apr-util
10513 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10514 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10515 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10516 if test "$COM" = "MSC"; then
10518 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10519 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10522 # Check for system serf
10523 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10524 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10525 if test "$COM" = "MSC"; then
10526 SERF_LIB_DIR="Release"
10527 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10528 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10532 AC_MSG_RESULT([neon])
10533 # Check for system neon
10534 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10535 if test "$with_system_neon" = "yes"; then
10536 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10540 AC_SUBST(NEON_VERSION)
10543 AC_MSG_RESULT([none, disabled])
10547 AC_SUBST(WITH_WEBDAV)
10549 dnl ===================================================================
10550 dnl Check for disabling cve_tests
10551 dnl ===================================================================
10552 AC_MSG_CHECKING([whether to execute CVE tests])
10553 # If not explicitly enabled or disabled, default
10554 if test -z "$enable_cve_tests"; then
10557 # Default cves off for Windows with its wild and wonderful
10558 # variety of AV software kicking in and panicking
10559 enable_cve_tests=no
10563 enable_cve_tests=yes
10567 if test "$enable_cve_tests" = "no"; then
10568 AC_MSG_RESULT([no])
10569 DISABLE_CVE_TESTS=TRUE
10570 AC_SUBST(DISABLE_CVE_TESTS)
10572 AC_MSG_RESULT([yes])
10575 dnl ===================================================================
10576 dnl Check for enabling chart XShape tests
10577 dnl ===================================================================
10578 AC_MSG_CHECKING([whether to execute chart XShape tests])
10579 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10580 AC_MSG_RESULT([yes])
10581 ENABLE_CHART_TESTS=TRUE
10582 AC_SUBST(ENABLE_CHART_TESTS)
10584 AC_MSG_RESULT([no])
10587 dnl ===================================================================
10588 dnl Check for system openssl
10589 dnl ===================================================================
10591 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10592 if test "$enable_openssl" = "yes"; then
10593 AC_MSG_RESULT([no])
10594 if test "$_os" = Darwin ; then
10595 # OpenSSL is deprecated when building for 10.7 or later.
10597 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10598 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10600 with_system_openssl=no
10601 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10602 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10603 && test "$with_system_openssl" != "no"; then
10604 with_system_openssl=yes
10605 SYSTEM_OPENSSL=TRUE
10607 OPENSSL_LIBS="-lssl -lcrypto"
10609 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10611 if test "$with_system_openssl" = "yes"; then
10612 AC_MSG_CHECKING([whether openssl supports SHA512])
10614 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10615 SHA512_CTX context;
10616 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10620 AC_MSG_RESULT([yes])
10621 DISABLE_OPENSSL=TRUE
10623 # warn that although OpenSSL is disabled, system libraries may depend on it
10624 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10625 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10628 AC_SUBST([DISABLE_OPENSSL])
10630 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10631 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10632 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10633 enable_cipher_openssl_backend=no
10635 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10638 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10639 ENABLE_CIPHER_OPENSSL_BACKEND=
10640 if test "$enable_cipher_openssl_backend" = yes; then
10641 AC_MSG_RESULT([yes])
10642 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10644 AC_MSG_RESULT([no])
10646 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10648 dnl ===================================================================
10649 dnl Check for building gnutls
10650 dnl ===================================================================
10651 AC_MSG_CHECKING([whether to use gnutls])
10652 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10653 AC_MSG_RESULT([yes])
10654 AM_PATH_LIBGCRYPT()
10655 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10656 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10657 available in the system to use as replacement.]]))
10658 FilterLibs "${LIBGCRYPT_LIBS}"
10659 LIBGCRYPT_LIBS="${filteredlibs}"
10661 AC_MSG_RESULT([no])
10664 AC_SUBST([LIBGCRYPT_CFLAGS])
10665 AC_SUBST([LIBGCRYPT_LIBS])
10667 dnl ===================================================================
10668 dnl Check for system redland
10669 dnl ===================================================================
10670 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10671 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10672 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10673 if test "$with_system_redland" = "yes"; then
10674 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10675 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10681 AC_SUBST(RAPTOR_MAJOR)
10682 AC_SUBST(RASQAL_MAJOR)
10683 AC_SUBST(REDLAND_MAJOR)
10685 dnl ===================================================================
10686 dnl Check for system hunspell
10687 dnl ===================================================================
10688 AC_MSG_CHECKING([which libhunspell to use])
10689 if test "$_os" = iOS; then
10690 AC_MSG_RESULT([none])
10691 elif test "$with_system_hunspell" = "yes"; then
10692 AC_MSG_RESULT([external])
10693 SYSTEM_HUNSPELL=TRUE
10694 AC_LANG_PUSH([C++])
10695 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10696 if test "$HUNSPELL_PC" != "TRUE"; then
10697 AC_CHECK_HEADER(hunspell.hxx, [],
10699 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10700 [AC_MSG_ERROR(hunspell headers not found.)], [])
10702 AC_CHECK_LIB([hunspell], [main], [:],
10703 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10704 HUNSPELL_LIBS=-lhunspell
10707 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10708 FilterLibs "${HUNSPELL_LIBS}"
10709 HUNSPELL_LIBS="${filteredlibs}"
10711 AC_MSG_RESULT([internal])
10713 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10714 if test "$COM" = "MSC"; then
10715 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10717 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10719 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10721 AC_SUBST(SYSTEM_HUNSPELL)
10722 AC_SUBST(HUNSPELL_CFLAGS)
10723 AC_SUBST(HUNSPELL_LIBS)
10725 dnl ===================================================================
10726 dnl Check for system qrcodegen
10727 dnl ===================================================================
10728 AC_MSG_CHECKING([whether to use libqrcodegen])
10729 if test "$enable_qrcodegen" = "no"; then
10730 AC_MSG_RESULT([no])
10734 AC_MSG_RESULT([yes])
10735 ENABLE_QRCODEGEN=TRUE
10736 AC_MSG_CHECKING([which libqrcodegen to use])
10737 if test "$with_system_qrcodegen" = "yes"; then
10738 AC_MSG_RESULT([external])
10739 SYSTEM_QRCODEGEN=TRUE
10740 AC_LANG_PUSH([C++])
10741 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10742 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10743 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10744 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10745 QRCODEGEN_LIBS=-lqrcodegencpp
10747 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10748 FilterLibs "${QRCODEGEN_LIBS}"
10749 QRCODEGEN_LIBS="${filteredlibs}"
10751 AC_MSG_RESULT([internal])
10753 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10755 if test "$ENABLE_QRCODEGEN" = TRUE; then
10756 AC_DEFINE(ENABLE_QRCODEGEN)
10759 AC_SUBST(SYSTEM_QRCODEGEN)
10760 AC_SUBST(ENABLE_QRCODEGEN)
10761 AC_SUBST(QRCODEGEN_CFLAGS)
10762 AC_SUBST(QRCODEGEN_LIBS)
10764 dnl ===================================================================
10765 dnl Check for system box2d
10766 dnl ===================================================================
10767 AC_MSG_CHECKING([which box2d to use])
10768 if test "$with_system_box2d" = "yes"; then
10769 AC_MSG_RESULT([external])
10771 AC_LANG_PUSH([C++])
10772 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10773 [BOX2D_H_FOUND='FALSE'])
10774 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10776 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10778 # fail this. there's no other alternative to check when we are here.
10779 AC_CHECK_HEADER([Box2D/Box2D.h], [],
10780 [AC_MSG_ERROR(box2d headers not found.)])
10782 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10784 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10785 [ AC_MSG_ERROR(box2d library not found.) ], [])
10786 BOX2D_LIBS=-l$_BOX2D_LIB
10788 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10789 FilterLibs "${BOX2D_LIBS}"
10790 BOX2D_LIBS="${filteredlibs}"
10792 AC_MSG_RESULT([internal])
10794 BUILD_TYPE="$BUILD_TYPE BOX2D"
10796 AC_SUBST(SYSTEM_BOX2D)
10797 AC_SUBST(BOX2D_CFLAGS)
10798 AC_SUBST(BOX2D_LIBS)
10800 dnl ===================================================================
10801 dnl Checking for altlinuxhyph
10802 dnl ===================================================================
10803 AC_MSG_CHECKING([which altlinuxhyph to use])
10804 if test "$with_system_altlinuxhyph" = "yes"; then
10805 AC_MSG_RESULT([external])
10807 AC_CHECK_HEADER(hyphen.h, [],
10808 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10809 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10810 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10811 [#include <hyphen.h>])
10812 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10813 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10814 if test -z "$HYPHEN_LIB"; then
10815 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10816 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10818 if test -z "$HYPHEN_LIB"; then
10819 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10820 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10823 AC_MSG_RESULT([internal])
10825 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10826 if test "$COM" = "MSC"; then
10827 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10829 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10832 AC_SUBST(SYSTEM_HYPH)
10833 AC_SUBST(HYPHEN_LIB)
10835 dnl ===================================================================
10836 dnl Checking for mythes
10837 dnl ===================================================================
10838 AC_MSG_CHECKING([which mythes to use])
10839 if test "$_os" = iOS; then
10840 AC_MSG_RESULT([none])
10841 elif test "$with_system_mythes" = "yes"; then
10842 AC_MSG_RESULT([external])
10844 AC_LANG_PUSH([C++])
10845 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10846 if test "$MYTHES_PKGCONFIG" = "no"; then
10847 AC_CHECK_HEADER(mythes.hxx, [],
10848 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10849 AC_CHECK_LIB([mythes-1.2], [main], [:],
10850 [ MYTHES_FOUND=no], [])
10851 if test "$MYTHES_FOUND" = "no"; then
10852 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10853 [ MYTHES_FOUND=no], [])
10855 if test "$MYTHES_FOUND" = "no"; then
10856 AC_MSG_ERROR([mythes library not found!.])
10860 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10861 FilterLibs "${MYTHES_LIBS}"
10862 MYTHES_LIBS="${filteredlibs}"
10864 AC_MSG_RESULT([internal])
10866 BUILD_TYPE="$BUILD_TYPE MYTHES"
10867 if test "$COM" = "MSC"; then
10868 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10870 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10873 AC_SUBST(SYSTEM_MYTHES)
10874 AC_SUBST(MYTHES_CFLAGS)
10875 AC_SUBST(MYTHES_LIBS)
10877 dnl ===================================================================
10878 dnl How should we build the linear programming solver ?
10879 dnl ===================================================================
10882 AC_MSG_CHECKING([whether to build with CoinMP])
10883 if test "$enable_coinmp" != "no"; then
10885 AC_MSG_RESULT([yes])
10886 if test "$with_system_coinmp" = "yes"; then
10888 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10889 FilterLibs "${COINMP_LIBS}"
10890 COINMP_LIBS="${filteredlibs}"
10892 BUILD_TYPE="$BUILD_TYPE COINMP"
10895 AC_MSG_RESULT([no])
10897 AC_SUBST(ENABLE_COINMP)
10898 AC_SUBST(SYSTEM_COINMP)
10899 AC_SUBST(COINMP_CFLAGS)
10900 AC_SUBST(COINMP_LIBS)
10903 AC_MSG_CHECKING([whether to build with lpsolve])
10904 if test "$enable_lpsolve" != "no"; then
10905 ENABLE_LPSOLVE=TRUE
10906 AC_MSG_RESULT([yes])
10908 AC_MSG_RESULT([no])
10910 AC_SUBST(ENABLE_LPSOLVE)
10912 if test "$ENABLE_LPSOLVE" = TRUE; then
10913 AC_MSG_CHECKING([which lpsolve to use])
10914 if test "$with_system_lpsolve" = "yes"; then
10915 AC_MSG_RESULT([external])
10916 SYSTEM_LPSOLVE=TRUE
10917 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10918 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10920 # some systems need this. Like Ubuntu...
10921 AC_CHECK_LIB(m, floor)
10922 AC_CHECK_LIB(dl, dlopen)
10923 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10924 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10927 AC_MSG_RESULT([internal])
10929 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10932 AC_SUBST(SYSTEM_LPSOLVE)
10934 dnl ===================================================================
10935 dnl Checking for libexttextcat
10936 dnl ===================================================================
10937 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10938 if test "$with_system_libexttextcat" = "yes"; then
10939 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10941 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10943 dnl ===================================================================
10944 dnl Checking for libnumbertext
10945 dnl ===================================================================
10946 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10947 if test "$with_system_libnumbertext" = "yes"; then
10948 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10949 SYSTEM_LIBNUMBERTEXT=YES
10951 SYSTEM_LIBNUMBERTEXT=
10952 AC_LANG_PUSH([C++])
10953 save_CPPFLAGS=$CPPFLAGS
10954 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10955 AC_CHECK_HEADERS([codecvt regex])
10956 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10957 [ LIBNUMBERTEXT_CFLAGS=''
10958 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10959 Enable libnumbertext fallback (missing number to number name conversion).])
10961 CPPFLAGS=$save_CPPFLAGS
10964 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10965 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10966 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10968 dnl ***************************************
10969 dnl testing libc version for Linux...
10970 dnl ***************************************
10971 if test "$_os" = "Linux"; then
10972 AC_MSG_CHECKING([whether libc is >= 2.1.1])
10973 exec 6>/dev/null # no output
10974 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10975 exec 6>&1 # output on again
10976 if test "$HAVE_LIBC"; then
10977 AC_MSG_RESULT([yes])
10979 AC_MSG_ERROR([no, upgrade libc])
10983 dnl =========================================
10984 dnl Check for uuidgen
10985 dnl =========================================
10986 if test "$_os" = "WINNT"; then
10987 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
10988 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
10989 UUIDGEN=uuidgen.exe
10992 AC_PATH_PROG([UUIDGEN], [uuidgen])
10993 if test -z "$UUIDGEN"; then
10994 AC_MSG_WARN([uuid is needed for building installation sets])
10998 dnl ***************************************
10999 dnl Checking for bison and flex
11000 dnl ***************************************
11001 AC_PATH_PROG(BISON, bison)
11002 if test -z "$BISON"; then
11003 AC_MSG_ERROR([no bison found in \$PATH, install it])
11005 AC_MSG_CHECKING([the bison version])
11006 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11007 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11008 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11011 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]
11012 dnl typedef union YYSTYPE
11015 dnl while at least 3.4.1 is know to be good:
11016 if test "$COMPILER_PLUGINS" = TRUE; then
11017 if test "$_bison_longver" -lt 2004; then
11018 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11021 if test "$_bison_longver" -lt 2000; then
11022 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11028 AC_PATH_PROG(FLEX, flex)
11029 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11030 FLEX=`cygpath -m $FLEX`
11032 if test -z "$FLEX"; then
11033 AC_MSG_ERROR([no flex found in \$PATH, install it])
11035 AC_MSG_CHECKING([the flex version])
11036 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11037 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11038 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11042 dnl ***************************************
11043 dnl Checking for patch
11044 dnl ***************************************
11045 AC_PATH_PROG(PATCH, patch)
11046 if test -z "$PATCH"; then
11047 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11050 dnl On Solaris or macOS, check if --with-gnu-patch was used
11051 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11052 if test -z "$with_gnu_patch"; then
11055 if test -x "$with_gnu_patch"; then
11056 GNUPATCH=$with_gnu_patch
11058 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11062 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11063 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11064 AC_MSG_RESULT([yes])
11066 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11072 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11073 GNUPATCH=`cygpath -m $GNUPATCH`
11076 dnl We also need to check for --with-gnu-cp
11078 if test -z "$with_gnu_cp"; then
11079 # check the place where the good stuff is hidden on Solaris...
11080 if test -x /usr/gnu/bin/cp; then
11081 GNUCP=/usr/gnu/bin/cp
11083 AC_PATH_PROGS(GNUCP, gnucp cp)
11085 if test -z $GNUCP; then
11086 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11089 if test -x "$with_gnu_cp"; then
11092 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11096 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11097 GNUCP=`cygpath -m $GNUCP`
11100 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11101 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11102 AC_MSG_RESULT([yes])
11103 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11104 AC_MSG_RESULT([yes])
11106 case "$build_os" in
11107 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11110 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11113 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11122 dnl ***************************************
11123 dnl testing assembler path
11124 dnl ***************************************
11126 if test "$_os" = "WINNT"; then
11127 case "$WIN_HOST_ARCH" in
11128 x86) assembler=ml.exe ;;
11129 x64) assembler=ml64.exe ;;
11130 arm64) assembler=armasm64.exe ;;
11133 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11134 if test -f "$MSVC_HOST_PATH/$assembler"; then
11135 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11136 AC_MSG_RESULT([$ML_EXE])
11138 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11144 dnl ===================================================================
11145 dnl We need zip and unzip
11146 dnl ===================================================================
11147 AC_PATH_PROG(ZIP, zip)
11148 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11149 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11150 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],,)
11153 AC_PATH_PROG(UNZIP, unzip)
11154 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11156 dnl ===================================================================
11157 dnl Zip must be a specific type for different build types.
11158 dnl ===================================================================
11159 if test $build_os = cygwin; then
11160 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11161 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11165 dnl ===================================================================
11166 dnl We need touch with -h option support.
11167 dnl ===================================================================
11168 AC_PATH_PROG(TOUCH, touch)
11169 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11171 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11172 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],,)
11175 dnl ===================================================================
11176 dnl Check for system epoxy
11177 dnl ===================================================================
11178 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11180 dnl ===================================================================
11181 dnl Set vcl option: coordinate device in double or sal_Int32
11182 dnl ===================================================================
11184 dnl disabled for now, we don't want subtle differences between OSs
11185 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11186 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11187 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11188 dnl AC_MSG_RESULT([double])
11190 dnl AC_MSG_RESULT([sal_Int32])
11193 dnl ===================================================================
11194 dnl Test which vclplugs have to be built.
11195 dnl ===================================================================
11197 if test "$USING_X11" != TRUE; then
11202 if test "x$enable_gtk3" = "xyes"; then
11204 AC_DEFINE(ENABLE_GTK3)
11207 AC_SUBST(ENABLE_GTK3)
11209 ENABLE_GTK3_KDE5=""
11210 if test "x$enable_gtk3_kde5" = "xyes"; then
11211 ENABLE_GTK3_KDE5="TRUE"
11212 AC_DEFINE(ENABLE_GTK3_KDE5)
11215 AC_SUBST(ENABLE_GTK3_KDE5)
11218 if test "x$enable_qt5" = "xyes"; then
11220 AC_DEFINE(ENABLE_QT5)
11223 AC_SUBST(ENABLE_QT5)
11226 if test "x$enable_kf5" = "xyes"; then
11228 AC_DEFINE(ENABLE_KF5)
11231 AC_SUBST(ENABLE_KF5)
11235 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11236 if test "$with_system_cairo" = no; then
11237 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11239 : ${with_system_cairo:=yes}
11240 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)
11241 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11242 FilterLibs "${GTK3_LIBS}"
11243 GTK3_LIBS="${filteredlibs}"
11245 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11246 if test "$with_system_epoxy" != "yes"; then
11247 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11248 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11249 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11252 AC_SUBST(GTK3_LIBS)
11253 AC_SUBST(GTK3_CFLAGS)
11255 if test "$enable_introspection" = yes; then
11256 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11257 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11259 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11263 if test "$_os" = "WINNT"; then
11265 elif test "$_os" = "Darwin"; then
11267 elif test "$_os" = "iOS"; then
11271 build_vcl_plugins="$R"
11272 if test -z "$build_vcl_plugins"; then
11273 build_vcl_plugins="none"
11275 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11277 dnl ===================================================================
11278 dnl check for dbus support
11279 dnl ===================================================================
11283 DBUS_GLIB_CFLAGS=""
11287 if test "$enable_dbus" = "no"; then
11291 AC_MSG_CHECKING([whether to enable DBUS support])
11292 if test "$test_dbus" = "yes"; then
11294 AC_MSG_RESULT([yes])
11295 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11296 AC_DEFINE(ENABLE_DBUS)
11297 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11298 FilterLibs "${DBUS_LIBS}"
11299 DBUS_LIBS="${filteredlibs}"
11301 # Glib is needed for BluetoothServer
11302 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11303 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11305 DBUS_HAVE_GLIB="TRUE"
11306 AC_DEFINE(DBUS_HAVE_GLIB,1)
11308 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11311 AC_MSG_RESULT([no])
11314 AC_SUBST(ENABLE_DBUS)
11315 AC_SUBST(DBUS_CFLAGS)
11316 AC_SUBST(DBUS_LIBS)
11317 AC_SUBST(DBUS_GLIB_CFLAGS)
11318 AC_SUBST(DBUS_GLIB_LIBS)
11319 AC_SUBST(DBUS_HAVE_GLIB)
11321 AC_MSG_CHECKING([whether to enable Impress remote control])
11322 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11323 AC_MSG_RESULT([yes])
11324 ENABLE_SDREMOTE=TRUE
11325 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11327 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11328 # The Bluetooth code doesn't compile with macOS SDK 10.15
11329 if test "$enable_sdremote_bluetooth" = yes; then
11330 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11332 enable_sdremote_bluetooth=no
11334 # If not explicitly enabled or disabled, default
11335 if test -z "$enable_sdremote_bluetooth"; then
11338 # Default to yes for these
11339 enable_sdremote_bluetooth=yes
11343 enable_sdremote_bluetooth=no
11347 # $enable_sdremote_bluetooth is guaranteed non-empty now
11349 if test "$enable_sdremote_bluetooth" != "no"; then
11350 if test "$OS" = "LINUX"; then
11351 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11352 AC_MSG_RESULT([yes])
11353 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11354 dnl ===================================================================
11355 dnl Check for system bluez
11356 dnl ===================================================================
11357 AC_MSG_CHECKING([which Bluetooth header to use])
11358 if test "$with_system_bluez" = "yes"; then
11359 AC_MSG_RESULT([external])
11360 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11361 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11364 AC_MSG_RESULT([internal])
11368 AC_MSG_RESULT([no, dbus disabled])
11369 ENABLE_SDREMOTE_BLUETOOTH=
11373 AC_MSG_RESULT([yes])
11374 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11378 AC_MSG_RESULT([no])
11379 ENABLE_SDREMOTE_BLUETOOTH=
11385 AC_MSG_RESULT([no])
11387 AC_SUBST(ENABLE_SDREMOTE)
11388 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11389 AC_SUBST(SYSTEM_BLUEZ)
11391 dnl ===================================================================
11392 dnl Check whether to enable GIO support
11393 dnl ===================================================================
11394 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11395 AC_MSG_CHECKING([whether to enable GIO support])
11396 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11397 dnl Need at least 2.26 for the dbus support.
11398 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11399 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11400 if test "$ENABLE_GIO" = "TRUE"; then
11401 AC_DEFINE(ENABLE_GIO)
11402 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11403 FilterLibs "${GIO_LIBS}"
11404 GIO_LIBS="${filteredlibs}"
11407 AC_MSG_RESULT([no])
11410 AC_SUBST(ENABLE_GIO)
11411 AC_SUBST(GIO_CFLAGS)
11415 dnl ===================================================================
11417 SPLIT_APP_MODULES=""
11418 if test "$enable_split_app_modules" = "yes"; then
11419 SPLIT_APP_MODULES="TRUE"
11421 AC_SUBST(SPLIT_APP_MODULES)
11423 SPLIT_OPT_FEATURES=""
11424 if test "$enable_split_opt_features" = "yes"; then
11425 SPLIT_OPT_FEATURES="TRUE"
11427 AC_SUBST(SPLIT_OPT_FEATURES)
11429 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11430 if test "$enable_cairo_canvas" = yes; then
11431 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11433 enable_cairo_canvas=no
11434 elif test -z "$enable_cairo_canvas"; then
11435 enable_cairo_canvas=yes
11438 ENABLE_CAIRO_CANVAS=""
11439 if test "$enable_cairo_canvas" = "yes"; then
11441 ENABLE_CAIRO_CANVAS="TRUE"
11442 AC_DEFINE(ENABLE_CAIRO_CANVAS)
11444 AC_SUBST(ENABLE_CAIRO_CANVAS)
11446 dnl ===================================================================
11447 dnl Check whether the GStreamer libraries are available.
11448 dnl ===================================================================
11450 ENABLE_GSTREAMER_1_0=""
11452 if test "$build_gstreamer_1_0" = "yes"; then
11454 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11455 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11456 ENABLE_GSTREAMER_1_0="TRUE"
11457 AC_MSG_RESULT([yes])
11458 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11459 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11460 FilterLibs "${GSTREAMER_1_0_LIBS}"
11461 GSTREAMER_1_0_LIBS="${filteredlibs}"
11462 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11464 AC_MSG_RESULT([no])
11467 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11468 AC_SUBST(GSTREAMER_1_0_LIBS)
11469 AC_SUBST(ENABLE_GSTREAMER_1_0)
11471 dnl ===================================================================
11472 dnl Check whether to build the VLC avmedia backend
11473 dnl ===================================================================
11477 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11478 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11480 AC_MSG_RESULT([yes])
11482 AC_MSG_RESULT([no])
11484 AC_SUBST(ENABLE_VLC)
11486 ENABLE_OPENGL_TRANSITIONS=
11487 ENABLE_OPENGL_CANVAS=
11488 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11490 elif test "$_os" = "Darwin"; then
11491 # We use frameworks on macOS, no need for detail checks
11492 ENABLE_OPENGL_TRANSITIONS=TRUE
11493 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11494 ENABLE_OPENGL_CANVAS=TRUE
11495 elif test $_os = WINNT; then
11496 ENABLE_OPENGL_TRANSITIONS=TRUE
11497 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11498 ENABLE_OPENGL_CANVAS=TRUE
11500 if test "$USING_X11" = TRUE; then
11501 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11502 ENABLE_OPENGL_TRANSITIONS=TRUE
11503 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11504 ENABLE_OPENGL_CANVAS=TRUE
11508 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11509 AC_SUBST(ENABLE_OPENGL_CANVAS)
11511 dnl =================================================
11512 dnl Check whether to build with OpenCL support.
11513 dnl =================================================
11515 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11516 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11517 # platform (optional at run-time, used through clew).
11518 BUILD_TYPE="$BUILD_TYPE OPENCL"
11519 AC_DEFINE(HAVE_FEATURE_OPENCL)
11522 dnl =================================================
11523 dnl Check whether to build with dconf support.
11524 dnl =================================================
11526 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11527 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11528 if test "$enable_dconf" = yes; then
11529 AC_MSG_ERROR([dconf not found])
11534 AC_MSG_CHECKING([whether to enable dconf])
11535 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11539 AC_MSG_RESULT([no])
11542 AC_DEFINE(ENABLE_DCONF)
11543 AC_MSG_RESULT([yes])
11545 AC_SUBST([DCONF_CFLAGS])
11546 AC_SUBST([DCONF_LIBS])
11547 AC_SUBST([ENABLE_DCONF])
11550 AC_MSG_CHECKING([whether to build the PDF import feature])
11552 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11553 AC_MSG_RESULT([yes])
11554 ENABLE_PDFIMPORT=TRUE
11555 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11557 AC_MSG_RESULT([no])
11561 AC_MSG_CHECKING([whether to build PDFium])
11563 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11564 AC_MSG_RESULT([yes])
11566 AC_DEFINE(HAVE_FEATURE_PDFIUM)
11567 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11569 AC_MSG_RESULT([no])
11571 AC_SUBST(ENABLE_PDFIUM)
11573 dnl ===================================================================
11574 dnl Check for poppler
11575 dnl ===================================================================
11577 AC_MSG_CHECKING([whether to build Poppler])
11578 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11579 AC_MSG_RESULT([yes])
11580 ENABLE_POPPLER=TRUE
11581 AC_DEFINE(HAVE_FEATURE_POPPLER)
11583 AC_MSG_RESULT([no])
11585 AC_SUBST(ENABLE_POPPLER)
11587 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11588 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11591 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11592 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11595 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11596 dnl ===================================================================
11597 dnl Check for system poppler
11598 dnl ===================================================================
11599 AC_MSG_CHECKING([which PDF import poppler to use])
11600 if test "$with_system_poppler" = "yes"; then
11601 AC_MSG_RESULT([external])
11602 SYSTEM_POPPLER=TRUE
11603 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11604 AC_LANG_PUSH([C++])
11605 save_CXXFLAGS=$CXXFLAGS
11606 save_CPPFLAGS=$CPPFLAGS
11607 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11608 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11609 AC_CHECK_HEADER([cpp/poppler-version.h],
11610 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11612 CXXFLAGS=$save_CXXFLAGS
11613 CPPFLAGS=$save_CPPFLAGS
11615 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11617 FilterLibs "${POPPLER_LIBS}"
11618 POPPLER_LIBS="${filteredlibs}"
11620 AC_MSG_RESULT([internal])
11622 BUILD_TYPE="$BUILD_TYPE POPPLER"
11623 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11625 AC_DEFINE([ENABLE_PDFIMPORT],1)
11627 AC_SUBST(ENABLE_PDFIMPORT)
11628 AC_SUBST(SYSTEM_POPPLER)
11629 AC_SUBST(POPPLER_CFLAGS)
11630 AC_SUBST(POPPLER_LIBS)
11633 AC_MSG_CHECKING([whether to build Skia])
11635 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11636 if test "$enable_skia" = "debug"; then
11637 AC_MSG_RESULT([yes (debug)])
11638 ENABLE_SKIA_DEBUG=TRUE
11640 AC_MSG_RESULT([yes])
11644 AC_DEFINE(HAVE_FEATURE_SKIA)
11645 BUILD_TYPE="$BUILD_TYPE SKIA"
11647 AC_MSG_RESULT([no])
11649 AC_SUBST(ENABLE_SKIA)
11650 AC_SUBST(ENABLE_SKIA_DEBUG)
11652 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11653 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11654 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11655 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11656 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11657 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11658 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11659 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11660 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11662 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11663 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11664 AC_MSG_CHECKING([for Clang])
11665 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11667 if test "$_os" = "WINNT"; then
11668 AC_MSG_CHECKING([for clang-cl])
11669 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11670 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11671 dnl explicitly set -m32/-m64
11672 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11673 LO_CLANG_CXX="$LO_CLANG_CC"
11674 AC_MSG_RESULT([$LO_CLANG_CC])
11676 AC_MSG_RESULT([no])
11679 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11680 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11683 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11684 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11685 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11686 if test "$clang2_ver" -lt 50002; then
11687 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11692 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11693 # Skia is the default on Windows, so hard-require Clang.
11694 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11695 if test "$_os" = "WINNT"; then
11696 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11698 AC_MSG_WARN([Clang compiler not found.])
11703 CXX="$LO_CLANG_CXX"
11704 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11707 flag_sse41=-msse4.1
11708 flag_sse42=-msse4.2
11711 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11715 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11716 AC_LANG_PUSH([C++])
11717 save_CXXFLAGS=$CXXFLAGS
11718 CXXFLAGS="$CXXFLAGS $flag_sse2"
11719 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11720 #include <emmintrin.h>
11722 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11723 c = _mm_xor_si128 (a, b);
11727 [can_compile_sse2=yes],
11728 [can_compile_sse2=no])
11730 CXXFLAGS=$save_CXXFLAGS
11731 AC_MSG_RESULT([${can_compile_sse2}])
11732 if test "${can_compile_sse2}" = "yes" ; then
11733 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11736 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11737 AC_LANG_PUSH([C++])
11738 save_CXXFLAGS=$CXXFLAGS
11739 CXXFLAGS="$CXXFLAGS $flag_ssse3"
11740 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11741 #include <tmmintrin.h>
11743 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11744 c = _mm_maddubs_epi16 (a, b);
11748 [can_compile_ssse3=yes],
11749 [can_compile_ssse3=no])
11751 CXXFLAGS=$save_CXXFLAGS
11752 AC_MSG_RESULT([${can_compile_ssse3}])
11753 if test "${can_compile_ssse3}" = "yes" ; then
11754 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11757 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11758 AC_LANG_PUSH([C++])
11759 save_CXXFLAGS=$CXXFLAGS
11760 CXXFLAGS="$CXXFLAGS $flag_sse41"
11761 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11762 #include <smmintrin.h>
11764 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11765 c = _mm_cmpeq_epi64 (a, b);
11769 [can_compile_sse41=yes],
11770 [can_compile_sse41=no])
11772 CXXFLAGS=$save_CXXFLAGS
11773 AC_MSG_RESULT([${can_compile_sse41}])
11774 if test "${can_compile_sse41}" = "yes" ; then
11775 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11778 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11779 AC_LANG_PUSH([C++])
11780 save_CXXFLAGS=$CXXFLAGS
11781 CXXFLAGS="$CXXFLAGS $flag_sse42"
11782 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11783 #include <nmmintrin.h>
11785 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11786 c = _mm_cmpgt_epi64 (a, b);
11790 [can_compile_sse42=yes],
11791 [can_compile_sse42=no])
11793 CXXFLAGS=$save_CXXFLAGS
11794 AC_MSG_RESULT([${can_compile_sse42}])
11795 if test "${can_compile_sse42}" = "yes" ; then
11796 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11799 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11800 AC_LANG_PUSH([C++])
11801 save_CXXFLAGS=$CXXFLAGS
11802 CXXFLAGS="$CXXFLAGS $flag_avx"
11803 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11804 #include <immintrin.h>
11806 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11807 c = _mm256_xor_ps(a, b);
11811 [can_compile_avx=yes],
11812 [can_compile_avx=no])
11814 CXXFLAGS=$save_CXXFLAGS
11815 AC_MSG_RESULT([${can_compile_avx}])
11816 if test "${can_compile_avx}" = "yes" ; then
11817 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11820 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11821 AC_LANG_PUSH([C++])
11822 save_CXXFLAGS=$CXXFLAGS
11823 CXXFLAGS="$CXXFLAGS $flag_avx2"
11824 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11825 #include <immintrin.h>
11827 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11828 c = _mm256_maddubs_epi16(a, b);
11832 [can_compile_avx2=yes],
11833 [can_compile_avx2=no])
11835 CXXFLAGS=$save_CXXFLAGS
11836 AC_MSG_RESULT([${can_compile_avx2}])
11837 if test "${can_compile_avx2}" = "yes" ; then
11838 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11841 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11842 AC_LANG_PUSH([C++])
11843 save_CXXFLAGS=$CXXFLAGS
11844 CXXFLAGS="$CXXFLAGS $flag_avx512"
11845 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11846 #include <immintrin.h>
11848 __m512i a = _mm512_loadu_si512(0);
11852 [can_compile_avx512=yes],
11853 [can_compile_avx512=no])
11855 CXXFLAGS=$save_CXXFLAGS
11856 AC_MSG_RESULT([${can_compile_avx512}])
11857 if test "${can_compile_avx512}" = "yes" ; then
11858 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11861 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11862 AC_LANG_PUSH([C++])
11863 save_CXXFLAGS=$CXXFLAGS
11864 CXXFLAGS="$CXXFLAGS $flag_f16c"
11865 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11866 #include <immintrin.h>
11868 __m128i a = _mm_set1_epi32 (0);
11870 c = _mm_cvtph_ps(a);
11874 [can_compile_f16c=yes],
11875 [can_compile_f16c=no])
11877 CXXFLAGS=$save_CXXFLAGS
11878 AC_MSG_RESULT([${can_compile_f16c}])
11879 if test "${can_compile_f16c}" = "yes" ; then
11880 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11883 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11884 AC_LANG_PUSH([C++])
11885 save_CXXFLAGS=$CXXFLAGS
11886 CXXFLAGS="$CXXFLAGS $flag_fma"
11887 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11888 #include <immintrin.h>
11890 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11891 d = _mm256_fmadd_ps(a, b, c);
11895 [can_compile_fma=yes],
11896 [can_compile_fma=no])
11898 CXXFLAGS=$save_CXXFLAGS
11899 AC_MSG_RESULT([${can_compile_fma}])
11900 if test "${can_compile_fma}" = "yes" ; then
11901 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11908 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11910 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11911 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11915 save_CFLAGS=$CFLAGS
11916 CFLAGS="$CFLAGS --ccache-skip -O2"
11917 dnl an empty program will do, we're checking the compiler flags
11918 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11919 [use_ccache=yes], [use_ccache=no])
11920 CFLAGS=$save_CFLAGS
11922 if test $use_ccache = yes; then
11923 AC_MSG_RESULT([yes])
11925 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11926 AC_MSG_RESULT([no])
11930 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11931 AC_LANG_PUSH([C++])
11933 CXX="$LO_CLANG_CXX"
11934 save_CXXFLAGS=$CXXFLAGS
11935 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11936 dnl an empty program will do, we're checking the compiler flags
11937 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11938 [use_ccache=yes], [use_ccache=no])
11939 if test $use_ccache = yes; then
11940 AC_MSG_RESULT([yes])
11942 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11943 AC_MSG_RESULT([no])
11945 CXXFLAGS=$save_CXXFLAGS
11950 AC_SUBST(LO_CLANG_CC)
11951 AC_SUBST(LO_CLANG_CXX)
11952 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
11953 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
11954 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
11955 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
11956 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
11957 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
11958 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
11959 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
11960 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
11961 AC_SUBST(CLANG_USE_LD)
11965 if test "$enable_gpgmepp" = no; then
11966 AC_MSG_CHECKING([whether to enable gpgmepp])
11967 AC_MSG_RESULT([no])
11968 elif test "$enable_mpl_subset" = "yes"; then
11969 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11970 AC_MSG_RESULT([yes])
11971 elif test "$enable_fuzzers" = "yes"; then
11972 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11973 AC_MSG_RESULT([yes])
11974 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11975 dnl ===================================================================
11976 dnl Check for system gpgme
11977 dnl ===================================================================
11978 AC_MSG_CHECKING([which gpgmepp to use])
11979 if test "$with_system_gpgmepp" = "yes"; then
11980 AC_MSG_RESULT([external])
11981 SYSTEM_GPGMEPP=TRUE
11983 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11984 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11985 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11986 # progress_callback is the only func with plain C linkage
11987 # checking for it also filters out older, KDE-dependent libgpgmepp versions
11988 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11989 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11990 AC_CHECK_HEADER(gpgme.h, [],
11991 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11993 AC_MSG_RESULT([internal])
11994 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
11995 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
11997 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
11998 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
11999 if test "$_os" != "WINNT"; then
12000 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12001 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12004 ENABLE_GPGMEPP=TRUE
12005 AC_DEFINE([HAVE_FEATURE_GPGME])
12006 AC_PATH_PROG(GPG, gpg)
12007 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12008 # so let's exclude that manually for the moment
12009 if test -n "$GPG" -a "$_os" != "WINNT"; then
12010 # make sure we not only have a working gpgme, but a full working
12011 # gpg installation to run OpenPGP signature verification
12012 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12014 if test "$_os" = "Linux"; then
12016 AC_MSG_CHECKING([for /run/user/$uid])
12017 if test -d /run/user/$uid; then
12018 AC_MSG_RESULT([yes])
12019 AC_PATH_PROG(GPGCONF, gpgconf)
12021 # Older versions of gpgconf are not working as expected, since
12022 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12023 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12024 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12025 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12026 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12027 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12028 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12029 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12030 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12031 if $GPGCONF --dump-options > /dev/null ; then
12032 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12033 AC_MSG_RESULT([yes])
12034 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12035 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12037 AC_MSG_RESULT([no])
12040 AC_MSG_RESULT([no. missing or broken gpgconf?])
12043 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12046 AC_MSG_RESULT([no])
12050 AC_SUBST(ENABLE_GPGMEPP)
12051 AC_SUBST(SYSTEM_GPGMEPP)
12052 AC_SUBST(GPG_ERROR_CFLAGS)
12053 AC_SUBST(GPG_ERROR_LIBS)
12054 AC_SUBST(LIBASSUAN_CFLAGS)
12055 AC_SUBST(LIBASSUAN_LIBS)
12056 AC_SUBST(GPGMEPP_CFLAGS)
12057 AC_SUBST(GPGMEPP_LIBS)
12059 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12060 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12061 AC_MSG_RESULT([yes])
12062 ENABLE_MEDIAWIKI=TRUE
12063 BUILD_TYPE="$BUILD_TYPE XSLTML"
12064 if test "x$with_java" = "xno"; then
12065 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12068 AC_MSG_RESULT([no])
12070 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12072 AC_SUBST(ENABLE_MEDIAWIKI)
12074 AC_MSG_CHECKING([whether to build the Report Builder])
12075 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12076 AC_MSG_RESULT([yes])
12077 ENABLE_REPORTBUILDER=TRUE
12078 AC_MSG_CHECKING([which jfreereport libs to use])
12079 if test "$with_system_jfreereport" = "yes"; then
12080 SYSTEM_JFREEREPORT=TRUE
12081 AC_MSG_RESULT([external])
12082 if test -z $SAC_JAR; then
12083 SAC_JAR=/usr/share/java/sac.jar
12085 if ! test -f $SAC_JAR; then
12086 AC_MSG_ERROR(sac.jar not found.)
12089 if test -z $LIBXML_JAR; then
12090 if test -f /usr/share/java/libxml-1.0.0.jar; then
12091 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12092 elif test -f /usr/share/java/libxml.jar; then
12093 LIBXML_JAR=/usr/share/java/libxml.jar
12095 AC_MSG_ERROR(libxml.jar replacement not found.)
12097 elif ! test -f $LIBXML_JAR; then
12098 AC_MSG_ERROR(libxml.jar not found.)
12101 if test -z $FLUTE_JAR; then
12102 if test -f /usr/share/java/flute-1.3.0.jar; then
12103 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12104 elif test -f /usr/share/java/flute.jar; then
12105 FLUTE_JAR=/usr/share/java/flute.jar
12107 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12109 elif ! test -f $FLUTE_JAR; then
12110 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12113 if test -z $JFREEREPORT_JAR; then
12114 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12115 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12116 elif test -f /usr/share/java/flow-engine.jar; then
12117 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12119 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12121 elif ! test -f $JFREEREPORT_JAR; then
12122 AC_MSG_ERROR(jfreereport.jar not found.)
12125 if test -z $LIBLAYOUT_JAR; then
12126 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12127 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12128 elif test -f /usr/share/java/liblayout.jar; then
12129 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12131 AC_MSG_ERROR(liblayout.jar replacement not found.)
12133 elif ! test -f $LIBLAYOUT_JAR; then
12134 AC_MSG_ERROR(liblayout.jar not found.)
12137 if test -z $LIBLOADER_JAR; then
12138 if test -f /usr/share/java/libloader-1.0.0.jar; then
12139 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12140 elif test -f /usr/share/java/libloader.jar; then
12141 LIBLOADER_JAR=/usr/share/java/libloader.jar
12143 AC_MSG_ERROR(libloader.jar replacement not found.)
12145 elif ! test -f $LIBLOADER_JAR; then
12146 AC_MSG_ERROR(libloader.jar not found.)
12149 if test -z $LIBFORMULA_JAR; then
12150 if test -f /usr/share/java/libformula-0.2.0.jar; then
12151 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12152 elif test -f /usr/share/java/libformula.jar; then
12153 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12155 AC_MSG_ERROR(libformula.jar replacement not found.)
12157 elif ! test -f $LIBFORMULA_JAR; then
12158 AC_MSG_ERROR(libformula.jar not found.)
12161 if test -z $LIBREPOSITORY_JAR; then
12162 if test -f /usr/share/java/librepository-1.0.0.jar; then
12163 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12164 elif test -f /usr/share/java/librepository.jar; then
12165 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12167 AC_MSG_ERROR(librepository.jar replacement not found.)
12169 elif ! test -f $LIBREPOSITORY_JAR; then
12170 AC_MSG_ERROR(librepository.jar not found.)
12173 if test -z $LIBFONTS_JAR; then
12174 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12175 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12176 elif test -f /usr/share/java/libfonts.jar; then
12177 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12179 AC_MSG_ERROR(libfonts.jar replacement not found.)
12181 elif ! test -f $LIBFONTS_JAR; then
12182 AC_MSG_ERROR(libfonts.jar not found.)
12185 if test -z $LIBSERIALIZER_JAR; then
12186 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12187 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12188 elif test -f /usr/share/java/libserializer.jar; then
12189 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12191 AC_MSG_ERROR(libserializer.jar replacement not found.)
12193 elif ! test -f $LIBSERIALIZER_JAR; then
12194 AC_MSG_ERROR(libserializer.jar not found.)
12197 if test -z $LIBBASE_JAR; then
12198 if test -f /usr/share/java/libbase-1.0.0.jar; then
12199 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12200 elif test -f /usr/share/java/libbase.jar; then
12201 LIBBASE_JAR=/usr/share/java/libbase.jar
12203 AC_MSG_ERROR(libbase.jar replacement not found.)
12205 elif ! test -f $LIBBASE_JAR; then
12206 AC_MSG_ERROR(libbase.jar not found.)
12210 AC_MSG_RESULT([internal])
12211 SYSTEM_JFREEREPORT=
12212 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12216 AC_MSG_RESULT([no])
12217 ENABLE_REPORTBUILDER=
12218 SYSTEM_JFREEREPORT=
12220 AC_SUBST(ENABLE_REPORTBUILDER)
12221 AC_SUBST(SYSTEM_JFREEREPORT)
12223 AC_SUBST(LIBXML_JAR)
12224 AC_SUBST(FLUTE_JAR)
12225 AC_SUBST(JFREEREPORT_JAR)
12226 AC_SUBST(LIBBASE_JAR)
12227 AC_SUBST(LIBLAYOUT_JAR)
12228 AC_SUBST(LIBLOADER_JAR)
12229 AC_SUBST(LIBFORMULA_JAR)
12230 AC_SUBST(LIBREPOSITORY_JAR)
12231 AC_SUBST(LIBFONTS_JAR)
12232 AC_SUBST(LIBSERIALIZER_JAR)
12234 # this has to be here because both the Wiki Publisher and the SRB use
12236 COMMONS_LOGGING_VERSION=1.2
12237 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12238 AC_MSG_CHECKING([which Apache commons-* libs to use])
12239 if test "$with_system_apache_commons" = "yes"; then
12240 SYSTEM_APACHE_COMMONS=TRUE
12241 AC_MSG_RESULT([external])
12242 if test -z $COMMONS_LOGGING_JAR; then
12243 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12244 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12245 elif test -f /usr/share/java/commons-logging.jar; then
12246 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12248 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12250 elif ! test -f $COMMONS_LOGGING_JAR; then
12251 AC_MSG_ERROR(commons-logging.jar not found.)
12254 AC_MSG_RESULT([internal])
12255 SYSTEM_APACHE_COMMONS=
12256 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12260 AC_SUBST(SYSTEM_APACHE_COMMONS)
12261 AC_SUBST(COMMONS_LOGGING_JAR)
12262 AC_SUBST(COMMONS_LOGGING_VERSION)
12264 # scripting provider for BeanShell?
12265 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12266 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12267 AC_MSG_RESULT([yes])
12268 ENABLE_SCRIPTING_BEANSHELL=TRUE
12270 dnl ===================================================================
12271 dnl Check for system beanshell
12272 dnl ===================================================================
12273 AC_MSG_CHECKING([which beanshell to use])
12274 if test "$with_system_beanshell" = "yes"; then
12275 AC_MSG_RESULT([external])
12277 if test -z $BSH_JAR; then
12278 BSH_JAR=/usr/share/java/bsh.jar
12280 if ! test -f $BSH_JAR; then
12281 AC_MSG_ERROR(bsh.jar not found.)
12284 AC_MSG_RESULT([internal])
12286 BUILD_TYPE="$BUILD_TYPE BSH"
12289 AC_MSG_RESULT([no])
12290 ENABLE_SCRIPTING_BEANSHELL=
12291 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12293 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12294 AC_SUBST(SYSTEM_BSH)
12297 # scripting provider for JavaScript?
12298 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12299 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12300 AC_MSG_RESULT([yes])
12301 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12303 dnl ===================================================================
12304 dnl Check for system rhino
12305 dnl ===================================================================
12306 AC_MSG_CHECKING([which rhino to use])
12307 if test "$with_system_rhino" = "yes"; then
12308 AC_MSG_RESULT([external])
12310 if test -z $RHINO_JAR; then
12311 RHINO_JAR=/usr/share/java/js.jar
12313 if ! test -f $RHINO_JAR; then
12314 AC_MSG_ERROR(js.jar not found.)
12317 AC_MSG_RESULT([internal])
12319 BUILD_TYPE="$BUILD_TYPE RHINO"
12323 AC_MSG_RESULT([no])
12324 ENABLE_SCRIPTING_JAVASCRIPT=
12325 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12327 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12328 AC_SUBST(SYSTEM_RHINO)
12329 AC_SUBST(RHINO_JAR)
12331 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12332 # paths should be added to library search path. So lets put all 64-bit
12335 case "$host_cpu" in
12336 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12337 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12338 supports_multilib="yes"
12345 dnl ===================================================================
12346 dnl QT5 Integration
12347 dnl ===================================================================
12353 QT5_GOBJECT_CFLAGS=""
12354 QT5_GOBJECT_LIBS=""
12355 QT5_HAVE_GOBJECT=""
12356 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12357 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12358 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12360 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12361 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12363 if test -n "$supports_multilib"; then
12364 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12367 qt5_test_include="QtWidgets/qapplication.h"
12368 qt5_test_library="libQt5Widgets.so"
12370 dnl Check for qmake5
12371 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12372 if test "$QMAKE5" = "no"; then
12373 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12375 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12376 if test -z "$qmake5_test_ver"; then
12377 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12379 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12380 qt5_minimal_minor="6"
12381 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12382 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12384 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12388 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12389 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12391 AC_MSG_CHECKING([for Qt5 headers])
12393 for inc_dir in $qt5_incdirs; do
12394 if test -r "$inc_dir/$qt5_test_include"; then
12395 qt5_incdir="$inc_dir"
12399 AC_MSG_RESULT([$qt5_incdir])
12400 if test "x$qt5_incdir" = "xno"; then
12401 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12403 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12404 AC_LANG_PUSH([C++])
12405 save_CPPFLAGS=$CPPFLAGS
12406 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12407 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12408 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12409 CPPFLAGS=$save_CPPFLAGS
12412 AC_MSG_CHECKING([for Qt5 libraries])
12414 for lib_dir in $qt5_libdirs; do
12415 if test -r "$lib_dir/$qt5_test_library"; then
12416 qt5_libdir="$lib_dir"
12420 AC_MSG_RESULT([$qt5_libdir])
12421 if test "x$qt5_libdir" = "xno"; then
12422 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12425 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12426 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12427 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12429 if test "$USING_X11" = TRUE; then
12430 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12431 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12432 QT5_HAVE_XCB_ICCCM=1
12433 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12435 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)])
12436 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12438 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12439 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12441 AC_DEFINE(QT5_USING_X11)
12444 dnl Check for Meta Object Compiler
12446 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12447 if test "$MOC5" = "no"; then
12448 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12449 the root of your Qt installation by exporting QT5DIR before running "configure".])
12452 if test "$build_gstreamer_1_0" = "yes"; then
12453 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12455 AC_DEFINE(QT5_HAVE_GOBJECT)
12457 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12461 AC_SUBST(QT5_CFLAGS)
12464 AC_SUBST(QT5_GOBJECT_CFLAGS)
12465 AC_SUBST(QT5_GOBJECT_LIBS)
12466 AC_SUBST(QT5_HAVE_GOBJECT)
12468 dnl ===================================================================
12469 dnl KF5 Integration
12470 dnl ===================================================================
12474 KF5_CONFIG="kf5-config"
12475 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12476 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12478 if test "$OS" = "HAIKU"; then
12479 haiku_arch="`echo $RTL_ARCH | tr X x`"
12480 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12481 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12484 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12485 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12486 if test -n "$supports_multilib"; then
12487 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12490 kf5_test_include="KF5/kcoreaddons_version.h"
12491 kf5_test_library="libKF5CoreAddons.so"
12492 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12494 dnl kf5 KDE4 support compatibility installed
12495 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12496 if test "$KF5_CONFIG" != "no"; then
12497 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12498 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12501 dnl Check for KF5 headers
12502 AC_MSG_CHECKING([for KF5 headers])
12504 for kf5_check in $kf5_incdirs; do
12505 if test -r "$kf5_check/$kf5_test_include"; then
12506 kf5_incdir="$kf5_check/KF5"
12510 AC_MSG_RESULT([$kf5_incdir])
12511 if test "x$kf5_incdir" = "xno"; then
12512 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12515 dnl Check for KF5 libraries
12516 AC_MSG_CHECKING([for KF5 libraries])
12518 for kf5_check in $kf5_libdirs; do
12519 if test -r "$kf5_check/$kf5_test_library"; then
12520 kf5_libdir="$kf5_check"
12525 AC_MSG_RESULT([$kf5_libdir])
12526 if test "x$kf5_libdir" = "xno"; then
12527 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12530 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"
12531 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12532 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12534 if test "$USING_X11" = TRUE; then
12535 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12538 AC_LANG_PUSH([C++])
12539 save_CXXFLAGS=$CXXFLAGS
12540 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12541 AC_MSG_CHECKING([whether KDE is >= 5.0])
12542 AC_RUN_IFELSE([AC_LANG_SOURCE([[
12543 #include <kcoreaddons_version.h>
12545 int main(int argc, char **argv) {
12546 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12549 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12550 CXXFLAGS=$save_CXXFLAGS
12553 AC_SUBST(KF5_CFLAGS)
12556 dnl ===================================================================
12557 dnl Test whether to include Evolution 2 support
12558 dnl ===================================================================
12559 AC_MSG_CHECKING([whether to enable evolution 2 support])
12560 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12561 AC_MSG_RESULT([yes])
12562 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12563 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12564 FilterLibs "${GOBJECT_LIBS}"
12565 GOBJECT_LIBS="${filteredlibs}"
12566 ENABLE_EVOAB2="TRUE"
12569 AC_MSG_RESULT([no])
12571 AC_SUBST(ENABLE_EVOAB2)
12572 AC_SUBST(GOBJECT_CFLAGS)
12573 AC_SUBST(GOBJECT_LIBS)
12575 dnl ===================================================================
12576 dnl Test which themes to include
12577 dnl ===================================================================
12578 AC_MSG_CHECKING([which themes to include])
12579 # if none given use default subset of available themes
12580 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12581 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"
12585 if test "x$with_theme" != "xno"; then
12586 for theme in $with_theme; do
12588 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" ;;
12589 default) real_theme=colibre ;;
12590 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12592 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12595 AC_MSG_RESULT([$WITH_THEMES])
12596 AC_SUBST([WITH_THEMES])
12597 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12598 for theme in $with_theme; do
12600 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12605 dnl ===================================================================
12606 dnl Test whether to integrate helppacks into the product's installer
12607 dnl ===================================================================
12608 AC_MSG_CHECKING([for helppack integration])
12609 if test "$with_helppack_integration" = "no"; then
12610 AC_MSG_RESULT([no integration])
12612 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12613 AC_MSG_RESULT([integration])
12616 ###############################################################################
12617 # Extensions checking
12618 ###############################################################################
12619 AC_MSG_CHECKING([for extensions integration])
12620 if test "x$enable_extension_integration" != "xno"; then
12621 WITH_EXTENSION_INTEGRATION=TRUE
12622 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12623 AC_MSG_RESULT([yes, use integration])
12625 WITH_EXTENSION_INTEGRATION=
12626 AC_MSG_RESULT([no, do not integrate])
12628 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12630 dnl Should any extra extensions be included?
12631 dnl There are standalone tests for each of these below.
12632 WITH_EXTRA_EXTENSIONS=
12633 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12635 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12636 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12637 if test "x$with_java" != "xno"; then
12638 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12639 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12642 AC_MSG_CHECKING([whether to build opens___.ttf])
12643 if test "$enable_build_opensymbol" = "yes"; then
12644 AC_MSG_RESULT([yes])
12645 AC_PATH_PROG(FONTFORGE, fontforge)
12646 if test -z "$FONTFORGE"; then
12647 AC_MSG_ERROR([fontforge not installed])
12650 AC_MSG_RESULT([no])
12651 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12652 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12654 AC_SUBST(OPENSYMBOL_TTF)
12655 AC_SUBST(FONTFORGE)
12657 dnl ===================================================================
12658 dnl Test whether to include fonts
12659 dnl ===================================================================
12660 AC_MSG_CHECKING([whether to include third-party fonts])
12661 if test "$with_fonts" != "no"; then
12662 AC_MSG_RESULT([yes])
12664 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12665 AC_DEFINE(HAVE_MORE_FONTS)
12667 AC_MSG_RESULT([no])
12669 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12671 AC_SUBST(WITH_FONTS)
12674 dnl ===================================================================
12675 dnl Test whether to enable online update service
12676 dnl ===================================================================
12677 AC_MSG_CHECKING([whether to enable online update])
12678 ENABLE_ONLINE_UPDATE=
12679 ENABLE_ONLINE_UPDATE_MAR=
12681 if test "$enable_online_update" = ""; then
12682 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12683 AC_MSG_RESULT([yes])
12684 ENABLE_ONLINE_UPDATE="TRUE"
12686 AC_MSG_RESULT([no])
12689 if test "$enable_online_update" = "mar"; then
12690 AC_MSG_RESULT([yes - MAR-based online update])
12691 ENABLE_ONLINE_UPDATE_MAR="TRUE"
12692 if test "$with_update_config" = ""; then
12693 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12695 UPDATE_CONFIG="$with_update_config"
12696 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12697 elif test "$enable_online_update" = "yes"; then
12698 AC_MSG_RESULT([yes])
12699 ENABLE_ONLINE_UPDATE="TRUE"
12701 AC_MSG_RESULT([no])
12704 AC_SUBST(ENABLE_ONLINE_UPDATE)
12705 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12706 AC_SUBST(UPDATE_CONFIG)
12708 dnl ===================================================================
12709 dnl Test whether we need bzip2
12710 dnl ===================================================================
12712 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12713 AC_MSG_CHECKING([whether to use system bzip2])
12714 if test "$with_system_bzip2" = yes; then
12716 AC_MSG_RESULT([yes])
12717 PKG_CHECK_MODULES(BZIP2, bzip2)
12718 FilterLibs "${BZIP2_LIBS}"
12719 BZIP2_LIBS="${filteredlibs}"
12721 AC_MSG_RESULT([no])
12722 BUILD_TYPE="$BUILD_TYPE BZIP2"
12725 AC_SUBST(SYSTEM_BZIP2)
12726 AC_SUBST(BZIP2_CFLAGS)
12727 AC_SUBST(BZIP2_LIBS)
12729 dnl ===================================================================
12730 dnl Test whether to enable extension update
12731 dnl ===================================================================
12732 AC_MSG_CHECKING([whether to enable extension update])
12733 ENABLE_EXTENSION_UPDATE=
12734 if test "x$enable_extension_update" = "xno"; then
12735 AC_MSG_RESULT([no])
12737 AC_MSG_RESULT([yes])
12738 ENABLE_EXTENSION_UPDATE="TRUE"
12739 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12740 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12742 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12745 dnl ===================================================================
12746 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12747 dnl ===================================================================
12748 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12749 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12750 AC_MSG_RESULT([no])
12753 AC_MSG_RESULT([yes])
12754 ENABLE_SILENT_MSI=TRUE
12755 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12757 AC_SUBST(ENABLE_SILENT_MSI)
12759 AC_MSG_CHECKING([whether and how to use Xinerama])
12760 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12761 if test "$x_libraries" = "default_x_libraries"; then
12762 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12763 if test "x$XINERAMALIB" = x; then
12764 XINERAMALIB="/usr/lib"
12767 XINERAMALIB="$x_libraries"
12769 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12770 # we have both versions, let the user decide but use the dynamic one
12773 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12774 XINERAMA_LINK=dynamic
12776 XINERAMA_LINK=static
12778 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12779 # we have only the dynamic version
12781 XINERAMA_LINK=dynamic
12782 elif test -e "$XINERAMALIB/libXinerama.a"; then
12784 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12786 XINERAMA_LINK=static
12796 if test "$USE_XINERAMA" = "TRUE"; then
12797 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12798 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12799 [AC_MSG_ERROR(Xinerama header not found.)], [])
12800 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12801 if test "x$XEXTLIB" = x; then
12802 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12804 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12805 if test "$_os" = "FreeBSD"; then
12806 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12808 if test "$_os" = "Linux"; then
12809 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12811 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12812 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12814 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12819 AC_MSG_RESULT([no])
12821 AC_SUBST(USE_XINERAMA)
12822 AC_SUBST(XINERAMA_LINK)
12824 dnl ===================================================================
12825 dnl Test whether to build cairo or rely on the system version
12826 dnl ===================================================================
12828 if test "$USING_X11" = TRUE; then
12829 # Used in vcl/Library_vclplug_gen.mk
12833 if test "$test_cairo" = "yes"; then
12834 AC_MSG_CHECKING([whether to use the system cairo])
12836 : ${with_system_cairo:=$with_system_libs}
12837 if test "$with_system_cairo" = "yes"; then
12839 AC_MSG_RESULT([yes])
12841 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12842 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12843 FilterLibs "${CAIRO_LIBS}"
12844 CAIRO_LIBS="${filteredlibs}"
12846 if test "$test_xrender" = "yes"; then
12847 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12849 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12850 #ifdef PictStandardA8
12854 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12860 AC_MSG_RESULT([no])
12862 BUILD_TYPE="$BUILD_TYPE CAIRO"
12866 AC_SUBST(SYSTEM_CAIRO)
12867 AC_SUBST(CAIRO_CFLAGS)
12868 AC_SUBST(CAIRO_LIBS)
12870 dnl ===================================================================
12871 dnl Test whether to use avahi
12872 dnl ===================================================================
12873 if test "$_os" = "WINNT"; then
12874 # Windows uses bundled mDNSResponder
12875 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12876 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12877 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12878 [ENABLE_AVAHI="TRUE"])
12879 AC_DEFINE(HAVE_FEATURE_AVAHI)
12880 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12881 FilterLibs "${AVAHI_LIBS}"
12882 AVAHI_LIBS="${filteredlibs}"
12885 AC_SUBST(ENABLE_AVAHI)
12886 AC_SUBST(AVAHI_CFLAGS)
12887 AC_SUBST(AVAHI_LIBS)
12889 dnl ===================================================================
12890 dnl Test whether to use liblangtag
12891 dnl ===================================================================
12893 AC_MSG_CHECKING([whether to use system liblangtag])
12894 if test "$with_system_liblangtag" = yes; then
12895 SYSTEM_LIBLANGTAG=TRUE
12896 AC_MSG_RESULT([yes])
12897 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12898 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12899 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12900 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12901 FilterLibs "${LIBLANGTAG_LIBS}"
12902 LIBLANGTAG_LIBS="${filteredlibs}"
12905 AC_MSG_RESULT([no])
12906 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12907 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12908 if test "$COM" = "MSC"; then
12909 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12911 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12914 AC_SUBST(SYSTEM_LIBLANGTAG)
12915 AC_SUBST(LIBLANGTAG_CFLAGS)
12916 AC_SUBST(LIBLANGTAG_LIBS)
12918 dnl ===================================================================
12919 dnl Test whether to build libpng or rely on the system version
12920 dnl ===================================================================
12922 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12924 dnl ===================================================================
12925 dnl Check for runtime JVM search path
12926 dnl ===================================================================
12927 if test "$ENABLE_JAVA" != ""; then
12928 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12929 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12930 AC_MSG_RESULT([yes])
12931 if ! test -d "$with_jvm_path"; then
12932 AC_MSG_ERROR(["$with_jvm_path" not a directory])
12934 if ! test -d "$with_jvm_path"jvm; then
12935 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12937 JVM_ONE_PATH_CHECK="$with_jvm_path"
12938 AC_SUBST(JVM_ONE_PATH_CHECK)
12940 AC_MSG_RESULT([no])
12944 dnl ===================================================================
12945 dnl Test for the presence of Ant and that it works
12946 dnl ===================================================================
12948 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
12949 ANT_HOME=; export ANT_HOME
12950 WITH_ANT_HOME=; export WITH_ANT_HOME
12951 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12952 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12953 if test "$_os" = "WINNT"; then
12954 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12956 with_ant_home="$LODE_HOME/opt/ant"
12958 elif test -x "$LODE_HOME/opt/bin/ant" ; then
12959 with_ant_home="$LODE_HOME/opt/ant"
12962 if test -z "$with_ant_home"; then
12963 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12965 if test "$_os" = "WINNT"; then
12966 # AC_PATH_PROGS needs unix path
12967 with_ant_home=`cygpath -u "$with_ant_home"`
12969 AbsolutePath "$with_ant_home"
12970 with_ant_home=$absolute_path
12971 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12972 WITH_ANT_HOME=$with_ant_home
12973 ANT_HOME=$with_ant_home
12976 if test -z "$ANT"; then
12977 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12979 # resolve relative or absolute symlink
12980 while test -h "$ANT"; do
12982 a_basename=`basename "$ANT"`
12983 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12984 cd "`dirname "$ANT"`"
12985 cd "`dirname "$a_script"`"
12986 ANT="`pwd`"/"`basename "$a_script"`"
12990 AC_MSG_CHECKING([if $ANT works])
12991 mkdir -p conftest.dir
12994 cat > conftest.java << EOF
12995 public class conftest {
12996 int testmethod(int a, int b) {
13002 cat > conftest.xml << EOF
13003 <project name="conftest" default="conftest">
13004 <target name="conftest">
13005 <javac srcdir="." includes="conftest.java">
13011 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13012 if test $? = 0 -a -f ./conftest.class; then
13013 AC_MSG_RESULT([Ant works])
13014 if test -z "$WITH_ANT_HOME"; then
13015 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13016 if test -z "$ANT_HOME"; then
13017 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13020 ANT_HOME="$WITH_ANT_HOME"
13023 echo "configure: Ant test failed" >&5
13024 cat conftest.java >&5
13025 cat conftest.xml >&5
13026 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13029 rm -fr conftest.dir
13031 if test -z "$ANT_HOME"; then
13032 ANT_HOME="NO_ANT_HOME"
13034 PathFormat "$ANT_HOME"
13035 ANT_HOME="$formatted_path"
13037 ANT="$formatted_path"
13040 dnl Checking for ant.jar
13041 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13042 AC_MSG_CHECKING([Ant lib directory])
13043 if test -f $ANT_HOME/lib/ant.jar; then
13044 ANT_LIB="$ANT_HOME/lib"
13046 if test -f $ANT_HOME/ant.jar; then
13047 ANT_LIB="$ANT_HOME"
13049 if test -f /usr/share/java/ant.jar; then
13050 ANT_LIB=/usr/share/java
13052 if test -f /usr/share/ant-core/lib/ant.jar; then
13053 ANT_LIB=/usr/share/ant-core/lib
13055 if test -f $ANT_HOME/lib/ant/ant.jar; then
13056 ANT_LIB="$ANT_HOME/lib/ant"
13058 if test -f /usr/share/lib/ant/ant.jar; then
13059 ANT_LIB=/usr/share/lib/ant
13061 AC_MSG_ERROR([Ant libraries not found!])
13068 PathFormat "$ANT_LIB"
13069 ANT_LIB="$formatted_path"
13070 AC_MSG_RESULT([Ant lib directory found.])
13074 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13076 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13077 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13078 ant_version_major=`echo $ant_version | cut -d. -f1`
13079 ant_version_minor=`echo $ant_version | cut -d. -f2`
13080 echo "configure: ant_version $ant_version " >&5
13081 echo "configure: ant_version_major $ant_version_major " >&5
13082 echo "configure: ant_version_minor $ant_version_minor " >&5
13083 if test "$ant_version_major" -ge "2"; then
13084 AC_MSG_RESULT([yes, $ant_version])
13085 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13086 AC_MSG_RESULT([yes, $ant_version])
13088 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13091 rm -f conftest* core core.* *.core
13099 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13100 AC_MSG_CHECKING([for JUnit 4])
13101 if test "$with_junit" = "yes"; then
13102 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13103 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13104 elif test -e /usr/share/java/junit4.jar; then
13105 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13107 if test -e /usr/share/lib/java/junit.jar; then
13108 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13110 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13114 OOO_JUNIT_JAR=$with_junit
13116 if test "$_os" = "WINNT"; then
13117 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13119 printf 'import org.junit.Before;' > conftest.java
13120 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13121 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13124 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13125 specify its pathname via --with-junit=..., or disable it via --without-junit])
13127 rm -f conftest.class conftest.java
13128 if test $OOO_JUNIT_JAR != ""; then
13129 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13132 AC_MSG_CHECKING([for included Hamcrest])
13133 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13134 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13135 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13137 AC_MSG_RESULT([Not included])
13138 AC_MSG_CHECKING([for standalone hamcrest jar.])
13139 if test "$with_hamcrest" = "yes"; then
13140 if test -e /usr/share/lib/java/hamcrest.jar; then
13141 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13142 elif test -e /usr/share/java/hamcrest/core.jar; then
13143 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13145 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13148 HAMCREST_JAR=$with_hamcrest
13150 if test "$_os" = "WINNT"; then
13151 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13153 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13154 AC_MSG_RESULT([$HAMCREST_JAR])
13156 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),
13157 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13160 rm -f conftest.class conftest.java
13162 AC_SUBST(OOO_JUNIT_JAR)
13163 AC_SUBST(HAMCREST_JAR)
13169 # check for wget and curl
13174 if test "$enable_fetch_external" != "no"; then
13176 CURL=`which curl 2>/dev/null`
13178 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13180 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13181 if test $? -eq 0; then
13187 if test -z "$WGET" -a -z "$CURL"; then
13188 AC_MSG_ERROR([neither wget nor curl found!])
13197 # check for sha256sum
13201 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13202 eval "$i -a 256 --version" > /dev/null 2>&1
13204 if test $ret -eq 0; then
13205 SHA256SUM="$i -a 256"
13210 if test -z "$SHA256SUM"; then
13211 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13212 eval "$i --version" > /dev/null 2>&1
13214 if test $ret -eq 0; then
13221 if test -z "$SHA256SUM"; then
13222 AC_MSG_ERROR([no sha256sum found!])
13225 AC_SUBST(SHA256SUM)
13227 dnl ===================================================================
13228 dnl Dealing with l10n options
13229 dnl ===================================================================
13230 AC_MSG_CHECKING([which languages to be built])
13231 # get list of all languages
13232 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13233 # the sed command does the following:
13234 # + if a line ends with a backslash, append the next line to it
13235 # + adds " on the beginning of the value (after =)
13236 # + adds " at the end of the value
13237 # + removes en-US; we want to put it on the beginning
13238 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13239 [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)]
13240 ALL_LANGS="en-US $completelangiso"
13241 # check the configured localizations
13242 WITH_LANG="$with_lang"
13244 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13245 # (Norwegian is "nb" and "nn".)
13246 if test "$WITH_LANG" = "no"; then
13250 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13251 AC_MSG_RESULT([en-US])
13253 AC_MSG_RESULT([$WITH_LANG])
13254 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13255 if test -z "$MSGFMT"; then
13256 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13257 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13258 elif test -x "/opt/lo/bin/msgfmt"; then
13259 MSGFMT="/opt/lo/bin/msgfmt"
13261 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13262 if test -z "$MSGFMT"; then
13263 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13267 if test -z "$MSGUNIQ"; then
13268 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13269 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13270 elif test -x "/opt/lo/bin/msguniq"; then
13271 MSGUNIQ="/opt/lo/bin/msguniq"
13273 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13274 if test -z "$MSGUNIQ"; then
13275 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13282 # check that the list is valid
13283 for lang in $WITH_LANG; do
13284 test "$lang" = "ALL" && continue
13285 # need to check for the exact string, so add space before and after the list of all languages
13286 for vl in $ALL_LANGS; do
13287 if test "$vl" = "$lang"; then
13291 if test "$vl" != "$lang"; then
13292 # if you're reading this - you prolly quoted your languages remove the quotes ...
13293 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13296 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13297 echo $WITH_LANG | grep -q en-US
13298 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13300 # list with substituted ALL
13301 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13302 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13303 test "$WITH_LANG" = "en-US" && WITH_LANG=
13304 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13305 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13306 ALL_LANGS=`echo $ALL_LANGS qtz`
13308 AC_SUBST(ALL_LANGS)
13309 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13310 AC_SUBST(WITH_LANG)
13311 AC_SUBST(WITH_LANG_LIST)
13312 AC_SUBST(GIT_NEEDED_SUBMODULES)
13314 WITH_POOR_HELP_LOCALIZATIONS=
13315 if test -d "$SRC_ROOT/translations/source"; then
13316 for l in `ls -1 $SRC_ROOT/translations/source`; do
13317 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13318 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13322 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13324 if test -n "$with_locales"; then
13325 WITH_LOCALES="$with_locales"
13327 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13328 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13329 # config_host/config_locales.h.in
13330 for locale in $WITH_LOCALES; do
13333 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13337 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13340 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13345 AC_DEFINE(WITH_LOCALE_ALL)
13347 AC_SUBST(WITH_LOCALES)
13349 dnl git submodule update --reference
13350 dnl ===================================================================
13351 if test -n "${GIT_REFERENCE_SRC}"; then
13352 for repo in ${GIT_NEEDED_SUBMODULES}; do
13353 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13354 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13358 AC_SUBST(GIT_REFERENCE_SRC)
13360 dnl git submodules linked dirs
13361 dnl ===================================================================
13362 if test -n "${GIT_LINK_SRC}"; then
13363 for repo in ${GIT_NEEDED_SUBMODULES}; do
13364 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13365 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13369 AC_SUBST(GIT_LINK_SRC)
13372 dnl ===================================================================
13373 AC_MSG_CHECKING([for alternative branding images directory])
13374 # initialize mapped arrays
13375 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13376 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13378 if test -z "$with_branding" -o "$with_branding" = "no"; then
13379 AC_MSG_RESULT([none])
13380 DEFAULT_BRAND_IMAGES="$brand_files"
13382 if ! test -d $with_branding ; then
13383 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13385 AC_MSG_RESULT([$with_branding])
13386 CUSTOM_BRAND_DIR="$with_branding"
13387 for lfile in $brand_files
13389 if ! test -f $with_branding/$lfile ; then
13390 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13391 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13393 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13396 check_for_progress="yes"
13399 AC_SUBST([BRAND_INTRO_IMAGES])
13400 AC_SUBST([CUSTOM_BRAND_DIR])
13401 AC_SUBST([CUSTOM_BRAND_IMAGES])
13402 AC_SUBST([DEFAULT_BRAND_IMAGES])
13405 AC_MSG_CHECKING([for 'intro' progress settings])
13409 PROGRESSFRAMECOLOR=
13411 PROGRESSTEXTBASELINE=
13413 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13414 source "$with_branding/progress.conf"
13415 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13417 AC_MSG_RESULT([none])
13420 AC_SUBST(PROGRESSBARCOLOR)
13421 AC_SUBST(PROGRESSSIZE)
13422 AC_SUBST(PROGRESSPOSITION)
13423 AC_SUBST(PROGRESSFRAMECOLOR)
13424 AC_SUBST(PROGRESSTEXTCOLOR)
13425 AC_SUBST(PROGRESSTEXTBASELINE)
13428 dnl ===================================================================
13429 dnl Custom build version
13430 dnl ===================================================================
13431 AC_MSG_CHECKING([for extra build ID])
13432 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13433 EXTRA_BUILDID="$with_extra_buildid"
13435 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13436 if test -n "$EXTRA_BUILDID" ; then
13437 AC_MSG_RESULT([$EXTRA_BUILDID])
13439 AC_MSG_RESULT([not set])
13441 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13444 AC_MSG_CHECKING([for vendor])
13445 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13446 OOO_VENDOR="$USERNAME"
13448 if test -z "$OOO_VENDOR"; then
13452 if test -z "$OOO_VENDOR"; then
13453 OOO_VENDOR="`id -u -n`"
13456 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13458 OOO_VENDOR="$with_vendor"
13459 AC_MSG_RESULT([$OOO_VENDOR])
13461 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13462 AC_SUBST(OOO_VENDOR)
13464 if test "$_os" = "Android" ; then
13465 ANDROID_PACKAGE_NAME=
13466 AC_MSG_CHECKING([for Android package name])
13467 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13468 if test -n "$ENABLE_DEBUG"; then
13469 # Default to the package name that makes ndk-gdb happy.
13470 ANDROID_PACKAGE_NAME="org.libreoffice"
13472 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13475 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13477 ANDROID_PACKAGE_NAME="$with_android_package_name"
13478 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13480 AC_SUBST(ANDROID_PACKAGE_NAME)
13483 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13484 if test "$with_compat_oowrappers" = "yes"; then
13485 WITH_COMPAT_OOWRAPPERS=TRUE
13488 WITH_COMPAT_OOWRAPPERS=
13491 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13493 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13494 AC_MSG_CHECKING([for install dirname])
13495 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13496 INSTALLDIRNAME="$with_install_dirname"
13498 AC_MSG_RESULT([$INSTALLDIRNAME])
13499 AC_SUBST(INSTALLDIRNAME)
13501 AC_MSG_CHECKING([for prefix])
13502 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13503 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13504 PREFIXDIR="$prefix"
13505 AC_MSG_RESULT([$PREFIXDIR])
13506 AC_SUBST(PREFIXDIR)
13508 LIBDIR=[$(eval echo $(eval echo $libdir))]
13511 DATADIR=[$(eval echo $(eval echo $datadir))]
13514 MANDIR=[$(eval echo $(eval echo $mandir))]
13517 DOCDIR=[$(eval echo $(eval echo $docdir))]
13520 BINDIR=[$(eval echo $(eval echo $bindir))]
13523 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13524 AC_SUBST(INSTALLDIR)
13526 TESTINSTALLDIR="${BUILDDIR}/test-install"
13527 AC_SUBST(TESTINSTALLDIR)
13530 # ===================================================================
13531 # OAuth2 id and secrets
13532 # ===================================================================
13534 AC_MSG_CHECKING([for Google Drive client id and secret])
13535 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13536 AC_MSG_RESULT([not set])
13537 GDRIVE_CLIENT_ID="\"\""
13538 GDRIVE_CLIENT_SECRET="\"\""
13540 AC_MSG_RESULT([set])
13541 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13542 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13544 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13545 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13547 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13548 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13549 AC_MSG_RESULT([not set])
13550 ALFRESCO_CLOUD_CLIENT_ID="\"\""
13551 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13553 AC_MSG_RESULT([set])
13554 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13555 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13557 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13558 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13560 AC_MSG_CHECKING([for OneDrive client id and secret])
13561 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13562 AC_MSG_RESULT([not set])
13563 ONEDRIVE_CLIENT_ID="\"\""
13564 ONEDRIVE_CLIENT_SECRET="\"\""
13566 AC_MSG_RESULT([set])
13567 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13568 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13570 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13571 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13574 dnl ===================================================================
13575 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13576 dnl --enable-dependency-tracking configure option
13577 dnl ===================================================================
13578 AC_MSG_CHECKING([whether to enable dependency tracking])
13579 if test "$enable_dependency_tracking" = "no"; then
13581 AC_MSG_RESULT([no])
13583 AC_MSG_RESULT([yes])
13587 dnl ===================================================================
13588 dnl Number of CPUs to use during the build
13589 dnl ===================================================================
13590 AC_MSG_CHECKING([for number of processors to use])
13591 # plain --with-parallelism is just the default
13592 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13593 if test "$with_parallelism" = "no"; then
13596 PARALLELISM=$with_parallelism
13599 if test "$enable_icecream" = "yes"; then
13604 Darwin|FreeBSD|NetBSD|OpenBSD)
13605 PARALLELISM=`sysctl -n hw.ncpu`
13609 PARALLELISM=`getconf _NPROCESSORS_ONLN`
13611 # what else than above does profit here *and* has /proc?
13613 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13617 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13618 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13622 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13623 if test -z "$with_parallelism"; then
13624 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13625 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13628 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."
13632 if test $PARALLELISM -eq 0; then
13633 AC_MSG_RESULT([explicit make -j option needed])
13635 AC_MSG_RESULT([$PARALLELISM])
13637 AC_SUBST(PARALLELISM)
13639 IWYU_PATH="$with_iwyu"
13640 AC_SUBST(IWYU_PATH)
13641 if test ! -z "$IWYU_PATH"; then
13642 if test ! -f "$IWYU_PATH"; then
13643 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13648 # Set up ILIB for MSVC build
13651 if test "$build_os" = "cygwin"; then
13653 if test -n "$JAVA_HOME"; then
13654 ILIB="$ILIB;$JAVA_HOME/lib"
13657 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13658 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13659 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13660 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13661 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13662 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13663 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13665 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13666 ucrtlibpath_formatted=$formatted_path
13667 ILIB="$ILIB;$ucrtlibpath_formatted"
13668 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13669 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13670 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13672 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13675 if test "$cross_compiling" != "yes"; then
13676 ILIB_FOR_BUILD="$ILIB"
13680 AC_SUBST(ILIB_FOR_BUILD)
13682 # ===================================================================
13683 # Creating bigger shared library to link against
13684 # ===================================================================
13685 AC_MSG_CHECKING([whether to create huge library])
13688 if test $_os = iOS -o $_os = Android; then
13689 # Never any point in mergelibs for these as we build just static
13690 # libraries anyway...
13691 enable_mergelibs=no
13694 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13695 if test $_os != Linux -a $_os != WINNT; then
13696 add_warning "--enable-mergelibs is not tested for this platform"
13699 AC_MSG_RESULT([yes])
13700 AC_DEFINE(ENABLE_MERGELIBS)
13702 AC_MSG_RESULT([no])
13704 AC_SUBST([MERGELIBS])
13706 dnl ===================================================================
13707 dnl icerun is a wrapper that stops us spawning tens of processes
13708 dnl locally - for tools that can't be executed on the compile cluster
13709 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13710 dnl ===================================================================
13711 AC_MSG_CHECKING([whether to use icerun wrapper])
13713 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13714 ICECREAM_RUN=icerun
13715 AC_MSG_RESULT([yes])
13717 AC_MSG_RESULT([no])
13719 AC_SUBST(ICECREAM_RUN)
13721 dnl ===================================================================
13722 dnl Setup the ICECC_VERSION for the build the same way it was set for
13723 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13724 dnl ===================================================================
13725 x_ICECC_VERSION=[\#]
13726 if test -n "$ICECC_VERSION" ; then
13729 AC_SUBST(x_ICECC_VERSION)
13730 AC_SUBST(ICECC_VERSION)
13732 dnl ===================================================================
13734 AC_MSG_CHECKING([MPL subset])
13737 if test "$enable_mpl_subset" = "yes"; then
13739 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13741 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13744 if test "$warn_report" = "true"; then
13745 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13747 if test "x$enable_postgresql_sdbc" != "xno"; then
13748 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13750 if test "$enable_lotuswordpro" = "yes"; then
13751 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13753 if test "$WITH_WEBDAV" = "neon"; then
13754 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13756 if test -n "$ENABLE_POPPLER"; then
13757 if test "x$SYSTEM_POPPLER" = "x"; then
13758 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13761 # cf. m4/libo_check_extension.m4
13762 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13763 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13765 for theme in $WITH_THEMES; do
13767 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13768 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13773 ENABLE_OPENGL_TRANSITIONS=
13775 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13776 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13780 AC_DEFINE(MPL_HAVE_SUBSET)
13781 AC_MSG_RESULT([only])
13783 AC_MSG_RESULT([no restrictions])
13785 AC_SUBST(MPL_SUBSET)
13787 dnl ===================================================================
13789 AC_MSG_CHECKING([formula logger])
13790 ENABLE_FORMULA_LOGGER=
13792 if test "x$enable_formula_logger" = "xyes"; then
13793 AC_MSG_RESULT([yes])
13794 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13795 ENABLE_FORMULA_LOGGER=TRUE
13796 elif test -n "$ENABLE_DBGUTIL" ; then
13797 AC_MSG_RESULT([yes])
13798 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13799 ENABLE_FORMULA_LOGGER=TRUE
13801 AC_MSG_RESULT([no])
13804 AC_SUBST(ENABLE_FORMULA_LOGGER)
13806 dnl ===================================================================
13807 dnl Checking for active Antivirus software.
13808 dnl ===================================================================
13810 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13811 AC_MSG_CHECKING([for active Antivirus software])
13812 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13813 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13814 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13815 AC_MSG_RESULT([found])
13816 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13817 echo $EICAR_STRING > $SRC_ROOT/eicar
13818 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13820 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13821 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13823 echo $EICAR_STRING > $BUILDDIR/eicar
13824 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13826 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13827 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13829 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"
13831 AC_MSG_RESULT([not found])
13834 AC_MSG_RESULT([n/a])
13838 dnl ===================================================================
13839 dnl Setting up the environment.
13840 dnl ===================================================================
13841 AC_MSG_NOTICE([setting up the build environment variables...])
13845 if test "$build_os" = "cygwin"; then
13846 if test -d "$COMPATH/atlmfc/lib/spectre"; then
13847 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13848 ATL_INCLUDE="$COMPATH/atlmfc/include"
13849 elif test -d "$COMPATH/atlmfc/lib"; then
13850 ATL_LIB="$COMPATH/atlmfc/lib"
13851 ATL_INCLUDE="$COMPATH/atlmfc/include"
13853 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13854 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13856 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13857 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13858 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13860 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13861 PathFormat "/usr/bin/find.exe"
13862 FIND="$formatted_path"
13863 PathFormat "/usr/bin/sort.exe"
13864 SORT="$formatted_path"
13865 PathFormat "/usr/bin/grep.exe"
13866 WIN_GREP="$formatted_path"
13867 PathFormat "/usr/bin/ls.exe"
13868 WIN_LS="$formatted_path"
13869 PathFormat "/usr/bin/touch.exe"
13870 WIN_TOUCH="$formatted_path"
13876 AC_SUBST(ATL_INCLUDE)
13882 AC_SUBST(WIN_TOUCH)
13884 AC_SUBST(BUILD_TYPE)
13889 PERL="$formatted_path"
13892 if test -n "$TMPDIR"; then
13893 TEMP_DIRECTORY="$TMPDIR"
13895 TEMP_DIRECTORY="/tmp"
13897 if test "$build_os" = "cygwin"; then
13898 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13900 AC_SUBST(TEMP_DIRECTORY)
13902 # setup the PATH for the environment
13903 if test -n "$LO_PATH_FOR_BUILD"; then
13904 LO_PATH="$LO_PATH_FOR_BUILD"
13907 pathmunge "$MSVC_HOST_PATH" "before"
13915 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13916 if test "$ENABLE_JAVA" != ""; then
13917 pathmunge "$JAVA_HOME/bin" "after"
13922 # Win32 make needs native paths
13923 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13924 LO_PATH=`cygpath -p -m "$PATH"`
13926 if test "$WIN_BUILD_ARCH" = "x64"; then
13927 # needed for msi packaging
13928 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13930 # .NET 4.6 and higher don't have bin directory
13931 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13932 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13934 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13935 pathmunge "$CSC_PATH" "before"
13936 pathmunge "$MIDL_PATH" "before"
13937 pathmunge "$AL_PATH" "before"
13938 pathmunge "$MSVC_MULTI_PATH" "before"
13939 pathmunge "$MSVC_BUILD_PATH" "before"
13940 if test -n "$MSBUILD_PATH" ; then
13941 pathmunge "$MSBUILD_PATH" "before"
13943 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13944 if test "$ENABLE_JAVA" != ""; then
13945 if test -d "$JAVA_HOME/jre/bin/client"; then
13946 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13948 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13949 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13951 pathmunge "$JAVA_HOME/bin" "before"
13953 pathmunge "$MSVC_HOST_PATH" "before"
13957 pathmunge "/usr/css/bin" "before"
13958 if test "$ENABLE_JAVA" != ""; then
13959 pathmunge "$JAVA_HOME/bin" "after"
13967 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
13968 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
13969 x_LO_ELFCHECK_ALLOWLIST=
13971 x_LO_ELFCHECK_ALLOWLIST=[\#]
13973 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
13974 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
13978 # Generate a configuration sha256 we can use for deps
13979 if test -f config_host.mk; then
13980 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13982 if test -f config_host_lang.mk; then
13983 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13986 CFLAGS=$my_original_CFLAGS
13987 CXXFLAGS=$my_original_CXXFLAGS
13988 CPPFLAGS=$my_original_CPPFLAGS
13990 AC_CONFIG_LINKS([include:include])
13992 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
13993 # BUILD platform configuration] - otherwise breaks cross building
13994 AC_CONFIG_FILES([config_host.mk
13995 config_host_lang.mk
13997 bin/bffvalidator.sh
13998 bin/odfvalidator.sh
14000 hardened_runtime.xcent
14001 instsetoo_native/util/openoffice.lst
14002 sysui/desktop/macosx/Info.plist
14003 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14004 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14005 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14006 AC_CONFIG_HEADERS([config_host/config_clang.h])
14007 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14008 AC_CONFIG_HEADERS([config_host/config_eot.h])
14009 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14010 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14011 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14012 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14013 AC_CONFIG_HEADERS([config_host/config_features.h])
14014 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14015 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14016 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14017 AC_CONFIG_HEADERS([config_host/config_folders.h])
14018 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14019 AC_CONFIG_HEADERS([config_host/config_gio.h])
14020 AC_CONFIG_HEADERS([config_host/config_global.h])
14021 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14022 AC_CONFIG_HEADERS([config_host/config_java.h])
14023 AC_CONFIG_HEADERS([config_host/config_langs.h])
14024 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14025 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14026 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14027 AC_CONFIG_HEADERS([config_host/config_locales.h])
14028 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14029 AC_CONFIG_HEADERS([config_host/config_oox.h])
14030 AC_CONFIG_HEADERS([config_host/config_options.h])
14031 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14032 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14033 AC_CONFIG_HEADERS([config_host/config_skia.h])
14034 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14035 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14036 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14037 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14038 AC_CONFIG_HEADERS([config_host/config_version.h])
14039 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14040 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14041 AC_CONFIG_HEADERS([config_host/config_python.h])
14042 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14045 if test "$CROSS_COMPILING" = TRUE; then
14046 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14049 # touch the config timestamp file
14050 if test ! -f config_host.mk.stamp; then
14051 echo > config_host.mk.stamp
14052 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14053 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14055 echo > config_host.mk.stamp
14058 # touch the config lang timestamp file
14059 if test ! -f config_host_lang.mk.stamp; then
14060 echo > config_host_lang.mk.stamp
14061 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14062 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14064 echo > config_host_lang.mk.stamp
14068 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14069 -a "$build_os" = "cygwin"; then
14072 ****************************************************************************
14074 Your make version is known to be horribly slow, and hard to debug
14075 problems with. To get a reasonably functional make please do:
14077 to install a pre-compiled binary make for Win32
14079 mkdir -p /opt/lo/bin
14081 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14082 cp make-4.2.1-msvc.exe make
14085 to install from source:
14086 place yourself in a working directory of you choice.
14088 git clone git://git.savannah.gnu.org/make.git
14090 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14091 set PATH=%PATH%;C:\Cygwin\bin
14092 [or Cygwin64, if that is what you have]
14093 cd path-to-make-repo-you-cloned-above
14094 build_w32.bat --without-guile
14096 should result in a WinRel/gnumake.exe.
14097 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14099 Then re-run autogen.sh
14101 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14102 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14105 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14106 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14112 ****************************************************************************
14117 To view some help, run:
14122 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14124 After the build has finished successfully, you can immediately run what you built using the command:
14127 if test $_os = Darwin; then
14128 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14130 echo instdir/program/soffice
14134 If you want to run the smoketest, run:
14140 if test -f warn; then
14145 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: