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.3.6.0.0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
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.])
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
211 if test "$have_WARNINGS" = "no"; then
212 echo "*************************************" > "$WARNINGS_FILE"
214 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
218 COLORWARN="* WARNING :"
221 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
232 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235 mac_git_path=`which git 2>/dev/null`
236 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237 mac_path="$mac_path:`dirname $mac_git_path`"
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241 mac_gpg_path=`which gpg 2>/dev/null`
242 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243 mac_path="$mac_path:`dirname $mac_gpg_path`"
251 echo "********************************************************************"
253 echo "* Running ${PACKAGE_NAME} build configuration."
255 echo "********************************************************************"
258 dnl ===================================================================
259 dnl checks build and host OSes
260 dnl do this before argument processing to allow for platform dependent defaults
261 dnl ===================================================================
263 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
264 # Linux on WSL) trust that.
265 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
266 ac_cv_host="x86_64-pc-wsl"
267 ac_cv_host_cpu="x86_64"
269 ac_cv_build="$ac_cv_host"
270 ac_cv_build_cpu="$ac_cv_host_cpu"
271 ac_cv_build_os="$ac_cv_host_os"
273 # Emulation of Cygwin's cygpath command for WSL.
276 if test -n "$UNITTEST_WSL_CYGPATH"; then
277 echo -n cygpath "$@" "==> "
280 # Cygwin's real cygpath has a plethora of options but we use only a few here.
283 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
286 while getopts dmuwlsp opt; do
289 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
299 if test $# -ne 1; then
300 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
307 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
308 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
310 if test -n "$opt_u"; then
311 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
316 # A Windows file in WSL format
317 input=$(wslpath -w "$input")
319 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
320 # Already in Windows format
323 input=$(wslpath -w "$input")
326 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
329 if test -n "$opt_d" -o -n "$opt_s"; then
330 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
332 if test -n "$opt_m"; then
333 input="${input//\\//}"
340 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
347 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
353 if test -n "$UNITTEST_WSL_CYGPATH"; then
356 # Nothing special with these file names, just arbitrary ones picked to test with
357 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
358 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
359 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
360 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
361 # At least on my machine for instance this file does have an 8.3 name
362 cygpath -d /mnt/c/windows/WindowsUpdate.log
363 # But for instance this one doesn't
364 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
365 cygpath -ws /mnt/c/windows/WindowsUpdate.log
366 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
367 cygpath -ms /mnt/c/windows/WindowsUpdate.log
369 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
370 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
379 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
383 # Use of PathFormat must be after AC_CANONICAL_BUILD above
385 printf "$formatted_path , $formatted_path_unix\n"
388 printf "$formatted_path , $formatted_path_unix\n"
390 PathFormat "$PROGRAMFILESX86"
391 printf "$formatted_path , $formatted_path_unix\n"
396 AC_MSG_CHECKING([for product name])
397 PRODUCTNAME="AC_PACKAGE_NAME"
398 if test -n "$with_product_name" -a "$with_product_name" != no; then
399 PRODUCTNAME="$with_product_name"
401 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
402 PRODUCTNAME="${PRODUCTNAME}Dev"
404 AC_MSG_RESULT([$PRODUCTNAME])
405 AC_SUBST(PRODUCTNAME)
406 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
407 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
409 dnl ===================================================================
410 dnl Our version is defined by the AC_INIT() at the top of this script.
411 dnl ===================================================================
413 AC_MSG_CHECKING([for package version])
414 if test -n "$with_package_version" -a "$with_package_version" != no; then
415 PACKAGE_VERSION="$with_package_version"
417 AC_MSG_RESULT([$PACKAGE_VERSION])
419 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
421 LIBO_VERSION_MAJOR=$1
422 LIBO_VERSION_MINOR=$2
423 LIBO_VERSION_MICRO=$3
424 LIBO_VERSION_PATCH=$4
426 LIBO_VERSION_SUFFIX=$5
428 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
429 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
430 # they get undoubled before actually passed to sed.
431 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
432 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
433 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
434 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
436 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
437 # three non-negative integers. Please find more information about CFBundleVersion at
438 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
440 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
441 # of at most three non-negative integers. Please find more information about
442 # CFBundleShortVersionString at
443 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
445 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
447 if test "$enable_macosx_sandbox" = yes; then
448 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
449 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
451 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
452 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
455 AC_SUBST(LIBO_VERSION_MAJOR)
456 AC_SUBST(LIBO_VERSION_MINOR)
457 AC_SUBST(LIBO_VERSION_MICRO)
458 AC_SUBST(LIBO_VERSION_PATCH)
459 AC_SUBST(LIBO_VERSION_SUFFIX)
460 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
461 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
462 AC_SUBST(MACOSX_BUNDLE_VERSION)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
466 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
467 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
469 LIBO_THIS_YEAR=`date +%Y`
470 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
472 dnl ===================================================================
474 dnl ===================================================================
475 AC_MSG_CHECKING([for product version])
476 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
477 AC_MSG_RESULT([$PRODUCTVERSION])
478 AC_SUBST(PRODUCTVERSION)
481 # AC_PROG_EGREP doesn't set GREP on all systems as well
482 AC_PATH_PROG(GREP, grep)
490 dnl ======================================
491 dnl Required GObject introspection version
492 dnl ======================================
493 INTROSPECTION_REQUIRED_VERSION=1.32.0
495 dnl ===================================================================
496 dnl Search all the common names for GNU Make
497 dnl ===================================================================
498 AC_MSG_CHECKING([for GNU Make])
500 # try to use our own make if it is available and GNUMAKE was not already defined
501 if test -z "$GNUMAKE"; then
502 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
503 GNUMAKE="$LODE_HOME/opt/bin/make"
504 elif test -x "/opt/lo/bin/make"; then
505 GNUMAKE="/opt/lo/bin/make"
510 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
511 if test -n "$a"; then
512 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
513 if test $? -eq 0; then
514 if test "$build_os" = "cygwin"; then
515 if test -n "$($a -v | grep 'Built for Windows')" ; then
516 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
517 GNUMAKE_WIN_NATIVE="TRUE"
528 AC_MSG_RESULT($GNUMAKE)
529 if test -z "$GNUMAKE"; then
530 AC_MSG_ERROR([not found. install GNU Make.])
532 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
533 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
537 win_short_path_for_make()
539 local short_path="$1"
540 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541 cygpath -sm "$short_path"
543 cygpath -u "$(cygpath -d "$short_path")"
548 if test "$build_os" = "cygwin"; then
549 PathFormat "$SRC_ROOT"
550 SRC_ROOT="$formatted_path"
551 PathFormat "$BUILDDIR"
552 BUILDDIR="$formatted_path"
554 AC_MSG_CHECKING(for explicit COMSPEC)
555 if test -z "$COMSPEC"; then
556 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
558 AC_MSG_RESULT([found: $COMSPEC])
565 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
566 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
567 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
569 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
570 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
573 # need sed in os checks...
574 AC_PATH_PROGS(SED, sed)
575 if test -z "$SED"; then
576 AC_MSG_ERROR([install sed to run this script])
579 # Set the ENABLE_LTO variable
580 # ===================================================================
581 AC_MSG_CHECKING([whether to use link-time optimization])
582 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
591 AC_ARG_ENABLE(fuzz-options,
592 AS_HELP_STRING([--enable-fuzz-options],
593 [Randomly enable or disable each of those configurable options
594 that are supposed to be freely selectable without interdependencies,
595 or where bad interaction from interdependencies is automatically avoided.])
598 dnl ===================================================================
599 dnl When building for Android, --with-android-ndk,
600 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
602 dnl ===================================================================
604 AC_ARG_WITH(android-ndk,
605 AS_HELP_STRING([--with-android-ndk],
606 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
609 AC_ARG_WITH(android-ndk-toolchain-version,
610 AS_HELP_STRING([--with-android-ndk-toolchain-version],
611 [Specify which toolchain version to use, of those present in the
612 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
613 with_android_ndk_toolchain_version=clang5.0)
615 AC_ARG_WITH(android-sdk,
616 AS_HELP_STRING([--with-android-sdk],
617 [Specify location of the Android SDK. Mandatory when building for Android.]),
620 AC_ARG_WITH(android-api-level,
621 AS_HELP_STRING([--with-android-api-level],
622 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
626 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
627 with_android_ndk="$SRC_ROOT/external/android-ndk"
629 if test -n "$with_android_ndk"; then
630 eval ANDROID_NDK_HOME=$with_android_ndk
632 # Set up a lot of pre-canned defaults
634 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
635 if test ! -f $ANDROID_NDK_HOME/source.properties; then
636 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
638 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
640 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
642 if test -z "$ANDROID_NDK_VERSION"; then
643 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
645 case $ANDROID_NDK_VERSION in
647 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
649 11.1.*|12.1.*|13.1.*|14.1.*)
650 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
652 16.*|17.*|18.*|19.*|20.*)
655 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
656 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
661 if test -n "$with_android_api_level" ; then
662 ANDROID_API_LEVEL="$with_android_api_level"
665 android_cpu=$host_cpu
666 if test $host_cpu = arm; then
667 android_platform_prefix=arm-linux-androideabi
668 android_gnu_prefix=$android_platform_prefix
669 LLVM_TRIPLE=armv7a-linux-androideabi
670 ANDROID_APP_ABI=armeabi-v7a
671 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
672 elif test $host_cpu = aarch64; then
673 android_platform_prefix=aarch64-linux-android
674 android_gnu_prefix=$android_platform_prefix
675 LLVM_TRIPLE=$android_platform_prefix
676 # minimum android version that supports aarch64
677 if test "$ANDROID_API_LEVEL" -lt "21" ; then
680 ANDROID_APP_ABI=arm64-v8a
681 elif test $host_cpu = x86_64; then
682 android_platform_prefix=x86_64-linux-android
683 android_gnu_prefix=$android_platform_prefix
684 LLVM_TRIPLE=$android_platform_prefix
685 # minimum android version that supports x86_64
687 ANDROID_APP_ABI=x86_64
689 # host_cpu is something like "i386" or "i686" I guess, NDK uses
690 # "x86" in some contexts
692 android_platform_prefix=$android_cpu
693 android_gnu_prefix=i686-linux-android
694 LLVM_TRIPLE=$android_gnu_prefix
698 case "$with_android_ndk_toolchain_version" in
700 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
703 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
706 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
708 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
709 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
710 # manage to link the (app-specific) single huge .so that is built for the app in
711 # android/source/ if there is debug information in a significant part of the object files.
712 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
713 # all objects have been built with debug information.)
716 android_HOST_TAG=linux-x86_64
719 android_HOST_TAG=darwin-x86_64
722 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
723 # ndk would also support windows and windows-x86_64
726 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
727 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
728 dnl TODO: NSS build uses it...
729 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
730 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
732 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
733 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
734 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
735 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
736 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
738 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
739 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
740 if test "$ENABLE_LTO" = TRUE; then
741 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
742 # $CC and $CXX when building external libraries
743 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
746 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
748 if test -z "$CC"; then
749 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
752 if test -z "$CXX"; then
753 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
757 AC_SUBST(ANDROID_NDK_HOME)
758 AC_SUBST(ANDROID_APP_ABI)
759 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
761 dnl ===================================================================
762 dnl --with-android-sdk
763 dnl ===================================================================
765 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
766 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
768 if test -n "$with_android_sdk"; then
769 eval ANDROID_SDK_HOME=$with_android_sdk
770 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
772 AC_SUBST(ANDROID_SDK_HOME)
774 AC_ARG_ENABLE([android-lok],
775 AS_HELP_STRING([--enable-android-lok],
776 [The Android app from the android/ subdir needs several tweaks all
777 over the place that break the LOK when used in the Online-based
778 Android app. This switch indicates that the intent of this build is
779 actually the Online-based, non-modified LOK.])
782 if test -n "$ANDROID_NDK_HOME" ; then
783 if test "$enable_android_lok" = yes; then
784 ENABLE_ANDROID_LOK=TRUE
785 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
786 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
788 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
791 AC_SUBST([ENABLE_ANDROID_LOK])
793 libo_FUZZ_ARG_ENABLE([android-editing],
794 AS_HELP_STRING([--enable-android-editing],
795 [Enable the experimental editing feature on Android.])
797 ENABLE_ANDROID_EDITING=
798 if test "$enable_android_editing" = yes; then
799 ENABLE_ANDROID_EDITING=TRUE
801 AC_SUBST([ENABLE_ANDROID_EDITING])
803 disable_database_connectivity_dependencies()
806 enable_firebird_sdbc=no
807 enable_mariadb_sdbc=no
808 enable_postgresql_sdbc=no
809 enable_report_builder=no
812 # ===================================================================
814 # Start initial platform setup
816 # The using_* variables reflect platform support and should not be
817 # changed after the "End initial platform setup" block.
818 # This is also true for most test_* variables.
819 # ===================================================================
827 # There is currently just iOS not using salplug, so this explicitly enables it.
828 # must: using_freetype_fontconfig
829 # may: using_headless_plugin defaults to $using_freetype_fontconfig
833 # Default values, as such probably valid just for Linux, set
834 # differently below just for Mac OSX, but at least better than
835 # hardcoding these as we used to do. Much of this is duplicated also
836 # in solenv for old build system and for gbuild, ideally we should
837 # perhaps define stuff like this only here in configure.ac?
839 LINKFLAGSSHL="-shared"
843 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
846 INSTROOTCONTENTSUFFIX=
849 HOST_PLATFORM="$host"
851 host_cpu_for_clang="$host_cpu"
856 using_freetype_fontconfig=yes
861 dnl ===========================================================
862 dnl Check whether we're using Solaris 10 - SPARC or Intel.
863 dnl ===========================================================
864 AC_MSG_CHECKING([the Solaris operating system release])
865 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
866 if test "$_os_release" -lt "10"; then
867 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
869 AC_MSG_RESULT([ok ($_os_release)])
872 dnl Check whether we're using a SPARC or i386 processor
873 AC_MSG_CHECKING([the processor type])
874 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
875 AC_MSG_RESULT([ok ($host_cpu)])
877 AC_MSG_ERROR([only SPARC and i386 processors are supported])
881 linux-gnu*|k*bsd*-gnu*|linux-musl*)
882 using_freetype_fontconfig=yes
887 if test "$enable_fuzzers" = yes; then
888 test_system_freetype=no
894 using_freetype_fontconfig=yes
900 # When building on Windows normally with MSVC under Cygwin,
901 # configure thinks that the host platform (the platform the
902 # built code will run on) is Cygwin, even if it obviously is
903 # Windows, which in Autoconf terminology is called
904 # "mingw32". (Which is misleading as MinGW is the name of the
905 # tool-chain, not an operating system.)
907 # Somewhat confusing, yes. But this configure script doesn't
908 # look at $host etc that much, it mostly uses its own $_os
909 # variable, set here in this case statement.
911 using_freetype_fontconfig=no
920 if test "$host_cpu" = "aarch64"; then
924 enable_firebird_sdbc=no
928 darwin*|macos*) # macOS
929 using_freetype_fontconfig=no
932 if test -n "$LODE_HOME" ; then
934 AC_MSG_NOTICE([sanitized the PATH to $PATH])
937 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
938 INSTROOTCONTENTSUFFIX=/Contents
939 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
940 # See comment above the case "$host_os"
941 LINKFLAGSSHL="-dynamiclib -single_module"
948 # -undefined error is the default
954 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
955 # the "macos" part so be sure to use aarch64-apple-darwin for now.
956 HOST_PLATFORM=aarch64-apple-darwin
960 # Apple's Clang uses "arm64"
961 host_cpu_for_clang=arm64
966 using_freetype_fontconfig=no
973 if test -n "$LODE_HOME" ; then
975 AC_MSG_NOTICE([sanitized the PATH to $PATH])
979 enable_mpl_subset=yes
980 enable_lotuswordpro=no
981 disable_database_connectivity_dependencies
984 enable_extension_integration=no
987 if test "$enable_ios_simulator" = "yes"; then
988 host=x86_64-apple-darwin
990 # See comment above the case "$host_os"
991 LINKFLAGSSHL="-dynamiclib -single_module"
998 # -undefined error is the default
1001 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1002 # part, so use aarch64-apple-darwin for now.
1003 HOST_PLATFORM=aarch64-apple-darwin
1005 # Apple's Clang uses "arm64"
1006 host_cpu_for_clang=arm64
1010 using_freetype_fontconfig=yes
1013 AC_MSG_CHECKING([the FreeBSD operating system release])
1014 if test -n "$with_os_version"; then
1015 OSVERSION="$with_os_version"
1017 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1019 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1020 AC_MSG_CHECKING([which thread library to use])
1021 if test "$OSVERSION" -lt "500016"; then
1022 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1023 PTHREAD_LIBS="-pthread"
1024 elif test "$OSVERSION" -lt "502102"; then
1025 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1026 PTHREAD_LIBS="-lc_r"
1029 PTHREAD_LIBS="-pthread"
1031 AC_MSG_RESULT([$PTHREAD_LIBS])
1036 using_freetype_fontconfig=yes
1040 PTHREAD_LIBS="-pthread -lpthread"
1045 using_freetype_fontconfig=yes
1048 test_gstreamer_1_0=no
1049 PTHREAD_LIBS=-pthread
1054 using_freetype_fontconfig=yes
1056 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057 PTHREAD_LIBS="-pthread"
1062 using_freetype_fontconfig=yes
1065 PTHREAD_LIBS="-pthread"
1070 using_freetype_fontconfig=yes
1071 using_headless_plugin=no
1075 test_system_freetype=no
1077 disable_database_connectivity_dependencies
1078 enable_lotuswordpro=no
1079 enable_mpl_subset=yes
1080 enable_cairo_canvas=no
1088 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1092 using_freetype_fontconfig=yes
1100 enable_postgresql_sdbc=no
1101 enable_firebird_sdbc=no
1106 using_freetype_fontconfig=yes
1109 enable_compiler_plugins=no
1112 enable_database_connectivity=no
1121 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1125 AC_SUBST(HOST_PLATFORM)
1127 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1128 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1131 # Set defaults, if not set by platform
1132 test "${test_cups+set}" = set || test_cups="$using_x11"
1133 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1134 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1135 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1136 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1137 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1138 # don't handle test_qt5, so it can disable test_kf5 later
1139 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1140 test "${test_randr+set}" = set || test_randr="$using_x11"
1141 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1142 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1144 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1145 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1146 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1148 # convenience / platform overriding "fixes"
1150 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1151 test "$test_kf5" = yes && test_qt5=yes
1152 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1153 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1154 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1156 # Keep in sync with the above $using_x11 depending test default list
1161 test_gstreamer_1_0=no
1172 test "$using_x11" = yes && USING_X11=TRUE
1174 if test "$using_freetype_fontconfig" = yes; then
1175 if test "$using_headless_plugin" = yes; then
1176 AC_DEFINE(ENABLE_HEADLESS)
1177 ENABLE_HEADLESS=TRUE
1181 AC_SUBST(ENABLE_HEADLESS)
1183 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1184 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1185 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1186 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1188 # ===================================================================
1190 # End initial platform setup
1192 # ===================================================================
1194 if test "$_os" = "Android" ; then
1195 # Verify that the NDK and SDK options are proper
1196 if test -z "$with_android_ndk"; then
1197 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1198 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1199 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1202 if test -z "$ANDROID_SDK_HOME"; then
1203 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1204 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1205 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1208 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1209 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1210 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1211 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1212 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1213 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1214 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1215 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1217 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1218 AC_MSG_WARN([android support repository not found - install with
1219 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1220 to allow the build to download the specified version of the android support libraries])
1221 add_warning "android support repository not found - install with"
1222 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1223 add_warning "to allow the build to download the specified version of the android support libraries"
1227 if test "$_os" = "AIX"; then
1228 AC_PATH_PROG(GAWK, gawk)
1229 if test -z "$GAWK"; then
1230 AC_MSG_ERROR([gawk not found in \$PATH])
1234 AC_SUBST(SDKDIRNAME)
1236 AC_SUBST(PTHREAD_CFLAGS)
1237 AC_SUBST(PTHREAD_LIBS)
1239 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1240 # By default use the ones specified by our build system,
1241 # but explicit override is possible.
1242 AC_MSG_CHECKING(for explicit AFLAGS)
1243 if test -n "$AFLAGS"; then
1244 AC_MSG_RESULT([$AFLAGS])
1250 AC_MSG_CHECKING(for explicit CFLAGS)
1251 if test -n "$CFLAGS"; then
1252 AC_MSG_RESULT([$CFLAGS])
1258 AC_MSG_CHECKING(for explicit CXXFLAGS)
1259 if test -n "$CXXFLAGS"; then
1260 AC_MSG_RESULT([$CXXFLAGS])
1266 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1267 if test -n "$OBJCFLAGS"; then
1268 AC_MSG_RESULT([$OBJCFLAGS])
1274 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1275 if test -n "$OBJCXXFLAGS"; then
1276 AC_MSG_RESULT([$OBJCXXFLAGS])
1282 AC_MSG_CHECKING(for explicit LDFLAGS)
1283 if test -n "$LDFLAGS"; then
1284 AC_MSG_RESULT([$LDFLAGS])
1294 AC_SUBST(OBJCXXFLAGS)
1298 AC_SUBST(x_CXXFLAGS)
1299 AC_SUBST(x_OBJCFLAGS)
1300 AC_SUBST(x_OBJCXXFLAGS)
1303 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1304 my_original_CFLAGS=$CFLAGS
1305 my_original_CXXFLAGS=$CXXFLAGS
1306 my_original_CPPFLAGS=$CPPFLAGS
1308 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1309 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1310 dnl AC_PROG_CC internally.
1311 if test "$_os" != "WINNT"; then
1312 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1316 if test -z "$CC_BASE"; then
1317 CC_BASE=`first_arg_basename "$CC"`
1321 if test "$_os" != "WINNT"; then
1322 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1326 AC_SUBST(ENDIANNESS)
1328 if test $_os != "WINNT"; then
1330 AC_SEARCH_LIBS([dlsym], [dl],
1331 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1332 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1335 AC_SUBST(DLOPEN_LIBS)
1337 # Check for a (GNU) backtrace implementation
1338 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1339 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1340 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1342 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1343 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1344 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1347 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1348 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1351 dnl ===================================================================
1352 dnl Sanity checks for Emscripten SDK setup
1353 dnl ===================================================================
1355 if test "$_os" = "Emscripten"; then
1357 if ! which emconfigure >/dev/null 2>&1; then
1358 AC_MSG_WARN([emconfigure must be in your \$PATH])
1361 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1362 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1365 if test $EMSCRIPTEN_ERROR -ne 0; then
1366 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1370 ###############################################################################
1371 # Extensions switches --enable/--disable
1372 ###############################################################################
1373 # By default these should be enabled unless having extra dependencies.
1374 # If there is extra dependency over configure options then the enable should
1375 # be automagic based on whether the requiring feature is enabled or not.
1376 # All this options change anything only with --enable-extension-integration.
1378 # The name of this option and its help string makes it sound as if
1379 # extensions are built anyway, just not integrated in the installer,
1380 # if you use --disable-extension-integration. Is that really the
1383 AC_ARG_ENABLE(ios-simulator,
1384 AS_HELP_STRING([--enable-ios-simulator],
1385 [build for iOS simulator])
1388 libo_FUZZ_ARG_ENABLE(extension-integration,
1389 AS_HELP_STRING([--disable-extension-integration],
1390 [Disable integration of the built extensions in the installer of the
1391 product. Use this switch to disable the integration.])
1394 AC_ARG_ENABLE(avmedia,
1395 AS_HELP_STRING([--disable-avmedia],
1396 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(database-connectivity,
1400 AS_HELP_STRING([--disable-database-connectivity],
1401 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1404 # This doesn't mean not building (or "integrating") extensions
1405 # (although it probably should; i.e. it should imply
1406 # --disable-extension-integration I guess), it means not supporting
1407 # any extension mechanism at all
1408 libo_FUZZ_ARG_ENABLE(extensions,
1409 AS_HELP_STRING([--disable-extensions],
1410 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1413 AC_ARG_ENABLE(scripting,
1414 AS_HELP_STRING([--disable-scripting],
1415 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1418 # This is mainly for Android and iOS, but could potentially be used in some
1419 # special case otherwise, too, so factored out as a separate setting
1421 AC_ARG_ENABLE(dynamic-loading,
1422 AS_HELP_STRING([--disable-dynamic-loading],
1423 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1426 libo_FUZZ_ARG_ENABLE(report-builder,
1427 AS_HELP_STRING([--disable-report-builder],
1428 [Disable the Report Builder.])
1431 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1432 AS_HELP_STRING([--enable-ext-wiki-publisher],
1433 [Enable the Wiki Publisher extension.])
1436 libo_FUZZ_ARG_ENABLE(lpsolve,
1437 AS_HELP_STRING([--disable-lpsolve],
1438 [Disable compilation of the lp solve solver ])
1440 libo_FUZZ_ARG_ENABLE(coinmp,
1441 AS_HELP_STRING([--disable-coinmp],
1442 [Disable compilation of the CoinMP solver ])
1445 libo_FUZZ_ARG_ENABLE(pdfimport,
1446 AS_HELP_STRING([--disable-pdfimport],
1447 [Disable building the PDF import feature.])
1450 libo_FUZZ_ARG_ENABLE(pdfium,
1451 AS_HELP_STRING([--disable-pdfium],
1452 [Disable building PDFium. Results in unsecure PDF signature verification.])
1455 libo_FUZZ_ARG_ENABLE(skia,
1456 AS_HELP_STRING([--disable-skia],
1457 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1460 ###############################################################################
1462 dnl ---------- *** ----------
1464 libo_FUZZ_ARG_ENABLE(mergelibs,
1465 AS_HELP_STRING([--enable-mergelibs],
1466 [Merge several of the smaller libraries into one big, "merged", one.])
1469 libo_FUZZ_ARG_ENABLE(breakpad,
1470 AS_HELP_STRING([--enable-breakpad],
1471 [Enables breakpad for crash reporting.])
1474 libo_FUZZ_ARG_ENABLE(crashdump,
1475 AS_HELP_STRING([--disable-crashdump],
1476 [Disable dump.ini and dump-file, when --enable-breakpad])
1479 AC_ARG_ENABLE(fetch-external,
1480 AS_HELP_STRING([--disable-fetch-external],
1481 [Disables fetching external tarballs from web sources.])
1484 AC_ARG_ENABLE(fuzzers,
1485 AS_HELP_STRING([--enable-fuzzers],
1486 [Enables building libfuzzer targets for fuzz testing.])
1489 libo_FUZZ_ARG_ENABLE(pch,
1490 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1491 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1492 Using 'system' will include only external headers, 'base' will add also headers
1493 from base modules, 'normal' will also add all headers except from the module built,
1494 'full' will use all suitable headers even from a module itself.])
1497 libo_FUZZ_ARG_ENABLE(epm,
1498 AS_HELP_STRING([--enable-epm],
1499 [LibreOffice includes self-packaging code, that requires epm, however epm is
1500 useless for large scale package building.])
1503 libo_FUZZ_ARG_ENABLE(odk,
1504 AS_HELP_STRING([--enable-odk],
1505 [Enable building the Office Development Kit, the part that extensions need to build against])
1508 AC_ARG_ENABLE(mpl-subset,
1509 AS_HELP_STRING([--enable-mpl-subset],
1510 [Don't compile any pieces which are not MPL or more liberally licensed])
1513 libo_FUZZ_ARG_ENABLE(evolution2,
1514 AS_HELP_STRING([--enable-evolution2],
1515 [Allows the built-in evolution 2 addressbook connectivity build to be
1519 AC_ARG_ENABLE(avahi,
1520 AS_HELP_STRING([--enable-avahi],
1521 [Determines whether to use Avahi to advertise Impress to remote controls.])
1524 libo_FUZZ_ARG_ENABLE(werror,
1525 AS_HELP_STRING([--enable-werror],
1526 [Turn warnings to errors. (Has no effect in modules where the treating
1527 of warnings as errors is disabled explicitly.)]),
1530 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1531 AS_HELP_STRING([--enable-assert-always-abort],
1532 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1535 libo_FUZZ_ARG_ENABLE(dbgutil,
1536 AS_HELP_STRING([--enable-dbgutil],
1537 [Provide debugging support from --enable-debug and include additional debugging
1538 utilities such as object counting or more expensive checks.
1539 This is the recommended option for developers.
1540 Note that this makes the build ABI incompatible, it is not possible to mix object
1541 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1543 libo_FUZZ_ARG_ENABLE(debug,
1544 AS_HELP_STRING([--enable-debug],
1545 [Include debugging information, disable compiler optimization and inlining plus
1546 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1548 libo_FUZZ_ARG_ENABLE(split-debug,
1549 AS_HELP_STRING([--disable-split-debug],
1550 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1551 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1553 libo_FUZZ_ARG_ENABLE(gdb-index,
1554 AS_HELP_STRING([--disable-gdb-index],
1555 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1556 The feature requires the gold or lld linker.]))
1558 libo_FUZZ_ARG_ENABLE(sal-log,
1559 AS_HELP_STRING([--enable-sal-log],
1560 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1562 libo_FUZZ_ARG_ENABLE(symbols,
1563 AS_HELP_STRING([--enable-symbols],
1564 [Generate debug information.
1565 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1566 otherwise. It is possible to explicitly specify gbuild build targets
1567 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1568 everything in the directory; there is no ordering, more specific overrides
1569 more general, and disabling takes precedence).
1570 Example: --enable-symbols="all -sw/ -Library_sc".]))
1572 libo_FUZZ_ARG_ENABLE(optimized,
1573 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1574 [Whether to compile with optimization flags.
1575 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1576 otherwise. Using 'debug' will try to use only optimizations that should
1577 not interfere with debugging. For Emscripten we default to optimized (-O1)
1578 debug build, as otherwise binaries become too large.]))
1580 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1581 AS_HELP_STRING([--disable-runtime-optimizations],
1582 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1583 JVM JIT) that are known to interact badly with certain dynamic analysis
1584 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1585 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1586 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1588 AC_ARG_WITH(valgrind,
1589 AS_HELP_STRING([--with-valgrind],
1590 [Make availability of Valgrind headers a hard requirement.]))
1592 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1593 AS_HELP_STRING([--enable-compiler-plugins],
1594 [Enable compiler plugins that will perform additional checks during
1595 building. Enabled automatically by --enable-dbgutil.
1596 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1597 COMPILER_PLUGINS_DEBUG=
1598 if test "$enable_compiler_plugins" = debug; then
1599 enable_compiler_plugins=yes
1600 COMPILER_PLUGINS_DEBUG=TRUE
1603 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1604 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1605 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1606 relevant in the --disable-compiler-plugins case.]))
1608 libo_FUZZ_ARG_ENABLE(ooenv,
1609 AS_HELP_STRING([--enable-ooenv],
1610 [Enable ooenv for the instdir installation.]))
1613 AS_HELP_STRING([--enable-lto],
1614 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1615 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1618 AC_ARG_ENABLE(python,
1619 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1620 [Enables or disables Python support at run-time.
1621 Also specifies what Python to use at build-time.
1622 'fully-internal' even forces the internal version for uses of Python
1624 On macOS the only choices are
1625 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1628 libo_FUZZ_ARG_ENABLE(gtk3,
1629 AS_HELP_STRING([--disable-gtk3],
1630 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1631 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1634 AS_HELP_STRING([--enable-gtk4],
1635 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1637 AC_ARG_ENABLE(introspection,
1638 AS_HELP_STRING([--enable-introspection],
1639 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1640 Linux distributions.)]))
1642 AC_ARG_ENABLE(split-app-modules,
1643 AS_HELP_STRING([--enable-split-app-modules],
1644 [Split file lists for app modules, e.g. base, calc.
1645 Has effect only with make distro-pack-install]),
1648 AC_ARG_ENABLE(split-opt-features,
1649 AS_HELP_STRING([--enable-split-opt-features],
1650 [Split file lists for some optional features, e.g. pyuno, testtool.
1651 Has effect only with make distro-pack-install]),
1654 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1655 AS_HELP_STRING([--disable-cairo-canvas],
1656 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1659 libo_FUZZ_ARG_ENABLE(dbus,
1660 AS_HELP_STRING([--disable-dbus],
1661 [Determines whether to enable features that depend on dbus.
1662 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1663 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1665 libo_FUZZ_ARG_ENABLE(sdremote,
1666 AS_HELP_STRING([--disable-sdremote],
1667 [Determines whether to enable Impress remote control (i.e. the server component).]),
1668 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1670 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1671 AS_HELP_STRING([--disable-sdremote-bluetooth],
1672 [Determines whether to build sdremote with bluetooth support.
1673 Requires dbus on Linux.]))
1675 libo_FUZZ_ARG_ENABLE(gio,
1676 AS_HELP_STRING([--disable-gio],
1677 [Determines whether to use the GIO support.]),
1678 ,test "${enable_gio+set}" = set || enable_gio=yes)
1681 AS_HELP_STRING([--enable-qt5],
1682 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1687 AS_HELP_STRING([--enable-qt6],
1688 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1693 AS_HELP_STRING([--enable-kf5],
1694 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1695 KF5 are available.]),
1698 AC_ARG_ENABLE(gtk3_kde5,
1699 AS_HELP_STRING([--enable-gtk3-kde5],
1700 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1701 platforms where Gtk3, Qt5 and Plasma is available.]),
1705 AS_HELP_STRING([--disable-gui],
1706 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1709 libo_FUZZ_ARG_ENABLE(randr,
1710 AS_HELP_STRING([--disable-randr],
1711 [Disable RandR support in the vcl project.]),
1712 ,test "${enable_randr+set}" = set || enable_randr=yes)
1714 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1715 AS_HELP_STRING([--disable-gstreamer-1-0],
1716 [Disable building with the gstreamer 1.0 avmedia backend.]),
1717 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1719 libo_FUZZ_ARG_ENABLE([eot],
1720 [AS_HELP_STRING([--enable-eot],
1721 [Enable support for Embedded OpenType fonts.])],
1722 ,test "${enable_eot+set}" = set || enable_eot=no)
1724 libo_FUZZ_ARG_ENABLE(cve-tests,
1725 AS_HELP_STRING([--disable-cve-tests],
1726 [Prevent CVE tests to be executed]),
1729 libo_FUZZ_ARG_ENABLE(chart-tests,
1730 AS_HELP_STRING([--enable-chart-tests],
1731 [Executes chart XShape tests. In a perfect world these tests would be
1732 stable and everyone could run them, in reality it is best to run them
1733 only on a few machines that are known to work and maintained by people
1734 who can judge if a test failure is a regression or not.]),
1737 AC_ARG_ENABLE(build-opensymbol,
1738 AS_HELP_STRING([--enable-build-opensymbol],
1739 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1740 fontforge installed.]),
1743 AC_ARG_ENABLE(dependency-tracking,
1744 AS_HELP_STRING([--enable-dependency-tracking],
1745 [Do not reject slow dependency extractors.])[
1746 --disable-dependency-tracking
1747 Disables generation of dependency information.
1748 Speed up one-time builds.],
1751 AC_ARG_ENABLE(icecream,
1752 AS_HELP_STRING([--enable-icecream],
1753 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1754 It defaults to /opt/icecream for the location of the icecream gcc/g++
1755 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1759 AS_HELP_STRING([--enable-ld=<linker>],
1760 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1761 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1762 If <linker> contains any ':', the part before the first ':' is used as the value of
1763 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1764 needed for Clang 12).]),
1767 libo_FUZZ_ARG_ENABLE(cups,
1768 AS_HELP_STRING([--disable-cups],
1769 [Do not build cups support.])
1772 AC_ARG_ENABLE(ccache,
1773 AS_HELP_STRING([--disable-ccache],
1774 [Do not try to use ccache automatically.
1775 By default we will try to detect if ccache is available; in that case if
1776 CC/CXX are not yet set, and --enable-icecream is not given, we
1777 attempt to use ccache. --disable-ccache disables ccache completely.
1778 Additionally ccache's depend mode is enabled if possible,
1779 use --enable-ccache=nodepend to enable ccache without depend mode.
1783 AC_ARG_ENABLE(z7-debug,
1784 AS_HELP_STRING([--enable-z7-debug],
1785 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1786 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1787 Enabled by default if ccache is detected.]))
1789 libo_FUZZ_ARG_ENABLE(online-update,
1790 AS_HELP_STRING([--enable-online-update],
1791 [Enable the online update service that will check for new versions of
1792 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1793 If the value is "mar", the experimental Mozilla-like update will be
1794 enabled instead of the traditional update mechanism.]),
1797 AC_ARG_WITH(update-config,
1798 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1799 [Path to the update config ini file]))
1801 libo_FUZZ_ARG_ENABLE(extension-update,
1802 AS_HELP_STRING([--disable-extension-update],
1803 [Disable possibility to update installed extensions.]),
1806 libo_FUZZ_ARG_ENABLE(release-build,
1807 AS_HELP_STRING([--enable-release-build],
1808 [Enable release build. Note that the "release build" choice is orthogonal to
1809 whether symbols are present, debug info is generated, or optimization
1811 See http://wiki.documentfoundation.org/Development/DevBuild]),
1814 AC_ARG_ENABLE(windows-build-signing,
1815 AS_HELP_STRING([--enable-windows-build-signing],
1816 [Enable signing of windows binaries (*.exe, *.dll)]),
1819 AC_ARG_ENABLE(silent-msi,
1820 AS_HELP_STRING([--enable-silent-msi],
1821 [Enable MSI with LIMITUI=1 (silent install).]),
1824 AC_ARG_ENABLE(macosx-code-signing,
1825 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1826 [Sign executables, dylibs, frameworks and the app bundle. If you
1827 don't provide an identity the first suitable certificate
1828 in your keychain is used.]),
1831 AC_ARG_ENABLE(macosx-package-signing,
1832 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1833 [Create a .pkg suitable for uploading to the Mac App Store and sign
1834 it. If you don't provide an identity the first suitable certificate
1835 in your keychain is used.]),
1838 AC_ARG_ENABLE(macosx-sandbox,
1839 AS_HELP_STRING([--enable-macosx-sandbox],
1840 [Make the app bundle run in a sandbox. Requires code signing.
1841 Is required by apps distributed in the Mac App Store, and implies
1842 adherence to App Store rules.]),
1845 AC_ARG_WITH(macosx-bundle-identifier,
1846 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1847 [Define the macOS bundle identifier. Default is the somewhat weird
1848 org.libreoffice.script ("script", huh?).]),
1849 ,with_macosx_bundle_identifier=org.libreoffice.script)
1851 AC_ARG_WITH(macosx-provisioning-profile,
1852 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1853 [Specify the path to a provisioning profile to use]),
1856 AC_ARG_WITH(product-name,
1857 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1858 [Define the product name. Default is AC_PACKAGE_NAME.]),
1859 ,with_product_name=$PRODUCTNAME)
1861 libo_FUZZ_ARG_ENABLE(community-flavor,
1862 AS_HELP_STRING([--disable-community-flavor],
1863 [Disable the Community branding.]),
1866 AC_ARG_WITH(package-version,
1867 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1868 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1871 libo_FUZZ_ARG_ENABLE(readonly-installset,
1872 AS_HELP_STRING([--enable-readonly-installset],
1873 [Prevents any attempts by LibreOffice to write into its installation. That means
1874 at least that no "system-wide" extensions can be added. Partly experimental work in
1875 progress, probably not fully implemented. Always enabled for macOS.]),
1878 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1879 AS_HELP_STRING([--disable-mariadb-sdbc],
1880 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1883 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1884 AS_HELP_STRING([--disable-postgresql-sdbc],
1885 [Disable the build of the PostgreSQL-SDBC driver.])
1888 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1889 AS_HELP_STRING([--disable-lotuswordpro],
1890 [Disable the build of the Lotus Word Pro filter.]),
1891 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1893 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1894 AS_HELP_STRING([--disable-firebird-sdbc],
1895 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1896 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1898 AC_ARG_ENABLE(bogus-pkg-config,
1899 AS_HELP_STRING([--enable-bogus-pkg-config],
1900 [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.]),
1903 AC_ARG_ENABLE(openssl,
1904 AS_HELP_STRING([--disable-openssl],
1905 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1906 components will either use GNUTLS or NSS. Work in progress,
1907 use only if you are hacking on it.]),
1908 ,enable_openssl=yes)
1910 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1911 AS_HELP_STRING([--enable-cipher-openssl-backend],
1912 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1913 Requires --enable-openssl.]))
1916 AS_HELP_STRING([--disable-nss],
1917 [Disable using NSS. If disabled,
1918 components will either use GNUTLS or openssl. Work in progress,
1919 use only if you are hacking on it.]),
1922 AC_ARG_ENABLE(library-bin-tar,
1923 AS_HELP_STRING([--enable-library-bin-tar],
1924 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1925 Some libraries can save their build result in a tarball
1926 stored in TARFILE_LOCATION. That binary tarball is
1927 uniquely identified by the source tarball,
1928 the content of the config_host.mk file and the content
1929 of the top-level directory in core for that library
1930 If this option is enabled, then if such a tarfile exist, it will be untarred
1931 instead of the source tarfile, and the build step will be skipped for that
1933 If a proper tarfile does not exist, then the normal source-based
1934 build is done for that library and a proper binary tarfile is created
1935 for the next time.]),
1938 AC_ARG_ENABLE(dconf,
1939 AS_HELP_STRING([--disable-dconf],
1940 [Disable the dconf configuration backend (enabled by default where
1943 libo_FUZZ_ARG_ENABLE(formula-logger,
1945 [--enable-formula-logger],
1946 [Enable formula logger for logging formula calculation flow in Calc.]
1951 AS_HELP_STRING([--disable-ldap],
1952 [Disable LDAP support.]),
1955 AC_ARG_ENABLE(opencl,
1956 AS_HELP_STRING([--disable-opencl],
1957 [Disable OpenCL support.]),
1960 libo_FUZZ_ARG_ENABLE(librelogo,
1961 AS_HELP_STRING([--disable-librelogo],
1962 [Do not build LibreLogo.]),
1963 ,enable_librelogo=yes)
1966 AS_HELP_STRING([--disable-cmis],
1967 [Disable CMIS support.]),
1971 AS_HELP_STRING([--disable-curl],
1972 [Disable CURL support.]),
1975 AC_ARG_ENABLE(wasm-strip,
1976 AS_HELP_STRING([--enable-wasm-strip],
1977 [Strip the static build like for WASM/emscripten platform.]),
1978 ,enable_wasm_strip=yes)
1980 AC_ARG_ENABLE(xmlhelp,
1981 AS_HELP_STRING([--disable-xmlhelp],
1982 [Disable XML help support]),
1983 ,enable_xmlhelp=yes)
1986 dnl ===================================================================
1987 dnl Optional Packages (--with/without-)
1988 dnl ===================================================================
1990 AC_ARG_WITH(gcc-home,
1991 AS_HELP_STRING([--with-gcc-home],
1992 [Specify the location of gcc/g++ manually. This can be used in conjunction
1993 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1994 non-default path.]),
1997 AC_ARG_WITH(gnu-patch,
1998 AS_HELP_STRING([--with-gnu-patch],
1999 [Specify location of GNU patch on Solaris or FreeBSD.]),
2002 AC_ARG_WITH(build-platform-configure-options,
2003 AS_HELP_STRING([--with-build-platform-configure-options],
2004 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2008 AS_HELP_STRING([--with-gnu-cp],
2009 [Specify location of GNU cp on Solaris or FreeBSD.]),
2012 AC_ARG_WITH(external-tar,
2013 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2014 [Specify an absolute path of where to find (and store) tarfiles.]),
2015 TARFILE_LOCATION=$withval ,
2018 AC_ARG_WITH(referenced-git,
2019 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2020 [Specify another checkout directory to reference. This makes use of
2021 git submodule update --reference, and saves a lot of diskspace
2022 when having multiple trees side-by-side.]),
2023 GIT_REFERENCE_SRC=$withval ,
2026 AC_ARG_WITH(linked-git,
2027 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2028 [Specify a directory where the repositories of submodules are located.
2029 This uses a method similar to git-new-workdir to get submodules.]),
2030 GIT_LINK_SRC=$withval ,
2033 AC_ARG_WITH(galleries,
2034 AS_HELP_STRING([--with-galleries],
2035 [Specify how galleries should be built. It is possible either to
2036 build these internally from source ("build"),
2037 or to disable them ("no")]),
2041 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2042 [Choose which themes to include. By default those themes with an '*' are included.
2043 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2044 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2047 libo_FUZZ_ARG_WITH(helppack-integration,
2048 AS_HELP_STRING([--without-helppack-integration],
2049 [It will not integrate the helppacks to the installer
2050 of the product. Please use this switch to use the online help
2051 or separate help packages.]),
2054 libo_FUZZ_ARG_WITH(fonts,
2055 AS_HELP_STRING([--without-fonts],
2056 [LibreOffice includes some third-party fonts to provide a reliable basis for
2057 help content, templates, samples, etc. When these fonts are already
2058 known to be available on the system then you should use this option.]),
2062 AS_HELP_STRING([--with-epm],
2063 [Decides which epm to use. Default is to use the one from the system if
2064 one is built. When either this is not there or you say =internal epm
2068 AC_ARG_WITH(package-format,
2069 AS_HELP_STRING([--with-package-format],
2070 [Specify package format(s) for LibreOffice installation sets. The
2071 implicit --without-package-format leads to no installation sets being
2072 generated. Possible values: aix, archive, bsd, deb, dmg,
2073 installed, msi, pkg, and rpm.
2074 Example: --with-package-format='deb rpm']),
2078 AS_HELP_STRING([--with-tls],
2079 [Decides which TLS/SSL and cryptographic implementations to use for
2080 LibreOffice's code. Notice that this doesn't apply for depending
2081 libraries like "neon", for example. Default is to use NSS
2082 although OpenSSL is also possible. Notice that selecting NSS restricts
2083 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2084 restrict by now the usage of NSS in LO's code. Possible values:
2085 openssl, nss. Example: --with-tls="nss"]),
2088 AC_ARG_WITH(system-libs,
2089 AS_HELP_STRING([--with-system-libs],
2090 [Use libraries already on system -- enables all --with-system-* flags.]),
2093 AC_ARG_WITH(system-bzip2,
2094 AS_HELP_STRING([--with-system-bzip2],
2095 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2096 [with_system_bzip2="$with_system_libs"])
2098 AC_ARG_WITH(system-headers,
2099 AS_HELP_STRING([--with-system-headers],
2100 [Use headers already on system -- enables all --with-system-* flags for
2101 external packages whose headers are the only entities used i.e.
2102 boost/odbc/sane-header(s).]),,
2103 [with_system_headers="$with_system_libs"])
2105 AC_ARG_WITH(system-jars,
2106 AS_HELP_STRING([--without-system-jars],
2107 [When building with --with-system-libs, also the needed jars are expected
2108 on the system. Use this to disable that]),,
2109 [with_system_jars="$with_system_libs"])
2111 AC_ARG_WITH(system-cairo,
2112 AS_HELP_STRING([--with-system-cairo],
2113 [Use cairo libraries already on system. Happens automatically for
2114 (implicit) --enable-gtk3.]))
2116 AC_ARG_WITH(system-epoxy,
2117 AS_HELP_STRING([--with-system-epoxy],
2118 [Use epoxy libraries already on system. Happens automatically for
2119 (implicit) --enable-gtk3.]),,
2120 [with_system_epoxy="$with_system_libs"])
2122 AC_ARG_WITH(myspell-dicts,
2123 AS_HELP_STRING([--with-myspell-dicts],
2124 [Adds myspell dictionaries to the LibreOffice installation set]),
2127 AC_ARG_WITH(system-dicts,
2128 AS_HELP_STRING([--without-system-dicts],
2129 [Do not use dictionaries from system paths.]),
2132 AC_ARG_WITH(external-dict-dir,
2133 AS_HELP_STRING([--with-external-dict-dir],
2134 [Specify external dictionary dir.]),
2137 AC_ARG_WITH(external-hyph-dir,
2138 AS_HELP_STRING([--with-external-hyph-dir],
2139 [Specify external hyphenation pattern dir.]),
2142 AC_ARG_WITH(external-thes-dir,
2143 AS_HELP_STRING([--with-external-thes-dir],
2144 [Specify external thesaurus dir.]),
2147 AC_ARG_WITH(system-zlib,
2148 AS_HELP_STRING([--with-system-zlib],
2149 [Use zlib already on system.]),,
2150 [with_system_zlib=auto])
2152 AC_ARG_WITH(system-jpeg,
2153 AS_HELP_STRING([--with-system-jpeg],
2154 [Use jpeg already on system.]),,
2155 [with_system_jpeg="$with_system_libs"])
2157 AC_ARG_WITH(system-clucene,
2158 AS_HELP_STRING([--with-system-clucene],
2159 [Use clucene already on system.]),,
2160 [with_system_clucene="$with_system_libs"])
2162 AC_ARG_WITH(system-expat,
2163 AS_HELP_STRING([--with-system-expat],
2164 [Use expat already on system.]),,
2165 [with_system_expat="$with_system_libs"])
2167 AC_ARG_WITH(system-libxml,
2168 AS_HELP_STRING([--with-system-libxml],
2169 [Use libxml/libxslt already on system.]),,
2170 [with_system_libxml=auto])
2172 AC_ARG_WITH(system-icu,
2173 AS_HELP_STRING([--with-system-icu],
2174 [Use icu already on system.]),,
2175 [with_system_icu="$with_system_libs"])
2177 AC_ARG_WITH(system-ucpp,
2178 AS_HELP_STRING([--with-system-ucpp],
2179 [Use ucpp already on system.]),,
2182 AC_ARG_WITH(system-openldap,
2183 AS_HELP_STRING([--with-system-openldap],
2184 [Use the OpenLDAP LDAP SDK already on system.]),,
2185 [with_system_openldap="$with_system_libs"])
2187 libo_FUZZ_ARG_ENABLE(poppler,
2188 AS_HELP_STRING([--disable-poppler],
2189 [Disable building Poppler.])
2192 AC_ARG_WITH(system-poppler,
2193 AS_HELP_STRING([--with-system-poppler],
2194 [Use system poppler (only needed for PDF import).]),,
2195 [with_system_poppler="$with_system_libs"])
2197 AC_ARG_WITH(system-abseil,
2198 AS_HELP_STRING([--with-system-abseil],
2199 [Use the abseil libraries already on system.]),,
2200 [with_system_abseil="$with_system_libs"])
2202 AC_ARG_WITH(system-openjpeg,
2203 AS_HELP_STRING([--with-system-openjpeg],
2204 [Use the OpenJPEG library already on system.]),,
2205 [with_system_openjpeg="$with_system_libs"])
2207 libo_FUZZ_ARG_ENABLE(gpgmepp,
2208 AS_HELP_STRING([--disable-gpgmepp],
2209 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2212 AC_ARG_WITH(system-gpgmepp,
2213 AS_HELP_STRING([--with-system-gpgmepp],
2214 [Use gpgmepp already on system]),,
2215 [with_system_gpgmepp="$with_system_libs"])
2217 AC_ARG_WITH(system-mariadb,
2218 AS_HELP_STRING([--with-system-mariadb],
2219 [Use MariaDB/MySQL libraries already on system.]),,
2220 [with_system_mariadb="$with_system_libs"])
2222 AC_ARG_ENABLE(bundle-mariadb,
2223 AS_HELP_STRING([--enable-bundle-mariadb],
2224 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2227 AC_ARG_WITH(system-postgresql,
2228 AS_HELP_STRING([--with-system-postgresql],
2229 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2230 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2231 [with_system_postgresql="$with_system_libs"])
2233 AC_ARG_WITH(libpq-path,
2234 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2235 [Use this PostgreSQL C interface (libpq) installation for building
2236 the PostgreSQL-SDBC extension.]),
2239 AC_ARG_WITH(system-firebird,
2240 AS_HELP_STRING([--with-system-firebird],
2241 [Use Firebird libraries already on system, for building the Firebird-SDBC
2242 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2243 [with_system_firebird="$with_system_libs"])
2245 AC_ARG_WITH(system-libtommath,
2246 AS_HELP_STRING([--with-system-libtommath],
2247 [Use libtommath already on system]),,
2248 [with_system_libtommath="$with_system_libs"])
2250 AC_ARG_WITH(system-hsqldb,
2251 AS_HELP_STRING([--with-system-hsqldb],
2252 [Use hsqldb already on system.]))
2254 AC_ARG_WITH(hsqldb-jar,
2255 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2256 [Specify path to jarfile manually.]),
2257 HSQLDB_JAR=$withval)
2259 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2260 AS_HELP_STRING([--disable-scripting-beanshell],
2261 [Disable support for scripts in BeanShell.]),
2265 AC_ARG_WITH(system-beanshell,
2266 AS_HELP_STRING([--with-system-beanshell],
2267 [Use beanshell already on system.]),,
2268 [with_system_beanshell="$with_system_jars"])
2270 AC_ARG_WITH(beanshell-jar,
2271 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2272 [Specify path to jarfile manually.]),
2275 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2276 AS_HELP_STRING([--disable-scripting-javascript],
2277 [Disable support for scripts in JavaScript.]),
2281 AC_ARG_WITH(system-rhino,
2282 AS_HELP_STRING([--with-system-rhino],
2283 [Use rhino already on system.]),,)
2284 # [with_system_rhino="$with_system_jars"])
2285 # Above is not used as we have different debug interface
2286 # patched into internal rhino. This code needs to be fixed
2287 # before we can enable it by default.
2289 AC_ARG_WITH(rhino-jar,
2290 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2291 [Specify path to jarfile manually.]),
2294 AC_ARG_WITH(system-jfreereport,
2295 AS_HELP_STRING([--with-system-jfreereport],
2296 [Use JFreeReport already on system.]),,
2297 [with_system_jfreereport="$with_system_jars"])
2299 AC_ARG_WITH(sac-jar,
2300 AS_HELP_STRING([--with-sac-jar=JARFILE],
2301 [Specify path to jarfile manually.]),
2304 AC_ARG_WITH(libxml-jar,
2305 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2306 [Specify path to jarfile manually.]),
2307 LIBXML_JAR=$withval)
2309 AC_ARG_WITH(flute-jar,
2310 AS_HELP_STRING([--with-flute-jar=JARFILE],
2311 [Specify path to jarfile manually.]),
2314 AC_ARG_WITH(jfreereport-jar,
2315 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2316 [Specify path to jarfile manually.]),
2317 JFREEREPORT_JAR=$withval)
2319 AC_ARG_WITH(liblayout-jar,
2320 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2321 [Specify path to jarfile manually.]),
2322 LIBLAYOUT_JAR=$withval)
2324 AC_ARG_WITH(libloader-jar,
2325 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2326 [Specify path to jarfile manually.]),
2327 LIBLOADER_JAR=$withval)
2329 AC_ARG_WITH(libformula-jar,
2330 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2331 [Specify path to jarfile manually.]),
2332 LIBFORMULA_JAR=$withval)
2334 AC_ARG_WITH(librepository-jar,
2335 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2336 [Specify path to jarfile manually.]),
2337 LIBREPOSITORY_JAR=$withval)
2339 AC_ARG_WITH(libfonts-jar,
2340 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2341 [Specify path to jarfile manually.]),
2342 LIBFONTS_JAR=$withval)
2344 AC_ARG_WITH(libserializer-jar,
2345 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2346 [Specify path to jarfile manually.]),
2347 LIBSERIALIZER_JAR=$withval)
2349 AC_ARG_WITH(libbase-jar,
2350 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2351 [Specify path to jarfile manually.]),
2352 LIBBASE_JAR=$withval)
2354 AC_ARG_WITH(system-odbc,
2355 AS_HELP_STRING([--with-system-odbc],
2356 [Use the odbc headers already on system.]),,
2357 [with_system_odbc="auto"])
2359 AC_ARG_WITH(system-sane,
2360 AS_HELP_STRING([--with-system-sane],
2361 [Use sane.h already on system.]),,
2362 [with_system_sane="$with_system_headers"])
2364 AC_ARG_WITH(system-bluez,
2365 AS_HELP_STRING([--with-system-bluez],
2366 [Use bluetooth.h already on system.]),,
2367 [with_system_bluez="$with_system_headers"])
2369 AC_ARG_WITH(system-curl,
2370 AS_HELP_STRING([--with-system-curl],
2371 [Use curl already on system.]),,
2372 [with_system_curl=auto])
2374 AC_ARG_WITH(system-boost,
2375 AS_HELP_STRING([--with-system-boost],
2376 [Use boost already on system.]),,
2377 [with_system_boost="$with_system_headers"])
2379 AC_ARG_WITH(system-cuckoo,
2380 AS_HELP_STRING([--with-system-cuckoo],
2381 [Use libcuckoo already on system.]),,
2382 [with_system_cuckoo="$with_system_headers"])
2384 AC_ARG_WITH(system-glm,
2385 AS_HELP_STRING([--with-system-glm],
2386 [Use glm already on system.]),,
2387 [with_system_glm="$with_system_headers"])
2389 AC_ARG_WITH(system-hunspell,
2390 AS_HELP_STRING([--with-system-hunspell],
2391 [Use libhunspell already on system.]),,
2392 [with_system_hunspell="$with_system_libs"])
2394 libo_FUZZ_ARG_ENABLE(zxing,
2395 AS_HELP_STRING([--disable-zxing],
2396 [Disable use of zxing external library.]))
2398 AC_ARG_WITH(system-zxing,
2399 AS_HELP_STRING([--with-system-zxing],
2400 [Use libzxing already on system.]),,
2401 [with_system_zxing="$with_system_libs"])
2403 AC_ARG_WITH(system-box2d,
2404 AS_HELP_STRING([--with-system-box2d],
2405 [Use box2d already on system.]),,
2406 [with_system_box2d="$with_system_libs"])
2408 AC_ARG_WITH(system-mythes,
2409 AS_HELP_STRING([--with-system-mythes],
2410 [Use mythes already on system.]),,
2411 [with_system_mythes="$with_system_libs"])
2413 AC_ARG_WITH(system-altlinuxhyph,
2414 AS_HELP_STRING([--with-system-altlinuxhyph],
2415 [Use ALTLinuxhyph already on system.]),,
2416 [with_system_altlinuxhyph="$with_system_libs"])
2418 AC_ARG_WITH(system-lpsolve,
2419 AS_HELP_STRING([--with-system-lpsolve],
2420 [Use lpsolve already on system.]),,
2421 [with_system_lpsolve="$with_system_libs"])
2423 AC_ARG_WITH(system-coinmp,
2424 AS_HELP_STRING([--with-system-coinmp],
2425 [Use CoinMP already on system.]),,
2426 [with_system_coinmp="$with_system_libs"])
2428 AC_ARG_WITH(system-liblangtag,
2429 AS_HELP_STRING([--with-system-liblangtag],
2430 [Use liblangtag library already on system.]),,
2431 [with_system_liblangtag="$with_system_libs"])
2434 AS_HELP_STRING([--with-webdav],
2435 [Specify which library to use for webdav implementation.
2436 Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2437 Example: --with-webdav="serf"]))
2439 AC_ARG_WITH(linker-hash-style,
2440 AS_HELP_STRING([--with-linker-hash-style],
2441 [Use linker with --hash-style=<style> when linking shared objects.
2442 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2443 if supported on the build system, and "sysv" otherwise.]))
2445 AC_ARG_WITH(jdk-home,
2446 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2447 [If you have installed JDK 9 or later on your system please supply the
2448 path here. Note that this is not the location of the java command but the
2449 location of the entire distribution. In case of cross-compiling, this
2450 is the JDK of the host os. Use --with-build-platform-configure-options
2451 to point to a different build platform JDK.]),
2455 AS_HELP_STRING([--with-help],
2456 [Enable the build of help. There is a special parameter "common" that
2457 can be used to bundle only the common part, .e.g help-specific icons.
2458 This is useful when you build the helpcontent separately.])
2460 Usage: --with-help build the old local help
2461 --without-help no local help (default)
2462 --with-help=html build the new HTML local help
2463 --with-help=online build the new HTML online help
2467 AC_ARG_WITH(omindex,
2468 AS_HELP_STRING([--with-omindex],
2469 [Enable the support of xapian-omega index for online help.])
2471 Usage: --with-omindex=server prepare the pages for omindex
2472 but let xapian-omega be built in server.
2473 --with-omindex=noxap do not prepare online pages
2478 libo_FUZZ_ARG_WITH(java,
2479 AS_HELP_STRING([--with-java=<java command>],
2480 [Specify the name of the Java interpreter command. Typically "java"
2481 which is the default.
2483 To build without support for Java components, applets, accessibility
2484 or the XML filters written in Java, use --without-java or --with-java=no.]),
2485 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2486 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2489 AC_ARG_WITH(jvm-path,
2490 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2491 [Use a specific JVM search path at runtime.
2492 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2495 AC_ARG_WITH(ant-home,
2496 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2497 [If you have installed Apache Ant on your system, please supply the path here.
2498 Note that this is not the location of the Ant binary but the location
2499 of the entire distribution.]),
2502 AC_ARG_WITH(symbol-config,
2503 AS_HELP_STRING([--with-symbol-config],
2504 [Configuration for the crashreport symbol upload]),
2506 [with_symbol_config=no])
2508 AC_ARG_WITH(export-validation,
2509 AS_HELP_STRING([--without-export-validation],
2510 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2511 ,with_export_validation=auto)
2513 AC_ARG_WITH(bffvalidator,
2514 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2515 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2516 Requires installed Microsoft Office Binary File Format Validator.
2517 Note: export-validation (--with-export-validation) is required to be turned on.
2518 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2519 ,with_bffvalidator=no)
2521 libo_FUZZ_ARG_WITH(junit,
2522 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2523 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2524 --without-junit disables those tests. Not relevant in the --without-java case.]),
2527 AC_ARG_WITH(hamcrest,
2528 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2529 [Specifies the hamcrest jar file to use for JUnit-based tests.
2530 --without-junit disables those tests. Not relevant in the --without-java case.]),
2533 AC_ARG_WITH(perl-home,
2534 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2535 [If you have installed Perl 5 Distribution, on your system, please
2536 supply the path here. Note that this is not the location of the Perl
2537 binary but the location of the entire distribution.]),
2540 libo_FUZZ_ARG_WITH(doxygen,
2542 [--with-doxygen=<absolute path to doxygen executable>],
2543 [Specifies the doxygen executable to use when generating ODK C/C++
2544 documentation. --without-doxygen disables generation of ODK C/C++
2545 documentation. Not relevant in the --disable-odk case.]),
2548 AC_ARG_WITH(visual-studio,
2549 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2550 [Specify which Visual Studio version to use in case several are
2551 installed. Currently 2019 (default) and 2022 are supported.]),
2554 AC_ARG_WITH(windows-sdk,
2555 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2556 [Specify which Windows SDK, or "Windows Kit", version to use
2557 in case the one that came with the selected Visual Studio
2558 is not what you want for some reason. Note that not all compiler/SDK
2559 combinations are supported. The intent is that this option should not
2564 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2565 [Use this option to build LibreOffice with additional UI language support.
2566 English (US) is always included by default.
2567 Separate multiple languages with space.
2568 For all languages, use --with-lang=ALL.]),
2571 AC_ARG_WITH(locales,
2572 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2573 [Use this option to limit the locale information built in.
2574 Separate multiple locales with space.
2575 Very experimental and might well break stuff.
2576 Just a desperate measure to shrink code and data size.
2577 By default all the locales available is included.
2578 This option is completely unrelated to --with-lang.])
2580 Affects also our character encoding conversion
2581 tables for encodings mainly targeted for a
2582 particular locale, like EUC-CN and EUC-TW for
2583 zh, ISO-2022-JP for ja.
2585 Affects also our add-on break iterator data for
2588 For the default, all locales, don't use this switch at all.
2589 Specifying just the language part of a locale means all matching
2590 locales will be included.
2594 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2595 libo_FUZZ_ARG_WITH(krb5,
2596 AS_HELP_STRING([--with-krb5],
2597 [Enable MIT Kerberos 5 support in modules that support it.
2598 By default automatically enabled on platforms
2599 where a good system Kerberos 5 is available.]),
2602 libo_FUZZ_ARG_WITH(gssapi,
2603 AS_HELP_STRING([--with-gssapi],
2604 [Enable GSSAPI support in modules that support it.
2605 By default automatically enabled on platforms
2606 where a good system GSSAPI is available.]),
2610 AS_HELP_STRING([--with-iwyu],
2611 [Use given IWYU binary path to check unneeded includes instead of building.
2612 Use only if you are hacking on it.]),
2615 libo_FUZZ_ARG_WITH(lxml,
2616 AS_HELP_STRING([--without-lxml],
2617 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2618 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2619 report widget classes and ids.]),
2622 libo_FUZZ_ARG_WITH(latest-c++,
2623 AS_HELP_STRING([--with-latest-c++],
2624 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2625 published standard.]),,
2626 [with_latest_c__=no])
2628 dnl ===================================================================
2630 dnl ===================================================================
2632 AC_ARG_WITH(branding,
2633 AS_HELP_STRING([--with-branding=/path/to/images],
2634 [Use given path to retrieve branding images set.])
2636 Search for intro.png about.svg and logo.svg.
2637 If any is missing, default ones will be used instead.
2639 Search also progress.conf for progress
2640 settings on intro screen :
2642 PROGRESSBARCOLOR="255,255,255" Set color of
2643 progress bar. Comma separated RGB decimal values.
2644 PROGRESSSIZE="407,6" Set size of progress bar.
2645 Comma separated decimal values (width, height).
2646 PROGRESSPOSITION="61,317" Set position of progress
2647 bar from left,top. Comma separated decimal values.
2648 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2649 bar frame. Comma separated RGB decimal values.
2650 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2651 bar text. Comma separated RGB decimal values.
2652 PROGRESSTEXTBASELINE="287" Set vertical position of
2653 progress bar text from top. Decimal value.
2655 Default values will be used if not found.
2660 AC_ARG_WITH(extra-buildid,
2661 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2662 [Show addition build identification in about dialog.]),
2667 AS_HELP_STRING([--with-vendor="John the Builder"],
2668 [Set vendor of the build.]),
2671 AC_ARG_WITH(privacy-policy-url,
2672 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2673 [The URL to your privacy policy (needed when
2674 enabling online-update or crashreporting via breakpad)]),
2675 [if test "x$with_privacy_policy_url" = "xyes"; then
2676 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2677 elif test "x$with_privacy_policy_url" = "xno"; then
2678 with_privacy_policy_url="undefined"
2680 ,[with_privacy_policy_url="undefined"])
2682 AC_ARG_WITH(android-package-name,
2683 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2684 [Set Android package name of the build.]),
2687 AC_ARG_WITH(compat-oowrappers,
2688 AS_HELP_STRING([--with-compat-oowrappers],
2689 [Install oo* wrappers in parallel with
2690 lo* ones to keep backward compatibility.
2691 Has effect only with make distro-pack-install]),
2694 AC_ARG_WITH(os-version,
2695 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2696 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2699 AC_ARG_WITH(idlc-cpp,
2700 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2701 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2704 AC_ARG_WITH(parallelism,
2705 AS_HELP_STRING([--with-parallelism],
2706 [Number of jobs to run simultaneously during build. Parallel builds can
2707 save a lot of time on multi-cpu machines. Defaults to the number of
2708 CPUs on the machine, unless you configure --enable-icecream - then to
2712 AC_ARG_WITH(all-tarballs,
2713 AS_HELP_STRING([--with-all-tarballs],
2714 [Download all external tarballs unconditionally]))
2716 AC_ARG_WITH(gdrive-client-id,
2717 AS_HELP_STRING([--with-gdrive-client-id],
2718 [Provides the client id of the application for OAuth2 authentication
2719 on Google Drive. If either this or --with-gdrive-client-secret is
2720 empty, the feature will be disabled]),
2723 AC_ARG_WITH(gdrive-client-secret,
2724 AS_HELP_STRING([--with-gdrive-client-secret],
2725 [Provides the client secret of the application for OAuth2
2726 authentication on Google Drive. If either this or
2727 --with-gdrive-client-id is empty, the feature will be disabled]),
2730 AC_ARG_WITH(alfresco-cloud-client-id,
2731 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2732 [Provides the client id of the application for OAuth2 authentication
2733 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2734 empty, the feature will be disabled]),
2737 AC_ARG_WITH(alfresco-cloud-client-secret,
2738 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2739 [Provides the client secret of the application for OAuth2
2740 authentication on Alfresco Cloud. If either this or
2741 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2744 AC_ARG_WITH(onedrive-client-id,
2745 AS_HELP_STRING([--with-onedrive-client-id],
2746 [Provides the client id of the application for OAuth2 authentication
2747 on OneDrive. If either this or --with-onedrive-client-secret is
2748 empty, the feature will be disabled]),
2751 AC_ARG_WITH(onedrive-client-secret,
2752 AS_HELP_STRING([--with-onedrive-client-secret],
2753 [Provides the client secret of the application for OAuth2
2754 authentication on OneDrive. If either this or
2755 --with-onedrive-client-id is empty, the feature will be disabled]),
2757 dnl ===================================================================
2758 dnl Do we want to use pre-build binary tarball for recompile
2759 dnl ===================================================================
2761 if test "$enable_library_bin_tar" = "yes" ; then
2762 USE_LIBRARY_BIN_TAR=TRUE
2764 USE_LIBRARY_BIN_TAR=
2766 AC_SUBST(USE_LIBRARY_BIN_TAR)
2768 dnl ===================================================================
2769 dnl Test whether build target is Release Build
2770 dnl ===================================================================
2771 AC_MSG_CHECKING([whether build target is Release Build])
2772 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2774 ENABLE_RELEASE_BUILD=
2775 GET_TASK_ALLOW_ENTITLEMENT='
2776 <!-- We want to be able to debug a hardened process when not building for release -->
2777 <key>com.apple.security.get-task-allow</key>
2780 AC_MSG_RESULT([yes])
2781 ENABLE_RELEASE_BUILD=TRUE
2782 GET_TASK_ALLOW_ENTITLEMENT=''
2784 AC_SUBST(ENABLE_RELEASE_BUILD)
2785 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2787 AC_MSG_CHECKING([whether to build a Community flavor])
2788 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2789 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2790 AC_MSG_RESULT([yes])
2795 dnl ===================================================================
2796 dnl Test whether to sign Windows Build
2797 dnl ===================================================================
2798 AC_MSG_CHECKING([whether to sign windows build])
2799 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2800 AC_MSG_RESULT([yes])
2801 WINDOWS_BUILD_SIGNING="TRUE"
2804 WINDOWS_BUILD_SIGNING="FALSE"
2806 AC_SUBST(WINDOWS_BUILD_SIGNING)
2808 dnl ===================================================================
2809 dnl MacOSX build and runtime environment options
2810 dnl ===================================================================
2812 AC_ARG_WITH(macosx-version-min-required,
2813 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2814 [set the minimum OS version needed to run the built LibreOffice])
2816 e. g.: --with-macosx-version-min-required=10.12
2820 AC_ARG_WITH(macosx-version-max-allowed,
2821 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2822 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2824 e. g.: --with-macosx-version-max-allowed=11.0
2829 dnl ===================================================================
2830 dnl options for stuff used during cross-compilation build
2831 dnl Not quite superseded by --with-build-platform-configure-options.
2832 dnl TODO: check, if the "force" option is still needed anywhere.
2833 dnl ===================================================================
2835 AC_ARG_WITH(system-icu-for-build,
2836 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2837 [Use icu already on system for build tools (cross-compilation only).]))
2840 dnl ===================================================================
2841 dnl Check for incompatible options set by fuzzing, and reset those
2842 dnl automatically to working combinations
2843 dnl ===================================================================
2845 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2846 "$enable_dbus" != "$enable_avahi"; then
2847 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2848 enable_avahi=$enable_dbus
2853 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2854 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2858 add_lopath_before ()
2863 for dir in $LO_PATH ; do
2864 if test "$dir" != "$1" ; then
2865 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2868 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2871 dnl ===================================================================
2872 dnl check for required programs (grep, awk, sed, bash)
2873 dnl ===================================================================
2878 if test -n "$1"; then
2879 if test "$build_os" = "cygwin"; then
2880 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2882 new_path=`cygpath -sm "$formatted_path"`
2885 new_path=`cygpath -u "$formatted_path"`
2890 if test "$2" = "after"; then
2891 add_lopath_after "$new_path"
2893 add_lopath_before "$new_path"
2899 AC_PATH_PROG( AWK, $AWK)
2900 if test -z "$AWK"; then
2901 AC_MSG_ERROR([install awk to run this script])
2904 AC_PATH_PROG(BASH, bash)
2905 if test -z "$BASH"; then
2906 AC_MSG_ERROR([bash not found in \$PATH])
2910 AC_MSG_CHECKING([for GNU or BSD tar])
2911 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2912 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2913 if test $? -eq 0; then
2918 AC_MSG_RESULT($GNUTAR)
2919 if test -z "$GNUTAR"; then
2920 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2924 AC_MSG_CHECKING([for tar's option to strip components])
2925 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2926 if test $? -eq 0; then
2927 STRIP_COMPONENTS="--strip-components"
2929 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2930 if test $? -eq 0; then
2931 STRIP_COMPONENTS="--strip-path"
2933 STRIP_COMPONENTS="unsupported"
2936 AC_MSG_RESULT($STRIP_COMPONENTS)
2937 if test x$STRIP_COMPONENTS = xunsupported; then
2938 AC_MSG_ERROR([you need a tar that is able to strip components.])
2940 AC_SUBST(STRIP_COMPONENTS)
2942 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2943 dnl desktop OSes from "mobile" ones.
2945 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2946 dnl In other words, that when building for an OS that is not a
2947 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2949 dnl Note the direction of the implication; there is no assumption that
2950 dnl cross-compiling would imply a non-desktop OS.
2952 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2953 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2954 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2955 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2958 # Whether to build "avmedia" functionality or not.
2960 if test -z "$enable_avmedia"; then
2964 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2965 if test "$enable_avmedia" = yes; then
2966 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2968 USE_AVMEDIA_DUMMY='TRUE'
2970 AC_SUBST(USE_AVMEDIA_DUMMY)
2972 # Decide whether to build database connectivity stuff (including Base) or not.
2973 if test "$enable_database_connectivity" != no; then
2974 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2975 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2977 if test "$_os" = iOS; then
2978 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2980 disable_database_connectivity_dependencies
2983 if test -z "$enable_extensions"; then
2984 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2985 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2986 enable_extensions=yes
2990 if test "$enable_extensions" = yes; then
2991 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2992 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2994 enable_extension_integration=no
2995 enable_extension_update=no
2998 if test -z "$enable_scripting"; then
2999 # Disable scripting for iOS unless specifically overridden
3000 # with --enable-scripting.
3001 if test $_os != iOS -o $_os = Emscripten; then
3002 enable_scripting=yes
3006 DISABLE_SCRIPTING=''
3007 if test "$enable_scripting" = yes; then
3008 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3009 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3011 DISABLE_SCRIPTING='TRUE'
3012 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3015 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3016 # Disable dynamic_loading always for iOS and Android
3017 enable_dynamic_loading=no
3018 elif test -z "$enable_dynamic_loading"; then
3019 # Otherwise enable it unless specifically disabled
3020 enable_dynamic_loading=yes
3023 DISABLE_DYNLOADING=''
3024 if test "$enable_dynamic_loading" = yes; then
3025 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3027 DISABLE_DYNLOADING='TRUE'
3029 AC_SUBST(DISABLE_DYNLOADING)
3031 # remember SYSBASE value
3034 dnl ===================================================================
3035 dnl Sort out various gallery compilation options
3036 dnl ===================================================================
3037 WITH_GALLERY_BUILD=TRUE
3038 AC_MSG_CHECKING([how to build and package galleries])
3039 if test -n "${with_galleries}"; then
3040 if test "$with_galleries" = "build"; then
3041 if test "$enable_database_connectivity" = no; then
3042 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3044 AC_MSG_RESULT([build from source images internally])
3045 elif test "$with_galleries" = "no"; then
3047 AC_MSG_RESULT([disable non-internal gallery build])
3049 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3052 if test $_os != iOS -a $_os != Android; then
3053 AC_MSG_RESULT([internal src images for desktop])
3056 AC_MSG_RESULT([disable src image build])
3059 AC_SUBST(WITH_GALLERY_BUILD)
3061 dnl ===================================================================
3062 dnl Checks if ccache is available
3063 dnl ===================================================================
3065 if test "$enable_ccache" = "no"; then
3067 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3068 case "%$CC%$CXX%" in
3069 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3070 # assume that's good then
3071 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3072 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3073 CCACHE_DEPEND_MODE=1
3076 # try to use our own ccache if it is available and CCACHE was not already defined
3077 if test -z "$CCACHE"; then
3078 if test "$_os" = "WINNT"; then
3079 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3081 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3082 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3083 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3084 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3087 AC_PATH_PROG([CCACHE],[ccache],[not found])
3088 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3089 CCACHE=`win_short_path_for_make "$CCACHE"`
3090 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3092 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3093 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3094 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3102 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3103 # on windows/VC perhaps sccache is around?
3104 case "%$CC%$CXX%" in
3105 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3106 # assume that's good then
3107 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3108 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3109 CCACHE_DEPEND_MODE=1
3113 # for sharing code below, reuse CCACHE env var
3114 AC_PATH_PROG([CCACHE],[sccache],[not found])
3115 if test "$CCACHE" != "not found"; then
3116 CCACHE=`win_short_path_for_make "$CCACHE"`
3118 CCACHE_DEPEND_MODE=1
3123 if test "$CCACHE" = "not found"; then
3126 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3127 CCACHE_DEPEND_MODE=1
3128 # Need to check for ccache version: otherwise prevents
3129 # caching of the results (like "-x objective-c++" for Mac)
3130 if test $_os = Darwin -o $_os = iOS; then
3131 # Check ccache version
3132 AC_MSG_CHECKING([whether version of ccache is suitable])
3133 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3134 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3135 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3136 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3138 AC_MSG_RESULT([no, $CCACHE_VERSION])
3149 if test "$enable_ccache" = "nodepend"; then
3150 CCACHE_DEPEND_MODE=""
3152 AC_SUBST(CCACHE_DEPEND_MODE)
3154 # sccache defaults are good enough
3155 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3156 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3157 # -p works with both 4.2 and 4.4
3158 ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3159 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3160 if test "$ccache_size" = ""; then
3161 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3162 if test "$ccache_size" = ""; then
3165 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3166 if test $ccache_size -lt 1024; then
3168 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3169 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3171 # warn that ccache may be too small for debug build
3172 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3173 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3176 if test $ccache_size -lt 5; then
3177 #warn that ccache may be too small for debug build
3178 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3179 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3185 if test "$enable_z7_debug" != no; then
3186 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3187 ENABLE_Z7_DEBUG=TRUE
3190 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3191 add_warning "ccache will not work with --disable-z7-debug"
3193 AC_SUBST(ENABLE_Z7_DEBUG)
3195 dnl ===================================================================
3196 dnl Checks for C compiler,
3197 dnl The check for the C++ compiler is later on.
3198 dnl ===================================================================
3199 if test "$_os" != "WINNT"; then
3201 AC_MSG_CHECKING([gcc home])
3202 if test -z "$with_gcc_home"; then
3203 if test "$enable_icecream" = "yes"; then
3204 if test -d "/usr/lib/icecc/bin"; then
3205 GCC_HOME="/usr/lib/icecc/"
3206 elif test -d "/usr/libexec/icecc/bin"; then
3207 GCC_HOME="/usr/libexec/icecc/"
3208 elif test -d "/opt/icecream/bin"; then
3209 GCC_HOME="/opt/icecream/"
3211 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3215 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3216 GCC_HOME_SET="false"
3219 GCC_HOME="$with_gcc_home"
3221 AC_MSG_RESULT($GCC_HOME)
3224 if test "$GCC_HOME_SET" = "true"; then
3225 if test -z "$CC"; then
3226 CC="$GCC_HOME/bin/gcc"
3229 if test -z "$CXX"; then
3230 CXX="$GCC_HOME/bin/g++"
3236 COMPATH=`dirname "$CC"`
3237 if test "$COMPATH" = "."; then
3238 AC_PATH_PROGS(COMPATH, $CC)
3239 dnl double square bracket to get single because of M4 quote...
3240 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3242 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3244 dnl ===================================================================
3246 dnl ===================================================================
3247 AC_MSG_CHECKING([whether to build with Java support])
3248 if test "$with_java" != "no"; then
3249 if test "$DISABLE_SCRIPTING" = TRUE; then
3250 AC_MSG_RESULT([no, overridden by --disable-scripting])
3254 AC_MSG_RESULT([yes])
3256 AC_DEFINE(HAVE_FEATURE_JAVA)
3263 AC_SUBST(ENABLE_JAVA)
3265 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3267 dnl ENABLE_JAVA="" indicate no Java support at all
3269 dnl ===================================================================
3270 dnl Check macOS SDK and compiler
3271 dnl ===================================================================
3273 if test $_os = Darwin; then
3275 # The SDK in the currently selected Xcode should be found.
3277 AC_MSG_CHECKING([what macOS SDK to use])
3278 for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3279 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3280 if test -d "$MACOSX_SDK_PATH"; then
3283 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3284 if test -d "$MACOSX_SDK_PATH"; then
3289 if test ! -d "$MACOSX_SDK_PATH"; then
3290 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3293 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3297 MACOSX_SDK_VERSION=101300
3300 MACOSX_SDK_VERSION=101400
3303 MACOSX_SDK_VERSION=101500
3306 MACOSX_SDK_VERSION=110000
3309 MACOSX_SDK_VERSION=110100
3312 MACOSX_SDK_VERSION=110300
3315 MACOSX_SDK_VERSION=120000
3318 MACOSX_SDK_VERSION=120100
3321 MACOSX_SDK_VERSION=120300
3324 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3328 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3329 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3332 if test "$with_macosx_version_min_required" = "" ; then
3333 if test "$host_cpu" = x86_64; then
3334 with_macosx_version_min_required="10.12";
3336 with_macosx_version_min_required="11.0";
3340 if test "$with_macosx_version_max_allowed" = "" ; then
3341 with_macosx_version_max_allowed="$macosx_sdk"
3344 # export this so that "xcrun" invocations later return matching values
3345 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3346 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3347 export DEVELOPER_DIR
3348 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3349 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3351 AC_MSG_CHECKING([whether Xcode is new enough])
3352 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3353 my_xcode_ver2=${my_xcode_ver1#Xcode }
3354 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3355 if test "$my_xcode_ver3" -ge 1103; then
3356 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3358 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3361 case "$with_macosx_version_min_required" in
3363 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3366 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3369 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3372 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3375 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3378 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3381 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3384 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3387 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3390 MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3393 MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3396 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.13--12.3])
3400 LIBTOOL=/usr/bin/libtool
3401 INSTALL_NAME_TOOL=install_name_tool
3402 if test -z "$save_CC"; then
3403 stdlib=-stdlib=libc++
3405 AC_MSG_CHECKING([what C compiler to use])
3406 CC="`xcrun -find clang`"
3407 CC_BASE=`first_arg_basename "$CC"`
3408 if test "$host_cpu" = x86_64; then
3409 CC+=" -target x86_64-apple-macos"
3411 CC+=" -target arm64-apple-macos"
3413 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3414 AC_MSG_RESULT([$CC])
3416 AC_MSG_CHECKING([what C++ compiler to use])
3417 CXX="`xcrun -find clang++`"
3418 CXX_BASE=`first_arg_basename "$CXX"`
3419 if test "$host_cpu" = x86_64; then
3420 CXX+=" -target x86_64-apple-macos"
3422 CXX+=" -target arm64-apple-macos"
3424 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3425 AC_MSG_RESULT([$CXX])
3427 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3430 STRIP=`xcrun -find strip`
3431 LIBTOOL=`xcrun -find libtool`
3432 RANLIB=`xcrun -find ranlib`
3435 case "$with_macosx_version_max_allowed" in
3437 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3440 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3443 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3446 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3449 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3452 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3455 MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3458 MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3461 MAC_OS_X_VERSION_MAX_ALLOWED="120100"
3464 MAC_OS_X_VERSION_MAX_ALLOWED="120300"
3467 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.3])
3471 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3472 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3473 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])
3478 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3479 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3480 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3484 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3485 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3487 AC_MSG_CHECKING([whether to do code signing])
3489 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3492 if test "$enable_macosx_code_signing" = yes; then
3493 # By default use the first suitable certificate (?).
3495 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3496 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3497 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3498 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3499 # "Developer ID Application" one.
3500 identity="Developer ID Application:"
3502 identity=$enable_macosx_code_signing
3504 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3505 if test -n "$identity"; then
3506 MACOSX_CODESIGNING_IDENTITY=$identity
3507 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3508 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3510 AC_MSG_ERROR([cannot determine identity to use])
3514 AC_MSG_CHECKING([whether to create a Mac App Store package])
3516 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3518 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3519 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3521 if test "$enable_macosx_package_signing" = yes; then
3522 # By default use the first suitable certificate.
3523 # It should be a "3rd Party Mac Developer Installer" one
3524 identity="3rd Party Mac Developer Installer:"
3526 identity=$enable_macosx_package_signing
3528 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3529 if test -n "$identity"; then
3530 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3531 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3532 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3534 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3538 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3539 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3542 AC_MSG_CHECKING([whether to sandbox the application])
3544 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3545 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3546 elif test "$enable_macosx_sandbox" = yes; then
3547 ENABLE_MACOSX_SANDBOX=TRUE
3548 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3549 AC_MSG_RESULT([yes])
3554 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3555 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3556 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3558 if test -n "$with_macosx_provisioning_profile" ; then
3559 if test ! -f "$with_macosx_provisioning_profile"; then
3560 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3562 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3563 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3564 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3565 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3566 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3570 AC_SUBST(MACOSX_SDK_PATH)
3571 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3572 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3573 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3574 AC_SUBST(INSTALL_NAME_TOOL)
3575 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3576 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3577 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3578 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3579 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3580 AC_SUBST(MACOSX_PROVISIONING_INFO)
3581 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3583 dnl ===================================================================
3584 dnl Check iOS SDK and compiler
3585 dnl ===================================================================
3587 if test $_os = iOS; then
3588 AC_MSG_CHECKING([what iOS SDK to use])
3589 current_sdk_ver=15.0
3590 older_sdk_vers="14.5"
3591 if test "$enable_ios_simulator" = "yes"; then
3592 platform=iPhoneSimulator
3593 versionmin=-mios-simulator-version-min=13.6
3596 versionmin=-miphoneos-version-min=13.6
3598 xcode_developer=`xcode-select -print-path`
3600 for sdkver in $current_sdk_ver $older_sdk_vers; do
3601 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3608 if test -z "$sysroot"; then
3609 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3612 AC_MSG_RESULT($sysroot)
3614 stdlib="-stdlib=libc++"
3616 AC_MSG_CHECKING([what C compiler to use])
3617 CC="`xcrun -find clang`"
3618 CC_BASE=`first_arg_basename "$CC"`
3619 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3620 AC_MSG_RESULT([$CC])
3622 AC_MSG_CHECKING([what C++ compiler to use])
3623 CXX="`xcrun -find clang++`"
3624 CXX_BASE=`first_arg_basename "$CXX"`
3625 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3626 AC_MSG_RESULT([$CXX])
3628 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3631 STRIP=`xcrun -find strip`
3632 LIBTOOL=`xcrun -find libtool`
3633 RANLIB=`xcrun -find ranlib`
3636 AC_MSG_CHECKING([whether to treat the installation as read-only])
3638 if test $_os = Darwin; then
3639 enable_readonly_installset=yes
3640 elif test "$enable_extensions" != yes; then
3641 enable_readonly_installset=yes
3643 if test "$enable_readonly_installset" = yes; then
3644 AC_MSG_RESULT([yes])
3645 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3650 dnl ===================================================================
3651 dnl Structure of install set
3652 dnl ===================================================================
3654 if test $_os = Darwin; then
3655 LIBO_BIN_FOLDER=MacOS
3656 LIBO_ETC_FOLDER=Resources
3657 LIBO_LIBEXEC_FOLDER=MacOS
3658 LIBO_LIB_FOLDER=Frameworks
3659 LIBO_LIB_PYUNO_FOLDER=Resources
3660 LIBO_SHARE_FOLDER=Resources
3661 LIBO_SHARE_HELP_FOLDER=Resources/help
3662 LIBO_SHARE_JAVA_FOLDER=Resources/java
3663 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3664 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3665 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3666 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3667 LIBO_URE_BIN_FOLDER=MacOS
3668 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3669 LIBO_URE_LIB_FOLDER=Frameworks
3670 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3671 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3672 elif test $_os = WINNT; then
3673 LIBO_BIN_FOLDER=program
3674 LIBO_ETC_FOLDER=program
3675 LIBO_LIBEXEC_FOLDER=program
3676 LIBO_LIB_FOLDER=program
3677 LIBO_LIB_PYUNO_FOLDER=program
3678 LIBO_SHARE_FOLDER=share
3679 LIBO_SHARE_HELP_FOLDER=help
3680 LIBO_SHARE_JAVA_FOLDER=program/classes
3681 LIBO_SHARE_PRESETS_FOLDER=presets
3682 LIBO_SHARE_READMES_FOLDER=readmes
3683 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3684 LIBO_SHARE_SHELL_FOLDER=program/shell
3685 LIBO_URE_BIN_FOLDER=program
3686 LIBO_URE_ETC_FOLDER=program
3687 LIBO_URE_LIB_FOLDER=program
3688 LIBO_URE_MISC_FOLDER=program
3689 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3691 LIBO_BIN_FOLDER=program
3692 LIBO_ETC_FOLDER=program
3693 LIBO_LIBEXEC_FOLDER=program
3694 LIBO_LIB_FOLDER=program
3695 LIBO_LIB_PYUNO_FOLDER=program
3696 LIBO_SHARE_FOLDER=share
3697 LIBO_SHARE_HELP_FOLDER=help
3698 LIBO_SHARE_JAVA_FOLDER=program/classes
3699 LIBO_SHARE_PRESETS_FOLDER=presets
3700 LIBO_SHARE_READMES_FOLDER=readmes
3701 if test "$enable_fuzzers" != yes; then
3702 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3704 LIBO_SHARE_RESOURCE_FOLDER=resource
3706 LIBO_SHARE_SHELL_FOLDER=program/shell
3707 LIBO_URE_BIN_FOLDER=program
3708 LIBO_URE_ETC_FOLDER=program
3709 LIBO_URE_LIB_FOLDER=program
3710 LIBO_URE_MISC_FOLDER=program
3711 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3713 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3714 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3715 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3716 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3717 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3718 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3719 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3720 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3721 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3722 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3723 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3724 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3725 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3726 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3727 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3728 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3730 # Not all of them needed in config_host.mk, add more if need arises
3731 AC_SUBST(LIBO_BIN_FOLDER)
3732 AC_SUBST(LIBO_ETC_FOLDER)
3733 AC_SUBST(LIBO_LIB_FOLDER)
3734 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3735 AC_SUBST(LIBO_SHARE_FOLDER)
3736 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3737 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3738 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3739 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3740 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3741 AC_SUBST(LIBO_URE_BIN_FOLDER)
3742 AC_SUBST(LIBO_URE_ETC_FOLDER)
3743 AC_SUBST(LIBO_URE_LIB_FOLDER)
3744 AC_SUBST(LIBO_URE_MISC_FOLDER)
3745 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3747 dnl ===================================================================
3748 dnl Windows specific tests and stuff
3749 dnl ===================================================================
3753 # Return value: $regvalue
3756 if test "$build_os" = "wsl"; then
3757 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3761 local _regentry="/proc/registry${1}/${2}"
3762 if test -f "$_regentry"; then
3763 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3764 # Registry keys read via /proc/registry* are always \0 terminated!
3765 local _regvalue=$(tr -d '\0' < "$_regentry")
3766 if test $? -eq 0; then
3772 # Get a value from the 32-bit side of the Registry
3775 reg_get_value "32" "$1"
3778 # Get a value from the 64-bit side of the Registry
3781 reg_get_value "64" "$1"
3789 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3798 PLATFORMID=windows_x86_64
3800 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3802 WIN_MULTI_ARCH="x86"
3808 PLATFORMID=windows_x86
3811 WIN_OTHER_ARCH="x64"
3816 PLATFORMID=windows_aarch64
3818 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3819 WIN_HOST_ARCH="arm64"
3824 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3828 case "$build_cpu" in
3829 x86_64) WIN_BUILD_ARCH="x64" ;;
3830 i*86) WIN_BUILD_ARCH="x86" ;;
3831 aarch64) WIN_BUILD_ARCH="arm64" ;;
3833 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3837 SCPDEFS="$SCPDEFS -D_MSC_VER"
3841 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3842 # other-arch won't, but wouldn't break the build (x64 on x86).
3843 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3844 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3848 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3849 # To allow building Windows multi-arch releases without cross-tooling
3850 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3851 cross_compiling="yes"
3855 ENABLE_WASM_STRIP=''
3856 if test "$cross_compiling" = "yes"; then
3857 export CROSS_COMPILING=TRUE
3858 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3859 ENABLE_WASM_STRIP=TRUE
3863 BUILD_TYPE="$BUILD_TYPE NATIVE"
3865 AC_SUBST(CROSS_COMPILING)
3866 AC_SUBST(ENABLE_WASM_STRIP)
3868 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3869 # NOTE: must _not_ be used for bundled external libraries!
3871 if test "$GCC" = "yes"; then
3872 AC_MSG_CHECKING( for -isystem )
3874 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3875 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3877 if test -n "$ISYSTEM"; then
3883 if test -z "$ISYSTEM"; then
3884 # fall back to using -I
3889 dnl ===================================================================
3890 dnl Check which Visual Studio compiler is used
3891 dnl ===================================================================
3893 map_vs_year_to_version()
3895 # Return value: $vsversion
3905 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3909 vs_versions_to_check()
3911 # Args: $1 (optional) : versions to check, in the order of preference
3912 # Return value: $vsversions
3916 if test -n "$1"; then
3917 map_vs_year_to_version "$1"
3918 vsversions=$vsversion
3920 # Default version is 2019
3925 win_get_env_from_vsvars32bat()
3927 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3928 # Also seems to be located in another directory under the same name: vsvars32.bat
3929 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3930 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3931 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3932 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3934 if test "$build_os" = "wsl"; then
3935 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3937 chmod +x $WRAPPERBATCHFILEPATH
3938 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3940 rm -f $WRAPPERBATCHFILEPATH
3941 printf '%s' "$result"
3946 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3947 if test -n "$regvalue"; then
3948 PathFormat "$regvalue"
3949 UCRTSDKDIR=$formatted_path_unix
3950 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3951 UCRTVERSION=$regvalue
3953 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3957 if test -z "$UCRTSDKDIR"; then
3958 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3959 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3960 if test -f "$ide_env_file"; then
3961 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3962 UCRTSDKDIR=$formatted_path
3963 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3964 dnl Hack needed at least by tml:
3965 if test "$UCRTVERSION" = 10.0.15063.0 \
3966 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3967 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3969 UCRTVERSION=10.0.14393.0
3972 AC_MSG_ERROR([No UCRT found])
3980 # Args: $1 (optional) : The VS version year
3981 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3983 unset vctest vctoolset vcnumwithdot vcbuildnumber
3985 vs_versions_to_check "$1"
3986 if test "$build_os" = wsl; then
3987 vswhere="$PROGRAMFILESX86"
3989 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3991 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3992 PathFormat "$vswhere"
3993 vswhere=$formatted_path_unix
3994 for ver in $vsversions; do
3995 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3996 if test -z "$vswhereoutput"; then
3997 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3999 # Fall back to all MS products (this includes VC++ Build Tools)
4000 if ! test -n "$vswhereoutput"; then
4001 AC_MSG_CHECKING([VC++ Build Tools and similar])
4002 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4004 if test -n "$vswhereoutput"; then
4005 PathFormat "$vswhereoutput"
4006 vctest=$formatted_path_unix
4011 if test -n "$vctest"; then
4012 vcnumwithdot="$ver.0"
4013 case "$vcnumwithdot" in
4023 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4030 AC_MSG_CHECKING([$1 compiler])
4032 CL_EXE_PATH="$2/cl.exe"
4034 if test ! -f "$CL_EXE_PATH"; then
4035 if test "$1" = "multi-arch"; then
4036 AC_MSG_WARN([no compiler (cl.exe) in $2])
4039 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4043 dnl ===========================================================
4044 dnl Check for the corresponding mspdb*.dll
4045 dnl ===========================================================
4047 # MSVC 15.0 has libraries from 14.0?
4050 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4051 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4054 # The compiles has to find its shared libraries
4056 TEMP_PATH=`cygpath -d "$2"`
4057 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4059 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4060 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4065 AC_MSG_RESULT([$CL_EXE_PATH])
4071 if test "$_os" = "WINNT"; then
4072 AC_MSG_CHECKING([Visual C++])
4073 find_msvc "$with_visual_studio"
4074 if test -z "$vctest"; then
4075 if test -n "$with_visual_studio"; then
4076 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4078 AC_MSG_ERROR([no Visual Studio installation found])
4083 VC_PRODUCT_DIR="$vctest/VC"
4084 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4086 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4087 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4088 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4089 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4090 if test $? -ne 0; then
4096 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4097 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4098 test_cl_exe "build" "$MSVC_BUILD_PATH"
4101 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4102 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4103 test_cl_exe "host" "$MSVC_HOST_PATH"
4105 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4108 AC_MSG_CHECKING([for short pathname of VC product directory])
4109 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4110 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4115 AC_MSG_CHECKING([for UCRT location])
4117 # find_ucrt errors out if it doesn't find it
4118 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4119 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4120 ucrtincpath_formatted=$formatted_path
4121 # SOLARINC is used for external modules and must be set too.
4122 # And no, it's not sufficient to set SOLARINC only, as configure
4123 # itself doesn't honour it.
4124 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4125 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4126 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4127 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4129 AC_SUBST(UCRTSDKDIR)
4130 AC_SUBST(UCRTVERSION)
4132 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4133 # Find the proper version of MSBuild.exe to use based on the VS version
4134 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4135 if test -z "$regvalue" ; then
4136 if test "$WIN_BUILD_ARCH" != "x64"; then
4137 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4139 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4142 if test -d "$regvalue" ; then
4143 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4144 AC_MSG_RESULT([$regvalue])
4146 AC_MSG_ERROR([MSBuild.exe location not found])
4149 # Find the version of devenv.exe
4150 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4151 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4152 DEVENV_unix=$(cygpath -u "$DEVENV")
4153 if test ! -e "$DEVENV_unix"; then
4154 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4157 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4158 dnl needed when building CLR code:
4159 if test -z "$MSVC_CXX"; then
4160 # This gives us a posix path with 8.3 filename restrictions
4161 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4164 if test -z "$CC"; then
4166 CC_BASE=`first_arg_basename "$CC"`
4168 if test -z "$CXX"; then
4170 CXX_BASE=`first_arg_basename "$CXX"`
4173 if test -n "$CC"; then
4174 # Remove /cl.exe from CC case insensitive
4175 AC_MSG_NOTICE([found Visual C++ $vcyear])
4177 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4178 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4180 PathFormat "$COMPATH"
4181 COMPATH=`win_short_path_for_make "$formatted_path"`
4184 VCTOOLSET=$vctoolset
4186 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4187 # are always "better", we list them in reverse chronological order.
4189 case "$vcnumwithdot" in
4191 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4195 # The expectation is that --with-windows-sdk should not need to be used
4196 if test -n "$with_windows_sdk"; then
4197 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4198 *" "$with_windows_sdk" "*)
4199 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4202 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4207 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4212 AC_MSG_ERROR([Visual C++ not found after all, huh])
4215 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4216 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4217 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4218 // between Visual Studio versions and _MSC_VER:
4222 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4224 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4225 # version of the Explorer extension (and maybe other small
4226 # bits, too) needed when installing a 32-bit LibreOffice on a
4227 # 64-bit OS. The 64-bit Explorer extension is a feature that
4228 # has been present since long in OOo. Don't confuse it with
4229 # building LibreOffice itself as 64-bit code.
4234 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4235 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4236 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4237 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4240 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4241 AC_MSG_RESULT([found])
4243 AC_MSG_RESULT([not found])
4244 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4246 elif test "$WIN_HOST_ARCH" = "x64"; then
4251 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4252 AC_SUBST(CXX_X64_BINARY)
4254 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4255 # needed to support TWAIN scan on both 32- and 64-bit systems
4257 case "$WIN_HOST_ARCH" in
4259 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4260 if test -n "$CXX_X86_BINARY"; then
4262 AC_MSG_RESULT([preset])
4263 elif test -n "$WIN_MULTI_ARCH"; then
4265 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4266 CXX_X86_BINARY+=" /arch:SSE"
4267 AC_MSG_RESULT([found])
4269 AC_MSG_RESULT([not found])
4270 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4275 CXX_X86_BINARY=$MSVC_CXX
4279 AC_SUBST(CXX_X86_BINARY)
4287 AC_MSG_CHECKING([whether the compiler is actually Clang])
4288 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4294 [AC_MSG_RESULT([yes])
4296 [AC_MSG_RESULT([no])])
4297 AC_SUBST(COM_IS_CLANG)
4301 if test "$COM_IS_CLANG" = TRUE; then
4302 AC_MSG_CHECKING([whether Clang is new enough])
4303 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4304 #if !defined __apple_build_version__
4308 [my_apple_clang=yes],[my_apple_clang=])
4309 if test "$my_apple_clang" = yes; then
4310 AC_MSG_RESULT([assumed yes (Apple Clang)])
4311 elif test "$_os" = Emscripten; then
4312 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4314 if test "$_os" = WINNT; then
4315 dnl In which case, assume clang-cl:
4317 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4325 CC_PLAIN="$CC_PLAIN $i"
4332 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4333 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4334 CLANGVER=`echo $clang_version \
4335 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4336 if test "$CLANGVER" -ge 50002; then
4337 AC_MSG_RESULT([yes ($clang_version)])
4339 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4341 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4342 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4346 SHOWINCLUDES_PREFIX=
4347 if test "$_os" = WINNT; then
4348 dnl We need to guess the prefix of the -showIncludes output, it can be
4350 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4351 echo "#include <stdlib.h>" > conftest.c
4352 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4353 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4354 rm -f conftest.c conftest.obj
4355 if test -z "$SHOWINCLUDES_PREFIX"; then
4356 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4358 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4361 AC_SUBST(SHOWINCLUDES_PREFIX)
4364 # prefix C with ccache if needed
4366 if test "$CCACHE" != ""; then
4367 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4371 CFLAGS="$CFLAGS --ccache-skip -O2"
4372 # msvc does not fail on unknown options, check stdout
4373 if test "$COM" = MSC; then
4374 CFLAGS="$CFLAGS -nologo"
4376 save_ac_c_werror_flag=$ac_c_werror_flag
4377 ac_c_werror_flag=yes
4378 dnl an empty program will do, we're checking the compiler flags
4379 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4380 [use_ccache=yes], [use_ccache=no])
4382 ac_c_werror_flag=$save_ac_c_werror_flag
4383 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4384 AC_MSG_RESULT([yes])
4387 CC_BASE="ccache $CC_BASE"
4393 # ===================================================================
4394 # check various GCC options that Clang does not support now but maybe
4395 # will somewhen in the future, check them even for GCC, so that the
4397 # ===================================================================
4400 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4401 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4403 CFLAGS="$CFLAGS -Werror -ggdb2"
4404 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4406 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4407 AC_MSG_RESULT([yes])
4412 if test "$host_cpu" = "m68k"; then
4413 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4415 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4416 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4418 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4419 AC_MSG_RESULT([yes])
4425 AC_SUBST(HAVE_GCC_GGDB2)
4427 dnl ===================================================================
4428 dnl Test the gcc version
4429 dnl ===================================================================
4430 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4431 AC_MSG_CHECKING([the GCC version])
4432 _gcc_version=`$CC -dumpfullversion`
4433 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4434 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4435 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4437 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4439 if test "$gcc_full_version" -lt 70000; then
4440 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4443 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4444 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4445 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4446 # (which reports itself as GCC 4.2.1).
4449 AC_SUBST(GCC_VERSION)
4451 dnl Set the ENABLE_DBGUTIL variable
4452 dnl ===================================================================
4453 AC_MSG_CHECKING([whether to build with additional debug utilities])
4454 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4455 ENABLE_DBGUTIL="TRUE"
4456 # this is an extra var so it can have different default on different MSVC
4457 # versions (in case there are version specific problems with it)
4458 MSVC_USE_DEBUG_RUNTIME="TRUE"
4460 AC_MSG_RESULT([yes])
4461 # cppunit and graphite expose STL in public headers
4462 if test "$with_system_cppunit" = "yes"; then
4463 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4465 with_system_cppunit=no
4467 if test "$with_system_graphite" = "yes"; then
4468 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4470 with_system_graphite=no
4472 if test "$with_system_orcus" = "yes"; then
4473 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4475 with_system_orcus=no
4477 if test "$with_system_libcmis" = "yes"; then
4478 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4480 with_system_libcmis=no
4482 if test "$with_system_hunspell" = "yes"; then
4483 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4485 with_system_hunspell=no
4487 if test "$with_system_gpgmepp" = "yes"; then
4488 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4490 with_system_gpgmepp=no
4492 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4493 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4494 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4495 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4496 # of those two is using the system variant:
4497 if test "$with_system_libnumbertext" = "yes"; then
4498 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4500 with_system_libnumbertext=no
4502 if test "$with_system_libwps" = "yes"; then
4503 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4505 with_system_libwps=no
4509 MSVC_USE_DEBUG_RUNTIME=""
4512 AC_SUBST(ENABLE_DBGUTIL)
4513 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4515 dnl Set the ENABLE_DEBUG variable.
4516 dnl ===================================================================
4517 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4518 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4520 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4521 if test -z "$libo_fuzzed_enable_debug"; then
4522 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4524 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4529 AC_MSG_CHECKING([whether to do a debug build])
4530 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4532 if test -n "$ENABLE_DBGUTIL" ; then
4533 AC_MSG_RESULT([yes (dbgutil)])
4535 AC_MSG_RESULT([yes])
4541 AC_SUBST(ENABLE_DEBUG)
4543 dnl ===================================================================
4544 dnl Select the linker to use (gold/lld/ld.bfd).
4545 dnl This is done only after compiler checks (need to know if Clang is
4546 dnl used, for different defaults) and after checking if a debug build
4547 dnl is wanted (non-debug builds get the default linker if not explicitly
4548 dnl specified otherwise).
4549 dnl All checks for linker features/options should come after this.
4550 dnl ===================================================================
4553 use_ld=-fuse-ld=${1%%:*}
4555 if test "$use_ld_path" != "$1"; then
4556 use_ld="$use_ld --ld-path=$use_ld_path"
4558 use_ld_fail_if_error=$2
4560 AC_MSG_CHECKING([for $use_ld linker support])
4561 use_ld_ldflags_save="$LDFLAGS"
4562 LDFLAGS="$LDFLAGS $use_ld"
4563 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4566 printf ("hello world\n");
4567 ])], USE_LD=$use_ld, [])
4568 if test -n "$USE_LD"; then
4569 AC_MSG_RESULT( yes )
4572 if test -n "$use_ld_fail_if_error"; then
4578 if test -n "$use_ld_ok"; then
4579 dnl keep the value of LDFLAGS
4582 LDFLAGS="$use_ld_ldflags_save"
4586 if test "$enable_ld" != "no"; then
4587 if test "$GCC" = "yes"; then
4588 if test -n "$enable_ld"; then
4589 check_use_ld "$enable_ld" fail_if_error
4590 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4591 dnl non-debug builds default to the default linker
4593 elif test -n "$COM_IS_CLANG"; then
4595 if test $? -ne 0; then
4599 # For gcc first try gold, new versions also support lld.
4601 if test $? -ne 0; then
4605 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4607 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4608 if test -z "$ld_used"; then
4611 AC_MSG_CHECKING([for linker that is used])
4612 AC_MSG_RESULT([$ld_used])
4613 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4614 if echo "$ld_used" | grep -q "^GNU ld"; then
4615 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4616 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4620 if test "$enable_ld" = "yes"; then
4621 AC_MSG_ERROR([--enable-ld not supported])
4627 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4628 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4629 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4630 bsymbolic_functions_ldflags_save=$LDFLAGS
4631 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4632 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4635 printf ("hello world\n");
4636 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4637 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4638 AC_MSG_RESULT( found )
4640 AC_MSG_RESULT( not found )
4642 LDFLAGS=$bsymbolic_functions_ldflags_save
4644 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4647 if test "$GCC" = "yes"; then
4648 for flag in "--gc-sections" "-dead_strip"; do
4649 AC_MSG_CHECKING([for $flag linker support])
4650 ldflags_save=$LDFLAGS
4651 LDFLAGS="$LDFLAGS -Wl,$flag"
4652 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4655 printf ("hello world\n");
4657 LD_GC_SECTIONS="-Wl,$flag"
4658 AC_MSG_RESULT( found )
4660 AC_MSG_RESULT( not found )
4662 LDFLAGS=$ldflags_save
4663 if test -n "$LD_GC_SECTIONS"; then
4668 AC_SUBST(LD_GC_SECTIONS)
4671 if test "$enable_split_debug" != no; then
4673 if test -n "$ENABLE_LTO"; then
4674 true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4675 elif test "$enable_split_debug" = yes; then
4677 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4678 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4681 if test -n "$use_split_debug"; then
4682 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4684 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4685 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4687 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4688 AC_MSG_RESULT([yes])
4690 if test "$enable_split_debug" = yes; then
4697 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4698 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4699 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4702 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4704 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4705 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4707 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4708 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4710 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4711 AC_MSG_RESULT([yes])
4715 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4718 if test "$enable_gdb_index" != "no"; then
4719 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4720 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4721 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4723 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4725 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4726 if test "$have_ggnu_pubnames" != "TRUE"; then
4727 if test "$enable_gdb_index" = "yes"; then
4728 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4733 AC_MSG_RESULT( yes )
4734 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4735 ldflags_save=$LDFLAGS
4736 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4737 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4740 printf ("hello world\n");
4741 ])], ENABLE_GDB_INDEX=TRUE, [])
4742 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4743 AC_MSG_RESULT( yes )
4745 if test "$enable_gdb_index" = "yes"; then
4751 LDFLAGS=$ldflags_save
4755 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4756 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4757 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4760 AC_SUBST(ENABLE_GDB_INDEX)
4762 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4765 if test "$enable_sal_log" = yes; then
4768 AC_SUBST(ENABLE_SAL_LOG)
4770 dnl Check for enable symbols option
4771 dnl ===================================================================
4772 AC_MSG_CHECKING([whether to generate debug information])
4773 if test -z "$enable_symbols"; then
4774 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4780 if test "$enable_symbols" = yes; then
4781 ENABLE_SYMBOLS_FOR=all
4782 AC_MSG_RESULT([yes])
4783 elif test "$enable_symbols" = no; then
4787 # Selective debuginfo.
4788 ENABLE_SYMBOLS_FOR="$enable_symbols"
4789 AC_MSG_RESULT([for "$enable_symbols"])
4791 AC_SUBST(ENABLE_SYMBOLS_FOR)
4793 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4794 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4795 AC_MSG_CHECKING([whether enough memory is available for linking])
4796 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4797 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4798 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4799 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4801 AC_MSG_RESULT([yes])
4806 ENABLE_OPTIMIZED_DEBUG=
4807 AC_MSG_CHECKING([whether to compile with optimization flags])
4808 if test -z "$enable_optimized"; then
4809 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4812 enable_optimized=yes
4815 if test "$enable_optimized" = yes; then
4816 ENABLE_OPTIMIZED=TRUE
4817 AC_MSG_RESULT([yes])
4818 elif test "$enable_optimized" = debug; then
4819 ENABLE_OPTIMIZED_DEBUG=TRUE
4820 AC_MSG_RESULT([yes (debug)])
4822 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4823 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4825 CFLAGS="$CFLAGS -Werror -Og"
4826 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4828 if test "$HAVE_GCC_OG" = "TRUE"; then
4829 AC_MSG_RESULT([yes])
4834 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4835 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4840 AC_SUBST(ENABLE_OPTIMIZED)
4841 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4844 # determine CPUNAME, OS, ...
4854 PLATFORMID=aix_powerpc
4870 if test "$enable_ios_simulator" = "yes"; then
4875 PLATFORMID=macosx_aarch64
4879 if test "$enable_ios_simulator" = "yes"; then
4884 PLATFORMID=macosx_x86_64
4887 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4900 if test "$enable_ios_simulator" = "yes"; then
4901 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4905 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4910 PLATFORMID=ios_arm64
4923 PLATFORMID=dragonfly_x86
4928 PLATFORMID=dragonfly_x86_64
4931 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4945 PLATFORMID=freebsd_aarch64
4951 PLATFORMID=freebsd_x86
4956 PLATFORMID=freebsd_x86_64
4961 PLATFORMID=freebsd_powerpc64
4966 PLATFORMID=freebsd_powerpc
4969 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4985 PLATFORMID=haiku_x86
4990 PLATFORMID=haiku_x86_64
4993 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5009 PLATFORMID=kfreebsd_x86
5014 PLATFORMID=kfreebsd_x86_64
5017 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5022 linux-gnu*|linux-musl*)
5032 PLATFORMID=linux_aarch64
5034 EPM_FLAGS="-a arm64"
5039 PLATFORMID=linux_alpha
5045 PLATFORMID=linux_arm_eabi
5049 PLATFORMID=linux_arm_oabi
5057 PLATFORMID=linux_hppa
5062 PLATFORMID=linux_x86
5067 PLATFORMID=linux_ia64
5073 PLATFORMID=linux_mips_eb
5078 EPM_FLAGS="-a mips64"
5079 PLATFORMID=linux_mips64_eb
5084 EPM_FLAGS="-a mips64el"
5085 PLATFORMID=linux_mips64_el
5090 EPM_FLAGS="-a mipsel"
5091 PLATFORMID=linux_mips_el
5096 PLATFORMID=linux_m68k
5101 PLATFORMID=linux_powerpc
5106 PLATFORMID=linux_powerpc64
5110 RTL_ARCH=PowerPC_64_LE
5111 PLATFORMID=linux_powerpc64_le
5116 PLATFORMID=linux_sparc
5121 PLATFORMID=linux_sparc64
5126 PLATFORMID=linux_s390
5131 PLATFORMID=linux_s390x
5136 PLATFORMID=linux_x86_64
5139 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5155 PLATFORMID=android_arm_eabi
5160 PLATFORMID=android_aarch64
5165 PLATFORMID=android_x86
5170 PLATFORMID=android_x86_64
5173 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5188 PLATFORMID=netbsd_x86
5193 PLATFORMID=netbsd_powerpc
5198 PLATFORMID=netbsd_sparc
5203 PLATFORMID=netbsd_x86_64
5206 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5221 PLATFORMID=openbsd_x86
5226 PLATFORMID=openbsd_x86_64
5229 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5232 SOLARINC="$SOLARINC -I/usr/local/include"
5245 PLATFORMID=solaris_x86
5250 PLATFORMID=solaris_sparc
5255 PLATFORMID=solaris_sparc64
5258 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5261 SOLARINC="$SOLARINC -I/usr/local/include"
5274 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5279 PLATFORMID=linux_x86
5283 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5287 if test "$with_x" = "no"; then
5288 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5292 if test "$enable_gui" = "no"; then
5293 if test "$using_x11" != yes; then
5294 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5299 AC_DEFINE(HAVE_FEATURE_UI)
5301 AC_SUBST(DISABLE_GUI)
5303 if test "$using_x11" = yes; then
5304 if test "$USING_X11" = TRUE; then
5305 AC_DEFINE(USING_X11)
5310 if test "$USING_X11" = TRUE; then
5311 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5315 WORKDIR="${BUILDDIR}/workdir"
5316 INSTDIR="${BUILDDIR}/instdir"
5317 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5318 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5319 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5327 AC_SUBST([INSTROOT])
5328 AC_SUBST([INSTROOTBASE])
5332 AC_SUBST(PLATFORMID)
5333 AC_SUBST(WINDOWS_X64)
5334 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5336 if test "$OS" = WNT -a "$COM" = MSC; then
5338 INTEL) CPPU_ENV=msci ;;
5339 X86_64) CPPU_ENV=mscx ;;
5340 AARCH64) CPPU_ENV=msca ;;
5342 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5350 dnl ===================================================================
5351 dnl Test which package format to use
5352 dnl ===================================================================
5353 AC_MSG_CHECKING([which package format to use])
5354 if test -n "$with_package_format" -a "$with_package_format" != no; then
5355 for i in $with_package_format; do
5357 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5360 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5361 aix - AIX software distribution
5362 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5363 deb - Debian software distribution
5364 pkg - Solaris software distribution
5365 rpm - RedHat software distribution
5367 LibreOffice additionally supports:
5368 archive - .tar.gz or .zip
5370 installed - installation tree
5376 # fakeroot is needed to ensure correct file ownerships/permissions
5377 # inside deb packages and tar archives created on Linux and Solaris.
5378 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5379 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5380 if test "$FAKEROOT" = "no"; then
5382 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5385 PKGFORMAT="$with_package_format"
5386 AC_MSG_RESULT([$PKGFORMAT])
5389 AC_MSG_RESULT([none])
5393 dnl ===================================================================
5394 dnl handle help related options
5396 dnl If you change help related options, please update README.help
5397 dnl ===================================================================
5404 AC_MSG_CHECKING([which help to build])
5405 if test -n "$with_help" -a "$with_help" != "no"; then
5406 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5407 BUILD_TYPE="$BUILD_TYPE HELP"
5408 case "$with_help" in
5410 ENABLE_HTMLHELP=TRUE
5412 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5413 AC_MSG_RESULT([HTML (local)])
5416 ENABLE_HTMLHELP=TRUE
5418 AC_MSG_RESULT([HTML (online)])
5422 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5423 AC_MSG_RESULT([XML (local)])
5426 AC_MSG_ERROR([Unknown --with-help=$with_help])
5433 AC_MSG_CHECKING([if we need to build the help index tooling])
5434 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5435 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5436 AC_MSG_RESULT([yes])
5441 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5442 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5443 if test "$HELP_ONLINE" != TRUE; then
5444 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5446 case "$with_omindex" in
5448 HELP_OMINDEX_PAGE=TRUE
5449 AC_MSG_RESULT([SERVER])
5452 AC_MSG_RESULT([NOXAP])
5455 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5462 AC_MSG_CHECKING([whether to include the XML-help support])
5463 if test "$enable_xmlhelp" = yes; then
5464 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5465 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5466 AC_MSG_RESULT([yes])
5468 if test "$with_help" = yes; then
5469 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5474 dnl Test whether to integrate helppacks into the product's installer
5475 AC_MSG_CHECKING([for helppack integration])
5476 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5477 AC_MSG_RESULT([no integration])
5479 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5480 AC_MSG_RESULT([integration])
5483 AC_SUBST([ENABLE_HTMLHELP])
5484 AC_SUBST([HELP_OMINDEX_PAGE])
5485 AC_SUBST([HELP_ONLINE])
5486 # WITH_HELPPACKS is used only in configure
5488 dnl ===================================================================
5489 dnl Set up a different compiler to produce tools to run on the build
5490 dnl machine when doing cross-compilation
5491 dnl ===================================================================
5493 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5494 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5495 if test "$cross_compiling" = "yes"; then
5496 AC_MSG_CHECKING([for BUILD platform configuration])
5498 rm -rf CONF-FOR-BUILD config_build.mk
5499 mkdir CONF-FOR-BUILD
5500 # Here must be listed all files needed when running the configure script. In particular, also
5501 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5502 # keep them in the same order as there.
5503 (cd $SRC_ROOT && tar cf - \
5505 bin/get_config_variables \
5506 solenv/bin/getcompver.awk \
5507 solenv/inc/langlist.mk \
5510 config_host_lang.mk.in \
5513 bin/bffvalidator.sh.in \
5514 bin/odfvalidator.sh.in \
5515 bin/officeotron.sh.in \
5516 hardened_runtime.xcent.in \
5517 instsetoo_native/util/openoffice.lst.in \
5519 sysui/desktop/macosx/Info.plist.in \
5520 .vscode/vs-code-template.code-workspace.in \
5522 | (cd CONF-FOR-BUILD && tar xf -)
5523 cp configure CONF-FOR-BUILD
5524 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5526 unset COM USING_X11 OS CPUNAME
5527 unset CC CXX SYSBASE CFLAGS
5528 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5529 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5530 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5531 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5532 if test -n "$CC_FOR_BUILD"; then
5533 export CC="$CC_FOR_BUILD"
5534 CC_BASE=`first_arg_basename "$CC"`
5536 if test -n "$CXX_FOR_BUILD"; then
5537 export CXX="$CXX_FOR_BUILD"
5538 CXX_BASE=`first_arg_basename "$CXX"`
5540 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5543 # Handle host configuration, which affects the cross-toolset too
5545 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5546 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5547 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5548 if test -n "$ENABLE_JAVA"; then
5550 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5552 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5553 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5556 if test -z "$with_jdk_home"; then
5557 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.])
5562 sub_conf_opts="$sub_conf_opts --without-java"
5564 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5565 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5566 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5567 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5568 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5569 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5571 # Don't bother having configure look for stuff not needed for the build platform anyway
5572 sub_conf_defaults=" \
5573 --build="$build_alias" \
5574 --disable-cairo-canvas \
5576 --disable-firebird-sdbc \
5578 --disable-gstreamer-1-0 \
5581 --disable-mariadb-sdbc \
5583 --disable-online-update \
5585 --disable-pdfimport \
5586 --disable-postgresql-sdbc \
5588 --enable-icecream="$enable_icecream" \
5591 --with-parallelism="$with_parallelism" \
5592 --with-theme="$with_theme" \
5593 --with-tls=openssl \
5595 echo " Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5597 $sub_conf_defaults \
5599 $with_build_platform_configure_options \
5601 2>&1 | sed -e 's/^/ /'
5602 if test [${PIPESTATUS[0]}] -ne 0; then
5603 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5606 # filter permitted build targets
5607 PERMITTED_BUILD_TARGETS="
5640 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5641 # newlined lists, to use grep as a filter
5642 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5643 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5644 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5645 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5647 cp config_host.mk ../config_build.mk
5648 cp config_host_lang.mk ../config_build_lang.mk
5649 mv config.log ../config.Build.log
5650 mkdir -p ../config_build
5651 mv config_host/*.h ../config_build
5652 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5654 # all these will get a _FOR_BUILD postfix
5655 DIRECT_FOR_BUILD_SETTINGS="
5666 LIBO_URE_MISC_FOLDER
5672 # these overwrite host config with build config
5673 OVERWRITING_SETTINGS="
5678 JAVA_CLASSPATH_NOT_SET
5686 # these need some special handling
5687 EXTRA_HANDLED_SETTINGS="
5694 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5698 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5699 echo "$line" >>build-config
5701 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5703 VV=`eval "echo $VV"`
5704 if test -n "$VV"; then
5705 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5706 echo "$line" >>build-config
5710 for V in $OVERWRITING_SETTINGS; do
5712 VV=`eval "echo $VV"`
5713 if test -n "$VV"; then
5714 line=${V}='${'${V}:-$VV'}'
5715 echo "$line" >>build-config
5719 for V in INSTDIR INSTROOT WORKDIR; do
5721 VV=`eval "echo $VV"`
5722 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5723 if test -n "$VV"; then
5724 line="${V}_FOR_BUILD='$VV'"
5725 echo "$line" >>build-config
5730 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5731 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])
5732 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5733 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5735 eval `cat CONF-FOR-BUILD/build-config`
5737 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5739 rm -rf CONF-FOR-BUILD
5743 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5744 CXX_FOR_BUILD="$CXX"
5745 INSTDIR_FOR_BUILD="$INSTDIR"
5746 INSTROOT_FOR_BUILD="$INSTROOT"
5747 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5748 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5749 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5750 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5751 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5752 WORKDIR_FOR_BUILD="$WORKDIR"
5754 AC_SUBST(OS_FOR_BUILD)
5755 AC_SUBST(INSTDIR_FOR_BUILD)
5756 AC_SUBST(INSTROOT_FOR_BUILD)
5757 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5758 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5759 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5760 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5761 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5762 AC_SUBST(WORKDIR_FOR_BUILD)
5763 AC_SUBST(CC_FOR_BUILD)
5764 AC_SUBST(CXX_FOR_BUILD)
5765 AC_SUBST(CPPU_ENV_FOR_BUILD)
5767 dnl ===================================================================
5768 dnl Check for syslog header
5769 dnl ===================================================================
5770 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5772 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5773 dnl ===================================================================
5774 AC_MSG_CHECKING([whether to turn warnings to errors])
5775 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5776 ENABLE_WERROR="TRUE"
5777 PYTHONWARNINGS="error"
5778 AC_MSG_RESULT([yes])
5780 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5781 ENABLE_WERROR="TRUE"
5782 PYTHONWARNINGS="error"
5783 AC_MSG_RESULT([yes])
5788 AC_SUBST(ENABLE_WERROR)
5789 AC_SUBST(PYTHONWARNINGS)
5791 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5792 dnl ===================================================================
5793 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5794 if test -z "$enable_assert_always_abort"; then
5795 if test "$ENABLE_DEBUG" = TRUE; then
5796 enable_assert_always_abort=yes
5798 enable_assert_always_abort=no
5801 if test "$enable_assert_always_abort" = "yes"; then
5802 ASSERT_ALWAYS_ABORT="TRUE"
5803 AC_MSG_RESULT([yes])
5805 ASSERT_ALWAYS_ABORT="FALSE"
5808 AC_SUBST(ASSERT_ALWAYS_ABORT)
5810 # Determine whether to use ooenv for the instdir installation
5811 # ===================================================================
5812 if test $_os != "WINNT" -a $_os != "Darwin"; then
5813 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5814 if test -z "$enable_ooenv"; then
5815 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5821 if test "$enable_ooenv" = "no"; then
5825 AC_MSG_RESULT([yes])
5828 AC_SUBST(ENABLE_OOENV)
5830 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5831 if test "$enable_qt5" = "no"; then
5832 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5838 dnl ===================================================================
5839 dnl check for cups support
5840 dnl ===================================================================
5842 AC_MSG_CHECKING([whether to enable CUPS support])
5843 if test "$test_cups" = yes -a "$enable_cups" != no; then
5845 AC_MSG_RESULT([yes])
5847 AC_MSG_CHECKING([whether cups support is present])
5848 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5849 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5850 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5851 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5857 AC_SUBST(ENABLE_CUPS)
5860 if test "$using_freetype_fontconfig" = yes; then
5861 AC_MSG_CHECKING([which fontconfig to use])
5863 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5864 AC_MSG_RESULT([external])
5865 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5866 SYSTEM_FONTCONFIG=TRUE
5867 FilterLibs "${FONTCONFIG_LIBS}"
5868 FONTCONFIG_LIBS="${filteredlibs}"
5869 elif test "$using_freetype_fontconfig" = yes; then
5870 AC_MSG_RESULT([internal])
5871 BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5873 AC_SUBST(FONTCONFIG_CFLAGS)
5874 AC_SUBST(FONTCONFIG_LIBS)
5875 AC_SUBST([SYSTEM_FONTCONFIG])
5877 dnl whether to find & fetch external tarballs?
5878 dnl ===================================================================
5879 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5880 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5881 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5883 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5886 if test -z "$TARFILE_LOCATION"; then
5887 if test -d "$SRC_ROOT/src" ; then
5888 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5889 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5891 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5893 AbsolutePath "$TARFILE_LOCATION"
5894 PathFormat "${absolute_path}"
5895 TARFILE_LOCATION="${formatted_path}"
5897 AC_SUBST(TARFILE_LOCATION)
5899 AC_MSG_CHECKING([whether we want to fetch tarballs])
5900 if test "$enable_fetch_external" != "no"; then
5901 if test "$with_all_tarballs" = "yes"; then
5902 AC_MSG_RESULT([yes, all of them])
5903 DO_FETCH_TARBALLS="ALL"
5905 AC_MSG_RESULT([yes, if we use them])
5906 DO_FETCH_TARBALLS="TRUE"
5912 AC_SUBST(DO_FETCH_TARBALLS)
5914 dnl Test whether to include MySpell dictionaries
5915 dnl ===================================================================
5916 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5917 if test "$with_myspell_dicts" = "yes"; then
5918 AC_MSG_RESULT([yes])
5919 WITH_MYSPELL_DICTS=TRUE
5920 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5921 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5926 AC_SUBST(WITH_MYSPELL_DICTS)
5928 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5929 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5930 if test "$with_system_dicts" = yes; then
5931 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5933 with_system_dicts=no
5936 AC_MSG_CHECKING([whether to use dicts from external paths])
5937 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5938 AC_MSG_RESULT([yes])
5940 AC_MSG_CHECKING([for spelling dictionary directory])
5941 if test -n "$with_external_dict_dir"; then
5942 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5944 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5945 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5946 DICT_SYSTEM_DIR=file:///usr/share/myspell
5949 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5950 AC_MSG_CHECKING([for hyphenation patterns directory])
5951 if test -n "$with_external_hyph_dir"; then
5952 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5954 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5956 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5957 AC_MSG_CHECKING([for thesaurus directory])
5958 if test -n "$with_external_thes_dir"; then
5959 THES_SYSTEM_DIR=file://$with_external_thes_dir
5961 THES_SYSTEM_DIR=file:///usr/share/mythes
5963 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5968 AC_SUBST(SYSTEM_DICTS)
5969 AC_SUBST(DICT_SYSTEM_DIR)
5970 AC_SUBST(HYPH_SYSTEM_DIR)
5971 AC_SUBST(THES_SYSTEM_DIR)
5973 dnl ===================================================================
5974 dnl Precompiled headers.
5976 AC_MSG_CHECKING([whether to enable pch feature])
5977 if test -z "$enable_pch"; then
5978 if test "$_os" = "WINNT"; then
5979 # Enabled by default on Windows.
5981 # never use sccache on auto-enabled PCH builds, except if requested explicitely
5982 if test -z "$enable_ccache" -a "$SCCACHE"; then
5989 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5990 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5992 if test "$enable_pch" = "system"; then
5994 AC_MSG_RESULT([yes (system headers)])
5995 elif test "$enable_pch" = "base"; then
5997 AC_MSG_RESULT([yes (system and base headers)])
5998 elif test "$enable_pch" = "normal"; then
6000 AC_MSG_RESULT([yes (normal)])
6001 elif test "$enable_pch" = "full"; then
6003 AC_MSG_RESULT([yes (full)])
6004 elif test "$enable_pch" = "yes"; then
6005 # Pick a suitable default.
6006 if test "$GCC" = "yes"; then
6007 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6008 # while making the PCHs larger and rebuilds more likely.
6010 AC_MSG_RESULT([yes (system and base headers)])
6012 # With MSVC the highest level makes a significant difference,
6013 # and it was the default when there used to be no PCH levels.
6015 AC_MSG_RESULT([yes (full)])
6017 elif test "$enable_pch" = "no"; then
6020 AC_MSG_ERROR([Unknown value for --enable-pch])
6022 AC_SUBST(ENABLE_PCH)
6023 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6024 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6025 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6026 if test "$CCACHE_BIN" != "not found"; then
6027 AC_MSG_CHECKING([ccache version])
6028 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6029 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6030 AC_MSG_RESULT([$CCACHE_VERSION])
6031 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6032 if test "$CCACHE_NUMVER" -gt "030701"; then
6033 AC_MSG_RESULT([yes])
6035 AC_MSG_RESULT([no (not newer than 3.7.1)])
6041 PCH_INSTANTIATE_TEMPLATES=
6042 if test -n "$ENABLE_PCH"; then
6043 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6045 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6046 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6048 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6054 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6056 BUILDING_PCH_WITH_OBJ=
6057 if test -n "$ENABLE_PCH"; then
6058 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6060 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6061 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6063 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6069 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6074 if test "$COM" = MSC; then
6075 fpch_prefix="-Xclang "
6077 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6078 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6080 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6081 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6083 PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
6084 PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
6087 if test -n "$PCH_CODEGEN"; then
6093 AC_SUBST(PCH_CODEGEN)
6094 AC_SUBST(PCH_NO_CODEGEN)
6096 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6097 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6099 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6100 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6102 if test -n "$PCH_DEBUGINFO"; then
6108 AC_SUBST(PCH_DEBUGINFO)
6112 AC_MSG_CHECKING([the GNU Make version])
6113 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6114 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6115 if test "$_make_longver" -ge "038200"; then
6116 AC_MSG_RESULT([$GNUMAKE $_make_version])
6118 elif test "$_make_longver" -ge "038100"; then
6119 if test "$build_os" = "cygwin"; then
6120 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6122 AC_MSG_RESULT([$GNUMAKE $_make_version])
6124 dnl ===================================================================
6125 dnl Search all the common names for sha1sum
6126 dnl ===================================================================
6127 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6128 if test -z "$SHA1SUM"; then
6129 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6130 elif test "$SHA1SUM" = "openssl"; then
6131 SHA1SUM="openssl sha1"
6133 AC_MSG_CHECKING([for GNU Make bug 20033])
6134 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6135 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6136 A := \$(wildcard *.a)
6140 <TAB>@echo survived bug20033.
6144 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6157 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6158 <TAB>\$(call d1,\$(CHECKSUM)),\
6159 <TAB>\$(call d2,\$(CHECKSUM)))
6161 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6162 no_parallelism_make="YES"
6163 AC_MSG_RESULT([yes, disable parallelism])
6165 AC_MSG_RESULT([no, keep parallelism enabled])
6167 rm -rf $TESTGMAKEBUG20033
6169 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6172 # find if gnumake support file function
6173 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6174 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6175 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6176 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6178 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6179 \$(file >test.txt,Success )
6186 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6187 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6188 HAVE_GNUMAKE_FILE_FUNC=TRUE
6189 AC_MSG_RESULT([yes])
6193 rm -rf $TESTGMAKEFILEFUNC
6194 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6196 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6198 if test "$_make_ver_check" = ""; then
6202 HAVE_LD_HASH_STYLE=FALSE
6203 WITH_LINKER_HASH_STYLE=
6204 AC_MSG_CHECKING([for --hash-style gcc linker support])
6205 if test "$GCC" = "yes"; then
6206 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6207 hash_styles="gnu sysv"
6208 elif test "$with_linker_hash_style" = "no"; then
6211 hash_styles="$with_linker_hash_style"
6214 for hash_style in $hash_styles; do
6215 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6216 hash_style_ldflags_save=$LDFLAGS
6217 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6219 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6226 HAVE_LD_HASH_STYLE=TRUE
6227 WITH_LINKER_HASH_STYLE=$hash_style
6229 [HAVE_LD_HASH_STYLE=FALSE],
6230 [HAVE_LD_HASH_STYLE=FALSE])
6231 LDFLAGS=$hash_style_ldflags_save
6234 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6235 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6239 LDFLAGS=$hash_style_ldflags_save
6243 AC_SUBST(HAVE_LD_HASH_STYLE)
6244 AC_SUBST(WITH_LINKER_HASH_STYLE)
6246 dnl ===================================================================
6247 dnl Check whether there's a Perl version available.
6248 dnl ===================================================================
6249 if test -z "$with_perl_home"; then
6250 AC_PATH_PROG(PERL, perl)
6252 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6253 _perl_path="$with_perl_home/bin/perl"
6254 if test -x "$_perl_path"; then
6257 AC_MSG_ERROR([$_perl_path not found])
6261 dnl ===================================================================
6262 dnl Testing for Perl version 5 or greater.
6263 dnl $] is the Perl version variable, it is returned as an integer
6264 dnl ===================================================================
6265 if test "$PERL"; then
6266 AC_MSG_CHECKING([the Perl version])
6267 ${PERL} -e "exit($]);"
6269 if test "$_perl_version" -lt 5; then
6270 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6272 AC_MSG_RESULT([Perl $_perl_version])
6274 AC_MSG_ERROR([Perl not found, install Perl 5])
6277 dnl ===================================================================
6278 dnl Testing for required Perl modules
6279 dnl ===================================================================
6281 AC_MSG_CHECKING([for required Perl modules])
6282 perl_use_string="use Cwd ; use Digest::MD5"
6283 if test "$_os" = "WINNT"; then
6284 if test -n "$PKGFORMAT"; then
6285 for i in $PKGFORMAT; do
6288 # for getting fonts versions to use in MSI
6289 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6295 if test "$with_system_hsqldb" = "yes"; then
6296 perl_use_string="$perl_use_string ; use Archive::Zip"
6298 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6299 # OpenSSL needs that to build
6300 perl_use_string="$perl_use_string ; use FindBin"
6302 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6303 AC_MSG_RESULT([all modules found])
6305 AC_MSG_RESULT([failed to find some modules])
6306 # Find out which modules are missing.
6307 for i in $perl_use_string; do
6308 if test "$i" != "use" -a "$i" != ";"; then
6309 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6310 missing_perl_modules="$missing_perl_modules $i"
6315 The missing Perl modules are: $missing_perl_modules
6316 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6319 dnl ===================================================================
6320 dnl Check for pkg-config
6321 dnl ===================================================================
6322 if test "$_os" != "WINNT"; then
6326 if test "$_os" != "WINNT"; then
6328 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6329 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6330 # explicitly. Or put /path/to/compiler in PATH yourself.
6332 # Use wrappers for LTO
6333 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6334 AC_CHECK_TOOL(AR,gcc-ar)
6335 AC_CHECK_TOOL(NM,gcc-nm)
6336 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6338 AC_CHECK_TOOL(AR,ar)
6339 AC_CHECK_TOOL(NM,nm)
6340 AC_CHECK_TOOL(RANLIB,ranlib)
6342 AC_CHECK_TOOL(OBJDUMP,objdump)
6343 AC_CHECK_TOOL(READELF,readelf)
6344 AC_CHECK_TOOL(STRIP,strip)
6350 AC_SUBST(PKG_CONFIG)
6351 AC_SUBST(PKG_CONFIG_PATH)
6352 AC_SUBST(PKG_CONFIG_LIBDIR)
6357 dnl ===================================================================
6358 dnl pkg-config checks on macOS
6359 dnl ===================================================================
6361 if test $_os = Darwin; then
6362 AC_MSG_CHECKING([for bogus pkg-config])
6363 if test -n "$PKG_CONFIG"; then
6364 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6365 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6367 if test "$enable_bogus_pkg_config" = "yes"; then
6368 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6370 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.])
6374 AC_MSG_RESULT([no, good])
6380 # Return value: $csctest
6384 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6385 if test -n "$regvalue"; then
6393 # Return value: $altest
6397 # We need this check to detect 4.6.1 or above.
6398 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6399 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6400 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6406 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6407 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6408 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6419 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6420 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6421 if test -n "$regvalue"; then
6428 find_winsdk_version()
6430 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6431 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6433 unset winsdktest winsdkbinsubdir winsdklibsubdir
6437 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6438 if test -n "$regvalue"; then
6439 winsdktest=$regvalue
6440 winsdklibsubdir=win8
6445 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6446 if test -n "$regvalue"; then
6447 winsdktest=$regvalue
6448 winsdklibsubdir=winv6.3
6453 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6454 if test -n "$regvalue"; then
6455 winsdktest=$regvalue
6456 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6457 if test -n "$regvalue"; then
6458 winsdkbinsubdir="$regvalue".0
6459 winsdklibsubdir=$winsdkbinsubdir
6460 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6461 local tmppath_unix=$(cygpath -u "$tmppath")
6462 # test exist the SDK path
6463 if test -d "$tmppath_unix"; then
6464 # when path is convertible to a short path then path is okay
6465 cygpath -d "$tmppath" >/dev/null 2>&1
6466 if test $? -ne 0; then
6467 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6470 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6481 # Return value: From find_winsdk_version
6485 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6486 find_winsdk_version $ver
6487 if test -n "$winsdktest"; then
6495 # Return value: $msmdir
6497 AC_MSG_CHECKING([for MSVC merge modules directory])
6501 dnl Order my_msm_files in increasing order. Then check the directories returned
6502 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6503 dnl the result will be the highest MSM version found in the highest directory.
6507 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6510 for f in $my_msm_files; do
6511 echo "$as_me:$LINENO: searching for $f" >&5
6517 for f in ${my_msm_files}; do
6518 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6519 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6520 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6521 if test -e "$my_msm_dir${f}"; then
6529 if test -n "$msmdir"; then
6530 msmdir=`cygpath -m "$msmdir"`
6531 AC_MSG_RESULT([$msmdir])
6533 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6534 AC_MSG_FAILURE([not found])
6536 AC_MSG_WARN([not found (check config.log)])
6537 add_warning "MSM none of ${my_msm_files} found"
6542 find_msvc_x64_dlls()
6544 # Return value: $msvcdllpath, $msvcdlls
6546 AC_MSG_CHECKING([for MSVC x64 DLL path])
6548 dnl Order crtver in increasing order. Then check the directories returned by
6549 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6550 dnl the result will be the highest CRT version found in the highest directory.
6552 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6555 for crtver in 141 142 143; do
6556 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6557 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6558 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6559 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6565 AC_MSG_RESULT([$msvcdllpath])
6566 AC_MSG_CHECKING([for MSVC x64 DLLs])
6567 msvcdlls="msvcp140.dll vcruntime140.dll"
6568 for dll in $msvcdlls; do
6569 if ! test -f "$msvcdllpath/$dll"; then
6570 AC_MSG_FAILURE([missing $dll])
6573 AC_MSG_RESULT([found all ($msvcdlls)])
6576 dnl =========================================
6577 dnl Check for the Windows SDK.
6578 dnl =========================================
6579 if test "$_os" = "WINNT"; then
6580 AC_MSG_CHECKING([for Windows SDK])
6581 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6583 WINDOWS_SDK_HOME=$winsdktest
6585 # normalize if found
6586 if test -n "$WINDOWS_SDK_HOME"; then
6587 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6588 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6591 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6594 if test -n "$WINDOWS_SDK_HOME"; then
6595 # Remove a possible trailing backslash
6596 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6598 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6599 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6600 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6601 have_windows_sdk_headers=yes
6602 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6603 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6604 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6605 have_windows_sdk_headers=yes
6606 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6607 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6608 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6609 have_windows_sdk_headers=yes
6611 have_windows_sdk_headers=no
6614 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6615 have_windows_sdk_libs=yes
6616 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6617 have_windows_sdk_libs=yes
6619 have_windows_sdk_libs=no
6622 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6623 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6624 the Windows SDK are installed.])
6628 if test -z "$WINDOWS_SDK_HOME"; then
6629 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6630 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6631 WINDOWS_SDK_VERSION=80
6632 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6633 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6634 WINDOWS_SDK_VERSION=81
6635 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6636 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6637 WINDOWS_SDK_VERSION=10
6638 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6640 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6642 PathFormat "$WINDOWS_SDK_HOME"
6643 WINDOWS_SDK_HOME="$formatted_path"
6644 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6645 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6646 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6647 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6648 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6649 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6650 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6654 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6655 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6656 dnl but not in v8.0), so allow this to be overridden with a
6657 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6658 dnl and configuration error if no WiLangId.vbs is found would arguably be
6659 dnl better, but I do not know under which conditions exactly it is needed by
6661 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6662 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6663 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6664 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6665 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6666 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6668 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6669 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6670 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6672 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6673 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6674 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6677 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6678 if test -n "$with_package_format" -a "$with_package_format" != no; then
6679 for i in "$with_package_format"; do
6680 if test "$i" = "msi"; then
6681 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6682 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6689 AC_SUBST(WINDOWS_SDK_HOME)
6690 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6691 AC_SUBST(WINDOWS_SDK_VERSION)
6692 AC_SUBST(WINDOWS_SDK_WILANGID)
6694 if test "$build_os" = "cygwin"; then
6695 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6696 dnl dir, it also determines that dir's path w/o an arch segment if any,
6697 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6698 AC_MSG_CHECKING([for midl.exe])
6701 if test -n "$winsdkbinsubdir" \
6702 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6704 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6705 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6706 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6707 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6708 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6709 elif test -f "$winsdktest/Bin/midl.exe"; then
6710 MIDL_PATH=$winsdktest/Bin
6711 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6713 if test ! -f "$MIDL_PATH/midl.exe"; then
6714 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6716 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6719 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6720 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6722 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6723 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6724 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6725 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6726 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6727 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6728 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6729 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6730 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6731 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6732 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6733 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6735 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6739 AC_MSG_CHECKING([for csc.exe])
6741 if test -f "$csctest/csc.exe"; then
6744 if test ! -f "$CSC_PATH/csc.exe"; then
6745 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6747 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6750 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6753 AC_MSG_CHECKING([for al.exe])
6755 if test -n "$winsdkbinsubdir" \
6756 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6758 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6759 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6760 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6761 elif test -f "$winsdktest/Bin/al.exe"; then
6762 AL_PATH="$winsdktest/Bin"
6765 if test -z "$AL_PATH"; then
6767 if test -f "$altest/bin/al.exe"; then
6768 AL_PATH="$altest/bin"
6769 elif test -f "$altest/al.exe"; then
6773 if test ! -f "$AL_PATH/al.exe"; then
6774 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6776 AC_MSG_RESULT([$AL_PATH/al.exe])
6779 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6781 dnl Check mscoree.lib / .NET Framework dir
6782 AC_MSG_CHECKING(.NET Framework)
6784 PathFormat "$frametest"
6785 frametest="$formatted_path"
6786 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6787 DOTNET_FRAMEWORK_HOME="$frametest"
6790 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6791 DOTNET_FRAMEWORK_HOME="$winsdktest"
6794 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
6795 AC_MSG_ERROR([mscoree.lib not found])
6797 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6799 PathFormat "$MIDL_PATH"
6800 MIDL_PATH="$formatted_path"
6802 PathFormat "$AL_PATH"
6803 AL_PATH="$formatted_path"
6805 PathFormat "$DOTNET_FRAMEWORK_HOME"
6806 DOTNET_FRAMEWORK_HOME="$formatted_path"
6808 PathFormat "$CSC_PATH"
6809 CSC_PATH="$formatted_path"
6812 dnl ===================================================================
6813 dnl Testing for C++ compiler and version...
6814 dnl ===================================================================
6816 if test "$_os" != "WINNT"; then
6817 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6818 save_CXXFLAGS=$CXXFLAGS
6820 CXXFLAGS=$save_CXXFLAGS
6821 if test -z "$CXX_BASE"; then
6822 CXX_BASE=`first_arg_basename "$CXX"`
6826 dnl check for GNU C++ compiler version
6827 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6828 AC_MSG_CHECKING([the GNU C++ compiler version])
6830 _gpp_version=`$CXX -dumpversion`
6831 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6833 if test "$_gpp_majmin" -lt "700"; then
6834 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6836 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6839 dnl see https://code.google.com/p/android/issues/detail?id=41770
6843 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6844 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6845 #include <bits/c++config.h>]],[[
6846 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6847 && !defined(_GLIBCXX__PTHREADS) \
6848 && !defined(_GLIBCXX_HAS_GTHREADS)
6851 ]])],[AC_MSG_RESULT([yes])
6852 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6854 if test $glibcxx_threads = yes; then
6855 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6858 AC_SUBST(BOOST_CXXFLAGS)
6861 # prefx CXX with ccache if needed
6863 if test "$CCACHE" != ""; then
6864 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6866 save_CXXFLAGS=$CXXFLAGS
6867 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6868 # msvc does not fail on unknown options, check stdout
6869 if test "$COM" = MSC; then
6870 CXXFLAGS="$CXXFLAGS -nologo"
6872 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6873 ac_cxx_werror_flag=yes
6874 dnl an empty program will do, we're checking the compiler flags
6875 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6876 [use_ccache=yes], [use_ccache=no])
6877 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6878 AC_MSG_RESULT([yes])
6881 CXX_BASE="ccache $CXX_BASE"
6884 CXXFLAGS=$save_CXXFLAGS
6885 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6889 dnl ===================================================================
6890 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6891 dnl ===================================================================
6893 if test "$_os" != "WINNT"; then
6896 dnl Check whether there's a C pre-processor.
6901 dnl ===================================================================
6902 dnl Find integral type sizes and alignments
6903 dnl ===================================================================
6905 if test "$_os" != "WINNT"; then
6907 AC_CHECK_SIZEOF(long)
6908 AC_CHECK_SIZEOF(short)
6909 AC_CHECK_SIZEOF(int)
6910 AC_CHECK_SIZEOF(long long)
6911 AC_CHECK_SIZEOF(double)
6912 AC_CHECK_SIZEOF(void*)
6913 AC_CHECK_SIZEOF(size_t)
6915 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6916 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6917 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6918 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6919 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6920 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6922 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6923 m4_pattern_allow([AC_CHECK_ALIGNOF])
6924 m4_ifdef([AC_CHECK_ALIGNOF],
6926 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6927 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6928 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6929 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6932 case "$_os-$host_cpu" in
6934 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6935 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6936 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6937 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6940 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6941 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6942 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6943 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6946 if test -z "$ac_cv_alignof_short" -o \
6947 -z "$ac_cv_alignof_int" -o \
6948 -z "$ac_cv_alignof_long" -o \
6949 -z "$ac_cv_alignof_double"; then
6950 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.])
6956 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6957 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6958 if test $ac_cv_sizeof_long -eq 8; then
6959 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6960 elif test $ac_cv_sizeof_double -eq 8; then
6961 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6963 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6966 dnl Check for large file support
6968 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6969 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6971 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6972 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6976 SAL_TYPES_SIZEOFSHORT=2
6977 SAL_TYPES_SIZEOFINT=4
6978 SAL_TYPES_SIZEOFLONG=4
6979 SAL_TYPES_SIZEOFLONGLONG=8
6980 if test $WIN_HOST_BITS -eq 32; then
6981 SAL_TYPES_SIZEOFPOINTER=4
6984 SAL_TYPES_SIZEOFPOINTER=8
6987 SAL_TYPES_ALIGNMENT2=2
6988 SAL_TYPES_ALIGNMENT4=4
6989 SAL_TYPES_ALIGNMENT8=8
6992 AC_SUBST(LFS_CFLAGS)
6993 AC_SUBST(SIZEOF_SIZE_T)
6995 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6996 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6997 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6998 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6999 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7000 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7001 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7002 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7004 dnl ===================================================================
7005 dnl Check whether to enable runtime optimizations
7006 dnl ===================================================================
7007 ENABLE_RUNTIME_OPTIMIZATIONS=
7008 AC_MSG_CHECKING([whether to enable runtime optimizations])
7009 if test -z "$enable_runtime_optimizations"; then
7013 enable_runtime_optimizations=no
7019 if test "$enable_runtime_optimizations" != no; then
7020 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7021 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7022 AC_MSG_RESULT([yes])
7026 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7028 dnl ===================================================================
7029 dnl Check if valgrind headers are available
7030 dnl ===================================================================
7032 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7033 prev_cppflags=$CPPFLAGS
7034 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7035 # or where does it come from?
7036 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7037 AC_CHECK_HEADER([valgrind/valgrind.h],
7038 [ENABLE_VALGRIND=TRUE])
7039 CPPFLAGS=$prev_cppflags
7041 AC_SUBST([ENABLE_VALGRIND])
7042 if test -z "$ENABLE_VALGRIND"; then
7043 if test "$with_valgrind" = yes; then
7044 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7048 AC_SUBST([VALGRIND_CFLAGS])
7051 dnl ===================================================================
7052 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7053 dnl ===================================================================
7055 # We need at least the sys/sdt.h include header.
7056 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7057 if test "$SDT_H_FOUND" = "TRUE"; then
7058 # Found sys/sdt.h header, now make sure the c++ compiler works.
7059 # Old g++ versions had problems with probes in constructors/destructors.
7060 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7062 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7063 #include <sys/sdt.h>
7071 ProbeClass(int& v, const char *n) : ref(v), name(n)
7073 DTRACE_PROBE2(_test_, cons, name, ref);
7076 void method(int min)
7078 DTRACE_PROBE3(_test_, meth, name, ref, min);
7084 DTRACE_PROBE2(_test_, dest, name, ref);
7089 DTRACE_PROBE1(_test_, call, i);
7090 ProbeClass inst = ProbeClass(i, "call");
7092 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7093 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7096 AC_CONFIG_HEADERS([config_host/config_probes.h])
7098 dnl ===================================================================
7100 dnl ===================================================================
7101 HAVE_GCC_STACK_CLASH_PROTECTION=
7102 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7103 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7105 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7107 [AC_LANG_PROGRAM(, [[return 0;]])],
7108 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7109 [AC_MSG_RESULT([no])])
7112 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7114 CFLAGS="$CFLAGS -Werror -mno-avx"
7115 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7117 if test "$HAVE_GCC_AVX" = "TRUE"; then
7118 AC_MSG_RESULT([yes])
7123 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7124 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7126 if (__sync_add_and_fetch(&v, 1) != 1 ||
7127 __sync_sub_and_fetch(&v, 1) != 0)
7129 __sync_synchronize();
7130 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7134 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7135 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7136 AC_MSG_RESULT([yes])
7137 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7142 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7144 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7147 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7149 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7150 AC_MSG_RESULT([yes])
7151 ], [AC_MSG_RESULT([no])])
7154 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7156 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7159 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7161 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7162 AC_MSG_RESULT([yes])
7163 ], [AC_MSG_RESULT([no])])
7166 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7168 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7170 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7172 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7173 AC_MSG_RESULT([yes])
7174 ], [AC_MSG_RESULT([no])])
7177 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7179 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7182 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7184 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7185 AC_MSG_RESULT([yes])
7186 ], [AC_MSG_RESULT([no])])
7189 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7191 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7194 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7196 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7197 AC_MSG_RESULT([yes])
7198 ], [AC_MSG_RESULT([no])])
7201 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7203 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7205 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7207 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7208 AC_MSG_RESULT([yes])
7209 ], [AC_MSG_RESULT([no])])
7212 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7214 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7216 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7218 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7219 AC_MSG_RESULT([yes])
7220 ], [AC_MSG_RESULT([no])])
7223 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7225 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7227 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7229 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7230 AC_MSG_RESULT([yes])
7231 ], [AC_MSG_RESULT([no])])
7234 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7236 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7239 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7241 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7242 AC_MSG_RESULT([yes])
7243 ], [AC_MSG_RESULT([no])])
7246 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7248 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7251 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7253 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7254 AC_MSG_RESULT([yes])
7255 ], [AC_MSG_RESULT([no])])
7259 AC_SUBST(HAVE_GCC_AVX)
7260 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7261 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7263 dnl ===================================================================
7264 dnl Identify the C++ library
7265 dnl ===================================================================
7267 AC_MSG_CHECKING([what the C++ library is])
7270 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7276 [CPP_LIBRARY=GLIBCXX
7277 cpp_library_name="GNU libstdc++"
7280 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7282 #ifndef _LIBCPP_VERSION
7287 cpp_library_name="LLVM libc++"
7288 AC_DEFINE([HAVE_LIBCXX])
7290 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7297 cpp_library_name="Microsoft"
7299 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7300 AC_MSG_RESULT([$cpp_library_name])
7302 AC_SUBST([HAVE_LIBSTDCPP])
7304 dnl ===================================================================
7306 dnl ===================================================================
7307 AC_PATH_PROG(GPERF, gperf)
7308 if test -z "$GPERF"; then
7309 AC_MSG_ERROR([gperf not found but needed. Install it.])
7311 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7312 GPERF=`cygpath -m $GPERF`
7314 AC_MSG_CHECKING([whether gperf is new enough])
7315 my_gperf_ver1=$($GPERF --version | head -n 1)
7316 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7317 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7318 if test "$my_gperf_ver3" -ge 301; then
7319 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7321 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7325 dnl ===================================================================
7326 dnl Check for system libcmis
7327 dnl ===================================================================
7328 # libcmis requires curl and we can't build curl for iOS
7329 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7330 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7335 AC_SUBST(ENABLE_LIBCMIS)
7337 dnl ===================================================================
7339 dnl ===================================================================
7341 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7343 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7344 if test "$with_latest_c__" = yes; then
7345 CXXFLAGS_CXX11=-std:c++latest
7347 CXXFLAGS_CXX11=-std:c++17
7349 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7350 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7351 my_flags='-std=c++17 -std=c++1z'
7352 if test "$with_latest_c__" = yes; then
7353 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7355 for flag in $my_flags; do
7356 if test "$COM" = MSC; then
7357 flag="-Xclang $flag"
7359 save_CXXFLAGS=$CXXFLAGS
7360 CXXFLAGS="$CXXFLAGS $flag -Werror"
7361 if test "$SYSTEM_LIBCMIS" = TRUE; then
7362 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7365 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7366 #include <algorithm>
7367 #include <functional>
7370 #if defined SYSTEM_LIBCMIS
7371 // See ucb/source/ucp/cmis/auth_provider.hxx:
7372 #if !defined __clang__
7373 #pragma GCC diagnostic push
7374 #pragma GCC diagnostic ignored "-Wdeprecated"
7375 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7377 #include <libcmis/libcmis.hxx>
7378 #if !defined __clang__
7379 #pragma GCC diagnostic pop
7383 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7384 std::sort(v.begin(), v.end(), fn);
7386 ]])],[CXXFLAGS_CXX11=$flag])
7388 CXXFLAGS=$save_CXXFLAGS
7389 if test -n "$CXXFLAGS_CXX11"; then
7394 if test -n "$CXXFLAGS_CXX11"; then
7395 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7399 AC_SUBST(CXXFLAGS_CXX11)
7401 if test "$GCC" = "yes"; then
7402 save_CXXFLAGS=$CXXFLAGS
7403 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7405 CXXFLAGS=$save_CXXFLAGS
7406 AC_SUBST(ATOMIC_LIB)
7409 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7410 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7411 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7412 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7413 dnl again towards 4.7.2:
7414 if test $CPP_LIBRARY = GLIBCXX; then
7415 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7417 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7419 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7420 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7421 // GCC 4.7.0: 20120322
7422 // GCC 4.7.1: 20120614
7423 // and using a range check is not possible as the mapping between
7424 // __GLIBCXX__ values and GCC versions is not monotonic
7429 ]])], [AC_MSG_RESULT(no, ok)],
7430 [AC_MSG_ERROR(yes)])
7434 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7435 save_CXXFLAGS=$CXXFLAGS
7436 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7439 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7442 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7458 a thinga[]={{0,0}, {1,1}};
7459 b thingb[]={{0,0}, {1,1}};
7460 size_t i = sizeof(sal_n_array_size(thinga));
7461 size_t j = sizeof(sal_n_array_size(thingb));
7462 return !(i != 0 && j != 0);
7464 ], [ AC_MSG_RESULT(yes) ],
7465 [ AC_MSG_ERROR(no)])
7467 CXXFLAGS=$save_CXXFLAGS
7469 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7470 if test "$GCC" = yes; then
7471 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7473 save_CXXFLAGS=$CXXFLAGS
7474 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7475 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7476 CXXFLAGS=$save_CXXFLAGS
7478 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7479 AC_MSG_RESULT([yes])
7484 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7486 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7488 save_CXXFLAGS=$CXXFLAGS
7489 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7490 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7491 #include <algorithm>
7492 #include <initializer_list>
7494 template<typename T> class S {
7498 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7500 constinit S<int> s{3, 2, 1};
7502 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7503 AC_MSG_RESULT([yes])
7504 ], [AC_MSG_RESULT([no])])
7505 CXXFLAGS=$save_CXXFLAGS
7508 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7510 save_CXXFLAGS=$CXXFLAGS
7511 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7512 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7514 #include <type_traits>
7515 // Don't check size_type directly, as it was called index_type before P1872R0:
7516 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7518 AC_DEFINE([HAVE_CPP_SPAN],[1])
7519 AC_MSG_RESULT([yes])
7520 ], [AC_MSG_RESULT([no])])
7521 CXXFLAGS=$save_CXXFLAGS
7524 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7526 save_CXXFLAGS=$CXXFLAGS
7527 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7528 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7529 struct S1 { S1(S1 &&); };
7531 S1 f(S2 s) { return s; }
7533 AC_DEFINE([HAVE_P1155R3],[1])
7534 AC_MSG_RESULT([yes])
7535 ], [AC_MSG_RESULT([no])])
7536 CXXFLAGS=$save_CXXFLAGS
7539 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7540 HAVE_CXX20_ATOMIC_REF=
7542 save_CXXFLAGS=$CXXFLAGS
7543 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7544 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7547 std::atomic_ref<int> y(x);
7549 HAVE_CXX20_ATOMIC_REF=TRUE
7550 AC_MSG_RESULT([yes])
7551 ], [AC_MSG_RESULT([no])])
7552 CXXFLAGS=$save_CXXFLAGS
7554 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7556 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7557 dnl which is included in -Wextra anyway):
7558 HAVE_WDEPRECATED_COPY_DTOR=
7559 if test "$GCC" = yes; then
7560 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7562 save_CXXFLAGS=$CXXFLAGS
7563 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7564 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7565 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7566 AC_MSG_RESULT([yes])
7567 ], [AC_MSG_RESULT([no])])
7568 CXXFLAGS=$save_CXXFLAGS
7571 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7573 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7574 dnl uninitialized warning for code like
7577 dnl boost::optional<OString> * g(bool b) {
7578 dnl boost::optional<OString> o;
7580 dnl return new boost::optional<OString>(o);
7583 dnl (as is e.g. present, in a slightly more elaborate form, in
7584 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7585 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7586 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7587 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7588 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7590 save_CXXFLAGS=$CXXFLAGS
7591 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7592 if test "$ENABLE_OPTIMIZED" = TRUE; then
7593 CXXFLAGS="$CXXFLAGS -O2"
7595 CXXFLAGS="$CXXFLAGS -O0"
7597 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7606 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7607 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7613 char stg[sizeof (S1)];
7621 ]])], [AC_MSG_RESULT([no])], [
7622 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7623 AC_MSG_RESULT([yes])
7625 CXXFLAGS=$save_CXXFLAGS
7628 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7630 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7631 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7632 dnl hits us e.g. with GCC 10 and --enable-optimized at
7634 dnl In file included from include/rtl/string.hxx:49,
7635 dnl from include/rtl/ustring.hxx:43,
7636 dnl from include/osl/file.hxx:35,
7637 dnl from include/codemaker/global.hxx:28,
7638 dnl from include/codemaker/options.hxx:23,
7639 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7640 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7641 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,
7642 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,
7643 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,
7644 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7645 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7646 dnl 78 | memcpy( buffer, data, length );
7647 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7648 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7649 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7650 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7652 save_CXXFLAGS=$CXXFLAGS
7653 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7654 if test "$ENABLE_OPTIMIZED" = TRUE; then
7655 CXXFLAGS="$CXXFLAGS -O2"
7657 CXXFLAGS="$CXXFLAGS -O0"
7659 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7660 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7661 void fill(char const * begin, char const * end, char c);
7667 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7668 __builtin_strncpy(c.username, "root", sizeof(c.username));
7670 ]])], [AC_MSG_RESULT([no])], [
7671 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7672 AC_MSG_RESULT([yes])
7674 CXXFLAGS=$save_CXXFLAGS
7677 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7679 HAVE_DLLEXPORTINLINES=
7680 dnl At least for Clang 14 trunk, -Zc:dllexportInlines- would cause lots of unresolved symbols when
7681 dnl linking e.g. Library_cppuhelper, for whatever reason:
7682 if test "$_os" = "WINNT" && test "$COM_IS_CLANG" != TRUE; then
7683 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7685 save_CXXFLAGS=$CXXFLAGS
7686 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7687 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7688 HAVE_DLLEXPORTINLINES=TRUE
7689 AC_MSG_RESULT([yes])
7690 ], [AC_MSG_RESULT([no])])
7691 CXXFLAGS=$save_CXXFLAGS
7694 AC_SUBST([HAVE_DLLEXPORTINLINES])
7696 dnl ===================================================================
7697 dnl CPU Intrinsics support - SSE, AVX
7698 dnl ===================================================================
7700 CXXFLAGS_INTRINSICS_SSE2=
7701 CXXFLAGS_INTRINSICS_SSSE3=
7702 CXXFLAGS_INTRINSICS_SSE41=
7703 CXXFLAGS_INTRINSICS_SSE42=
7704 CXXFLAGS_INTRINSICS_AVX=
7705 CXXFLAGS_INTRINSICS_AVX2=
7706 CXXFLAGS_INTRINSICS_AVX512=
7707 CXXFLAGS_INTRINSICS_AVX512F=
7708 CXXFLAGS_INTRINSICS_F16C=
7709 CXXFLAGS_INTRINSICS_FMA=
7711 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7712 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7719 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7720 flag_avx512f=-mavx512f
7724 # With MSVC using -arch is in fact not necessary for being able
7725 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7726 # even if compiled with -arch:AVX, the -arch option really only affects
7727 # instructions generated for C/C++ code.
7728 # So use the matching same (or lower) -arch options, but only in order
7729 # to generate the best matching instructions for the C++ code surrounding
7731 # SSE2 is the default for x86/x64, so no need to specify the option.
7733 # No specific options for these, use the next lower.
7734 flag_ssse3="$flag_sse2"
7735 flag_sse41="$flag_sse2"
7736 flag_sse42="$flag_sse2"
7738 flag_avx2=-arch:AVX2
7739 flag_avx512=-arch:AVX512
7740 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7741 flag_avx512f=-arch:AVX2
7742 # No MSVC options for these.
7743 flag_f16c="$flag_sse2"
7744 flag_fma="$flag_sse2"
7747 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7749 save_CXXFLAGS=$CXXFLAGS
7750 CXXFLAGS="$CXXFLAGS $flag_sse2"
7751 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7752 #include <emmintrin.h>
7754 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7755 c = _mm_xor_si128 (a, b);
7759 [can_compile_sse2=yes],
7760 [can_compile_sse2=no])
7762 CXXFLAGS=$save_CXXFLAGS
7763 AC_MSG_RESULT([${can_compile_sse2}])
7764 if test "${can_compile_sse2}" = "yes" ; then
7765 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7768 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7770 save_CXXFLAGS=$CXXFLAGS
7771 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7772 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7773 #include <tmmintrin.h>
7775 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7776 c = _mm_maddubs_epi16 (a, b);
7780 [can_compile_ssse3=yes],
7781 [can_compile_ssse3=no])
7783 CXXFLAGS=$save_CXXFLAGS
7784 AC_MSG_RESULT([${can_compile_ssse3}])
7785 if test "${can_compile_ssse3}" = "yes" ; then
7786 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7789 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7791 save_CXXFLAGS=$CXXFLAGS
7792 CXXFLAGS="$CXXFLAGS $flag_sse41"
7793 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7794 #include <smmintrin.h>
7796 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7797 c = _mm_cmpeq_epi64 (a, b);
7801 [can_compile_sse41=yes],
7802 [can_compile_sse41=no])
7804 CXXFLAGS=$save_CXXFLAGS
7805 AC_MSG_RESULT([${can_compile_sse41}])
7806 if test "${can_compile_sse41}" = "yes" ; then
7807 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7810 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7812 save_CXXFLAGS=$CXXFLAGS
7813 CXXFLAGS="$CXXFLAGS $flag_sse42"
7814 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7815 #include <nmmintrin.h>
7817 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7818 c = _mm_cmpgt_epi64 (a, b);
7822 [can_compile_sse42=yes],
7823 [can_compile_sse42=no])
7825 CXXFLAGS=$save_CXXFLAGS
7826 AC_MSG_RESULT([${can_compile_sse42}])
7827 if test "${can_compile_sse42}" = "yes" ; then
7828 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7831 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7833 save_CXXFLAGS=$CXXFLAGS
7834 CXXFLAGS="$CXXFLAGS $flag_avx"
7835 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7836 #include <immintrin.h>
7838 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7839 c = _mm256_xor_ps(a, b);
7843 [can_compile_avx=yes],
7844 [can_compile_avx=no])
7846 CXXFLAGS=$save_CXXFLAGS
7847 AC_MSG_RESULT([${can_compile_avx}])
7848 if test "${can_compile_avx}" = "yes" ; then
7849 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7852 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7854 save_CXXFLAGS=$CXXFLAGS
7855 CXXFLAGS="$CXXFLAGS $flag_avx2"
7856 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7857 #include <immintrin.h>
7859 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7860 c = _mm256_maddubs_epi16(a, b);
7864 [can_compile_avx2=yes],
7865 [can_compile_avx2=no])
7867 CXXFLAGS=$save_CXXFLAGS
7868 AC_MSG_RESULT([${can_compile_avx2}])
7869 if test "${can_compile_avx2}" = "yes" ; then
7870 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7873 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7875 save_CXXFLAGS=$CXXFLAGS
7876 CXXFLAGS="$CXXFLAGS $flag_avx512"
7877 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7878 #include <immintrin.h>
7880 __m512i a = _mm512_loadu_si512(0);
7881 __m512d v1 = _mm512_load_pd(0);
7882 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7883 __m512d v2 = _mm512_abs_pd(v1);
7887 [can_compile_avx512=yes],
7888 [can_compile_avx512=no])
7890 CXXFLAGS=$save_CXXFLAGS
7891 AC_MSG_RESULT([${can_compile_avx512}])
7892 if test "${can_compile_avx512}" = "yes" ; then
7893 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7894 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7897 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7899 save_CXXFLAGS=$CXXFLAGS
7900 CXXFLAGS="$CXXFLAGS $flag_f16c"
7901 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7902 #include <immintrin.h>
7904 __m128i a = _mm_set1_epi32 (0);
7906 c = _mm_cvtph_ps(a);
7910 [can_compile_f16c=yes],
7911 [can_compile_f16c=no])
7913 CXXFLAGS=$save_CXXFLAGS
7914 AC_MSG_RESULT([${can_compile_f16c}])
7915 if test "${can_compile_f16c}" = "yes" ; then
7916 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7919 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7921 save_CXXFLAGS=$CXXFLAGS
7922 CXXFLAGS="$CXXFLAGS $flag_fma"
7923 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7924 #include <immintrin.h>
7926 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7927 d = _mm256_fmadd_ps(a, b, c);
7931 [can_compile_fma=yes],
7932 [can_compile_fma=no])
7934 CXXFLAGS=$save_CXXFLAGS
7935 AC_MSG_RESULT([${can_compile_fma}])
7936 if test "${can_compile_fma}" = "yes" ; then
7937 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7940 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7941 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7942 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7943 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7944 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7945 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7946 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7947 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7948 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7949 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7951 dnl ===================================================================
7952 dnl system stl sanity tests
7953 dnl ===================================================================
7954 if test "$_os" != "WINNT"; then
7958 save_CPPFLAGS="$CPPFLAGS"
7959 if test -n "$MACOSX_SDK_PATH"; then
7960 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7963 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7965 if test "$CPP_LIBRARY" = GLIBCXX; then
7966 dnl gcc#19664, gcc#22482, rhbz#162935
7967 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7968 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7969 AC_MSG_RESULT([$stlvisok])
7970 if test "$stlvisok" = "no"; then
7971 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7975 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7976 # when we don't make any dynamic libraries?
7977 if test "$DISABLE_DYNLOADING" = ""; then
7978 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7979 cat > conftestlib1.cc <<_ACEOF
7980 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7981 struct S2: S1<int> { virtual ~S2(); };
7984 cat > conftestlib2.cc <<_ACEOF
7985 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7986 struct S2: S1<int> { virtual ~S2(); };
7987 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7989 gccvisinlineshiddenok=yes
7990 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7991 gccvisinlineshiddenok=no
7993 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7994 dnl known to not work with -z defs (unsetting which makes the test
7996 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7997 if test "$COM_IS_CLANG" = TRUE; then
7998 for i in $CXX $CXXFLAGS; do
8001 my_linkflagsnoundefs=
8007 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8008 gccvisinlineshiddenok=no
8013 AC_MSG_RESULT([$gccvisinlineshiddenok])
8014 if test "$gccvisinlineshiddenok" = "no"; then
8015 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8019 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8020 cat >visibility.cxx <<_ACEOF
8021 #pragma GCC visibility push(hidden)
8022 struct __attribute__ ((visibility ("default"))) TestStruct {
8025 __attribute__ ((visibility ("default"))) void TestFunc() {
8029 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8034 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8037 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8049 rm -f visibility.s visibility.cxx
8051 AC_MSG_RESULT([$gccvisbroken])
8052 if test "$gccvisbroken" = "yes"; then
8053 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8056 CPPFLAGS="$save_CPPFLAGS"
8058 AC_MSG_CHECKING([if CET endbranch is recognized])
8059 cat > endbr.s <<_ACEOF
8062 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8063 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8064 AC_MSG_RESULT([yes])
8065 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8069 rm -f endbr.s endbr.o
8070 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8075 dnl ===================================================================
8077 dnl ===================================================================
8079 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8080 if test "$GCC" = "yes"; then
8081 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8083 save_CXXFLAGS=$CXXFLAGS
8084 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8085 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8086 CXXFLAGS=$save_CXXFLAGS
8088 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8089 AC_MSG_RESULT([yes])
8094 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8096 dnl ===================================================================
8097 dnl Compiler plugins
8098 dnl ===================================================================
8101 # currently only Clang
8103 if test "$COM_IS_CLANG" != "TRUE"; then
8104 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8105 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8106 enable_compiler_plugins=no
8110 COMPILER_PLUGINS_COM_IS_CLANG=
8111 if test "$COM_IS_CLANG" = "TRUE"; then
8112 if test -n "$enable_compiler_plugins"; then
8113 compiler_plugins="$enable_compiler_plugins"
8114 elif test -n "$ENABLE_DBGUTIL"; then
8115 compiler_plugins=test
8119 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8120 if test "$CLANGVER" -lt 50002; then
8121 if test "$compiler_plugins" = yes; then
8122 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8128 if test "$compiler_plugins" != "no"; then
8129 dnl The prefix where Clang resides, override to where Clang resides if
8130 dnl using a source build:
8131 if test -z "$CLANGDIR"; then
8132 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8134 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8135 if test -z "$COMPILER_PLUGINS_CXX"; then
8136 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8138 clangbindir=$CLANGDIR/bin
8139 if test "$build_os" = "cygwin"; then
8140 clangbindir=$(cygpath -u "$clangbindir")
8142 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8143 if test -n "$LLVM_CONFIG"; then
8144 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8145 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8146 if test -z "$CLANGLIBDIR"; then
8147 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8149 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8150 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8151 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8152 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8153 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8155 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8156 clangobjdir=$($LLVM_CONFIG --obj-root)
8157 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8158 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8161 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8165 save_CPPFLAGS=$CPPFLAGS
8166 save_CXXFLAGS=$CXXFLAGS
8167 save_LDFLAGS=$LDFLAGS
8169 CXX=$COMPILER_PLUGINS_CXX
8170 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8171 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8172 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8173 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8174 [COMPILER_PLUGINS=TRUE],
8176 if test "$compiler_plugins" = "yes"; then
8177 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8179 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8180 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8183 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8184 dnl comment in compilerplugins/Makefile-clang.mk:
8185 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8187 AC_MSG_CHECKING([for clang libraries to use])
8188 if test -z "$CLANGTOOLLIBS"; then
8189 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8190 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8192 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8193 [[ clang::FullSourceLoc().dump(); ]])
8194 ],[CLANGTOOLLIBS="$LIBS"],[])
8196 if test -z "$CLANGTOOLLIBS"; then
8197 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8199 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8200 [[ clang::FullSourceLoc().dump(); ]])
8201 ],[CLANGTOOLLIBS="$LIBS"],[])
8203 AC_MSG_RESULT([$CLANGTOOLLIBS])
8204 if test -z "$CLANGTOOLLIBS"; then
8205 if test "$compiler_plugins" = "yes"; then
8206 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8208 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8209 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8213 if test -n "$COMPILER_PLUGINS"; then
8214 if test -z "$CLANGSYSINCLUDE"; then
8215 if test -n "$LLVM_CONFIG"; then
8216 # Path to the clang system headers (no idea if there's a better way to get it).
8217 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8224 CPPFLAGS=$save_CPPFLAGS
8225 CXXFLAGS=$save_CXXFLAGS
8226 LDFLAGS=$save_LDFLAGS
8230 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8231 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8237 [AC_MSG_RESULT([yes])
8238 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8239 [AC_MSG_RESULT([no])])
8240 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8243 if test "$enable_compiler_plugins" = "yes"; then
8244 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8247 COMPILER_PLUGINS_ANALYZER_PCH=
8248 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8249 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8251 AC_SUBST(COMPILER_PLUGINS)
8252 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8253 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8254 AC_SUBST(COMPILER_PLUGINS_CXX)
8255 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8256 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8257 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8258 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8260 AC_SUBST(CLANGLIBDIR)
8261 AC_SUBST(CLANGTOOLLIBS)
8262 AC_SUBST(CLANGSYSINCLUDE)
8264 # Plugin to help linker.
8265 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8266 # This makes --enable-lto build with clang work.
8269 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8270 AC_SUBST(HAVE_POSIX_FALLOCATE)
8272 JITC_PROCESSOR_TYPE=""
8273 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8274 # IBMs JDK needs this...
8275 JITC_PROCESSOR_TYPE=6
8276 export JITC_PROCESSOR_TYPE
8278 AC_SUBST([JITC_PROCESSOR_TYPE])
8280 # Misc Windows Stuff
8281 AC_ARG_WITH(ucrt-dir,
8282 AS_HELP_STRING([--with-ucrt-dir],
8283 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8284 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8285 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8286 Windows6.1-KB2999226-x64.msu
8287 Windows6.1-KB2999226-x86.msu
8288 Windows8.1-KB2999226-x64.msu
8289 Windows8.1-KB2999226-x86.msu
8290 Windows8-RT-KB2999226-x64.msu
8291 Windows8-RT-KB2999226-x86.msu
8292 A zip archive including those files is available from Microsoft site:
8293 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8296 UCRT_REDISTDIR="$with_ucrt_dir"
8297 if test $_os = "WINNT"; then
8299 for i in $PKGFORMAT; do
8300 if test "$i" = msi; then
8305 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8306 MSVC_DLLS="$msvcdlls"
8307 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8308 # MSVC 15.3 changed it to VC141
8309 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8310 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8311 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8312 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8313 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8314 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8316 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8319 if test "$UCRT_REDISTDIR" = "no"; then
8320 dnl explicitly disabled
8323 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8324 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8325 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8326 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8327 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8328 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8330 if test -n "$PKGFORMAT"; then
8331 for i in $PKGFORMAT; do
8334 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8335 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8344 AC_SUBST(UCRT_REDISTDIR)
8345 AC_SUBST(MSVC_DLL_PATH)
8350 dnl ===================================================================
8352 dnl ===================================================================
8353 if test "$ENABLE_JAVA" != ""; then
8355 # Windows-specific tests
8356 if test "$build_os" = "cygwin"; then
8357 if test -z "$with_jdk_home"; then
8358 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8359 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8360 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8361 if test -n "$regvalue"; then
8363 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8364 with_jdk_home=$regvalue
8366 howfound="found automatically"
8368 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8369 howfound="you passed"
8372 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8373 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])
8377 # 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.
8378 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8379 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8380 with_jdk_home=`/usr/libexec/java_home`
8383 JAVA_HOME=; export JAVA_HOME
8384 if test -z "$with_jdk_home"; then
8385 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8387 _java_path="$with_jdk_home/bin/$with_java"
8388 dnl Check if there is a Java interpreter at all.
8389 if test -x "$_java_path"; then
8390 JAVAINTERPRETER=$_java_path
8392 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8396 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8397 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8398 dnl loaded by java to run JunitTests:
8399 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8400 shortjdkhome=`cygpath -d "$with_jdk_home"`
8401 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
8402 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8403 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8404 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
8405 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8406 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8409 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8410 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8412 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8413 elif test "$cross_compiling" != "yes"; then
8415 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8416 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8417 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8418 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8421 *) # assumption: everything else 32-bit
8422 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8423 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8424 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8431 dnl ===================================================================
8433 dnl ===================================================================
8435 # Whether all the complexity here actually is needed any more or not, no idea.
8437 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8439 AC_MSG_CHECKING([the installed JDK])
8440 if test -n "$JAVAINTERPRETER"; then
8441 dnl java -version sends output to stderr!
8442 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8443 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8444 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8445 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8446 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8447 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8448 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8449 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8453 dnl Sun JDK specific tests
8454 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8455 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8457 if test "$_jdk_ver" -lt 10900; then
8458 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8460 if test "$_jdk_ver" -gt 10900; then
8461 JAVA_CLASSPATH_NOT_SET=TRUE
8464 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8465 if test "$_os" = "WINNT"; then
8466 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8468 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8470 # set to limit VM usage for JunitTests
8472 # set to limit VM usage for javac
8473 JAVACFLAGS=-J-Xmx128M
8476 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8479 if test -z "$ENABLE_JAVA"; then
8483 elif test "$cross_compiling" = "yes"; then
8484 # Just assume compatibility of build and host JDK
8486 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8490 dnl ===================================================================
8491 dnl Checks for javac
8492 dnl ===================================================================
8493 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8494 javacompiler="javac"
8495 : ${JAVA_SOURCE_VER=8}
8496 : ${JAVA_TARGET_VER=8}
8497 if test -z "$with_jdk_home"; then
8498 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8500 _javac_path="$with_jdk_home/bin/$javacompiler"
8501 dnl Check if there is a Java compiler at all.
8502 if test -x "$_javac_path"; then
8503 JAVACOMPILER=$_javac_path
8506 if test -z "$JAVACOMPILER"; then
8507 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8509 if test "$build_os" = "cygwin"; then
8510 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8511 JAVACOMPILER="${JAVACOMPILER}.exe"
8513 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8517 dnl ===================================================================
8518 dnl Checks for javadoc
8519 dnl ===================================================================
8520 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8521 if test -z "$with_jdk_home"; then
8522 AC_PATH_PROG(JAVADOC, javadoc)
8524 _javadoc_path="$with_jdk_home/bin/javadoc"
8525 dnl Check if there is a javadoc at all.
8526 if test -x "$_javadoc_path"; then
8527 JAVADOC=$_javadoc_path
8529 AC_PATH_PROG(JAVADOC, javadoc)
8532 if test -z "$JAVADOC"; then
8533 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8535 if test "$build_os" = "cygwin"; then
8536 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8537 JAVADOC="${JAVADOC}.exe"
8539 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8542 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8543 JAVADOCISGJDOC="yes"
8547 AC_SUBST(JAVADOCISGJDOC)
8549 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8550 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8551 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8552 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8553 # try to recover first by looking whether we have an alternative
8554 # system as in Debian or newer SuSEs where following /usr/bin/javac
8555 # over /etc/alternatives/javac leads to the right bindir where we
8556 # just need to strip a bit away to get a valid JAVA_HOME
8557 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8558 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8559 # maybe only one level of symlink (e.g. on Mac)
8560 JAVA_HOME=$(readlink $JAVACOMPILER)
8561 if test "$(dirname $JAVA_HOME)" = "."; then
8562 # we've got no path to trim back
8567 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8568 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8569 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8570 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8572 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8573 if test "$JAVA_HOME" != "/usr"; then
8574 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8575 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8576 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8577 dnl Tiger already returns a JDK path...
8578 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8580 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8581 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8582 dnl that checks which version to run
8583 if test -f "$JAVA_HOME"; then
8584 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8589 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8591 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8592 if test -z "$JAVA_HOME"; then
8593 if test "x$with_jdk_home" = "x"; then
8594 cat > findhome.java <<_ACEOF
8595 [import java.io.File;
8599 public static void main(String args[])
8601 String jrelocation = System.getProperty("java.home");
8602 File jre = new File(jrelocation);
8603 System.out.println(jre.getParent());
8607 AC_MSG_CHECKING([if javac works])
8608 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8609 AC_TRY_EVAL(javac_cmd)
8610 if test $? = 0 -a -f ./findhome.class; then
8611 AC_MSG_RESULT([javac works])
8613 echo "configure: javac test failed" >&5
8614 cat findhome.java >&5
8615 AC_MSG_ERROR([javac does not work - java projects will not build!])
8617 AC_MSG_CHECKING([if gij knows its java.home])
8618 JAVA_HOME=`$JAVAINTERPRETER findhome`
8619 if test $? = 0 -a "$JAVA_HOME" != ""; then
8620 AC_MSG_RESULT([$JAVA_HOME])
8622 echo "configure: java test failed" >&5
8623 cat findhome.java >&5
8624 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8626 # clean-up after ourselves
8627 rm -f ./findhome.java ./findhome.class
8629 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8633 # now check if $JAVA_HOME is really valid
8634 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8635 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8636 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8637 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8638 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8639 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8640 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8641 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8644 PathFormat "$JAVA_HOME"
8645 JAVA_HOME="$formatted_path"
8648 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8651 AC_MSG_CHECKING([for JAWT lib])
8652 if test "$_os" = WINNT; then
8653 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8658 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8659 JAVA_ARCH=$my_java_arch
8674 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8675 JAVA_ARCH=$my_java_arch
8678 my_java_arch=sparcv9
8684 my_java_arch=$host_cpu
8687 # This is where JDK9 puts the library
8688 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8689 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8691 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8693 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8695 AC_MSG_RESULT([$JAWTLIB])
8699 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8703 JAVAINC="-I$JAVA_HOME/include"
8704 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8705 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8709 JAVAINC="-I$JAVA_HOME/include/win32"
8710 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8714 if test -d "$JAVA_HOME/include/darwin"; then
8715 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8717 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8722 JAVAINC="-I$JAVA_HOME/include"
8723 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8727 JAVAINC="-I$JAVA_HOME/include"
8728 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8729 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8730 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8731 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8735 JAVAINC="-I$JAVA_HOME/include"
8736 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8737 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8741 JAVAINC="-I$JAVA_HOME/include"
8742 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8743 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8747 JAVAINC="-I$JAVA_HOME/include"
8748 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8749 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8753 JAVAINC="-I$JAVA_HOME/include"
8754 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8755 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8759 JAVAINC="-I$JAVA_HOME/include"
8760 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8761 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8765 SOLARINC="$SOLARINC $JAVAINC"
8767 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8768 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8769 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8773 AC_SUBST(JAVACFLAGS)
8774 AC_SUBST(JAVACOMPILER)
8775 AC_SUBST(JAVAINTERPRETER)
8776 AC_SUBST(JAVAIFLAGS)
8777 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8778 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8780 AC_SUBST(JAVA_HOME_FOR_BUILD)
8782 AC_SUBST(JDK_FOR_BUILD)
8783 AC_SUBST(JAVA_SOURCE_VER)
8784 AC_SUBST(JAVA_TARGET_VER)
8787 dnl ===================================================================
8788 dnl Export file validation
8789 dnl ===================================================================
8790 AC_MSG_CHECKING([whether to enable export file validation])
8791 if test "$with_export_validation" != "no"; then
8792 if test -z "$ENABLE_JAVA"; then
8793 if test "$with_export_validation" = "yes"; then
8794 AC_MSG_ERROR([requested, but Java is disabled])
8796 AC_MSG_RESULT([no, as Java is disabled])
8798 elif ! test -d "${SRC_ROOT}/schema"; then
8799 if test "$with_export_validation" = "yes"; then
8800 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8802 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8805 AC_MSG_RESULT([yes])
8806 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8808 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8809 if test -z "$ODFVALIDATOR"; then
8810 # remember to download the ODF toolkit with validator later
8811 AC_MSG_NOTICE([no odfvalidator found, will download it])
8812 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8813 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8815 # and fetch name of odfvalidator jar name from download.lst
8816 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8817 AC_SUBST(ODFVALIDATOR_JAR)
8819 if test -z "$ODFVALIDATOR_JAR"; then
8820 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8823 if test "$build_os" = "cygwin"; then
8824 # In case of Cygwin it will be executed from Windows,
8825 # so we need to run bash and absolute path to validator
8826 # so instead of "odfvalidator" it will be
8827 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8828 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8830 ODFVALIDATOR="sh $ODFVALIDATOR"
8832 AC_SUBST(ODFVALIDATOR)
8835 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8836 if test -z "$OFFICEOTRON"; then
8837 # remember to download the officeotron with validator later
8838 AC_MSG_NOTICE([no officeotron found, will download it])
8839 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8840 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8842 # and fetch name of officeotron jar name from download.lst
8843 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8844 AC_SUBST(OFFICEOTRON_JAR)
8846 if test -z "$OFFICEOTRON_JAR"; then
8847 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8850 # check version of existing officeotron
8851 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8852 if test 0"$OFFICEOTRON_VER" -lt 704; then
8853 AC_MSG_ERROR([officeotron too old])
8856 if test "$build_os" = "cygwin"; then
8857 # In case of Cygwin it will be executed from Windows,
8858 # so we need to run bash and absolute path to validator
8859 # so instead of "odfvalidator" it will be
8860 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8861 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8863 OFFICEOTRON="sh $OFFICEOTRON"
8866 AC_SUBST(OFFICEOTRON)
8871 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8872 if test "$with_bffvalidator" != "no"; then
8873 AC_DEFINE(HAVE_BFFVALIDATOR)
8875 if test "$with_export_validation" = "no"; then
8876 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8879 if test "$with_bffvalidator" = "yes"; then
8880 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8882 BFFVALIDATOR="$with_bffvalidator"
8885 if test "$build_os" = "cygwin"; then
8886 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8887 AC_MSG_RESULT($BFFVALIDATOR)
8889 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8891 elif test -n "$BFFVALIDATOR"; then
8892 # We are not in Cygwin but need to run Windows binary with wine
8893 AC_PATH_PROGS(WINE, wine)
8895 # so swap in a shell wrapper that converts paths transparently
8896 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8897 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8898 AC_SUBST(BFFVALIDATOR_EXE)
8899 AC_MSG_RESULT($BFFVALIDATOR)
8901 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8903 AC_SUBST(BFFVALIDATOR)
8908 dnl ===================================================================
8909 dnl Check for C preprocessor to use
8910 dnl ===================================================================
8911 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8913 if test -n "$with_idlc_cpp"; then
8914 AC_MSG_RESULT([$with_idlc_cpp])
8915 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8916 AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8917 # ucpp will accept -v (to output version), warn about the others as unknown
8918 # and return 1 (due to -v)
8919 # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8920 # and return 0 (due to --version ) if all options are supported
8921 $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8922 if test $? -eq 0; then
8923 SYSTEM_UCPP_IS_GCC=TRUE
8924 AC_MSG_RESULT([yes])
8929 AC_MSG_RESULT([ucpp])
8930 AC_MSG_CHECKING([which ucpp to use])
8931 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8932 AC_MSG_RESULT([external])
8933 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8935 AC_MSG_RESULT([internal])
8936 BUILD_TYPE="$BUILD_TYPE UCPP"
8939 AC_SUBST(SYSTEM_UCPP)
8940 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8942 dnl ===================================================================
8943 dnl Check for epm (not needed for Windows)
8944 dnl ===================================================================
8945 AC_MSG_CHECKING([whether to enable EPM for packing])
8946 if test "$enable_epm" = "yes"; then
8947 AC_MSG_RESULT([yes])
8948 if test "$_os" != "WINNT"; then
8949 if test $_os = Darwin; then
8951 elif test -n "$with_epm"; then
8954 AC_PATH_PROG(EPM, epm, no)
8956 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8957 AC_MSG_NOTICE([EPM will be built.])
8958 BUILD_TYPE="$BUILD_TYPE EPM"
8959 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8961 # Gentoo has some epm which is something different...
8962 AC_MSG_CHECKING([whether the found epm is the right epm])
8963 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8964 AC_MSG_RESULT([yes])
8966 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8968 AC_MSG_CHECKING([epm version])
8969 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8970 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8971 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8972 AC_MSG_RESULT([OK, >= 3.7])
8974 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8975 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8980 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8981 AC_MSG_CHECKING([for rpm])
8982 for a in "$RPM" rpmbuild rpm; do
8983 $a --usage >/dev/null 2> /dev/null
8984 if test $? -eq 0; then
8988 $a --version >/dev/null 2> /dev/null
8989 if test $? -eq 0; then
8995 if test -z "$RPM"; then
8996 AC_MSG_ERROR([not found])
8997 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8998 RPM_PATH=`which $RPM`
8999 AC_MSG_RESULT([$RPM_PATH])
9000 SCPDEFS="$SCPDEFS -DWITH_RPM"
9002 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9005 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9006 AC_PATH_PROG(DPKG, dpkg, no)
9007 if test "$DPKG" = "no"; then
9008 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9011 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9012 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9013 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9014 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9015 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9016 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9017 AC_MSG_RESULT([yes])
9020 if echo "$PKGFORMAT" | $GREP -q rpm; then
9022 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9023 add_warning "the rpms will need to be installed with --nodeps"
9027 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9028 add_warning "the ${_pt}s will not be relocatable"
9029 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9030 relocation will work, you need to patch your epm with the
9031 patch in epm/epm-3.7.patch or build with
9032 --with-epm=internal which will build a suitable epm])
9037 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9038 AC_PATH_PROG(PKGMK, pkgmk, no)
9039 if test "$PKGMK" = "no"; then
9040 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9047 for i in $PKGFORMAT; do
9049 aix | bsd | deb | pkg | rpm | native | portable)
9051 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9061 if test "$enable_lotuswordpro" = "yes"; then
9064 AC_SUBST(ENABLE_LWP)
9066 dnl ===================================================================
9067 dnl Check for building ODK
9068 dnl ===================================================================
9069 if test "$enable_odk" != yes; then
9072 if test "$with_doxygen" = no; then
9073 AC_MSG_CHECKING([for doxygen])
9077 if test "$with_doxygen" = yes; then
9078 AC_PATH_PROG([DOXYGEN], [doxygen])
9079 if test -z "$DOXYGEN"; then
9080 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9082 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9083 if ! dot -V 2>/dev/null; then
9084 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9088 AC_MSG_CHECKING([for doxygen])
9089 DOXYGEN=$with_doxygen
9090 AC_MSG_RESULT([$DOXYGEN])
9092 if test -n "$DOXYGEN"; then
9093 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9094 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9095 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9096 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9103 AC_MSG_CHECKING([whether to build the ODK])
9104 if test "$enable_odk" = yes; then
9105 AC_MSG_RESULT([yes])
9106 BUILD_TYPE="$BUILD_TYPE ODK"
9111 dnl ===================================================================
9112 dnl Check for system zlib
9113 dnl ===================================================================
9114 if test "$with_system_zlib" = "auto"; then
9117 with_system_zlib="$with_system_libs"
9120 if test "$enable_fuzzers" != "yes"; then
9121 with_system_zlib=yes
9129 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9130 dnl and has no pkg-config for it at least on some tinderboxes,
9131 dnl so leaving that out for now
9132 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9133 AC_MSG_CHECKING([which zlib to use])
9134 if test "$with_system_zlib" = "yes"; then
9135 AC_MSG_RESULT([external])
9137 AC_CHECK_HEADER(zlib.h, [],
9138 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9139 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9140 [AC_MSG_ERROR(zlib not found or functional)], [])
9142 AC_MSG_RESULT([internal])
9144 BUILD_TYPE="$BUILD_TYPE ZLIB"
9145 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9146 if test "$COM" = "MSC"; then
9147 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9149 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9152 AC_SUBST(ZLIB_CFLAGS)
9154 AC_SUBST(SYSTEM_ZLIB)
9156 dnl ===================================================================
9157 dnl Check for system jpeg
9158 dnl ===================================================================
9159 AC_MSG_CHECKING([which libjpeg to use])
9160 if test "$with_system_jpeg" = "yes"; then
9161 AC_MSG_RESULT([external])
9163 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9164 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9165 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9166 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9169 AC_MSG_RESULT([internal, libjpeg-turbo])
9170 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9173 x86_64 | amd64 | i*86 | x86 | ia32)
9174 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9175 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9176 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9177 NASM="$LODE_HOME/opt/bin/nasm"
9178 elif test -x "/opt/lo/bin/nasm"; then
9179 NASM="/opt/lo/bin/nasm"
9183 if test -n "$NASM"; then
9184 AC_MSG_CHECKING([for object file format of host system])
9186 cygwin* | mingw* | pw32* | wsl*)
9196 msdosdjgpp* | go32*)
9199 os2-emx*) # not tested
9200 objfmt='MSOMF' # obj
9202 linux*coff* | linux*oldld*)
9218 kfreebsd* | freebsd* | netbsd* | openbsd*)
9219 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9232 solaris* | sunos* | sysv* | sco*)
9242 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9257 AC_MSG_RESULT([$objfmt])
9258 if test "$objfmt" = 'ELF ?'; then
9260 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9263 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9265 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9266 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9267 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9268 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9269 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9270 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9271 ELF) NAFLAGS='-felf -DELF -DPIC';;
9272 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9273 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9274 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9275 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9277 AC_MSG_RESULT([$NAFLAGS])
9279 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9280 cat > conftest.asm << EOF
9281 [%line __oline__ "configure"
9289 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9290 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9293 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9294 cat conftest.asm >&AS_MESSAGE_LOG_FD
9297 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9303 if test -z "$NASM"; then
9305 ****************************************************************************
9306 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9310 if test "$build_os" = "cygwin"; then
9312 install a pre-compiled binary for Win32
9314 mkdir -p /opt/lo/bin
9316 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9319 or get and install one from http://www.nasm.us/
9321 Then re-run autogen.sh
9323 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9324 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9329 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9333 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9334 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9342 AC_SUBST(LIBJPEG_CFLAGS)
9343 AC_SUBST(LIBJPEG_LIBS)
9344 AC_SUBST(SYSTEM_LIBJPEG)
9346 dnl ===================================================================
9347 dnl Check for system clucene
9348 dnl ===================================================================
9349 dnl we should rather be using
9350 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9351 dnl but the contribs-lib check seems tricky
9352 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9353 AC_MSG_CHECKING([which clucene to use])
9354 if test "$with_system_clucene" = "yes"; then
9355 AC_MSG_RESULT([external])
9357 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9358 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9359 FilterLibs "${CLUCENE_LIBS}"
9360 CLUCENE_LIBS="${filteredlibs}"
9362 save_CXXFLAGS=$CXXFLAGS
9363 save_CPPFLAGS=$CPPFLAGS
9364 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9365 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9366 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9367 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9368 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9369 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9370 CXXFLAGS=$save_CXXFLAGS
9371 CPPFLAGS=$save_CPPFLAGS
9374 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9376 AC_MSG_RESULT([internal])
9378 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9381 AC_SUBST(SYSTEM_CLUCENE)
9382 AC_SUBST(CLUCENE_CFLAGS)
9383 AC_SUBST(CLUCENE_LIBS)
9385 dnl ===================================================================
9386 dnl Check for system expat
9387 dnl ===================================================================
9388 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9390 dnl ===================================================================
9391 dnl Check for system xmlsec
9392 dnl ===================================================================
9393 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9395 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9396 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9398 AC_DEFINE([ENABLE_EOT])
9399 AC_MSG_RESULT([yes])
9401 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9406 AC_SUBST([ENABLE_EOT])
9408 dnl ===================================================================
9409 dnl Check for DLP libs
9410 dnl ===================================================================
9411 AS_IF([test "$COM" = "MSC"],
9412 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9413 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9415 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9417 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9419 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9421 AS_IF([test "$COM" = "MSC"],
9422 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9423 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9425 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9427 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9429 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9430 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9432 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9434 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9436 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9438 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9439 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9441 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9442 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9444 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9446 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9447 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9449 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9451 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9453 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9455 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9457 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9458 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9460 dnl ===================================================================
9461 dnl Check for system lcms2
9462 dnl ===================================================================
9463 if test "$with_system_lcms2" != "yes"; then
9466 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9467 if test "$GCC" = "yes"; then
9468 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9470 if test "$COM" = "MSC"; then # override the above
9471 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9474 dnl ===================================================================
9475 dnl Check for system cppunit
9476 dnl ===================================================================
9477 if test "$_os" != "Android" ; then
9478 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9481 dnl ===================================================================
9482 dnl Check whether freetype is available
9483 dnl ===================================================================
9484 if test "$using_freetype_fontconfig" = yes; then
9485 AC_MSG_CHECKING([which freetype to use])
9487 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9488 AC_MSG_RESULT([external])
9489 # FreeType has 3 different kinds of versions
9490 # * release, like 2.4.10
9491 # * libtool, like 13.0.7 (this what pkg-config returns)
9493 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9496 # When the minimal version is at least 2.8.1, remove Skia's check down below.
9497 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9498 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9499 FilterLibs "${FREETYPE_LIBS}"
9500 FREETYPE_LIBS="${filteredlibs}"
9501 SYSTEM_FREETYPE=TRUE
9502 elif test "$using_freetype_fontconfig" = yes; then
9503 AC_MSG_RESULT([internal])
9504 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9505 if test "x$ac_config_site_64bit_host" = xYES; then
9506 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9508 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9510 BUILD_TYPE="$BUILD_TYPE FREETYPE"
9512 AC_SUBST(FREETYPE_CFLAGS)
9513 AC_SUBST(FREETYPE_LIBS)
9514 AC_SUBST([SYSTEM_FREETYPE])
9516 # ===================================================================
9517 # Check for system libxslt
9518 # to prevent incompatibilities between internal libxml2 and external libxslt,
9519 # or vice versa, use with_system_libxml here
9520 # ===================================================================
9521 if test "$with_system_libxml" = "auto"; then
9524 with_system_libxml="$with_system_libs"
9527 with_system_libxml=no
9530 if test "$enable_fuzzers" != "yes"; then
9531 with_system_libxml=yes
9533 with_system_libxml=no
9539 AC_MSG_CHECKING([which libxslt to use])
9540 if test "$with_system_libxml" = "yes"; then
9541 AC_MSG_RESULT([external])
9543 if test "$_os" = "Darwin"; then
9544 dnl make sure to use SDK path
9545 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9546 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9548 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9549 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9551 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9552 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9553 FilterLibs "${LIBXSLT_LIBS}"
9554 LIBXSLT_LIBS="${filteredlibs}"
9555 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9556 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9557 FilterLibs "${LIBEXSLT_LIBS}"
9558 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9561 dnl Check for xsltproc
9562 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9563 if test "$XSLTPROC" = "no"; then
9564 AC_MSG_ERROR([xsltproc is required])
9567 AC_MSG_RESULT([internal])
9569 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9571 AC_SUBST(SYSTEM_LIBXSLT)
9572 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9573 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9575 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9577 AC_SUBST(LIBEXSLT_CFLAGS)
9578 AC_SUBST(LIBEXSLT_LIBS)
9579 AC_SUBST(LIBXSLT_CFLAGS)
9580 AC_SUBST(LIBXSLT_LIBS)
9583 # ===================================================================
9584 # Check for system libxml
9585 # ===================================================================
9586 AC_MSG_CHECKING([which libxml to use])
9587 if test "$with_system_libxml" = "yes"; then
9588 AC_MSG_RESULT([external])
9590 if test "$_os" = "Darwin"; then
9591 dnl make sure to use SDK path
9592 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9594 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9595 elif test $_os = iOS; then
9596 dnl make sure to use SDK path
9597 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9598 LIBXML_CFLAGS="-I$usr/include/libxml2"
9599 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9601 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9602 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9603 FilterLibs "${LIBXML_LIBS}"
9604 LIBXML_LIBS="${filteredlibs}"
9607 dnl Check for xmllint
9608 AC_PATH_PROG(XMLLINT, xmllint, no)
9609 if test "$XMLLINT" = "no"; then
9610 AC_MSG_ERROR([xmllint is required])
9613 AC_MSG_RESULT([internal])
9615 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9616 if test "$COM" = "MSC"; then
9617 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9619 if test "$COM" = "MSC"; then
9620 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9622 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9623 if test "$_os" = Android; then
9624 LIBXML_LIBS="$LIBXML_LIBS -lm"
9627 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9629 AC_SUBST(SYSTEM_LIBXML)
9630 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9631 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9633 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9634 AC_SUBST(LIBXML_CFLAGS)
9635 AC_SUBST(LIBXML_LIBS)
9638 # =====================================================================
9639 # Checking for a Python interpreter with version >= 3.3.
9640 # Optionally user can pass an option to configure, i. e.
9641 # ./configure PYTHON=/usr/bin/python
9642 # =====================================================================
9643 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9644 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9645 # unless PYTHON is defined as above which allows 'system'
9646 enable_python=internal
9648 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9649 if test -n "$PYTHON"; then
9650 PYTHON_FOR_BUILD=$PYTHON
9652 # This allows a lack of system python with no error, we use internal one in that case.
9653 AM_PATH_PYTHON([3.3],, [:])
9654 # Clean PYTHON_VERSION checked below if cross-compiling
9656 if test "$PYTHON" != ":"; then
9657 PYTHON_FOR_BUILD=$PYTHON
9661 AC_SUBST(PYTHON_FOR_BUILD)
9663 # Checks for Python to use for Pyuno
9664 AC_MSG_CHECKING([which Python to use for Pyuno])
9665 case "$enable_python" in
9667 if test -z $PYTHON_FOR_BUILD; then
9668 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9669 # requirement from the choice whether to include Python stuff in the installer, but why
9671 if test "$cross_compiling" = yes; then
9672 enable_python=system
9674 AC_MSG_ERROR([Python is required at build time.])
9678 AC_MSG_RESULT([none])
9681 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9682 AC_MSG_RESULT([no, overridden by --disable-scripting])
9684 elif test $build_os = cygwin; then
9685 dnl When building on Windows we don't attempt to use any installed
9686 dnl "system" Python.
9687 AC_MSG_RESULT([fully internal])
9688 enable_python=internal
9689 elif test "$cross_compiling" = yes; then
9690 AC_MSG_RESULT([system])
9691 enable_python=system
9693 # Unset variables set by the above AM_PATH_PYTHON so that
9694 # we actually do check anew.
9696 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
9697 AM_PATH_PYTHON([3.3],, [:])
9698 AC_MSG_CHECKING([which Python to use for Pyuno])
9699 if test "$PYTHON" = ":"; then
9700 if test -z "$PYTHON_FOR_BUILD"; then
9701 AC_MSG_RESULT([fully internal])
9703 AC_MSG_RESULT([internal])
9705 enable_python=internal
9707 AC_MSG_RESULT([system])
9708 enable_python=system
9713 AC_MSG_RESULT([internal])
9716 AC_MSG_RESULT([fully internal])
9717 enable_python=internal
9720 AC_MSG_RESULT([system])
9721 if test "$_os" = Darwin -a -z "$PYTHON"; then
9722 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9726 AC_MSG_ERROR([Incorrect --enable-python option])
9730 if test $enable_python != no; then
9731 BUILD_TYPE="$BUILD_TYPE PYUNO"
9734 if test $enable_python = system; then
9735 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9736 # Fallback: Accept these in the environment, or as set above
9739 elif test "$cross_compiling" != yes; then
9740 # Unset variables set by the above AM_PATH_PYTHON so that
9741 # we actually do check anew.
9742 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
9743 # This causes an error if no python command is found
9744 AM_PATH_PYTHON([3.3])
9745 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9746 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9747 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9748 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9749 if test -z "$PKG_CONFIG"; then
9750 PYTHON_CFLAGS="-I$python_include"
9751 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9752 elif $PKG_CONFIG --exists python-$python_version-embed; then
9753 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9754 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9755 elif $PKG_CONFIG --exists python-$python_version; then
9756 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9757 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9759 PYTHON_CFLAGS="-I$python_include"
9760 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9762 FilterLibs "${PYTHON_LIBS}"
9763 PYTHON_LIBS="${filteredlibs}"
9765 dnl How to find out the cross-compilation Python installation path?
9766 AC_MSG_CHECKING([for python version])
9767 AS_IF([test -n "$PYTHON_VERSION"],
9768 [AC_MSG_RESULT([$PYTHON_VERSION])],
9769 [AC_MSG_RESULT([not found])
9770 AC_MSG_ERROR([no usable python found])])
9771 test -n "$PYTHON_CFLAGS" && break
9774 dnl Check if the headers really work
9775 save_CPPFLAGS="$CPPFLAGS"
9776 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9777 AC_CHECK_HEADER(Python.h)
9778 CPPFLAGS="$save_CPPFLAGS"
9780 # let the PYTHON_FOR_BUILD match the same python installation that
9781 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9782 # better for PythonTests.
9783 PYTHON_FOR_BUILD=$PYTHON
9786 if test "$with_lxml" != no; then
9787 if test -z "$PYTHON_FOR_BUILD"; then
9790 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9793 if test "$cross_compiling" != yes ; then
9794 BUILD_TYPE="$BUILD_TYPE LXML"
9799 AC_MSG_CHECKING([for python lxml])
9800 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9801 AC_MSG_RESULT([yes])
9805 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9808 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9809 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9810 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9812 BUILD_TYPE="$BUILD_TYPE LXML"
9813 AC_MSG_RESULT([no, using internal lxml])
9816 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9824 dnl By now enable_python should be "system", "internal" or "no"
9825 case $enable_python in
9829 if test "x$ac_cv_header_Python_h" != "xyes"; then
9830 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9834 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9835 AC_MSG_CHECKING([for correct python library version])
9836 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9839 int main(int argc, char **argv) {
9840 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9843 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9846 dnl FIXME Check if the Python library can be linked with, too?
9851 PYTHON_VERSION_MAJOR=3
9852 PYTHON_VERSION_MINOR=8
9853 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9854 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9855 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9857 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9858 BUILD_TYPE="$BUILD_TYPE PYTHON"
9859 if test "$OS" = LINUX -o "$OS" = WNT ; then
9860 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9862 # Embedded Python dies without Home set
9863 if test "$HOME" = ""; then
9872 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9876 AC_SUBST(DISABLE_PYTHON)
9877 AC_SUBST(SYSTEM_PYTHON)
9878 AC_SUBST(PYTHON_CFLAGS)
9879 AC_SUBST(PYTHON_LIBS)
9880 AC_SUBST(PYTHON_VERSION)
9881 AC_SUBST(PYTHON_VERSION_MAJOR)
9882 AC_SUBST(PYTHON_VERSION_MINOR)
9884 AC_MSG_CHECKING([whether to build LibreLogo])
9885 case "$enable_python" in
9887 AC_MSG_RESULT([no; Python disabled])
9890 if test "${enable_librelogo}" = "no"; then
9893 AC_MSG_RESULT([yes])
9894 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9895 AC_DEFINE([ENABLE_LIBRELOGO],1)
9899 AC_SUBST(ENABLE_LIBRELOGO)
9905 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9906 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9907 ENABLE_MARIADBC=TRUE
9908 AC_MSG_RESULT([yes])
9909 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9913 AC_SUBST(ENABLE_MARIADBC)
9914 AC_SUBST(MARIADBC_MAJOR)
9915 AC_SUBST(MARIADBC_MINOR)
9916 AC_SUBST(MARIADBC_MICRO)
9918 if test "$ENABLE_MARIADBC" = "TRUE"; then
9919 dnl ===================================================================
9920 dnl Check for system MariaDB
9921 dnl ===================================================================
9922 AC_MSG_CHECKING([which MariaDB to use])
9923 if test "$with_system_mariadb" = "yes"; then
9924 AC_MSG_RESULT([external])
9925 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9926 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9927 if test -z "$MARIADBCONFIG"; then
9928 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9929 if test -z "$MARIADBCONFIG"; then
9930 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9931 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9934 AC_MSG_CHECKING([MariaDB version])
9935 MARIADB_VERSION=`$MARIADBCONFIG --version`
9936 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9937 if test "$MARIADB_MAJOR" -ge "5"; then
9940 AC_MSG_ERROR([too old, use 5.0.x or later])
9942 AC_MSG_CHECKING([for MariaDB Client library])
9943 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9944 if test "$COM_IS_CLANG" = TRUE; then
9945 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9947 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9948 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9949 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9951 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9952 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9953 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9954 | sed -e 's|/lib64/|/lib/|')
9956 FilterLibs "${MARIADB_LIBS}"
9957 MARIADB_LIBS="${filteredlibs}"
9958 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9959 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9960 if test "$enable_bundle_mariadb" = "yes"; then
9961 AC_MSG_RESULT([yes])
9962 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9963 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9965 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9967 /g' | grep -E '(mysqlclient|mariadb)')
9968 if test "$_os" = "Darwin"; then
9969 LIBMARIADB=${LIBMARIADB}.dylib
9970 elif test "$_os" = "WINNT"; then
9971 LIBMARIADB=${LIBMARIADB}.dll
9973 LIBMARIADB=${LIBMARIADB}.so
9975 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9976 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9977 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9978 AC_MSG_RESULT([found.])
9979 PathFormat "$LIBMARIADB_PATH"
9980 LIBMARIADB_PATH="$formatted_path"
9982 AC_MSG_ERROR([not found.])
9986 BUNDLE_MARIADB_CONNECTOR_C=
9989 AC_MSG_RESULT([internal])
9990 SYSTEM_MARIADB_CONNECTOR_C=
9991 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9992 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9993 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9996 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9997 AC_SUBST(MARIADB_CFLAGS)
9998 AC_SUBST(MARIADB_LIBS)
9999 AC_SUBST(LIBMARIADB)
10000 AC_SUBST(LIBMARIADB_PATH)
10001 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10004 dnl ===================================================================
10005 dnl Check for system hsqldb
10006 dnl ===================================================================
10007 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10008 HSQLDB_USE_JDBC_4_1=
10009 AC_MSG_CHECKING([which hsqldb to use])
10010 if test "$with_system_hsqldb" = "yes"; then
10011 AC_MSG_RESULT([external])
10013 if test -z $HSQLDB_JAR; then
10014 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10016 if ! test -f $HSQLDB_JAR; then
10017 AC_MSG_ERROR(hsqldb.jar not found.)
10019 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10023 my $file = "$ENV{'HSQLDB_JAR'}";
10024 my $zip = Archive::Zip->new( $file );
10025 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10026 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10028 push @l, split(/\n/, $mf);
10029 foreach my $line (@l)
10031 if ($line =~ m/Specification-Version:/)
10033 ($t, $version) = split (/:/,$line);
10034 $version =~ s/^\s//;
10035 ($a, $b, $c, $d) = split (/\./,$version);
10036 if ($c == "0" && $d > "8")
10051 AC_MSG_RESULT([yes])
10053 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10056 AC_MSG_RESULT([internal])
10058 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10060 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
10061 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
10062 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
10063 AC_MSG_RESULT([yes])
10064 HSQLDB_USE_JDBC_4_1=TRUE
10066 AC_MSG_RESULT([no])
10070 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10071 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10074 AC_SUBST(SYSTEM_HSQLDB)
10075 AC_SUBST(HSQLDB_JAR)
10076 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10078 dnl ===================================================================
10079 dnl Check for PostgreSQL stuff
10080 dnl ===================================================================
10081 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10082 if test "x$enable_postgresql_sdbc" != "xno"; then
10083 AC_MSG_RESULT([yes])
10084 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10086 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10087 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10089 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10090 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10093 postgres_interface=""
10094 if test "$with_system_postgresql" = "yes"; then
10095 postgres_interface="external PostgreSQL"
10096 SYSTEM_POSTGRESQL=TRUE
10097 if test "$_os" = Darwin; then
10099 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10100 pg_supp_path="$P_SEP$d$pg_supp_path"
10103 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10104 if test -n "$PGCONFIG"; then
10105 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10106 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10108 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10109 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10110 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10112 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10115 FilterLibs "${POSTGRESQL_LIB}"
10116 POSTGRESQL_LIB="${filteredlibs}"
10118 # if/when anything else than PostgreSQL uses Kerberos,
10119 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10124 # macOS has system MIT Kerberos 5 since 10.4
10125 if test "$with_krb5" != "no"; then
10128 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10129 # that the libraries where these functions are located on macOS will change, is it?
10130 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10131 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10134 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10135 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10136 KRB5_LIBS="$KRB5_LIBS $LIBS"
10139 if test "$with_gssapi" != "no"; then
10142 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10143 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10149 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10150 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10153 Linux|GNU|*BSD|DragonFly)
10154 if test "$with_krb5" != "no"; then
10157 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10158 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10161 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10162 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10163 KRB5_LIBS="$KRB5_LIBS $LIBS"
10166 if test "$with_gssapi" != "no"; then
10169 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10170 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10176 if test "$with_krb5" = "yes"; then
10179 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10180 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10183 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10184 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10185 KRB5_LIBS="$KRB5_LIBS $LIBS"
10188 if test "$with_gssapi" = "yes"; then
10191 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10192 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10198 if test -n "$with_libpq_path"; then
10199 SYSTEM_POSTGRESQL=TRUE
10200 postgres_interface="external libpq"
10201 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10202 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10205 postgres_interface="internal"
10207 POSTGRESQL_INC="%OVERRIDE_ME%"
10208 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10212 AC_MSG_CHECKING([PostgreSQL C interface])
10213 AC_MSG_RESULT([$postgres_interface])
10215 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10216 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10217 save_CFLAGS=$CFLAGS
10218 save_CPPFLAGS=$CPPFLAGS
10220 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10221 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10222 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10223 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10224 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10225 CFLAGS=$save_CFLAGS
10226 CPPFLAGS=$save_CPPFLAGS
10229 BUILD_POSTGRESQL_SDBC=TRUE
10231 AC_MSG_RESULT([no])
10233 AC_SUBST(WITH_KRB5)
10234 AC_SUBST(WITH_GSSAPI)
10235 AC_SUBST(GSSAPI_LIBS)
10236 AC_SUBST(KRB5_LIBS)
10237 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10238 AC_SUBST(SYSTEM_POSTGRESQL)
10239 AC_SUBST(POSTGRESQL_INC)
10240 AC_SUBST(POSTGRESQL_LIB)
10242 dnl ===================================================================
10243 dnl Check for Firebird stuff
10244 dnl ===================================================================
10245 ENABLE_FIREBIRD_SDBC=
10246 if test "$enable_firebird_sdbc" = "yes" ; then
10247 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10249 dnl ===================================================================
10250 dnl Check for system Firebird
10251 dnl ===================================================================
10252 AC_MSG_CHECKING([which Firebird to use])
10253 if test "$with_system_firebird" = "yes"; then
10254 AC_MSG_RESULT([external])
10255 SYSTEM_FIREBIRD=TRUE
10256 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10257 if test -z "$FIREBIRDCONFIG"; then
10258 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10259 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10260 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10262 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10264 AC_MSG_NOTICE([fb_config found])
10265 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10266 AC_MSG_CHECKING([for Firebird Client library])
10267 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10268 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10269 FilterLibs "${FIREBIRD_LIBS}"
10270 FIREBIRD_LIBS="${filteredlibs}"
10272 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10273 AC_MSG_CHECKING([Firebird version])
10274 if test -n "${FIREBIRD_VERSION}"; then
10275 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10276 if test "$FIREBIRD_MAJOR" -ge "3"; then
10277 AC_MSG_RESULT([OK])
10279 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10282 save_CFLAGS="${CFLAGS}"
10283 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10284 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10285 #if defined(FB_API_VER) && FB_API_VER == 30
10286 int fb_api_is_30(void) { return 0; }
10288 #error "Wrong Firebird API version"
10289 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10290 CFLAGS="$save_CFLAGS"
10292 ENABLE_FIREBIRD_SDBC=TRUE
10293 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10294 elif test "$enable_database_connectivity" = no; then
10295 AC_MSG_RESULT([none])
10296 elif test "$cross_compiling" = "yes"; then
10297 AC_MSG_RESULT([none])
10299 dnl Embedded Firebird has version 3.0
10300 dnl We need libatomic_ops for any non X86/X64 system
10301 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10302 dnl ===================================================================
10303 dnl Check for system libatomic_ops
10304 dnl ===================================================================
10305 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10306 if test "$with_system_libatomic_ops" = "yes"; then
10307 SYSTEM_LIBATOMIC_OPS=TRUE
10308 AC_CHECK_HEADERS(atomic_ops.h, [],
10309 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10311 SYSTEM_LIBATOMIC_OPS=
10312 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10313 LIBATOMIC_OPS_LIBS="-latomic_ops"
10314 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10318 AC_MSG_RESULT([internal])
10320 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10321 FIREBIRD_LIBS="-lfbclient"
10323 if test "$with_system_libtommath" = "yes"; then
10324 SYSTEM_LIBTOMMATH=TRUE
10325 dnl check for tommath presence
10327 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10328 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10332 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10333 LIBTOMMATH_LIBS="-ltommath"
10334 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10337 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10338 ENABLE_FIREBIRD_SDBC=TRUE
10339 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10342 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10343 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10344 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10345 AC_SUBST(LIBATOMIC_OPS_LIBS)
10346 AC_SUBST(SYSTEM_FIREBIRD)
10347 AC_SUBST(FIREBIRD_CFLAGS)
10348 AC_SUBST(FIREBIRD_LIBS)
10349 AC_SUBST(SYSTEM_LIBTOMMATH)
10350 AC_SUBST(LIBTOMMATH_CFLAGS)
10351 AC_SUBST(LIBTOMMATH_LIBS)
10353 dnl ===================================================================
10354 dnl Check for system curl
10355 dnl ===================================================================
10356 AC_MSG_CHECKING([which libcurl to use])
10357 if test "$with_system_curl" = "auto"; then
10358 with_system_curl="$with_system_libs"
10361 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10362 AC_MSG_RESULT([external])
10365 PKG_CHECK_MODULES(CURL, libcurl >= 7.68.0)
10368 elif test "$enable_curl" = "no"; then
10369 AC_MSG_RESULT([none])
10371 AC_MSG_RESULT([internal])
10373 BUILD_TYPE="$BUILD_TYPE CURL"
10376 AC_SUBST(SYSTEM_CURL)
10377 AC_SUBST(CURL_CFLAGS)
10378 AC_SUBST(CURL_LIBS)
10379 AC_SUBST(ENABLE_CURL)
10381 dnl ===================================================================
10382 dnl Check for system boost
10383 dnl ===================================================================
10384 AC_MSG_CHECKING([which boost to use])
10385 if test "$with_system_boost" = "yes"; then
10386 AC_MSG_RESULT([external])
10388 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10390 AX_BOOST_FILESYSTEM
10393 AC_LANG_PUSH([C++])
10394 save_CXXFLAGS=$CXXFLAGS
10395 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10396 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10397 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10398 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10399 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10400 CXXFLAGS=$save_CXXFLAGS
10402 # this is in m4/ax_boost_base.m4
10403 FilterLibs "${BOOST_LDFLAGS}"
10404 BOOST_LDFLAGS="${filteredlibs}"
10406 AC_MSG_RESULT([internal])
10407 BUILD_TYPE="$BUILD_TYPE BOOST"
10409 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10410 # use warning-suppressing wrapper headers
10411 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10413 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10416 AC_SUBST(SYSTEM_BOOST)
10418 dnl ===================================================================
10419 dnl Check for system mdds
10420 dnl ===================================================================
10421 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10423 dnl ===================================================================
10424 dnl Check for system cuckoo
10425 dnl ===================================================================
10426 AC_MSG_CHECKING([which cuckoo to use])
10427 if test "$with_system_cuckoo" = "yes"; then
10428 AC_MSG_RESULT([external])
10430 AC_LANG_PUSH([C++])
10431 AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10432 [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10435 AC_MSG_RESULT([internal])
10436 BUILD_TYPE="$BUILD_TYPE CUCKOO"
10438 CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10440 AC_SUBST([CUCKOO_CFLAGS])
10441 AC_SUBST([SYSTEM_CUCKOO])
10443 dnl ===================================================================
10444 dnl Check for system glm
10445 dnl ===================================================================
10446 AC_MSG_CHECKING([which glm to use])
10447 if test "$with_system_glm" = "yes"; then
10448 AC_MSG_RESULT([external])
10450 AC_LANG_PUSH([C++])
10451 AC_CHECK_HEADER([glm/glm.hpp], [],
10452 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10455 AC_MSG_RESULT([internal])
10456 BUILD_TYPE="$BUILD_TYPE GLM"
10458 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10460 AC_SUBST([GLM_CFLAGS])
10461 AC_SUBST([SYSTEM_GLM])
10463 dnl ===================================================================
10464 dnl Check for system odbc
10465 dnl ===================================================================
10466 AC_MSG_CHECKING([which odbc headers to use])
10467 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
10468 AC_MSG_RESULT([external])
10469 SYSTEM_ODBC_HEADERS=TRUE
10471 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10472 save_CPPFLAGS=$CPPFLAGS
10474 PathFormat "$winsdktest"
10475 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"
10476 AC_CHECK_HEADER(sqlext.h, [],
10477 [AC_MSG_ERROR(odbc not found. install odbc)],
10478 [#include <windows.h>])
10479 CPPFLAGS=$save_CPPFLAGS
10481 AC_CHECK_HEADER(sqlext.h, [],
10482 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10484 elif test "$enable_database_connectivity" = no; then
10485 AC_MSG_RESULT([none])
10487 AC_MSG_RESULT([internal])
10488 SYSTEM_ODBC_HEADERS=
10490 AC_SUBST(SYSTEM_ODBC_HEADERS)
10492 dnl ===================================================================
10493 dnl Check for system NSS
10494 dnl ===================================================================
10495 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10496 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,,[
10499 with_system_nss=yes
10505 AC_DEFINE(HAVE_FEATURE_NSS)
10507 elif test $_os != iOS ; then
10510 AC_SUBST(ENABLE_NSS)
10512 dnl ===================================================================
10513 dnl Enable LDAP support
10514 dnl ===================================================================
10516 if test "$test_openldap" = yes; then
10517 AC_MSG_CHECKING([whether to enable LDAP support])
10518 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10519 AC_MSG_RESULT([yes])
10522 if test "$enable_ldap" != "yes"; then
10523 AC_MSG_RESULT([no])
10525 AC_MSG_RESULT([no (needs NSS or system openldap)])
10529 dnl ===================================================================
10530 dnl Check for system openldap
10531 dnl ===================================================================
10533 if test "$ENABLE_LDAP" = TRUE; then
10534 AC_MSG_CHECKING([which openldap library to use])
10535 if test "$with_system_openldap" = yes; then
10536 AC_MSG_RESULT([external])
10537 SYSTEM_OPENLDAP=TRUE
10538 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10539 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10540 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10542 AC_MSG_RESULT([internal])
10543 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10548 AC_SUBST(ENABLE_LDAP)
10549 AC_SUBST(SYSTEM_OPENLDAP)
10551 dnl ===================================================================
10552 dnl Check for TLS/SSL and cryptographic implementation to use
10553 dnl ===================================================================
10554 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10555 if test -n "$with_tls"; then
10558 AC_DEFINE(USE_TLS_OPENSSL)
10560 AC_MSG_RESULT([$TLS])
10562 if test "$enable_openssl" != "yes"; then
10563 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10566 # warn that OpenSSL has been selected but not all TLS code has this option
10567 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10568 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10571 AC_DEFINE(USE_TLS_NSS)
10573 AC_MSG_RESULT([$TLS])
10576 AC_MSG_RESULT([none])
10577 AC_MSG_WARN([Skipping TLS/SSL])
10581 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10583 nss - Mozilla's Network Security Services (NSS)
10588 # default to using NSS, it results in smaller oox lib
10589 AC_DEFINE(USE_TLS_NSS)
10591 AC_MSG_RESULT([$TLS])
10595 dnl ===================================================================
10596 dnl Check for system sane
10597 dnl ===================================================================
10598 AC_MSG_CHECKING([which sane header to use])
10599 if test "$with_system_sane" = "yes"; then
10600 AC_MSG_RESULT([external])
10601 AC_CHECK_HEADER(sane/sane.h, [],
10602 [AC_MSG_ERROR(sane not found. install sane)], [])
10604 AC_MSG_RESULT([internal])
10605 BUILD_TYPE="$BUILD_TYPE SANE"
10608 dnl ===================================================================
10609 dnl Check for system icu
10610 dnl ===================================================================
10617 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10618 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10619 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10620 AC_MSG_CHECKING([which icu to use])
10621 if test "$with_system_icu" = "yes"; then
10622 AC_MSG_RESULT([external])
10624 AC_LANG_PUSH([C++])
10625 AC_MSG_CHECKING([for unicode/rbbi.h])
10626 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10629 if test "$cross_compiling" != "yes"; then
10630 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10631 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10632 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10633 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10636 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10637 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10638 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10639 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10640 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10641 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10642 AC_MSG_RESULT([yes])
10644 AC_MSG_RESULT([no])
10645 if test "$with_system_icu_for_build" != "force"; then
10646 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10647 You can use --with-system-icu-for-build=force to use it anyway.])
10652 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10653 # using the system icu tools can lead to version confusion, use the
10654 # ones from the build environment when cross-compiling
10655 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10656 if test -z "$SYSTEM_GENBRK"; then
10657 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10659 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10660 if test -z "$SYSTEM_GENCCODE"; then
10661 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10663 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10664 if test -z "$SYSTEM_GENCMN"; then
10665 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10667 if test "$ICU_MAJOR" -ge "49"; then
10668 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10669 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10670 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10672 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10673 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10674 ICU_RECLASSIFIED_HEBREW_LETTER=
10678 if test "$cross_compiling" = "yes"; then
10679 if test "$ICU_MAJOR" -ge "50"; then
10680 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10685 AC_MSG_RESULT([internal])
10687 BUILD_TYPE="$BUILD_TYPE ICU"
10688 # surprisingly set these only for "internal" (to be used by various other
10689 # external libs): the system icu-config is quite unhelpful and spits out
10690 # dozens of weird flags and also default path -I/usr/include
10691 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10692 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10694 if test "$ICU_MAJOR" -ge "59"; then
10695 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10696 # with -std=c++11 but not all external libraries can be built with that,
10697 # for those use a bit-compatible typedef uint16_t UChar; see
10698 # icu/source/common/unicode/umachine.h
10699 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10703 AC_SUBST(SYSTEM_ICU)
10704 AC_SUBST(SYSTEM_GENBRK)
10705 AC_SUBST(SYSTEM_GENCCODE)
10706 AC_SUBST(SYSTEM_GENCMN)
10707 AC_SUBST(ICU_MAJOR)
10708 AC_SUBST(ICU_MINOR)
10709 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10710 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10711 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10712 AC_SUBST(ICU_CFLAGS)
10714 AC_SUBST(ICU_UCHAR_TYPE)
10716 dnl ==================================================================
10718 dnl ==================================================================
10719 DEFAULT_CRASHDUMP_VALUE="true"
10720 AC_MSG_CHECKING([whether to enable breakpad])
10721 if test "$enable_breakpad" != yes; then
10722 AC_MSG_RESULT([no])
10724 AC_MSG_RESULT([yes])
10725 ENABLE_BREAKPAD="TRUE"
10726 AC_DEFINE(ENABLE_BREAKPAD)
10727 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10728 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10730 AC_MSG_CHECKING([for disable crash dump])
10731 if test "$enable_crashdump" = no; then
10732 DEFAULT_CRASHDUMP_VALUE="false"
10733 AC_MSG_RESULT([yes])
10735 AC_MSG_RESULT([no])
10738 AC_MSG_CHECKING([for crashreport config])
10739 if test "$with_symbol_config" = "no"; then
10740 BREAKPAD_SYMBOL_CONFIG="invalid"
10741 AC_MSG_RESULT([no])
10743 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10744 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10745 AC_MSG_RESULT([yes])
10747 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10749 AC_SUBST(ENABLE_BREAKPAD)
10750 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10752 dnl ==================================================================
10754 dnl ==================================================================
10755 AC_MSG_CHECKING([whether to enable fuzzers])
10756 if test "$enable_fuzzers" != yes; then
10757 AC_MSG_RESULT([no])
10759 if test -z $LIB_FUZZING_ENGINE; then
10760 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10762 AC_MSG_RESULT([yes])
10763 ENABLE_FUZZERS="TRUE"
10764 AC_DEFINE([ENABLE_FUZZERS],1)
10765 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10767 AC_SUBST(LIB_FUZZING_ENGINE)
10768 AC_SUBST(ENABLE_FUZZERS)
10770 dnl ===================================================================
10772 dnl ===================================================================
10773 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10774 if test "$with_system_orcus" != "yes"; then
10775 if test "$SYSTEM_BOOST" = "TRUE"; then
10776 dnl Link with Boost.System
10777 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10778 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10779 dnl in documentation has no effect.
10783 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10784 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10785 AC_SUBST([BOOST_SYSTEM_LIB])
10786 AC_SUBST(SYSTEM_LIBORCUS)
10788 dnl ===================================================================
10790 dnl ===================================================================
10791 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10792 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10793 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10795 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10796 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10797 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10799 if test "$COM" = "MSC"; then # override the above
10800 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10801 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10804 if test "$with_system_harfbuzz" = "yes"; then
10805 if test "$with_system_graphite" = "no"; then
10806 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10808 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10810 save_CFLAGS="$CFLAGS"
10811 LIBS="$LIBS $HARFBUZZ_LIBS"
10812 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10813 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10815 CFLAGS="$save_CFLAGS"
10817 if test "$with_system_graphite" = "yes"; then
10818 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10822 if test "$USING_X11" = TRUE; then
10825 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10827 if test -z "$x_includes"; then
10828 x_includes="default_x_includes"
10830 if test -z "$x_libraries"; then
10831 x_libraries="default_x_libraries"
10833 CFLAGS="$CFLAGS $X_CFLAGS"
10834 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10835 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10837 x_includes="no_x_includes"
10838 x_libraries="no_x_libraries"
10841 if test "$USING_X11" = TRUE; then
10842 dnl ===================================================================
10843 dnl Check for extension headers
10844 dnl ===================================================================
10845 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10846 [#include <X11/extensions/shape.h>])
10848 # vcl needs ICE and SM
10849 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10850 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10851 [AC_MSG_ERROR(ICE library not found)])
10852 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10853 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10854 [AC_MSG_ERROR(SM library not found)])
10857 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10858 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10859 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10862 dnl ===================================================================
10863 dnl Check for system Xrender
10864 dnl ===================================================================
10865 AC_MSG_CHECKING([whether to use Xrender])
10866 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10867 AC_MSG_RESULT([yes])
10868 PKG_CHECK_MODULES(XRENDER, xrender)
10869 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10870 FilterLibs "${XRENDER_LIBS}"
10871 XRENDER_LIBS="${filteredlibs}"
10872 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10873 [AC_MSG_ERROR(libXrender not found or functional)], [])
10874 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10875 [AC_MSG_ERROR(Xrender not found. install X)], [])
10877 AC_MSG_RESULT([no])
10879 AC_SUBST(XRENDER_CFLAGS)
10880 AC_SUBST(XRENDER_LIBS)
10882 dnl ===================================================================
10883 dnl Check for XRandr
10884 dnl ===================================================================
10885 AC_MSG_CHECKING([whether to enable RandR support])
10886 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10887 AC_MSG_RESULT([yes])
10888 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10889 if test "$ENABLE_RANDR" != "TRUE"; then
10890 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10891 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10893 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10894 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10895 XRANDR_LIBS="-lXrandr "
10896 ENABLE_RANDR="TRUE"
10898 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10899 FilterLibs "${XRANDR_LIBS}"
10900 XRANDR_LIBS="${filteredlibs}"
10903 AC_MSG_RESULT([no])
10905 AC_SUBST(XRANDR_CFLAGS)
10906 AC_SUBST(XRANDR_LIBS)
10907 AC_SUBST(ENABLE_RANDR)
10909 if test "$test_webdav" = yes; then
10910 if test -z "$with_webdav"; then
10913 WITH_WEBDAV="$with_webdav"
10917 AC_MSG_CHECKING([for webdav library])
10918 case "$WITH_WEBDAV" in
10920 AC_MSG_RESULT([curl])
10921 # curl is already mandatory (almost) and checked elsewhere
10922 if test "$enable_curl" = "no"; then
10923 AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10927 AC_MSG_RESULT([serf])
10928 # Check for system apr-util
10929 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10930 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10931 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10932 if test "$COM" = "MSC"; then
10934 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10935 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10938 # Check for system serf
10939 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10942 AC_MSG_RESULT([neon])
10943 # Check for system neon
10944 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10945 if test "$with_system_neon" = "yes"; then
10946 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10950 AC_SUBST(NEON_VERSION)
10953 AC_MSG_RESULT([none, disabled])
10957 AC_SUBST(WITH_WEBDAV)
10959 dnl ===================================================================
10960 dnl Check for disabling cve_tests
10961 dnl ===================================================================
10962 AC_MSG_CHECKING([whether to execute CVE tests])
10963 # If not explicitly enabled or disabled, default
10964 if test -z "$enable_cve_tests"; then
10967 # Default cves off for Windows with its wild and wonderful
10968 # variety of AV software kicking in and panicking
10969 enable_cve_tests=no
10973 enable_cve_tests=yes
10977 if test "$enable_cve_tests" = "no"; then
10978 AC_MSG_RESULT([no])
10979 DISABLE_CVE_TESTS=TRUE
10980 AC_SUBST(DISABLE_CVE_TESTS)
10982 AC_MSG_RESULT([yes])
10985 dnl ===================================================================
10986 dnl Check for enabling chart XShape tests
10987 dnl ===================================================================
10988 AC_MSG_CHECKING([whether to execute chart XShape tests])
10989 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10990 AC_MSG_RESULT([yes])
10991 ENABLE_CHART_TESTS=TRUE
10992 AC_SUBST(ENABLE_CHART_TESTS)
10994 AC_MSG_RESULT([no])
10997 dnl ===================================================================
10998 dnl Check for system openssl
10999 dnl ===================================================================
11001 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11002 if test "$enable_openssl" = "yes"; then
11003 AC_MSG_RESULT([no])
11004 ENABLE_OPENSSL=TRUE
11005 if test "$_os" = Darwin ; then
11006 # OpenSSL is deprecated when building for 10.7 or later.
11008 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11009 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11011 with_system_openssl=no
11012 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11013 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11014 && test "$with_system_openssl" != "no"; then
11015 with_system_openssl=yes
11016 SYSTEM_OPENSSL=TRUE
11018 OPENSSL_LIBS="-lssl -lcrypto"
11020 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11022 if test "$with_system_openssl" = "yes"; then
11023 AC_MSG_CHECKING([whether openssl supports SHA512])
11025 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11026 SHA512_CTX context;
11027 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11031 AC_MSG_RESULT([yes])
11033 # warn that although OpenSSL is disabled, system libraries may depend on it
11034 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11035 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11038 AC_SUBST([ENABLE_OPENSSL])
11040 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11041 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11042 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11043 enable_cipher_openssl_backend=no
11045 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11048 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11049 ENABLE_CIPHER_OPENSSL_BACKEND=
11050 if test "$enable_cipher_openssl_backend" = yes; then
11051 AC_MSG_RESULT([yes])
11052 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11054 AC_MSG_RESULT([no])
11056 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11058 dnl ===================================================================
11059 dnl Select the crypto backends used by LO
11060 dnl ===================================================================
11062 if test "$build_crypto" = yes; then
11063 if test "$OS" = WNT; then
11064 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11065 AC_DEFINE([USE_CRYPTO_MSCAPI])
11066 elif test "$ENABLE_NSS" = TRUE; then
11067 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11068 AC_DEFINE([USE_CRYPTO_NSS])
11072 dnl ===================================================================
11073 dnl Check for building gnutls
11074 dnl ===================================================================
11075 AC_MSG_CHECKING([whether to use gnutls])
11076 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
11077 AC_MSG_RESULT([yes])
11078 AM_PATH_LIBGCRYPT()
11079 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
11080 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
11081 available in the system to use as replacement.]]))
11082 FilterLibs "${LIBGCRYPT_LIBS}"
11083 LIBGCRYPT_LIBS="${filteredlibs}"
11085 AC_MSG_RESULT([no])
11088 AC_SUBST([LIBGCRYPT_CFLAGS])
11089 AC_SUBST([LIBGCRYPT_LIBS])
11091 dnl ===================================================================
11092 dnl Check for system redland
11093 dnl ===================================================================
11094 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11095 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11096 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11097 if test "$with_system_redland" = "yes"; then
11098 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11099 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11105 AC_SUBST(RAPTOR_MAJOR)
11106 AC_SUBST(RASQAL_MAJOR)
11107 AC_SUBST(REDLAND_MAJOR)
11109 dnl ===================================================================
11110 dnl Check for system hunspell
11111 dnl ===================================================================
11112 AC_MSG_CHECKING([which libhunspell to use])
11113 if test "$with_system_hunspell" = "yes"; then
11114 AC_MSG_RESULT([external])
11115 SYSTEM_HUNSPELL=TRUE
11116 AC_LANG_PUSH([C++])
11117 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11118 if test "$HUNSPELL_PC" != "TRUE"; then
11119 AC_CHECK_HEADER(hunspell.hxx, [],
11121 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11122 [AC_MSG_ERROR(hunspell headers not found.)], [])
11124 AC_CHECK_LIB([hunspell], [main], [:],
11125 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11126 HUNSPELL_LIBS=-lhunspell
11129 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11130 FilterLibs "${HUNSPELL_LIBS}"
11131 HUNSPELL_LIBS="${filteredlibs}"
11133 AC_MSG_RESULT([internal])
11135 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11136 if test "$COM" = "MSC"; then
11137 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11139 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11141 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11143 AC_SUBST(SYSTEM_HUNSPELL)
11144 AC_SUBST(HUNSPELL_CFLAGS)
11145 AC_SUBST(HUNSPELL_LIBS)
11147 dnl ===================================================================
11148 dnl Check for system zxing
11149 dnl ===================================================================
11150 AC_MSG_CHECKING([whether to use zxing])
11151 if test "$enable_zxing" = "no"; then
11152 AC_MSG_RESULT([no])
11156 AC_MSG_RESULT([yes])
11158 AC_MSG_CHECKING([which libzxing to use])
11159 if test "$with_system_zxing" = "yes"; then
11160 AC_MSG_RESULT([external])
11163 AC_LANG_PUSH([C++])
11164 save_CXXFLAGS=$CXXFLAGS
11167 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11168 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11169 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11170 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11171 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11172 dnl unsetting IFS."):
11174 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11175 dnl ignore them here:
11176 if test -z "$i"; then
11179 dnl TODO: White space in $i would cause problems:
11180 CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11181 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11182 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11184 CXXFLAGS=$save_CXXFLAGS
11185 if test -z "$ZXING_CFLAGS"; then
11186 AC_MSG_ERROR(zxing headers not found.)
11188 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11189 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11190 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11192 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11193 FilterLibs "${ZXING_LIBS}"
11194 ZXING_LIBS="${filteredlibs}"
11196 AC_MSG_RESULT([internal])
11198 BUILD_TYPE="$BUILD_TYPE ZXING"
11200 if test "$ENABLE_ZXING" = TRUE; then
11201 AC_DEFINE(ENABLE_ZXING)
11204 AC_SUBST(SYSTEM_ZXING)
11205 AC_SUBST(ENABLE_ZXING)
11206 AC_SUBST(ZXING_CFLAGS)
11207 AC_SUBST(ZXING_LIBS)
11209 dnl ===================================================================
11210 dnl Check for system box2d
11211 dnl ===================================================================
11212 AC_MSG_CHECKING([which box2d to use])
11213 if test "$with_system_box2d" = "yes"; then
11214 AC_MSG_RESULT([external])
11216 AC_LANG_PUSH([C++])
11217 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11218 [BOX2D_H_FOUND='FALSE'])
11219 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11221 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11223 # fail this. there's no other alternative to check when we are here.
11224 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11225 [AC_MSG_ERROR(box2d headers not found.)])
11227 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11229 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11230 [ AC_MSG_ERROR(box2d library not found.) ], [])
11231 BOX2D_LIBS=-l$_BOX2D_LIB
11233 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11234 FilterLibs "${BOX2D_LIBS}"
11235 BOX2D_LIBS="${filteredlibs}"
11237 AC_MSG_RESULT([internal])
11239 BUILD_TYPE="$BUILD_TYPE BOX2D"
11241 AC_SUBST(SYSTEM_BOX2D)
11242 AC_SUBST(BOX2D_CFLAGS)
11243 AC_SUBST(BOX2D_LIBS)
11245 dnl ===================================================================
11246 dnl Checking for altlinuxhyph
11247 dnl ===================================================================
11248 AC_MSG_CHECKING([which altlinuxhyph to use])
11249 if test "$with_system_altlinuxhyph" = "yes"; then
11250 AC_MSG_RESULT([external])
11252 AC_CHECK_HEADER(hyphen.h, [],
11253 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11254 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11255 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11256 [#include <hyphen.h>])
11257 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11258 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11259 if test -z "$HYPHEN_LIB"; then
11260 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11261 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11263 if test -z "$HYPHEN_LIB"; then
11264 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11265 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11268 AC_MSG_RESULT([internal])
11270 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11271 if test "$COM" = "MSC"; then
11272 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11274 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11277 AC_SUBST(SYSTEM_HYPH)
11278 AC_SUBST(HYPHEN_LIB)
11280 dnl ===================================================================
11281 dnl Checking for mythes
11282 dnl ===================================================================
11283 AC_MSG_CHECKING([which mythes to use])
11284 if test "$with_system_mythes" = "yes"; then
11285 AC_MSG_RESULT([external])
11287 AC_LANG_PUSH([C++])
11288 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11289 if test "$MYTHES_PKGCONFIG" = "no"; then
11290 AC_CHECK_HEADER(mythes.hxx, [],
11291 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11292 AC_CHECK_LIB([mythes-1.2], [main], [:],
11293 [ MYTHES_FOUND=no], [])
11294 if test "$MYTHES_FOUND" = "no"; then
11295 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11296 [ MYTHES_FOUND=no], [])
11298 if test "$MYTHES_FOUND" = "no"; then
11299 AC_MSG_ERROR([mythes library not found!.])
11303 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11304 FilterLibs "${MYTHES_LIBS}"
11305 MYTHES_LIBS="${filteredlibs}"
11307 AC_MSG_RESULT([internal])
11309 BUILD_TYPE="$BUILD_TYPE MYTHES"
11310 if test "$COM" = "MSC"; then
11311 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11313 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11316 AC_SUBST(SYSTEM_MYTHES)
11317 AC_SUBST(MYTHES_CFLAGS)
11318 AC_SUBST(MYTHES_LIBS)
11320 dnl ===================================================================
11321 dnl How should we build the linear programming solver ?
11322 dnl ===================================================================
11325 AC_MSG_CHECKING([whether to build with CoinMP])
11326 if test "$enable_coinmp" != "no"; then
11328 AC_MSG_RESULT([yes])
11329 if test "$with_system_coinmp" = "yes"; then
11331 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11332 FilterLibs "${COINMP_LIBS}"
11333 COINMP_LIBS="${filteredlibs}"
11335 BUILD_TYPE="$BUILD_TYPE COINMP"
11338 AC_MSG_RESULT([no])
11340 AC_SUBST(ENABLE_COINMP)
11341 AC_SUBST(SYSTEM_COINMP)
11342 AC_SUBST(COINMP_CFLAGS)
11343 AC_SUBST(COINMP_LIBS)
11346 AC_MSG_CHECKING([whether to build with lpsolve])
11347 if test "$enable_lpsolve" != "no"; then
11348 ENABLE_LPSOLVE=TRUE
11349 AC_MSG_RESULT([yes])
11351 AC_MSG_RESULT([no])
11353 AC_SUBST(ENABLE_LPSOLVE)
11355 if test "$ENABLE_LPSOLVE" = TRUE; then
11356 AC_MSG_CHECKING([which lpsolve to use])
11357 if test "$with_system_lpsolve" = "yes"; then
11358 AC_MSG_RESULT([external])
11359 SYSTEM_LPSOLVE=TRUE
11360 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11361 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11363 # some systems need this. Like Ubuntu...
11364 AC_CHECK_LIB(m, floor)
11365 AC_CHECK_LIB(dl, dlopen)
11366 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11367 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11370 AC_MSG_RESULT([internal])
11372 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11375 AC_SUBST(SYSTEM_LPSOLVE)
11377 dnl ===================================================================
11378 dnl Checking for libexttextcat
11379 dnl ===================================================================
11380 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11381 if test "$with_system_libexttextcat" = "yes"; then
11382 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11384 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11386 dnl ===================================================================
11387 dnl Checking for libnumbertext
11388 dnl ===================================================================
11389 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11390 if test "$with_system_libnumbertext" = "yes"; then
11391 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11392 SYSTEM_LIBNUMBERTEXT=YES
11394 SYSTEM_LIBNUMBERTEXT=
11395 AC_LANG_PUSH([C++])
11396 save_CPPFLAGS=$CPPFLAGS
11397 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11398 AC_CHECK_HEADERS([codecvt regex])
11399 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11400 [ LIBNUMBERTEXT_CFLAGS=''
11401 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11402 Enable libnumbertext fallback (missing number to number name conversion).])
11404 CPPFLAGS=$save_CPPFLAGS
11407 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11408 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11409 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11411 dnl ***************************************
11412 dnl testing libc version for Linux...
11413 dnl ***************************************
11414 if test "$_os" = "Linux"; then
11415 AC_MSG_CHECKING([whether the libc is recent enough])
11416 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11417 #include <features.h>
11418 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11419 #error glibc >= 2.1 is required
11421 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11424 dnl =========================================
11425 dnl Check for uuidgen
11426 dnl =========================================
11427 if test "$_os" = "WINNT"; then
11428 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11429 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11430 UUIDGEN=uuidgen.exe
11433 AC_PATH_PROG([UUIDGEN], [uuidgen])
11434 if test -z "$UUIDGEN"; then
11435 AC_MSG_WARN([uuid is needed for building installation sets])
11439 dnl ***************************************
11440 dnl Checking for bison and flex
11441 dnl ***************************************
11442 AC_PATH_PROG(BISON, bison)
11443 if test -z "$BISON"; then
11444 AC_MSG_ERROR([no bison found in \$PATH, install it])
11446 AC_MSG_CHECKING([the bison version])
11447 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11448 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11449 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11452 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]
11453 dnl typedef union YYSTYPE
11456 dnl while at least 3.4.1 is know to be good:
11457 if test "$COMPILER_PLUGINS" = TRUE; then
11458 if test "$_bison_longver" -lt 2004; then
11459 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11462 if test "$_bison_longver" -lt 2000; then
11463 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11469 AC_PATH_PROG(FLEX, flex)
11470 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11471 FLEX=`cygpath -m $FLEX`
11473 if test -z "$FLEX"; then
11474 AC_MSG_ERROR([no flex found in \$PATH, install it])
11476 AC_MSG_CHECKING([the flex version])
11477 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11478 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11479 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11483 dnl ***************************************
11484 dnl Checking for patch
11485 dnl ***************************************
11486 AC_PATH_PROG(PATCH, patch)
11487 if test -z "$PATCH"; then
11488 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11491 dnl On Solaris or macOS, check if --with-gnu-patch was used
11492 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11493 if test -z "$with_gnu_patch"; then
11496 if test -x "$with_gnu_patch"; then
11497 GNUPATCH=$with_gnu_patch
11499 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11503 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11504 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11505 AC_MSG_RESULT([yes])
11507 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11513 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11514 GNUPATCH=`cygpath -m $GNUPATCH`
11517 dnl We also need to check for --with-gnu-cp
11519 if test -z "$with_gnu_cp"; then
11520 # check the place where the good stuff is hidden on Solaris...
11521 if test -x /usr/gnu/bin/cp; then
11522 GNUCP=/usr/gnu/bin/cp
11524 AC_PATH_PROGS(GNUCP, gnucp cp)
11526 if test -z $GNUCP; then
11527 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11530 if test -x "$with_gnu_cp"; then
11533 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11537 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11538 GNUCP=`cygpath -m $GNUCP`
11541 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11542 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11543 AC_MSG_RESULT([yes])
11544 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11545 AC_MSG_RESULT([yes])
11547 case "$build_os" in
11548 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11551 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11554 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11563 dnl ***************************************
11564 dnl testing assembler path
11565 dnl ***************************************
11567 if test "$_os" = "WINNT"; then
11568 case "$WIN_HOST_ARCH" in
11569 x86) assembler=ml.exe ;;
11570 x64) assembler=ml64.exe ;;
11571 arm64) assembler=armasm64.exe ;;
11574 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11575 if test -f "$MSVC_HOST_PATH/$assembler"; then
11576 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11577 AC_MSG_RESULT([$ML_EXE])
11579 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11585 dnl ===================================================================
11586 dnl We need zip and unzip
11587 dnl ===================================================================
11588 AC_PATH_PROG(ZIP, zip)
11589 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11590 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11591 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],,)
11594 AC_PATH_PROG(UNZIP, unzip)
11595 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11597 dnl ===================================================================
11598 dnl Zip must be a specific type for different build types.
11599 dnl ===================================================================
11600 if test $build_os = cygwin; then
11601 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11602 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11606 dnl ===================================================================
11607 dnl We need touch with -h option support.
11608 dnl ===================================================================
11609 AC_PATH_PROG(TOUCH, touch)
11610 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11611 touch "$WARNINGS_FILE"
11612 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11613 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],,)
11616 dnl ===================================================================
11617 dnl Check for system epoxy
11618 dnl ===================================================================
11619 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11621 dnl ===================================================================
11622 dnl Set vcl option: coordinate device in double or sal_Int32
11623 dnl ===================================================================
11625 dnl disabled for now, we don't want subtle differences between OSs
11626 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11627 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11628 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11629 dnl AC_MSG_RESULT([double])
11631 dnl AC_MSG_RESULT([sal_Int32])
11634 dnl ===================================================================
11635 dnl Show which vclplugs will be built.
11636 dnl ===================================================================
11638 if test "$USING_X11" != TRUE; then
11643 if test "x$enable_gtk3" = "xyes"; then
11645 AC_DEFINE(ENABLE_GTK3)
11648 AC_SUBST(ENABLE_GTK3)
11650 ENABLE_GTK3_KDE5=""
11651 if test "x$enable_gtk3_kde5" = "xyes"; then
11652 ENABLE_GTK3_KDE5="TRUE"
11653 AC_DEFINE(ENABLE_GTK3_KDE5)
11656 AC_SUBST(ENABLE_GTK3_KDE5)
11659 if test "x$enable_gtk4" = "xyes"; then
11661 AC_DEFINE(ENABLE_GTK4)
11664 AC_SUBST(ENABLE_GTK4)
11667 if test "x$enable_qt5" = "xyes"; then
11669 AC_DEFINE(ENABLE_QT5)
11672 AC_SUBST(ENABLE_QT5)
11675 if test "x$enable_qt6" = "xyes"; then
11677 AC_DEFINE(ENABLE_QT6)
11680 AC_SUBST(ENABLE_QT6)
11684 if test "x$enable_kf5" = "xyes"; then
11686 AC_DEFINE(ENABLE_KF5)
11689 AC_SUBST(ENABLE_KF5)
11691 if test "x$USING_X11" = "xyes"; then
11695 if test "$_os" = "WINNT"; then
11697 elif test "$_os" = "Darwin"; then
11699 elif test "$_os" = "iOS"; then
11701 elif test "$_os" = Android; then
11705 build_vcl_plugins="$R"
11706 if test -z "$build_vcl_plugins"; then
11707 build_vcl_plugins=" none"
11709 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11711 AC_SUBST([VCL_PLUGIN_INFO])
11713 dnl ===================================================================
11714 dnl Check for GTK libraries
11715 dnl ===================================================================
11719 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11720 if test "$with_system_cairo" = no; then
11721 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11723 : ${with_system_cairo:=yes}
11724 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)
11725 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11726 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11727 FilterLibs "${GTK3_LIBS}"
11728 GTK3_LIBS="${filteredlibs}"
11730 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11731 if test "$with_system_epoxy" != "yes"; then
11732 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11733 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11734 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11737 AC_SUBST(GTK3_LIBS)
11738 AC_SUBST(GTK3_CFLAGS)
11742 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11743 if test "$with_system_cairo" = no; then
11744 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11746 : ${with_system_cairo:=yes}
11747 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11748 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11749 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11750 FilterLibs "${GTK4_LIBS}"
11751 GTK4_LIBS="${filteredlibs}"
11753 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11754 if test "$with_system_epoxy" != "yes"; then
11755 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11756 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11757 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11760 AC_SUBST(GTK4_LIBS)
11761 AC_SUBST(GTK4_CFLAGS)
11763 if test "$enable_introspection" = yes; then
11764 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11765 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11767 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11771 dnl ===================================================================
11772 dnl check for dbus support
11773 dnl ===================================================================
11777 DBUS_GLIB_CFLAGS=""
11781 if test "$enable_dbus" = "no"; then
11785 AC_MSG_CHECKING([whether to enable DBUS support])
11786 if test "$test_dbus" = "yes"; then
11788 AC_MSG_RESULT([yes])
11789 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11790 AC_DEFINE(ENABLE_DBUS)
11791 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11792 FilterLibs "${DBUS_LIBS}"
11793 DBUS_LIBS="${filteredlibs}"
11795 # Glib is needed for BluetoothServer
11796 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11797 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11799 DBUS_HAVE_GLIB="TRUE"
11800 AC_DEFINE(DBUS_HAVE_GLIB,1)
11802 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11805 AC_MSG_RESULT([no])
11808 AC_SUBST(ENABLE_DBUS)
11809 AC_SUBST(DBUS_CFLAGS)
11810 AC_SUBST(DBUS_LIBS)
11811 AC_SUBST(DBUS_GLIB_CFLAGS)
11812 AC_SUBST(DBUS_GLIB_LIBS)
11813 AC_SUBST(DBUS_HAVE_GLIB)
11815 AC_MSG_CHECKING([whether to enable Impress remote control])
11816 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11817 AC_MSG_RESULT([yes])
11818 ENABLE_SDREMOTE=TRUE
11819 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11821 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11823 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11824 # The Bluetooth code doesn't compile with macOS SDK 10.15
11825 if test "$enable_sdremote_bluetooth" = yes; then
11826 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11828 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11829 enable_sdremote_bluetooth=no
11831 # If not explicitly enabled or disabled, default
11832 if test -z "$enable_sdremote_bluetooth"; then
11835 # Default to yes for these
11836 enable_sdremote_bluetooth=yes
11840 enable_sdremote_bluetooth=no
11844 # $enable_sdremote_bluetooth is guaranteed non-empty now
11846 if test "$enable_sdremote_bluetooth" != "no"; then
11847 if test "$OS" = "LINUX"; then
11848 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11849 AC_MSG_RESULT([yes])
11850 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11851 dnl ===================================================================
11852 dnl Check for system bluez
11853 dnl ===================================================================
11854 AC_MSG_CHECKING([which Bluetooth header to use])
11855 if test "$with_system_bluez" = "yes"; then
11856 AC_MSG_RESULT([external])
11857 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11858 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11861 AC_MSG_RESULT([internal])
11865 AC_MSG_RESULT([no, dbus disabled])
11866 ENABLE_SDREMOTE_BLUETOOTH=
11870 AC_MSG_RESULT([yes])
11871 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11873 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11874 <key>com.apple.security.device.bluetooth</key>
11878 AC_MSG_RESULT([no])
11879 ENABLE_SDREMOTE_BLUETOOTH=
11885 AC_MSG_RESULT([no])
11887 AC_SUBST(ENABLE_SDREMOTE)
11888 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11889 AC_SUBST(SDREMOTE_ENTITLEMENT)
11890 AC_SUBST(SYSTEM_BLUEZ)
11892 dnl ===================================================================
11893 dnl Check whether to enable GIO support
11894 dnl ===================================================================
11895 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11896 AC_MSG_CHECKING([whether to enable GIO support])
11897 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11898 dnl Need at least 2.26 for the dbus support.
11899 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11900 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11901 if test "$ENABLE_GIO" = "TRUE"; then
11902 AC_DEFINE(ENABLE_GIO)
11903 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11904 FilterLibs "${GIO_LIBS}"
11905 GIO_LIBS="${filteredlibs}"
11908 AC_MSG_RESULT([no])
11911 AC_SUBST(ENABLE_GIO)
11912 AC_SUBST(GIO_CFLAGS)
11916 dnl ===================================================================
11918 SPLIT_APP_MODULES=""
11919 if test "$enable_split_app_modules" = "yes"; then
11920 SPLIT_APP_MODULES="TRUE"
11922 AC_SUBST(SPLIT_APP_MODULES)
11924 SPLIT_OPT_FEATURES=""
11925 if test "$enable_split_opt_features" = "yes"; then
11926 SPLIT_OPT_FEATURES="TRUE"
11928 AC_SUBST(SPLIT_OPT_FEATURES)
11930 dnl ===================================================================
11931 dnl Check whether the GStreamer libraries are available.
11932 dnl ===================================================================
11934 ENABLE_GSTREAMER_1_0=""
11936 if test "$test_gstreamer_1_0" = yes; then
11938 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11939 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11940 ENABLE_GSTREAMER_1_0="TRUE"
11941 AC_MSG_RESULT([yes])
11942 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11943 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11944 FilterLibs "${GSTREAMER_1_0_LIBS}"
11945 GSTREAMER_1_0_LIBS="${filteredlibs}"
11946 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11948 AC_MSG_RESULT([no])
11951 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11952 AC_SUBST(GSTREAMER_1_0_LIBS)
11953 AC_SUBST(ENABLE_GSTREAMER_1_0)
11955 ENABLE_OPENGL_TRANSITIONS=
11956 ENABLE_OPENGL_CANVAS=
11957 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11959 elif test "$_os" = "Darwin"; then
11960 # We use frameworks on macOS, no need for detail checks
11961 ENABLE_OPENGL_TRANSITIONS=TRUE
11962 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11963 ENABLE_OPENGL_CANVAS=TRUE
11964 elif test $_os = WINNT; then
11965 ENABLE_OPENGL_TRANSITIONS=TRUE
11966 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11967 ENABLE_OPENGL_CANVAS=TRUE
11969 if test "$USING_X11" = TRUE; then
11970 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11971 ENABLE_OPENGL_TRANSITIONS=TRUE
11972 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11973 ENABLE_OPENGL_CANVAS=TRUE
11977 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11978 AC_SUBST(ENABLE_OPENGL_CANVAS)
11980 dnl =================================================
11981 dnl Check whether to build with OpenCL support.
11982 dnl =================================================
11984 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11985 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11986 # platform (optional at run-time, used through clew).
11987 BUILD_TYPE="$BUILD_TYPE OPENCL"
11988 AC_DEFINE(HAVE_FEATURE_OPENCL)
11991 dnl =================================================
11992 dnl Check whether to build with dconf support.
11993 dnl =================================================
11995 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11996 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11997 if test "$enable_dconf" = yes; then
11998 AC_MSG_ERROR([dconf not found])
12003 AC_MSG_CHECKING([whether to enable dconf])
12004 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12008 AC_MSG_RESULT([no])
12011 AC_DEFINE(ENABLE_DCONF)
12012 AC_MSG_RESULT([yes])
12014 AC_SUBST([DCONF_CFLAGS])
12015 AC_SUBST([DCONF_LIBS])
12016 AC_SUBST([ENABLE_DCONF])
12019 AC_MSG_CHECKING([whether to build the PDF import feature])
12021 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12022 AC_MSG_RESULT([yes])
12023 ENABLE_PDFIMPORT=TRUE
12024 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12026 AC_MSG_RESULT([no])
12030 AC_MSG_CHECKING([whether to build PDFium])
12032 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12033 AC_MSG_RESULT([yes])
12035 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12037 AC_MSG_RESULT([no])
12039 AC_SUBST(ENABLE_PDFIUM)
12041 if test "$ENABLE_PDFIUM" = "TRUE"; then
12042 AC_MSG_CHECKING([which OpenJPEG library to use])
12043 if test "$with_system_openjpeg" = "yes"; then
12044 SYSTEM_OPENJPEG2=TRUE
12045 AC_MSG_RESULT([external])
12046 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12047 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12048 FilterLibs "${OPENJPEG2_LIBS}"
12049 OPENJPEG2_LIBS="${filteredlibs}"
12051 SYSTEM_OPENJPEG2=FALSE
12052 AC_MSG_RESULT([internal])
12054 AC_MSG_CHECKING([which Abseil library to use])
12055 if test "$with_system_abseil" = "yes"; then
12056 AC_MSG_RESULT([external])
12058 AC_LANG_PUSH([C++])
12059 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12060 [AC_MSG_ERROR(abseil headers not found.)], [])
12061 #ABSEIL_CFLAGS=-I/usr/include
12062 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
12063 [ AC_MSG_ERROR([libabsl_bad_optional_access library not found.]) ])
12065 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12066 FilterLibs "${ABSEIL_LIBS}"
12067 ABSEIL_LIBS="${filteredlibs}"
12069 AC_MSG_RESULT([internal])
12072 AC_SUBST(SYSTEM_OPENJPEG2)
12073 AC_SUBST(SYSTEM_ABSEIL)
12074 AC_SUBST(ABSEIL_CFLAGS)
12075 AC_SUBST(ABSEIL_LIBS)
12077 dnl ===================================================================
12078 dnl Check for poppler
12079 dnl ===================================================================
12081 AC_MSG_CHECKING([whether to build Poppler])
12082 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12083 AC_MSG_RESULT([yes])
12084 ENABLE_POPPLER=TRUE
12085 AC_DEFINE(HAVE_FEATURE_POPPLER)
12087 AC_MSG_RESULT([no])
12089 AC_SUBST(ENABLE_POPPLER)
12091 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12092 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12095 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12096 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12099 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12100 dnl ===================================================================
12101 dnl Check for system poppler
12102 dnl ===================================================================
12103 AC_MSG_CHECKING([which PDF import poppler to use])
12104 if test "$with_system_poppler" = "yes"; then
12105 AC_MSG_RESULT([external])
12106 SYSTEM_POPPLER=TRUE
12107 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12108 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12109 FilterLibs "${POPPLER_LIBS}"
12110 POPPLER_LIBS="${filteredlibs}"
12112 AC_MSG_RESULT([internal])
12114 BUILD_TYPE="$BUILD_TYPE POPPLER"
12116 AC_DEFINE([ENABLE_PDFIMPORT],1)
12118 AC_SUBST(ENABLE_PDFIMPORT)
12119 AC_SUBST(SYSTEM_POPPLER)
12120 AC_SUBST(POPPLER_CFLAGS)
12121 AC_SUBST(POPPLER_LIBS)
12125 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12126 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12127 if test "$SYSTEM_FREETYPE" = TRUE; then
12128 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12129 [skia_freetype_ok=yes],
12130 [skia_freetype_ok=no])
12131 else # internal is ok
12132 skia_freetype_ok=yes
12134 AC_MSG_CHECKING([whether to build Skia])
12135 if test "$skia_freetype_ok" = "yes"; then
12136 if test "$enable_skia" = "debug"; then
12137 AC_MSG_RESULT([yes (debug)])
12138 ENABLE_SKIA_DEBUG=TRUE
12140 AC_MSG_RESULT([yes])
12144 AC_DEFINE(HAVE_FEATURE_SKIA)
12145 BUILD_TYPE="$BUILD_TYPE SKIA"
12147 if test "$OS" = "MACOSX"; then
12148 AC_DEFINE(SK_SUPPORT_GPU,1)
12149 AC_DEFINE(SK_METAL,1)
12153 AC_DEFINE(SK_SUPPORT_GPU,1)
12154 AC_DEFINE(SK_VULKAN,1)
12159 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12160 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12161 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12164 AC_MSG_RESULT([no (freetype too old)])
12165 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12169 AC_MSG_CHECKING([whether to build Skia])
12170 AC_MSG_RESULT([no])
12172 AC_SUBST(ENABLE_SKIA)
12173 AC_SUBST(ENABLE_SKIA_DEBUG)
12175 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12176 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12177 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12178 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12179 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12180 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12181 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12182 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12183 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12184 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12185 HAVE_LO_CLANG_DLLEXPORTINLINES=
12187 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12188 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12189 AC_MSG_CHECKING([for Clang])
12190 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12192 if test "$_os" = "WINNT"; then
12193 AC_MSG_CHECKING([for clang-cl])
12194 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12195 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12196 dnl explicitly set -m32/-m64
12197 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12198 LO_CLANG_CXX="$LO_CLANG_CC"
12199 AC_MSG_RESULT([$LO_CLANG_CC])
12201 AC_MSG_RESULT([no])
12204 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12205 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12208 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12209 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12210 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12211 if test "$clang2_ver" -lt 50002; then
12212 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12217 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12219 CXX="$LO_CLANG_CXX"
12220 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12221 AC_LANG_PUSH([C++])
12222 save_CXXFLAGS=$CXXFLAGS
12223 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12224 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12225 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12226 AC_MSG_RESULT([yes])
12227 ], [AC_MSG_RESULT([no])])
12228 CXXFLAGS=$save_CXXFLAGS
12231 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12232 AC_MSG_ERROR([Clang compiler does not support -Zc:dllexportInlines-. The Skia library needs to be built using a newer Clang version, or use --disable-skia.])
12235 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12236 # Skia is the default on Windows and Mac, so hard-require Clang.
12237 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12238 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12239 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12241 AC_MSG_WARN([Clang compiler not found.])
12246 CXX="$LO_CLANG_CXX"
12247 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12250 flag_sse41=-msse4.1
12251 flag_sse42=-msse4.2
12254 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12255 flag_avx512f=-mavx512f
12259 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12260 AC_LANG_PUSH([C++])
12261 save_CXXFLAGS=$CXXFLAGS
12262 CXXFLAGS="$CXXFLAGS $flag_sse2"
12263 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12264 #include <emmintrin.h>
12266 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12267 c = _mm_xor_si128 (a, b);
12271 [can_compile_sse2=yes],
12272 [can_compile_sse2=no])
12274 CXXFLAGS=$save_CXXFLAGS
12275 AC_MSG_RESULT([${can_compile_sse2}])
12276 if test "${can_compile_sse2}" = "yes" ; then
12277 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12280 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12281 AC_LANG_PUSH([C++])
12282 save_CXXFLAGS=$CXXFLAGS
12283 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12284 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12285 #include <tmmintrin.h>
12287 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12288 c = _mm_maddubs_epi16 (a, b);
12292 [can_compile_ssse3=yes],
12293 [can_compile_ssse3=no])
12295 CXXFLAGS=$save_CXXFLAGS
12296 AC_MSG_RESULT([${can_compile_ssse3}])
12297 if test "${can_compile_ssse3}" = "yes" ; then
12298 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12301 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12302 AC_LANG_PUSH([C++])
12303 save_CXXFLAGS=$CXXFLAGS
12304 CXXFLAGS="$CXXFLAGS $flag_sse41"
12305 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12306 #include <smmintrin.h>
12308 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12309 c = _mm_cmpeq_epi64 (a, b);
12313 [can_compile_sse41=yes],
12314 [can_compile_sse41=no])
12316 CXXFLAGS=$save_CXXFLAGS
12317 AC_MSG_RESULT([${can_compile_sse41}])
12318 if test "${can_compile_sse41}" = "yes" ; then
12319 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12322 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12323 AC_LANG_PUSH([C++])
12324 save_CXXFLAGS=$CXXFLAGS
12325 CXXFLAGS="$CXXFLAGS $flag_sse42"
12326 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12327 #include <nmmintrin.h>
12329 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12330 c = _mm_cmpgt_epi64 (a, b);
12334 [can_compile_sse42=yes],
12335 [can_compile_sse42=no])
12337 CXXFLAGS=$save_CXXFLAGS
12338 AC_MSG_RESULT([${can_compile_sse42}])
12339 if test "${can_compile_sse42}" = "yes" ; then
12340 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12343 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12344 AC_LANG_PUSH([C++])
12345 save_CXXFLAGS=$CXXFLAGS
12346 CXXFLAGS="$CXXFLAGS $flag_avx"
12347 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12348 #include <immintrin.h>
12350 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12351 c = _mm256_xor_ps(a, b);
12355 [can_compile_avx=yes],
12356 [can_compile_avx=no])
12358 CXXFLAGS=$save_CXXFLAGS
12359 AC_MSG_RESULT([${can_compile_avx}])
12360 if test "${can_compile_avx}" = "yes" ; then
12361 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12364 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12365 AC_LANG_PUSH([C++])
12366 save_CXXFLAGS=$CXXFLAGS
12367 CXXFLAGS="$CXXFLAGS $flag_avx2"
12368 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12369 #include <immintrin.h>
12371 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12372 c = _mm256_maddubs_epi16(a, b);
12376 [can_compile_avx2=yes],
12377 [can_compile_avx2=no])
12379 CXXFLAGS=$save_CXXFLAGS
12380 AC_MSG_RESULT([${can_compile_avx2}])
12381 if test "${can_compile_avx2}" = "yes" ; then
12382 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12385 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12386 AC_LANG_PUSH([C++])
12387 save_CXXFLAGS=$CXXFLAGS
12388 CXXFLAGS="$CXXFLAGS $flag_avx512"
12389 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12390 #include <immintrin.h>
12392 __m512i a = _mm512_loadu_si512(0);
12393 __m512d v1 = _mm512_load_pd(0);
12394 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12395 __m512d v2 = _mm512_abs_pd(v1);
12399 [can_compile_avx512=yes],
12400 [can_compile_avx512=no])
12402 CXXFLAGS=$save_CXXFLAGS
12403 AC_MSG_RESULT([${can_compile_avx512}])
12404 if test "${can_compile_avx512}" = "yes" ; then
12405 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12406 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12409 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12410 AC_LANG_PUSH([C++])
12411 save_CXXFLAGS=$CXXFLAGS
12412 CXXFLAGS="$CXXFLAGS $flag_f16c"
12413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12414 #include <immintrin.h>
12416 __m128i a = _mm_set1_epi32 (0);
12418 c = _mm_cvtph_ps(a);
12422 [can_compile_f16c=yes],
12423 [can_compile_f16c=no])
12425 CXXFLAGS=$save_CXXFLAGS
12426 AC_MSG_RESULT([${can_compile_f16c}])
12427 if test "${can_compile_f16c}" = "yes" ; then
12428 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12431 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12432 AC_LANG_PUSH([C++])
12433 save_CXXFLAGS=$CXXFLAGS
12434 CXXFLAGS="$CXXFLAGS $flag_fma"
12435 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12436 #include <immintrin.h>
12438 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12439 d = _mm256_fmadd_ps(a, b, c);
12443 [can_compile_fma=yes],
12444 [can_compile_fma=no])
12446 CXXFLAGS=$save_CXXFLAGS
12447 AC_MSG_RESULT([${can_compile_fma}])
12448 if test "${can_compile_fma}" = "yes" ; then
12449 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12456 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12458 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12459 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12463 save_CFLAGS=$CFLAGS
12464 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12465 dnl an empty program will do, we're checking the compiler flags
12466 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12467 [use_ccache=yes], [use_ccache=no])
12468 CFLAGS=$save_CFLAGS
12470 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12471 AC_MSG_RESULT([yes])
12473 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12474 AC_MSG_RESULT([no])
12478 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12479 AC_LANG_PUSH([C++])
12481 CXX="$LO_CLANG_CXX"
12482 save_CXXFLAGS=$CXXFLAGS
12483 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12484 dnl an empty program will do, we're checking the compiler flags
12485 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12486 [use_ccache=yes], [use_ccache=no])
12487 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12488 AC_MSG_RESULT([yes])
12490 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12491 AC_MSG_RESULT([no])
12493 CXXFLAGS=$save_CXXFLAGS
12498 AC_SUBST(LO_CLANG_CC)
12499 AC_SUBST(LO_CLANG_CXX)
12500 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12501 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12502 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12503 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12504 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12505 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12506 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12507 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12508 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12509 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12510 AC_SUBST(CLANG_USE_LD)
12511 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12515 if test "$enable_gpgmepp" = no; then
12516 AC_MSG_CHECKING([whether to enable gpgmepp])
12517 AC_MSG_RESULT([no])
12518 elif test "$enable_mpl_subset" = "yes"; then
12519 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12520 AC_MSG_RESULT([yes])
12521 elif test "$enable_fuzzers" = "yes"; then
12522 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12523 AC_MSG_RESULT([yes])
12524 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12525 dnl ===================================================================
12526 dnl Check for system gpgme
12527 dnl ===================================================================
12528 AC_MSG_CHECKING([which gpgmepp to use])
12529 if test "$with_system_gpgmepp" = "yes"; then
12530 AC_MSG_RESULT([external])
12531 SYSTEM_GPGMEPP=TRUE
12533 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12534 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12535 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12536 # progress_callback is the only func with plain C linkage
12537 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12538 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12539 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12540 AC_CHECK_HEADER(gpgme.h, [],
12541 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12543 AC_MSG_RESULT([internal])
12544 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12546 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12547 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12548 if test "$_os" != "WINNT"; then
12549 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12550 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12553 ENABLE_GPGMEPP=TRUE
12554 AC_DEFINE([HAVE_FEATURE_GPGME])
12555 AC_PATH_PROG(GPG, gpg)
12556 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12557 # so let's exclude that manually for the moment
12558 if test -n "$GPG" -a "$_os" != "WINNT"; then
12559 # make sure we not only have a working gpgme, but a full working
12560 # gpg installation to run OpenPGP signature verification
12561 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12563 if test "$_os" = "Linux"; then
12565 AC_MSG_CHECKING([for /run/user/$uid])
12566 if test -d /run/user/$uid; then
12567 AC_MSG_RESULT([yes])
12568 AC_PATH_PROG(GPGCONF, gpgconf)
12570 # Older versions of gpgconf are not working as expected, since
12571 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12572 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12573 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12574 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12575 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12576 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12577 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12578 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12579 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12580 if $GPGCONF --dump-options > /dev/null ; then
12581 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12582 AC_MSG_RESULT([yes])
12583 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12584 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12586 AC_MSG_RESULT([no])
12589 AC_MSG_RESULT([no. missing or broken gpgconf?])
12592 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12595 AC_MSG_RESULT([no])
12599 AC_SUBST(ENABLE_GPGMEPP)
12600 AC_SUBST(SYSTEM_GPGMEPP)
12601 AC_SUBST(GPG_ERROR_CFLAGS)
12602 AC_SUBST(GPG_ERROR_LIBS)
12603 AC_SUBST(LIBASSUAN_CFLAGS)
12604 AC_SUBST(LIBASSUAN_LIBS)
12605 AC_SUBST(GPGMEPP_CFLAGS)
12606 AC_SUBST(GPGMEPP_LIBS)
12608 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12609 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12610 AC_MSG_RESULT([yes])
12611 ENABLE_MEDIAWIKI=TRUE
12612 BUILD_TYPE="$BUILD_TYPE XSLTML"
12613 if test "x$with_java" = "xno"; then
12614 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12617 AC_MSG_RESULT([no])
12619 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12621 AC_SUBST(ENABLE_MEDIAWIKI)
12623 AC_MSG_CHECKING([whether to build the Report Builder])
12624 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12625 AC_MSG_RESULT([yes])
12626 ENABLE_REPORTBUILDER=TRUE
12627 AC_MSG_CHECKING([which jfreereport libs to use])
12628 if test "$with_system_jfreereport" = "yes"; then
12629 SYSTEM_JFREEREPORT=TRUE
12630 AC_MSG_RESULT([external])
12631 if test -z $SAC_JAR; then
12632 SAC_JAR=/usr/share/java/sac.jar
12634 if ! test -f $SAC_JAR; then
12635 AC_MSG_ERROR(sac.jar not found.)
12638 if test -z $LIBXML_JAR; then
12639 if test -f /usr/share/java/libxml-1.0.0.jar; then
12640 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12641 elif test -f /usr/share/java/libxml.jar; then
12642 LIBXML_JAR=/usr/share/java/libxml.jar
12644 AC_MSG_ERROR(libxml.jar replacement not found.)
12646 elif ! test -f $LIBXML_JAR; then
12647 AC_MSG_ERROR(libxml.jar not found.)
12650 if test -z $FLUTE_JAR; then
12651 if test -f /usr/share/java/flute-1.3.0.jar; then
12652 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12653 elif test -f /usr/share/java/flute.jar; then
12654 FLUTE_JAR=/usr/share/java/flute.jar
12656 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12658 elif ! test -f $FLUTE_JAR; then
12659 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12662 if test -z $JFREEREPORT_JAR; then
12663 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12664 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12665 elif test -f /usr/share/java/flow-engine.jar; then
12666 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12668 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12670 elif ! test -f $JFREEREPORT_JAR; then
12671 AC_MSG_ERROR(jfreereport.jar not found.)
12674 if test -z $LIBLAYOUT_JAR; then
12675 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12676 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12677 elif test -f /usr/share/java/liblayout.jar; then
12678 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12680 AC_MSG_ERROR(liblayout.jar replacement not found.)
12682 elif ! test -f $LIBLAYOUT_JAR; then
12683 AC_MSG_ERROR(liblayout.jar not found.)
12686 if test -z $LIBLOADER_JAR; then
12687 if test -f /usr/share/java/libloader-1.0.0.jar; then
12688 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12689 elif test -f /usr/share/java/libloader.jar; then
12690 LIBLOADER_JAR=/usr/share/java/libloader.jar
12692 AC_MSG_ERROR(libloader.jar replacement not found.)
12694 elif ! test -f $LIBLOADER_JAR; then
12695 AC_MSG_ERROR(libloader.jar not found.)
12698 if test -z $LIBFORMULA_JAR; then
12699 if test -f /usr/share/java/libformula-0.2.0.jar; then
12700 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12701 elif test -f /usr/share/java/libformula.jar; then
12702 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12704 AC_MSG_ERROR(libformula.jar replacement not found.)
12706 elif ! test -f $LIBFORMULA_JAR; then
12707 AC_MSG_ERROR(libformula.jar not found.)
12710 if test -z $LIBREPOSITORY_JAR; then
12711 if test -f /usr/share/java/librepository-1.0.0.jar; then
12712 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12713 elif test -f /usr/share/java/librepository.jar; then
12714 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12716 AC_MSG_ERROR(librepository.jar replacement not found.)
12718 elif ! test -f $LIBREPOSITORY_JAR; then
12719 AC_MSG_ERROR(librepository.jar not found.)
12722 if test -z $LIBFONTS_JAR; then
12723 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12724 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12725 elif test -f /usr/share/java/libfonts.jar; then
12726 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12728 AC_MSG_ERROR(libfonts.jar replacement not found.)
12730 elif ! test -f $LIBFONTS_JAR; then
12731 AC_MSG_ERROR(libfonts.jar not found.)
12734 if test -z $LIBSERIALIZER_JAR; then
12735 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12736 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12737 elif test -f /usr/share/java/libserializer.jar; then
12738 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12740 AC_MSG_ERROR(libserializer.jar replacement not found.)
12742 elif ! test -f $LIBSERIALIZER_JAR; then
12743 AC_MSG_ERROR(libserializer.jar not found.)
12746 if test -z $LIBBASE_JAR; then
12747 if test -f /usr/share/java/libbase-1.0.0.jar; then
12748 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12749 elif test -f /usr/share/java/libbase.jar; then
12750 LIBBASE_JAR=/usr/share/java/libbase.jar
12752 AC_MSG_ERROR(libbase.jar replacement not found.)
12754 elif ! test -f $LIBBASE_JAR; then
12755 AC_MSG_ERROR(libbase.jar not found.)
12759 AC_MSG_RESULT([internal])
12760 SYSTEM_JFREEREPORT=
12761 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12765 AC_MSG_RESULT([no])
12766 ENABLE_REPORTBUILDER=
12767 SYSTEM_JFREEREPORT=
12769 AC_SUBST(ENABLE_REPORTBUILDER)
12770 AC_SUBST(SYSTEM_JFREEREPORT)
12772 AC_SUBST(LIBXML_JAR)
12773 AC_SUBST(FLUTE_JAR)
12774 AC_SUBST(JFREEREPORT_JAR)
12775 AC_SUBST(LIBBASE_JAR)
12776 AC_SUBST(LIBLAYOUT_JAR)
12777 AC_SUBST(LIBLOADER_JAR)
12778 AC_SUBST(LIBFORMULA_JAR)
12779 AC_SUBST(LIBREPOSITORY_JAR)
12780 AC_SUBST(LIBFONTS_JAR)
12781 AC_SUBST(LIBSERIALIZER_JAR)
12783 # scripting provider for BeanShell?
12784 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12785 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12786 AC_MSG_RESULT([yes])
12787 ENABLE_SCRIPTING_BEANSHELL=TRUE
12789 dnl ===================================================================
12790 dnl Check for system beanshell
12791 dnl ===================================================================
12792 AC_MSG_CHECKING([which beanshell to use])
12793 if test "$with_system_beanshell" = "yes"; then
12794 AC_MSG_RESULT([external])
12796 if test -z $BSH_JAR; then
12797 BSH_JAR=/usr/share/java/bsh.jar
12799 if ! test -f $BSH_JAR; then
12800 AC_MSG_ERROR(bsh.jar not found.)
12803 AC_MSG_RESULT([internal])
12805 BUILD_TYPE="$BUILD_TYPE BSH"
12808 AC_MSG_RESULT([no])
12809 ENABLE_SCRIPTING_BEANSHELL=
12810 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12812 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12813 AC_SUBST(SYSTEM_BSH)
12816 # scripting provider for JavaScript?
12817 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12818 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12819 AC_MSG_RESULT([yes])
12820 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12822 dnl ===================================================================
12823 dnl Check for system rhino
12824 dnl ===================================================================
12825 AC_MSG_CHECKING([which rhino to use])
12826 if test "$with_system_rhino" = "yes"; then
12827 AC_MSG_RESULT([external])
12829 if test -z $RHINO_JAR; then
12830 RHINO_JAR=/usr/share/java/js.jar
12832 if ! test -f $RHINO_JAR; then
12833 AC_MSG_ERROR(js.jar not found.)
12836 AC_MSG_RESULT([internal])
12838 BUILD_TYPE="$BUILD_TYPE RHINO"
12842 AC_MSG_RESULT([no])
12843 ENABLE_SCRIPTING_JAVASCRIPT=
12844 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12846 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12847 AC_SUBST(SYSTEM_RHINO)
12848 AC_SUBST(RHINO_JAR)
12850 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12851 # paths should be added to library search path. So lets put all 64-bit
12854 case "$host_cpu" in
12855 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12856 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12857 supports_multilib="yes"
12864 dnl ===================================================================
12865 dnl QT5 Integration
12866 dnl ===================================================================
12872 QT5_GOBJECT_CFLAGS=""
12873 QT5_GOBJECT_LIBS=""
12874 QT5_HAVE_GOBJECT=""
12875 QT5_PLATFORMS_SRCDIR=""
12876 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12877 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12878 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12880 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12881 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12883 if test -n "$supports_multilib"; then
12884 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12887 qt5_test_include="QtWidgets/qapplication.h"
12888 if test "$_os" = "Emscripten"; then
12889 qt5_test_library="libQt5Widgets.a"
12891 qt5_test_library="libQt5Widgets.so"
12894 dnl Check for qmake5
12895 if test -n "$QT5DIR"; then
12896 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12898 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12900 if test "$QMAKE5" = "no"; then
12901 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12903 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12904 if test -z "$qmake5_test_ver"; then
12905 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12907 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12908 qt5_minimal_minor="6"
12909 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12910 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12912 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12916 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12917 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12918 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12919 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12921 AC_MSG_CHECKING([for Qt5 headers])
12923 for inc_dir in $qt5_incdirs; do
12924 if test -r "$inc_dir/$qt5_test_include"; then
12925 qt5_incdir="$inc_dir"
12929 AC_MSG_RESULT([$qt5_incdir])
12930 if test "x$qt5_incdir" = "xno"; then
12931 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12933 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12934 AC_LANG_PUSH([C++])
12935 save_CPPFLAGS=$CPPFLAGS
12936 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12937 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12938 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12939 CPPFLAGS=$save_CPPFLAGS
12942 AC_MSG_CHECKING([for Qt5 libraries])
12944 for lib_dir in $qt5_libdirs; do
12945 if test -r "$lib_dir/$qt5_test_library"; then
12946 qt5_libdir="$lib_dir"
12950 AC_MSG_RESULT([$qt5_libdir])
12951 if test "x$qt5_libdir" = "xno"; then
12952 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12955 if test "$_os" = "Emscripten"; then
12956 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12957 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12959 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12960 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12964 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12965 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12966 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12967 if test "$_os" = "Emscripten"; then
12968 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12971 if test "$USING_X11" = TRUE; then
12972 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12973 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12974 QT5_HAVE_XCB_ICCCM=1
12975 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12977 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)])
12978 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12980 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12981 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12983 AC_DEFINE(QT5_USING_X11)
12986 dnl Check for Meta Object Compiler
12988 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12989 if test "$MOC5" = "no"; then
12990 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12991 the root of your Qt installation by exporting QT5DIR before running "configure".])
12994 if test "$test_gstreamer_1_0" = yes; then
12995 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12997 AC_DEFINE(QT5_HAVE_GOBJECT)
12999 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13003 AC_SUBST(QT5_CFLAGS)
13006 AC_SUBST(QT5_GOBJECT_CFLAGS)
13007 AC_SUBST(QT5_GOBJECT_LIBS)
13008 AC_SUBST(QT5_HAVE_GOBJECT)
13009 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13011 dnl ===================================================================
13012 dnl QT6 Integration
13013 dnl ===================================================================
13019 QT6_PLATFORMS_SRCDIR=""
13020 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13022 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13023 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13025 if test -n "$supports_multilib"; then
13026 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13029 qt6_test_include="QtWidgets/qapplication.h"
13030 if test "$_os" = "Emscripten"; then
13031 qt6_test_library="libQt6Widgets.a"
13033 qt6_test_library="libQt6Widgets.so"
13036 dnl Check for qmake6
13037 if test -n "$QT6DIR"; then
13038 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13040 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
13042 if test "$QMAKE6" = "no"; then
13043 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13045 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13046 if test -z "$qmake6_test_ver"; then
13047 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13049 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13052 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13053 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13054 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13055 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13057 AC_MSG_CHECKING([for Qt6 headers])
13059 for inc_dir in $qt6_incdirs; do
13060 if test -r "$inc_dir/$qt6_test_include"; then
13061 qt6_incdir="$inc_dir"
13065 AC_MSG_RESULT([$qt6_incdir])
13066 if test "x$qt6_incdir" = "xno"; then
13067 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13069 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13070 AC_LANG_PUSH([C++])
13071 save_CPPFLAGS=$CPPFLAGS
13072 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13073 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13074 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13075 CPPFLAGS=$save_CPPFLAGS
13078 AC_MSG_CHECKING([for Qt6 libraries])
13080 for lib_dir in $qt6_libdirs; do
13081 if test -r "$lib_dir/$qt6_test_library"; then
13082 qt6_libdir="$lib_dir"
13086 AC_MSG_RESULT([$qt6_libdir])
13087 if test "x$qt6_libdir" = "xno"; then
13088 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13091 if test "$_os" = "Emscripten"; then
13092 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13093 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13095 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13096 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13100 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13101 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13102 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13103 if test "$_os" = "Emscripten"; then
13104 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13107 if test "$USING_X11" = TRUE; then
13108 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13109 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13110 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13112 AC_DEFINE(QT6_USING_X11)
13115 dnl Check for Meta Object Compiler
13117 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13118 if test "$MOC6" = "no"; then
13119 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13120 the root of your Qt installation by exporting QT6DIR before running "configure".])
13123 AC_SUBST(QT6_CFLAGS)
13126 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13128 dnl ===================================================================
13129 dnl KF5 Integration
13130 dnl ===================================================================
13134 KF5_CONFIG="kf5-config"
13135 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13136 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13138 if test "$OS" = "HAIKU"; then
13139 haiku_arch="`echo $RTL_ARCH | tr X x`"
13140 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13141 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13144 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13145 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13146 if test -n "$supports_multilib"; then
13147 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13150 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13151 kf5_test_library="libKF5KIOFileWidgets.so"
13152 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13154 dnl kf5 KDE4 support compatibility installed
13155 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13156 if test "$KF5_CONFIG" != "no"; then
13157 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13158 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13161 dnl Check for KF5 headers
13162 AC_MSG_CHECKING([for KF5 headers])
13164 for kf5_check in $kf5_incdirs; do
13165 if test -r "$kf5_check/$kf5_test_include"; then
13166 kf5_incdir="$kf5_check/KF5"
13170 AC_MSG_RESULT([$kf5_incdir])
13171 if test "x$kf5_incdir" = "xno"; then
13172 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13175 dnl Check for KF5 libraries
13176 AC_MSG_CHECKING([for KF5 libraries])
13178 for kf5_check in $kf5_libdirs; do
13179 if test -r "$kf5_check/$kf5_test_library"; then
13180 kf5_libdir="$kf5_check"
13185 AC_MSG_RESULT([$kf5_libdir])
13186 if test "x$kf5_libdir" = "xno"; then
13187 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13190 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"
13191 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13192 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13194 if test "$USING_X11" = TRUE; then
13195 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13198 AC_LANG_PUSH([C++])
13199 save_CXXFLAGS=$CXXFLAGS
13200 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13201 AC_MSG_CHECKING([whether KDE is >= 5.0])
13202 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13203 #include <kcoreaddons_version.h>
13205 int main(int argc, char **argv) {
13206 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13209 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13210 CXXFLAGS=$save_CXXFLAGS
13213 AC_SUBST(KF5_CFLAGS)
13216 dnl ===================================================================
13217 dnl Test whether to include Evolution 2 support
13218 dnl ===================================================================
13219 AC_MSG_CHECKING([whether to enable evolution 2 support])
13220 if test "$enable_evolution2" = yes; then
13221 AC_MSG_RESULT([yes])
13222 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13223 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13224 FilterLibs "${GOBJECT_LIBS}"
13225 GOBJECT_LIBS="${filteredlibs}"
13226 ENABLE_EVOAB2="TRUE"
13228 AC_MSG_RESULT([no])
13230 AC_SUBST(ENABLE_EVOAB2)
13231 AC_SUBST(GOBJECT_CFLAGS)
13232 AC_SUBST(GOBJECT_LIBS)
13234 dnl ===================================================================
13235 dnl Test which themes to include
13236 dnl ===================================================================
13237 AC_MSG_CHECKING([which themes to include])
13238 # if none given use default subset of available themes
13239 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13240 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"
13244 if test "x$with_theme" != "xno"; then
13245 for theme in $with_theme; do
13247 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" ;;
13248 default) real_theme=colibre ;;
13249 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13251 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13254 AC_MSG_RESULT([$WITH_THEMES])
13255 AC_SUBST([WITH_THEMES])
13256 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13257 for theme in $with_theme; do
13259 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13264 ###############################################################################
13265 # Extensions checking
13266 ###############################################################################
13267 AC_MSG_CHECKING([for extensions integration])
13268 if test "x$enable_extension_integration" != "xno"; then
13269 WITH_EXTENSION_INTEGRATION=TRUE
13270 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13271 AC_MSG_RESULT([yes, use integration])
13273 WITH_EXTENSION_INTEGRATION=
13274 AC_MSG_RESULT([no, do not integrate])
13276 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13278 dnl Should any extra extensions be included?
13279 dnl There are standalone tests for each of these below.
13280 WITH_EXTRA_EXTENSIONS=
13281 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13283 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13284 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13285 if test "x$with_java" != "xno"; then
13286 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13287 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13290 AC_MSG_CHECKING([whether to build opens___.ttf])
13291 if test "$enable_build_opensymbol" = "yes"; then
13292 AC_MSG_RESULT([yes])
13293 AC_PATH_PROG(FONTFORGE, fontforge)
13294 if test -z "$FONTFORGE"; then
13295 AC_MSG_ERROR([fontforge not installed])
13298 AC_MSG_RESULT([no])
13299 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13301 AC_SUBST(FONTFORGE)
13303 dnl ===================================================================
13304 dnl Test whether to include fonts
13305 dnl ===================================================================
13306 AC_MSG_CHECKING([whether to include third-party fonts])
13307 if test "$with_fonts" != "no"; then
13308 AC_MSG_RESULT([yes])
13310 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13311 AC_DEFINE(HAVE_MORE_FONTS)
13313 AC_MSG_RESULT([no])
13315 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13317 AC_SUBST(WITH_FONTS)
13320 dnl ===================================================================
13321 dnl Test whether to enable online update service
13322 dnl ===================================================================
13323 AC_MSG_CHECKING([whether to enable online update])
13324 ENABLE_ONLINE_UPDATE=
13325 ENABLE_ONLINE_UPDATE_MAR=
13327 if test "$enable_online_update" = ""; then
13328 AC_MSG_RESULT([no])
13330 if test "$enable_online_update" = "mar"; then
13331 AC_MSG_RESULT([yes - MAR-based online update])
13332 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13333 if test "$with_update_config" = ""; then
13334 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13336 UPDATE_CONFIG="$with_update_config"
13337 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13338 elif test "$enable_online_update" = "yes"; then
13339 AC_MSG_RESULT([yes])
13340 ENABLE_ONLINE_UPDATE="TRUE"
13342 AC_MSG_RESULT([no])
13345 AC_SUBST(ENABLE_ONLINE_UPDATE)
13346 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13347 AC_SUBST(UPDATE_CONFIG)
13350 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13351 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13352 if test "x$with_privacy_policy_url" = "xundefined"; then
13353 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13356 AC_SUBST(PRIVACY_POLICY_URL)
13357 dnl ===================================================================
13358 dnl Test whether we need bzip2
13359 dnl ===================================================================
13361 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13362 AC_MSG_CHECKING([whether to use system bzip2])
13363 if test "$with_system_bzip2" = yes; then
13365 AC_MSG_RESULT([yes])
13366 PKG_CHECK_MODULES(BZIP2, bzip2)
13367 FilterLibs "${BZIP2_LIBS}"
13368 BZIP2_LIBS="${filteredlibs}"
13370 AC_MSG_RESULT([no])
13371 BUILD_TYPE="$BUILD_TYPE BZIP2"
13374 AC_SUBST(SYSTEM_BZIP2)
13375 AC_SUBST(BZIP2_CFLAGS)
13376 AC_SUBST(BZIP2_LIBS)
13378 dnl ===================================================================
13379 dnl Test whether to enable extension update
13380 dnl ===================================================================
13381 AC_MSG_CHECKING([whether to enable extension update])
13382 ENABLE_EXTENSION_UPDATE=
13383 if test "x$enable_extension_update" = "xno"; then
13384 AC_MSG_RESULT([no])
13386 AC_MSG_RESULT([yes])
13387 ENABLE_EXTENSION_UPDATE="TRUE"
13388 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13389 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13391 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13394 dnl ===================================================================
13395 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13396 dnl ===================================================================
13397 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13398 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13399 AC_MSG_RESULT([no])
13402 AC_MSG_RESULT([yes])
13403 ENABLE_SILENT_MSI=TRUE
13404 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13406 AC_SUBST(ENABLE_SILENT_MSI)
13408 AC_MSG_CHECKING([whether and how to use Xinerama])
13409 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13410 if test "$x_libraries" = "default_x_libraries"; then
13411 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13412 if test "x$XINERAMALIB" = x; then
13413 XINERAMALIB="/usr/lib"
13416 XINERAMALIB="$x_libraries"
13418 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13419 # we have both versions, let the user decide but use the dynamic one
13422 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13423 XINERAMA_LINK=dynamic
13425 XINERAMA_LINK=static
13427 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13428 # we have only the dynamic version
13430 XINERAMA_LINK=dynamic
13431 elif test -e "$XINERAMALIB/libXinerama.a"; then
13433 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13435 XINERAMA_LINK=static
13445 if test "$USE_XINERAMA" = "TRUE"; then
13446 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13447 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13448 [AC_MSG_ERROR(Xinerama header not found.)], [])
13449 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13450 if test "x$XEXTLIB" = x; then
13451 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13453 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13454 if test "$_os" = "FreeBSD"; then
13455 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13457 if test "$_os" = "Linux"; then
13458 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13460 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13461 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13463 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13468 AC_MSG_RESULT([no])
13470 AC_SUBST(USE_XINERAMA)
13471 AC_SUBST(XINERAMA_LINK)
13473 dnl ===================================================================
13474 dnl Test whether to build cairo or rely on the system version
13475 dnl ===================================================================
13477 if test "$test_cairo" = "yes"; then
13478 AC_MSG_CHECKING([whether to use the system cairo])
13480 : ${with_system_cairo:=$with_system_libs}
13481 if test "$with_system_cairo" = "yes"; then
13483 AC_MSG_RESULT([yes])
13485 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13486 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13487 FilterLibs "${CAIRO_LIBS}"
13488 CAIRO_LIBS="${filteredlibs}"
13490 if test "$test_xrender" = "yes"; then
13491 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13493 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13494 #ifdef PictStandardA8
13498 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13503 AC_MSG_RESULT([no])
13504 BUILD_TYPE="$BUILD_TYPE CAIRO"
13507 if test "$enable_cairo_canvas" != no; then
13508 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13509 ENABLE_CAIRO_CANVAS=TRUE
13513 AC_SUBST(CAIRO_CFLAGS)
13514 AC_SUBST(CAIRO_LIBS)
13515 AC_SUBST(ENABLE_CAIRO_CANVAS)
13516 AC_SUBST(SYSTEM_CAIRO)
13518 dnl ===================================================================
13519 dnl Test whether to use avahi
13520 dnl ===================================================================
13521 if test "$_os" = "WINNT"; then
13522 # Windows uses bundled mDNSResponder
13523 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13524 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13525 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13526 [ENABLE_AVAHI="TRUE"])
13527 AC_DEFINE(HAVE_FEATURE_AVAHI)
13528 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13529 FilterLibs "${AVAHI_LIBS}"
13530 AVAHI_LIBS="${filteredlibs}"
13533 AC_SUBST(ENABLE_AVAHI)
13534 AC_SUBST(AVAHI_CFLAGS)
13535 AC_SUBST(AVAHI_LIBS)
13537 dnl ===================================================================
13538 dnl Test whether to use liblangtag
13539 dnl ===================================================================
13541 AC_MSG_CHECKING([whether to use system liblangtag])
13542 if test "$with_system_liblangtag" = yes; then
13543 SYSTEM_LIBLANGTAG=TRUE
13544 AC_MSG_RESULT([yes])
13545 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13546 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13547 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13548 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13549 FilterLibs "${LIBLANGTAG_LIBS}"
13550 LIBLANGTAG_LIBS="${filteredlibs}"
13553 AC_MSG_RESULT([no])
13554 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13555 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13556 if test "$COM" = "MSC"; then
13557 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13559 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13562 AC_SUBST(SYSTEM_LIBLANGTAG)
13563 AC_SUBST(LIBLANGTAG_CFLAGS)
13564 AC_SUBST(LIBLANGTAG_LIBS)
13566 dnl ===================================================================
13567 dnl Test whether to build libpng or rely on the system version
13568 dnl ===================================================================
13570 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13572 dnl ===================================================================
13573 dnl Check for runtime JVM search path
13574 dnl ===================================================================
13575 if test "$ENABLE_JAVA" != ""; then
13576 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13577 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13578 AC_MSG_RESULT([yes])
13579 if ! test -d "$with_jvm_path"; then
13580 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13582 if ! test -d "$with_jvm_path"jvm; then
13583 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13585 JVM_ONE_PATH_CHECK="$with_jvm_path"
13586 AC_SUBST(JVM_ONE_PATH_CHECK)
13588 AC_MSG_RESULT([no])
13592 dnl ===================================================================
13593 dnl Test for the presence of Ant and that it works
13594 dnl ===================================================================
13596 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13597 ANT_HOME=; export ANT_HOME
13598 WITH_ANT_HOME=; export WITH_ANT_HOME
13599 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13600 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13601 if test "$_os" = "WINNT"; then
13602 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13604 with_ant_home="$LODE_HOME/opt/ant"
13606 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13607 with_ant_home="$LODE_HOME/opt/ant"
13610 if test -z "$with_ant_home"; then
13611 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13613 if test "$_os" = "WINNT"; then
13614 # AC_PATH_PROGS needs unix path
13615 with_ant_home=`cygpath -u "$with_ant_home"`
13617 AbsolutePath "$with_ant_home"
13618 with_ant_home=$absolute_path
13619 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13620 WITH_ANT_HOME=$with_ant_home
13621 ANT_HOME=$with_ant_home
13624 if test -z "$ANT"; then
13625 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13627 # resolve relative or absolute symlink
13628 while test -h "$ANT"; do
13630 a_basename=`basename "$ANT"`
13631 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13632 cd "`dirname "$ANT"`"
13633 cd "`dirname "$a_script"`"
13634 ANT="`pwd`"/"`basename "$a_script"`"
13638 AC_MSG_CHECKING([if $ANT works])
13639 mkdir -p conftest.dir
13642 cat > conftest.java << EOF
13643 public class conftest {
13644 int testmethod(int a, int b) {
13650 cat > conftest.xml << EOF
13651 <project name="conftest" default="conftest">
13652 <target name="conftest">
13653 <javac srcdir="." includes="conftest.java">
13659 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13660 if test $? = 0 -a -f ./conftest.class; then
13661 AC_MSG_RESULT([Ant works])
13662 if test -z "$WITH_ANT_HOME"; then
13663 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13664 if test -z "$ANT_HOME"; then
13665 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13668 ANT_HOME="$WITH_ANT_HOME"
13671 echo "configure: Ant test failed" >&5
13672 cat conftest.java >&5
13673 cat conftest.xml >&5
13674 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13677 rm -fr conftest.dir
13679 if test -z "$ANT_HOME"; then
13680 ANT_HOME="NO_ANT_HOME"
13682 PathFormat "$ANT_HOME"
13683 ANT_HOME="$formatted_path"
13685 ANT="$formatted_path"
13688 dnl Checking for ant.jar
13689 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13690 AC_MSG_CHECKING([Ant lib directory])
13691 if test -f $ANT_HOME/lib/ant.jar; then
13692 ANT_LIB="$ANT_HOME/lib"
13694 if test -f $ANT_HOME/ant.jar; then
13695 ANT_LIB="$ANT_HOME"
13697 if test -f /usr/share/java/ant.jar; then
13698 ANT_LIB=/usr/share/java
13700 if test -f /usr/share/ant-core/lib/ant.jar; then
13701 ANT_LIB=/usr/share/ant-core/lib
13703 if test -f $ANT_HOME/lib/ant/ant.jar; then
13704 ANT_LIB="$ANT_HOME/lib/ant"
13706 if test -f /usr/share/lib/ant/ant.jar; then
13707 ANT_LIB=/usr/share/lib/ant
13709 AC_MSG_ERROR([Ant libraries not found!])
13716 PathFormat "$ANT_LIB"
13717 ANT_LIB="$formatted_path"
13718 AC_MSG_RESULT([Ant lib directory found.])
13722 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13724 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13725 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13726 ant_version_major=`echo $ant_version | cut -d. -f1`
13727 ant_version_minor=`echo $ant_version | cut -d. -f2`
13728 echo "configure: ant_version $ant_version " >&5
13729 echo "configure: ant_version_major $ant_version_major " >&5
13730 echo "configure: ant_version_minor $ant_version_minor " >&5
13731 if test "$ant_version_major" -ge "2"; then
13732 AC_MSG_RESULT([yes, $ant_version])
13733 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13734 AC_MSG_RESULT([yes, $ant_version])
13736 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13739 rm -f conftest* core core.* *.core
13747 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13748 AC_MSG_CHECKING([for JUnit 4])
13749 if test "$with_junit" = "yes"; then
13750 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13751 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13752 elif test -e /usr/share/java/junit4.jar; then
13753 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13755 if test -e /usr/share/lib/java/junit.jar; then
13756 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13758 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13762 OOO_JUNIT_JAR=$with_junit
13764 if test "$_os" = "WINNT"; then
13765 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13767 printf 'import org.junit.Before;' > conftest.java
13768 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13769 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13772 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13773 specify its pathname via --with-junit=..., or disable it via --without-junit])
13775 rm -f conftest.class conftest.java
13776 if test $OOO_JUNIT_JAR != ""; then
13777 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13780 AC_MSG_CHECKING([for included Hamcrest])
13781 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13782 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13783 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13785 AC_MSG_RESULT([Not included])
13786 AC_MSG_CHECKING([for standalone hamcrest jar.])
13787 if test "$with_hamcrest" = "yes"; then
13788 if test -e /usr/share/lib/java/hamcrest.jar; then
13789 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13790 elif test -e /usr/share/java/hamcrest/core.jar; then
13791 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13792 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13793 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13795 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13798 HAMCREST_JAR=$with_hamcrest
13800 if test "$_os" = "WINNT"; then
13801 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13803 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13804 AC_MSG_RESULT([$HAMCREST_JAR])
13806 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),
13807 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13810 rm -f conftest.class conftest.java
13812 AC_SUBST(OOO_JUNIT_JAR)
13813 AC_SUBST(HAMCREST_JAR)
13819 # check for wget and curl
13824 if test "$enable_fetch_external" != "no"; then
13826 CURL=`which curl 2>/dev/null`
13828 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13830 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13831 if test $? -eq 0; then
13837 if test -z "$WGET" -a -z "$CURL"; then
13838 AC_MSG_ERROR([neither wget nor curl found!])
13847 # check for sha256sum
13851 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13852 eval "$i -a 256 --version" > /dev/null 2>&1
13854 if test $ret -eq 0; then
13855 SHA256SUM="$i -a 256"
13860 if test -z "$SHA256SUM"; then
13861 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13862 eval "$i --version" > /dev/null 2>&1
13864 if test $ret -eq 0; then
13871 if test -z "$SHA256SUM"; then
13872 AC_MSG_ERROR([no sha256sum found!])
13875 AC_SUBST(SHA256SUM)
13877 dnl ===================================================================
13878 dnl Dealing with l10n options
13879 dnl ===================================================================
13880 AC_MSG_CHECKING([which languages to be built])
13881 # get list of all languages
13882 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13883 # the sed command does the following:
13884 # + if a line ends with a backslash, append the next line to it
13885 # + adds " on the beginning of the value (after =)
13886 # + adds " at the end of the value
13887 # + removes en-US; we want to put it on the beginning
13888 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13889 [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)]
13890 ALL_LANGS="en-US $completelangiso"
13891 # check the configured localizations
13892 WITH_LANG="$with_lang"
13894 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13895 # (Norwegian is "nb" and "nn".)
13896 if test "$WITH_LANG" = "no"; then
13900 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13901 AC_MSG_RESULT([en-US])
13903 AC_MSG_RESULT([$WITH_LANG])
13904 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13905 if test -z "$MSGFMT"; then
13906 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13907 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13908 elif test -x "/opt/lo/bin/msgfmt"; then
13909 MSGFMT="/opt/lo/bin/msgfmt"
13911 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13912 if test -z "$MSGFMT"; then
13913 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13917 if test -z "$MSGUNIQ"; then
13918 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13919 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13920 elif test -x "/opt/lo/bin/msguniq"; then
13921 MSGUNIQ="/opt/lo/bin/msguniq"
13923 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13924 if test -z "$MSGUNIQ"; then
13925 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13932 # check that the list is valid
13933 for lang in $WITH_LANG; do
13934 test "$lang" = "ALL" && continue
13935 # need to check for the exact string, so add space before and after the list of all languages
13936 for vl in $ALL_LANGS; do
13937 if test "$vl" = "$lang"; then
13941 if test "$vl" != "$lang"; then
13942 # if you're reading this - you prolly quoted your languages remove the quotes ...
13943 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13946 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13947 echo $WITH_LANG | grep -q en-US
13948 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13950 # list with substituted ALL
13951 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13952 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13953 test "$WITH_LANG" = "en-US" && WITH_LANG=
13954 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13955 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13956 ALL_LANGS=`echo $ALL_LANGS qtz`
13958 AC_SUBST(ALL_LANGS)
13959 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13960 AC_SUBST(WITH_LANG)
13961 AC_SUBST(WITH_LANG_LIST)
13962 AC_SUBST(GIT_NEEDED_SUBMODULES)
13964 WITH_POOR_HELP_LOCALIZATIONS=
13965 if test -d "$SRC_ROOT/translations/source"; then
13966 for l in `ls -1 $SRC_ROOT/translations/source`; do
13967 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13968 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13972 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13974 if test -n "$with_locales"; then
13975 WITH_LOCALES="$with_locales"
13977 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13978 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13979 # config_host/config_locales.h.in
13980 for locale in $WITH_LOCALES; do
13983 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13987 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13990 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13995 AC_DEFINE(WITH_LOCALE_ALL)
13997 AC_SUBST(WITH_LOCALES)
13999 dnl git submodule update --reference
14000 dnl ===================================================================
14001 if test -n "${GIT_REFERENCE_SRC}"; then
14002 for repo in ${GIT_NEEDED_SUBMODULES}; do
14003 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14004 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14008 AC_SUBST(GIT_REFERENCE_SRC)
14010 dnl git submodules linked dirs
14011 dnl ===================================================================
14012 if test -n "${GIT_LINK_SRC}"; then
14013 for repo in ${GIT_NEEDED_SUBMODULES}; do
14014 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14015 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14019 AC_SUBST(GIT_LINK_SRC)
14022 dnl ===================================================================
14023 AC_MSG_CHECKING([for alternative branding images directory])
14024 # initialize mapped arrays
14025 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14026 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14028 if test -z "$with_branding" -o "$with_branding" = "no"; then
14029 AC_MSG_RESULT([none])
14030 DEFAULT_BRAND_IMAGES="$brand_files"
14032 if ! test -d $with_branding ; then
14033 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14035 AC_MSG_RESULT([$with_branding])
14036 CUSTOM_BRAND_DIR="$with_branding"
14037 for lfile in $brand_files
14039 if ! test -f $with_branding/$lfile ; then
14040 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14041 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14043 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14046 check_for_progress="yes"
14049 AC_SUBST([BRAND_INTRO_IMAGES])
14050 AC_SUBST([CUSTOM_BRAND_DIR])
14051 AC_SUBST([CUSTOM_BRAND_IMAGES])
14052 AC_SUBST([DEFAULT_BRAND_IMAGES])
14055 AC_MSG_CHECKING([for 'intro' progress settings])
14059 PROGRESSFRAMECOLOR=
14061 PROGRESSTEXTBASELINE=
14063 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14064 source "$with_branding/progress.conf"
14065 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14067 AC_MSG_RESULT([none])
14070 AC_SUBST(PROGRESSBARCOLOR)
14071 AC_SUBST(PROGRESSSIZE)
14072 AC_SUBST(PROGRESSPOSITION)
14073 AC_SUBST(PROGRESSFRAMECOLOR)
14074 AC_SUBST(PROGRESSTEXTCOLOR)
14075 AC_SUBST(PROGRESSTEXTBASELINE)
14078 dnl ===================================================================
14079 dnl Custom build version
14080 dnl ===================================================================
14081 AC_MSG_CHECKING([for extra build ID])
14082 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14083 EXTRA_BUILDID="$with_extra_buildid"
14085 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14086 if test -n "$EXTRA_BUILDID" ; then
14087 AC_MSG_RESULT([$EXTRA_BUILDID])
14089 AC_MSG_RESULT([not set])
14091 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14094 AC_MSG_CHECKING([for vendor])
14095 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14096 OOO_VENDOR="$USERNAME"
14098 if test -z "$OOO_VENDOR"; then
14102 if test -z "$OOO_VENDOR"; then
14103 OOO_VENDOR="`id -u -n`"
14106 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14108 OOO_VENDOR="$with_vendor"
14109 AC_MSG_RESULT([$OOO_VENDOR])
14111 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14112 AC_SUBST(OOO_VENDOR)
14114 if test "$_os" = "Android" ; then
14115 ANDROID_PACKAGE_NAME=
14116 AC_MSG_CHECKING([for Android package name])
14117 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14118 if test -n "$ENABLE_DEBUG"; then
14119 # Default to the package name that makes ndk-gdb happy.
14120 ANDROID_PACKAGE_NAME="org.libreoffice"
14122 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14125 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14127 ANDROID_PACKAGE_NAME="$with_android_package_name"
14128 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14130 AC_SUBST(ANDROID_PACKAGE_NAME)
14133 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14134 if test "$with_compat_oowrappers" = "yes"; then
14135 WITH_COMPAT_OOWRAPPERS=TRUE
14138 WITH_COMPAT_OOWRAPPERS=
14141 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14143 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14144 AC_MSG_CHECKING([for install dirname])
14145 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14146 INSTALLDIRNAME="$with_install_dirname"
14148 AC_MSG_RESULT([$INSTALLDIRNAME])
14149 AC_SUBST(INSTALLDIRNAME)
14151 AC_MSG_CHECKING([for prefix])
14152 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14153 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14154 PREFIXDIR="$prefix"
14155 AC_MSG_RESULT([$PREFIXDIR])
14156 AC_SUBST(PREFIXDIR)
14158 LIBDIR=[$(eval echo $(eval echo $libdir))]
14161 DATADIR=[$(eval echo $(eval echo $datadir))]
14164 MANDIR=[$(eval echo $(eval echo $mandir))]
14167 DOCDIR=[$(eval echo $(eval echo $docdir))]
14170 BINDIR=[$(eval echo $(eval echo $bindir))]
14173 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14174 AC_SUBST(INSTALLDIR)
14176 TESTINSTALLDIR="${BUILDDIR}/test-install"
14177 AC_SUBST(TESTINSTALLDIR)
14180 # ===================================================================
14181 # OAuth2 id and secrets
14182 # ===================================================================
14184 AC_MSG_CHECKING([for Google Drive client id and secret])
14185 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14186 AC_MSG_RESULT([not set])
14187 GDRIVE_CLIENT_ID="\"\""
14188 GDRIVE_CLIENT_SECRET="\"\""
14190 AC_MSG_RESULT([set])
14191 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14192 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14194 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14195 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14197 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14198 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14199 AC_MSG_RESULT([not set])
14200 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14201 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14203 AC_MSG_RESULT([set])
14204 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14205 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14207 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14208 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14210 AC_MSG_CHECKING([for OneDrive client id and secret])
14211 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14212 AC_MSG_RESULT([not set])
14213 ONEDRIVE_CLIENT_ID="\"\""
14214 ONEDRIVE_CLIENT_SECRET="\"\""
14216 AC_MSG_RESULT([set])
14217 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14218 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14220 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14221 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14224 dnl ===================================================================
14225 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14226 dnl --enable-dependency-tracking configure option
14227 dnl ===================================================================
14228 AC_MSG_CHECKING([whether to enable dependency tracking])
14229 if test "$enable_dependency_tracking" = "no"; then
14231 AC_MSG_RESULT([no])
14233 AC_MSG_RESULT([yes])
14237 dnl ===================================================================
14238 dnl Number of CPUs to use during the build
14239 dnl ===================================================================
14240 AC_MSG_CHECKING([for number of processors to use])
14241 # plain --with-parallelism is just the default
14242 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14243 if test "$with_parallelism" = "no"; then
14246 PARALLELISM=$with_parallelism
14249 if test "$enable_icecream" = "yes"; then
14254 Darwin|FreeBSD|NetBSD|OpenBSD)
14255 PARALLELISM=`sysctl -n hw.ncpu`
14259 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14261 # what else than above does profit here *and* has /proc?
14263 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14267 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14268 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14272 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14273 if test -z "$with_parallelism"; then
14274 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14275 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14278 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."
14282 if test $PARALLELISM -eq 0; then
14283 AC_MSG_RESULT([explicit make -j option needed])
14285 AC_MSG_RESULT([$PARALLELISM])
14287 AC_SUBST(PARALLELISM)
14289 IWYU_PATH="$with_iwyu"
14290 AC_SUBST(IWYU_PATH)
14291 if test ! -z "$IWYU_PATH"; then
14292 if test ! -f "$IWYU_PATH"; then
14293 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14298 # Set up ILIB for MSVC build
14301 if test "$build_os" = "cygwin"; then
14303 if test -n "$JAVA_HOME"; then
14304 ILIB="$ILIB;$JAVA_HOME/lib"
14307 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14308 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14309 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14310 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14311 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14312 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14313 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14315 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14316 ucrtlibpath_formatted=$formatted_path
14317 ILIB="$ILIB;$ucrtlibpath_formatted"
14318 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14319 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14320 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14322 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14325 if test "$cross_compiling" != "yes"; then
14326 ILIB_FOR_BUILD="$ILIB"
14330 AC_SUBST(ILIB_FOR_BUILD)
14332 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14333 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14334 dnl from consteval constructor initializing const variable",
14335 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14336 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14337 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14338 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14339 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14340 dnl constructor in ternary expression (/std:c++latest)":
14341 AC_LANG_PUSH([C++])
14343 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14344 CXX="env LIB=$ILIB $CXX"
14346 save_CXXFLAGS=$CXXFLAGS
14347 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14348 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14350 consteval S() { i = 1; }
14355 struct S1 { consteval S1(int) {} };
14370 struct S4 { consteval S4() = default; };
14371 void f4(bool b) { b ? S4() : S4(); }
14373 return (s.i == 1) ? 0 : 1;
14375 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14376 AC_MSG_RESULT([yes])
14377 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14379 CXXFLAGS=$save_CXXFLAGS
14382 # ===================================================================
14383 # Creating bigger shared library to link against
14384 # ===================================================================
14385 AC_MSG_CHECKING([whether to create huge library])
14388 if test $_os = iOS -o $_os = Android; then
14389 # Never any point in mergelibs for these as we build just static
14390 # libraries anyway...
14391 enable_mergelibs=no
14394 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14395 if test $_os != Linux -a $_os != WINNT; then
14396 add_warning "--enable-mergelibs is not tested for this platform"
14399 AC_MSG_RESULT([yes])
14400 AC_DEFINE(ENABLE_MERGELIBS)
14402 AC_MSG_RESULT([no])
14404 AC_SUBST([MERGELIBS])
14406 dnl ===================================================================
14407 dnl icerun is a wrapper that stops us spawning tens of processes
14408 dnl locally - for tools that can't be executed on the compile cluster
14409 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14410 dnl ===================================================================
14411 AC_MSG_CHECKING([whether to use icerun wrapper])
14413 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14414 ICECREAM_RUN=icerun
14415 AC_MSG_RESULT([yes])
14417 AC_MSG_RESULT([no])
14419 AC_SUBST(ICECREAM_RUN)
14421 dnl ===================================================================
14422 dnl Setup the ICECC_VERSION for the build the same way it was set for
14423 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14424 dnl ===================================================================
14425 x_ICECC_VERSION=[\#]
14426 if test -n "$ICECC_VERSION" ; then
14429 AC_SUBST(x_ICECC_VERSION)
14430 AC_SUBST(ICECC_VERSION)
14432 dnl ===================================================================
14434 AC_MSG_CHECKING([MPL subset])
14437 if test "$enable_mpl_subset" = "yes"; then
14439 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14441 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14444 if test "$warn_report" = "true"; then
14445 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14447 if test "x$enable_postgresql_sdbc" != "xno"; then
14448 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14450 if test "$enable_lotuswordpro" = "yes"; then
14451 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14453 if test "$WITH_WEBDAV" = "neon"; then
14454 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14456 if test -n "$ENABLE_POPPLER"; then
14457 if test "x$SYSTEM_POPPLER" = "x"; then
14458 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14461 # cf. m4/libo_check_extension.m4
14462 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14463 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14465 for theme in $WITH_THEMES; do
14467 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14468 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14473 ENABLE_OPENGL_TRANSITIONS=
14475 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14476 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14480 AC_DEFINE(MPL_HAVE_SUBSET)
14481 AC_MSG_RESULT([only])
14483 AC_MSG_RESULT([no restrictions])
14485 AC_SUBST(MPL_SUBSET)
14487 dnl ===================================================================
14489 AC_MSG_CHECKING([formula logger])
14490 ENABLE_FORMULA_LOGGER=
14492 if test "x$enable_formula_logger" = "xyes"; then
14493 AC_MSG_RESULT([yes])
14494 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14495 ENABLE_FORMULA_LOGGER=TRUE
14496 elif test -n "$ENABLE_DBGUTIL" ; then
14497 AC_MSG_RESULT([yes])
14498 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14499 ENABLE_FORMULA_LOGGER=TRUE
14501 AC_MSG_RESULT([no])
14504 AC_SUBST(ENABLE_FORMULA_LOGGER)
14506 dnl ===================================================================
14507 dnl Checking for active Antivirus software.
14508 dnl ===================================================================
14510 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14511 AC_MSG_CHECKING([for active Antivirus software])
14512 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14513 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14514 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14515 AC_MSG_RESULT([found])
14516 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14517 echo $EICAR_STRING > $SRC_ROOT/eicar
14518 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14520 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14521 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14523 echo $EICAR_STRING > $BUILDDIR/eicar
14524 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14526 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14527 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14529 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"
14531 AC_MSG_RESULT([not found])
14534 AC_MSG_RESULT([n/a])
14538 dnl ===================================================================
14539 dnl Setting up the environment.
14540 dnl ===================================================================
14541 AC_MSG_NOTICE([setting up the build environment variables...])
14545 if test "$build_os" = "cygwin"; then
14546 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14547 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14548 ATL_INCLUDE="$COMPATH/atlmfc/include"
14549 elif test -d "$COMPATH/atlmfc/lib"; then
14550 ATL_LIB="$COMPATH/atlmfc/lib"
14551 ATL_INCLUDE="$COMPATH/atlmfc/include"
14553 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14554 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14556 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14557 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14558 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14560 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14561 PathFormat "/usr/bin/find.exe"
14562 FIND="$formatted_path"
14563 PathFormat "/usr/bin/sort.exe"
14564 SORT="$formatted_path"
14565 PathFormat "/usr/bin/grep.exe"
14566 WIN_GREP="$formatted_path"
14567 PathFormat "/usr/bin/ls.exe"
14568 WIN_LS="$formatted_path"
14569 PathFormat "/usr/bin/touch.exe"
14570 WIN_TOUCH="$formatted_path"
14576 AC_SUBST(ATL_INCLUDE)
14582 AC_SUBST(WIN_TOUCH)
14584 AC_SUBST(BUILD_TYPE)
14589 PERL="$formatted_path"
14592 if test -n "$TMPDIR"; then
14593 TEMP_DIRECTORY="$TMPDIR"
14595 TEMP_DIRECTORY="/tmp"
14597 if test "$build_os" = "cygwin"; then
14598 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14600 AC_SUBST(TEMP_DIRECTORY)
14602 # setup the PATH for the environment
14603 if test -n "$LO_PATH_FOR_BUILD"; then
14604 LO_PATH="$LO_PATH_FOR_BUILD"
14607 pathmunge "$MSVC_HOST_PATH" "before"
14615 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14616 if test "$ENABLE_JAVA" != ""; then
14617 pathmunge "$JAVA_HOME/bin" "after"
14622 # Win32 make needs native paths
14623 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14624 LO_PATH=`cygpath -p -m "$PATH"`
14626 if test "$WIN_BUILD_ARCH" = "x64"; then
14627 # needed for msi packaging
14628 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14630 # .NET 4.6 and higher don't have bin directory
14631 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14632 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14634 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14635 pathmunge "$CSC_PATH" "before"
14636 pathmunge "$MIDL_PATH" "before"
14637 pathmunge "$AL_PATH" "before"
14638 pathmunge "$MSVC_MULTI_PATH" "before"
14639 pathmunge "$MSVC_BUILD_PATH" "before"
14640 if test -n "$MSBUILD_PATH" ; then
14641 pathmunge "$MSBUILD_PATH" "before"
14643 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14644 if test "$ENABLE_JAVA" != ""; then
14645 if test -d "$JAVA_HOME/jre/bin/client"; then
14646 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14648 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14649 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14651 pathmunge "$JAVA_HOME/bin" "before"
14653 pathmunge "$MSVC_HOST_PATH" "before"
14657 pathmunge "/usr/css/bin" "before"
14658 if test "$ENABLE_JAVA" != ""; then
14659 pathmunge "$JAVA_HOME/bin" "after"
14667 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14668 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14669 x_LO_ELFCHECK_ALLOWLIST=
14671 x_LO_ELFCHECK_ALLOWLIST=[\#]
14673 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14674 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14678 # Generate a configuration sha256 we can use for deps
14679 if test -f config_host.mk; then
14680 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14682 if test -f config_host_lang.mk; then
14683 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14686 CFLAGS=$my_original_CFLAGS
14687 CXXFLAGS=$my_original_CXXFLAGS
14688 CPPFLAGS=$my_original_CPPFLAGS
14690 AC_CONFIG_LINKS([include:include])
14692 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14693 # BUILD platform configuration] - otherwise breaks cross building
14694 AC_CONFIG_FILES([config_host.mk
14695 config_host_lang.mk
14698 bin/bffvalidator.sh
14699 bin/odfvalidator.sh
14701 hardened_runtime.xcent
14702 instsetoo_native/util/openoffice.lst
14703 sysui/desktop/macosx/Info.plist
14704 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14705 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14706 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14707 AC_CONFIG_HEADERS([config_host/config_clang.h])
14708 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14709 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14710 AC_CONFIG_HEADERS([config_host/config_eot.h])
14711 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14712 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14713 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14714 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14715 AC_CONFIG_HEADERS([config_host/config_features.h])
14716 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14717 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14718 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14719 AC_CONFIG_HEADERS([config_host/config_folders.h])
14720 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14721 AC_CONFIG_HEADERS([config_host/config_gio.h])
14722 AC_CONFIG_HEADERS([config_host/config_global.h])
14723 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14724 AC_CONFIG_HEADERS([config_host/config_java.h])
14725 AC_CONFIG_HEADERS([config_host/config_langs.h])
14726 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14727 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14728 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14729 AC_CONFIG_HEADERS([config_host/config_locales.h])
14730 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14731 AC_CONFIG_HEADERS([config_host/config_oox.h])
14732 AC_CONFIG_HEADERS([config_host/config_options.h])
14733 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14734 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14735 AC_CONFIG_HEADERS([config_host/config_skia.h])
14736 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14737 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14738 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14739 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14740 AC_CONFIG_HEADERS([config_host/config_version.h])
14741 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14742 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14743 AC_CONFIG_HEADERS([config_host/config_python.h])
14744 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14747 if test "$CROSS_COMPILING" = TRUE; then
14748 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14751 # touch the config timestamp file
14752 if test ! -f config_host.mk.stamp; then
14753 echo > config_host.mk.stamp
14754 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14755 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14757 echo > config_host.mk.stamp
14760 # touch the config lang timestamp file
14761 if test ! -f config_host_lang.mk.stamp; then
14762 echo > config_host_lang.mk.stamp
14763 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14764 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14766 echo > config_host_lang.mk.stamp
14770 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14771 -a "$build_os" = "cygwin"; then
14774 ****************************************************************************
14776 Your make version is known to be horribly slow, and hard to debug
14777 problems with. To get a reasonably functional make please do:
14779 to install a pre-compiled binary make for Win32
14781 mkdir -p /opt/lo/bin
14783 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14784 cp make-4.2.1-msvc.exe make
14787 to install from source:
14788 place yourself in a working directory of you choice.
14790 git clone git://git.savannah.gnu.org/make.git
14792 [go to Start menu, open "Visual Studio 2019" or "Visual Studio 2022", and then click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14793 set PATH=%PATH%;C:\Cygwin\bin
14794 [or Cygwin64, if that is what you have]
14795 cd path-to-make-repo-you-cloned-above
14796 build_w32.bat --without-guile
14798 should result in a WinRel/gnumake.exe.
14799 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14801 Then re-run autogen.sh
14803 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14804 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14807 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14808 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14814 ****************************************************************************
14819 To view some help, run:
14824 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14826 After the build has finished successfully, you can immediately run what you built using the command:
14829 if test $_os = Darwin; then
14830 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14832 echo instdir/program/soffice
14836 If you want to run the smoketest, run:
14842 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14843 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14844 cat "$WARNINGS_FILE_FOR_BUILD"
14848 if test -s "$WARNINGS_FILE"; then
14849 echo "HOST config ($WARNINGS_FILE)"
14850 cat "$WARNINGS_FILE"
14853 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: