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 AC_SUBST(ANDROID_NDK_HOME)
756 AC_SUBST(ANDROID_APP_ABI)
757 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
759 dnl ===================================================================
760 dnl --with-android-sdk
761 dnl ===================================================================
763 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
764 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
766 if test -n "$with_android_sdk"; then
767 eval ANDROID_SDK_HOME=$with_android_sdk
768 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
770 AC_SUBST(ANDROID_SDK_HOME)
772 AC_ARG_ENABLE([android-lok],
773 AS_HELP_STRING([--enable-android-lok],
774 [The Android app from the android/ subdir needs several tweaks all
775 over the place that break the LOK when used in the Online-based
776 Android app. This switch indicates that the intent of this build is
777 actually the Online-based, non-modified LOK.])
780 if test -n "$ANDROID_NDK_HOME" ; then
781 if test "$enable_android_lok" = yes; then
782 ENABLE_ANDROID_LOK=TRUE
783 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
784 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
786 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
789 AC_SUBST([ENABLE_ANDROID_LOK])
791 libo_FUZZ_ARG_ENABLE([android-editing],
792 AS_HELP_STRING([--enable-android-editing],
793 [Enable the experimental editing feature on Android.])
795 ENABLE_ANDROID_EDITING=
796 if test "$enable_android_editing" = yes; then
797 ENABLE_ANDROID_EDITING=TRUE
799 AC_SUBST([ENABLE_ANDROID_EDITING])
801 dnl ===================================================================
802 dnl The following is a list of supported systems.
803 dnl Sequential to keep the logic very simple
804 dnl These values may be checked and reset later.
805 dnl ===================================================================
806 #defaults unless the os test overrides this:
818 # Default values, as such probably valid just for Linux, set
819 # differently below just for Mac OSX, but at least better than
820 # hardcoding these as we used to do. Much of this is duplicated also
821 # in solenv for old build system and for gbuild, ideally we should
822 # perhaps define stuff like this only here in configure.ac?
824 LINKFLAGSSHL="-shared"
828 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
831 INSTROOTCONTENTSUFFIX=
834 HOST_PLATFORM="$host"
836 host_cpu_for_clang="$host_cpu"
841 build_gstreamer_1_0=yes
846 dnl ===========================================================
847 dnl Check whether we're using Solaris 10 - SPARC or Intel.
848 dnl ===========================================================
849 AC_MSG_CHECKING([the Solaris operating system release])
850 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
851 if test "$_os_release" -lt "10"; then
852 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
854 AC_MSG_RESULT([ok ($_os_release)])
857 dnl Check whether we're using a SPARC or i386 processor
858 AC_MSG_CHECKING([the processor type])
859 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
860 AC_MSG_RESULT([ok ($host_cpu)])
862 AC_MSG_ERROR([only SPARC and i386 processors are supported])
866 linux-gnu*|k*bsd*-gnu*)
867 build_gstreamer_1_0=yes
873 if test "$enable_fuzzers" != yes; then
879 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
892 # When building on Windows normally with MSVC under Cygwin,
893 # configure thinks that the host platform (the platform the
894 # built code will run on) is Cygwin, even if it obviously is
895 # Windows, which in Autoconf terminology is called
896 # "mingw32". (Which is misleading as MinGW is the name of the
897 # tool-chain, not an operating system.)
899 # Somewhat confusing, yes. But this configure script doesn't
900 # look at $host etc that much, it mostly uses its own $_os
901 # variable, set here in this case statement.
915 if test "$host_cpu" = "aarch64"; then
918 enable_firebird_sdbc=no
922 darwin*|macos*) # macOS
928 if test -n "$LODE_HOME" ; then
930 AC_MSG_NOTICE([sanitized the PATH to $PATH])
933 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
934 INSTROOTCONTENTSUFFIX=/Contents
935 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
936 # See comment above the case "$host_os"
937 LINKFLAGSSHL="-dynamiclib -single_module"
944 # -undefined error is the default
950 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
951 # the "macos" part so be sure to use aarch64-apple-darwin for now.
952 HOST_PLATFORM=aarch64-apple-darwin
956 # Apple's Clang uses "arm64"
957 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
1105 enable_postgresql_sdbc=no
1106 enable_firebird_sdbc=no
1111 build_gstreamer_1_0=no
1113 enable_report_builder=no
1124 enable_postgresql_sdbc=no
1125 enable_firebird_sdbc=no
1126 enable_mariadb_sdbc=no
1130 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
1134 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1138 AC_SUBST(HOST_PLATFORM)
1140 if test "$_os" = "Android" ; then
1141 # Verify that the NDK and SDK options are proper
1142 if test -z "$with_android_ndk"; then
1143 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1144 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1145 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1148 if test -z "$ANDROID_SDK_HOME"; then
1149 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1150 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1151 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1154 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1155 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1156 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1157 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1158 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1159 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1160 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1161 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1163 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1164 AC_MSG_WARN([android support repository not found - install with
1165 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1166 to allow the build to download the specified version of the android support libraries])
1167 add_warning "android support repository not found - install with"
1168 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1169 add_warning "to allow the build to download the specified version of the android support libraries"
1173 if test "$_os" = "AIX"; then
1174 AC_PATH_PROG(GAWK, gawk)
1175 if test -z "$GAWK"; then
1176 AC_MSG_ERROR([gawk not found in \$PATH])
1180 AC_SUBST(SDKDIRNAME)
1182 AC_SUBST(PTHREAD_CFLAGS)
1183 AC_SUBST(PTHREAD_LIBS)
1185 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1186 # By default use the ones specified by our build system,
1187 # but explicit override is possible.
1188 AC_MSG_CHECKING(for explicit AFLAGS)
1189 if test -n "$AFLAGS"; then
1190 AC_MSG_RESULT([$AFLAGS])
1196 AC_MSG_CHECKING(for explicit CFLAGS)
1197 if test -n "$CFLAGS"; then
1198 AC_MSG_RESULT([$CFLAGS])
1204 AC_MSG_CHECKING(for explicit CXXFLAGS)
1205 if test -n "$CXXFLAGS"; then
1206 AC_MSG_RESULT([$CXXFLAGS])
1212 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1213 if test -n "$OBJCFLAGS"; then
1214 AC_MSG_RESULT([$OBJCFLAGS])
1220 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1221 if test -n "$OBJCXXFLAGS"; then
1222 AC_MSG_RESULT([$OBJCXXFLAGS])
1228 AC_MSG_CHECKING(for explicit LDFLAGS)
1229 if test -n "$LDFLAGS"; then
1230 AC_MSG_RESULT([$LDFLAGS])
1240 AC_SUBST(OBJCXXFLAGS)
1244 AC_SUBST(x_CXXFLAGS)
1245 AC_SUBST(x_OBJCFLAGS)
1246 AC_SUBST(x_OBJCXXFLAGS)
1249 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1250 my_original_CFLAGS=$CFLAGS
1251 my_original_CXXFLAGS=$CXXFLAGS
1252 my_original_CPPFLAGS=$CPPFLAGS
1254 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1255 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1256 dnl AC_PROG_CC internally.
1257 if test "$_os" != "WINNT"; then
1258 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1262 if test -z "$CC_BASE"; then
1263 CC_BASE=`first_arg_basename "$CC"`
1267 if test "$_os" != "WINNT"; then
1268 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1272 AC_SUBST(ENDIANNESS)
1274 if test $_os != "WINNT"; then
1276 AC_SEARCH_LIBS([dlsym], [dl],
1277 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1278 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1281 AC_SUBST(DLOPEN_LIBS)
1283 dnl ===================================================================
1284 dnl Sanity checks for Emscripten SDK setup
1285 dnl ===================================================================
1287 if test "$_os" = "Emscripten"; then
1289 if ! which emconfigure >/dev/null 2>&1; then
1290 AC_MSG_WARN([emconfigure must be in your \$PATH])
1293 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1294 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1297 if test $EMSCRIPTEN_ERROR -ne 0; then
1298 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1302 ###############################################################################
1303 # Extensions switches --enable/--disable
1304 ###############################################################################
1305 # By default these should be enabled unless having extra dependencies.
1306 # If there is extra dependency over configure options then the enable should
1307 # be automagic based on whether the requiring feature is enabled or not.
1308 # All this options change anything only with --enable-extension-integration.
1310 # The name of this option and its help string makes it sound as if
1311 # extensions are built anyway, just not integrated in the installer,
1312 # if you use --disable-extension-integration. Is that really the
1315 AC_ARG_ENABLE(ios-simulator,
1316 AS_HELP_STRING([--enable-ios-simulator],
1317 [build for iOS simulator])
1320 libo_FUZZ_ARG_ENABLE(extension-integration,
1321 AS_HELP_STRING([--disable-extension-integration],
1322 [Disable integration of the built extensions in the installer of the
1323 product. Use this switch to disable the integration.])
1326 AC_ARG_ENABLE(avmedia,
1327 AS_HELP_STRING([--disable-avmedia],
1328 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1331 AC_ARG_ENABLE(database-connectivity,
1332 AS_HELP_STRING([--disable-database-connectivity],
1333 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1336 # This doesn't mean not building (or "integrating") extensions
1337 # (although it probably should; i.e. it should imply
1338 # --disable-extension-integration I guess), it means not supporting
1339 # any extension mechanism at all
1340 libo_FUZZ_ARG_ENABLE(extensions,
1341 AS_HELP_STRING([--disable-extensions],
1342 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1345 AC_ARG_ENABLE(scripting,
1346 AS_HELP_STRING([--disable-scripting],
1347 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1350 # This is mainly for Android and iOS, but could potentially be used in some
1351 # special case otherwise, too, so factored out as a separate setting
1353 AC_ARG_ENABLE(dynamic-loading,
1354 AS_HELP_STRING([--disable-dynamic-loading],
1355 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1358 libo_FUZZ_ARG_ENABLE(report-builder,
1359 AS_HELP_STRING([--disable-report-builder],
1360 [Disable the Report Builder.])
1363 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1364 AS_HELP_STRING([--enable-ext-wiki-publisher],
1365 [Enable the Wiki Publisher extension.])
1368 libo_FUZZ_ARG_ENABLE(lpsolve,
1369 AS_HELP_STRING([--disable-lpsolve],
1370 [Disable compilation of the lp solve solver ])
1372 libo_FUZZ_ARG_ENABLE(coinmp,
1373 AS_HELP_STRING([--disable-coinmp],
1374 [Disable compilation of the CoinMP solver ])
1377 libo_FUZZ_ARG_ENABLE(pdfimport,
1378 AS_HELP_STRING([--disable-pdfimport],
1379 [Disable building the PDF import feature.])
1382 libo_FUZZ_ARG_ENABLE(pdfium,
1383 AS_HELP_STRING([--disable-pdfium],
1384 [Disable building PDFium. Results in unsecure PDF signature verification.])
1387 libo_FUZZ_ARG_ENABLE(skia,
1388 AS_HELP_STRING([--disable-skia],
1389 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1392 ###############################################################################
1394 dnl ---------- *** ----------
1396 libo_FUZZ_ARG_ENABLE(mergelibs,
1397 AS_HELP_STRING([--enable-mergelibs],
1398 [Merge several of the smaller libraries into one big, "merged", one.])
1401 libo_FUZZ_ARG_ENABLE(breakpad,
1402 AS_HELP_STRING([--enable-breakpad],
1403 [Enables breakpad for crash reporting.])
1406 libo_FUZZ_ARG_ENABLE(crashdump,
1407 AS_HELP_STRING([--disable-crashdump],
1408 [Disable dump.ini and dump-file, when --enable-breakpad])
1411 AC_ARG_ENABLE(fetch-external,
1412 AS_HELP_STRING([--disable-fetch-external],
1413 [Disables fetching external tarballs from web sources.])
1416 AC_ARG_ENABLE(fuzzers,
1417 AS_HELP_STRING([--enable-fuzzers],
1418 [Enables building libfuzzer targets for fuzz testing.])
1421 libo_FUZZ_ARG_ENABLE(pch,
1422 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1423 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1424 Using 'system' will include only external headers, 'base' will add also headers
1425 from base modules, 'normal' will also add all headers except from the module built,
1426 'full' will use all suitable headers even from a module itself.])
1429 libo_FUZZ_ARG_ENABLE(epm,
1430 AS_HELP_STRING([--enable-epm],
1431 [LibreOffice includes self-packaging code, that requires epm, however epm is
1432 useless for large scale package building.])
1435 libo_FUZZ_ARG_ENABLE(odk,
1436 AS_HELP_STRING([--disable-odk],
1437 [LibreOffice includes an ODK, office development kit which some packagers may
1438 wish to build without.])
1441 AC_ARG_ENABLE(mpl-subset,
1442 AS_HELP_STRING([--enable-mpl-subset],
1443 [Don't compile any pieces which are not MPL or more liberally licensed])
1446 libo_FUZZ_ARG_ENABLE(evolution2,
1447 AS_HELP_STRING([--enable-evolution2],
1448 [Allows the built-in evolution 2 addressbook connectivity build to be
1452 AC_ARG_ENABLE(avahi,
1453 AS_HELP_STRING([--enable-avahi],
1454 [Determines whether to use Avahi to advertise Impress to remote controls.])
1457 libo_FUZZ_ARG_ENABLE(werror,
1458 AS_HELP_STRING([--enable-werror],
1459 [Turn warnings to errors. (Has no effect in modules where the treating
1460 of warnings as errors is disabled explicitly.)]),
1463 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1464 AS_HELP_STRING([--enable-assert-always-abort],
1465 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1468 libo_FUZZ_ARG_ENABLE(dbgutil,
1469 AS_HELP_STRING([--enable-dbgutil],
1470 [Provide debugging support from --enable-debug and include additional debugging
1471 utilities such as object counting or more expensive checks.
1472 This is the recommended option for developers.
1473 Note that this makes the build ABI incompatible, it is not possible to mix object
1474 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1476 libo_FUZZ_ARG_ENABLE(debug,
1477 AS_HELP_STRING([--enable-debug],
1478 [Include debugging information, disable compiler optimization and inlining plus
1479 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1481 libo_FUZZ_ARG_ENABLE(split-debug,
1482 AS_HELP_STRING([--disable-split-debug],
1483 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1484 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1486 libo_FUZZ_ARG_ENABLE(gdb-index,
1487 AS_HELP_STRING([--disable-gdb-index],
1488 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1489 The feature requires the gold or lld linker.]))
1491 libo_FUZZ_ARG_ENABLE(sal-log,
1492 AS_HELP_STRING([--enable-sal-log],
1493 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1495 libo_FUZZ_ARG_ENABLE(symbols,
1496 AS_HELP_STRING([--enable-symbols],
1497 [Generate debug information.
1498 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1499 otherwise. It is possible to explicitly specify gbuild build targets
1500 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1501 everything in the directory; there is no ordering, more specific overrides
1502 more general, and disabling takes precedence).
1503 Example: --enable-symbols="all -sw/ -Library_sc".]))
1505 libo_FUZZ_ARG_ENABLE(optimized,
1506 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1507 [Whether to compile with optimization flags.
1508 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1509 otherwise. Using 'debug' will try to use only optimizations that should
1510 not interfere with debugging. For Emscripten we default to optimized (-O1)
1511 debug build, as otherwise binaries become too large.]))
1513 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1514 AS_HELP_STRING([--disable-runtime-optimizations],
1515 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1516 JVM JIT) that are known to interact badly with certain dynamic analysis
1517 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1518 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1519 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1521 AC_ARG_WITH(valgrind,
1522 AS_HELP_STRING([--with-valgrind],
1523 [Make availability of Valgrind headers a hard requirement.]))
1525 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1526 AS_HELP_STRING([--enable-compiler-plugins],
1527 [Enable compiler plugins that will perform additional checks during
1528 building. Enabled automatically by --enable-dbgutil.
1529 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1530 COMPILER_PLUGINS_DEBUG=
1531 if test "$enable_compiler_plugins" = debug; then
1532 enable_compiler_plugins=yes
1533 COMPILER_PLUGINS_DEBUG=TRUE
1536 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1537 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1538 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1539 relevant in the --disable-compiler-plugins case.]))
1541 libo_FUZZ_ARG_ENABLE(ooenv,
1542 AS_HELP_STRING([--enable-ooenv],
1543 [Enable ooenv for the instdir installation.]))
1546 AS_HELP_STRING([--enable-lto],
1547 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1548 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1549 linker. For MSVC, this option is broken at the moment. This is experimental work
1550 in progress that shouldn't be used unless you are working on it.)]))
1552 AC_ARG_ENABLE(python,
1553 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1554 [Enables or disables Python support at run-time.
1555 Also specifies what Python to use at build-time.
1556 'fully-internal' even forces the internal version for uses of Python
1558 On macOS the only choices are
1559 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1562 libo_FUZZ_ARG_ENABLE(gtk3,
1563 AS_HELP_STRING([--disable-gtk3],
1564 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1565 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1568 AS_HELP_STRING([--enable-gtk4],
1569 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1571 AC_ARG_ENABLE(introspection,
1572 AS_HELP_STRING([--enable-introspection],
1573 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1574 Linux distributions.)]))
1576 AC_ARG_ENABLE(split-app-modules,
1577 AS_HELP_STRING([--enable-split-app-modules],
1578 [Split file lists for app modules, e.g. base, calc.
1579 Has effect only with make distro-pack-install]),
1582 AC_ARG_ENABLE(split-opt-features,
1583 AS_HELP_STRING([--enable-split-opt-features],
1584 [Split file lists for some optional features, e.g. pyuno, testtool.
1585 Has effect only with make distro-pack-install]),
1588 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1589 AS_HELP_STRING([--disable-cairo-canvas],
1590 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1593 libo_FUZZ_ARG_ENABLE(dbus,
1594 AS_HELP_STRING([--disable-dbus],
1595 [Determines whether to enable features that depend on dbus.
1596 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1597 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1599 libo_FUZZ_ARG_ENABLE(sdremote,
1600 AS_HELP_STRING([--disable-sdremote],
1601 [Determines whether to enable Impress remote control (i.e. the server component).]),
1602 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1604 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1605 AS_HELP_STRING([--disable-sdremote-bluetooth],
1606 [Determines whether to build sdremote with bluetooth support.
1607 Requires dbus on Linux.]))
1609 libo_FUZZ_ARG_ENABLE(gio,
1610 AS_HELP_STRING([--disable-gio],
1611 [Determines whether to use the GIO support.]),
1612 ,test "${enable_gio+set}" = set || enable_gio=yes)
1615 AS_HELP_STRING([--enable-qt5],
1616 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1621 AS_HELP_STRING([--enable-kf5],
1622 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1623 KF5 are available.]),
1627 AS_HELP_STRING([--enable-kde5],
1628 [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1631 AC_ARG_ENABLE(gtk3_kde5,
1632 AS_HELP_STRING([--enable-gtk3-kde5],
1633 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1634 platforms where Gtk3, Qt5 and Plasma is available.]),
1638 AS_HELP_STRING([--disable-gui],
1639 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1642 libo_FUZZ_ARG_ENABLE(randr,
1643 AS_HELP_STRING([--disable-randr],
1644 [Disable RandR support in the vcl project.]),
1645 ,test "${enable_randr+set}" = set || enable_randr=yes)
1647 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1648 AS_HELP_STRING([--disable-gstreamer-1-0],
1649 [Disable building with the gstreamer 1.0 avmedia backend.]),
1650 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1652 libo_FUZZ_ARG_ENABLE(neon,
1653 AS_HELP_STRING([--disable-neon],
1654 [Disable neon and the compilation of webdav binding.]),
1657 libo_FUZZ_ARG_ENABLE([eot],
1658 [AS_HELP_STRING([--enable-eot],
1659 [Enable support for Embedded OpenType fonts.])],
1660 ,test "${enable_eot+set}" = set || enable_eot=no)
1662 libo_FUZZ_ARG_ENABLE(cve-tests,
1663 AS_HELP_STRING([--disable-cve-tests],
1664 [Prevent CVE tests to be executed]),
1667 libo_FUZZ_ARG_ENABLE(chart-tests,
1668 AS_HELP_STRING([--enable-chart-tests],
1669 [Executes chart XShape tests. In a perfect world these tests would be
1670 stable and everyone could run them, in reality it is best to run them
1671 only on a few machines that are known to work and maintained by people
1672 who can judge if a test failure is a regression or not.]),
1675 AC_ARG_ENABLE(build-opensymbol,
1676 AS_HELP_STRING([--enable-build-opensymbol],
1677 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1678 fontforge installed.]),
1681 AC_ARG_ENABLE(dependency-tracking,
1682 AS_HELP_STRING([--enable-dependency-tracking],
1683 [Do not reject slow dependency extractors.])[
1684 --disable-dependency-tracking
1685 Disables generation of dependency information.
1686 Speed up one-time builds.],
1689 AC_ARG_ENABLE(icecream,
1690 AS_HELP_STRING([--enable-icecream],
1691 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1692 It defaults to /opt/icecream for the location of the icecream gcc/g++
1693 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1697 AS_HELP_STRING([--enable-ld=<linker>],
1698 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1699 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1700 If <linker> contains any ':', the part before the first ':' is used as the value of
1701 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1702 needed for Clang 12).]),
1705 libo_FUZZ_ARG_ENABLE(cups,
1706 AS_HELP_STRING([--disable-cups],
1707 [Do not build cups support.])
1710 AC_ARG_ENABLE(ccache,
1711 AS_HELP_STRING([--disable-ccache],
1712 [Do not try to use ccache automatically.
1713 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1714 CC/CXX are not yet set, and --enable-icecream is not given, we
1715 attempt to use ccache. --disable-ccache disables ccache completely.
1716 Additionally ccache's depend mode is enabled if possible,
1717 use --enable-ccache=nodepend to enable ccache without depend mode.
1721 libo_FUZZ_ARG_ENABLE(online-update,
1722 AS_HELP_STRING([--enable-online-update],
1723 [Enable the online update service that will check for new versions of
1724 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1725 If the value is "mar", the experimental Mozilla-like update will be
1726 enabled instead of the traditional update mechanism.]),
1729 AC_ARG_WITH(update-config,
1730 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1731 [Path to the update config ini file]))
1733 libo_FUZZ_ARG_ENABLE(extension-update,
1734 AS_HELP_STRING([--disable-extension-update],
1735 [Disable possibility to update installed extensions.]),
1738 libo_FUZZ_ARG_ENABLE(release-build,
1739 AS_HELP_STRING([--enable-release-build],
1740 [Enable release build. Note that the "release build" choice is orthogonal to
1741 whether symbols are present, debug info is generated, or optimization
1743 See http://wiki.documentfoundation.org/Development/DevBuild]),
1746 AC_ARG_ENABLE(windows-build-signing,
1747 AS_HELP_STRING([--enable-windows-build-signing],
1748 [Enable signing of windows binaries (*.exe, *.dll)]),
1751 AC_ARG_ENABLE(silent-msi,
1752 AS_HELP_STRING([--enable-silent-msi],
1753 [Enable MSI with LIMITUI=1 (silent install).]),
1756 AC_ARG_ENABLE(macosx-code-signing,
1757 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1758 [Sign executables, dylibs, frameworks and the app bundle. If you
1759 don't provide an identity the first suitable certificate
1760 in your keychain is used.]),
1763 AC_ARG_ENABLE(macosx-package-signing,
1764 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1765 [Create a .pkg suitable for uploading to the Mac App Store and sign
1766 it. If you don't provide an identity the first suitable certificate
1767 in your keychain is used.]),
1770 AC_ARG_ENABLE(macosx-sandbox,
1771 AS_HELP_STRING([--enable-macosx-sandbox],
1772 [Make the app bundle run in a sandbox. Requires code signing.
1773 Is required by apps distributed in the Mac App Store, and implies
1774 adherence to App Store rules.]),
1777 AC_ARG_WITH(macosx-bundle-identifier,
1778 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1779 [Define the macOS bundle identifier. Default is the somewhat weird
1780 org.libreoffice.script ("script", huh?).]),
1781 ,with_macosx_bundle_identifier=org.libreoffice.script)
1783 AC_ARG_WITH(product-name,
1784 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1785 [Define the product name. Default is AC_PACKAGE_NAME.]),
1786 ,with_product_name=$PRODUCTNAME)
1788 libo_FUZZ_ARG_ENABLE(community-flavor,
1789 AS_HELP_STRING([--disable-community-flavor],
1790 [Disable the Community branding.]),
1793 AC_ARG_WITH(package-version,
1794 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1795 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1798 libo_FUZZ_ARG_ENABLE(readonly-installset,
1799 AS_HELP_STRING([--enable-readonly-installset],
1800 [Prevents any attempts by LibreOffice to write into its installation. That means
1801 at least that no "system-wide" extensions can be added. Partly experimental work in
1802 progress, probably not fully implemented. Always enabled for macOS.]),
1805 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1806 AS_HELP_STRING([--disable-mariadb-sdbc],
1807 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1810 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1811 AS_HELP_STRING([--disable-postgresql-sdbc],
1812 [Disable the build of the PostgreSQL-SDBC driver.])
1815 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1816 AS_HELP_STRING([--disable-lotuswordpro],
1817 [Disable the build of the Lotus Word Pro filter.]),
1818 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1820 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1821 AS_HELP_STRING([--disable-firebird-sdbc],
1822 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1823 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1825 AC_ARG_ENABLE(bogus-pkg-config,
1826 AS_HELP_STRING([--enable-bogus-pkg-config],
1827 [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.]),
1830 AC_ARG_ENABLE(openssl,
1831 AS_HELP_STRING([--disable-openssl],
1832 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1833 components will either use GNUTLS or NSS. Work in progress,
1834 use only if you are hacking on it.]),
1835 ,enable_openssl=yes)
1837 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1838 AS_HELP_STRING([--enable-cipher-openssl-backend],
1839 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1840 Requires --enable-openssl.]))
1843 AS_HELP_STRING([--disable-nss],
1844 [Disable using NSS. If disabled,
1845 components will either use GNUTLS or openssl. Work in progress,
1846 use only if you are hacking on it.]),
1849 AC_ARG_ENABLE(library-bin-tar,
1850 AS_HELP_STRING([--enable-library-bin-tar],
1851 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1852 Some libraries can save their build result in a tarball
1853 stored in TARFILE_LOCATION. That binary tarball is
1854 uniquely identified by the source tarball,
1855 the content of the config_host.mk file and the content
1856 of the top-level directory in core for that library
1857 If this option is enabled, then if such a tarfile exist, it will be untarred
1858 instead of the source tarfile, and the build step will be skipped for that
1860 If a proper tarfile does not exist, then the normal source-based
1861 build is done for that library and a proper binary tarfile is created
1862 for the next time.]),
1865 AC_ARG_ENABLE(dconf,
1866 AS_HELP_STRING([--disable-dconf],
1867 [Disable the dconf configuration backend (enabled by default where
1870 libo_FUZZ_ARG_ENABLE(formula-logger,
1872 [--enable-formula-logger],
1873 [Enable formula logger for logging formula calculation flow in Calc.]
1878 AS_HELP_STRING([--disable-ldap],
1879 [Disable LDAP support.]),
1882 AC_ARG_ENABLE(opencl,
1883 AS_HELP_STRING([--disable-opencl],
1884 [Disable OpenCL support.]),
1887 libo_FUZZ_ARG_ENABLE(librelogo,
1888 AS_HELP_STRING([--disable-librelogo],
1889 [Do not build LibreLogo.]),
1890 ,enable_librelogo=yes)
1893 AS_HELP_STRING([--disable-cmis],
1894 [Disable CMIS support.]),
1898 AS_HELP_STRING([--disable-curl],
1899 [Disable CURL support.]),
1902 AC_ARG_ENABLE(wasm-strip,
1903 AS_HELP_STRING([--enable-wasm-strip],
1904 [Strip the static build like for WASM/emscripten platform.]),
1905 ,enable_wasm_strip=yes)
1908 dnl ===================================================================
1909 dnl Optional Packages (--with/without-)
1910 dnl ===================================================================
1912 AC_ARG_WITH(gcc-home,
1913 AS_HELP_STRING([--with-gcc-home],
1914 [Specify the location of gcc/g++ manually. This can be used in conjunction
1915 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1916 non-default path.]),
1919 AC_ARG_WITH(gnu-patch,
1920 AS_HELP_STRING([--with-gnu-patch],
1921 [Specify location of GNU patch on Solaris or FreeBSD.]),
1924 AC_ARG_WITH(build-platform-configure-options,
1925 AS_HELP_STRING([--with-build-platform-configure-options],
1926 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1930 AS_HELP_STRING([--with-gnu-cp],
1931 [Specify location of GNU cp on Solaris or FreeBSD.]),
1934 AC_ARG_WITH(external-tar,
1935 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1936 [Specify an absolute path of where to find (and store) tarfiles.]),
1937 TARFILE_LOCATION=$withval ,
1940 AC_ARG_WITH(referenced-git,
1941 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1942 [Specify another checkout directory to reference. This makes use of
1943 git submodule update --reference, and saves a lot of diskspace
1944 when having multiple trees side-by-side.]),
1945 GIT_REFERENCE_SRC=$withval ,
1948 AC_ARG_WITH(linked-git,
1949 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1950 [Specify a directory where the repositories of submodules are located.
1951 This uses a method similar to git-new-workdir to get submodules.]),
1952 GIT_LINK_SRC=$withval ,
1955 AC_ARG_WITH(galleries,
1956 AS_HELP_STRING([--with-galleries],
1957 [Specify how galleries should be built. It is possible either to
1958 build these internally from source ("build"),
1959 or to disable them ("no")]),
1963 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1964 [Choose which themes to include. By default those themes with an '*' are included.
1965 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1966 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1969 libo_FUZZ_ARG_WITH(helppack-integration,
1970 AS_HELP_STRING([--without-helppack-integration],
1971 [It will not integrate the helppacks to the installer
1972 of the product. Please use this switch to use the online help
1973 or separate help packages.]),
1976 libo_FUZZ_ARG_WITH(fonts,
1977 AS_HELP_STRING([--without-fonts],
1978 [LibreOffice includes some third-party fonts to provide a reliable basis for
1979 help content, templates, samples, etc. When these fonts are already
1980 known to be available on the system then you should use this option.]),
1984 AS_HELP_STRING([--with-epm],
1985 [Decides which epm to use. Default is to use the one from the system if
1986 one is built. When either this is not there or you say =internal epm
1990 AC_ARG_WITH(package-format,
1991 AS_HELP_STRING([--with-package-format],
1992 [Specify package format(s) for LibreOffice installation sets. The
1993 implicit --without-package-format leads to no installation sets being
1994 generated. Possible values: aix, archive, bsd, deb, dmg,
1995 installed, msi, pkg, and rpm.
1996 Example: --with-package-format='deb rpm']),
2000 AS_HELP_STRING([--with-tls],
2001 [Decides which TLS/SSL and cryptographic implementations to use for
2002 LibreOffice's code. Notice that this doesn't apply for depending
2003 libraries like "neon", for example. Default is to use NSS
2004 although OpenSSL is also possible. Notice that selecting NSS restricts
2005 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2006 restrict by now the usage of NSS in LO's code. Possible values:
2007 openssl, nss. Example: --with-tls="nss"]),
2010 AC_ARG_WITH(system-libs,
2011 AS_HELP_STRING([--with-system-libs],
2012 [Use libraries already on system -- enables all --with-system-* flags.]),
2015 AC_ARG_WITH(system-bzip2,
2016 AS_HELP_STRING([--with-system-bzip2],
2017 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2018 [with_system_bzip2="$with_system_libs"])
2020 AC_ARG_WITH(system-headers,
2021 AS_HELP_STRING([--with-system-headers],
2022 [Use headers already on system -- enables all --with-system-* flags for
2023 external packages whose headers are the only entities used i.e.
2024 boost/odbc/sane-header(s).]),,
2025 [with_system_headers="$with_system_libs"])
2027 AC_ARG_WITH(system-jars,
2028 AS_HELP_STRING([--without-system-jars],
2029 [When building with --with-system-libs, also the needed jars are expected
2030 on the system. Use this to disable that]),,
2031 [with_system_jars="$with_system_libs"])
2033 AC_ARG_WITH(system-cairo,
2034 AS_HELP_STRING([--with-system-cairo],
2035 [Use cairo libraries already on system. Happens automatically for
2036 (implicit) --enable-gtk3.]))
2038 AC_ARG_WITH(system-epoxy,
2039 AS_HELP_STRING([--with-system-epoxy],
2040 [Use epoxy libraries already on system. Happens automatically for
2041 (implicit) --enable-gtk3.]),,
2042 [with_system_epoxy="$with_system_libs"])
2044 AC_ARG_WITH(myspell-dicts,
2045 AS_HELP_STRING([--with-myspell-dicts],
2046 [Adds myspell dictionaries to the LibreOffice installation set]),
2049 AC_ARG_WITH(system-dicts,
2050 AS_HELP_STRING([--without-system-dicts],
2051 [Do not use dictionaries from system paths.]),
2054 AC_ARG_WITH(external-dict-dir,
2055 AS_HELP_STRING([--with-external-dict-dir],
2056 [Specify external dictionary dir.]),
2059 AC_ARG_WITH(external-hyph-dir,
2060 AS_HELP_STRING([--with-external-hyph-dir],
2061 [Specify external hyphenation pattern dir.]),
2064 AC_ARG_WITH(external-thes-dir,
2065 AS_HELP_STRING([--with-external-thes-dir],
2066 [Specify external thesaurus dir.]),
2069 AC_ARG_WITH(system-zlib,
2070 AS_HELP_STRING([--with-system-zlib],
2071 [Use zlib already on system.]),,
2072 [with_system_zlib=auto])
2074 AC_ARG_WITH(system-jpeg,
2075 AS_HELP_STRING([--with-system-jpeg],
2076 [Use jpeg already on system.]),,
2077 [with_system_jpeg="$with_system_libs"])
2079 AC_ARG_WITH(system-clucene,
2080 AS_HELP_STRING([--with-system-clucene],
2081 [Use clucene already on system.]),,
2082 [with_system_clucene="$with_system_libs"])
2084 AC_ARG_WITH(system-expat,
2085 AS_HELP_STRING([--with-system-expat],
2086 [Use expat already on system.]),,
2087 [with_system_expat="$with_system_libs"])
2089 AC_ARG_WITH(system-libxml,
2090 AS_HELP_STRING([--with-system-libxml],
2091 [Use libxml/libxslt already on system.]),,
2092 [with_system_libxml=auto])
2094 AC_ARG_WITH(system-icu,
2095 AS_HELP_STRING([--with-system-icu],
2096 [Use icu already on system.]),,
2097 [with_system_icu="$with_system_libs"])
2099 AC_ARG_WITH(system-ucpp,
2100 AS_HELP_STRING([--with-system-ucpp],
2101 [Use ucpp already on system.]),,
2104 AC_ARG_WITH(system-openldap,
2105 AS_HELP_STRING([--with-system-openldap],
2106 [Use the OpenLDAP LDAP SDK already on system.]),,
2107 [with_system_openldap="$with_system_libs"])
2109 libo_FUZZ_ARG_ENABLE(poppler,
2110 AS_HELP_STRING([--disable-poppler],
2111 [Disable building Poppler.])
2114 AC_ARG_WITH(system-poppler,
2115 AS_HELP_STRING([--with-system-poppler],
2116 [Use system poppler (only needed for PDF import).]),,
2117 [with_system_poppler="$with_system_libs"])
2119 libo_FUZZ_ARG_ENABLE(gpgmepp,
2120 AS_HELP_STRING([--disable-gpgmepp],
2121 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2124 AC_ARG_WITH(system-gpgmepp,
2125 AS_HELP_STRING([--with-system-gpgmepp],
2126 [Use gpgmepp already on system]),,
2127 [with_system_gpgmepp="$with_system_libs"])
2129 AC_ARG_WITH(system-mariadb,
2130 AS_HELP_STRING([--with-system-mariadb],
2131 [Use MariaDB/MySQL libraries already on system.]),,
2132 [with_system_mariadb="$with_system_libs"])
2134 AC_ARG_ENABLE(bundle-mariadb,
2135 AS_HELP_STRING([--enable-bundle-mariadb],
2136 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2139 AC_ARG_WITH(system-postgresql,
2140 AS_HELP_STRING([--with-system-postgresql],
2141 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2142 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2143 [with_system_postgresql="$with_system_libs"])
2145 AC_ARG_WITH(libpq-path,
2146 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2147 [Use this PostgreSQL C interface (libpq) installation for building
2148 the PostgreSQL-SDBC extension.]),
2151 AC_ARG_WITH(system-firebird,
2152 AS_HELP_STRING([--with-system-firebird],
2153 [Use Firebird libraries already on system, for building the Firebird-SDBC
2154 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2155 [with_system_firebird="$with_system_libs"])
2157 AC_ARG_WITH(system-libtommath,
2158 AS_HELP_STRING([--with-system-libtommath],
2159 [Use libtommath already on system]),,
2160 [with_system_libtommath="$with_system_libs"])
2162 AC_ARG_WITH(system-hsqldb,
2163 AS_HELP_STRING([--with-system-hsqldb],
2164 [Use hsqldb already on system.]))
2166 AC_ARG_WITH(hsqldb-jar,
2167 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2168 [Specify path to jarfile manually.]),
2169 HSQLDB_JAR=$withval)
2171 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2172 AS_HELP_STRING([--disable-scripting-beanshell],
2173 [Disable support for scripts in BeanShell.]),
2177 AC_ARG_WITH(system-beanshell,
2178 AS_HELP_STRING([--with-system-beanshell],
2179 [Use beanshell already on system.]),,
2180 [with_system_beanshell="$with_system_jars"])
2182 AC_ARG_WITH(beanshell-jar,
2183 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2184 [Specify path to jarfile manually.]),
2187 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2188 AS_HELP_STRING([--disable-scripting-javascript],
2189 [Disable support for scripts in JavaScript.]),
2193 AC_ARG_WITH(system-rhino,
2194 AS_HELP_STRING([--with-system-rhino],
2195 [Use rhino already on system.]),,)
2196 # [with_system_rhino="$with_system_jars"])
2197 # Above is not used as we have different debug interface
2198 # patched into internal rhino. This code needs to be fixed
2199 # before we can enable it by default.
2201 AC_ARG_WITH(rhino-jar,
2202 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2203 [Specify path to jarfile manually.]),
2206 AC_ARG_WITH(system-jfreereport,
2207 AS_HELP_STRING([--with-system-jfreereport],
2208 [Use JFreeReport already on system.]),,
2209 [with_system_jfreereport="$with_system_jars"])
2211 AC_ARG_WITH(sac-jar,
2212 AS_HELP_STRING([--with-sac-jar=JARFILE],
2213 [Specify path to jarfile manually.]),
2216 AC_ARG_WITH(libxml-jar,
2217 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2218 [Specify path to jarfile manually.]),
2219 LIBXML_JAR=$withval)
2221 AC_ARG_WITH(flute-jar,
2222 AS_HELP_STRING([--with-flute-jar=JARFILE],
2223 [Specify path to jarfile manually.]),
2226 AC_ARG_WITH(jfreereport-jar,
2227 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2228 [Specify path to jarfile manually.]),
2229 JFREEREPORT_JAR=$withval)
2231 AC_ARG_WITH(liblayout-jar,
2232 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2233 [Specify path to jarfile manually.]),
2234 LIBLAYOUT_JAR=$withval)
2236 AC_ARG_WITH(libloader-jar,
2237 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2238 [Specify path to jarfile manually.]),
2239 LIBLOADER_JAR=$withval)
2241 AC_ARG_WITH(libformula-jar,
2242 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2243 [Specify path to jarfile manually.]),
2244 LIBFORMULA_JAR=$withval)
2246 AC_ARG_WITH(librepository-jar,
2247 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2248 [Specify path to jarfile manually.]),
2249 LIBREPOSITORY_JAR=$withval)
2251 AC_ARG_WITH(libfonts-jar,
2252 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2253 [Specify path to jarfile manually.]),
2254 LIBFONTS_JAR=$withval)
2256 AC_ARG_WITH(libserializer-jar,
2257 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2258 [Specify path to jarfile manually.]),
2259 LIBSERIALIZER_JAR=$withval)
2261 AC_ARG_WITH(libbase-jar,
2262 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2263 [Specify path to jarfile manually.]),
2264 LIBBASE_JAR=$withval)
2266 AC_ARG_WITH(system-odbc,
2267 AS_HELP_STRING([--with-system-odbc],
2268 [Use the odbc headers already on system.]),,
2269 [with_system_odbc="auto"])
2271 AC_ARG_WITH(system-sane,
2272 AS_HELP_STRING([--with-system-sane],
2273 [Use sane.h already on system.]),,
2274 [with_system_sane="$with_system_headers"])
2276 AC_ARG_WITH(system-bluez,
2277 AS_HELP_STRING([--with-system-bluez],
2278 [Use bluetooth.h already on system.]),,
2279 [with_system_bluez="$with_system_headers"])
2281 AC_ARG_WITH(system-curl,
2282 AS_HELP_STRING([--with-system-curl],
2283 [Use curl already on system.]),,
2284 [with_system_curl=auto])
2286 AC_ARG_WITH(system-boost,
2287 AS_HELP_STRING([--with-system-boost],
2288 [Use boost already on system.]),,
2289 [with_system_boost="$with_system_headers"])
2291 AC_ARG_WITH(system-glm,
2292 AS_HELP_STRING([--with-system-glm],
2293 [Use glm already on system.]),,
2294 [with_system_glm="$with_system_headers"])
2296 AC_ARG_WITH(system-hunspell,
2297 AS_HELP_STRING([--with-system-hunspell],
2298 [Use libhunspell already on system.]),,
2299 [with_system_hunspell="$with_system_libs"])
2301 libo_FUZZ_ARG_ENABLE(zxing,
2302 AS_HELP_STRING([--disable-zxing],
2303 [Disable use of zxing external library.]))
2305 AC_ARG_WITH(system-zxing,
2306 AS_HELP_STRING([--with-system-zxing],
2307 [Use libzxing already on system.]),,
2308 [with_system_zxing="$with_system_libs"])
2310 AC_ARG_WITH(system-box2d,
2311 AS_HELP_STRING([--with-system-box2d],
2312 [Use box2d already on system.]),,
2313 [with_system_box2d="$with_system_libs"])
2315 AC_ARG_WITH(system-mythes,
2316 AS_HELP_STRING([--with-system-mythes],
2317 [Use mythes already on system.]),,
2318 [with_system_mythes="$with_system_libs"])
2320 AC_ARG_WITH(system-altlinuxhyph,
2321 AS_HELP_STRING([--with-system-altlinuxhyph],
2322 [Use ALTLinuxhyph already on system.]),,
2323 [with_system_altlinuxhyph="$with_system_libs"])
2325 AC_ARG_WITH(system-lpsolve,
2326 AS_HELP_STRING([--with-system-lpsolve],
2327 [Use lpsolve already on system.]),,
2328 [with_system_lpsolve="$with_system_libs"])
2330 AC_ARG_WITH(system-coinmp,
2331 AS_HELP_STRING([--with-system-coinmp],
2332 [Use CoinMP already on system.]),,
2333 [with_system_coinmp="$with_system_libs"])
2335 AC_ARG_WITH(system-liblangtag,
2336 AS_HELP_STRING([--with-system-liblangtag],
2337 [Use liblangtag library already on system.]),,
2338 [with_system_liblangtag="$with_system_libs"])
2341 AS_HELP_STRING([--with-webdav],
2342 [Specify which library to use for webdav implementation.
2343 Possible values: "neon", "serf", "no". The default value is "neon".
2344 Example: --with-webdav="serf"]),
2345 WITH_WEBDAV=$withval,
2348 AC_ARG_WITH(linker-hash-style,
2349 AS_HELP_STRING([--with-linker-hash-style],
2350 [Use linker with --hash-style=<style> when linking shared objects.
2351 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2352 if supported on the build system, and "sysv" otherwise.]))
2354 AC_ARG_WITH(jdk-home,
2355 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2356 [If you have installed JDK 9 or later on your system please supply the
2357 path here. Note that this is not the location of the java command but the
2358 location of the entire distribution. In case of cross-compiling, this
2359 is the JDK of the host os. Use --with-build-platform-configure-options
2360 to point to a different build platform JDK.]),
2364 AS_HELP_STRING([--with-help],
2365 [Enable the build of help. There is a special parameter "common" that
2366 can be used to bundle only the common part, .e.g help-specific icons.
2367 This is useful when you build the helpcontent separately.])
2369 Usage: --with-help build the old local help
2370 --without-help no local help (default)
2371 --with-help=html build the new HTML local help
2372 --with-help=online build the new HTML online help
2376 AC_ARG_WITH(omindex,
2377 AS_HELP_STRING([--with-omindex],
2378 [Enable the support of xapian-omega index for online help.])
2380 Usage: --with-omindex=server prepare the pages for omindex
2381 but let xapian-omega be built in server.
2382 --with-omindex=noxap do not prepare online pages
2387 libo_FUZZ_ARG_WITH(java,
2388 AS_HELP_STRING([--with-java=<java command>],
2389 [Specify the name of the Java interpreter command. Typically "java"
2390 which is the default.
2392 To build without support for Java components, applets, accessibility
2393 or the XML filters written in Java, use --without-java or --with-java=no.]),
2394 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2395 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2398 AC_ARG_WITH(jvm-path,
2399 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2400 [Use a specific JVM search path at runtime.
2401 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2404 AC_ARG_WITH(ant-home,
2405 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2406 [If you have installed Apache Ant on your system, please supply the path here.
2407 Note that this is not the location of the Ant binary but the location
2408 of the entire distribution.]),
2411 AC_ARG_WITH(symbol-config,
2412 AS_HELP_STRING([--with-symbol-config],
2413 [Configuration for the crashreport symbol upload]),
2415 [with_symbol_config=no])
2417 AC_ARG_WITH(export-validation,
2418 AS_HELP_STRING([--without-export-validation],
2419 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2420 ,with_export_validation=auto)
2422 AC_ARG_WITH(bffvalidator,
2423 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2424 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2425 Requires installed Microsoft Office Binary File Format Validator.
2426 Note: export-validation (--with-export-validation) is required to be turned on.
2427 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2428 ,with_bffvalidator=no)
2430 libo_FUZZ_ARG_WITH(junit,
2431 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2432 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2433 --without-junit disables those tests. Not relevant in the --without-java case.]),
2436 AC_ARG_WITH(hamcrest,
2437 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2438 [Specifies the hamcrest jar file to use for JUnit-based tests.
2439 --without-junit disables those tests. Not relevant in the --without-java case.]),
2442 AC_ARG_WITH(perl-home,
2443 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2444 [If you have installed Perl 5 Distribution, on your system, please
2445 supply the path here. Note that this is not the location of the Perl
2446 binary but the location of the entire distribution.]),
2449 libo_FUZZ_ARG_WITH(doxygen,
2451 [--with-doxygen=<absolute path to doxygen executable>],
2452 [Specifies the doxygen executable to use when generating ODK C/C++
2453 documentation. --without-doxygen disables generation of ODK C/C++
2454 documentation. Not relevant in the --disable-odk case.]),
2457 AC_ARG_WITH(visual-studio,
2458 AS_HELP_STRING([--with-visual-studio=<2019>],
2459 [Specify which Visual Studio version to use in case several are
2460 installed. Currently only 2019 (default) is supported.]),
2463 AC_ARG_WITH(windows-sdk,
2464 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2465 [Specify which Windows SDK, or "Windows Kit", version to use
2466 in case the one that came with the selected Visual Studio
2467 is not what you want for some reason. Note that not all compiler/SDK
2468 combinations are supported. The intent is that this option should not
2473 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2474 [Use this option to build LibreOffice with additional UI language support.
2475 English (US) is always included by default.
2476 Separate multiple languages with space.
2477 For all languages, use --with-lang=ALL.]),
2480 AC_ARG_WITH(locales,
2481 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2482 [Use this option to limit the locale information built in.
2483 Separate multiple locales with space.
2484 Very experimental and might well break stuff.
2485 Just a desperate measure to shrink code and data size.
2486 By default all the locales available is included.
2487 This option is completely unrelated to --with-lang.])
2489 Affects also our character encoding conversion
2490 tables for encodings mainly targeted for a
2491 particular locale, like EUC-CN and EUC-TW for
2492 zh, ISO-2022-JP for ja.
2494 Affects also our add-on break iterator data for
2497 For the default, all locales, don't use this switch at all.
2498 Specifying just the language part of a locale means all matching
2499 locales will be included.
2503 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2504 libo_FUZZ_ARG_WITH(krb5,
2505 AS_HELP_STRING([--with-krb5],
2506 [Enable MIT Kerberos 5 support in modules that support it.
2507 By default automatically enabled on platforms
2508 where a good system Kerberos 5 is available.]),
2511 libo_FUZZ_ARG_WITH(gssapi,
2512 AS_HELP_STRING([--with-gssapi],
2513 [Enable GSSAPI support in modules that support it.
2514 By default automatically enabled on platforms
2515 where a good system GSSAPI is available.]),
2519 AS_HELP_STRING([--with-iwyu],
2520 [Use given IWYU binary path to check unneeded includes instead of building.
2521 Use only if you are hacking on it.]),
2524 libo_FUZZ_ARG_WITH(lxml,
2525 AS_HELP_STRING([--without-lxml],
2526 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2527 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2528 report widget classes and ids.]),
2531 libo_FUZZ_ARG_WITH(latest-c++,
2532 AS_HELP_STRING([--with-latest-c++],
2533 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2534 published standard.]),,
2535 [with_latest_c__=no])
2537 dnl ===================================================================
2539 dnl ===================================================================
2541 AC_ARG_WITH(branding,
2542 AS_HELP_STRING([--with-branding=/path/to/images],
2543 [Use given path to retrieve branding images set.])
2545 Search for intro.png about.svg and logo.svg.
2546 If any is missing, default ones will be used instead.
2548 Search also progress.conf for progress
2549 settings on intro screen :
2551 PROGRESSBARCOLOR="255,255,255" Set color of
2552 progress bar. Comma separated RGB decimal values.
2553 PROGRESSSIZE="407,6" Set size of progress bar.
2554 Comma separated decimal values (width, height).
2555 PROGRESSPOSITION="61,317" Set position of progress
2556 bar from left,top. Comma separated decimal values.
2557 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2558 bar frame. Comma separated RGB decimal values.
2559 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2560 bar text. Comma separated RGB decimal values.
2561 PROGRESSTEXTBASELINE="287" Set vertical position of
2562 progress bar text from top. Decimal value.
2564 Default values will be used if not found.
2569 AC_ARG_WITH(extra-buildid,
2570 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2571 [Show addition build identification in about dialog.]),
2576 AS_HELP_STRING([--with-vendor="John the Builder"],
2577 [Set vendor of the build.]),
2580 AC_ARG_WITH(android-package-name,
2581 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2582 [Set Android package name of the build.]),
2585 AC_ARG_WITH(compat-oowrappers,
2586 AS_HELP_STRING([--with-compat-oowrappers],
2587 [Install oo* wrappers in parallel with
2588 lo* ones to keep backward compatibility.
2589 Has effect only with make distro-pack-install]),
2592 AC_ARG_WITH(os-version,
2593 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2594 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2597 AC_ARG_WITH(idlc-cpp,
2598 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2599 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2602 AC_ARG_WITH(parallelism,
2603 AS_HELP_STRING([--with-parallelism],
2604 [Number of jobs to run simultaneously during build. Parallel builds can
2605 save a lot of time on multi-cpu machines. Defaults to the number of
2606 CPUs on the machine, unless you configure --enable-icecream - then to
2610 AC_ARG_WITH(all-tarballs,
2611 AS_HELP_STRING([--with-all-tarballs],
2612 [Download all external tarballs unconditionally]))
2614 AC_ARG_WITH(gdrive-client-id,
2615 AS_HELP_STRING([--with-gdrive-client-id],
2616 [Provides the client id of the application for OAuth2 authentication
2617 on Google Drive. If either this or --with-gdrive-client-secret is
2618 empty, the feature will be disabled]),
2621 AC_ARG_WITH(gdrive-client-secret,
2622 AS_HELP_STRING([--with-gdrive-client-secret],
2623 [Provides the client secret of the application for OAuth2
2624 authentication on Google Drive. If either this or
2625 --with-gdrive-client-id is empty, the feature will be disabled]),
2628 AC_ARG_WITH(alfresco-cloud-client-id,
2629 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2630 [Provides the client id of the application for OAuth2 authentication
2631 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2632 empty, the feature will be disabled]),
2635 AC_ARG_WITH(alfresco-cloud-client-secret,
2636 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2637 [Provides the client secret of the application for OAuth2
2638 authentication on Alfresco Cloud. If either this or
2639 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2642 AC_ARG_WITH(onedrive-client-id,
2643 AS_HELP_STRING([--with-onedrive-client-id],
2644 [Provides the client id of the application for OAuth2 authentication
2645 on OneDrive. If either this or --with-onedrive-client-secret is
2646 empty, the feature will be disabled]),
2649 AC_ARG_WITH(onedrive-client-secret,
2650 AS_HELP_STRING([--with-onedrive-client-secret],
2651 [Provides the client secret of the application for OAuth2
2652 authentication on OneDrive. If either this or
2653 --with-onedrive-client-id is empty, the feature will be disabled]),
2655 dnl ===================================================================
2656 dnl Do we want to use pre-build binary tarball for recompile
2657 dnl ===================================================================
2659 if test "$enable_library_bin_tar" = "yes" ; then
2660 USE_LIBRARY_BIN_TAR=TRUE
2662 USE_LIBRARY_BIN_TAR=
2664 AC_SUBST(USE_LIBRARY_BIN_TAR)
2666 dnl ===================================================================
2667 dnl Test whether build target is Release Build
2668 dnl ===================================================================
2669 AC_MSG_CHECKING([whether build target is Release Build])
2670 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2672 ENABLE_RELEASE_BUILD=
2673 GET_TASK_ALLOW_ENTITLEMENT='
2674 <!-- We want to be able to debug a hardened process when not building for release -->
2675 <key>com.apple.security.get-task-allow</key>
2678 AC_MSG_RESULT([yes])
2679 ENABLE_RELEASE_BUILD=TRUE
2680 GET_TASK_ALLOW_ENTITLEMENT=''
2682 AC_SUBST(ENABLE_RELEASE_BUILD)
2683 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2685 AC_MSG_CHECKING([whether to build a Community flavor])
2686 if test -z "$enable_community_flavor" -o "$enable_community_flavor" == "yes"; then
2687 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2688 AC_MSG_RESULT([yes])
2693 dnl ===================================================================
2694 dnl Test whether to sign Windows Build
2695 dnl ===================================================================
2696 AC_MSG_CHECKING([whether to sign windows build])
2697 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2698 AC_MSG_RESULT([yes])
2699 WINDOWS_BUILD_SIGNING="TRUE"
2702 WINDOWS_BUILD_SIGNING="FALSE"
2704 AC_SUBST(WINDOWS_BUILD_SIGNING)
2706 dnl ===================================================================
2707 dnl MacOSX build and runtime environment options
2708 dnl ===================================================================
2710 AC_ARG_WITH(macosx-sdk,
2711 AS_HELP_STRING([--with-macosx-sdk=<version>],
2712 [Prefer a specific SDK for building.])
2714 If the requested SDK is not available, a search for the oldest one will be done.
2715 With current Xcode versions, only the latest SDK is included, so this option is
2716 not terribly useful. It works fine to build with a new SDK and run the result
2719 e. g.: --with-macosx-sdk=10.10
2721 there are 3 options to control the MacOSX build:
2722 --with-macosx-sdk (referred as 'sdk' below)
2723 --with-macosx-version-min-required (referred as 'min' below)
2724 --with-macosx-version-max-allowed (referred as 'max' below)
2726 the connection between these value and the default they take is as follow:
2727 ( ? means not specified on the command line, s means the SDK version found,
2728 constraint: 8 <= x <= y <= z)
2730 ==========================================
2731 command line || config result
2732 ==========================================
2733 min | max | sdk || min | max | sdk |
2734 ? | ? | ? || 10.10 | 10.s | 10.s |
2735 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2736 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2737 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2738 10.x | ? | ? || 10.x | 10.s | 10.s |
2739 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2740 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2741 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2744 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2745 for a detailed technical explanation of these variables
2747 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2751 AC_ARG_WITH(macosx-version-min-required,
2752 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2753 [set the minimum OS version needed to run the built LibreOffice])
2755 e. g.: --with-macosx-version-min-required=10.10
2756 see --with-macosx-sdk for more info
2760 AC_ARG_WITH(macosx-version-max-allowed,
2761 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2762 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2764 e. g.: --with-macosx-version-max-allowed=10.10
2765 see --with-macosx-sdk for more info
2770 dnl ===================================================================
2771 dnl options for stuff used during cross-compilation build
2772 dnl Not quite superseded by --with-build-platform-configure-options.
2773 dnl TODO: check, if the "force" option is still needed anywhere.
2774 dnl ===================================================================
2776 AC_ARG_WITH(system-icu-for-build,
2777 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2778 [Use icu already on system for build tools (cross-compilation only).]))
2781 dnl ===================================================================
2782 dnl Check for incompatible options set by fuzzing, and reset those
2783 dnl automatically to working combinations
2784 dnl ===================================================================
2786 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2787 "$enable_dbus" != "$enable_avahi"; then
2788 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2789 enable_avahi=$enable_dbus
2794 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2795 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2799 add_lopath_before ()
2804 for dir in $LO_PATH ; do
2805 if test "$dir" != "$1" ; then
2806 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2809 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2812 dnl ===================================================================
2813 dnl check for required programs (grep, awk, sed, bash)
2814 dnl ===================================================================
2819 if test -n "$1"; then
2820 if test "$build_os" = "cygwin"; then
2821 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2823 new_path=`cygpath -sm "$formatted_path"`
2826 new_path=`cygpath -u "$formatted_path"`
2831 if test "$2" = "after"; then
2832 add_lopath_after "$new_path"
2834 add_lopath_before "$new_path"
2840 AC_PATH_PROG( AWK, $AWK)
2841 if test -z "$AWK"; then
2842 AC_MSG_ERROR([install awk to run this script])
2845 AC_PATH_PROG(BASH, bash)
2846 if test -z "$BASH"; then
2847 AC_MSG_ERROR([bash not found in \$PATH])
2851 AC_MSG_CHECKING([for GNU or BSD tar])
2852 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2853 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2854 if test $? -eq 0; then
2859 AC_MSG_RESULT($GNUTAR)
2860 if test -z "$GNUTAR"; then
2861 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2865 AC_MSG_CHECKING([for tar's option to strip components])
2866 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2867 if test $? -eq 0; then
2868 STRIP_COMPONENTS="--strip-components"
2870 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2871 if test $? -eq 0; then
2872 STRIP_COMPONENTS="--strip-path"
2874 STRIP_COMPONENTS="unsupported"
2877 AC_MSG_RESULT($STRIP_COMPONENTS)
2878 if test x$STRIP_COMPONENTS = xunsupported; then
2879 AC_MSG_ERROR([you need a tar that is able to strip components.])
2881 AC_SUBST(STRIP_COMPONENTS)
2883 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2884 dnl desktop OSes from "mobile" ones.
2886 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2887 dnl In other words, that when building for an OS that is not a
2888 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2890 dnl Note the direction of the implication; there is no assumption that
2891 dnl cross-compiling would imply a non-desktop OS.
2893 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2894 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2895 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2896 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2899 # Whether to build "avmedia" functionality or not.
2901 if test -z "$enable_avmedia"; then
2905 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2906 if test "$enable_avmedia" = yes; then
2907 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2909 USE_AVMEDIA_DUMMY='TRUE'
2911 AC_SUBST(USE_AVMEDIA_DUMMY)
2913 # Decide whether to build database connectivity stuff (including
2914 # Base) or not. We probably don't want to on non-desktop OSes.
2915 if test -z "$enable_database_connectivity"; then
2916 # --disable-database-connectivity is unfinished work in progress
2917 # and the iOS test app doesn't link if we actually try to use it.
2918 # if test $_os != iOS -a $_os != Android; then
2919 if test $_os != iOS; then
2920 enable_database_connectivity=yes
2924 if test "$enable_database_connectivity" = yes; then
2925 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2926 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2929 if test -z "$enable_extensions"; then
2930 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2931 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2932 enable_extensions=yes
2936 if test "$enable_extensions" = yes; then
2937 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2938 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2941 if test -z "$enable_scripting"; then
2942 # Disable scripting for iOS unless specifically overridden
2943 # with --enable-scripting.
2944 if test $_os != iOS -o $_os = Emscripten; then
2945 enable_scripting=yes
2949 DISABLE_SCRIPTING=''
2950 if test "$enable_scripting" = yes; then
2951 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2952 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2954 DISABLE_SCRIPTING='TRUE'
2955 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2958 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2959 # Disable dynamic_loading always for iOS and Android
2960 enable_dynamic_loading=no
2961 elif test -z "$enable_dynamic_loading"; then
2962 # Otherwise enable it unless specifically disabled
2963 enable_dynamic_loading=yes
2966 DISABLE_DYNLOADING=''
2967 if test "$enable_dynamic_loading" = yes; then
2968 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2970 DISABLE_DYNLOADING='TRUE'
2972 AC_SUBST(DISABLE_DYNLOADING)
2974 # remember SYSBASE value
2977 dnl ===================================================================
2978 dnl Sort out various gallery compilation options
2979 dnl ===================================================================
2980 WITH_GALLERY_BUILD=TRUE
2981 AC_MSG_CHECKING([how to build and package galleries])
2982 if test -n "${with_galleries}"; then
2983 if test "$with_galleries" = "build"; then
2984 AC_MSG_RESULT([build from source images internally])
2985 elif test "$with_galleries" = "no"; then
2987 AC_MSG_RESULT([disable non-internal gallery build])
2989 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2992 if test $_os != iOS -a $_os != Android; then
2993 AC_MSG_RESULT([internal src images for desktop])
2996 AC_MSG_RESULT([disable src image build])
2999 AC_SUBST(WITH_GALLERY_BUILD)
3001 dnl ===================================================================
3002 dnl Checks if ccache is available
3003 dnl ===================================================================
3005 if test "$enable_ccache" = "no"; then
3007 elif test "$_os" = "WINNT"; then
3008 # on windows/VC build do not use ccache - but perhaps sccache is around?
3009 case "%$CC%$CXX%" in
3010 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3011 # assume that's good then
3012 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3013 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3014 CCACHE_DEPEND_MODE=1
3017 # for sharing code below, reuse CCACHE env var
3018 AC_PATH_PROG([CCACHE],[sccache],[not found])
3019 if test "$CCACHE" = "not found"; then
3022 CCACHE=`win_short_path_for_make "$CCACHE"`
3023 CCACHE_DEPEND_MODE=1
3027 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3028 case "%$CC%$CXX%" in
3029 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3030 # assume that's good then
3031 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3032 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3033 CCACHE_DEPEND_MODE=1
3036 AC_PATH_PROG([CCACHE],[ccache],[not found])
3037 if test "$CCACHE" = "not found"; then
3040 CCACHE_DEPEND_MODE=1
3041 # Need to check for ccache version: otherwise prevents
3042 # caching of the results (like "-x objective-c++" for Mac)
3043 if test $_os = Darwin -o $_os = iOS; then
3044 # Check ccache version
3045 AC_MSG_CHECKING([whether version of ccache is suitable])
3046 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3047 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3048 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3049 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3051 AC_MSG_RESULT([no, $CCACHE_VERSION])
3062 if test "$enable_ccache" = "nodepend"; then
3063 CCACHE_DEPEND_MODE=""
3065 AC_SUBST(CCACHE_DEPEND_MODE)
3067 # skip on windows - sccache defaults are good enough
3068 if test "$CCACHE" != "" -a "$_os" != "WINNT"; then
3069 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
3070 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3071 if test "$ccache_size" = ""; then
3072 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3073 if test "$ccache_size" = ""; then
3076 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3077 if test $ccache_size -lt 1024; then
3079 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3080 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3082 # warn that ccache may be too small for debug build
3083 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3084 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3087 if test $ccache_size -lt 5; then
3088 #warn that ccache may be too small for debug build
3089 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3090 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3095 dnl ===================================================================
3096 dnl Checks for C compiler,
3097 dnl The check for the C++ compiler is later on.
3098 dnl ===================================================================
3099 if test "$_os" != "WINNT"; then
3101 AC_MSG_CHECKING([gcc home])
3102 if test -z "$with_gcc_home"; then
3103 if test "$enable_icecream" = "yes"; then
3104 if test -d "/usr/lib/icecc/bin"; then
3105 GCC_HOME="/usr/lib/icecc/"
3106 elif test -d "/usr/libexec/icecc/bin"; then
3107 GCC_HOME="/usr/libexec/icecc/"
3108 elif test -d "/opt/icecream/bin"; then
3109 GCC_HOME="/opt/icecream/"
3111 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3115 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3116 GCC_HOME_SET="false"
3119 GCC_HOME="$with_gcc_home"
3121 AC_MSG_RESULT($GCC_HOME)
3124 if test "$GCC_HOME_SET" = "true"; then
3125 if test -z "$CC"; then
3126 CC="$GCC_HOME/bin/gcc"
3129 if test -z "$CXX"; then
3130 CXX="$GCC_HOME/bin/g++"
3136 COMPATH=`dirname "$CC"`
3137 if test "$COMPATH" = "."; then
3138 AC_PATH_PROGS(COMPATH, $CC)
3139 dnl double square bracket to get single because of M4 quote...
3140 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3142 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3144 dnl ===================================================================
3146 dnl ===================================================================
3147 AC_MSG_CHECKING([whether to build with Java support])
3148 if test "$with_java" != "no"; then
3149 if test "$DISABLE_SCRIPTING" = TRUE; then
3150 AC_MSG_RESULT([no, overridden by --disable-scripting])
3154 AC_MSG_RESULT([yes])
3156 AC_DEFINE(HAVE_FEATURE_JAVA)
3163 AC_SUBST(ENABLE_JAVA)
3165 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3167 dnl ENABLE_JAVA="" indicate no Java support at all
3169 dnl ===================================================================
3170 dnl Check macOS SDK and compiler
3171 dnl ===================================================================
3173 if test $_os = Darwin; then
3175 # If no --with-macosx-sdk option is given, look for one
3177 # The intent is that for "most" Mac-based developers, a suitable
3178 # SDK will be found automatically without any configure options.
3180 # For developers with a current Xcode, the lowest-numbered SDK
3181 # higher than or equal to the minimum required should be found.
3183 AC_MSG_CHECKING([what macOS SDK to use])
3184 for _macosx_sdk in ${with_macosx_sdk-11.3 11.1 11.0 10.15 10.14 10.13}; do
3185 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3186 if test -d "$MACOSX_SDK_PATH"; then
3187 with_macosx_sdk="${_macosx_sdk}"
3190 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3191 if test -d "$MACOSX_SDK_PATH"; then
3192 with_macosx_sdk="${_macosx_sdk}"
3197 if test ! -d "$MACOSX_SDK_PATH"; then
3198 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3201 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3203 case $with_macosx_sdk in
3205 MACOSX_SDK_VERSION=101300
3208 MACOSX_SDK_VERSION=101400
3211 MACOSX_SDK_VERSION=101500
3214 MACOSX_SDK_VERSION=110000
3217 MACOSX_SDK_VERSION=110100
3220 MACOSX_SDK_VERSION=110300
3223 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.3])
3227 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3228 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3231 if test "$with_macosx_version_min_required" = "" ; then
3232 if test "$host_cpu" = x86_64; then
3233 with_macosx_version_min_required="10.10";
3235 with_macosx_version_min_required="11.0";
3239 if test "$with_macosx_version_max_allowed" = "" ; then
3240 with_macosx_version_max_allowed="$with_macosx_sdk"
3243 # export this so that "xcrun" invocations later return matching values
3244 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3245 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3246 export DEVELOPER_DIR
3247 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3248 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3250 AC_MSG_CHECKING([whether Xcode is new enough])
3251 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3252 my_xcode_ver2=${my_xcode_ver1#Xcode }
3253 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3254 if test "$my_xcode_ver3" -ge 1103; then
3255 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3257 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3260 case "$with_macosx_version_min_required" in
3262 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3265 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3268 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3271 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3274 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3277 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3280 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3283 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3286 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3289 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3292 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.3])
3296 LIBTOOL=/usr/bin/libtool
3297 INSTALL_NAME_TOOL=install_name_tool
3298 if test -z "$save_CC"; then
3299 stdlib=-stdlib=libc++
3301 AC_MSG_CHECKING([what C compiler to use])
3302 CC="`xcrun -find clang`"
3303 CC_BASE=`first_arg_basename "$CC"`
3304 if test "$host_cpu" = x86_64; then
3305 CC+=" -target x86_64-apple-macos"
3307 CC+=" -target arm64-apple-macos"
3309 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3310 AC_MSG_RESULT([$CC])
3312 AC_MSG_CHECKING([what C++ compiler to use])
3313 CXX="`xcrun -find clang++`"
3314 CXX_BASE=`first_arg_basename "$CXX"`
3315 if test "$host_cpu" = x86_64; then
3316 CXX+=" -target x86_64-apple-macos"
3318 CXX+=" -target arm64-apple-macos"
3320 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3321 AC_MSG_RESULT([$CXX])
3323 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3326 STRIP=`xcrun -find strip`
3327 LIBTOOL=`xcrun -find libtool`
3328 RANLIB=`xcrun -find ranlib`
3331 case "$with_macosx_version_max_allowed" in
3333 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3336 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3339 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3342 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3345 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3348 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3351 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3354 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3357 MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3360 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.3])
3364 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3365 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3366 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])
3371 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3372 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3373 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3377 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3378 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3380 AC_MSG_CHECKING([whether to do code signing])
3382 if test "$enable_macosx_code_signing" = yes; then
3383 # By default use the first suitable certificate (?).
3385 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3386 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3387 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3388 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3389 # "Developer ID Application" one.
3391 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3392 if test -n "$identity"; then
3393 MACOSX_CODESIGNING_IDENTITY=$identity
3394 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3395 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3397 AC_MSG_ERROR([cannot determine identity to use])
3399 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3400 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3401 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3402 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3407 AC_MSG_CHECKING([whether to create a Mac App Store package])
3409 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3411 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3412 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3413 elif test "$enable_macosx_package_signing" = yes; then
3414 # By default use the first suitable certificate.
3415 # It should be a "3rd Party Mac Developer Installer" one
3417 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3418 if test -n "$identity"; then
3419 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3420 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3421 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3423 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3426 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3427 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3428 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3431 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3432 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3435 AC_MSG_CHECKING([whether to sandbox the application])
3437 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3438 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3439 elif test "$enable_macosx_sandbox" = yes; then
3440 ENABLE_MACOSX_SANDBOX=TRUE
3441 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3442 AC_MSG_RESULT([yes])
3447 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3448 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3449 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3451 AC_SUBST(MACOSX_SDK_PATH)
3452 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3453 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3454 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3455 AC_SUBST(INSTALL_NAME_TOOL)
3456 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3457 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3458 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3459 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3460 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3462 dnl ===================================================================
3463 dnl Check iOS SDK and compiler
3464 dnl ===================================================================
3466 if test $_os = iOS; then
3467 AC_MSG_CHECKING([what iOS SDK to use])
3468 current_sdk_ver=14.5
3469 older_sdk_vers="14.4 14.3 14.2 14.1 14.0 13.7"
3470 if test "$enable_ios_simulator" = "yes"; then
3471 platform=iPhoneSimulator
3472 versionmin=-mios-simulator-version-min=12.2
3475 versionmin=-miphoneos-version-min=12.2
3477 xcode_developer=`xcode-select -print-path`
3479 for sdkver in $current_sdk_ver $older_sdk_vers; do
3480 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3487 if test -z "$sysroot"; then
3488 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3491 AC_MSG_RESULT($sysroot)
3493 stdlib="-stdlib=libc++"
3495 AC_MSG_CHECKING([what C compiler to use])
3496 CC="`xcrun -find clang`"
3497 CC_BASE=`first_arg_basename "$CC"`
3498 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3499 AC_MSG_RESULT([$CC])
3501 AC_MSG_CHECKING([what C++ compiler to use])
3502 CXX="`xcrun -find clang++`"
3503 CXX_BASE=`first_arg_basename "$CXX"`
3504 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3505 AC_MSG_RESULT([$CXX])
3507 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3510 STRIP=`xcrun -find strip`
3511 LIBTOOL=`xcrun -find libtool`
3512 RANLIB=`xcrun -find ranlib`
3515 AC_MSG_CHECKING([whether to treat the installation as read-only])
3517 if test $_os = Darwin; then
3518 enable_readonly_installset=yes
3519 elif test "$enable_extensions" != yes; then
3520 enable_readonly_installset=yes
3522 if test "$enable_readonly_installset" = yes; then
3523 AC_MSG_RESULT([yes])
3524 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3529 dnl ===================================================================
3530 dnl Structure of install set
3531 dnl ===================================================================
3533 if test $_os = Darwin; then
3534 LIBO_BIN_FOLDER=MacOS
3535 LIBO_ETC_FOLDER=Resources
3536 LIBO_LIBEXEC_FOLDER=MacOS
3537 LIBO_LIB_FOLDER=Frameworks
3538 LIBO_LIB_PYUNO_FOLDER=Resources
3539 LIBO_SHARE_FOLDER=Resources
3540 LIBO_SHARE_HELP_FOLDER=Resources/help
3541 LIBO_SHARE_JAVA_FOLDER=Resources/java
3542 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3543 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3544 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3545 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3546 LIBO_URE_BIN_FOLDER=MacOS
3547 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3548 LIBO_URE_LIB_FOLDER=Frameworks
3549 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3550 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3551 elif test $_os = WINNT; then
3552 LIBO_BIN_FOLDER=program
3553 LIBO_ETC_FOLDER=program
3554 LIBO_LIBEXEC_FOLDER=program
3555 LIBO_LIB_FOLDER=program
3556 LIBO_LIB_PYUNO_FOLDER=program
3557 LIBO_SHARE_FOLDER=share
3558 LIBO_SHARE_HELP_FOLDER=help
3559 LIBO_SHARE_JAVA_FOLDER=program/classes
3560 LIBO_SHARE_PRESETS_FOLDER=presets
3561 LIBO_SHARE_READMES_FOLDER=readmes
3562 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3563 LIBO_SHARE_SHELL_FOLDER=program/shell
3564 LIBO_URE_BIN_FOLDER=program
3565 LIBO_URE_ETC_FOLDER=program
3566 LIBO_URE_LIB_FOLDER=program
3567 LIBO_URE_MISC_FOLDER=program
3568 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3570 LIBO_BIN_FOLDER=program
3571 LIBO_ETC_FOLDER=program
3572 LIBO_LIBEXEC_FOLDER=program
3573 LIBO_LIB_FOLDER=program
3574 LIBO_LIB_PYUNO_FOLDER=program
3575 LIBO_SHARE_FOLDER=share
3576 LIBO_SHARE_HELP_FOLDER=help
3577 LIBO_SHARE_JAVA_FOLDER=program/classes
3578 LIBO_SHARE_PRESETS_FOLDER=presets
3579 LIBO_SHARE_READMES_FOLDER=readmes
3580 if test "$enable_fuzzers" != yes; then
3581 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3583 LIBO_SHARE_RESOURCE_FOLDER=resource
3585 LIBO_SHARE_SHELL_FOLDER=program/shell
3586 LIBO_URE_BIN_FOLDER=program
3587 LIBO_URE_ETC_FOLDER=program
3588 LIBO_URE_LIB_FOLDER=program
3589 LIBO_URE_MISC_FOLDER=program
3590 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3592 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3593 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3594 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3595 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3596 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3597 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3598 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3599 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3600 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3601 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3602 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3603 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3604 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3605 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3606 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3607 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3609 # Not all of them needed in config_host.mk, add more if need arises
3610 AC_SUBST(LIBO_BIN_FOLDER)
3611 AC_SUBST(LIBO_ETC_FOLDER)
3612 AC_SUBST(LIBO_LIB_FOLDER)
3613 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3614 AC_SUBST(LIBO_SHARE_FOLDER)
3615 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3616 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3617 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3618 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3619 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3620 AC_SUBST(LIBO_URE_BIN_FOLDER)
3621 AC_SUBST(LIBO_URE_ETC_FOLDER)
3622 AC_SUBST(LIBO_URE_LIB_FOLDER)
3623 AC_SUBST(LIBO_URE_MISC_FOLDER)
3624 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3626 dnl ===================================================================
3627 dnl Windows specific tests and stuff
3628 dnl ===================================================================
3632 # Return value: $regvalue
3635 if test "$build_os" = "wsl"; then
3636 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3640 local _regentry="/proc/registry${1}/${2}"
3641 if test -f "$_regentry"; then
3642 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3643 # Registry keys read via /proc/registry* are always \0 terminated!
3644 local _regvalue=$(tr -d '\0' < "$_regentry")
3645 if test $? -eq 0; then
3651 # Get a value from the 32-bit side of the Registry
3654 reg_get_value "32" "$1"
3657 # Get a value from the 64-bit side of the Registry
3660 reg_get_value "64" "$1"
3669 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3678 PLATFORMID=windows_x86_64
3680 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3682 WIN_MULTI_ARCH="x86"
3688 PLATFORMID=windows_x86
3691 WIN_OTHER_ARCH="x64"
3696 PLATFORMID=windows_aarch64
3698 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3699 WIN_HOST_ARCH="arm64"
3704 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3708 case "$build_cpu" in
3709 x86_64) WIN_BUILD_ARCH="x64" ;;
3710 i*86) WIN_BUILD_ARCH="x86" ;;
3711 aarch64) WIN_BUILD_ARCH="arm64" ;;
3713 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3717 SCPDEFS="$SCPDEFS -D_MSC_VER"
3721 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3722 # other-arch won't, but wouldn't break the build (x64 on x86).
3723 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3724 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3728 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3729 # To allow building Windows multi-arch releases without cross-tooling
3730 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3731 cross_compiling="yes"
3735 ENABLE_WASM_STRIP=''
3736 if test "$cross_compiling" = "yes"; then
3737 export CROSS_COMPILING=TRUE
3738 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3739 ENABLE_WASM_STRIP=TRUE
3743 BUILD_TYPE="$BUILD_TYPE NATIVE"
3745 AC_SUBST(CROSS_COMPILING)
3746 AC_SUBST(ENABLE_WASM_STRIP)
3748 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3749 # NOTE: must _not_ be used for bundled external libraries!
3751 if test "$GCC" = "yes"; then
3752 AC_MSG_CHECKING( for -isystem )
3754 CFLAGS="$CFLAGS -Werror"
3755 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3757 if test -n "$ISYSTEM"; then
3763 if test -z "$ISYSTEM"; then
3764 # fall back to using -I
3769 dnl ===================================================================
3770 dnl Check which Visual Studio compiler is used
3771 dnl ===================================================================
3773 map_vs_year_to_version()
3775 # Return value: $vsversion
3783 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3787 vs_versions_to_check()
3789 # Args: $1 (optional) : versions to check, in the order of preference
3790 # Return value: $vsversions
3794 if test -n "$1"; then
3795 map_vs_year_to_version "$1"
3796 vsversions=$vsversion
3798 # We accept only 2019
3803 win_get_env_from_vsvars32bat()
3805 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3806 # Also seems to be located in another directory under the same name: vsvars32.bat
3807 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3808 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3809 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3810 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3812 if test "$build_os" = "wsl"; then
3813 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3815 chmod +x $WRAPPERBATCHFILEPATH
3816 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3818 rm -f $WRAPPERBATCHFILEPATH
3819 printf '%s' "$result"
3824 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3825 if test -n "$regvalue"; then
3826 PathFormat "$regvalue"
3827 UCRTSDKDIR=$formatted_path_unix
3828 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3829 UCRTVERSION=$regvalue
3831 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3835 if test -z "$UCRTSDKDIR"; then
3836 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3837 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3838 if test -f "$ide_env_file"; then
3839 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3840 UCRTSDKDIR=$formatted_path
3841 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3842 dnl Hack needed at least by tml:
3843 if test "$UCRTVERSION" = 10.0.15063.0 \
3844 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3845 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3847 UCRTVERSION=10.0.14393.0
3850 AC_MSG_ERROR([No UCRT found])
3857 # Find Visual C++ 2019
3858 # Args: $1 (optional) : The VS version year
3859 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3861 unset vctest vcnum vcnumwithdot vcbuildnumber
3863 vs_versions_to_check "$1"
3864 if test "$build_os" = wsl; then
3865 vswhere="$PROGRAMFILESX86"
3867 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3869 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3870 PathFormat "$vswhere"
3871 vswhere=$formatted_path_unix
3872 for ver in $vsversions; do
3873 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3874 # Fall back to all MS products (this includes VC++ Build Tools)
3875 if ! test -n "$vswhereoutput"; then
3876 AC_MSG_CHECKING([VC++ Build Tools and similar])
3877 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3879 if test -n "$vswhereoutput"; then
3880 PathFormat "$vswhereoutput"
3881 vctest=$formatted_path_unix
3886 if test -n "$vctest"; then
3887 vcnumwithdot="$ver.0"
3888 case "$vcnumwithdot" in
3894 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3901 AC_MSG_CHECKING([$1 compiler])
3903 CL_EXE_PATH="$2/cl.exe"
3905 if test ! -f "$CL_EXE_PATH"; then
3906 if test "$1" = "multi-arch"; then
3907 AC_MSG_WARN([no compiler (cl.exe) in $2])
3910 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3914 dnl ===========================================================
3915 dnl Check for the corresponding mspdb*.dll
3916 dnl ===========================================================
3918 # MSVC 15.0 has libraries from 14.0?
3921 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3922 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3925 # The compiles has to find its shared libraries
3927 TEMP_PATH=`cygpath -d "$2"`
3928 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3930 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3931 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3936 AC_MSG_RESULT([$CL_EXE_PATH])
3942 if test "$_os" = "WINNT"; then
3943 AC_MSG_CHECKING([Visual C++])
3944 find_msvc "$with_visual_studio"
3945 if test -z "$vctest"; then
3946 if test -n "$with_visual_studio"; then
3947 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3949 AC_MSG_ERROR([no Visual Studio 2019 installation found])
3954 VC_PRODUCT_DIR="$vctest/VC"
3955 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3957 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3958 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3959 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3960 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3961 if test $? -ne 0; then
3967 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3968 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3969 test_cl_exe "build" "$MSVC_BUILD_PATH"
3972 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3973 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3974 test_cl_exe "host" "$MSVC_HOST_PATH"
3976 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3979 AC_MSG_CHECKING([for short pathname of VC product directory])
3980 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3981 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3986 AC_MSG_CHECKING([for UCRT location])
3988 # find_ucrt errors out if it doesn't find it
3989 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3990 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3991 ucrtincpath_formatted=$formatted_path
3992 # SOLARINC is used for external modules and must be set too.
3993 # And no, it's not sufficient to set SOLARINC only, as configure
3994 # itself doesn't honour it.
3995 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3996 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3997 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3998 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4000 AC_SUBST(UCRTSDKDIR)
4001 AC_SUBST(UCRTVERSION)
4003 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4004 # Find the proper version of MSBuild.exe to use based on the VS version
4005 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4006 if test -n "$regvalue" ; then
4007 AC_MSG_RESULT([found: $regvalue])
4008 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4010 if test "$vcnumwithdot" = "16.0"; then
4011 if test "$WIN_BUILD_ARCH" != "x64"; then
4012 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4014 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4017 if test "$WIN_BUILD_ARCH" != "x64"; then
4018 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
4020 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
4023 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4024 AC_MSG_RESULT([$regvalue])
4027 # Find the version of devenv.exe
4028 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4029 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4030 DEVENV_unix=$(cygpath -u "$DEVENV")
4031 if test ! -e "$DEVENV_unix"; then
4032 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4035 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4036 dnl needed when building CLR code:
4037 if test -z "$MSVC_CXX"; then
4038 # This gives us a posix path with 8.3 filename restrictions
4039 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4042 if test -z "$CC"; then
4044 CC_BASE=`first_arg_basename "$CC"`
4046 if test -z "$CXX"; then
4048 CXX_BASE=`first_arg_basename "$CXX"`
4051 if test -n "$CC"; then
4052 # Remove /cl.exe from CC case insensitive
4053 AC_MSG_NOTICE([found Visual C++ $vcyear])
4055 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4056 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4058 PathFormat "$COMPATH"
4059 COMPATH=`win_short_path_for_make "$formatted_path"`
4063 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4064 # are always "better", we list them in reverse chronological order.
4068 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4072 # The expectation is that --with-windows-sdk should not need to be used
4073 if test -n "$with_windows_sdk"; then
4074 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4075 *" "$with_windows_sdk" "*)
4076 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4079 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4084 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4089 AC_MSG_ERROR([Visual C++ not found after all, huh])
4092 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4093 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4094 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4095 // between Visual Studio versions and _MSC_VER:
4099 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4101 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4102 # version of the Explorer extension (and maybe other small
4103 # bits, too) needed when installing a 32-bit LibreOffice on a
4104 # 64-bit OS. The 64-bit Explorer extension is a feature that
4105 # has been present since long in OOo. Don't confuse it with
4106 # building LibreOffice itself as 64-bit code.
4111 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4112 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4113 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4114 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4117 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4118 AC_MSG_RESULT([found])
4120 AC_MSG_RESULT([not found])
4121 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4123 elif test "$WIN_HOST_ARCH" = "x64"; then
4128 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4129 AC_SUBST(CXX_X64_BINARY)
4131 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4132 # needed to support TWAIN scan on both 32- and 64-bit systems
4134 case "$WIN_HOST_ARCH" in
4136 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4137 if test -n "$CXX_X86_BINARY"; then
4139 AC_MSG_RESULT([preset])
4140 elif test -n "$WIN_MULTI_ARCH"; then
4142 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4143 CXX_X86_BINARY+=" /arch:SSE"
4144 AC_MSG_RESULT([found])
4146 AC_MSG_RESULT([not found])
4147 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4152 CXX_X86_BINARY=$MSVC_CXX
4156 AC_SUBST(CXX_X86_BINARY)
4163 AC_MSG_CHECKING([whether the compiler is actually Clang])
4164 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4170 [AC_MSG_RESULT([yes])
4172 [AC_MSG_RESULT([no])])
4173 AC_SUBST(COM_IS_CLANG)
4177 if test "$COM_IS_CLANG" = TRUE; then
4178 AC_MSG_CHECKING([whether Clang is new enough])
4179 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4180 #if !defined __apple_build_version__
4184 [my_apple_clang=yes],[my_apple_clang=])
4185 if test "$my_apple_clang" = yes; then
4186 AC_MSG_RESULT([assumed yes (Apple Clang)])
4187 elif test "$_os" = Emscripten; then
4188 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4190 if test "$_os" = WINNT; then
4191 dnl In which case, assume clang-cl:
4193 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4201 CC_PLAIN="$CC_PLAIN $i"
4208 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4209 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4210 CLANGVER=`echo $clang_version \
4211 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4212 if test "$CLANGVER" -ge 50002; then
4213 AC_MSG_RESULT([yes ($clang_version)])
4215 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4217 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4218 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4222 SHOWINCLUDES_PREFIX=
4223 if test "$_os" = WINNT; then
4224 dnl We need to guess the prefix of the -showIncludes output, it can be
4226 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4227 echo "#include <stdlib.h>" > conftest.c
4228 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4229 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4230 rm -f conftest.c conftest.obj
4231 if test -z "$SHOWINCLUDES_PREFIX"; then
4232 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4234 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4237 AC_SUBST(SHOWINCLUDES_PREFIX)
4240 # prefix C with ccache if needed
4243 if test "$CCACHE" != ""; then
4244 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4248 CFLAGS="$CFLAGS --ccache-skip -O2"
4249 dnl an empty program will do, we're checking the compiler flags
4250 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4251 [use_ccache=yes], [use_ccache=no])
4253 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4254 AC_MSG_RESULT([yes])
4257 CC_BASE="ccache $CC_BASE"
4263 # ===================================================================
4264 # check various GCC options that Clang does not support now but maybe
4265 # will somewhen in the future, check them even for GCC, so that the
4267 # ===================================================================
4270 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4271 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4273 CFLAGS="$CFLAGS -Werror -ggdb2"
4274 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4276 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4277 AC_MSG_RESULT([yes])
4282 if test "$host_cpu" = "m68k"; then
4283 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4285 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4286 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4288 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4289 AC_MSG_RESULT([yes])
4295 AC_SUBST(HAVE_GCC_GGDB2)
4297 dnl ===================================================================
4298 dnl Test the gcc version
4299 dnl ===================================================================
4300 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4301 AC_MSG_CHECKING([the GCC version])
4302 _gcc_version=`$CC -dumpversion`
4303 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4304 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4305 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4307 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4309 if test "$gcc_full_version" -lt 70000; then
4310 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4313 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4314 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4315 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4316 # (which reports itself as GCC 4.2.1).
4319 AC_SUBST(GCC_VERSION)
4321 dnl Set the ENABLE_DBGUTIL variable
4322 dnl ===================================================================
4323 AC_MSG_CHECKING([whether to build with additional debug utilities])
4324 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4325 ENABLE_DBGUTIL="TRUE"
4326 # this is an extra var so it can have different default on different MSVC
4327 # versions (in case there are version specific problems with it)
4328 MSVC_USE_DEBUG_RUNTIME="TRUE"
4330 AC_MSG_RESULT([yes])
4331 # cppunit and graphite expose STL in public headers
4332 if test "$with_system_cppunit" = "yes"; then
4333 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4335 with_system_cppunit=no
4337 if test "$with_system_graphite" = "yes"; then
4338 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4340 with_system_graphite=no
4342 if test "$with_system_orcus" = "yes"; then
4343 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4345 with_system_orcus=no
4347 if test "$with_system_libcmis" = "yes"; then
4348 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4350 with_system_libcmis=no
4352 if test "$with_system_hunspell" = "yes"; then
4353 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4355 with_system_hunspell=no
4357 if test "$with_system_gpgmepp" = "yes"; then
4358 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4360 with_system_gpgmepp=no
4362 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4363 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4364 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4365 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4366 # of those two is using the system variant:
4367 if test "$with_system_libnumbertext" = "yes"; then
4368 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4370 with_system_libnumbertext=no
4372 if test "$with_system_libwps" = "yes"; then
4373 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4375 with_system_libwps=no
4379 MSVC_USE_DEBUG_RUNTIME=""
4382 AC_SUBST(ENABLE_DBGUTIL)
4383 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4385 dnl Set the ENABLE_DEBUG variable.
4386 dnl ===================================================================
4387 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4388 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4390 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4391 if test -z "$libo_fuzzed_enable_debug"; then
4392 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4394 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4399 AC_MSG_CHECKING([whether to do a debug build])
4400 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4402 if test -n "$ENABLE_DBGUTIL" ; then
4403 AC_MSG_RESULT([yes (dbgutil)])
4405 AC_MSG_RESULT([yes])
4411 AC_SUBST(ENABLE_DEBUG)
4413 dnl ===================================================================
4414 dnl Select the linker to use (gold/lld/ld.bfd).
4415 dnl This is done only after compiler checks (need to know if Clang is
4416 dnl used, for different defaults) and after checking if a debug build
4417 dnl is wanted (non-debug builds get the default linker if not explicitly
4418 dnl specified otherwise).
4419 dnl All checks for linker features/options should come after this.
4420 dnl ===================================================================
4423 use_ld=-fuse-ld=${1%%:*}
4425 if test "$use_ld_path" != "$1"; then
4426 use_ld="$use_ld --ld-path=$use_ld_path"
4428 use_ld_fail_if_error=$2
4430 AC_MSG_CHECKING([for $use_ld linker support])
4431 use_ld_ldflags_save="$LDFLAGS"
4432 LDFLAGS="$LDFLAGS $use_ld"
4433 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4436 printf ("hello world\n");
4437 ])], USE_LD=$use_ld, [])
4438 if test -n "$USE_LD"; then
4439 AC_MSG_RESULT( yes )
4442 if test -n "$use_ld_fail_if_error"; then
4448 if test -n "$use_ld_ok"; then
4449 dnl keep the value of LDFLAGS
4452 LDFLAGS="$use_ld_ldflags_save"
4456 if test "$enable_ld" != "no"; then
4457 if test "$GCC" = "yes"; then
4458 if test -n "$enable_ld"; then
4459 check_use_ld "$enable_ld" fail_if_error
4460 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4461 dnl non-debug builds default to the default linker
4463 elif test -n "$COM_IS_CLANG"; then
4465 if test $? -ne 0; then
4469 # For gcc first try gold, new versions also support lld.
4471 if test $? -ne 0; then
4475 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4477 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4478 if test -z "$ld_used"; then
4481 AC_MSG_CHECKING([for linker that is used])
4482 AC_MSG_RESULT([$ld_used])
4483 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4484 if echo "$ld_used" | grep -q "^GNU ld"; then
4485 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4486 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4490 if test "$enable_ld" = "yes"; then
4491 AC_MSG_ERROR([--enable-ld not supported])
4497 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4498 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4499 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4500 bsymbolic_functions_ldflags_save=$LDFLAGS
4501 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4502 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4505 printf ("hello world\n");
4506 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4507 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4508 AC_MSG_RESULT( found )
4510 AC_MSG_RESULT( not found )
4512 LDFLAGS=$bsymbolic_functions_ldflags_save
4514 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4517 if test "$GCC" = "yes"; then
4518 for flag in "--gc-sections" "-dead_strip"; do
4519 AC_MSG_CHECKING([for $flag linker support])
4520 ldflags_save=$LDFLAGS
4521 LDFLAGS="$LDFLAGS -Wl,$flag"
4522 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4525 printf ("hello world\n");
4527 LD_GC_SECTIONS="-Wl,$flag"
4528 AC_MSG_RESULT( found )
4530 AC_MSG_RESULT( not found )
4532 LDFLAGS=$ldflags_save
4533 if test -n "$LD_GC_SECTIONS"; then
4538 AC_SUBST(LD_GC_SECTIONS)
4541 if test "$enable_split_debug" != no; then
4542 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4543 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4544 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4546 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4547 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4549 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4550 AC_MSG_RESULT([yes])
4552 if test "$enable_split_debug" = yes; then
4559 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4560 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4561 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4564 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4566 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4567 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4569 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4570 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4572 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4573 AC_MSG_RESULT([yes])
4577 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4580 if test "$enable_gdb_index" != "no"; then
4581 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4582 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4583 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4585 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4587 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4588 if test "$have_ggnu_pubnames" != "TRUE"; then
4589 if test "$enable_gdb_index" = "yes"; then
4590 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4595 AC_MSG_RESULT( yes )
4596 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4597 ldflags_save=$LDFLAGS
4598 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4599 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4602 printf ("hello world\n");
4603 ])], ENABLE_GDB_INDEX=TRUE, [])
4604 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4605 AC_MSG_RESULT( yes )
4607 if test "$enable_gdb_index" = "yes"; then
4613 LDFLAGS=$ldflags_save
4617 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4618 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4619 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4622 AC_SUBST(ENABLE_GDB_INDEX)
4624 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4627 if test "$enable_sal_log" = yes; then
4630 AC_SUBST(ENABLE_SAL_LOG)
4632 dnl Check for enable symbols option
4633 dnl ===================================================================
4634 AC_MSG_CHECKING([whether to generate debug information])
4635 if test -z "$enable_symbols"; then
4636 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4642 if test "$enable_symbols" = yes; then
4643 ENABLE_SYMBOLS_FOR=all
4644 AC_MSG_RESULT([yes])
4645 elif test "$enable_symbols" = no; then
4649 # Selective debuginfo.
4650 ENABLE_SYMBOLS_FOR="$enable_symbols"
4651 AC_MSG_RESULT([for "$enable_symbols"])
4653 AC_SUBST(ENABLE_SYMBOLS_FOR)
4655 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4656 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4657 AC_MSG_CHECKING([whether enough memory is available for linking])
4658 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4659 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4660 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4661 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4663 AC_MSG_RESULT([yes])
4668 ENABLE_OPTIMIZED_DEBUG=
4669 AC_MSG_CHECKING([whether to compile with optimization flags])
4670 if test -z "$enable_optimized"; then
4671 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4674 enable_optimized=yes
4677 if test "$enable_optimized" = yes; then
4678 ENABLE_OPTIMIZED=TRUE
4679 AC_MSG_RESULT([yes])
4680 elif test "$enable_optimized" = debug; then
4681 ENABLE_OPTIMIZED_DEBUG=TRUE
4682 AC_MSG_RESULT([yes (debug)])
4684 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4685 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4687 CFLAGS="$CFLAGS -Werror -Og"
4688 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4690 if test "$HAVE_GCC_OG" = "TRUE"; then
4691 AC_MSG_RESULT([yes])
4696 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4697 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4702 AC_SUBST(ENABLE_OPTIMIZED)
4703 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4706 # determine CPUNAME, OS, ...
4707 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4718 PLATFORMID=aix_powerpc
4735 if test "$enable_ios_simulator" = "yes"; then
4740 PLATFORMID=macosx_aarch64
4744 if test "$enable_ios_simulator" = "yes"; then
4749 PLATFORMID=macosx_x86_64
4752 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4766 if test "$enable_ios_simulator" = "yes"; then
4767 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4771 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4776 PLATFORMID=ios_arm64
4790 PLATFORMID=dragonfly_x86
4795 PLATFORMID=dragonfly_x86_64
4798 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4813 PLATFORMID=freebsd_aarch64
4819 PLATFORMID=freebsd_x86
4824 PLATFORMID=freebsd_x86_64
4829 PLATFORMID=freebsd_powerpc64
4834 PLATFORMID=freebsd_powerpc
4837 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4854 PLATFORMID=haiku_x86
4859 PLATFORMID=haiku_x86_64
4862 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4879 PLATFORMID=kfreebsd_x86
4884 PLATFORMID=kfreebsd_x86_64
4887 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4903 PLATFORMID=linux_aarch64
4905 EPM_FLAGS="-a arm64"
4910 PLATFORMID=linux_alpha
4916 PLATFORMID=linux_arm_eabi
4920 PLATFORMID=linux_arm_oabi
4928 PLATFORMID=linux_hppa
4933 PLATFORMID=linux_x86
4938 PLATFORMID=linux_ia64
4944 PLATFORMID=linux_mips_eb
4949 EPM_FLAGS="-a mips64"
4950 PLATFORMID=linux_mips64_eb
4955 EPM_FLAGS="-a mips64el"
4956 PLATFORMID=linux_mips64_el
4961 EPM_FLAGS="-a mipsel"
4962 PLATFORMID=linux_mips_el
4967 PLATFORMID=linux_m68k
4972 PLATFORMID=linux_powerpc
4977 PLATFORMID=linux_powerpc64
4981 RTL_ARCH=PowerPC_64_LE
4982 PLATFORMID=linux_powerpc64_le
4987 PLATFORMID=linux_sparc
4992 PLATFORMID=linux_sparc64
4997 PLATFORMID=linux_s390
5002 PLATFORMID=linux_s390x
5007 PLATFORMID=linux_x86_64
5010 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5027 PLATFORMID=android_arm_eabi
5032 PLATFORMID=android_aarch64
5037 PLATFORMID=android_x86
5042 PLATFORMID=android_x86_64
5045 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5061 PLATFORMID=netbsd_x86
5066 PLATFORMID=netbsd_powerpc
5071 PLATFORMID=netbsd_sparc
5076 PLATFORMID=netbsd_x86_64
5079 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5095 PLATFORMID=openbsd_x86
5100 PLATFORMID=openbsd_x86_64
5103 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5106 SOLARINC="$SOLARINC -I/usr/local/include"
5120 PLATFORMID=solaris_x86
5125 PLATFORMID=solaris_sparc
5130 PLATFORMID=solaris_sparc64
5133 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5136 SOLARINC="$SOLARINC -I/usr/local/include"
5150 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5155 PLATFORMID=linux_x86
5159 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5163 if test "$with_x" = "no"; then
5164 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5168 if test "$enable_gui" = "no"; then
5169 if test "$USING_X11" != TRUE; then
5170 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5174 AC_DEFINE(HAVE_FEATURE_UI,0)
5177 AC_SUBST(DISABLE_GUI)
5179 WORKDIR="${BUILDDIR}/workdir"
5180 INSTDIR="${BUILDDIR}/instdir"
5181 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5182 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5183 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5191 AC_SUBST([INSTROOT])
5192 AC_SUBST([INSTROOTBASE])
5196 AC_SUBST(PLATFORMID)
5197 AC_SUBST(WINDOWS_X64)
5198 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5200 dnl ===================================================================
5201 dnl Test which package format to use
5202 dnl ===================================================================
5203 AC_MSG_CHECKING([which package format to use])
5204 if test -n "$with_package_format" -a "$with_package_format" != no; then
5205 for i in $with_package_format; do
5207 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5210 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5211 aix - AIX software distribution
5212 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5213 deb - Debian software distribution
5214 pkg - Solaris software distribution
5215 rpm - RedHat software distribution
5217 LibreOffice additionally supports:
5218 archive - .tar.gz or .zip
5220 installed - installation tree
5226 # fakeroot is needed to ensure correct file ownerships/permissions
5227 # inside deb packages and tar archives created on Linux and Solaris.
5228 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5229 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5230 if test "$FAKEROOT" = "no"; then
5232 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5235 PKGFORMAT="$with_package_format"
5236 AC_MSG_RESULT([$PKGFORMAT])
5239 AC_MSG_RESULT([none])
5243 dnl ===================================================================
5244 dnl Set up a different compiler to produce tools to run on the build
5245 dnl machine when doing cross-compilation
5246 dnl ===================================================================
5248 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5249 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5250 if test "$cross_compiling" = "yes"; then
5251 AC_MSG_CHECKING([for BUILD platform configuration])
5253 rm -rf CONF-FOR-BUILD config_build.mk
5254 mkdir CONF-FOR-BUILD
5255 # Here must be listed all files needed when running the configure script. In particular, also
5256 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5257 # keep them in the same order as there.
5258 (cd $SRC_ROOT && tar cf - \
5260 bin/get_config_variables \
5261 solenv/bin/getcompver.awk \
5262 solenv/inc/langlist.mk \
5265 config_host_lang.mk.in \
5267 bin/bffvalidator.sh.in \
5268 bin/odfvalidator.sh.in \
5269 bin/officeotron.sh.in \
5270 hardened_runtime.xcent.in \
5271 instsetoo_native/util/openoffice.lst.in \
5273 sysui/desktop/macosx/Info.plist.in \
5274 .vscode/vs-code-template.code-workspace.in \
5276 | (cd CONF-FOR-BUILD && tar xf -)
5277 cp configure CONF-FOR-BUILD
5278 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5280 unset COM USING_X11 OS CPUNAME
5281 unset CC CXX SYSBASE CFLAGS
5282 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5283 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5284 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5285 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5286 if test -n "$CC_FOR_BUILD"; then
5287 export CC="$CC_FOR_BUILD"
5288 CC_BASE=`first_arg_basename "$CC"`
5290 if test -n "$CXX_FOR_BUILD"; then
5291 export CXX="$CXX_FOR_BUILD"
5292 CXX_BASE=`first_arg_basename "$CXX"`
5294 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5297 # Handle host configuration, which affects the cross-toolset too
5299 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5300 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5301 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5302 if test -n "$ENABLE_JAVA"; then
5304 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5306 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5307 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5310 if test -z "$with_jdk_home"; then
5311 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.])
5316 sub_conf_opts="$sub_conf_opts --without-java"
5318 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5319 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5320 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no"
5321 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5322 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5324 # Don't bother having configure look for stuff not needed for the build platform anyway
5326 --build="$build_alias" \
5328 --disable-firebird-sdbc \
5330 --disable-gstreamer-1-0 \
5332 --disable-mariadb-sdbc \
5334 --disable-online-update \
5336 --disable-pdfimport \
5337 --disable-postgresql-sdbc \
5339 --enable-icecream="$enable_icecream" \
5342 --with-parallelism="$with_parallelism" \
5343 --with-theme="$with_theme" \
5344 --with-tls=openssl \
5347 2>&1 | sed -e 's/^/ /'
5348 if test [${PIPESTATUS[0]}] -ne 0; then
5349 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5352 # filter permitted build targets
5353 PERMITTED_BUILD_TARGETS="
5384 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5385 # newlined lists, to use grep as a filter
5386 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5387 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5388 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5389 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5391 cp config_host.mk ../config_build.mk
5392 cp config_host_lang.mk ../config_build_lang.mk
5393 mv config.log ../config.Build.log
5394 mkdir -p ../config_build
5395 mv config_host/*.h ../config_build
5397 # all these will get a _FOR_BUILD postfix
5398 DIRECT_FOR_BUILD_SETTINGS="
5408 LIBO_URE_MISC_FOLDER
5414 # these overwrite host config with build config
5415 OVERWRITING_SETTINGS="
5420 JAVA_CLASSPATH_NOT_SET
5428 # these need some special handling
5429 EXTRA_HANDLED_SETTINGS="
5436 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5440 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5441 echo "$line" >>build-config
5443 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5445 VV=`eval "echo $VV"`
5446 if test -n "$VV"; then
5447 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5448 echo "$line" >>build-config
5452 for V in $OVERWRITING_SETTINGS; do
5454 VV=`eval "echo $VV"`
5455 if test -n "$VV"; then
5456 line=${V}='${'${V}:-$VV'}'
5457 echo "$line" >>build-config
5461 for V in INSTDIR INSTROOT WORKDIR; do
5463 VV=`eval "echo $VV"`
5464 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5465 if test -n "$VV"; then
5466 line="${V}_FOR_BUILD='$VV'"
5467 echo "$line" >>build-config
5472 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5473 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])
5474 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5475 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5477 eval `cat CONF-FOR-BUILD/build-config`
5479 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5481 rm -rf CONF-FOR-BUILD
5485 CXX_FOR_BUILD="$CXX"
5486 INSTDIR_FOR_BUILD="$INSTDIR"
5487 INSTROOT_FOR_BUILD="$INSTROOT"
5488 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5489 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5490 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5491 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5492 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5493 WORKDIR_FOR_BUILD="$WORKDIR"
5495 AC_SUBST(OS_FOR_BUILD)
5496 AC_SUBST(INSTDIR_FOR_BUILD)
5497 AC_SUBST(INSTROOT_FOR_BUILD)
5498 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5499 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5500 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5501 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5502 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5503 AC_SUBST(WORKDIR_FOR_BUILD)
5504 AC_SUBST(CC_FOR_BUILD)
5505 AC_SUBST(CXX_FOR_BUILD)
5507 dnl ===================================================================
5508 dnl Check for syslog header
5509 dnl ===================================================================
5510 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5512 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5513 dnl ===================================================================
5514 AC_MSG_CHECKING([whether to turn warnings to errors])
5515 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5516 ENABLE_WERROR="TRUE"
5517 PYTHONWARNINGS="error"
5518 AC_MSG_RESULT([yes])
5520 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5521 ENABLE_WERROR="TRUE"
5522 PYTHONWARNINGS="error"
5523 AC_MSG_RESULT([yes])
5528 AC_SUBST(ENABLE_WERROR)
5529 AC_SUBST(PYTHONWARNINGS)
5531 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5532 dnl ===================================================================
5533 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5534 if test -z "$enable_assert_always_abort"; then
5535 if test "$ENABLE_DEBUG" = TRUE; then
5536 enable_assert_always_abort=yes
5538 enable_assert_always_abort=no
5541 if test "$enable_assert_always_abort" = "yes"; then
5542 ASSERT_ALWAYS_ABORT="TRUE"
5543 AC_MSG_RESULT([yes])
5545 ASSERT_ALWAYS_ABORT="FALSE"
5548 AC_SUBST(ASSERT_ALWAYS_ABORT)
5550 # Determine whether to use ooenv for the instdir installation
5551 # ===================================================================
5552 if test $_os != "WINNT" -a $_os != "Darwin"; then
5553 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5554 if test -z "$enable_ooenv"; then
5555 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5561 if test "$enable_ooenv" = "no"; then
5565 AC_MSG_RESULT([yes])
5568 AC_SUBST(ENABLE_OOENV)
5570 if test "$USING_X11" != TRUE; then
5571 # be sure to do not mess with unneeded stuff
5576 build_gstreamer_1_0=no
5580 enable_cairo_canvas=no
5583 if test "$OS" = "HAIKU"; then
5584 enable_cairo_canvas=yes
5588 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5589 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!])
5590 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!"
5594 if test "$test_kf5" = "yes"; then
5598 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5599 if test "$enable_qt5" = "no"; then
5600 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5606 dnl ===================================================================
5607 dnl check for cups support
5608 dnl ===================================================================
5611 if test "$enable_cups" = "no"; then
5615 AC_MSG_CHECKING([whether to enable CUPS support])
5616 if test "$test_cups" = "yes"; then
5618 AC_MSG_RESULT([yes])
5620 AC_MSG_CHECKING([whether cups support is present])
5621 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5622 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5623 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5624 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5631 AC_SUBST(ENABLE_CUPS)
5634 if test "$test_fontconfig" = "yes"; then
5635 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5636 SYSTEM_FONTCONFIG=TRUE
5637 FilterLibs "${FONTCONFIG_LIBS}"
5638 FONTCONFIG_LIBS="${filteredlibs}"
5640 AC_SUBST(FONTCONFIG_CFLAGS)
5641 AC_SUBST(FONTCONFIG_LIBS)
5642 AC_SUBST([SYSTEM_FONTCONFIG])
5644 dnl whether to find & fetch external tarballs?
5645 dnl ===================================================================
5646 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5647 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5648 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5650 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5653 if test -z "$TARFILE_LOCATION"; then
5654 if test -d "$SRC_ROOT/src" ; then
5655 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5656 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5658 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5660 AbsolutePath "$TARFILE_LOCATION"
5661 PathFormat "${absolute_path}"
5662 TARFILE_LOCATION="${formatted_path}"
5664 AC_SUBST(TARFILE_LOCATION)
5666 AC_MSG_CHECKING([whether we want to fetch tarballs])
5667 if test "$enable_fetch_external" != "no"; then
5668 if test "$with_all_tarballs" = "yes"; then
5669 AC_MSG_RESULT([yes, all of them])
5670 DO_FETCH_TARBALLS="ALL"
5672 AC_MSG_RESULT([yes, if we use them])
5673 DO_FETCH_TARBALLS="TRUE"
5679 AC_SUBST(DO_FETCH_TARBALLS)
5681 AC_MSG_CHECKING([whether to build help])
5682 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5683 BUILD_TYPE="$BUILD_TYPE HELP"
5684 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5685 case "$with_help" in
5687 ENABLE_HTMLHELP=TRUE
5688 SCPDEFS="$SCPDEFS -DWITH_HELP"
5689 AC_MSG_RESULT([HTML])
5692 ENABLE_HTMLHELP=TRUE
5694 AC_MSG_RESULT([HTML])
5697 SCPDEFS="$SCPDEFS -DWITH_HELP"
5698 AC_MSG_RESULT([yes])
5701 AC_MSG_ERROR([Unknown --with-help=$with_help])
5707 AC_SUBST([ENABLE_HTMLHELP])
5708 AC_SUBST([HELP_ONLINE])
5710 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5711 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5712 BUILD_TYPE="$BUILD_TYPE HELP"
5713 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5714 case "$with_omindex" in
5716 ENABLE_HTMLHELP=TRUE
5718 HELP_OMINDEX_PAGE=TRUE
5719 AC_MSG_RESULT([SERVER])
5722 ENABLE_HTMLHELP=TRUE
5724 HELP_OMINDEX_PAGE=FALSE
5725 AC_MSG_RESULT([NOXAP])
5728 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5732 HELP_OMINDEX_PAGE=FALSE
5735 AC_SUBST([ENABLE_HTMLHELP])
5736 AC_SUBST([HELP_OMINDEX_PAGE])
5737 AC_SUBST([HELP_ONLINE])
5740 dnl Test whether to include MySpell dictionaries
5741 dnl ===================================================================
5742 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5743 if test "$with_myspell_dicts" = "yes"; then
5744 AC_MSG_RESULT([yes])
5745 WITH_MYSPELL_DICTS=TRUE
5746 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5747 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5752 AC_SUBST(WITH_MYSPELL_DICTS)
5754 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5755 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5756 if test "$with_system_dicts" = yes; then
5757 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5759 with_system_dicts=no
5762 AC_MSG_CHECKING([whether to use dicts from external paths])
5763 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5764 AC_MSG_RESULT([yes])
5766 AC_MSG_CHECKING([for spelling dictionary directory])
5767 if test -n "$with_external_dict_dir"; then
5768 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5770 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5771 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5772 DICT_SYSTEM_DIR=file:///usr/share/myspell
5775 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5776 AC_MSG_CHECKING([for hyphenation patterns directory])
5777 if test -n "$with_external_hyph_dir"; then
5778 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5780 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5782 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5783 AC_MSG_CHECKING([for thesaurus directory])
5784 if test -n "$with_external_thes_dir"; then
5785 THES_SYSTEM_DIR=file://$with_external_thes_dir
5787 THES_SYSTEM_DIR=file:///usr/share/mythes
5789 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5794 AC_SUBST(SYSTEM_DICTS)
5795 AC_SUBST(DICT_SYSTEM_DIR)
5796 AC_SUBST(HYPH_SYSTEM_DIR)
5797 AC_SUBST(THES_SYSTEM_DIR)
5799 dnl ===================================================================
5800 dnl Precompiled headers.
5802 AC_MSG_CHECKING([whether to enable pch feature])
5803 if test -z "$enable_pch"; then
5804 if test "$_os" = "WINNT"; then
5805 # Enabled by default on Windows.
5811 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5812 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5814 if test "$enable_pch" = "system"; then
5816 AC_MSG_RESULT([yes (system headers)])
5817 elif test "$enable_pch" = "base"; then
5819 AC_MSG_RESULT([yes (system and base headers)])
5820 elif test "$enable_pch" = "normal"; then
5822 AC_MSG_RESULT([yes (normal)])
5823 elif test "$enable_pch" = "full"; then
5825 AC_MSG_RESULT([yes (full)])
5826 elif test "$enable_pch" = "yes"; then
5827 # Pick a suitable default.
5828 if test "$GCC" = "yes"; then
5829 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5830 # while making the PCHs larger and rebuilds more likely.
5832 AC_MSG_RESULT([yes (system and base headers)])
5834 # With MSVC the highest level makes a significant difference,
5835 # and it was the default when there used to be no PCH levels.
5837 AC_MSG_RESULT([yes (full)])
5839 elif test "$enable_pch" = "no"; then
5842 AC_MSG_ERROR([Unknown value for --enable-pch])
5844 AC_SUBST(ENABLE_PCH)
5845 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5846 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5847 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5848 if test "$CCACHE_BIN" != "not found"; then
5849 AC_MSG_CHECKING([ccache version])
5850 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5851 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5852 AC_MSG_RESULT([$CCACHE_VERSION])
5853 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5854 if test "$CCACHE_NUMVER" -gt "030701"; then
5855 AC_MSG_RESULT([yes])
5857 AC_MSG_RESULT([no (not newer than 3.7.1)])
5863 PCH_INSTANTIATE_TEMPLATES=
5864 if test -n "$ENABLE_PCH"; then
5865 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5867 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5868 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5870 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5876 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5878 BUILDING_PCH_WITH_OBJ=
5879 if test -n "$ENABLE_PCH"; then
5880 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5882 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5883 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5885 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5891 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5895 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5896 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5898 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5899 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5901 PCH_CODEGEN="-fpch-codegen"
5902 PCH_NO_CODEGEN="-fno-pch-codegen"
5905 if test -n "$PCH_CODEGEN"; then
5911 AC_SUBST(PCH_CODEGEN)
5912 AC_SUBST(PCH_NO_CODEGEN)
5914 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5915 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5917 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5918 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5920 if test -n "$PCH_DEBUGINFO"; then
5926 AC_SUBST(PCH_DEBUGINFO)
5930 AC_MSG_CHECKING([the GNU Make version])
5931 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5932 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5933 if test "$_make_longver" -ge "038200"; then
5934 AC_MSG_RESULT([$GNUMAKE $_make_version])
5936 elif test "$_make_longver" -ge "038100"; then
5937 if test "$build_os" = "cygwin"; then
5938 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5940 AC_MSG_RESULT([$GNUMAKE $_make_version])
5942 dnl ===================================================================
5943 dnl Search all the common names for sha1sum
5944 dnl ===================================================================
5945 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5946 if test -z "$SHA1SUM"; then
5947 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5948 elif test "$SHA1SUM" = "openssl"; then
5949 SHA1SUM="openssl sha1"
5951 AC_MSG_CHECKING([for GNU Make bug 20033])
5952 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5953 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5954 A := \$(wildcard *.a)
5958 <TAB>@echo survived bug20033.
5962 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5975 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5976 <TAB>\$(call d1,\$(CHECKSUM)),\
5977 <TAB>\$(call d2,\$(CHECKSUM)))
5979 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5980 no_parallelism_make="YES"
5981 AC_MSG_RESULT([yes, disable parallelism])
5983 AC_MSG_RESULT([no, keep parallelism enabled])
5985 rm -rf $TESTGMAKEBUG20033
5987 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5990 # find if gnumake support file function
5991 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5992 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5993 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5994 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5996 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5997 \$(file >test.txt,Success )
6004 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6005 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6006 HAVE_GNUMAKE_FILE_FUNC=TRUE
6007 AC_MSG_RESULT([yes])
6011 rm -rf $TESTGMAKEFILEFUNC
6012 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6013 AC_SUBST(GNUMAKE_WIN_NATIVE)
6015 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6017 if test "$_make_ver_check" = ""; then
6021 HAVE_LD_HASH_STYLE=FALSE
6022 WITH_LINKER_HASH_STYLE=
6023 AC_MSG_CHECKING([for --hash-style gcc linker support])
6024 if test "$GCC" = "yes"; then
6025 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6026 hash_styles="gnu sysv"
6027 elif test "$with_linker_hash_style" = "no"; then
6030 hash_styles="$with_linker_hash_style"
6033 for hash_style in $hash_styles; do
6034 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6035 hash_style_ldflags_save=$LDFLAGS
6036 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6038 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6045 HAVE_LD_HASH_STYLE=TRUE
6046 WITH_LINKER_HASH_STYLE=$hash_style
6048 [HAVE_LD_HASH_STYLE=FALSE],
6049 [HAVE_LD_HASH_STYLE=FALSE])
6050 LDFLAGS=$hash_style_ldflags_save
6053 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6054 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6058 LDFLAGS=$hash_style_ldflags_save
6062 AC_SUBST(HAVE_LD_HASH_STYLE)
6063 AC_SUBST(WITH_LINKER_HASH_STYLE)
6065 dnl ===================================================================
6066 dnl Check whether there's a Perl version available.
6067 dnl ===================================================================
6068 if test -z "$with_perl_home"; then
6069 AC_PATH_PROG(PERL, perl)
6071 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6072 _perl_path="$with_perl_home/bin/perl"
6073 if test -x "$_perl_path"; then
6076 AC_MSG_ERROR([$_perl_path not found])
6080 dnl ===================================================================
6081 dnl Testing for Perl version 5 or greater.
6082 dnl $] is the Perl version variable, it is returned as an integer
6083 dnl ===================================================================
6084 if test "$PERL"; then
6085 AC_MSG_CHECKING([the Perl version])
6086 ${PERL} -e "exit($]);"
6088 if test "$_perl_version" -lt 5; then
6089 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6091 AC_MSG_RESULT([Perl $_perl_version])
6093 AC_MSG_ERROR([Perl not found, install Perl 5])
6096 dnl ===================================================================
6097 dnl Testing for required Perl modules
6098 dnl ===================================================================
6100 AC_MSG_CHECKING([for required Perl modules])
6101 perl_use_string="use Cwd ; use Digest::MD5"
6102 if test "$_os" = "WINNT"; then
6103 if test -n "$PKGFORMAT"; then
6104 for i in $PKGFORMAT; do
6107 # for getting fonts versions to use in MSI
6108 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6114 if test "$with_system_hsqldb" = "yes"; then
6115 perl_use_string="$perl_use_string ; use Archive::Zip"
6117 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6118 # OpenSSL needs that to build
6119 perl_use_string="$perl_use_string ; use FindBin"
6121 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6122 AC_MSG_RESULT([all modules found])
6124 AC_MSG_RESULT([failed to find some modules])
6125 # Find out which modules are missing.
6126 for i in $perl_use_string; do
6127 if test "$i" != "use" -a "$i" != ";"; then
6128 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6129 missing_perl_modules="$missing_perl_modules $i"
6134 The missing Perl modules are: $missing_perl_modules
6135 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6138 dnl ===================================================================
6139 dnl Check for pkg-config
6140 dnl ===================================================================
6141 if test "$_os" != "WINNT"; then
6145 if test "$_os" != "WINNT"; then
6147 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6148 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6149 # explicitly. Or put /path/to/compiler in PATH yourself.
6151 # Use wrappers for LTO
6152 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6153 AC_CHECK_TOOL(AR,gcc-ar)
6154 AC_CHECK_TOOL(NM,gcc-nm)
6155 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6157 AC_CHECK_TOOL(AR,ar)
6158 AC_CHECK_TOOL(NM,nm)
6159 AC_CHECK_TOOL(RANLIB,ranlib)
6161 AC_CHECK_TOOL(OBJDUMP,objdump)
6162 AC_CHECK_TOOL(READELF,readelf)
6163 AC_CHECK_TOOL(STRIP,strip)
6164 if test "$_os" = "WINNT"; then
6165 AC_CHECK_TOOL(DLLTOOL,dlltool)
6166 AC_CHECK_TOOL(WINDRES,windres)
6174 AC_SUBST(PKG_CONFIG)
6175 AC_SUBST(PKG_CONFIG_PATH)
6176 AC_SUBST(PKG_CONFIG_LIBDIR)
6182 dnl ===================================================================
6183 dnl pkg-config checks on macOS
6184 dnl ===================================================================
6186 if test $_os = Darwin; then
6187 AC_MSG_CHECKING([for bogus pkg-config])
6188 if test -n "$PKG_CONFIG"; then
6189 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6190 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6192 if test "$enable_bogus_pkg_config" = "yes"; then
6193 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6195 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.])
6199 AC_MSG_RESULT([no, good])
6205 # Return value: $csctest
6209 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6210 if test -n "$regvalue"; then
6218 # Return value: $altest
6222 # We need this check to detect 4.6.1 or above.
6223 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6224 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6225 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6231 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6232 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6233 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6244 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6245 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6246 if test -n "$regvalue"; then
6253 find_winsdk_version()
6255 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6256 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6258 unset winsdktest winsdkbinsubdir winsdklibsubdir
6262 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6263 if test -n "$regvalue"; then
6264 winsdktest=$regvalue
6265 winsdklibsubdir=win8
6270 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6271 if test -n "$regvalue"; then
6272 winsdktest=$regvalue
6273 winsdklibsubdir=winv6.3
6278 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6279 if test -n "$regvalue"; then
6280 winsdktest=$regvalue
6281 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6282 if test -n "$regvalue"; then
6283 winsdkbinsubdir="$regvalue".0
6284 winsdklibsubdir=$winsdkbinsubdir
6285 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6286 local tmppath_unix=$(cygpath -u "$tmppath")
6287 # test exist the SDK path
6288 if test -d "$tmppath_unix"; then
6289 # when path is convertible to a short path then path is okay
6290 cygpath -d "$tmppath" >/dev/null 2>&1
6291 if test $? -ne 0; then
6292 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6295 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6306 # Return value: From find_winsdk_version
6310 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6311 find_winsdk_version $ver
6312 if test -n "$winsdktest"; then
6320 # Return value: $msmdir
6322 AC_MSG_CHECKING([for MSVC merge modules directory])
6323 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6328 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6331 for f in $my_msm_files; do
6332 echo "$as_me:$LINENO: searching for $f" >&5
6336 for ver in 14.0 15.0; do
6337 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6338 if test -n "$regvalue"; then
6339 for f in ${my_msm_files}; do
6340 if test -e "$regvalue/${f}"; then
6347 dnl Is the following fallback really necessary, or was it added in response
6348 dnl to never having started Visual Studio on a given machine, so the
6349 dnl registry keys checked above had presumably not yet been created?
6350 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6351 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6352 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6353 dnl expanding to "C:\Program Files\Common Files"), which would need
6354 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6355 dnl obtain its value from cygwin:
6356 if test -z "$msmdir"; then
6357 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6358 for f in ${my_msm_files}; do
6359 if test -e "$my_msm_dir/${f}"; then
6365 dnl Starting from MSVC 15.0, merge modules are located in different directory
6368 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6369 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6370 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6371 for f in ${my_msm_files}; do
6372 if test -e "$my_msm_dir/${f}"; then
6381 if test -n "$msmdir"; then
6382 msmdir=`cygpath -m "$msmdir"`
6383 AC_MSG_RESULT([$msmdir])
6385 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6386 AC_MSG_FAILURE([not found])
6388 AC_MSG_WARN([not found (check config.log)])
6389 add_warning "MSM none of ${my_msm_files} found"
6394 find_msvc_x64_dlls()
6396 # Return value: $msvcdllpath, $msvcdlls
6398 AC_MSG_CHECKING([for MSVC x64 DLL path])
6399 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6402 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6403 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6404 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6405 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6408 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6409 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6410 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6416 AC_MSG_RESULT([$msvcdllpath])
6417 AC_MSG_CHECKING([for MSVC x64 DLLs])
6418 msvcdlls="msvcp140.dll vcruntime140.dll"
6419 for dll in $msvcdlls; do
6420 if ! test -f "$msvcdllpath/$dll"; then
6421 AC_MSG_FAILURE([missing $dll])
6424 AC_MSG_RESULT([found all ($msvcdlls)])
6427 dnl =========================================
6428 dnl Check for the Windows SDK.
6429 dnl =========================================
6430 if test "$_os" = "WINNT"; then
6431 AC_MSG_CHECKING([for Windows SDK])
6432 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6434 WINDOWS_SDK_HOME=$winsdktest
6436 # normalize if found
6437 if test -n "$WINDOWS_SDK_HOME"; then
6438 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6439 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6442 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6445 if test -n "$WINDOWS_SDK_HOME"; then
6446 # Remove a possible trailing backslash
6447 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6449 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6450 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6451 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6452 have_windows_sdk_headers=yes
6453 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6454 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6455 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6456 have_windows_sdk_headers=yes
6457 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6458 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6459 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6460 have_windows_sdk_headers=yes
6462 have_windows_sdk_headers=no
6465 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6466 have_windows_sdk_libs=yes
6467 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6468 have_windows_sdk_libs=yes
6470 have_windows_sdk_libs=no
6473 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6474 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6475 the Windows SDK are installed.])
6479 if test -z "$WINDOWS_SDK_HOME"; then
6480 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6481 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6482 WINDOWS_SDK_VERSION=80
6483 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6484 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6485 WINDOWS_SDK_VERSION=81
6486 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6487 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6488 WINDOWS_SDK_VERSION=10
6489 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6491 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6493 PathFormat "$WINDOWS_SDK_HOME"
6494 WINDOWS_SDK_HOME="$formatted_path"
6495 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6496 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6497 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6498 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6499 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6500 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6501 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6505 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6506 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6507 dnl but not in v8.0), so allow this to be overridden with a
6508 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6509 dnl and configuration error if no WiLangId.vbs is found would arguably be
6510 dnl better, but I do not know under which conditions exactly it is needed by
6512 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6513 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6514 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6515 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6516 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6517 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6519 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6520 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6521 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6523 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6524 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6525 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6528 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6529 if test -n "$with_package_format" -a "$with_package_format" != no; then
6530 for i in "$with_package_format"; do
6531 if test "$i" = "msi"; then
6532 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6533 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6540 AC_SUBST(WINDOWS_SDK_HOME)
6541 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6542 AC_SUBST(WINDOWS_SDK_VERSION)
6543 AC_SUBST(WINDOWS_SDK_WILANGID)
6545 if test "$build_os" = "cygwin"; then
6546 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6547 dnl dir, it also determines that dir's path w/o an arch segment if any,
6548 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6549 AC_MSG_CHECKING([for midl.exe])
6552 if test -n "$winsdkbinsubdir" \
6553 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6555 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6556 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6557 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6558 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6559 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6560 elif test -f "$winsdktest/Bin/midl.exe"; then
6561 MIDL_PATH=$winsdktest/Bin
6562 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6564 if test ! -f "$MIDL_PATH/midl.exe"; then
6565 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6567 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6570 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6571 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6573 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6574 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6575 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6576 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6577 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6578 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6579 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6580 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6581 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6582 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6583 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6584 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6586 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6590 AC_MSG_CHECKING([for csc.exe])
6592 if test -f "$csctest/csc.exe"; then
6595 if test ! -f "$CSC_PATH/csc.exe"; then
6596 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6598 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6601 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6604 AC_MSG_CHECKING([for al.exe])
6606 if test -n "$winsdkbinsubdir" \
6607 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6609 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6610 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6611 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6612 elif test -f "$winsdktest/Bin/al.exe"; then
6613 AL_PATH="$winsdktest/Bin"
6616 if test -z "$AL_PATH"; then
6618 if test -f "$altest/bin/al.exe"; then
6619 AL_PATH="$altest/bin"
6620 elif test -f "$altest/al.exe"; then
6624 if test ! -f "$AL_PATH/al.exe"; then
6625 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6627 AC_MSG_RESULT([$AL_PATH/al.exe])
6630 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6632 dnl Check mscoree.lib / .NET Framework dir
6633 AC_MSG_CHECKING(.NET Framework)
6635 PathFormat "$frametest"
6636 frametest="$formatted_path"
6637 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6638 DOTNET_FRAMEWORK_HOME="$frametest"
6641 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6642 DOTNET_FRAMEWORK_HOME="$winsdktest"
6645 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
6646 AC_MSG_ERROR([mscoree.lib not found])
6648 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6650 PathFormat "$MIDL_PATH"
6651 MIDL_PATH="$formatted_path"
6653 PathFormat "$AL_PATH"
6654 AL_PATH="$formatted_path"
6656 PathFormat "$DOTNET_FRAMEWORK_HOME"
6657 DOTNET_FRAMEWORK_HOME="$formatted_path"
6659 PathFormat "$CSC_PATH"
6660 CSC_PATH="$formatted_path"
6663 dnl ===================================================================
6664 dnl Testing for C++ compiler and version...
6665 dnl ===================================================================
6667 if test "$_os" != "WINNT"; then
6668 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6669 save_CXXFLAGS=$CXXFLAGS
6671 CXXFLAGS=$save_CXXFLAGS
6672 if test -z "$CXX_BASE"; then
6673 CXX_BASE=`first_arg_basename "$CXX"`
6677 dnl check for GNU C++ compiler version
6678 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6679 AC_MSG_CHECKING([the GNU C++ compiler version])
6681 _gpp_version=`$CXX -dumpversion`
6682 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6684 if test "$_gpp_majmin" -lt "700"; then
6685 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6687 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6690 dnl see https://code.google.com/p/android/issues/detail?id=41770
6694 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6695 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6696 #include <bits/c++config.h>]],[[
6697 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6698 && !defined(_GLIBCXX__PTHREADS) \
6699 && !defined(_GLIBCXX_HAS_GTHREADS)
6702 ]])],[AC_MSG_RESULT([yes])
6703 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6705 if test $glibcxx_threads = yes; then
6706 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6709 AC_SUBST(BOOST_CXXFLAGS)
6712 # prefx CXX with ccache if needed
6715 if test "$CCACHE" != ""; then
6716 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6718 save_CXXFLAGS=$CXXFLAGS
6719 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6720 dnl an empty program will do, we're checking the compiler flags
6721 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6722 [use_ccache=yes], [use_ccache=no])
6723 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6724 AC_MSG_RESULT([yes])
6727 CXX_BASE="ccache $CXX_BASE"
6730 CXXFLAGS=$save_CXXFLAGS
6734 dnl ===================================================================
6735 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6736 dnl ===================================================================
6738 if test "$_os" != "WINNT"; then
6741 dnl Check whether there's a C pre-processor.
6746 dnl ===================================================================
6747 dnl Find integral type sizes and alignments
6748 dnl ===================================================================
6750 if test "$_os" != "WINNT"; then
6752 AC_CHECK_SIZEOF(long)
6753 AC_CHECK_SIZEOF(short)
6754 AC_CHECK_SIZEOF(int)
6755 AC_CHECK_SIZEOF(long long)
6756 AC_CHECK_SIZEOF(double)
6757 AC_CHECK_SIZEOF(void*)
6759 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6760 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6761 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6762 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6763 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6765 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6766 m4_pattern_allow([AC_CHECK_ALIGNOF])
6767 m4_ifdef([AC_CHECK_ALIGNOF],
6769 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6770 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6771 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6772 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6775 case "$_os-$host_cpu" in
6777 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6778 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6779 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6780 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6783 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6784 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6785 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6786 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6789 if test -z "$ac_cv_alignof_short" -o \
6790 -z "$ac_cv_alignof_int" -o \
6791 -z "$ac_cv_alignof_long" -o \
6792 -z "$ac_cv_alignof_double"; then
6793 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.])
6799 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6800 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6801 if test $ac_cv_sizeof_long -eq 8; then
6802 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6803 elif test $ac_cv_sizeof_double -eq 8; then
6804 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6806 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6809 dnl Check for large file support
6811 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6812 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6814 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6815 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6819 SAL_TYPES_SIZEOFSHORT=2
6820 SAL_TYPES_SIZEOFINT=4
6821 SAL_TYPES_SIZEOFLONG=4
6822 SAL_TYPES_SIZEOFLONGLONG=8
6823 if test $WIN_HOST_BITS -eq 32; then
6824 SAL_TYPES_SIZEOFPOINTER=4
6826 SAL_TYPES_SIZEOFPOINTER=8
6828 SAL_TYPES_ALIGNMENT2=2
6829 SAL_TYPES_ALIGNMENT4=4
6830 SAL_TYPES_ALIGNMENT8=8
6833 AC_SUBST(LFS_CFLAGS)
6835 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6836 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6837 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6838 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6839 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6840 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6841 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6842 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6844 dnl ===================================================================
6845 dnl Check whether to enable runtime optimizations
6846 dnl ===================================================================
6847 ENABLE_RUNTIME_OPTIMIZATIONS=
6848 AC_MSG_CHECKING([whether to enable runtime optimizations])
6849 if test -z "$enable_runtime_optimizations"; then
6853 enable_runtime_optimizations=no
6859 if test "$enable_runtime_optimizations" != no; then
6860 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6861 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6862 AC_MSG_RESULT([yes])
6866 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6868 dnl ===================================================================
6869 dnl Check if valgrind headers are available
6870 dnl ===================================================================
6872 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6873 prev_cppflags=$CPPFLAGS
6874 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6875 # or where does it come from?
6876 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6877 AC_CHECK_HEADER([valgrind/valgrind.h],
6878 [ENABLE_VALGRIND=TRUE])
6879 CPPFLAGS=$prev_cppflags
6881 AC_SUBST([ENABLE_VALGRIND])
6882 if test -z "$ENABLE_VALGRIND"; then
6883 if test "$with_valgrind" = yes; then
6884 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6888 AC_SUBST([VALGRIND_CFLAGS])
6891 dnl ===================================================================
6892 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6893 dnl ===================================================================
6895 # We need at least the sys/sdt.h include header.
6896 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6897 if test "$SDT_H_FOUND" = "TRUE"; then
6898 # Found sys/sdt.h header, now make sure the c++ compiler works.
6899 # Old g++ versions had problems with probes in constructors/destructors.
6900 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6902 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6903 #include <sys/sdt.h>
6911 ProbeClass(int& v, const char *n) : ref(v), name(n)
6913 DTRACE_PROBE2(_test_, cons, name, ref);
6916 void method(int min)
6918 DTRACE_PROBE3(_test_, meth, name, ref, min);
6924 DTRACE_PROBE2(_test_, dest, name, ref);
6929 DTRACE_PROBE1(_test_, call, i);
6930 ProbeClass inst = ProbeClass(i, "call");
6932 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6933 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6936 AC_CONFIG_HEADERS([config_host/config_probes.h])
6938 dnl ===================================================================
6940 dnl ===================================================================
6941 HAVE_GCC_STACK_CLASH_PROTECTION=
6942 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6943 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6945 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6947 [AC_LANG_PROGRAM(, [[return 0;]])],
6948 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6949 [AC_MSG_RESULT([no])])
6952 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6954 CFLAGS="$CFLAGS -Werror -mno-avx"
6955 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6957 if test "$HAVE_GCC_AVX" = "TRUE"; then
6958 AC_MSG_RESULT([yes])
6963 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6964 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6966 if (__sync_add_and_fetch(&v, 1) != 1 ||
6967 __sync_sub_and_fetch(&v, 1) != 0)
6969 __sync_synchronize();
6970 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6974 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6975 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6976 AC_MSG_RESULT([yes])
6977 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6982 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6984 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6987 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6989 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6990 AC_MSG_RESULT([yes])
6991 ], [AC_MSG_RESULT([no])])
6994 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6996 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6999 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7001 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7002 AC_MSG_RESULT([yes])
7003 ], [AC_MSG_RESULT([no])])
7006 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7008 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7010 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7012 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7013 AC_MSG_RESULT([yes])
7014 ], [AC_MSG_RESULT([no])])
7017 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7019 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7022 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7024 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7025 AC_MSG_RESULT([yes])
7026 ], [AC_MSG_RESULT([no])])
7029 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7031 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7034 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7036 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7037 AC_MSG_RESULT([yes])
7038 ], [AC_MSG_RESULT([no])])
7041 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7043 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7045 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7047 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7048 AC_MSG_RESULT([yes])
7049 ], [AC_MSG_RESULT([no])])
7052 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7054 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7056 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7058 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7059 AC_MSG_RESULT([yes])
7060 ], [AC_MSG_RESULT([no])])
7063 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7065 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7067 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7069 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7070 AC_MSG_RESULT([yes])
7071 ], [AC_MSG_RESULT([no])])
7074 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7076 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7079 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7081 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7082 AC_MSG_RESULT([yes])
7083 ], [AC_MSG_RESULT([no])])
7086 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7088 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7091 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7093 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7094 AC_MSG_RESULT([yes])
7095 ], [AC_MSG_RESULT([no])])
7099 AC_SUBST(HAVE_GCC_AVX)
7100 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7101 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7103 dnl ===================================================================
7104 dnl Identify the C++ library
7105 dnl ===================================================================
7107 AC_MSG_CHECKING([what the C++ library is])
7109 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7115 [CPP_LIBRARY=GLIBCXX
7116 cpp_library_name="GNU libstdc++"
7118 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7120 #ifndef _LIBCPP_VERSION
7125 cpp_library_name="LLVM libc++"
7126 AC_DEFINE([HAVE_LIBCXX])
7128 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7135 cpp_library_name="Microsoft"
7137 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7138 AC_MSG_RESULT([$cpp_library_name])
7141 dnl ===================================================================
7143 dnl ===================================================================
7144 AC_PATH_PROG(GPERF, gperf)
7145 if test -z "$GPERF"; then
7146 AC_MSG_ERROR([gperf not found but needed. Install it.])
7148 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7149 GPERF=`cygpath -m $GPERF`
7151 AC_MSG_CHECKING([whether gperf is new enough])
7152 my_gperf_ver1=$($GPERF --version | head -n 1)
7153 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7154 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7155 if test "$my_gperf_ver3" -ge 301; then
7156 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7158 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7162 dnl ===================================================================
7163 dnl Check for system libcmis
7164 dnl ===================================================================
7165 # libcmis requires curl and we can't build curl for iOS
7166 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7167 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7172 AC_SUBST(ENABLE_LIBCMIS)
7174 dnl ===================================================================
7176 dnl ===================================================================
7178 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7180 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7181 if test "$with_latest_c__" = yes; then
7182 CXXFLAGS_CXX11=-std:c++latest
7184 CXXFLAGS_CXX11=-std:c++17
7186 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7187 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7188 my_flags='-std=c++17 -std=c++1z'
7189 if test "$with_latest_c__" = yes; then
7190 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7192 for flag in $my_flags; do
7193 if test "$COM" = MSC; then
7194 flag="-Xclang $flag"
7196 save_CXXFLAGS=$CXXFLAGS
7197 CXXFLAGS="$CXXFLAGS $flag -Werror"
7198 if test "$SYSTEM_LIBCMIS" = TRUE; then
7199 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7202 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7203 #include <algorithm>
7204 #include <functional>
7207 #if defined SYSTEM_LIBCMIS
7208 // See ucb/source/ucp/cmis/auth_provider.hxx:
7209 #if !defined __clang__
7210 #pragma GCC diagnostic push
7211 #pragma GCC diagnostic ignored "-Wdeprecated"
7212 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7214 #include <libcmis/libcmis.hxx>
7215 #if !defined __clang__
7216 #pragma GCC diagnostic pop
7220 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7221 std::sort(v.begin(), v.end(), fn);
7223 ]])],[CXXFLAGS_CXX11=$flag])
7225 CXXFLAGS=$save_CXXFLAGS
7226 if test -n "$CXXFLAGS_CXX11"; then
7231 if test -n "$CXXFLAGS_CXX11"; then
7232 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7236 AC_SUBST(CXXFLAGS_CXX11)
7238 if test "$GCC" = "yes"; then
7239 save_CXXFLAGS=$CXXFLAGS
7240 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7242 CXXFLAGS=$save_CXXFLAGS
7243 AC_SUBST(ATOMIC_LIB)
7246 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7247 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7248 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7249 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7250 dnl again towards 4.7.2:
7251 if test $CPP_LIBRARY = GLIBCXX; then
7252 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7254 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7256 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7257 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7258 // GCC 4.7.0: 20120322
7259 // GCC 4.7.1: 20120614
7260 // and using a range check is not possible as the mapping between
7261 // __GLIBCXX__ values and GCC versions is not monotonic
7266 ]])], [AC_MSG_RESULT(no, ok)],
7267 [AC_MSG_ERROR(yes)])
7271 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7272 save_CXXFLAGS=$CXXFLAGS
7273 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7276 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7279 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7295 a thinga[]={{0,0}, {1,1}};
7296 b thingb[]={{0,0}, {1,1}};
7297 size_t i = sizeof(sal_n_array_size(thinga));
7298 size_t j = sizeof(sal_n_array_size(thingb));
7299 return !(i != 0 && j != 0);
7301 ], [ AC_MSG_RESULT(yes) ],
7302 [ AC_MSG_ERROR(no)])
7304 CXXFLAGS=$save_CXXFLAGS
7306 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7307 if test "$GCC" = yes; then
7308 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7310 save_CXXFLAGS=$CXXFLAGS
7311 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7312 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7313 CXXFLAGS=$save_CXXFLAGS
7315 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7316 AC_MSG_RESULT([yes])
7321 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7323 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7324 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7325 dnl from consteval constructor initializing const variable",
7326 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
7327 dnl expression' with consteval constructor", or <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
7328 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
7329 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'":
7331 save_CXXFLAGS=$CXXFLAGS
7332 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7333 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7335 consteval S() { i = 1; }
7340 struct S1 { consteval S1(int) {} };
7355 return (s.i == 1) ? 0 : 1;
7357 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7358 AC_MSG_RESULT([yes])
7359 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7360 CXXFLAGS=$save_CXXFLAGS
7363 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7365 save_CXXFLAGS=$CXXFLAGS
7366 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7367 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7368 #include <algorithm>
7369 #include <initializer_list>
7371 template<typename T> class S {
7375 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7377 constinit S<int> s{3, 2, 1};
7379 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7380 AC_MSG_RESULT([yes])
7381 ], [AC_MSG_RESULT([no])])
7382 CXXFLAGS=$save_CXXFLAGS
7385 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7387 save_CXXFLAGS=$CXXFLAGS
7388 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7389 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7391 #include <type_traits>
7392 // Don't check size_type directly, as it was called index_type before P1872R0:
7393 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7395 AC_DEFINE([HAVE_CPP_SPAN],[1])
7396 AC_MSG_RESULT([yes])
7397 ], [AC_MSG_RESULT([no])])
7398 CXXFLAGS=$save_CXXFLAGS
7401 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7403 save_CXXFLAGS=$CXXFLAGS
7404 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7405 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7406 struct S1 { S1(S1 &&); };
7408 S1 f(S2 s) { return s; }
7410 AC_DEFINE([HAVE_P1155R3],[1])
7411 AC_MSG_RESULT([yes])
7412 ], [AC_MSG_RESULT([no])])
7413 CXXFLAGS=$save_CXXFLAGS
7416 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7417 dnl which is included in -Wextra anyway):
7418 HAVE_WDEPRECATED_COPY_DTOR=
7419 if test "$GCC" = yes; then
7420 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7422 save_CXXFLAGS=$CXXFLAGS
7423 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7424 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7425 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7426 AC_MSG_RESULT([yes])
7427 ], [AC_MSG_RESULT([no])])
7428 CXXFLAGS=$save_CXXFLAGS
7431 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7433 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7434 dnl uninitialized warning for code like
7437 dnl boost::optional<OString> * g(bool b) {
7438 dnl boost::optional<OString> o;
7440 dnl return new boost::optional<OString>(o);
7443 dnl (as is e.g. present, in a slightly more elaborate form, in
7444 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7445 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7446 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7447 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7448 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7450 save_CXXFLAGS=$CXXFLAGS
7451 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7452 if test "$ENABLE_OPTIMIZED" = TRUE; then
7453 CXXFLAGS="$CXXFLAGS -O2"
7455 CXXFLAGS="$CXXFLAGS -O0"
7457 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7466 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7467 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7473 char stg[sizeof (S1)];
7481 ]])], [AC_MSG_RESULT([no])], [
7482 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7483 AC_MSG_RESULT([yes])
7485 CXXFLAGS=$save_CXXFLAGS
7488 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7490 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7491 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7492 dnl hits us e.g. with GCC 10 and --enable-optimized at
7494 dnl In file included from include/rtl/string.hxx:49,
7495 dnl from include/rtl/ustring.hxx:43,
7496 dnl from include/osl/file.hxx:35,
7497 dnl from include/codemaker/global.hxx:28,
7498 dnl from include/codemaker/options.hxx:23,
7499 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7500 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7501 dnl inlined from ‘static char* rtl::ToStringHelper<const char [N]>::addData(char*, const char*) [with long unsigned int N = 3]’ at include/rtl/stringconcat.hxx:147:85,
7502 dnl inlined from ‘char* rtl::OStringConcat<T1, T2>::addData(char*) const [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/stringconcat.hxx:226:103,
7503 dnl inlined from ‘rtl::OStringBuffer& rtl::OStringBuffer::append(rtl::OStringConcat<T1, T2>&&) [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/strbuf.hxx:599:30,
7504 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7505 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7506 dnl 78 | memcpy( buffer, data, length );
7507 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7508 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7509 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7510 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7512 save_CXXFLAGS=$CXXFLAGS
7513 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7514 if test "$ENABLE_OPTIMIZED" = TRUE; then
7515 CXXFLAGS="$CXXFLAGS -O2"
7517 CXXFLAGS="$CXXFLAGS -O0"
7519 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7520 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7521 void fill(char const * begin, char const * end, char c);
7527 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7528 __builtin_strncpy(c.username, "root", sizeof(c.username));
7530 ]])], [AC_MSG_RESULT([no])], [
7531 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7532 AC_MSG_RESULT([yes])
7534 CXXFLAGS=$save_CXXFLAGS
7537 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7539 dnl ===================================================================
7540 dnl CPU Intrinsics support - SSE, AVX
7541 dnl ===================================================================
7543 CXXFLAGS_INTRINSICS_SSE2=
7544 CXXFLAGS_INTRINSICS_SSSE3=
7545 CXXFLAGS_INTRINSICS_SSE41=
7546 CXXFLAGS_INTRINSICS_SSE42=
7547 CXXFLAGS_INTRINSICS_AVX=
7548 CXXFLAGS_INTRINSICS_AVX2=
7549 CXXFLAGS_INTRINSICS_AVX512=
7550 CXXFLAGS_INTRINSICS_F16C=
7551 CXXFLAGS_INTRINSICS_FMA=
7553 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7554 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7561 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7565 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7566 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7567 # SSE2 seems to be SSE2+.
7568 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7569 # is not empty (and can be tested in gbuild).
7570 flag_sse2=-arch:SSE2
7571 flag_ssse3=-arch:SSE2
7572 flag_sse41=-arch:SSE2
7573 flag_sse42=-arch:SSE2
7575 flag_avx2=-arch:AVX2
7576 flag_avx512=-arch:AVX512
7577 # These are part of -arch:AVX2
7578 flag_f16c=-arch:AVX2
7582 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7584 save_CXXFLAGS=$CXXFLAGS
7585 CXXFLAGS="$CXXFLAGS $flag_sse2"
7586 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7587 #include <emmintrin.h>
7589 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7590 c = _mm_xor_si128 (a, b);
7594 [can_compile_sse2=yes],
7595 [can_compile_sse2=no])
7597 CXXFLAGS=$save_CXXFLAGS
7598 AC_MSG_RESULT([${can_compile_sse2}])
7599 if test "${can_compile_sse2}" = "yes" ; then
7600 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7603 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7605 save_CXXFLAGS=$CXXFLAGS
7606 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7607 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7608 #include <tmmintrin.h>
7610 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7611 c = _mm_maddubs_epi16 (a, b);
7615 [can_compile_ssse3=yes],
7616 [can_compile_ssse3=no])
7618 CXXFLAGS=$save_CXXFLAGS
7619 AC_MSG_RESULT([${can_compile_ssse3}])
7620 if test "${can_compile_ssse3}" = "yes" ; then
7621 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7624 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7626 save_CXXFLAGS=$CXXFLAGS
7627 CXXFLAGS="$CXXFLAGS $flag_sse41"
7628 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7629 #include <smmintrin.h>
7631 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7632 c = _mm_cmpeq_epi64 (a, b);
7636 [can_compile_sse41=yes],
7637 [can_compile_sse41=no])
7639 CXXFLAGS=$save_CXXFLAGS
7640 AC_MSG_RESULT([${can_compile_sse41}])
7641 if test "${can_compile_sse41}" = "yes" ; then
7642 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7645 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7647 save_CXXFLAGS=$CXXFLAGS
7648 CXXFLAGS="$CXXFLAGS $flag_sse42"
7649 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7650 #include <nmmintrin.h>
7652 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7653 c = _mm_cmpgt_epi64 (a, b);
7657 [can_compile_sse42=yes],
7658 [can_compile_sse42=no])
7660 CXXFLAGS=$save_CXXFLAGS
7661 AC_MSG_RESULT([${can_compile_sse42}])
7662 if test "${can_compile_sse42}" = "yes" ; then
7663 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7666 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7668 save_CXXFLAGS=$CXXFLAGS
7669 CXXFLAGS="$CXXFLAGS $flag_avx"
7670 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7671 #include <immintrin.h>
7673 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7674 c = _mm256_xor_ps(a, b);
7678 [can_compile_avx=yes],
7679 [can_compile_avx=no])
7681 CXXFLAGS=$save_CXXFLAGS
7682 AC_MSG_RESULT([${can_compile_avx}])
7683 if test "${can_compile_avx}" = "yes" ; then
7684 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7687 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7689 save_CXXFLAGS=$CXXFLAGS
7690 CXXFLAGS="$CXXFLAGS $flag_avx2"
7691 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7692 #include <immintrin.h>
7694 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7695 c = _mm256_maddubs_epi16(a, b);
7699 [can_compile_avx2=yes],
7700 [can_compile_avx2=no])
7702 CXXFLAGS=$save_CXXFLAGS
7703 AC_MSG_RESULT([${can_compile_avx2}])
7704 if test "${can_compile_avx2}" = "yes" ; then
7705 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7708 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7710 save_CXXFLAGS=$CXXFLAGS
7711 CXXFLAGS="$CXXFLAGS $flag_avx512"
7712 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7713 #include <immintrin.h>
7715 __m512i a = _mm512_loadu_si512(0);
7719 [can_compile_avx512=yes],
7720 [can_compile_avx512=no])
7722 CXXFLAGS=$save_CXXFLAGS
7723 AC_MSG_RESULT([${can_compile_avx512}])
7724 if test "${can_compile_avx512}" = "yes" ; then
7725 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7728 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7730 save_CXXFLAGS=$CXXFLAGS
7731 CXXFLAGS="$CXXFLAGS $flag_f16c"
7732 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7733 #include <immintrin.h>
7735 __m128i a = _mm_set1_epi32 (0);
7737 c = _mm_cvtph_ps(a);
7741 [can_compile_f16c=yes],
7742 [can_compile_f16c=no])
7744 CXXFLAGS=$save_CXXFLAGS
7745 AC_MSG_RESULT([${can_compile_f16c}])
7746 if test "${can_compile_f16c}" = "yes" ; then
7747 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7750 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7752 save_CXXFLAGS=$CXXFLAGS
7753 CXXFLAGS="$CXXFLAGS $flag_fma"
7754 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7755 #include <immintrin.h>
7757 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7758 d = _mm256_fmadd_ps(a, b, c);
7762 [can_compile_fma=yes],
7763 [can_compile_fma=no])
7765 CXXFLAGS=$save_CXXFLAGS
7766 AC_MSG_RESULT([${can_compile_fma}])
7767 if test "${can_compile_fma}" = "yes" ; then
7768 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7771 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7772 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7773 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7774 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7775 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7776 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7777 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7778 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7779 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7781 dnl ===================================================================
7782 dnl system stl sanity tests
7783 dnl ===================================================================
7784 if test "$_os" != "WINNT"; then
7788 save_CPPFLAGS="$CPPFLAGS"
7789 if test -n "$MACOSX_SDK_PATH"; then
7790 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7793 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7795 if test "$CPP_LIBRARY" = GLIBCXX; then
7796 dnl gcc#19664, gcc#22482, rhbz#162935
7797 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7798 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7799 AC_MSG_RESULT([$stlvisok])
7800 if test "$stlvisok" = "no"; then
7801 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7805 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7806 # when we don't make any dynamic libraries?
7807 if test "$DISABLE_DYNLOADING" = ""; then
7808 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7809 cat > conftestlib1.cc <<_ACEOF
7810 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7811 struct S2: S1<int> { virtual ~S2(); };
7814 cat > conftestlib2.cc <<_ACEOF
7815 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7816 struct S2: S1<int> { virtual ~S2(); };
7817 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7819 gccvisinlineshiddenok=yes
7820 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7821 gccvisinlineshiddenok=no
7823 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7824 dnl known to not work with -z defs (unsetting which makes the test
7826 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7827 if test "$COM_IS_CLANG" = TRUE; then
7828 for i in $CXX $CXXFLAGS; do
7831 my_linkflagsnoundefs=
7837 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7838 gccvisinlineshiddenok=no
7843 AC_MSG_RESULT([$gccvisinlineshiddenok])
7844 if test "$gccvisinlineshiddenok" = "no"; then
7845 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7849 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7850 cat >visibility.cxx <<_ACEOF
7851 #pragma GCC visibility push(hidden)
7852 struct __attribute__ ((visibility ("default"))) TestStruct {
7855 __attribute__ ((visibility ("default"))) void TestFunc() {
7859 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7864 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7867 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7879 rm -f visibility.s visibility.cxx
7881 AC_MSG_RESULT([$gccvisbroken])
7882 if test "$gccvisbroken" = "yes"; then
7883 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7886 CPPFLAGS="$save_CPPFLAGS"
7891 dnl ===================================================================
7893 dnl ===================================================================
7895 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7896 if test "$GCC" = "yes"; then
7897 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7899 save_CXXFLAGS=$CXXFLAGS
7900 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7901 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7902 CXXFLAGS=$save_CXXFLAGS
7904 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7905 AC_MSG_RESULT([yes])
7910 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7912 dnl ===================================================================
7913 dnl Compiler plugins
7914 dnl ===================================================================
7917 # currently only Clang
7919 if test "$COM_IS_CLANG" != "TRUE"; then
7920 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7921 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7922 enable_compiler_plugins=no
7926 COMPILER_PLUGINS_COM_IS_CLANG=
7927 if test "$COM_IS_CLANG" = "TRUE"; then
7928 if test -n "$enable_compiler_plugins"; then
7929 compiler_plugins="$enable_compiler_plugins"
7930 elif test -n "$ENABLE_DBGUTIL"; then
7931 compiler_plugins=test
7935 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7936 if test "$CLANGVER" -lt 50002; then
7937 if test "$compiler_plugins" = yes; then
7938 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7944 if test "$compiler_plugins" != "no"; then
7945 dnl The prefix where Clang resides, override to where Clang resides if
7946 dnl using a source build:
7947 if test -z "$CLANGDIR"; then
7948 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
7950 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7951 if test -z "$COMPILER_PLUGINS_CXX"; then
7952 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7954 clangbindir=$CLANGDIR/bin
7955 if test "$build_os" = "cygwin"; then
7956 clangbindir=$(cygpath -u "$clangbindir")
7958 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7959 if test -n "$LLVM_CONFIG"; then
7960 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7961 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7962 if test -z "$CLANGLIBDIR"; then
7963 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7965 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7966 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7967 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7968 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7969 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7971 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7972 clangobjdir=$($LLVM_CONFIG --obj-root)
7973 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7974 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7977 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7981 save_CPPFLAGS=$CPPFLAGS
7982 save_CXXFLAGS=$CXXFLAGS
7983 save_LDFLAGS=$LDFLAGS
7985 CXX=$COMPILER_PLUGINS_CXX
7986 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7987 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7988 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7989 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7990 [COMPILER_PLUGINS=TRUE],
7992 if test "$compiler_plugins" = "yes"; then
7993 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7995 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7996 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7999 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8000 dnl comment in compilerplugins/Makefile-clang.mk:
8001 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8003 AC_MSG_CHECKING([for clang libraries to use])
8004 if test -z "$CLANGTOOLLIBS"; then
8005 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8006 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8008 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8009 [[ clang::FullSourceLoc().dump(); ]])
8010 ],[CLANGTOOLLIBS="$LIBS"],[])
8012 if test -z "$CLANGTOOLLIBS"; then
8013 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8015 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8016 [[ clang::FullSourceLoc().dump(); ]])
8017 ],[CLANGTOOLLIBS="$LIBS"],[])
8019 AC_MSG_RESULT([$CLANGTOOLLIBS])
8020 if test -z "$CLANGTOOLLIBS"; then
8021 if test "$compiler_plugins" = "yes"; then
8022 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8024 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8025 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8029 if test -n "$COMPILER_PLUGINS"; then
8030 if test -z "$CLANGSYSINCLUDE"; then
8031 if test -n "$LLVM_CONFIG"; then
8032 # Path to the clang system headers (no idea if there's a better way to get it).
8033 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8040 CPPFLAGS=$save_CPPFLAGS
8041 CXXFLAGS=$save_CXXFLAGS
8042 LDFLAGS=$save_LDFLAGS
8046 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8047 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8053 [AC_MSG_RESULT([yes])
8054 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8055 [AC_MSG_RESULT([no])])
8056 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8059 if test "$enable_compiler_plugins" = "yes"; then
8060 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8063 COMPILER_PLUGINS_ANALYZER_PCH=
8064 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8065 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8067 AC_SUBST(COMPILER_PLUGINS)
8068 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8069 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8070 AC_SUBST(COMPILER_PLUGINS_CXX)
8071 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8072 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8073 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8074 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8076 AC_SUBST(CLANGLIBDIR)
8077 AC_SUBST(CLANGTOOLLIBS)
8078 AC_SUBST(CLANGSYSINCLUDE)
8080 # Plugin to help linker.
8081 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8082 # This makes --enable-lto build with clang work.
8085 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8086 AC_SUBST(HAVE_POSIX_FALLOCATE)
8088 JITC_PROCESSOR_TYPE=""
8089 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8090 # IBMs JDK needs this...
8091 JITC_PROCESSOR_TYPE=6
8092 export JITC_PROCESSOR_TYPE
8094 AC_SUBST([JITC_PROCESSOR_TYPE])
8096 # Misc Windows Stuff
8097 AC_ARG_WITH(ucrt-dir,
8098 AS_HELP_STRING([--with-ucrt-dir],
8099 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8100 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8101 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8102 Windows6.1-KB2999226-x64.msu
8103 Windows6.1-KB2999226-x86.msu
8104 Windows8.1-KB2999226-x64.msu
8105 Windows8.1-KB2999226-x86.msu
8106 Windows8-RT-KB2999226-x64.msu
8107 Windows8-RT-KB2999226-x86.msu
8108 A zip archive including those files is available from Microsoft site:
8109 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8112 UCRT_REDISTDIR="$with_ucrt_dir"
8113 if test $_os = "WINNT"; then
8115 for i in $PKGFORMAT; do
8116 if test "$i" = msi; then
8121 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8122 MSVC_DLLS="$msvcdlls"
8123 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8124 # MSVC 15.3 changed it to VC141
8125 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8126 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8127 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8128 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8130 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8133 if test "$UCRT_REDISTDIR" = "no"; then
8134 dnl explicitly disabled
8137 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8138 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8139 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8140 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8141 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8142 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8144 if test -n "$PKGFORMAT"; then
8145 for i in $PKGFORMAT; do
8148 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8149 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8158 AC_SUBST(UCRT_REDISTDIR)
8159 AC_SUBST(MSVC_DLL_PATH)
8164 dnl ===================================================================
8166 dnl ===================================================================
8167 if test "$ENABLE_JAVA" != ""; then
8169 # Windows-specific tests
8170 if test "$build_os" = "cygwin"; then
8171 if test -z "$with_jdk_home"; then
8172 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8173 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8174 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8175 if test -n "$regvalue"; then
8177 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8178 with_jdk_home=$regvalue
8180 howfound="found automatically"
8182 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8183 howfound="you passed"
8186 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8187 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8191 # 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.
8192 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8193 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8194 with_jdk_home=`/usr/libexec/java_home`
8197 JAVA_HOME=; export JAVA_HOME
8198 if test -z "$with_jdk_home"; then
8199 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8201 _java_path="$with_jdk_home/bin/$with_java"
8202 dnl Check if there is a Java interpreter at all.
8203 if test -x "$_java_path"; then
8204 JAVAINTERPRETER=$_java_path
8206 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8210 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8211 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8212 dnl loaded by java to run JunitTests:
8213 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8214 shortjdkhome=`cygpath -d "$with_jdk_home"`
8215 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
8216 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8217 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8218 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
8219 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8220 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8223 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8224 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8226 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8227 elif test "$cross_compiling" != "yes"; then
8229 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8230 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8231 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8232 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8235 *) # assumption: everything else 32-bit
8236 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8237 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8238 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8245 dnl ===================================================================
8247 dnl ===================================================================
8249 # Whether all the complexity here actually is needed any more or not, no idea.
8251 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8253 AC_MSG_CHECKING([the installed JDK])
8254 if test -n "$JAVAINTERPRETER"; then
8255 dnl java -version sends output to stderr!
8256 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8257 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8258 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8259 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8260 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8261 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8262 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8263 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8267 dnl Sun JDK specific tests
8268 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8269 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8271 if test "$_jdk_ver" -lt 10900; then
8272 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8274 if test "$_jdk_ver" -gt 10900; then
8275 JAVA_CLASSPATH_NOT_SET=TRUE
8278 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8279 if test "$_os" = "WINNT"; then
8280 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8282 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8284 # set to limit VM usage for JunitTests
8286 # set to limit VM usage for javac
8287 JAVACFLAGS=-J-Xmx128M
8290 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8293 if test -z "$ENABLE_JAVA"; then
8297 elif test "$cross_compiling" = "yes"; then
8298 # Just assume compatibility of build and host JDK
8300 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8304 dnl ===================================================================
8305 dnl Checks for javac
8306 dnl ===================================================================
8307 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8308 javacompiler="javac"
8309 : ${JAVA_SOURCE_VER=8}
8310 : ${JAVA_TARGET_VER=8}
8311 if test -z "$with_jdk_home"; then
8312 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8314 _javac_path="$with_jdk_home/bin/$javacompiler"
8315 dnl Check if there is a Java compiler at all.
8316 if test -x "$_javac_path"; then
8317 JAVACOMPILER=$_javac_path
8320 if test -z "$JAVACOMPILER"; then
8321 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8323 if test "$build_os" = "cygwin"; then
8324 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8325 JAVACOMPILER="${JAVACOMPILER}.exe"
8327 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8331 dnl ===================================================================
8332 dnl Checks for javadoc
8333 dnl ===================================================================
8334 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8335 if test -z "$with_jdk_home"; then
8336 AC_PATH_PROG(JAVADOC, javadoc)
8338 _javadoc_path="$with_jdk_home/bin/javadoc"
8339 dnl Check if there is a javadoc at all.
8340 if test -x "$_javadoc_path"; then
8341 JAVADOC=$_javadoc_path
8343 AC_PATH_PROG(JAVADOC, javadoc)
8346 if test -z "$JAVADOC"; then
8347 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8349 if test "$build_os" = "cygwin"; then
8350 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8351 JAVADOC="${JAVADOC}.exe"
8353 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8356 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8357 JAVADOCISGJDOC="yes"
8361 AC_SUBST(JAVADOCISGJDOC)
8363 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8364 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8365 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8366 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8367 # try to recover first by looking whether we have an alternative
8368 # system as in Debian or newer SuSEs where following /usr/bin/javac
8369 # over /etc/alternatives/javac leads to the right bindir where we
8370 # just need to strip a bit away to get a valid JAVA_HOME
8371 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8372 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8373 # maybe only one level of symlink (e.g. on Mac)
8374 JAVA_HOME=$(readlink $JAVACOMPILER)
8375 if test "$(dirname $JAVA_HOME)" = "."; then
8376 # we've got no path to trim back
8381 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8382 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8383 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8384 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8386 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8387 if test "$JAVA_HOME" != "/usr"; then
8388 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8389 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8390 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8391 dnl Tiger already returns a JDK path...
8392 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8394 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8395 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8396 dnl that checks which version to run
8397 if test -f "$JAVA_HOME"; then
8398 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8403 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8405 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8406 if test -z "$JAVA_HOME"; then
8407 if test "x$with_jdk_home" = "x"; then
8408 cat > findhome.java <<_ACEOF
8409 [import java.io.File;
8413 public static void main(String args[])
8415 String jrelocation = System.getProperty("java.home");
8416 File jre = new File(jrelocation);
8417 System.out.println(jre.getParent());
8421 AC_MSG_CHECKING([if javac works])
8422 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8423 AC_TRY_EVAL(javac_cmd)
8424 if test $? = 0 -a -f ./findhome.class; then
8425 AC_MSG_RESULT([javac works])
8427 echo "configure: javac test failed" >&5
8428 cat findhome.java >&5
8429 AC_MSG_ERROR([javac does not work - java projects will not build!])
8431 AC_MSG_CHECKING([if gij knows its java.home])
8432 JAVA_HOME=`$JAVAINTERPRETER findhome`
8433 if test $? = 0 -a "$JAVA_HOME" != ""; then
8434 AC_MSG_RESULT([$JAVA_HOME])
8436 echo "configure: java test failed" >&5
8437 cat findhome.java >&5
8438 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8440 # clean-up after ourselves
8441 rm -f ./findhome.java ./findhome.class
8443 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8447 # now check if $JAVA_HOME is really valid
8448 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8449 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8450 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8451 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8452 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8453 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8454 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8455 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8458 PathFormat "$JAVA_HOME"
8459 JAVA_HOME="$formatted_path"
8462 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8465 AC_MSG_CHECKING([for JAWT lib])
8466 if test "$_os" = WINNT; then
8467 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8472 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8473 JAVA_ARCH=$my_java_arch
8488 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8489 JAVA_ARCH=$my_java_arch
8492 my_java_arch=sparcv9
8498 my_java_arch=$host_cpu
8501 # This is where JDK9 puts the library
8502 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8503 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8505 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8507 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8509 AC_MSG_RESULT([$JAWTLIB])
8513 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8517 JAVAINC="-I$JAVA_HOME/include"
8518 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8519 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8523 JAVAINC="-I$JAVA_HOME/include/win32"
8524 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8528 if test -d "$JAVA_HOME/include/darwin"; then
8529 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8531 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8536 JAVAINC="-I$JAVA_HOME/include"
8537 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8541 JAVAINC="-I$JAVA_HOME/include"
8542 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8543 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8544 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8545 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8549 JAVAINC="-I$JAVA_HOME/include"
8550 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8551 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8555 JAVAINC="-I$JAVA_HOME/include"
8556 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8557 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8561 JAVAINC="-I$JAVA_HOME/include"
8562 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8563 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8567 JAVAINC="-I$JAVA_HOME/include"
8568 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8569 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8573 JAVAINC="-I$JAVA_HOME/include"
8574 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8575 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8579 SOLARINC="$SOLARINC $JAVAINC"
8581 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8582 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8583 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8587 AC_SUBST(JAVACFLAGS)
8588 AC_SUBST(JAVACOMPILER)
8589 AC_SUBST(JAVAINTERPRETER)
8590 AC_SUBST(JAVAIFLAGS)
8591 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8592 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8594 AC_SUBST(JAVA_HOME_FOR_BUILD)
8596 AC_SUBST(JDK_FOR_BUILD)
8597 AC_SUBST(JAVA_SOURCE_VER)
8598 AC_SUBST(JAVA_TARGET_VER)
8601 dnl ===================================================================
8602 dnl Export file validation
8603 dnl ===================================================================
8604 AC_MSG_CHECKING([whether to enable export file validation])
8605 if test "$with_export_validation" != "no"; then
8606 if test -z "$ENABLE_JAVA"; then
8607 if test "$with_export_validation" = "yes"; then
8608 AC_MSG_ERROR([requested, but Java is disabled])
8610 AC_MSG_RESULT([no, as Java is disabled])
8612 elif ! test -d "${SRC_ROOT}/schema"; then
8613 if test "$with_export_validation" = "yes"; then
8614 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8616 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8619 AC_MSG_RESULT([yes])
8620 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8622 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8623 if test -z "$ODFVALIDATOR"; then
8624 # remember to download the ODF toolkit with validator later
8625 AC_MSG_NOTICE([no odfvalidator found, will download it])
8626 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8627 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8629 # and fetch name of odfvalidator jar name from download.lst
8630 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8631 AC_SUBST(ODFVALIDATOR_JAR)
8633 if test -z "$ODFVALIDATOR_JAR"; then
8634 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8637 if test "$build_os" = "cygwin"; then
8638 # In case of Cygwin it will be executed from Windows,
8639 # so we need to run bash and absolute path to validator
8640 # so instead of "odfvalidator" it will be
8641 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8642 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8644 ODFVALIDATOR="sh $ODFVALIDATOR"
8646 AC_SUBST(ODFVALIDATOR)
8649 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8650 if test -z "$OFFICEOTRON"; then
8651 # remember to download the officeotron with validator later
8652 AC_MSG_NOTICE([no officeotron found, will download it])
8653 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8654 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8656 # and fetch name of officeotron jar name from download.lst
8657 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8658 AC_SUBST(OFFICEOTRON_JAR)
8660 if test -z "$OFFICEOTRON_JAR"; then
8661 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8664 # check version of existing officeotron
8665 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8666 if test 0"$OFFICEOTRON_VER" -lt 704; then
8667 AC_MSG_ERROR([officeotron too old])
8670 if test "$build_os" = "cygwin"; then
8671 # In case of Cygwin it will be executed from Windows,
8672 # so we need to run bash and absolute path to validator
8673 # so instead of "odfvalidator" it will be
8674 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8675 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8677 OFFICEOTRON="sh $OFFICEOTRON"
8680 AC_SUBST(OFFICEOTRON)
8685 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8686 if test "$with_bffvalidator" != "no"; then
8687 AC_DEFINE(HAVE_BFFVALIDATOR)
8689 if test "$with_export_validation" = "no"; then
8690 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8693 if test "$with_bffvalidator" = "yes"; then
8694 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8696 BFFVALIDATOR="$with_bffvalidator"
8699 if test "$build_os" = "cygwin"; then
8700 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8701 AC_MSG_RESULT($BFFVALIDATOR)
8703 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8705 elif test -n "$BFFVALIDATOR"; then
8706 # We are not in Cygwin but need to run Windows binary with wine
8707 AC_PATH_PROGS(WINE, wine)
8709 # so swap in a shell wrapper that converts paths transparently
8710 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8711 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8712 AC_SUBST(BFFVALIDATOR_EXE)
8713 AC_MSG_RESULT($BFFVALIDATOR)
8715 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8717 AC_SUBST(BFFVALIDATOR)
8722 dnl ===================================================================
8723 dnl Check for C preprocessor to use
8724 dnl ===================================================================
8725 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8726 if test -n "$with_idlc_cpp"; then
8727 AC_MSG_RESULT([$with_idlc_cpp])
8728 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8730 AC_MSG_RESULT([ucpp])
8731 AC_MSG_CHECKING([which ucpp tp use])
8732 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8733 AC_MSG_RESULT([external])
8734 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8736 AC_MSG_RESULT([internal])
8737 BUILD_TYPE="$BUILD_TYPE UCPP"
8740 AC_SUBST(SYSTEM_UCPP)
8742 dnl ===================================================================
8743 dnl Check for epm (not needed for Windows)
8744 dnl ===================================================================
8745 AC_MSG_CHECKING([whether to enable EPM for packing])
8746 if test "$enable_epm" = "yes"; then
8747 AC_MSG_RESULT([yes])
8748 if test "$_os" != "WINNT"; then
8749 if test $_os = Darwin; then
8751 elif test -n "$with_epm"; then
8754 AC_PATH_PROG(EPM, epm, no)
8756 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8757 AC_MSG_NOTICE([EPM will be built.])
8758 BUILD_TYPE="$BUILD_TYPE EPM"
8759 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8761 # Gentoo has some epm which is something different...
8762 AC_MSG_CHECKING([whether the found epm is the right epm])
8763 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8764 AC_MSG_RESULT([yes])
8766 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8768 AC_MSG_CHECKING([epm version])
8769 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8770 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8771 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8772 AC_MSG_RESULT([OK, >= 3.7])
8774 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8775 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8780 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8781 AC_MSG_CHECKING([for rpm])
8782 for a in "$RPM" rpmbuild rpm; do
8783 $a --usage >/dev/null 2> /dev/null
8784 if test $? -eq 0; then
8788 $a --version >/dev/null 2> /dev/null
8789 if test $? -eq 0; then
8795 if test -z "$RPM"; then
8796 AC_MSG_ERROR([not found])
8797 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8798 RPM_PATH=`which $RPM`
8799 AC_MSG_RESULT([$RPM_PATH])
8800 SCPDEFS="$SCPDEFS -DWITH_RPM"
8802 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8805 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8806 AC_PATH_PROG(DPKG, dpkg, no)
8807 if test "$DPKG" = "no"; then
8808 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8811 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8812 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8813 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8814 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8815 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8816 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8817 AC_MSG_RESULT([yes])
8820 if echo "$PKGFORMAT" | $GREP -q rpm; then
8822 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8823 add_warning "the rpms will need to be installed with --nodeps"
8827 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8828 add_warning "the ${_pt}s will not be relocatable"
8829 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8830 relocation will work, you need to patch your epm with the
8831 patch in epm/epm-3.7.patch or build with
8832 --with-epm=internal which will build a suitable epm])
8837 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8838 AC_PATH_PROG(PKGMK, pkgmk, no)
8839 if test "$PKGMK" = "no"; then
8840 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8847 for i in $PKGFORMAT; do
8849 aix | bsd | deb | pkg | rpm | native | portable)
8851 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8861 if test "$enable_lotuswordpro" = "yes"; then
8864 AC_SUBST(ENABLE_LWP)
8866 dnl ===================================================================
8867 dnl Check for building ODK
8868 dnl ===================================================================
8869 if test "$enable_odk" = no; then
8872 if test "$with_doxygen" = no; then
8873 AC_MSG_CHECKING([for doxygen])
8877 if test "$with_doxygen" = yes; then
8878 AC_PATH_PROG([DOXYGEN], [doxygen])
8879 if test -z "$DOXYGEN"; then
8880 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8882 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8883 if ! dot -V 2>/dev/null; then
8884 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8888 AC_MSG_CHECKING([for doxygen])
8889 DOXYGEN=$with_doxygen
8890 AC_MSG_RESULT([$DOXYGEN])
8892 if test -n "$DOXYGEN"; then
8893 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8894 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8895 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8896 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8903 AC_MSG_CHECKING([whether to build the ODK])
8904 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8905 AC_MSG_RESULT([yes])
8906 BUILD_TYPE="$BUILD_TYPE ODK"
8911 dnl ===================================================================
8912 dnl Check for system zlib
8913 dnl ===================================================================
8914 if test "$with_system_zlib" = "auto"; then
8917 with_system_zlib="$with_system_libs"
8920 if test "$enable_fuzzers" != "yes"; then
8921 with_system_zlib=yes
8929 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8930 dnl and has no pkg-config for it at least on some tinderboxes,
8931 dnl so leaving that out for now
8932 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8933 AC_MSG_CHECKING([which zlib to use])
8934 if test "$with_system_zlib" = "yes"; then
8935 AC_MSG_RESULT([external])
8937 AC_CHECK_HEADER(zlib.h, [],
8938 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8939 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8940 [AC_MSG_ERROR(zlib not found or functional)], [])
8942 AC_MSG_RESULT([internal])
8944 BUILD_TYPE="$BUILD_TYPE ZLIB"
8945 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8946 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8948 AC_SUBST(ZLIB_CFLAGS)
8950 AC_SUBST(SYSTEM_ZLIB)
8952 dnl ===================================================================
8953 dnl Check for system jpeg
8954 dnl ===================================================================
8955 AC_MSG_CHECKING([which libjpeg to use])
8956 if test "$with_system_jpeg" = "yes"; then
8957 AC_MSG_RESULT([external])
8959 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8960 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8961 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8962 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8965 AC_MSG_RESULT([internal, libjpeg-turbo])
8966 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8967 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8968 if test "$COM" = "MSC"; then
8969 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8971 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8975 x86_64 | amd64 | i*86 | x86 | ia32)
8976 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8977 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8978 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8979 NASM="$LODE_HOME/opt/bin/nasm"
8980 elif test -x "/opt/lo/bin/nasm"; then
8981 NASM="/opt/lo/bin/nasm"
8985 if test -n "$NASM"; then
8986 AC_MSG_CHECKING([for object file format of host system])
8988 cygwin* | mingw* | pw32* | wsl*)
8998 msdosdjgpp* | go32*)
9001 os2-emx*) # not tested
9002 objfmt='MSOMF' # obj
9004 linux*coff* | linux*oldld*)
9020 kfreebsd* | freebsd* | netbsd* | openbsd*)
9021 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9034 solaris* | sunos* | sysv* | sco*)
9044 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9059 AC_MSG_RESULT([$objfmt])
9060 if test "$objfmt" = 'ELF ?'; then
9062 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9065 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9067 MSOMF) NAFLAGS='-fobj -DOBJ32';;
9068 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
9069 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
9070 COFF) NAFLAGS='-fcoff -DCOFF';;
9071 a.out) NAFLAGS='-faout -DAOUT';;
9072 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
9073 ELF) NAFLAGS='-felf -DELF';;
9074 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
9075 RDF) NAFLAGS='-frdf -DRDF';;
9076 Mach-O) NAFLAGS='-fmacho -DMACHO';;
9077 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
9079 AC_MSG_RESULT([$NAFLAGS])
9081 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9082 cat > conftest.asm << EOF
9083 [%line __oline__ "configure"
9091 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9092 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9095 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9096 cat conftest.asm >&AS_MESSAGE_LOG_FD
9099 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9105 if test -z "$NASM"; then
9107 ****************************************************************************
9108 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9112 if test "$build_os" = "cygwin"; then
9114 install a pre-compiled binary for Win32
9116 mkdir -p /opt/lo/bin
9118 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9121 or get and install one from http://www.nasm.us/
9123 Then re-run autogen.sh
9125 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9126 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9131 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9135 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9136 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9143 AC_SUBST(LIBJPEG_CFLAGS)
9144 AC_SUBST(LIBJPEG_LIBS)
9145 AC_SUBST(SYSTEM_LIBJPEG)
9147 dnl ===================================================================
9148 dnl Check for system clucene
9149 dnl ===================================================================
9150 dnl we should rather be using
9151 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9152 dnl but the contribs-lib check seems tricky
9153 AC_MSG_CHECKING([which clucene to use])
9154 if test "$with_system_clucene" = "yes"; then
9155 AC_MSG_RESULT([external])
9157 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9158 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9159 FilterLibs "${CLUCENE_LIBS}"
9160 CLUCENE_LIBS="${filteredlibs}"
9162 save_CXXFLAGS=$CXXFLAGS
9163 save_CPPFLAGS=$CPPFLAGS
9164 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9165 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9166 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9167 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9168 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9169 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9170 CXXFLAGS=$save_CXXFLAGS
9171 CPPFLAGS=$save_CPPFLAGS
9174 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9176 AC_MSG_RESULT([internal])
9178 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9180 AC_SUBST(SYSTEM_CLUCENE)
9181 AC_SUBST(CLUCENE_CFLAGS)
9182 AC_SUBST(CLUCENE_LIBS)
9184 dnl ===================================================================
9185 dnl Check for system expat
9186 dnl ===================================================================
9187 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9189 dnl ===================================================================
9190 dnl Check for system xmlsec
9191 dnl ===================================================================
9192 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9194 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9195 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9197 AC_DEFINE([ENABLE_EOT])
9198 AC_MSG_RESULT([yes])
9200 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9205 AC_SUBST([ENABLE_EOT])
9207 dnl ===================================================================
9208 dnl Check for DLP libs
9209 dnl ===================================================================
9210 AS_IF([test "$COM" = "MSC"],
9211 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9212 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9214 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9216 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9218 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9220 AS_IF([test "$COM" = "MSC"],
9221 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9222 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9224 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9226 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9228 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9229 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9231 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9233 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9235 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9237 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9238 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.19])
9240 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9241 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9243 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9245 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9246 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9248 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9250 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9252 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9254 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9256 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9257 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9259 dnl ===================================================================
9260 dnl Check for system lcms2
9261 dnl ===================================================================
9262 if test "$with_system_lcms2" != "yes"; then
9265 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9266 if test "$GCC" = "yes"; then
9267 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9269 if test "$COM" = "MSC"; then # override the above
9270 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9273 dnl ===================================================================
9274 dnl Check for system cppunit
9275 dnl ===================================================================
9276 if test "$_os" != "Android" ; then
9277 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9280 dnl ===================================================================
9281 dnl Check whether freetype is available
9282 dnl ===================================================================
9283 if test "$test_freetype" = "yes"; then
9284 AC_MSG_CHECKING([whether freetype is available])
9285 # FreeType has 3 different kinds of versions
9286 # * release, like 2.4.10
9287 # * libtool, like 13.0.7 (this what pkg-config returns)
9289 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9292 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9293 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9294 FilterLibs "${FREETYPE_LIBS}"
9295 FREETYPE_LIBS="${filteredlibs}"
9296 SYSTEM_FREETYPE=TRUE
9298 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9299 if test "x$ac_config_site_64bit_host" = xYES; then
9300 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9302 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9305 AC_SUBST(FREETYPE_CFLAGS)
9306 AC_SUBST(FREETYPE_LIBS)
9307 AC_SUBST([SYSTEM_FREETYPE])
9309 # ===================================================================
9310 # Check for system libxslt
9311 # to prevent incompatibilities between internal libxml2 and external libxslt,
9312 # or vice versa, use with_system_libxml here
9313 # ===================================================================
9314 if test "$with_system_libxml" = "auto"; then
9317 with_system_libxml="$with_system_libs"
9320 with_system_libxml=no
9323 if test "$enable_fuzzers" != "yes"; then
9324 with_system_libxml=yes
9326 with_system_libxml=no
9332 AC_MSG_CHECKING([which libxslt to use])
9333 if test "$with_system_libxml" = "yes"; then
9334 AC_MSG_RESULT([external])
9336 if test "$_os" = "Darwin"; then
9337 dnl make sure to use SDK path
9338 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9339 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9341 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9342 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9344 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9345 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9346 FilterLibs "${LIBXSLT_LIBS}"
9347 LIBXSLT_LIBS="${filteredlibs}"
9348 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9349 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9350 FilterLibs "${LIBEXSLT_LIBS}"
9351 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9354 dnl Check for xsltproc
9355 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9356 if test "$XSLTPROC" = "no"; then
9357 AC_MSG_ERROR([xsltproc is required])
9360 AC_MSG_RESULT([internal])
9362 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9364 AC_SUBST(SYSTEM_LIBXSLT)
9365 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9366 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9368 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9370 AC_SUBST(LIBEXSLT_CFLAGS)
9371 AC_SUBST(LIBEXSLT_LIBS)
9372 AC_SUBST(LIBXSLT_CFLAGS)
9373 AC_SUBST(LIBXSLT_LIBS)
9376 # ===================================================================
9377 # Check for system libxml
9378 # ===================================================================
9379 AC_MSG_CHECKING([which libxml to use])
9380 if test "$with_system_libxml" = "yes"; then
9381 AC_MSG_RESULT([external])
9383 if test "$_os" = "Darwin"; then
9384 dnl make sure to use SDK path
9385 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9387 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9388 elif test $_os = iOS; then
9389 dnl make sure to use SDK path
9390 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9391 LIBXML_CFLAGS="-I$usr/include/libxml2"
9392 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9394 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9395 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9396 FilterLibs "${LIBXML_LIBS}"
9397 LIBXML_LIBS="${filteredlibs}"
9400 dnl Check for xmllint
9401 AC_PATH_PROG(XMLLINT, xmllint, no)
9402 if test "$XMLLINT" = "no"; then
9403 AC_MSG_ERROR([xmllint is required])
9406 AC_MSG_RESULT([internal])
9408 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9409 if test "$COM" = "MSC"; then
9410 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9412 if test "$COM" = "MSC"; then
9413 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9415 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9416 if test "$_os" = Android; then
9417 LIBXML_LIBS="$LIBXML_LIBS -lm"
9420 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9422 AC_SUBST(SYSTEM_LIBXML)
9423 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9424 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9426 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9427 AC_SUBST(LIBXML_CFLAGS)
9428 AC_SUBST(LIBXML_LIBS)
9431 # =====================================================================
9432 # Checking for a Python interpreter with version >= 3.3.
9433 # Optionally user can pass an option to configure, i. e.
9434 # ./configure PYTHON=/usr/bin/python
9435 # =====================================================================
9436 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9437 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9438 # unless PYTHON is defined as above which allows 'system'
9439 enable_python=internal
9441 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9442 if test -n "$PYTHON"; then
9443 PYTHON_FOR_BUILD=$PYTHON
9445 # This allows a lack of system python with no error, we use internal one in that case.
9446 AM_PATH_PYTHON([3.3],, [:])
9447 # Clean PYTHON_VERSION checked below if cross-compiling
9449 if test "$PYTHON" != ":"; then
9450 PYTHON_FOR_BUILD=$PYTHON
9454 AC_SUBST(PYTHON_FOR_BUILD)
9456 # Checks for Python to use for Pyuno
9457 AC_MSG_CHECKING([which Python to use for Pyuno])
9458 case "$enable_python" in
9460 if test -z $PYTHON_FOR_BUILD; then
9461 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9462 # requirement from the choice whether to include Python stuff in the installer, but why
9464 if test "$cross_compiling" = yes; then
9465 enable_python=system
9467 AC_MSG_ERROR([Python is required at build time.])
9471 AC_MSG_RESULT([none])
9474 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9475 AC_MSG_RESULT([no, overridden by --disable-scripting])
9477 elif test $build_os = cygwin; then
9478 dnl When building on Windows we don't attempt to use any installed
9479 dnl "system" Python.
9480 AC_MSG_RESULT([fully internal])
9481 enable_python=internal
9482 elif test "$cross_compiling" = yes; then
9483 AC_MSG_RESULT([system])
9484 enable_python=system
9486 # Unset variables set by the above AM_PATH_PYTHON so that
9487 # we actually do check anew.
9489 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
9490 AM_PATH_PYTHON([3.3],, [:])
9491 AC_MSG_CHECKING([which Python to use for Pyuno])
9492 if test "$PYTHON" = ":"; then
9493 if test -z "$PYTHON_FOR_BUILD"; then
9494 AC_MSG_RESULT([fully internal])
9496 AC_MSG_RESULT([internal])
9498 enable_python=internal
9500 AC_MSG_RESULT([system])
9501 enable_python=system
9506 AC_MSG_RESULT([internal])
9509 AC_MSG_RESULT([fully internal])
9510 enable_python=internal
9513 AC_MSG_RESULT([system])
9514 if test "$_os" = Darwin -a -z "$PYTHON"; then
9515 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9519 AC_MSG_ERROR([Incorrect --enable-python option])
9523 if test $enable_python != no; then
9524 BUILD_TYPE="$BUILD_TYPE PYUNO"
9527 if test $enable_python = system; then
9528 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9529 # Fallback: Accept these in the environment, or as set above
9532 elif test "$cross_compiling" != yes; then
9533 # Unset variables set by the above AM_PATH_PYTHON so that
9534 # we actually do check anew.
9535 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
9536 # This causes an error if no python command is found
9537 AM_PATH_PYTHON([3.3])
9538 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9539 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9540 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9541 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9542 if test -z "$PKG_CONFIG"; then
9543 PYTHON_CFLAGS="-I$python_include"
9544 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9545 elif $PKG_CONFIG --exists python-$python_version-embed; then
9546 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9547 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9548 elif $PKG_CONFIG --exists python-$python_version; then
9549 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9550 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9552 PYTHON_CFLAGS="-I$python_include"
9553 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9555 FilterLibs "${PYTHON_LIBS}"
9556 PYTHON_LIBS="${filteredlibs}"
9558 dnl How to find out the cross-compilation Python installation path?
9559 AC_MSG_CHECKING([for python version])
9560 AS_IF([test -n "$PYTHON_VERSION"],
9561 [AC_MSG_RESULT([$PYTHON_VERSION])],
9562 [AC_MSG_RESULT([not found])
9563 AC_MSG_ERROR([no usable python found])])
9564 test -n "$PYTHON_CFLAGS" && break
9567 dnl Check if the headers really work
9568 save_CPPFLAGS="$CPPFLAGS"
9569 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9570 AC_CHECK_HEADER(Python.h)
9571 CPPFLAGS="$save_CPPFLAGS"
9573 # let the PYTHON_FOR_BUILD match the same python installation that
9574 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9575 # better for PythonTests.
9576 PYTHON_FOR_BUILD=$PYTHON
9579 if test "$with_lxml" != no; then
9580 if test -z "$PYTHON_FOR_BUILD"; then
9583 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9586 if test "$cross_compiling" != yes ; then
9587 BUILD_TYPE="$BUILD_TYPE LXML"
9592 AC_MSG_CHECKING([for python lxml])
9593 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9594 AC_MSG_RESULT([yes])
9598 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9601 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9602 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9603 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9605 BUILD_TYPE="$BUILD_TYPE LXML"
9606 AC_MSG_RESULT([no, using internal lxml])
9609 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9617 dnl By now enable_python should be "system", "internal" or "no"
9618 case $enable_python in
9622 if test "x$ac_cv_header_Python_h" != "xyes"; then
9623 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9627 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9628 AC_MSG_CHECKING([for correct python library version])
9629 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9632 int main(int argc, char **argv) {
9633 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9636 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9639 dnl FIXME Check if the Python library can be linked with, too?
9644 PYTHON_VERSION_MAJOR=3
9645 PYTHON_VERSION_MINOR=8
9646 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.8
9647 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9648 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9650 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9651 BUILD_TYPE="$BUILD_TYPE PYTHON"
9652 if test "$OS" = LINUX -o "$OS" = WNT ; then
9653 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9655 # Embedded Python dies without Home set
9656 if test "$HOME" = ""; then
9665 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9669 AC_SUBST(DISABLE_PYTHON)
9670 AC_SUBST(SYSTEM_PYTHON)
9671 AC_SUBST(PYTHON_CFLAGS)
9672 AC_SUBST(PYTHON_LIBS)
9673 AC_SUBST(PYTHON_VERSION)
9674 AC_SUBST(PYTHON_VERSION_MAJOR)
9675 AC_SUBST(PYTHON_VERSION_MINOR)
9677 AC_MSG_CHECKING([whether to build LibreLogo])
9678 case "$enable_python" in
9680 AC_MSG_RESULT([no; Python disabled])
9683 if test "${enable_librelogo}" = "no"; then
9686 AC_MSG_RESULT([yes])
9687 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9688 AC_DEFINE([ENABLE_LIBRELOGO],1)
9692 AC_SUBST(ENABLE_LIBRELOGO)
9698 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9699 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9700 ENABLE_MARIADBC=TRUE
9701 AC_MSG_RESULT([yes])
9702 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9706 AC_SUBST(ENABLE_MARIADBC)
9707 AC_SUBST(MARIADBC_MAJOR)
9708 AC_SUBST(MARIADBC_MINOR)
9709 AC_SUBST(MARIADBC_MICRO)
9711 if test "$ENABLE_MARIADBC" = "TRUE"; then
9712 dnl ===================================================================
9713 dnl Check for system MariaDB
9714 dnl ===================================================================
9715 AC_MSG_CHECKING([which MariaDB to use])
9716 if test "$with_system_mariadb" = "yes"; then
9717 AC_MSG_RESULT([external])
9718 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9719 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9720 if test -z "$MARIADBCONFIG"; then
9721 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9722 if test -z "$MARIADBCONFIG"; then
9723 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9724 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9727 AC_MSG_CHECKING([MariaDB version])
9728 MARIADB_VERSION=`$MARIADBCONFIG --version`
9729 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9730 if test "$MARIADB_MAJOR" -ge "5"; then
9733 AC_MSG_ERROR([too old, use 5.0.x or later])
9735 AC_MSG_CHECKING([for MariaDB Client library])
9736 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9737 if test "$COM_IS_CLANG" = TRUE; then
9738 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9740 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9741 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9742 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9744 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9745 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9746 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9747 | sed -e 's|/lib64/|/lib/|')
9749 FilterLibs "${MARIADB_LIBS}"
9750 MARIADB_LIBS="${filteredlibs}"
9751 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9752 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9753 if test "$enable_bundle_mariadb" = "yes"; then
9754 AC_MSG_RESULT([yes])
9755 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9756 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9758 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9760 /g' | grep -E '(mysqlclient|mariadb)')
9761 if test "$_os" = "Darwin"; then
9762 LIBMARIADB=${LIBMARIADB}.dylib
9763 elif test "$_os" = "WINNT"; then
9764 LIBMARIADB=${LIBMARIADB}.dll
9766 LIBMARIADB=${LIBMARIADB}.so
9768 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9769 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9770 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9771 AC_MSG_RESULT([found.])
9772 PathFormat "$LIBMARIADB_PATH"
9773 LIBMARIADB_PATH="$formatted_path"
9775 AC_MSG_ERROR([not found.])
9779 BUNDLE_MARIADB_CONNECTOR_C=
9782 AC_MSG_RESULT([internal])
9783 SYSTEM_MARIADB_CONNECTOR_C=
9784 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9785 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9786 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9789 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9790 AC_SUBST(MARIADB_CFLAGS)
9791 AC_SUBST(MARIADB_LIBS)
9792 AC_SUBST(LIBMARIADB)
9793 AC_SUBST(LIBMARIADB_PATH)
9794 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9797 dnl ===================================================================
9798 dnl Check for system hsqldb
9799 dnl ===================================================================
9800 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9801 HSQLDB_USE_JDBC_4_1=
9802 AC_MSG_CHECKING([which hsqldb to use])
9803 if test "$with_system_hsqldb" = "yes"; then
9804 AC_MSG_RESULT([external])
9806 if test -z $HSQLDB_JAR; then
9807 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9809 if ! test -f $HSQLDB_JAR; then
9810 AC_MSG_ERROR(hsqldb.jar not found.)
9812 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9816 my $file = "$ENV{'HSQLDB_JAR'}";
9817 my $zip = Archive::Zip->new( $file );
9818 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9819 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9821 push @l, split(/\n/, $mf);
9822 foreach my $line (@l)
9824 if ($line =~ m/Specification-Version:/)
9826 ($t, $version) = split (/:/,$line);
9827 $version =~ s/^\s//;
9828 ($a, $b, $c, $d) = split (/\./,$version);
9829 if ($c == "0" && $d > "8")
9844 AC_MSG_RESULT([yes])
9846 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9849 AC_MSG_RESULT([internal])
9851 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9853 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9854 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9855 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9856 AC_MSG_RESULT([yes])
9857 HSQLDB_USE_JDBC_4_1=TRUE
9863 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9864 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9867 AC_SUBST(SYSTEM_HSQLDB)
9868 AC_SUBST(HSQLDB_JAR)
9869 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9871 dnl ===================================================================
9872 dnl Check for PostgreSQL stuff
9873 dnl ===================================================================
9874 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9875 if test "x$enable_postgresql_sdbc" != "xno"; then
9876 AC_MSG_RESULT([yes])
9877 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9879 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9880 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9882 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9883 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9886 postgres_interface=""
9887 if test "$with_system_postgresql" = "yes"; then
9888 postgres_interface="external PostgreSQL"
9889 SYSTEM_POSTGRESQL=TRUE
9890 if test "$_os" = Darwin; then
9892 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9893 pg_supp_path="$P_SEP$d$pg_supp_path"
9896 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9897 if test -n "$PGCONFIG"; then
9898 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9899 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9901 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9902 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9903 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9905 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9908 FilterLibs "${POSTGRESQL_LIB}"
9909 POSTGRESQL_LIB="${filteredlibs}"
9911 # if/when anything else than PostgreSQL uses Kerberos,
9912 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9917 # macOS has system MIT Kerberos 5 since 10.4
9918 if test "$with_krb5" != "no"; then
9921 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9922 # that the libraries where these functions are located on macOS will change, is it?
9923 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9924 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9927 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9928 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9929 KRB5_LIBS="$KRB5_LIBS $LIBS"
9932 if test "$with_gssapi" != "no"; then
9935 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9936 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9942 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9943 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9946 Linux|GNU|*BSD|DragonFly)
9947 if test "$with_krb5" != "no"; then
9950 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9951 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9954 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9955 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9956 KRB5_LIBS="$KRB5_LIBS $LIBS"
9959 if test "$with_gssapi" != "no"; then
9962 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9963 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9969 if test "$with_krb5" = "yes"; then
9972 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9973 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9976 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9977 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9978 KRB5_LIBS="$KRB5_LIBS $LIBS"
9981 if test "$with_gssapi" = "yes"; then
9984 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9985 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9991 if test -n "$with_libpq_path"; then
9992 SYSTEM_POSTGRESQL=TRUE
9993 postgres_interface="external libpq"
9994 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9995 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9998 postgres_interface="internal"
10000 POSTGRESQL_INC="%OVERRIDE_ME%"
10001 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10005 AC_MSG_CHECKING([PostgreSQL C interface])
10006 AC_MSG_RESULT([$postgres_interface])
10008 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10009 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10010 save_CFLAGS=$CFLAGS
10011 save_CPPFLAGS=$CPPFLAGS
10013 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10014 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10015 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10016 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10017 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10018 CFLAGS=$save_CFLAGS
10019 CPPFLAGS=$save_CPPFLAGS
10022 BUILD_POSTGRESQL_SDBC=TRUE
10024 AC_MSG_RESULT([no])
10026 AC_SUBST(WITH_KRB5)
10027 AC_SUBST(WITH_GSSAPI)
10028 AC_SUBST(GSSAPI_LIBS)
10029 AC_SUBST(KRB5_LIBS)
10030 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10031 AC_SUBST(SYSTEM_POSTGRESQL)
10032 AC_SUBST(POSTGRESQL_INC)
10033 AC_SUBST(POSTGRESQL_LIB)
10035 dnl ===================================================================
10036 dnl Check for Firebird stuff
10037 dnl ===================================================================
10038 ENABLE_FIREBIRD_SDBC=
10039 if test "$enable_firebird_sdbc" = "yes" ; then
10040 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10042 dnl ===================================================================
10043 dnl Check for system Firebird
10044 dnl ===================================================================
10045 AC_MSG_CHECKING([which Firebird to use])
10046 if test "$with_system_firebird" = "yes"; then
10047 AC_MSG_RESULT([external])
10048 SYSTEM_FIREBIRD=TRUE
10049 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10050 if test -z "$FIREBIRDCONFIG"; then
10051 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10052 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10053 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10055 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10057 AC_MSG_NOTICE([fb_config found])
10058 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10059 AC_MSG_CHECKING([for Firebird Client library])
10060 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10061 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10062 FilterLibs "${FIREBIRD_LIBS}"
10063 FIREBIRD_LIBS="${filteredlibs}"
10065 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10066 AC_MSG_CHECKING([Firebird version])
10067 if test -n "${FIREBIRD_VERSION}"; then
10068 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10069 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
10070 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
10071 AC_MSG_RESULT([OK])
10073 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
10076 save_CFLAGS="${CFLAGS}"
10077 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10078 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10079 #if defined(FB_API_VER) && FB_API_VER == 30
10080 int fb_api_is_30(void) { return 0; }
10082 #error "Wrong Firebird API version"
10083 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10084 CFLAGS="$save_CFLAGS"
10086 ENABLE_FIREBIRD_SDBC=TRUE
10087 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10088 elif test "$enable_database_connectivity" != yes; then
10089 AC_MSG_RESULT([none])
10090 elif test "$cross_compiling" = "yes"; then
10091 AC_MSG_RESULT([none])
10093 dnl Embedded Firebird has version 3.0
10094 AC_DEFINE(HAVE_FIREBIRD_30, 1)
10095 dnl We need libatomic_ops for any non X86/X64 system
10096 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10097 dnl ===================================================================
10098 dnl Check for system libatomic_ops
10099 dnl ===================================================================
10100 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10101 if test "$with_system_libatomic_ops" = "yes"; then
10102 SYSTEM_LIBATOMIC_OPS=TRUE
10103 AC_CHECK_HEADERS(atomic_ops.h, [],
10104 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10106 SYSTEM_LIBATOMIC_OPS=
10107 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10108 LIBATOMIC_OPS_LIBS="-latomic_ops"
10109 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10113 AC_MSG_RESULT([internal])
10115 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10116 FIREBIRD_LIBS="-lfbclient"
10118 if test "$with_system_libtommath" = "yes"; then
10119 SYSTEM_LIBTOMMATH=TRUE
10120 dnl check for tommath presence
10122 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10123 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10127 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10128 LIBTOMMATH_LIBS="-ltommath"
10129 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10132 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10133 ENABLE_FIREBIRD_SDBC=TRUE
10134 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10137 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10138 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10139 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10140 AC_SUBST(LIBATOMIC_OPS_LIBS)
10141 AC_SUBST(SYSTEM_FIREBIRD)
10142 AC_SUBST(FIREBIRD_CFLAGS)
10143 AC_SUBST(FIREBIRD_LIBS)
10144 AC_SUBST(SYSTEM_LIBTOMMATH)
10145 AC_SUBST(LIBTOMMATH_CFLAGS)
10146 AC_SUBST(LIBTOMMATH_LIBS)
10148 dnl ===================================================================
10149 dnl Check for system curl
10150 dnl ===================================================================
10151 AC_MSG_CHECKING([which libcurl to use])
10152 if test "$with_system_curl" = "auto"; then
10153 with_system_curl="$with_system_libs"
10156 if test "$test_curl" = "yes" -a "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10157 AC_MSG_RESULT([external])
10160 # First try PKGCONFIG and then fall back
10161 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10163 if test -n "$CURL_PKG_ERRORS"; then
10164 AC_PATH_PROG(CURLCONFIG, curl-config)
10165 if test -z "$CURLCONFIG"; then
10166 AC_MSG_ERROR([curl development files not found])
10168 CURL_LIBS=`$CURLCONFIG --libs`
10169 FilterLibs "${CURL_LIBS}"
10170 CURL_LIBS="${filteredlibs}"
10171 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10172 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10174 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10175 case $curl_version in
10176 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10177 dnl so they need to be doubled to end up in the configure script
10178 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10179 AC_MSG_RESULT([yes])
10182 AC_MSG_ERROR([no, you have $curl_version])
10188 elif test "$test_curl" = "no"; then
10189 AC_MSG_RESULT([none])
10191 AC_MSG_RESULT([internal])
10193 BUILD_TYPE="$BUILD_TYPE CURL"
10196 AC_SUBST(SYSTEM_CURL)
10197 AC_SUBST(CURL_CFLAGS)
10198 AC_SUBST(CURL_LIBS)
10199 AC_SUBST(ENABLE_CURL)
10201 dnl ===================================================================
10202 dnl Check for system boost
10203 dnl ===================================================================
10204 AC_MSG_CHECKING([which boost to use])
10205 if test "$with_system_boost" = "yes"; then
10206 AC_MSG_RESULT([external])
10208 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10210 AX_BOOST_FILESYSTEM
10213 AC_LANG_PUSH([C++])
10214 save_CXXFLAGS=$CXXFLAGS
10215 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10216 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10217 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10218 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10219 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10220 CXXFLAGS=$save_CXXFLAGS
10222 # this is in m4/ax_boost_base.m4
10223 FilterLibs "${BOOST_LDFLAGS}"
10224 BOOST_LDFLAGS="${filteredlibs}"
10226 AC_MSG_RESULT([internal])
10227 BUILD_TYPE="$BUILD_TYPE BOOST"
10229 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10230 # use warning-suppressing wrapper headers
10231 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10233 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10236 AC_SUBST(SYSTEM_BOOST)
10238 dnl ===================================================================
10239 dnl Check for system mdds
10240 dnl ===================================================================
10241 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10243 dnl ===================================================================
10244 dnl Check for system glm
10245 dnl ===================================================================
10246 AC_MSG_CHECKING([which glm to use])
10247 if test "$with_system_glm" = "yes"; then
10248 AC_MSG_RESULT([external])
10250 AC_LANG_PUSH([C++])
10251 AC_CHECK_HEADER([glm/glm.hpp], [],
10252 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10255 AC_MSG_RESULT([internal])
10256 BUILD_TYPE="$BUILD_TYPE GLM"
10258 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10260 AC_SUBST([GLM_CFLAGS])
10261 AC_SUBST([SYSTEM_GLM])
10263 dnl ===================================================================
10264 dnl Check for system odbc
10265 dnl ===================================================================
10266 AC_MSG_CHECKING([which odbc headers to use])
10267 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
10268 AC_MSG_RESULT([external])
10269 SYSTEM_ODBC_HEADERS=TRUE
10271 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10272 save_CPPFLAGS=$CPPFLAGS
10274 PathFormat "$winsdktest"
10275 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"
10276 AC_CHECK_HEADER(sqlext.h, [],
10277 [AC_MSG_ERROR(odbc not found. install odbc)],
10278 [#include <windows.h>])
10279 CPPFLAGS=$save_CPPFLAGS
10281 AC_CHECK_HEADER(sqlext.h, [],
10282 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10284 elif test "$enable_database_connectivity" != yes; then
10285 AC_MSG_RESULT([none])
10287 AC_MSG_RESULT([internal])
10288 SYSTEM_ODBC_HEADERS=
10290 AC_SUBST(SYSTEM_ODBC_HEADERS)
10292 dnl ===================================================================
10293 dnl Enable LDAP support
10294 dnl ===================================================================
10296 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10297 AC_MSG_CHECKING([whether to enable LDAP support])
10298 if test "$enable_ldap" != "yes"; then
10299 AC_MSG_RESULT([no])
10303 AC_MSG_RESULT([yes])
10307 AC_SUBST(ENABLE_LDAP)
10309 dnl ===================================================================
10310 dnl Check for system openldap
10311 dnl ===================================================================
10313 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10314 AC_MSG_CHECKING([which openldap library to use])
10315 if test "$with_system_openldap" = "yes"; then
10316 AC_MSG_RESULT([external])
10317 SYSTEM_OPENLDAP=TRUE
10318 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10319 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10320 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10322 AC_MSG_RESULT([internal])
10324 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10327 AC_SUBST(SYSTEM_OPENLDAP)
10329 dnl ===================================================================
10330 dnl Check for system NSS
10331 dnl ===================================================================
10332 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10333 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10334 AC_DEFINE(HAVE_FEATURE_NSS)
10336 AC_DEFINE(ENABLE_NSS)
10337 elif test $_os != iOS ; then
10340 AC_SUBST(ENABLE_NSS)
10342 dnl ===================================================================
10343 dnl Check for TLS/SSL and cryptographic implementation to use
10344 dnl ===================================================================
10345 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10346 if test -n "$with_tls"; then
10349 AC_DEFINE(USE_TLS_OPENSSL)
10351 AC_MSG_RESULT([$TLS])
10353 if test "$enable_openssl" != "yes"; then
10354 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10357 # warn that OpenSSL has been selected but not all TLS code has this option
10358 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10359 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10362 AC_DEFINE(USE_TLS_NSS)
10364 AC_MSG_RESULT([$TLS])
10367 AC_MSG_RESULT([none])
10368 AC_MSG_WARN([Skipping TLS/SSL])
10372 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10374 nss - Mozilla's Network Security Services (NSS)
10379 # default to using NSS, it results in smaller oox lib
10380 AC_DEFINE(USE_TLS_NSS)
10382 AC_MSG_RESULT([$TLS])
10386 dnl ===================================================================
10387 dnl Check for system sane
10388 dnl ===================================================================
10389 AC_MSG_CHECKING([which sane header to use])
10390 if test "$with_system_sane" = "yes"; then
10391 AC_MSG_RESULT([external])
10392 AC_CHECK_HEADER(sane/sane.h, [],
10393 [AC_MSG_ERROR(sane not found. install sane)], [])
10395 AC_MSG_RESULT([internal])
10396 BUILD_TYPE="$BUILD_TYPE SANE"
10399 dnl ===================================================================
10400 dnl Check for system icu
10401 dnl ===================================================================
10408 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10409 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10410 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10411 AC_MSG_CHECKING([which icu to use])
10412 if test "$with_system_icu" = "yes"; then
10413 AC_MSG_RESULT([external])
10415 AC_LANG_PUSH([C++])
10416 AC_MSG_CHECKING([for unicode/rbbi.h])
10417 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10420 if test "$cross_compiling" != "yes"; then
10421 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10422 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10423 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10424 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10427 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10428 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10429 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10430 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10431 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10432 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10433 AC_MSG_RESULT([yes])
10435 AC_MSG_RESULT([no])
10436 if test "$with_system_icu_for_build" != "force"; then
10437 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10438 You can use --with-system-icu-for-build=force to use it anyway.])
10443 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10444 # using the system icu tools can lead to version confusion, use the
10445 # ones from the build environment when cross-compiling
10446 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10447 if test -z "$SYSTEM_GENBRK"; then
10448 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10450 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10451 if test -z "$SYSTEM_GENCCODE"; then
10452 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10454 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10455 if test -z "$SYSTEM_GENCMN"; then
10456 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10458 if test "$ICU_MAJOR" -ge "49"; then
10459 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10460 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10461 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10463 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10464 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10465 ICU_RECLASSIFIED_HEBREW_LETTER=
10469 if test "$cross_compiling" = "yes"; then
10470 if test "$ICU_MAJOR" -ge "50"; then
10471 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10476 AC_MSG_RESULT([internal])
10478 BUILD_TYPE="$BUILD_TYPE ICU"
10479 # surprisingly set these only for "internal" (to be used by various other
10480 # external libs): the system icu-config is quite unhelpful and spits out
10481 # dozens of weird flags and also default path -I/usr/include
10482 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10483 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10485 if test "$ICU_MAJOR" -ge "59"; then
10486 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10487 # with -std=c++11 but not all external libraries can be built with that,
10488 # for those use a bit-compatible typedef uint16_t UChar; see
10489 # icu/source/common/unicode/umachine.h
10490 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10494 AC_SUBST(SYSTEM_ICU)
10495 AC_SUBST(SYSTEM_GENBRK)
10496 AC_SUBST(SYSTEM_GENCCODE)
10497 AC_SUBST(SYSTEM_GENCMN)
10498 AC_SUBST(ICU_MAJOR)
10499 AC_SUBST(ICU_MINOR)
10500 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10501 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10502 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10503 AC_SUBST(ICU_CFLAGS)
10505 AC_SUBST(ICU_UCHAR_TYPE)
10507 dnl ==================================================================
10509 dnl ==================================================================
10510 DEFAULT_CRASHDUMP_VALUE="true"
10511 AC_MSG_CHECKING([whether to enable breakpad])
10512 if test "$enable_breakpad" != yes; then
10513 AC_MSG_RESULT([no])
10515 AC_MSG_RESULT([yes])
10516 ENABLE_BREAKPAD="TRUE"
10517 AC_DEFINE(ENABLE_BREAKPAD)
10518 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10519 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10521 AC_MSG_CHECKING([for disable crash dump])
10522 if test "$enable_crashdump" = no; then
10523 DEFAULT_CRASHDUMP_VALUE="false"
10524 AC_MSG_RESULT([yes])
10526 AC_MSG_RESULT([no])
10529 AC_MSG_CHECKING([for crashreport config])
10530 if test "$with_symbol_config" = "no"; then
10531 BREAKPAD_SYMBOL_CONFIG="invalid"
10532 AC_MSG_RESULT([no])
10534 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10535 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10536 AC_MSG_RESULT([yes])
10538 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10540 AC_SUBST(ENABLE_BREAKPAD)
10541 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10543 dnl ==================================================================
10545 dnl ==================================================================
10546 AC_MSG_CHECKING([whether to enable fuzzers])
10547 if test "$enable_fuzzers" != yes; then
10548 AC_MSG_RESULT([no])
10550 if test $LIB_FUZZING_ENGINE == ""; then
10551 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10553 AC_MSG_RESULT([yes])
10554 ENABLE_FUZZERS="TRUE"
10555 AC_DEFINE([ENABLE_FUZZERS],1)
10556 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10558 AC_SUBST(LIB_FUZZING_ENGINE)
10559 AC_SUBST(ENABLE_FUZZERS)
10561 dnl ===================================================================
10563 dnl ===================================================================
10564 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10565 if test "$with_system_orcus" != "yes"; then
10566 if test "$SYSTEM_BOOST" = "TRUE"; then
10567 # ===========================================================
10568 # Determine if we are going to need to link with Boost.System
10569 # ===========================================================
10570 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10571 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10572 dnl in documentation has no effect.
10573 AC_MSG_CHECKING([if we need to link with Boost.System])
10574 AC_LANG_PUSH([C++])
10575 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10576 @%:@include <boost/version.hpp>
10578 #if BOOST_VERSION >= 105000
10579 # error yes, we need to link with Boost.System
10582 AC_MSG_RESULT([no])
10584 AC_MSG_RESULT([yes])
10590 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10591 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10592 AC_SUBST([BOOST_SYSTEM_LIB])
10593 AC_SUBST(SYSTEM_LIBORCUS)
10595 dnl ===================================================================
10597 dnl ===================================================================
10598 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10599 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10600 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10602 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10603 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10604 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10606 if test "$COM" = "MSC"; then # override the above
10607 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10608 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10611 if test "$with_system_harfbuzz" = "yes"; then
10612 if test "$with_system_graphite" = "no"; then
10613 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10615 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10617 save_CFLAGS="$CFLAGS"
10618 LIBS="$LIBS $HARFBUZZ_LIBS"
10619 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10620 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10622 CFLAGS="$save_CFLAGS"
10624 if test "$with_system_graphite" = "yes"; then
10625 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10629 AC_MSG_CHECKING([whether to use X11])
10630 dnl ***************************************
10631 dnl testing for X libraries and includes...
10632 dnl ***************************************
10633 if test "$USING_X11" = TRUE; then
10634 AC_DEFINE(HAVE_FEATURE_X11)
10636 AC_MSG_RESULT([$USING_X11])
10638 if test "$USING_X11" = TRUE; then
10641 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10643 if test -z "$x_includes"; then
10644 x_includes="default_x_includes"
10646 if test -z "$x_libraries"; then
10647 x_libraries="default_x_libraries"
10649 CFLAGS="$CFLAGS $X_CFLAGS"
10650 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10651 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10653 x_includes="no_x_includes"
10654 x_libraries="no_x_libraries"
10657 if test "$USING_X11" = TRUE; then
10658 dnl ===================================================================
10659 dnl Check for extension headers
10660 dnl ===================================================================
10661 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10662 [#include <X11/extensions/shape.h>])
10664 # vcl needs ICE and SM
10665 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10666 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10667 [AC_MSG_ERROR(ICE library not found)])
10668 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10669 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10670 [AC_MSG_ERROR(SM library not found)])
10673 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10674 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10675 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10678 dnl ===================================================================
10679 dnl Check for system Xrender
10680 dnl ===================================================================
10681 AC_MSG_CHECKING([whether to use Xrender])
10682 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10683 AC_MSG_RESULT([yes])
10684 PKG_CHECK_MODULES(XRENDER, xrender)
10685 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10686 FilterLibs "${XRENDER_LIBS}"
10687 XRENDER_LIBS="${filteredlibs}"
10688 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10689 [AC_MSG_ERROR(libXrender not found or functional)], [])
10690 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10691 [AC_MSG_ERROR(Xrender not found. install X)], [])
10693 AC_MSG_RESULT([no])
10695 AC_SUBST(XRENDER_CFLAGS)
10696 AC_SUBST(XRENDER_LIBS)
10698 dnl ===================================================================
10699 dnl Check for XRandr
10700 dnl ===================================================================
10701 AC_MSG_CHECKING([whether to enable RandR support])
10702 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10703 AC_MSG_RESULT([yes])
10704 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10705 if test "$ENABLE_RANDR" != "TRUE"; then
10706 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10707 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10709 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10710 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10711 XRANDR_LIBS="-lXrandr "
10712 ENABLE_RANDR="TRUE"
10714 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10715 FilterLibs "${XRANDR_LIBS}"
10716 XRANDR_LIBS="${filteredlibs}"
10719 AC_MSG_RESULT([no])
10721 AC_SUBST(XRANDR_CFLAGS)
10722 AC_SUBST(XRANDR_LIBS)
10723 AC_SUBST(ENABLE_RANDR)
10725 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10726 if test -z "$WITH_WEBDAV"; then
10730 if test $_os = iOS -o $_os = Android; then
10733 AC_MSG_CHECKING([for webdav library])
10734 case "$WITH_WEBDAV" in
10736 AC_MSG_RESULT([serf])
10737 # Check for system apr-util
10738 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10739 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10740 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10741 if test "$COM" = "MSC"; then
10743 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10744 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10747 # Check for system serf
10748 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10751 AC_MSG_RESULT([neon])
10752 # Check for system neon
10753 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10754 if test "$with_system_neon" = "yes"; then
10755 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10759 AC_SUBST(NEON_VERSION)
10762 AC_MSG_RESULT([none, disabled])
10766 AC_SUBST(WITH_WEBDAV)
10768 dnl ===================================================================
10769 dnl Check for disabling cve_tests
10770 dnl ===================================================================
10771 AC_MSG_CHECKING([whether to execute CVE tests])
10772 # If not explicitly enabled or disabled, default
10773 if test -z "$enable_cve_tests"; then
10776 # Default cves off for Windows with its wild and wonderful
10777 # variety of AV software kicking in and panicking
10778 enable_cve_tests=no
10782 enable_cve_tests=yes
10786 if test "$enable_cve_tests" = "no"; then
10787 AC_MSG_RESULT([no])
10788 DISABLE_CVE_TESTS=TRUE
10789 AC_SUBST(DISABLE_CVE_TESTS)
10791 AC_MSG_RESULT([yes])
10794 dnl ===================================================================
10795 dnl Check for enabling chart XShape tests
10796 dnl ===================================================================
10797 AC_MSG_CHECKING([whether to execute chart XShape tests])
10798 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10799 AC_MSG_RESULT([yes])
10800 ENABLE_CHART_TESTS=TRUE
10801 AC_SUBST(ENABLE_CHART_TESTS)
10803 AC_MSG_RESULT([no])
10806 dnl ===================================================================
10807 dnl Check for system openssl
10808 dnl ===================================================================
10810 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10811 if test "$enable_openssl" = "yes"; then
10812 AC_MSG_RESULT([no])
10813 ENABLE_OPENSSL=TRUE
10814 if test "$_os" = Darwin ; then
10815 # OpenSSL is deprecated when building for 10.7 or later.
10817 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10818 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10820 with_system_openssl=no
10821 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10822 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10823 && test "$with_system_openssl" != "no"; then
10824 with_system_openssl=yes
10825 SYSTEM_OPENSSL=TRUE
10827 OPENSSL_LIBS="-lssl -lcrypto"
10829 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10831 if test "$with_system_openssl" = "yes"; then
10832 AC_MSG_CHECKING([whether openssl supports SHA512])
10834 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10835 SHA512_CTX context;
10836 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10840 AC_MSG_RESULT([yes])
10842 # warn that although OpenSSL is disabled, system libraries may depend on it
10843 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10844 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10847 AC_SUBST([ENABLE_OPENSSL])
10849 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10850 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10851 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10852 enable_cipher_openssl_backend=no
10854 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10857 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10858 ENABLE_CIPHER_OPENSSL_BACKEND=
10859 if test "$enable_cipher_openssl_backend" = yes; then
10860 AC_MSG_RESULT([yes])
10861 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10863 AC_MSG_RESULT([no])
10865 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10867 dnl ===================================================================
10868 dnl Check for building gnutls
10869 dnl ===================================================================
10870 AC_MSG_CHECKING([whether to use gnutls])
10871 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10872 AC_MSG_RESULT([yes])
10873 AM_PATH_LIBGCRYPT()
10874 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10875 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10876 available in the system to use as replacement.]]))
10877 FilterLibs "${LIBGCRYPT_LIBS}"
10878 LIBGCRYPT_LIBS="${filteredlibs}"
10880 AC_MSG_RESULT([no])
10883 AC_SUBST([LIBGCRYPT_CFLAGS])
10884 AC_SUBST([LIBGCRYPT_LIBS])
10886 dnl ===================================================================
10887 dnl Check for system redland
10888 dnl ===================================================================
10889 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10890 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10891 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10892 if test "$with_system_redland" = "yes"; then
10893 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10894 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10900 AC_SUBST(RAPTOR_MAJOR)
10901 AC_SUBST(RASQAL_MAJOR)
10902 AC_SUBST(REDLAND_MAJOR)
10904 dnl ===================================================================
10905 dnl Check for system hunspell
10906 dnl ===================================================================
10907 AC_MSG_CHECKING([which libhunspell to use])
10908 if test "$with_system_hunspell" = "yes"; then
10909 AC_MSG_RESULT([external])
10910 SYSTEM_HUNSPELL=TRUE
10911 AC_LANG_PUSH([C++])
10912 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10913 if test "$HUNSPELL_PC" != "TRUE"; then
10914 AC_CHECK_HEADER(hunspell.hxx, [],
10916 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10917 [AC_MSG_ERROR(hunspell headers not found.)], [])
10919 AC_CHECK_LIB([hunspell], [main], [:],
10920 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10921 HUNSPELL_LIBS=-lhunspell
10924 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10925 FilterLibs "${HUNSPELL_LIBS}"
10926 HUNSPELL_LIBS="${filteredlibs}"
10928 AC_MSG_RESULT([internal])
10930 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10931 if test "$COM" = "MSC"; then
10932 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10934 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10936 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10938 AC_SUBST(SYSTEM_HUNSPELL)
10939 AC_SUBST(HUNSPELL_CFLAGS)
10940 AC_SUBST(HUNSPELL_LIBS)
10942 dnl ===================================================================
10943 dnl Check for system zxing
10944 dnl ===================================================================
10945 AC_MSG_CHECKING([whether to use zxing])
10946 if test "$enable_zxing" = "no"; then
10947 AC_MSG_RESULT([no])
10951 AC_MSG_RESULT([yes])
10953 AC_MSG_CHECKING([which libzxing to use])
10954 if test "$with_system_zxing" = "yes"; then
10955 AC_MSG_RESULT([external])
10957 AC_LANG_PUSH([C++])
10958 AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
10959 [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
10960 ZXING_CFLAGS=-I/usr/include/ZXing
10961 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
10962 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
10963 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
10965 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10966 FilterLibs "${ZXING_LIBS}"
10967 ZXING_LIBS="${filteredlibs}"
10969 AC_MSG_RESULT([internal])
10971 BUILD_TYPE="$BUILD_TYPE ZXING"
10973 if test "$ENABLE_ZXING" = TRUE; then
10974 AC_DEFINE(ENABLE_ZXING)
10977 AC_SUBST(SYSTEM_ZXING)
10978 AC_SUBST(ENABLE_ZXING)
10979 AC_SUBST(ZXING_CFLAGS)
10980 AC_SUBST(ZXING_LIBS)
10982 dnl ===================================================================
10983 dnl Check for system box2d
10984 dnl ===================================================================
10985 AC_MSG_CHECKING([which box2d to use])
10986 if test "$with_system_box2d" = "yes"; then
10987 AC_MSG_RESULT([external])
10989 AC_LANG_PUSH([C++])
10990 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10991 [BOX2D_H_FOUND='FALSE'])
10992 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10994 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10996 # fail this. there's no other alternative to check when we are here.
10997 AC_CHECK_HEADER([Box2D/Box2D.h], [],
10998 [AC_MSG_ERROR(box2d headers not found.)])
11000 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11002 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11003 [ AC_MSG_ERROR(box2d library not found.) ], [])
11004 BOX2D_LIBS=-l$_BOX2D_LIB
11006 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11007 FilterLibs "${BOX2D_LIBS}"
11008 BOX2D_LIBS="${filteredlibs}"
11010 AC_MSG_RESULT([internal])
11012 BUILD_TYPE="$BUILD_TYPE BOX2D"
11014 AC_SUBST(SYSTEM_BOX2D)
11015 AC_SUBST(BOX2D_CFLAGS)
11016 AC_SUBST(BOX2D_LIBS)
11018 dnl ===================================================================
11019 dnl Checking for altlinuxhyph
11020 dnl ===================================================================
11021 AC_MSG_CHECKING([which altlinuxhyph to use])
11022 if test "$with_system_altlinuxhyph" = "yes"; then
11023 AC_MSG_RESULT([external])
11025 AC_CHECK_HEADER(hyphen.h, [],
11026 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11027 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11028 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11029 [#include <hyphen.h>])
11030 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11031 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11032 if test -z "$HYPHEN_LIB"; then
11033 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11034 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11036 if test -z "$HYPHEN_LIB"; then
11037 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11038 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11041 AC_MSG_RESULT([internal])
11043 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11044 if test "$COM" = "MSC"; then
11045 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11047 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11050 AC_SUBST(SYSTEM_HYPH)
11051 AC_SUBST(HYPHEN_LIB)
11053 dnl ===================================================================
11054 dnl Checking for mythes
11055 dnl ===================================================================
11056 AC_MSG_CHECKING([which mythes to use])
11057 if test "$with_system_mythes" = "yes"; then
11058 AC_MSG_RESULT([external])
11060 AC_LANG_PUSH([C++])
11061 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11062 if test "$MYTHES_PKGCONFIG" = "no"; then
11063 AC_CHECK_HEADER(mythes.hxx, [],
11064 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11065 AC_CHECK_LIB([mythes-1.2], [main], [:],
11066 [ MYTHES_FOUND=no], [])
11067 if test "$MYTHES_FOUND" = "no"; then
11068 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11069 [ MYTHES_FOUND=no], [])
11071 if test "$MYTHES_FOUND" = "no"; then
11072 AC_MSG_ERROR([mythes library not found!.])
11076 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11077 FilterLibs "${MYTHES_LIBS}"
11078 MYTHES_LIBS="${filteredlibs}"
11080 AC_MSG_RESULT([internal])
11082 BUILD_TYPE="$BUILD_TYPE MYTHES"
11083 if test "$COM" = "MSC"; then
11084 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11086 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11089 AC_SUBST(SYSTEM_MYTHES)
11090 AC_SUBST(MYTHES_CFLAGS)
11091 AC_SUBST(MYTHES_LIBS)
11093 dnl ===================================================================
11094 dnl How should we build the linear programming solver ?
11095 dnl ===================================================================
11098 AC_MSG_CHECKING([whether to build with CoinMP])
11099 if test "$enable_coinmp" != "no"; then
11101 AC_MSG_RESULT([yes])
11102 if test "$with_system_coinmp" = "yes"; then
11104 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11105 FilterLibs "${COINMP_LIBS}"
11106 COINMP_LIBS="${filteredlibs}"
11108 BUILD_TYPE="$BUILD_TYPE COINMP"
11111 AC_MSG_RESULT([no])
11113 AC_SUBST(ENABLE_COINMP)
11114 AC_SUBST(SYSTEM_COINMP)
11115 AC_SUBST(COINMP_CFLAGS)
11116 AC_SUBST(COINMP_LIBS)
11119 AC_MSG_CHECKING([whether to build with lpsolve])
11120 if test "$enable_lpsolve" != "no"; then
11121 ENABLE_LPSOLVE=TRUE
11122 AC_MSG_RESULT([yes])
11124 AC_MSG_RESULT([no])
11126 AC_SUBST(ENABLE_LPSOLVE)
11128 if test "$ENABLE_LPSOLVE" = TRUE; then
11129 AC_MSG_CHECKING([which lpsolve to use])
11130 if test "$with_system_lpsolve" = "yes"; then
11131 AC_MSG_RESULT([external])
11132 SYSTEM_LPSOLVE=TRUE
11133 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11134 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11136 # some systems need this. Like Ubuntu...
11137 AC_CHECK_LIB(m, floor)
11138 AC_CHECK_LIB(dl, dlopen)
11139 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11140 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11143 AC_MSG_RESULT([internal])
11145 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11148 AC_SUBST(SYSTEM_LPSOLVE)
11150 dnl ===================================================================
11151 dnl Checking for libexttextcat
11152 dnl ===================================================================
11153 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11154 if test "$with_system_libexttextcat" = "yes"; then
11155 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11157 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11159 dnl ===================================================================
11160 dnl Checking for libnumbertext
11161 dnl ===================================================================
11162 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11163 if test "$with_system_libnumbertext" = "yes"; then
11164 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11165 SYSTEM_LIBNUMBERTEXT=YES
11167 SYSTEM_LIBNUMBERTEXT=
11168 AC_LANG_PUSH([C++])
11169 save_CPPFLAGS=$CPPFLAGS
11170 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11171 AC_CHECK_HEADERS([codecvt regex])
11172 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11173 [ LIBNUMBERTEXT_CFLAGS=''
11174 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11175 Enable libnumbertext fallback (missing number to number name conversion).])
11177 CPPFLAGS=$save_CPPFLAGS
11180 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11181 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11182 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11184 dnl ***************************************
11185 dnl testing libc version for Linux...
11186 dnl ***************************************
11187 if test "$_os" = "Linux"; then
11188 AC_MSG_CHECKING([whether libc is >= 2.1.1])
11189 exec 6>/dev/null # no output
11190 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11191 exec 6>&1 # output on again
11192 if test "$HAVE_LIBC"; then
11193 AC_MSG_RESULT([yes])
11195 AC_MSG_ERROR([no, upgrade libc])
11199 dnl =========================================
11200 dnl Check for uuidgen
11201 dnl =========================================
11202 if test "$_os" = "WINNT"; then
11203 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11204 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11205 UUIDGEN=uuidgen.exe
11208 AC_PATH_PROG([UUIDGEN], [uuidgen])
11209 if test -z "$UUIDGEN"; then
11210 AC_MSG_WARN([uuid is needed for building installation sets])
11214 dnl ***************************************
11215 dnl Checking for bison and flex
11216 dnl ***************************************
11217 AC_PATH_PROG(BISON, bison)
11218 if test -z "$BISON"; then
11219 AC_MSG_ERROR([no bison found in \$PATH, install it])
11221 AC_MSG_CHECKING([the bison version])
11222 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11223 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11224 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11227 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]
11228 dnl typedef union YYSTYPE
11231 dnl while at least 3.4.1 is know to be good:
11232 if test "$COMPILER_PLUGINS" = TRUE; then
11233 if test "$_bison_longver" -lt 2004; then
11234 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11237 if test "$_bison_longver" -lt 2000; then
11238 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11244 AC_PATH_PROG(FLEX, flex)
11245 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11246 FLEX=`cygpath -m $FLEX`
11248 if test -z "$FLEX"; then
11249 AC_MSG_ERROR([no flex found in \$PATH, install it])
11251 AC_MSG_CHECKING([the flex version])
11252 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11253 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11254 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11258 dnl ***************************************
11259 dnl Checking for patch
11260 dnl ***************************************
11261 AC_PATH_PROG(PATCH, patch)
11262 if test -z "$PATCH"; then
11263 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11266 dnl On Solaris or macOS, check if --with-gnu-patch was used
11267 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11268 if test -z "$with_gnu_patch"; then
11271 if test -x "$with_gnu_patch"; then
11272 GNUPATCH=$with_gnu_patch
11274 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11278 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11279 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11280 AC_MSG_RESULT([yes])
11282 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11288 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11289 GNUPATCH=`cygpath -m $GNUPATCH`
11292 dnl We also need to check for --with-gnu-cp
11294 if test -z "$with_gnu_cp"; then
11295 # check the place where the good stuff is hidden on Solaris...
11296 if test -x /usr/gnu/bin/cp; then
11297 GNUCP=/usr/gnu/bin/cp
11299 AC_PATH_PROGS(GNUCP, gnucp cp)
11301 if test -z $GNUCP; then
11302 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11305 if test -x "$with_gnu_cp"; then
11308 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11312 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11313 GNUCP=`cygpath -m $GNUCP`
11316 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11317 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11318 AC_MSG_RESULT([yes])
11319 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11320 AC_MSG_RESULT([yes])
11322 case "$build_os" in
11323 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11326 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11329 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11338 dnl ***************************************
11339 dnl testing assembler path
11340 dnl ***************************************
11342 if test "$_os" = "WINNT"; then
11343 case "$WIN_HOST_ARCH" in
11344 x86) assembler=ml.exe ;;
11345 x64) assembler=ml64.exe ;;
11346 arm64) assembler=armasm64.exe ;;
11349 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11350 if test -f "$MSVC_HOST_PATH/$assembler"; then
11351 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11352 AC_MSG_RESULT([$ML_EXE])
11354 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11360 dnl ===================================================================
11361 dnl We need zip and unzip
11362 dnl ===================================================================
11363 AC_PATH_PROG(ZIP, zip)
11364 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11365 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11366 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],,)
11369 AC_PATH_PROG(UNZIP, unzip)
11370 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11372 dnl ===================================================================
11373 dnl Zip must be a specific type for different build types.
11374 dnl ===================================================================
11375 if test $build_os = cygwin; then
11376 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11377 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11381 dnl ===================================================================
11382 dnl We need touch with -h option support.
11383 dnl ===================================================================
11384 AC_PATH_PROG(TOUCH, touch)
11385 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11387 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11388 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],,)
11391 dnl ===================================================================
11392 dnl Check for system epoxy
11393 dnl ===================================================================
11394 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11396 dnl ===================================================================
11397 dnl Set vcl option: coordinate device in double or sal_Int32
11398 dnl ===================================================================
11400 dnl disabled for now, we don't want subtle differences between OSs
11401 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11402 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11403 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11404 dnl AC_MSG_RESULT([double])
11406 dnl AC_MSG_RESULT([sal_Int32])
11409 dnl ===================================================================
11410 dnl Test which vclplugs have to be built.
11411 dnl ===================================================================
11413 if test "$USING_X11" != TRUE; then
11418 if test "x$enable_gtk3" = "xyes"; then
11420 AC_DEFINE(ENABLE_GTK3)
11423 AC_SUBST(ENABLE_GTK3)
11425 ENABLE_GTK3_KDE5=""
11426 if test "x$enable_gtk3_kde5" = "xyes"; then
11427 ENABLE_GTK3_KDE5="TRUE"
11428 AC_DEFINE(ENABLE_GTK3_KDE5)
11431 AC_SUBST(ENABLE_GTK3_KDE5)
11434 if test "x$enable_gtk4" = "xyes"; then
11436 AC_DEFINE(ENABLE_GTK4)
11439 AC_SUBST(ENABLE_GTK4)
11442 if test "x$enable_qt5" = "xyes"; then
11444 AC_DEFINE(ENABLE_QT5)
11447 AC_SUBST(ENABLE_QT5)
11450 if test "x$enable_kf5" = "xyes"; then
11452 AC_DEFINE(ENABLE_KF5)
11455 AC_SUBST(ENABLE_KF5)
11459 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11460 if test "$with_system_cairo" = no; then
11461 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11463 : ${with_system_cairo:=yes}
11464 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)
11465 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11466 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11467 FilterLibs "${GTK3_LIBS}"
11468 GTK3_LIBS="${filteredlibs}"
11470 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11471 if test "$with_system_epoxy" != "yes"; then
11472 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11473 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11474 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11477 AC_SUBST(GTK3_LIBS)
11478 AC_SUBST(GTK3_CFLAGS)
11482 if test "x$enable_gtk4" = "xyes"; then
11483 if test "$with_system_cairo" = no; then
11484 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11486 : ${with_system_cairo:=yes}
11487 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11488 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11489 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11490 FilterLibs "${GTK4_LIBS}"
11491 GTK4_LIBS="${filteredlibs}"
11493 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11494 if test "$with_system_epoxy" != "yes"; then
11495 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11496 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11497 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11500 AC_SUBST(GTK4_LIBS)
11501 AC_SUBST(GTK4_CFLAGS)
11503 if test "$enable_introspection" = yes; then
11504 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11505 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11507 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11511 if test "$_os" = "WINNT"; then
11513 elif test "$_os" = "Darwin"; then
11515 elif test "$_os" = "iOS"; then
11519 build_vcl_plugins="$R"
11520 if test -z "$build_vcl_plugins"; then
11521 build_vcl_plugins="none"
11523 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11525 AC_SUBST([VCL_PLUGIN_INFO])
11527 dnl ===================================================================
11528 dnl check for dbus support
11529 dnl ===================================================================
11533 DBUS_GLIB_CFLAGS=""
11537 if test "$enable_dbus" = "no"; then
11541 AC_MSG_CHECKING([whether to enable DBUS support])
11542 if test "$test_dbus" = "yes"; then
11544 AC_MSG_RESULT([yes])
11545 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11546 AC_DEFINE(ENABLE_DBUS)
11547 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11548 FilterLibs "${DBUS_LIBS}"
11549 DBUS_LIBS="${filteredlibs}"
11551 # Glib is needed for BluetoothServer
11552 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11553 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11555 DBUS_HAVE_GLIB="TRUE"
11556 AC_DEFINE(DBUS_HAVE_GLIB,1)
11558 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11561 AC_MSG_RESULT([no])
11564 AC_SUBST(ENABLE_DBUS)
11565 AC_SUBST(DBUS_CFLAGS)
11566 AC_SUBST(DBUS_LIBS)
11567 AC_SUBST(DBUS_GLIB_CFLAGS)
11568 AC_SUBST(DBUS_GLIB_LIBS)
11569 AC_SUBST(DBUS_HAVE_GLIB)
11571 AC_MSG_CHECKING([whether to enable Impress remote control])
11572 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11573 AC_MSG_RESULT([yes])
11574 ENABLE_SDREMOTE=TRUE
11575 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11577 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11578 # The Bluetooth code doesn't compile with macOS SDK 10.15
11579 if test "$enable_sdremote_bluetooth" = yes; then
11580 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11582 enable_sdremote_bluetooth=no
11584 # If not explicitly enabled or disabled, default
11585 if test -z "$enable_sdremote_bluetooth"; then
11588 # Default to yes for these
11589 enable_sdremote_bluetooth=yes
11593 enable_sdremote_bluetooth=no
11597 # $enable_sdremote_bluetooth is guaranteed non-empty now
11599 if test "$enable_sdremote_bluetooth" != "no"; then
11600 if test "$OS" = "LINUX"; then
11601 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11602 AC_MSG_RESULT([yes])
11603 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11604 dnl ===================================================================
11605 dnl Check for system bluez
11606 dnl ===================================================================
11607 AC_MSG_CHECKING([which Bluetooth header to use])
11608 if test "$with_system_bluez" = "yes"; then
11609 AC_MSG_RESULT([external])
11610 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11611 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11614 AC_MSG_RESULT([internal])
11618 AC_MSG_RESULT([no, dbus disabled])
11619 ENABLE_SDREMOTE_BLUETOOTH=
11623 AC_MSG_RESULT([yes])
11624 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11628 AC_MSG_RESULT([no])
11629 ENABLE_SDREMOTE_BLUETOOTH=
11635 AC_MSG_RESULT([no])
11637 AC_SUBST(ENABLE_SDREMOTE)
11638 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11639 AC_SUBST(SYSTEM_BLUEZ)
11641 dnl ===================================================================
11642 dnl Check whether to enable GIO support
11643 dnl ===================================================================
11644 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11645 AC_MSG_CHECKING([whether to enable GIO support])
11646 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11647 dnl Need at least 2.26 for the dbus support.
11648 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11649 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11650 if test "$ENABLE_GIO" = "TRUE"; then
11651 AC_DEFINE(ENABLE_GIO)
11652 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11653 FilterLibs "${GIO_LIBS}"
11654 GIO_LIBS="${filteredlibs}"
11657 AC_MSG_RESULT([no])
11660 AC_SUBST(ENABLE_GIO)
11661 AC_SUBST(GIO_CFLAGS)
11665 dnl ===================================================================
11667 SPLIT_APP_MODULES=""
11668 if test "$enable_split_app_modules" = "yes"; then
11669 SPLIT_APP_MODULES="TRUE"
11671 AC_SUBST(SPLIT_APP_MODULES)
11673 SPLIT_OPT_FEATURES=""
11674 if test "$enable_split_opt_features" = "yes"; then
11675 SPLIT_OPT_FEATURES="TRUE"
11677 AC_SUBST(SPLIT_OPT_FEATURES)
11679 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11680 if test "$enable_cairo_canvas" = yes; then
11681 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11683 enable_cairo_canvas=no
11684 elif test -z "$enable_cairo_canvas"; then
11685 enable_cairo_canvas=yes
11688 ENABLE_CAIRO_CANVAS=""
11689 if test "$enable_cairo_canvas" = "yes"; then
11691 ENABLE_CAIRO_CANVAS="TRUE"
11692 AC_DEFINE(ENABLE_CAIRO_CANVAS)
11694 AC_SUBST(ENABLE_CAIRO_CANVAS)
11696 dnl ===================================================================
11697 dnl Check whether the GStreamer libraries are available.
11698 dnl ===================================================================
11700 ENABLE_GSTREAMER_1_0=""
11702 if test "$build_gstreamer_1_0" = "yes"; then
11704 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11705 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11706 ENABLE_GSTREAMER_1_0="TRUE"
11707 AC_MSG_RESULT([yes])
11708 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11709 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11710 FilterLibs "${GSTREAMER_1_0_LIBS}"
11711 GSTREAMER_1_0_LIBS="${filteredlibs}"
11712 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11714 AC_MSG_RESULT([no])
11717 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11718 AC_SUBST(GSTREAMER_1_0_LIBS)
11719 AC_SUBST(ENABLE_GSTREAMER_1_0)
11721 ENABLE_OPENGL_TRANSITIONS=
11722 ENABLE_OPENGL_CANVAS=
11723 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11725 elif test "$_os" = "Darwin"; then
11726 # We use frameworks on macOS, no need for detail checks
11727 ENABLE_OPENGL_TRANSITIONS=TRUE
11728 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11729 ENABLE_OPENGL_CANVAS=TRUE
11730 elif test $_os = WINNT; then
11731 ENABLE_OPENGL_TRANSITIONS=TRUE
11732 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11733 ENABLE_OPENGL_CANVAS=TRUE
11735 if test "$USING_X11" = TRUE; then
11736 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11737 ENABLE_OPENGL_TRANSITIONS=TRUE
11738 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11739 ENABLE_OPENGL_CANVAS=TRUE
11743 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11744 AC_SUBST(ENABLE_OPENGL_CANVAS)
11746 dnl =================================================
11747 dnl Check whether to build with OpenCL support.
11748 dnl =================================================
11750 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11751 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11752 # platform (optional at run-time, used through clew).
11753 BUILD_TYPE="$BUILD_TYPE OPENCL"
11754 AC_DEFINE(HAVE_FEATURE_OPENCL)
11757 dnl =================================================
11758 dnl Check whether to build with dconf support.
11759 dnl =================================================
11761 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11762 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11763 if test "$enable_dconf" = yes; then
11764 AC_MSG_ERROR([dconf not found])
11769 AC_MSG_CHECKING([whether to enable dconf])
11770 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11774 AC_MSG_RESULT([no])
11777 AC_DEFINE(ENABLE_DCONF)
11778 AC_MSG_RESULT([yes])
11780 AC_SUBST([DCONF_CFLAGS])
11781 AC_SUBST([DCONF_LIBS])
11782 AC_SUBST([ENABLE_DCONF])
11785 AC_MSG_CHECKING([whether to build the PDF import feature])
11787 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11788 AC_MSG_RESULT([yes])
11789 ENABLE_PDFIMPORT=TRUE
11790 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11792 AC_MSG_RESULT([no])
11796 AC_MSG_CHECKING([whether to build PDFium])
11798 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11799 AC_MSG_RESULT([yes])
11801 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11803 AC_MSG_RESULT([no])
11805 AC_SUBST(ENABLE_PDFIUM)
11807 dnl ===================================================================
11808 dnl Check for poppler
11809 dnl ===================================================================
11811 AC_MSG_CHECKING([whether to build Poppler])
11812 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11813 AC_MSG_RESULT([yes])
11814 ENABLE_POPPLER=TRUE
11815 AC_DEFINE(HAVE_FEATURE_POPPLER)
11817 AC_MSG_RESULT([no])
11819 AC_SUBST(ENABLE_POPPLER)
11821 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11822 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11825 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11826 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11829 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11830 dnl ===================================================================
11831 dnl Check for system poppler
11832 dnl ===================================================================
11833 AC_MSG_CHECKING([which PDF import poppler to use])
11834 if test "$with_system_poppler" = "yes"; then
11835 AC_MSG_RESULT([external])
11836 SYSTEM_POPPLER=TRUE
11837 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11838 AC_LANG_PUSH([C++])
11839 save_CXXFLAGS=$CXXFLAGS
11840 save_CPPFLAGS=$CPPFLAGS
11841 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11842 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11843 AC_CHECK_HEADER([cpp/poppler-version.h],
11844 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11846 CXXFLAGS=$save_CXXFLAGS
11847 CPPFLAGS=$save_CPPFLAGS
11849 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11851 FilterLibs "${POPPLER_LIBS}"
11852 POPPLER_LIBS="${filteredlibs}"
11854 AC_MSG_RESULT([internal])
11856 BUILD_TYPE="$BUILD_TYPE POPPLER"
11857 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11859 AC_DEFINE([ENABLE_PDFIMPORT],1)
11861 AC_SUBST(ENABLE_PDFIMPORT)
11862 AC_SUBST(SYSTEM_POPPLER)
11863 AC_SUBST(POPPLER_CFLAGS)
11864 AC_SUBST(POPPLER_LIBS)
11867 AC_MSG_CHECKING([whether to build Skia])
11869 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11870 if test "$enable_skia" = "debug"; then
11871 AC_MSG_RESULT([yes (debug)])
11872 ENABLE_SKIA_DEBUG=TRUE
11874 AC_MSG_RESULT([yes])
11878 AC_DEFINE(HAVE_FEATURE_SKIA)
11879 BUILD_TYPE="$BUILD_TYPE SKIA"
11881 AC_MSG_RESULT([no])
11883 AC_SUBST(ENABLE_SKIA)
11884 AC_SUBST(ENABLE_SKIA_DEBUG)
11886 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11887 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11888 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11889 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11890 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11891 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11892 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11893 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11894 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11896 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "AARCH64" \); then
11897 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11898 AC_MSG_CHECKING([for Clang])
11899 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11901 if test "$_os" = "WINNT"; then
11902 AC_MSG_CHECKING([for clang-cl])
11903 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11904 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11905 dnl explicitly set -m32/-m64
11906 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11907 LO_CLANG_CXX="$LO_CLANG_CC"
11908 AC_MSG_RESULT([$LO_CLANG_CC])
11910 AC_MSG_RESULT([no])
11913 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11914 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11917 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11918 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11919 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11920 if test "$clang2_ver" -lt 50002; then
11921 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11926 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11927 # Skia is the default on Windows, so hard-require Clang.
11928 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11929 if test "$_os" = "WINNT"; then
11930 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11932 AC_MSG_WARN([Clang compiler not found.])
11937 CXX="$LO_CLANG_CXX"
11938 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11941 flag_sse41=-msse4.1
11942 flag_sse42=-msse4.2
11945 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11949 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11950 AC_LANG_PUSH([C++])
11951 save_CXXFLAGS=$CXXFLAGS
11952 CXXFLAGS="$CXXFLAGS $flag_sse2"
11953 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11954 #include <emmintrin.h>
11956 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11957 c = _mm_xor_si128 (a, b);
11961 [can_compile_sse2=yes],
11962 [can_compile_sse2=no])
11964 CXXFLAGS=$save_CXXFLAGS
11965 AC_MSG_RESULT([${can_compile_sse2}])
11966 if test "${can_compile_sse2}" = "yes" ; then
11967 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11970 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11971 AC_LANG_PUSH([C++])
11972 save_CXXFLAGS=$CXXFLAGS
11973 CXXFLAGS="$CXXFLAGS $flag_ssse3"
11974 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11975 #include <tmmintrin.h>
11977 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11978 c = _mm_maddubs_epi16 (a, b);
11982 [can_compile_ssse3=yes],
11983 [can_compile_ssse3=no])
11985 CXXFLAGS=$save_CXXFLAGS
11986 AC_MSG_RESULT([${can_compile_ssse3}])
11987 if test "${can_compile_ssse3}" = "yes" ; then
11988 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11991 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11992 AC_LANG_PUSH([C++])
11993 save_CXXFLAGS=$CXXFLAGS
11994 CXXFLAGS="$CXXFLAGS $flag_sse41"
11995 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11996 #include <smmintrin.h>
11998 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11999 c = _mm_cmpeq_epi64 (a, b);
12003 [can_compile_sse41=yes],
12004 [can_compile_sse41=no])
12006 CXXFLAGS=$save_CXXFLAGS
12007 AC_MSG_RESULT([${can_compile_sse41}])
12008 if test "${can_compile_sse41}" = "yes" ; then
12009 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12012 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12013 AC_LANG_PUSH([C++])
12014 save_CXXFLAGS=$CXXFLAGS
12015 CXXFLAGS="$CXXFLAGS $flag_sse42"
12016 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12017 #include <nmmintrin.h>
12019 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12020 c = _mm_cmpgt_epi64 (a, b);
12024 [can_compile_sse42=yes],
12025 [can_compile_sse42=no])
12027 CXXFLAGS=$save_CXXFLAGS
12028 AC_MSG_RESULT([${can_compile_sse42}])
12029 if test "${can_compile_sse42}" = "yes" ; then
12030 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12033 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12034 AC_LANG_PUSH([C++])
12035 save_CXXFLAGS=$CXXFLAGS
12036 CXXFLAGS="$CXXFLAGS $flag_avx"
12037 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12038 #include <immintrin.h>
12040 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12041 c = _mm256_xor_ps(a, b);
12045 [can_compile_avx=yes],
12046 [can_compile_avx=no])
12048 CXXFLAGS=$save_CXXFLAGS
12049 AC_MSG_RESULT([${can_compile_avx}])
12050 if test "${can_compile_avx}" = "yes" ; then
12051 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12054 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12055 AC_LANG_PUSH([C++])
12056 save_CXXFLAGS=$CXXFLAGS
12057 CXXFLAGS="$CXXFLAGS $flag_avx2"
12058 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12059 #include <immintrin.h>
12061 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12062 c = _mm256_maddubs_epi16(a, b);
12066 [can_compile_avx2=yes],
12067 [can_compile_avx2=no])
12069 CXXFLAGS=$save_CXXFLAGS
12070 AC_MSG_RESULT([${can_compile_avx2}])
12071 if test "${can_compile_avx2}" = "yes" ; then
12072 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12075 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12076 AC_LANG_PUSH([C++])
12077 save_CXXFLAGS=$CXXFLAGS
12078 CXXFLAGS="$CXXFLAGS $flag_avx512"
12079 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12080 #include <immintrin.h>
12082 __m512i a = _mm512_loadu_si512(0);
12086 [can_compile_avx512=yes],
12087 [can_compile_avx512=no])
12089 CXXFLAGS=$save_CXXFLAGS
12090 AC_MSG_RESULT([${can_compile_avx512}])
12091 if test "${can_compile_avx512}" = "yes" ; then
12092 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12095 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12096 AC_LANG_PUSH([C++])
12097 save_CXXFLAGS=$CXXFLAGS
12098 CXXFLAGS="$CXXFLAGS $flag_f16c"
12099 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12100 #include <immintrin.h>
12102 __m128i a = _mm_set1_epi32 (0);
12104 c = _mm_cvtph_ps(a);
12108 [can_compile_f16c=yes],
12109 [can_compile_f16c=no])
12111 CXXFLAGS=$save_CXXFLAGS
12112 AC_MSG_RESULT([${can_compile_f16c}])
12113 if test "${can_compile_f16c}" = "yes" ; then
12114 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12117 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12118 AC_LANG_PUSH([C++])
12119 save_CXXFLAGS=$CXXFLAGS
12120 CXXFLAGS="$CXXFLAGS $flag_fma"
12121 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12122 #include <immintrin.h>
12124 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12125 d = _mm256_fmadd_ps(a, b, c);
12129 [can_compile_fma=yes],
12130 [can_compile_fma=no])
12132 CXXFLAGS=$save_CXXFLAGS
12133 AC_MSG_RESULT([${can_compile_fma}])
12134 if test "${can_compile_fma}" = "yes" ; then
12135 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12142 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12144 UNCACHED_CLANG_CC="$LO_CLANG_CC"
12145 UNCACHED_CLANG_CXX="$LO_CLANG_CXX"
12146 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12147 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12151 save_CFLAGS=$CFLAGS
12152 CFLAGS="$CFLAGS --ccache-skip -O2"
12153 dnl an empty program will do, we're checking the compiler flags
12154 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12155 [use_ccache=yes], [use_ccache=no])
12156 CFLAGS=$save_CFLAGS
12158 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12159 AC_MSG_RESULT([yes])
12161 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12162 AC_MSG_RESULT([no])
12166 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12167 AC_LANG_PUSH([C++])
12169 CXX="$LO_CLANG_CXX"
12170 save_CXXFLAGS=$CXXFLAGS
12171 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12172 dnl an empty program will do, we're checking the compiler flags
12173 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12174 [use_ccache=yes], [use_ccache=no])
12175 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12176 AC_MSG_RESULT([yes])
12178 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12179 AC_MSG_RESULT([no])
12181 CXXFLAGS=$save_CXXFLAGS
12186 AC_SUBST(UNCACHED_CC)
12187 AC_SUBST(UNCACHED_CXX)
12188 AC_SUBST(LO_CLANG_CC)
12189 AC_SUBST(LO_CLANG_CXX)
12190 AC_SUBST(UNCACHED_CLANG_CC)
12191 AC_SUBST(UNCACHED_CLANG_CXX)
12192 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12193 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12194 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12195 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12196 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12197 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12198 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12199 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12200 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12201 AC_SUBST(CLANG_USE_LD)
12205 if test "$enable_gpgmepp" = no; then
12206 AC_MSG_CHECKING([whether to enable gpgmepp])
12207 AC_MSG_RESULT([no])
12208 elif test "$enable_mpl_subset" = "yes"; then
12209 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12210 AC_MSG_RESULT([yes])
12211 elif test "$enable_fuzzers" = "yes"; then
12212 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12213 AC_MSG_RESULT([yes])
12214 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12215 dnl ===================================================================
12216 dnl Check for system gpgme
12217 dnl ===================================================================
12218 AC_MSG_CHECKING([which gpgmepp to use])
12219 if test "$with_system_gpgmepp" = "yes"; then
12220 AC_MSG_RESULT([external])
12221 SYSTEM_GPGMEPP=TRUE
12223 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12224 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12225 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12226 # progress_callback is the only func with plain C linkage
12227 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12228 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12229 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12230 AC_CHECK_HEADER(gpgme.h, [],
12231 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12233 AC_MSG_RESULT([internal])
12234 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12235 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12237 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12238 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12239 if test "$_os" != "WINNT"; then
12240 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12241 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12244 ENABLE_GPGMEPP=TRUE
12245 AC_DEFINE([HAVE_FEATURE_GPGME])
12246 AC_PATH_PROG(GPG, gpg)
12247 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12248 # so let's exclude that manually for the moment
12249 if test -n "$GPG" -a "$_os" != "WINNT"; then
12250 # make sure we not only have a working gpgme, but a full working
12251 # gpg installation to run OpenPGP signature verification
12252 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12254 if test "$_os" = "Linux"; then
12256 AC_MSG_CHECKING([for /run/user/$uid])
12257 if test -d /run/user/$uid; then
12258 AC_MSG_RESULT([yes])
12259 AC_PATH_PROG(GPGCONF, gpgconf)
12261 # Older versions of gpgconf are not working as expected, since
12262 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12263 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12264 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12265 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12266 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12267 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12268 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12269 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12270 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12271 if $GPGCONF --dump-options > /dev/null ; then
12272 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12273 AC_MSG_RESULT([yes])
12274 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12275 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12277 AC_MSG_RESULT([no])
12280 AC_MSG_RESULT([no. missing or broken gpgconf?])
12283 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12286 AC_MSG_RESULT([no])
12290 AC_SUBST(ENABLE_GPGMEPP)
12291 AC_SUBST(SYSTEM_GPGMEPP)
12292 AC_SUBST(GPG_ERROR_CFLAGS)
12293 AC_SUBST(GPG_ERROR_LIBS)
12294 AC_SUBST(LIBASSUAN_CFLAGS)
12295 AC_SUBST(LIBASSUAN_LIBS)
12296 AC_SUBST(GPGMEPP_CFLAGS)
12297 AC_SUBST(GPGMEPP_LIBS)
12299 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12300 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12301 AC_MSG_RESULT([yes])
12302 ENABLE_MEDIAWIKI=TRUE
12303 BUILD_TYPE="$BUILD_TYPE XSLTML"
12304 if test "x$with_java" = "xno"; then
12305 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12308 AC_MSG_RESULT([no])
12310 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12312 AC_SUBST(ENABLE_MEDIAWIKI)
12314 AC_MSG_CHECKING([whether to build the Report Builder])
12315 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12316 AC_MSG_RESULT([yes])
12317 ENABLE_REPORTBUILDER=TRUE
12318 AC_MSG_CHECKING([which jfreereport libs to use])
12319 if test "$with_system_jfreereport" = "yes"; then
12320 SYSTEM_JFREEREPORT=TRUE
12321 AC_MSG_RESULT([external])
12322 if test -z $SAC_JAR; then
12323 SAC_JAR=/usr/share/java/sac.jar
12325 if ! test -f $SAC_JAR; then
12326 AC_MSG_ERROR(sac.jar not found.)
12329 if test -z $LIBXML_JAR; then
12330 if test -f /usr/share/java/libxml-1.0.0.jar; then
12331 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12332 elif test -f /usr/share/java/libxml.jar; then
12333 LIBXML_JAR=/usr/share/java/libxml.jar
12335 AC_MSG_ERROR(libxml.jar replacement not found.)
12337 elif ! test -f $LIBXML_JAR; then
12338 AC_MSG_ERROR(libxml.jar not found.)
12341 if test -z $FLUTE_JAR; then
12342 if test -f /usr/share/java/flute-1.3.0.jar; then
12343 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12344 elif test -f /usr/share/java/flute.jar; then
12345 FLUTE_JAR=/usr/share/java/flute.jar
12347 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12349 elif ! test -f $FLUTE_JAR; then
12350 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12353 if test -z $JFREEREPORT_JAR; then
12354 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12355 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12356 elif test -f /usr/share/java/flow-engine.jar; then
12357 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12359 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12361 elif ! test -f $JFREEREPORT_JAR; then
12362 AC_MSG_ERROR(jfreereport.jar not found.)
12365 if test -z $LIBLAYOUT_JAR; then
12366 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12367 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12368 elif test -f /usr/share/java/liblayout.jar; then
12369 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12371 AC_MSG_ERROR(liblayout.jar replacement not found.)
12373 elif ! test -f $LIBLAYOUT_JAR; then
12374 AC_MSG_ERROR(liblayout.jar not found.)
12377 if test -z $LIBLOADER_JAR; then
12378 if test -f /usr/share/java/libloader-1.0.0.jar; then
12379 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12380 elif test -f /usr/share/java/libloader.jar; then
12381 LIBLOADER_JAR=/usr/share/java/libloader.jar
12383 AC_MSG_ERROR(libloader.jar replacement not found.)
12385 elif ! test -f $LIBLOADER_JAR; then
12386 AC_MSG_ERROR(libloader.jar not found.)
12389 if test -z $LIBFORMULA_JAR; then
12390 if test -f /usr/share/java/libformula-0.2.0.jar; then
12391 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12392 elif test -f /usr/share/java/libformula.jar; then
12393 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12395 AC_MSG_ERROR(libformula.jar replacement not found.)
12397 elif ! test -f $LIBFORMULA_JAR; then
12398 AC_MSG_ERROR(libformula.jar not found.)
12401 if test -z $LIBREPOSITORY_JAR; then
12402 if test -f /usr/share/java/librepository-1.0.0.jar; then
12403 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12404 elif test -f /usr/share/java/librepository.jar; then
12405 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12407 AC_MSG_ERROR(librepository.jar replacement not found.)
12409 elif ! test -f $LIBREPOSITORY_JAR; then
12410 AC_MSG_ERROR(librepository.jar not found.)
12413 if test -z $LIBFONTS_JAR; then
12414 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12415 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12416 elif test -f /usr/share/java/libfonts.jar; then
12417 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12419 AC_MSG_ERROR(libfonts.jar replacement not found.)
12421 elif ! test -f $LIBFONTS_JAR; then
12422 AC_MSG_ERROR(libfonts.jar not found.)
12425 if test -z $LIBSERIALIZER_JAR; then
12426 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12427 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12428 elif test -f /usr/share/java/libserializer.jar; then
12429 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12431 AC_MSG_ERROR(libserializer.jar replacement not found.)
12433 elif ! test -f $LIBSERIALIZER_JAR; then
12434 AC_MSG_ERROR(libserializer.jar not found.)
12437 if test -z $LIBBASE_JAR; then
12438 if test -f /usr/share/java/libbase-1.0.0.jar; then
12439 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12440 elif test -f /usr/share/java/libbase.jar; then
12441 LIBBASE_JAR=/usr/share/java/libbase.jar
12443 AC_MSG_ERROR(libbase.jar replacement not found.)
12445 elif ! test -f $LIBBASE_JAR; then
12446 AC_MSG_ERROR(libbase.jar not found.)
12450 AC_MSG_RESULT([internal])
12451 SYSTEM_JFREEREPORT=
12452 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12456 AC_MSG_RESULT([no])
12457 ENABLE_REPORTBUILDER=
12458 SYSTEM_JFREEREPORT=
12460 AC_SUBST(ENABLE_REPORTBUILDER)
12461 AC_SUBST(SYSTEM_JFREEREPORT)
12463 AC_SUBST(LIBXML_JAR)
12464 AC_SUBST(FLUTE_JAR)
12465 AC_SUBST(JFREEREPORT_JAR)
12466 AC_SUBST(LIBBASE_JAR)
12467 AC_SUBST(LIBLAYOUT_JAR)
12468 AC_SUBST(LIBLOADER_JAR)
12469 AC_SUBST(LIBFORMULA_JAR)
12470 AC_SUBST(LIBREPOSITORY_JAR)
12471 AC_SUBST(LIBFONTS_JAR)
12472 AC_SUBST(LIBSERIALIZER_JAR)
12474 # scripting provider for BeanShell?
12475 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12476 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12477 AC_MSG_RESULT([yes])
12478 ENABLE_SCRIPTING_BEANSHELL=TRUE
12480 dnl ===================================================================
12481 dnl Check for system beanshell
12482 dnl ===================================================================
12483 AC_MSG_CHECKING([which beanshell to use])
12484 if test "$with_system_beanshell" = "yes"; then
12485 AC_MSG_RESULT([external])
12487 if test -z $BSH_JAR; then
12488 BSH_JAR=/usr/share/java/bsh.jar
12490 if ! test -f $BSH_JAR; then
12491 AC_MSG_ERROR(bsh.jar not found.)
12494 AC_MSG_RESULT([internal])
12496 BUILD_TYPE="$BUILD_TYPE BSH"
12499 AC_MSG_RESULT([no])
12500 ENABLE_SCRIPTING_BEANSHELL=
12501 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12503 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12504 AC_SUBST(SYSTEM_BSH)
12507 # scripting provider for JavaScript?
12508 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12509 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12510 AC_MSG_RESULT([yes])
12511 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12513 dnl ===================================================================
12514 dnl Check for system rhino
12515 dnl ===================================================================
12516 AC_MSG_CHECKING([which rhino to use])
12517 if test "$with_system_rhino" = "yes"; then
12518 AC_MSG_RESULT([external])
12520 if test -z $RHINO_JAR; then
12521 RHINO_JAR=/usr/share/java/js.jar
12523 if ! test -f $RHINO_JAR; then
12524 AC_MSG_ERROR(js.jar not found.)
12527 AC_MSG_RESULT([internal])
12529 BUILD_TYPE="$BUILD_TYPE RHINO"
12533 AC_MSG_RESULT([no])
12534 ENABLE_SCRIPTING_JAVASCRIPT=
12535 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12537 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12538 AC_SUBST(SYSTEM_RHINO)
12539 AC_SUBST(RHINO_JAR)
12541 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12542 # paths should be added to library search path. So lets put all 64-bit
12545 case "$host_cpu" in
12546 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12547 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12548 supports_multilib="yes"
12555 dnl ===================================================================
12556 dnl QT5 Integration
12557 dnl ===================================================================
12563 QT5_GOBJECT_CFLAGS=""
12564 QT5_GOBJECT_LIBS=""
12565 QT5_HAVE_GOBJECT=""
12566 QT5_PLATFORMS_SRCDIR=""
12567 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12568 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12569 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12571 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12572 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12574 if test -n "$supports_multilib"; then
12575 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12578 qt5_test_include="QtWidgets/qapplication.h"
12579 if test "$_os" = "Emscripten"; then
12580 qt5_test_library="libQt5Widgets.a"
12582 qt5_test_library="libQt5Widgets.so"
12585 dnl Check for qmake5
12586 if test -n "$QT5DIR"; then
12587 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12589 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12591 if test "$QMAKE5" = "no"; then
12592 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12594 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12595 if test -z "$qmake5_test_ver"; then
12596 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12598 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12599 qt5_minimal_minor="6"
12600 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12601 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12603 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12607 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12608 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12609 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12610 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12612 AC_MSG_CHECKING([for Qt5 headers])
12614 for inc_dir in $qt5_incdirs; do
12615 if test -r "$inc_dir/$qt5_test_include"; then
12616 qt5_incdir="$inc_dir"
12620 AC_MSG_RESULT([$qt5_incdir])
12621 if test "x$qt5_incdir" = "xno"; then
12622 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12624 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12625 AC_LANG_PUSH([C++])
12626 save_CPPFLAGS=$CPPFLAGS
12627 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12628 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12629 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12630 CPPFLAGS=$save_CPPFLAGS
12633 AC_MSG_CHECKING([for Qt5 libraries])
12635 for lib_dir in $qt5_libdirs; do
12636 if test -r "$lib_dir/$qt5_test_library"; then
12637 qt5_libdir="$lib_dir"
12641 AC_MSG_RESULT([$qt5_libdir])
12642 if test "x$qt5_libdir" = "xno"; then
12643 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12646 if test "$_os" = "Emscripten"; then
12647 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12648 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12650 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12651 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12655 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12656 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12657 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12658 if test "$_os" = "Emscripten"; then
12659 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12662 if test "$USING_X11" = TRUE; then
12663 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12664 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12665 QT5_HAVE_XCB_ICCCM=1
12666 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12668 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)])
12669 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12671 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12672 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12674 AC_DEFINE(QT5_USING_X11)
12677 dnl Check for Meta Object Compiler
12679 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12680 if test "$MOC5" = "no"; then
12681 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12682 the root of your Qt installation by exporting QT5DIR before running "configure".])
12685 if test "$build_gstreamer_1_0" = "yes"; then
12686 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12688 AC_DEFINE(QT5_HAVE_GOBJECT)
12690 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12694 AC_SUBST(QT5_CFLAGS)
12697 AC_SUBST(QT5_GOBJECT_CFLAGS)
12698 AC_SUBST(QT5_GOBJECT_LIBS)
12699 AC_SUBST(QT5_HAVE_GOBJECT)
12700 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12702 dnl ===================================================================
12703 dnl KF5 Integration
12704 dnl ===================================================================
12708 KF5_CONFIG="kf5-config"
12709 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12710 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12712 if test "$OS" = "HAIKU"; then
12713 haiku_arch="`echo $RTL_ARCH | tr X x`"
12714 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12715 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12718 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12719 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12720 if test -n "$supports_multilib"; then
12721 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12724 kf5_test_include="KF5/kcoreaddons_version.h"
12725 kf5_test_library="libKF5CoreAddons.so"
12726 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12728 dnl kf5 KDE4 support compatibility installed
12729 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12730 if test "$KF5_CONFIG" != "no"; then
12731 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12732 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12735 dnl Check for KF5 headers
12736 AC_MSG_CHECKING([for KF5 headers])
12738 for kf5_check in $kf5_incdirs; do
12739 if test -r "$kf5_check/$kf5_test_include"; then
12740 kf5_incdir="$kf5_check/KF5"
12744 AC_MSG_RESULT([$kf5_incdir])
12745 if test "x$kf5_incdir" = "xno"; then
12746 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12749 dnl Check for KF5 libraries
12750 AC_MSG_CHECKING([for KF5 libraries])
12752 for kf5_check in $kf5_libdirs; do
12753 if test -r "$kf5_check/$kf5_test_library"; then
12754 kf5_libdir="$kf5_check"
12759 AC_MSG_RESULT([$kf5_libdir])
12760 if test "x$kf5_libdir" = "xno"; then
12761 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12764 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"
12765 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12766 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12768 if test "$USING_X11" = TRUE; then
12769 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12772 AC_LANG_PUSH([C++])
12773 save_CXXFLAGS=$CXXFLAGS
12774 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12775 AC_MSG_CHECKING([whether KDE is >= 5.0])
12776 AC_RUN_IFELSE([AC_LANG_SOURCE([[
12777 #include <kcoreaddons_version.h>
12779 int main(int argc, char **argv) {
12780 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12783 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12784 CXXFLAGS=$save_CXXFLAGS
12787 AC_SUBST(KF5_CFLAGS)
12790 dnl ===================================================================
12791 dnl Test whether to include Evolution 2 support
12792 dnl ===================================================================
12793 AC_MSG_CHECKING([whether to enable evolution 2 support])
12794 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12795 AC_MSG_RESULT([yes])
12796 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12797 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12798 FilterLibs "${GOBJECT_LIBS}"
12799 GOBJECT_LIBS="${filteredlibs}"
12800 ENABLE_EVOAB2="TRUE"
12803 AC_MSG_RESULT([no])
12805 AC_SUBST(ENABLE_EVOAB2)
12806 AC_SUBST(GOBJECT_CFLAGS)
12807 AC_SUBST(GOBJECT_LIBS)
12809 dnl ===================================================================
12810 dnl Test which themes to include
12811 dnl ===================================================================
12812 AC_MSG_CHECKING([which themes to include])
12813 # if none given use default subset of available themes
12814 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12815 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"
12819 if test "x$with_theme" != "xno"; then
12820 for theme in $with_theme; do
12822 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" ;;
12823 default) real_theme=colibre ;;
12824 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12826 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12829 AC_MSG_RESULT([$WITH_THEMES])
12830 AC_SUBST([WITH_THEMES])
12831 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12832 for theme in $with_theme; do
12834 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12839 dnl ===================================================================
12840 dnl Test whether to integrate helppacks into the product's installer
12841 dnl ===================================================================
12842 AC_MSG_CHECKING([for helppack integration])
12843 if test "$with_helppack_integration" = "no"; then
12844 AC_MSG_RESULT([no integration])
12846 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12847 AC_MSG_RESULT([integration])
12850 ###############################################################################
12851 # Extensions checking
12852 ###############################################################################
12853 AC_MSG_CHECKING([for extensions integration])
12854 if test "x$enable_extension_integration" != "xno"; then
12855 WITH_EXTENSION_INTEGRATION=TRUE
12856 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12857 AC_MSG_RESULT([yes, use integration])
12859 WITH_EXTENSION_INTEGRATION=
12860 AC_MSG_RESULT([no, do not integrate])
12862 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12864 dnl Should any extra extensions be included?
12865 dnl There are standalone tests for each of these below.
12866 WITH_EXTRA_EXTENSIONS=
12867 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12869 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12870 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12871 if test "x$with_java" != "xno"; then
12872 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12873 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12876 AC_MSG_CHECKING([whether to build opens___.ttf])
12877 if test "$enable_build_opensymbol" = "yes"; then
12878 AC_MSG_RESULT([yes])
12879 AC_PATH_PROG(FONTFORGE, fontforge)
12880 if test -z "$FONTFORGE"; then
12881 AC_MSG_ERROR([fontforge not installed])
12884 AC_MSG_RESULT([no])
12885 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12886 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12888 AC_SUBST(OPENSYMBOL_TTF)
12889 AC_SUBST(FONTFORGE)
12891 dnl ===================================================================
12892 dnl Test whether to include fonts
12893 dnl ===================================================================
12894 AC_MSG_CHECKING([whether to include third-party fonts])
12895 if test "$with_fonts" != "no"; then
12896 AC_MSG_RESULT([yes])
12898 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12899 AC_DEFINE(HAVE_MORE_FONTS)
12901 AC_MSG_RESULT([no])
12903 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12905 AC_SUBST(WITH_FONTS)
12908 dnl ===================================================================
12909 dnl Test whether to enable online update service
12910 dnl ===================================================================
12911 AC_MSG_CHECKING([whether to enable online update])
12912 ENABLE_ONLINE_UPDATE=
12913 ENABLE_ONLINE_UPDATE_MAR=
12915 if test "$enable_online_update" = ""; then
12916 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12917 AC_MSG_RESULT([yes])
12918 ENABLE_ONLINE_UPDATE="TRUE"
12920 AC_MSG_RESULT([no])
12923 if test "$enable_online_update" = "mar"; then
12924 AC_MSG_RESULT([yes - MAR-based online update])
12925 ENABLE_ONLINE_UPDATE_MAR="TRUE"
12926 if test "$with_update_config" = ""; then
12927 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12929 UPDATE_CONFIG="$with_update_config"
12930 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12931 elif test "$enable_online_update" = "yes"; then
12932 AC_MSG_RESULT([yes])
12933 ENABLE_ONLINE_UPDATE="TRUE"
12935 AC_MSG_RESULT([no])
12938 AC_SUBST(ENABLE_ONLINE_UPDATE)
12939 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12940 AC_SUBST(UPDATE_CONFIG)
12942 dnl ===================================================================
12943 dnl Test whether we need bzip2
12944 dnl ===================================================================
12946 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12947 AC_MSG_CHECKING([whether to use system bzip2])
12948 if test "$with_system_bzip2" = yes; then
12950 AC_MSG_RESULT([yes])
12951 PKG_CHECK_MODULES(BZIP2, bzip2)
12952 FilterLibs "${BZIP2_LIBS}"
12953 BZIP2_LIBS="${filteredlibs}"
12955 AC_MSG_RESULT([no])
12956 BUILD_TYPE="$BUILD_TYPE BZIP2"
12959 AC_SUBST(SYSTEM_BZIP2)
12960 AC_SUBST(BZIP2_CFLAGS)
12961 AC_SUBST(BZIP2_LIBS)
12963 dnl ===================================================================
12964 dnl Test whether to enable extension update
12965 dnl ===================================================================
12966 AC_MSG_CHECKING([whether to enable extension update])
12967 ENABLE_EXTENSION_UPDATE=
12968 if test "x$enable_extension_update" = "xno"; then
12969 AC_MSG_RESULT([no])
12971 AC_MSG_RESULT([yes])
12972 ENABLE_EXTENSION_UPDATE="TRUE"
12973 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12974 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12976 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12979 dnl ===================================================================
12980 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12981 dnl ===================================================================
12982 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12983 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12984 AC_MSG_RESULT([no])
12987 AC_MSG_RESULT([yes])
12988 ENABLE_SILENT_MSI=TRUE
12989 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12991 AC_SUBST(ENABLE_SILENT_MSI)
12993 AC_MSG_CHECKING([whether and how to use Xinerama])
12994 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12995 if test "$x_libraries" = "default_x_libraries"; then
12996 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12997 if test "x$XINERAMALIB" = x; then
12998 XINERAMALIB="/usr/lib"
13001 XINERAMALIB="$x_libraries"
13003 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13004 # we have both versions, let the user decide but use the dynamic one
13007 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13008 XINERAMA_LINK=dynamic
13010 XINERAMA_LINK=static
13012 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13013 # we have only the dynamic version
13015 XINERAMA_LINK=dynamic
13016 elif test -e "$XINERAMALIB/libXinerama.a"; then
13018 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13020 XINERAMA_LINK=static
13030 if test "$USE_XINERAMA" = "TRUE"; then
13031 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13032 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13033 [AC_MSG_ERROR(Xinerama header not found.)], [])
13034 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13035 if test "x$XEXTLIB" = x; then
13036 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13038 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13039 if test "$_os" = "FreeBSD"; then
13040 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13042 if test "$_os" = "Linux"; then
13043 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13045 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13046 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13048 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13053 AC_MSG_RESULT([no])
13055 AC_SUBST(USE_XINERAMA)
13056 AC_SUBST(XINERAMA_LINK)
13058 dnl ===================================================================
13059 dnl Test whether to build cairo or rely on the system version
13060 dnl ===================================================================
13062 if test "$USING_X11" = TRUE; then
13063 # Used in vcl/Library_vclplug_gen.mk
13067 if test "$test_cairo" = "yes"; then
13068 AC_MSG_CHECKING([whether to use the system cairo])
13070 : ${with_system_cairo:=$with_system_libs}
13071 if test "$with_system_cairo" = "yes"; then
13073 AC_MSG_RESULT([yes])
13075 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13076 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13077 FilterLibs "${CAIRO_LIBS}"
13078 CAIRO_LIBS="${filteredlibs}"
13080 if test "$test_xrender" = "yes"; then
13081 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13083 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13084 #ifdef PictStandardA8
13088 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13094 AC_MSG_RESULT([no])
13096 BUILD_TYPE="$BUILD_TYPE CAIRO"
13100 AC_SUBST(SYSTEM_CAIRO)
13101 AC_SUBST(CAIRO_CFLAGS)
13102 AC_SUBST(CAIRO_LIBS)
13104 dnl ===================================================================
13105 dnl Test whether to use avahi
13106 dnl ===================================================================
13107 if test "$_os" = "WINNT"; then
13108 # Windows uses bundled mDNSResponder
13109 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13110 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13111 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13112 [ENABLE_AVAHI="TRUE"])
13113 AC_DEFINE(HAVE_FEATURE_AVAHI)
13114 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13115 FilterLibs "${AVAHI_LIBS}"
13116 AVAHI_LIBS="${filteredlibs}"
13119 AC_SUBST(ENABLE_AVAHI)
13120 AC_SUBST(AVAHI_CFLAGS)
13121 AC_SUBST(AVAHI_LIBS)
13123 dnl ===================================================================
13124 dnl Test whether to use liblangtag
13125 dnl ===================================================================
13127 AC_MSG_CHECKING([whether to use system liblangtag])
13128 if test "$with_system_liblangtag" = yes; then
13129 SYSTEM_LIBLANGTAG=TRUE
13130 AC_MSG_RESULT([yes])
13131 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13132 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13133 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13134 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13135 FilterLibs "${LIBLANGTAG_LIBS}"
13136 LIBLANGTAG_LIBS="${filteredlibs}"
13139 AC_MSG_RESULT([no])
13140 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13141 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13142 if test "$COM" = "MSC"; then
13143 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13145 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13148 AC_SUBST(SYSTEM_LIBLANGTAG)
13149 AC_SUBST(LIBLANGTAG_CFLAGS)
13150 AC_SUBST(LIBLANGTAG_LIBS)
13152 dnl ===================================================================
13153 dnl Test whether to build libpng or rely on the system version
13154 dnl ===================================================================
13156 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13158 dnl ===================================================================
13159 dnl Check for runtime JVM search path
13160 dnl ===================================================================
13161 if test "$ENABLE_JAVA" != ""; then
13162 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13163 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13164 AC_MSG_RESULT([yes])
13165 if ! test -d "$with_jvm_path"; then
13166 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13168 if ! test -d "$with_jvm_path"jvm; then
13169 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13171 JVM_ONE_PATH_CHECK="$with_jvm_path"
13172 AC_SUBST(JVM_ONE_PATH_CHECK)
13174 AC_MSG_RESULT([no])
13178 dnl ===================================================================
13179 dnl Test for the presence of Ant and that it works
13180 dnl ===================================================================
13182 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13183 ANT_HOME=; export ANT_HOME
13184 WITH_ANT_HOME=; export WITH_ANT_HOME
13185 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13186 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13187 if test "$_os" = "WINNT"; then
13188 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13190 with_ant_home="$LODE_HOME/opt/ant"
13192 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13193 with_ant_home="$LODE_HOME/opt/ant"
13196 if test -z "$with_ant_home"; then
13197 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13199 if test "$_os" = "WINNT"; then
13200 # AC_PATH_PROGS needs unix path
13201 with_ant_home=`cygpath -u "$with_ant_home"`
13203 AbsolutePath "$with_ant_home"
13204 with_ant_home=$absolute_path
13205 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13206 WITH_ANT_HOME=$with_ant_home
13207 ANT_HOME=$with_ant_home
13210 if test -z "$ANT"; then
13211 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13213 # resolve relative or absolute symlink
13214 while test -h "$ANT"; do
13216 a_basename=`basename "$ANT"`
13217 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13218 cd "`dirname "$ANT"`"
13219 cd "`dirname "$a_script"`"
13220 ANT="`pwd`"/"`basename "$a_script"`"
13224 AC_MSG_CHECKING([if $ANT works])
13225 mkdir -p conftest.dir
13228 cat > conftest.java << EOF
13229 public class conftest {
13230 int testmethod(int a, int b) {
13236 cat > conftest.xml << EOF
13237 <project name="conftest" default="conftest">
13238 <target name="conftest">
13239 <javac srcdir="." includes="conftest.java">
13245 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13246 if test $? = 0 -a -f ./conftest.class; then
13247 AC_MSG_RESULT([Ant works])
13248 if test -z "$WITH_ANT_HOME"; then
13249 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13250 if test -z "$ANT_HOME"; then
13251 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13254 ANT_HOME="$WITH_ANT_HOME"
13257 echo "configure: Ant test failed" >&5
13258 cat conftest.java >&5
13259 cat conftest.xml >&5
13260 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13263 rm -fr conftest.dir
13265 if test -z "$ANT_HOME"; then
13266 ANT_HOME="NO_ANT_HOME"
13268 PathFormat "$ANT_HOME"
13269 ANT_HOME="$formatted_path"
13271 ANT="$formatted_path"
13274 dnl Checking for ant.jar
13275 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13276 AC_MSG_CHECKING([Ant lib directory])
13277 if test -f $ANT_HOME/lib/ant.jar; then
13278 ANT_LIB="$ANT_HOME/lib"
13280 if test -f $ANT_HOME/ant.jar; then
13281 ANT_LIB="$ANT_HOME"
13283 if test -f /usr/share/java/ant.jar; then
13284 ANT_LIB=/usr/share/java
13286 if test -f /usr/share/ant-core/lib/ant.jar; then
13287 ANT_LIB=/usr/share/ant-core/lib
13289 if test -f $ANT_HOME/lib/ant/ant.jar; then
13290 ANT_LIB="$ANT_HOME/lib/ant"
13292 if test -f /usr/share/lib/ant/ant.jar; then
13293 ANT_LIB=/usr/share/lib/ant
13295 AC_MSG_ERROR([Ant libraries not found!])
13302 PathFormat "$ANT_LIB"
13303 ANT_LIB="$formatted_path"
13304 AC_MSG_RESULT([Ant lib directory found.])
13308 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13310 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13311 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13312 ant_version_major=`echo $ant_version | cut -d. -f1`
13313 ant_version_minor=`echo $ant_version | cut -d. -f2`
13314 echo "configure: ant_version $ant_version " >&5
13315 echo "configure: ant_version_major $ant_version_major " >&5
13316 echo "configure: ant_version_minor $ant_version_minor " >&5
13317 if test "$ant_version_major" -ge "2"; then
13318 AC_MSG_RESULT([yes, $ant_version])
13319 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13320 AC_MSG_RESULT([yes, $ant_version])
13322 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13325 rm -f conftest* core core.* *.core
13333 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13334 AC_MSG_CHECKING([for JUnit 4])
13335 if test "$with_junit" = "yes"; then
13336 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13337 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13338 elif test -e /usr/share/java/junit4.jar; then
13339 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13341 if test -e /usr/share/lib/java/junit.jar; then
13342 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13344 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13348 OOO_JUNIT_JAR=$with_junit
13350 if test "$_os" = "WINNT"; then
13351 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13353 printf 'import org.junit.Before;' > conftest.java
13354 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13355 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13358 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13359 specify its pathname via --with-junit=..., or disable it via --without-junit])
13361 rm -f conftest.class conftest.java
13362 if test $OOO_JUNIT_JAR != ""; then
13363 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13366 AC_MSG_CHECKING([for included Hamcrest])
13367 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13368 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13369 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13371 AC_MSG_RESULT([Not included])
13372 AC_MSG_CHECKING([for standalone hamcrest jar.])
13373 if test "$with_hamcrest" = "yes"; then
13374 if test -e /usr/share/lib/java/hamcrest.jar; then
13375 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13376 elif test -e /usr/share/java/hamcrest/core.jar; then
13377 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13379 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13382 HAMCREST_JAR=$with_hamcrest
13384 if test "$_os" = "WINNT"; then
13385 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13387 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13388 AC_MSG_RESULT([$HAMCREST_JAR])
13390 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),
13391 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13394 rm -f conftest.class conftest.java
13396 AC_SUBST(OOO_JUNIT_JAR)
13397 AC_SUBST(HAMCREST_JAR)
13403 # check for wget and curl
13408 if test "$enable_fetch_external" != "no"; then
13410 CURL=`which curl 2>/dev/null`
13412 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13414 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13415 if test $? -eq 0; then
13421 if test -z "$WGET" -a -z "$CURL"; then
13422 AC_MSG_ERROR([neither wget nor curl found!])
13431 # check for sha256sum
13435 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13436 eval "$i -a 256 --version" > /dev/null 2>&1
13438 if test $ret -eq 0; then
13439 SHA256SUM="$i -a 256"
13444 if test -z "$SHA256SUM"; then
13445 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13446 eval "$i --version" > /dev/null 2>&1
13448 if test $ret -eq 0; then
13455 if test -z "$SHA256SUM"; then
13456 AC_MSG_ERROR([no sha256sum found!])
13459 AC_SUBST(SHA256SUM)
13461 dnl ===================================================================
13462 dnl Dealing with l10n options
13463 dnl ===================================================================
13464 AC_MSG_CHECKING([which languages to be built])
13465 # get list of all languages
13466 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13467 # the sed command does the following:
13468 # + if a line ends with a backslash, append the next line to it
13469 # + adds " on the beginning of the value (after =)
13470 # + adds " at the end of the value
13471 # + removes en-US; we want to put it on the beginning
13472 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13473 [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)]
13474 ALL_LANGS="en-US $completelangiso"
13475 # check the configured localizations
13476 WITH_LANG="$with_lang"
13478 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13479 # (Norwegian is "nb" and "nn".)
13480 if test "$WITH_LANG" = "no"; then
13484 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13485 AC_MSG_RESULT([en-US])
13487 AC_MSG_RESULT([$WITH_LANG])
13488 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13489 if test -z "$MSGFMT"; then
13490 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13491 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13492 elif test -x "/opt/lo/bin/msgfmt"; then
13493 MSGFMT="/opt/lo/bin/msgfmt"
13495 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13496 if test -z "$MSGFMT"; then
13497 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13501 if test -z "$MSGUNIQ"; then
13502 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13503 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13504 elif test -x "/opt/lo/bin/msguniq"; then
13505 MSGUNIQ="/opt/lo/bin/msguniq"
13507 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13508 if test -z "$MSGUNIQ"; then
13509 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13516 # check that the list is valid
13517 for lang in $WITH_LANG; do
13518 test "$lang" = "ALL" && continue
13519 # need to check for the exact string, so add space before and after the list of all languages
13520 for vl in $ALL_LANGS; do
13521 if test "$vl" = "$lang"; then
13525 if test "$vl" != "$lang"; then
13526 # if you're reading this - you prolly quoted your languages remove the quotes ...
13527 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13530 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13531 echo $WITH_LANG | grep -q en-US
13532 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13534 # list with substituted ALL
13535 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13536 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13537 test "$WITH_LANG" = "en-US" && WITH_LANG=
13538 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13539 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13540 ALL_LANGS=`echo $ALL_LANGS qtz`
13542 AC_SUBST(ALL_LANGS)
13543 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13544 AC_SUBST(WITH_LANG)
13545 AC_SUBST(WITH_LANG_LIST)
13546 AC_SUBST(GIT_NEEDED_SUBMODULES)
13548 WITH_POOR_HELP_LOCALIZATIONS=
13549 if test -d "$SRC_ROOT/translations/source"; then
13550 for l in `ls -1 $SRC_ROOT/translations/source`; do
13551 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13552 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13556 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13558 if test -n "$with_locales"; then
13559 WITH_LOCALES="$with_locales"
13561 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13562 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13563 # config_host/config_locales.h.in
13564 for locale in $WITH_LOCALES; do
13567 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13571 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13574 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13579 AC_DEFINE(WITH_LOCALE_ALL)
13581 AC_SUBST(WITH_LOCALES)
13583 dnl git submodule update --reference
13584 dnl ===================================================================
13585 if test -n "${GIT_REFERENCE_SRC}"; then
13586 for repo in ${GIT_NEEDED_SUBMODULES}; do
13587 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13588 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13592 AC_SUBST(GIT_REFERENCE_SRC)
13594 dnl git submodules linked dirs
13595 dnl ===================================================================
13596 if test -n "${GIT_LINK_SRC}"; then
13597 for repo in ${GIT_NEEDED_SUBMODULES}; do
13598 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13599 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13603 AC_SUBST(GIT_LINK_SRC)
13606 dnl ===================================================================
13607 AC_MSG_CHECKING([for alternative branding images directory])
13608 # initialize mapped arrays
13609 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13610 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13612 if test -z "$with_branding" -o "$with_branding" = "no"; then
13613 AC_MSG_RESULT([none])
13614 DEFAULT_BRAND_IMAGES="$brand_files"
13616 if ! test -d $with_branding ; then
13617 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13619 AC_MSG_RESULT([$with_branding])
13620 CUSTOM_BRAND_DIR="$with_branding"
13621 for lfile in $brand_files
13623 if ! test -f $with_branding/$lfile ; then
13624 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13625 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13627 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13630 check_for_progress="yes"
13633 AC_SUBST([BRAND_INTRO_IMAGES])
13634 AC_SUBST([CUSTOM_BRAND_DIR])
13635 AC_SUBST([CUSTOM_BRAND_IMAGES])
13636 AC_SUBST([DEFAULT_BRAND_IMAGES])
13639 AC_MSG_CHECKING([for 'intro' progress settings])
13643 PROGRESSFRAMECOLOR=
13645 PROGRESSTEXTBASELINE=
13647 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13648 source "$with_branding/progress.conf"
13649 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13651 AC_MSG_RESULT([none])
13654 AC_SUBST(PROGRESSBARCOLOR)
13655 AC_SUBST(PROGRESSSIZE)
13656 AC_SUBST(PROGRESSPOSITION)
13657 AC_SUBST(PROGRESSFRAMECOLOR)
13658 AC_SUBST(PROGRESSTEXTCOLOR)
13659 AC_SUBST(PROGRESSTEXTBASELINE)
13662 dnl ===================================================================
13663 dnl Custom build version
13664 dnl ===================================================================
13665 AC_MSG_CHECKING([for extra build ID])
13666 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13667 EXTRA_BUILDID="$with_extra_buildid"
13669 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13670 if test -n "$EXTRA_BUILDID" ; then
13671 AC_MSG_RESULT([$EXTRA_BUILDID])
13673 AC_MSG_RESULT([not set])
13675 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13678 AC_MSG_CHECKING([for vendor])
13679 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13680 OOO_VENDOR="$USERNAME"
13682 if test -z "$OOO_VENDOR"; then
13686 if test -z "$OOO_VENDOR"; then
13687 OOO_VENDOR="`id -u -n`"
13690 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13692 OOO_VENDOR="$with_vendor"
13693 AC_MSG_RESULT([$OOO_VENDOR])
13695 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13696 AC_SUBST(OOO_VENDOR)
13698 if test "$_os" = "Android" ; then
13699 ANDROID_PACKAGE_NAME=
13700 AC_MSG_CHECKING([for Android package name])
13701 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13702 if test -n "$ENABLE_DEBUG"; then
13703 # Default to the package name that makes ndk-gdb happy.
13704 ANDROID_PACKAGE_NAME="org.libreoffice"
13706 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13709 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13711 ANDROID_PACKAGE_NAME="$with_android_package_name"
13712 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13714 AC_SUBST(ANDROID_PACKAGE_NAME)
13717 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13718 if test "$with_compat_oowrappers" = "yes"; then
13719 WITH_COMPAT_OOWRAPPERS=TRUE
13722 WITH_COMPAT_OOWRAPPERS=
13725 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13727 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13728 AC_MSG_CHECKING([for install dirname])
13729 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13730 INSTALLDIRNAME="$with_install_dirname"
13732 AC_MSG_RESULT([$INSTALLDIRNAME])
13733 AC_SUBST(INSTALLDIRNAME)
13735 AC_MSG_CHECKING([for prefix])
13736 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13737 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13738 PREFIXDIR="$prefix"
13739 AC_MSG_RESULT([$PREFIXDIR])
13740 AC_SUBST(PREFIXDIR)
13742 LIBDIR=[$(eval echo $(eval echo $libdir))]
13745 DATADIR=[$(eval echo $(eval echo $datadir))]
13748 MANDIR=[$(eval echo $(eval echo $mandir))]
13751 DOCDIR=[$(eval echo $(eval echo $docdir))]
13754 BINDIR=[$(eval echo $(eval echo $bindir))]
13757 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13758 AC_SUBST(INSTALLDIR)
13760 TESTINSTALLDIR="${BUILDDIR}/test-install"
13761 AC_SUBST(TESTINSTALLDIR)
13764 # ===================================================================
13765 # OAuth2 id and secrets
13766 # ===================================================================
13768 AC_MSG_CHECKING([for Google Drive client id and secret])
13769 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13770 AC_MSG_RESULT([not set])
13771 GDRIVE_CLIENT_ID="\"\""
13772 GDRIVE_CLIENT_SECRET="\"\""
13774 AC_MSG_RESULT([set])
13775 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13776 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13778 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13779 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13781 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13782 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13783 AC_MSG_RESULT([not set])
13784 ALFRESCO_CLOUD_CLIENT_ID="\"\""
13785 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13787 AC_MSG_RESULT([set])
13788 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13789 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13791 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13792 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13794 AC_MSG_CHECKING([for OneDrive client id and secret])
13795 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13796 AC_MSG_RESULT([not set])
13797 ONEDRIVE_CLIENT_ID="\"\""
13798 ONEDRIVE_CLIENT_SECRET="\"\""
13800 AC_MSG_RESULT([set])
13801 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13802 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13804 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13805 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13808 dnl ===================================================================
13809 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13810 dnl --enable-dependency-tracking configure option
13811 dnl ===================================================================
13812 AC_MSG_CHECKING([whether to enable dependency tracking])
13813 if test "$enable_dependency_tracking" = "no"; then
13815 AC_MSG_RESULT([no])
13817 AC_MSG_RESULT([yes])
13821 dnl ===================================================================
13822 dnl Number of CPUs to use during the build
13823 dnl ===================================================================
13824 AC_MSG_CHECKING([for number of processors to use])
13825 # plain --with-parallelism is just the default
13826 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13827 if test "$with_parallelism" = "no"; then
13830 PARALLELISM=$with_parallelism
13833 if test "$enable_icecream" = "yes"; then
13838 Darwin|FreeBSD|NetBSD|OpenBSD)
13839 PARALLELISM=`sysctl -n hw.ncpu`
13843 PARALLELISM=`getconf _NPROCESSORS_ONLN`
13845 # what else than above does profit here *and* has /proc?
13847 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13851 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13852 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13856 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13857 if test -z "$with_parallelism"; then
13858 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13859 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13862 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."
13866 if test $PARALLELISM -eq 0; then
13867 AC_MSG_RESULT([explicit make -j option needed])
13869 AC_MSG_RESULT([$PARALLELISM])
13871 AC_SUBST(PARALLELISM)
13873 IWYU_PATH="$with_iwyu"
13874 AC_SUBST(IWYU_PATH)
13875 if test ! -z "$IWYU_PATH"; then
13876 if test ! -f "$IWYU_PATH"; then
13877 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13882 # Set up ILIB for MSVC build
13885 if test "$build_os" = "cygwin"; then
13887 if test -n "$JAVA_HOME"; then
13888 ILIB="$ILIB;$JAVA_HOME/lib"
13891 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13892 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13893 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13894 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13895 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13896 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13897 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13899 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13900 ucrtlibpath_formatted=$formatted_path
13901 ILIB="$ILIB;$ucrtlibpath_formatted"
13902 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13903 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13904 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13906 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13909 if test "$cross_compiling" != "yes"; then
13910 ILIB_FOR_BUILD="$ILIB"
13914 AC_SUBST(ILIB_FOR_BUILD)
13916 # ===================================================================
13917 # Creating bigger shared library to link against
13918 # ===================================================================
13919 AC_MSG_CHECKING([whether to create huge library])
13922 if test $_os = iOS -o $_os = Android; then
13923 # Never any point in mergelibs for these as we build just static
13924 # libraries anyway...
13925 enable_mergelibs=no
13928 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13929 if test $_os != Linux -a $_os != WINNT; then
13930 add_warning "--enable-mergelibs is not tested for this platform"
13933 AC_MSG_RESULT([yes])
13934 AC_DEFINE(ENABLE_MERGELIBS)
13936 AC_MSG_RESULT([no])
13938 AC_SUBST([MERGELIBS])
13940 dnl ===================================================================
13941 dnl icerun is a wrapper that stops us spawning tens of processes
13942 dnl locally - for tools that can't be executed on the compile cluster
13943 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13944 dnl ===================================================================
13945 AC_MSG_CHECKING([whether to use icerun wrapper])
13947 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13948 ICECREAM_RUN=icerun
13949 AC_MSG_RESULT([yes])
13951 AC_MSG_RESULT([no])
13953 AC_SUBST(ICECREAM_RUN)
13955 dnl ===================================================================
13956 dnl Setup the ICECC_VERSION for the build the same way it was set for
13957 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13958 dnl ===================================================================
13959 x_ICECC_VERSION=[\#]
13960 if test -n "$ICECC_VERSION" ; then
13963 AC_SUBST(x_ICECC_VERSION)
13964 AC_SUBST(ICECC_VERSION)
13966 dnl ===================================================================
13968 AC_MSG_CHECKING([MPL subset])
13971 if test "$enable_mpl_subset" = "yes"; then
13973 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13975 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13978 if test "$warn_report" = "true"; then
13979 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13981 if test "x$enable_postgresql_sdbc" != "xno"; then
13982 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13984 if test "$enable_lotuswordpro" = "yes"; then
13985 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13987 if test "$WITH_WEBDAV" = "neon"; then
13988 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13990 if test -n "$ENABLE_POPPLER"; then
13991 if test "x$SYSTEM_POPPLER" = "x"; then
13992 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13995 # cf. m4/libo_check_extension.m4
13996 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13997 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13999 for theme in $WITH_THEMES; do
14001 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14002 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14007 ENABLE_OPENGL_TRANSITIONS=
14009 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14010 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14014 AC_DEFINE(MPL_HAVE_SUBSET)
14015 AC_MSG_RESULT([only])
14017 AC_MSG_RESULT([no restrictions])
14019 AC_SUBST(MPL_SUBSET)
14021 dnl ===================================================================
14023 AC_MSG_CHECKING([formula logger])
14024 ENABLE_FORMULA_LOGGER=
14026 if test "x$enable_formula_logger" = "xyes"; then
14027 AC_MSG_RESULT([yes])
14028 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14029 ENABLE_FORMULA_LOGGER=TRUE
14030 elif test -n "$ENABLE_DBGUTIL" ; then
14031 AC_MSG_RESULT([yes])
14032 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14033 ENABLE_FORMULA_LOGGER=TRUE
14035 AC_MSG_RESULT([no])
14038 AC_SUBST(ENABLE_FORMULA_LOGGER)
14040 dnl ===================================================================
14041 dnl Checking for active Antivirus software.
14042 dnl ===================================================================
14044 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14045 AC_MSG_CHECKING([for active Antivirus software])
14046 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14047 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14048 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14049 AC_MSG_RESULT([found])
14050 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14051 echo $EICAR_STRING > $SRC_ROOT/eicar
14052 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14054 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14055 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14057 echo $EICAR_STRING > $BUILDDIR/eicar
14058 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14060 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14061 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14063 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"
14065 AC_MSG_RESULT([not found])
14068 AC_MSG_RESULT([n/a])
14072 dnl ===================================================================
14073 dnl Setting up the environment.
14074 dnl ===================================================================
14075 AC_MSG_NOTICE([setting up the build environment variables...])
14079 if test "$build_os" = "cygwin"; then
14080 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14081 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14082 ATL_INCLUDE="$COMPATH/atlmfc/include"
14083 elif test -d "$COMPATH/atlmfc/lib"; then
14084 ATL_LIB="$COMPATH/atlmfc/lib"
14085 ATL_INCLUDE="$COMPATH/atlmfc/include"
14087 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14088 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14090 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14091 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14092 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14094 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14095 PathFormat "/usr/bin/find.exe"
14096 FIND="$formatted_path"
14097 PathFormat "/usr/bin/sort.exe"
14098 SORT="$formatted_path"
14099 PathFormat "/usr/bin/grep.exe"
14100 WIN_GREP="$formatted_path"
14101 PathFormat "/usr/bin/ls.exe"
14102 WIN_LS="$formatted_path"
14103 PathFormat "/usr/bin/touch.exe"
14104 WIN_TOUCH="$formatted_path"
14110 AC_SUBST(ATL_INCLUDE)
14116 AC_SUBST(WIN_TOUCH)
14118 AC_SUBST(BUILD_TYPE)
14123 PERL="$formatted_path"
14126 if test -n "$TMPDIR"; then
14127 TEMP_DIRECTORY="$TMPDIR"
14129 TEMP_DIRECTORY="/tmp"
14131 if test "$build_os" = "cygwin"; then
14132 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14134 AC_SUBST(TEMP_DIRECTORY)
14136 # setup the PATH for the environment
14137 if test -n "$LO_PATH_FOR_BUILD"; then
14138 LO_PATH="$LO_PATH_FOR_BUILD"
14141 pathmunge "$MSVC_HOST_PATH" "before"
14149 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14150 if test "$ENABLE_JAVA" != ""; then
14151 pathmunge "$JAVA_HOME/bin" "after"
14156 # Win32 make needs native paths
14157 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14158 LO_PATH=`cygpath -p -m "$PATH"`
14160 if test "$WIN_BUILD_ARCH" = "x64"; then
14161 # needed for msi packaging
14162 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14164 # .NET 4.6 and higher don't have bin directory
14165 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14166 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14168 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14169 pathmunge "$CSC_PATH" "before"
14170 pathmunge "$MIDL_PATH" "before"
14171 pathmunge "$AL_PATH" "before"
14172 pathmunge "$MSVC_MULTI_PATH" "before"
14173 pathmunge "$MSVC_BUILD_PATH" "before"
14174 if test -n "$MSBUILD_PATH" ; then
14175 pathmunge "$MSBUILD_PATH" "before"
14177 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14178 if test "$ENABLE_JAVA" != ""; then
14179 if test -d "$JAVA_HOME/jre/bin/client"; then
14180 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14182 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14183 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14185 pathmunge "$JAVA_HOME/bin" "before"
14187 pathmunge "$MSVC_HOST_PATH" "before"
14191 pathmunge "/usr/css/bin" "before"
14192 if test "$ENABLE_JAVA" != ""; then
14193 pathmunge "$JAVA_HOME/bin" "after"
14201 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14202 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14203 x_LO_ELFCHECK_ALLOWLIST=
14205 x_LO_ELFCHECK_ALLOWLIST=[\#]
14207 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14208 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14212 # Generate a configuration sha256 we can use for deps
14213 if test -f config_host.mk; then
14214 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14216 if test -f config_host_lang.mk; then
14217 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14220 CFLAGS=$my_original_CFLAGS
14221 CXXFLAGS=$my_original_CXXFLAGS
14222 CPPFLAGS=$my_original_CPPFLAGS
14224 AC_CONFIG_LINKS([include:include])
14226 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14227 # BUILD platform configuration] - otherwise breaks cross building
14228 AC_CONFIG_FILES([config_host.mk
14229 config_host_lang.mk
14231 bin/bffvalidator.sh
14232 bin/odfvalidator.sh
14234 hardened_runtime.xcent
14235 instsetoo_native/util/openoffice.lst
14236 sysui/desktop/macosx/Info.plist
14237 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14238 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14239 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14240 AC_CONFIG_HEADERS([config_host/config_clang.h])
14241 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14242 AC_CONFIG_HEADERS([config_host/config_eot.h])
14243 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14244 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14245 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14246 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14247 AC_CONFIG_HEADERS([config_host/config_features.h])
14248 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14249 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14250 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14251 AC_CONFIG_HEADERS([config_host/config_folders.h])
14252 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14253 AC_CONFIG_HEADERS([config_host/config_gio.h])
14254 AC_CONFIG_HEADERS([config_host/config_global.h])
14255 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14256 AC_CONFIG_HEADERS([config_host/config_java.h])
14257 AC_CONFIG_HEADERS([config_host/config_langs.h])
14258 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14259 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14260 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14261 AC_CONFIG_HEADERS([config_host/config_locales.h])
14262 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14263 AC_CONFIG_HEADERS([config_host/config_oox.h])
14264 AC_CONFIG_HEADERS([config_host/config_options.h])
14265 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14266 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14267 AC_CONFIG_HEADERS([config_host/config_skia.h])
14268 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14269 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14270 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14271 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14272 AC_CONFIG_HEADERS([config_host/config_version.h])
14273 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14274 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14275 AC_CONFIG_HEADERS([config_host/config_python.h])
14276 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14279 if test "$CROSS_COMPILING" = TRUE; then
14280 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14283 # touch the config timestamp file
14284 if test ! -f config_host.mk.stamp; then
14285 echo > config_host.mk.stamp
14286 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14287 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14289 echo > config_host.mk.stamp
14292 # touch the config lang timestamp file
14293 if test ! -f config_host_lang.mk.stamp; then
14294 echo > config_host_lang.mk.stamp
14295 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14296 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14298 echo > config_host_lang.mk.stamp
14302 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14303 -a "$build_os" = "cygwin"; then
14306 ****************************************************************************
14308 Your make version is known to be horribly slow, and hard to debug
14309 problems with. To get a reasonably functional make please do:
14311 to install a pre-compiled binary make for Win32
14313 mkdir -p /opt/lo/bin
14315 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14316 cp make-4.2.1-msvc.exe make
14319 to install from source:
14320 place yourself in a working directory of you choice.
14322 git clone git://git.savannah.gnu.org/make.git
14324 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14325 set PATH=%PATH%;C:\Cygwin\bin
14326 [or Cygwin64, if that is what you have]
14327 cd path-to-make-repo-you-cloned-above
14328 build_w32.bat --without-guile
14330 should result in a WinRel/gnumake.exe.
14331 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14333 Then re-run autogen.sh
14335 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14336 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14339 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14340 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14346 ****************************************************************************
14351 To view some help, run:
14356 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14358 After the build has finished successfully, you can immediately run what you built using the command:
14361 if test $_os = Darwin; then
14362 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14364 echo instdir/program/soffice
14368 If you want to run the smoketest, run:
14374 if test -f warn; then
14379 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: