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.0.0.alpha1+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
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 dnl ===================================================================
1338 dnl Sanity checks for Emscripten SDK setup
1339 dnl ===================================================================
1341 if test "$_os" = "Emscripten"; then
1343 if ! which emconfigure >/dev/null 2>&1; then
1344 AC_MSG_WARN([emconfigure must be in your \$PATH])
1347 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1348 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1351 if test $EMSCRIPTEN_ERROR -ne 0; then
1352 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1356 ###############################################################################
1357 # Extensions switches --enable/--disable
1358 ###############################################################################
1359 # By default these should be enabled unless having extra dependencies.
1360 # If there is extra dependency over configure options then the enable should
1361 # be automagic based on whether the requiring feature is enabled or not.
1362 # All this options change anything only with --enable-extension-integration.
1364 # The name of this option and its help string makes it sound as if
1365 # extensions are built anyway, just not integrated in the installer,
1366 # if you use --disable-extension-integration. Is that really the
1369 AC_ARG_ENABLE(ios-simulator,
1370 AS_HELP_STRING([--enable-ios-simulator],
1371 [build for iOS simulator])
1374 libo_FUZZ_ARG_ENABLE(extension-integration,
1375 AS_HELP_STRING([--disable-extension-integration],
1376 [Disable integration of the built extensions in the installer of the
1377 product. Use this switch to disable the integration.])
1380 AC_ARG_ENABLE(avmedia,
1381 AS_HELP_STRING([--disable-avmedia],
1382 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1385 AC_ARG_ENABLE(database-connectivity,
1386 AS_HELP_STRING([--disable-database-connectivity],
1387 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1390 # This doesn't mean not building (or "integrating") extensions
1391 # (although it probably should; i.e. it should imply
1392 # --disable-extension-integration I guess), it means not supporting
1393 # any extension mechanism at all
1394 libo_FUZZ_ARG_ENABLE(extensions,
1395 AS_HELP_STRING([--disable-extensions],
1396 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(scripting,
1400 AS_HELP_STRING([--disable-scripting],
1401 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1404 # This is mainly for Android and iOS, but could potentially be used in some
1405 # special case otherwise, too, so factored out as a separate setting
1407 AC_ARG_ENABLE(dynamic-loading,
1408 AS_HELP_STRING([--disable-dynamic-loading],
1409 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1412 libo_FUZZ_ARG_ENABLE(report-builder,
1413 AS_HELP_STRING([--disable-report-builder],
1414 [Disable the Report Builder.])
1417 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1418 AS_HELP_STRING([--enable-ext-wiki-publisher],
1419 [Enable the Wiki Publisher extension.])
1422 libo_FUZZ_ARG_ENABLE(lpsolve,
1423 AS_HELP_STRING([--disable-lpsolve],
1424 [Disable compilation of the lp solve solver ])
1426 libo_FUZZ_ARG_ENABLE(coinmp,
1427 AS_HELP_STRING([--disable-coinmp],
1428 [Disable compilation of the CoinMP solver ])
1431 libo_FUZZ_ARG_ENABLE(pdfimport,
1432 AS_HELP_STRING([--disable-pdfimport],
1433 [Disable building the PDF import feature.])
1436 libo_FUZZ_ARG_ENABLE(pdfium,
1437 AS_HELP_STRING([--disable-pdfium],
1438 [Disable building PDFium. Results in unsecure PDF signature verification.])
1441 libo_FUZZ_ARG_ENABLE(skia,
1442 AS_HELP_STRING([--disable-skia],
1443 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1446 ###############################################################################
1448 dnl ---------- *** ----------
1450 libo_FUZZ_ARG_ENABLE(mergelibs,
1451 AS_HELP_STRING([--enable-mergelibs],
1452 [Merge several of the smaller libraries into one big, "merged", one.])
1455 libo_FUZZ_ARG_ENABLE(breakpad,
1456 AS_HELP_STRING([--enable-breakpad],
1457 [Enables breakpad for crash reporting.])
1460 libo_FUZZ_ARG_ENABLE(crashdump,
1461 AS_HELP_STRING([--disable-crashdump],
1462 [Disable dump.ini and dump-file, when --enable-breakpad])
1465 AC_ARG_ENABLE(fetch-external,
1466 AS_HELP_STRING([--disable-fetch-external],
1467 [Disables fetching external tarballs from web sources.])
1470 AC_ARG_ENABLE(fuzzers,
1471 AS_HELP_STRING([--enable-fuzzers],
1472 [Enables building libfuzzer targets for fuzz testing.])
1475 libo_FUZZ_ARG_ENABLE(pch,
1476 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1477 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1478 Using 'system' will include only external headers, 'base' will add also headers
1479 from base modules, 'normal' will also add all headers except from the module built,
1480 'full' will use all suitable headers even from a module itself.])
1483 libo_FUZZ_ARG_ENABLE(epm,
1484 AS_HELP_STRING([--enable-epm],
1485 [LibreOffice includes self-packaging code, that requires epm, however epm is
1486 useless for large scale package building.])
1489 libo_FUZZ_ARG_ENABLE(odk,
1490 AS_HELP_STRING([--enable-odk],
1491 [Enable building the Office Development Kit, the part that extensions need to build against])
1494 AC_ARG_ENABLE(mpl-subset,
1495 AS_HELP_STRING([--enable-mpl-subset],
1496 [Don't compile any pieces which are not MPL or more liberally licensed])
1499 libo_FUZZ_ARG_ENABLE(evolution2,
1500 AS_HELP_STRING([--enable-evolution2],
1501 [Allows the built-in evolution 2 addressbook connectivity build to be
1505 AC_ARG_ENABLE(avahi,
1506 AS_HELP_STRING([--enable-avahi],
1507 [Determines whether to use Avahi to advertise Impress to remote controls.])
1510 libo_FUZZ_ARG_ENABLE(werror,
1511 AS_HELP_STRING([--enable-werror],
1512 [Turn warnings to errors. (Has no effect in modules where the treating
1513 of warnings as errors is disabled explicitly.)]),
1516 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1517 AS_HELP_STRING([--enable-assert-always-abort],
1518 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1521 libo_FUZZ_ARG_ENABLE(dbgutil,
1522 AS_HELP_STRING([--enable-dbgutil],
1523 [Provide debugging support from --enable-debug and include additional debugging
1524 utilities such as object counting or more expensive checks.
1525 This is the recommended option for developers.
1526 Note that this makes the build ABI incompatible, it is not possible to mix object
1527 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1529 libo_FUZZ_ARG_ENABLE(debug,
1530 AS_HELP_STRING([--enable-debug],
1531 [Include debugging information, disable compiler optimization and inlining plus
1532 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1534 libo_FUZZ_ARG_ENABLE(split-debug,
1535 AS_HELP_STRING([--disable-split-debug],
1536 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1537 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1539 libo_FUZZ_ARG_ENABLE(gdb-index,
1540 AS_HELP_STRING([--disable-gdb-index],
1541 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1542 The feature requires the gold or lld linker.]))
1544 libo_FUZZ_ARG_ENABLE(sal-log,
1545 AS_HELP_STRING([--enable-sal-log],
1546 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1548 libo_FUZZ_ARG_ENABLE(symbols,
1549 AS_HELP_STRING([--enable-symbols],
1550 [Generate debug information.
1551 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1552 otherwise. It is possible to explicitly specify gbuild build targets
1553 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1554 everything in the directory; there is no ordering, more specific overrides
1555 more general, and disabling takes precedence).
1556 Example: --enable-symbols="all -sw/ -Library_sc".]))
1558 libo_FUZZ_ARG_ENABLE(optimized,
1559 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1560 [Whether to compile with optimization flags.
1561 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1562 otherwise. Using 'debug' will try to use only optimizations that should
1563 not interfere with debugging. For Emscripten we default to optimized (-O1)
1564 debug build, as otherwise binaries become too large.]))
1566 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1567 AS_HELP_STRING([--disable-runtime-optimizations],
1568 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1569 JVM JIT) that are known to interact badly with certain dynamic analysis
1570 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1571 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1572 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1574 AC_ARG_WITH(valgrind,
1575 AS_HELP_STRING([--with-valgrind],
1576 [Make availability of Valgrind headers a hard requirement.]))
1578 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1579 AS_HELP_STRING([--enable-compiler-plugins],
1580 [Enable compiler plugins that will perform additional checks during
1581 building. Enabled automatically by --enable-dbgutil.
1582 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1583 COMPILER_PLUGINS_DEBUG=
1584 if test "$enable_compiler_plugins" = debug; then
1585 enable_compiler_plugins=yes
1586 COMPILER_PLUGINS_DEBUG=TRUE
1589 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1590 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1591 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1592 relevant in the --disable-compiler-plugins case.]))
1594 libo_FUZZ_ARG_ENABLE(ooenv,
1595 AS_HELP_STRING([--enable-ooenv],
1596 [Enable ooenv for the instdir installation.]))
1599 AS_HELP_STRING([--enable-lto],
1600 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1601 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1604 AC_ARG_ENABLE(python,
1605 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1606 [Enables or disables Python support at run-time.
1607 Also specifies what Python to use at build-time.
1608 'fully-internal' even forces the internal version for uses of Python
1610 On macOS the only choices are
1611 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1614 libo_FUZZ_ARG_ENABLE(gtk3,
1615 AS_HELP_STRING([--disable-gtk3],
1616 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1617 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1620 AS_HELP_STRING([--enable-gtk4],
1621 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1623 AC_ARG_ENABLE(introspection,
1624 AS_HELP_STRING([--enable-introspection],
1625 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1626 Linux distributions.)]))
1628 AC_ARG_ENABLE(split-app-modules,
1629 AS_HELP_STRING([--enable-split-app-modules],
1630 [Split file lists for app modules, e.g. base, calc.
1631 Has effect only with make distro-pack-install]),
1634 AC_ARG_ENABLE(split-opt-features,
1635 AS_HELP_STRING([--enable-split-opt-features],
1636 [Split file lists for some optional features, e.g. pyuno, testtool.
1637 Has effect only with make distro-pack-install]),
1640 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1641 AS_HELP_STRING([--disable-cairo-canvas],
1642 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1645 libo_FUZZ_ARG_ENABLE(dbus,
1646 AS_HELP_STRING([--disable-dbus],
1647 [Determines whether to enable features that depend on dbus.
1648 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1649 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1651 libo_FUZZ_ARG_ENABLE(sdremote,
1652 AS_HELP_STRING([--disable-sdremote],
1653 [Determines whether to enable Impress remote control (i.e. the server component).]),
1654 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1656 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1657 AS_HELP_STRING([--disable-sdremote-bluetooth],
1658 [Determines whether to build sdremote with bluetooth support.
1659 Requires dbus on Linux.]))
1661 libo_FUZZ_ARG_ENABLE(gio,
1662 AS_HELP_STRING([--disable-gio],
1663 [Determines whether to use the GIO support.]),
1664 ,test "${enable_gio+set}" = set || enable_gio=yes)
1667 AS_HELP_STRING([--enable-qt5],
1668 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1673 AS_HELP_STRING([--enable-qt6],
1674 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1679 AS_HELP_STRING([--enable-kf5],
1680 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1681 KF5 are available.]),
1684 AC_ARG_ENABLE(gtk3_kde5,
1685 AS_HELP_STRING([--enable-gtk3-kde5],
1686 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1687 platforms where Gtk3, Qt5 and Plasma is available.]),
1691 AS_HELP_STRING([--disable-gui],
1692 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1695 libo_FUZZ_ARG_ENABLE(randr,
1696 AS_HELP_STRING([--disable-randr],
1697 [Disable RandR support in the vcl project.]),
1698 ,test "${enable_randr+set}" = set || enable_randr=yes)
1700 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1701 AS_HELP_STRING([--disable-gstreamer-1-0],
1702 [Disable building with the gstreamer 1.0 avmedia backend.]),
1703 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1705 libo_FUZZ_ARG_ENABLE([eot],
1706 [AS_HELP_STRING([--enable-eot],
1707 [Enable support for Embedded OpenType fonts.])],
1708 ,test "${enable_eot+set}" = set || enable_eot=no)
1710 libo_FUZZ_ARG_ENABLE(cve-tests,
1711 AS_HELP_STRING([--disable-cve-tests],
1712 [Prevent CVE tests to be executed]),
1715 libo_FUZZ_ARG_ENABLE(chart-tests,
1716 AS_HELP_STRING([--enable-chart-tests],
1717 [Executes chart XShape tests. In a perfect world these tests would be
1718 stable and everyone could run them, in reality it is best to run them
1719 only on a few machines that are known to work and maintained by people
1720 who can judge if a test failure is a regression or not.]),
1723 AC_ARG_ENABLE(build-opensymbol,
1724 AS_HELP_STRING([--enable-build-opensymbol],
1725 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1726 fontforge installed.]),
1729 AC_ARG_ENABLE(dependency-tracking,
1730 AS_HELP_STRING([--enable-dependency-tracking],
1731 [Do not reject slow dependency extractors.])[
1732 --disable-dependency-tracking
1733 Disables generation of dependency information.
1734 Speed up one-time builds.],
1737 AC_ARG_ENABLE(icecream,
1738 AS_HELP_STRING([--enable-icecream],
1739 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1740 It defaults to /opt/icecream for the location of the icecream gcc/g++
1741 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1745 AS_HELP_STRING([--enable-ld=<linker>],
1746 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1747 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1748 If <linker> contains any ':', the part before the first ':' is used as the value of
1749 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1750 needed for Clang 12).]),
1753 libo_FUZZ_ARG_ENABLE(cups,
1754 AS_HELP_STRING([--disable-cups],
1755 [Do not build cups support.])
1758 AC_ARG_ENABLE(ccache,
1759 AS_HELP_STRING([--disable-ccache],
1760 [Do not try to use ccache automatically.
1761 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1762 CC/CXX are not yet set, and --enable-icecream is not given, we
1763 attempt to use ccache. --disable-ccache disables ccache completely.
1764 Additionally ccache's depend mode is enabled if possible,
1765 use --enable-ccache=nodepend to enable ccache without depend mode.
1769 libo_FUZZ_ARG_ENABLE(online-update,
1770 AS_HELP_STRING([--enable-online-update],
1771 [Enable the online update service that will check for new versions of
1772 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1773 If the value is "mar", the experimental Mozilla-like update will be
1774 enabled instead of the traditional update mechanism.]),
1777 AC_ARG_WITH(update-config,
1778 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1779 [Path to the update config ini file]))
1781 libo_FUZZ_ARG_ENABLE(extension-update,
1782 AS_HELP_STRING([--disable-extension-update],
1783 [Disable possibility to update installed extensions.]),
1786 libo_FUZZ_ARG_ENABLE(release-build,
1787 AS_HELP_STRING([--enable-release-build],
1788 [Enable release build. Note that the "release build" choice is orthogonal to
1789 whether symbols are present, debug info is generated, or optimization
1791 See http://wiki.documentfoundation.org/Development/DevBuild]),
1794 AC_ARG_ENABLE(windows-build-signing,
1795 AS_HELP_STRING([--enable-windows-build-signing],
1796 [Enable signing of windows binaries (*.exe, *.dll)]),
1799 AC_ARG_ENABLE(silent-msi,
1800 AS_HELP_STRING([--enable-silent-msi],
1801 [Enable MSI with LIMITUI=1 (silent install).]),
1804 AC_ARG_ENABLE(macosx-code-signing,
1805 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1806 [Sign executables, dylibs, frameworks and the app bundle. If you
1807 don't provide an identity the first suitable certificate
1808 in your keychain is used.]),
1811 AC_ARG_ENABLE(macosx-package-signing,
1812 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1813 [Create a .pkg suitable for uploading to the Mac App Store and sign
1814 it. If you don't provide an identity the first suitable certificate
1815 in your keychain is used.]),
1818 AC_ARG_ENABLE(macosx-sandbox,
1819 AS_HELP_STRING([--enable-macosx-sandbox],
1820 [Make the app bundle run in a sandbox. Requires code signing.
1821 Is required by apps distributed in the Mac App Store, and implies
1822 adherence to App Store rules.]),
1825 AC_ARG_WITH(macosx-bundle-identifier,
1826 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1827 [Define the macOS bundle identifier. Default is the somewhat weird
1828 org.libreoffice.script ("script", huh?).]),
1829 ,with_macosx_bundle_identifier=org.libreoffice.script)
1831 AC_ARG_WITH(product-name,
1832 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1833 [Define the product name. Default is AC_PACKAGE_NAME.]),
1834 ,with_product_name=$PRODUCTNAME)
1836 libo_FUZZ_ARG_ENABLE(community-flavor,
1837 AS_HELP_STRING([--disable-community-flavor],
1838 [Disable the Community branding.]),
1841 AC_ARG_WITH(package-version,
1842 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1843 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1846 libo_FUZZ_ARG_ENABLE(readonly-installset,
1847 AS_HELP_STRING([--enable-readonly-installset],
1848 [Prevents any attempts by LibreOffice to write into its installation. That means
1849 at least that no "system-wide" extensions can be added. Partly experimental work in
1850 progress, probably not fully implemented. Always enabled for macOS.]),
1853 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1854 AS_HELP_STRING([--disable-mariadb-sdbc],
1855 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1858 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1859 AS_HELP_STRING([--disable-postgresql-sdbc],
1860 [Disable the build of the PostgreSQL-SDBC driver.])
1863 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1864 AS_HELP_STRING([--disable-lotuswordpro],
1865 [Disable the build of the Lotus Word Pro filter.]),
1866 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1868 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1869 AS_HELP_STRING([--disable-firebird-sdbc],
1870 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1871 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1873 AC_ARG_ENABLE(bogus-pkg-config,
1874 AS_HELP_STRING([--enable-bogus-pkg-config],
1875 [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.]),
1878 AC_ARG_ENABLE(openssl,
1879 AS_HELP_STRING([--disable-openssl],
1880 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1881 components will either use GNUTLS or NSS. Work in progress,
1882 use only if you are hacking on it.]),
1883 ,enable_openssl=yes)
1885 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1886 AS_HELP_STRING([--enable-cipher-openssl-backend],
1887 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1888 Requires --enable-openssl.]))
1891 AS_HELP_STRING([--disable-nss],
1892 [Disable using NSS. If disabled,
1893 components will either use GNUTLS or openssl. Work in progress,
1894 use only if you are hacking on it.]),
1897 AC_ARG_ENABLE(library-bin-tar,
1898 AS_HELP_STRING([--enable-library-bin-tar],
1899 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1900 Some libraries can save their build result in a tarball
1901 stored in TARFILE_LOCATION. That binary tarball is
1902 uniquely identified by the source tarball,
1903 the content of the config_host.mk file and the content
1904 of the top-level directory in core for that library
1905 If this option is enabled, then if such a tarfile exist, it will be untarred
1906 instead of the source tarfile, and the build step will be skipped for that
1908 If a proper tarfile does not exist, then the normal source-based
1909 build is done for that library and a proper binary tarfile is created
1910 for the next time.]),
1913 AC_ARG_ENABLE(dconf,
1914 AS_HELP_STRING([--disable-dconf],
1915 [Disable the dconf configuration backend (enabled by default where
1918 libo_FUZZ_ARG_ENABLE(formula-logger,
1920 [--enable-formula-logger],
1921 [Enable formula logger for logging formula calculation flow in Calc.]
1926 AS_HELP_STRING([--disable-ldap],
1927 [Disable LDAP support.]),
1930 AC_ARG_ENABLE(opencl,
1931 AS_HELP_STRING([--disable-opencl],
1932 [Disable OpenCL support.]),
1935 libo_FUZZ_ARG_ENABLE(librelogo,
1936 AS_HELP_STRING([--disable-librelogo],
1937 [Do not build LibreLogo.]),
1938 ,enable_librelogo=yes)
1941 AS_HELP_STRING([--disable-cmis],
1942 [Disable CMIS support.]),
1946 AS_HELP_STRING([--disable-curl],
1947 [Disable CURL support.]),
1950 AC_ARG_ENABLE(wasm-strip,
1951 AS_HELP_STRING([--enable-wasm-strip],
1952 [Strip the static build like for WASM/emscripten platform.]),
1953 ,enable_wasm_strip=yes)
1955 AC_ARG_ENABLE(xmlhelp,
1956 AS_HELP_STRING([--disable-xmlhelp],
1957 [Disable XML help support]),
1958 ,enable_xmlhelp=yes)
1961 dnl ===================================================================
1962 dnl Optional Packages (--with/without-)
1963 dnl ===================================================================
1965 AC_ARG_WITH(gcc-home,
1966 AS_HELP_STRING([--with-gcc-home],
1967 [Specify the location of gcc/g++ manually. This can be used in conjunction
1968 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1969 non-default path.]),
1972 AC_ARG_WITH(gnu-patch,
1973 AS_HELP_STRING([--with-gnu-patch],
1974 [Specify location of GNU patch on Solaris or FreeBSD.]),
1977 AC_ARG_WITH(build-platform-configure-options,
1978 AS_HELP_STRING([--with-build-platform-configure-options],
1979 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1983 AS_HELP_STRING([--with-gnu-cp],
1984 [Specify location of GNU cp on Solaris or FreeBSD.]),
1987 AC_ARG_WITH(external-tar,
1988 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1989 [Specify an absolute path of where to find (and store) tarfiles.]),
1990 TARFILE_LOCATION=$withval ,
1993 AC_ARG_WITH(referenced-git,
1994 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1995 [Specify another checkout directory to reference. This makes use of
1996 git submodule update --reference, and saves a lot of diskspace
1997 when having multiple trees side-by-side.]),
1998 GIT_REFERENCE_SRC=$withval ,
2001 AC_ARG_WITH(linked-git,
2002 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2003 [Specify a directory where the repositories of submodules are located.
2004 This uses a method similar to git-new-workdir to get submodules.]),
2005 GIT_LINK_SRC=$withval ,
2008 AC_ARG_WITH(galleries,
2009 AS_HELP_STRING([--with-galleries],
2010 [Specify how galleries should be built. It is possible either to
2011 build these internally from source ("build"),
2012 or to disable them ("no")]),
2016 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2017 [Choose which themes to include. By default those themes with an '*' are included.
2018 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2019 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2022 libo_FUZZ_ARG_WITH(helppack-integration,
2023 AS_HELP_STRING([--without-helppack-integration],
2024 [It will not integrate the helppacks to the installer
2025 of the product. Please use this switch to use the online help
2026 or separate help packages.]),
2029 libo_FUZZ_ARG_WITH(fonts,
2030 AS_HELP_STRING([--without-fonts],
2031 [LibreOffice includes some third-party fonts to provide a reliable basis for
2032 help content, templates, samples, etc. When these fonts are already
2033 known to be available on the system then you should use this option.]),
2037 AS_HELP_STRING([--with-epm],
2038 [Decides which epm to use. Default is to use the one from the system if
2039 one is built. When either this is not there or you say =internal epm
2043 AC_ARG_WITH(package-format,
2044 AS_HELP_STRING([--with-package-format],
2045 [Specify package format(s) for LibreOffice installation sets. The
2046 implicit --without-package-format leads to no installation sets being
2047 generated. Possible values: aix, archive, bsd, deb, dmg,
2048 installed, msi, pkg, and rpm.
2049 Example: --with-package-format='deb rpm']),
2053 AS_HELP_STRING([--with-tls],
2054 [Decides which TLS/SSL and cryptographic implementations to use for
2055 LibreOffice's code. Notice that this doesn't apply for depending
2056 libraries like "neon", for example. Default is to use NSS
2057 although OpenSSL is also possible. Notice that selecting NSS restricts
2058 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2059 restrict by now the usage of NSS in LO's code. Possible values:
2060 openssl, nss. Example: --with-tls="nss"]),
2063 AC_ARG_WITH(system-libs,
2064 AS_HELP_STRING([--with-system-libs],
2065 [Use libraries already on system -- enables all --with-system-* flags.]),
2068 AC_ARG_WITH(system-bzip2,
2069 AS_HELP_STRING([--with-system-bzip2],
2070 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2071 [with_system_bzip2="$with_system_libs"])
2073 AC_ARG_WITH(system-headers,
2074 AS_HELP_STRING([--with-system-headers],
2075 [Use headers already on system -- enables all --with-system-* flags for
2076 external packages whose headers are the only entities used i.e.
2077 boost/odbc/sane-header(s).]),,
2078 [with_system_headers="$with_system_libs"])
2080 AC_ARG_WITH(system-jars,
2081 AS_HELP_STRING([--without-system-jars],
2082 [When building with --with-system-libs, also the needed jars are expected
2083 on the system. Use this to disable that]),,
2084 [with_system_jars="$with_system_libs"])
2086 AC_ARG_WITH(system-cairo,
2087 AS_HELP_STRING([--with-system-cairo],
2088 [Use cairo libraries already on system. Happens automatically for
2089 (implicit) --enable-gtk3.]))
2091 AC_ARG_WITH(system-epoxy,
2092 AS_HELP_STRING([--with-system-epoxy],
2093 [Use epoxy libraries already on system. Happens automatically for
2094 (implicit) --enable-gtk3.]),,
2095 [with_system_epoxy="$with_system_libs"])
2097 AC_ARG_WITH(myspell-dicts,
2098 AS_HELP_STRING([--with-myspell-dicts],
2099 [Adds myspell dictionaries to the LibreOffice installation set]),
2102 AC_ARG_WITH(system-dicts,
2103 AS_HELP_STRING([--without-system-dicts],
2104 [Do not use dictionaries from system paths.]),
2107 AC_ARG_WITH(external-dict-dir,
2108 AS_HELP_STRING([--with-external-dict-dir],
2109 [Specify external dictionary dir.]),
2112 AC_ARG_WITH(external-hyph-dir,
2113 AS_HELP_STRING([--with-external-hyph-dir],
2114 [Specify external hyphenation pattern dir.]),
2117 AC_ARG_WITH(external-thes-dir,
2118 AS_HELP_STRING([--with-external-thes-dir],
2119 [Specify external thesaurus dir.]),
2122 AC_ARG_WITH(system-zlib,
2123 AS_HELP_STRING([--with-system-zlib],
2124 [Use zlib already on system.]),,
2125 [with_system_zlib=auto])
2127 AC_ARG_WITH(system-jpeg,
2128 AS_HELP_STRING([--with-system-jpeg],
2129 [Use jpeg already on system.]),,
2130 [with_system_jpeg="$with_system_libs"])
2132 AC_ARG_WITH(system-clucene,
2133 AS_HELP_STRING([--with-system-clucene],
2134 [Use clucene already on system.]),,
2135 [with_system_clucene="$with_system_libs"])
2137 AC_ARG_WITH(system-expat,
2138 AS_HELP_STRING([--with-system-expat],
2139 [Use expat already on system.]),,
2140 [with_system_expat="$with_system_libs"])
2142 AC_ARG_WITH(system-libxml,
2143 AS_HELP_STRING([--with-system-libxml],
2144 [Use libxml/libxslt already on system.]),,
2145 [with_system_libxml=auto])
2147 AC_ARG_WITH(system-icu,
2148 AS_HELP_STRING([--with-system-icu],
2149 [Use icu already on system.]),,
2150 [with_system_icu="$with_system_libs"])
2152 AC_ARG_WITH(system-ucpp,
2153 AS_HELP_STRING([--with-system-ucpp],
2154 [Use ucpp already on system.]),,
2157 AC_ARG_WITH(system-openldap,
2158 AS_HELP_STRING([--with-system-openldap],
2159 [Use the OpenLDAP LDAP SDK already on system.]),,
2160 [with_system_openldap="$with_system_libs"])
2162 libo_FUZZ_ARG_ENABLE(poppler,
2163 AS_HELP_STRING([--disable-poppler],
2164 [Disable building Poppler.])
2167 AC_ARG_WITH(system-poppler,
2168 AS_HELP_STRING([--with-system-poppler],
2169 [Use system poppler (only needed for PDF import).]),,
2170 [with_system_poppler="$with_system_libs"])
2172 libo_FUZZ_ARG_ENABLE(gpgmepp,
2173 AS_HELP_STRING([--disable-gpgmepp],
2174 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2177 AC_ARG_WITH(system-gpgmepp,
2178 AS_HELP_STRING([--with-system-gpgmepp],
2179 [Use gpgmepp already on system]),,
2180 [with_system_gpgmepp="$with_system_libs"])
2182 AC_ARG_WITH(system-mariadb,
2183 AS_HELP_STRING([--with-system-mariadb],
2184 [Use MariaDB/MySQL libraries already on system.]),,
2185 [with_system_mariadb="$with_system_libs"])
2187 AC_ARG_ENABLE(bundle-mariadb,
2188 AS_HELP_STRING([--enable-bundle-mariadb],
2189 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2192 AC_ARG_WITH(system-postgresql,
2193 AS_HELP_STRING([--with-system-postgresql],
2194 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2195 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2196 [with_system_postgresql="$with_system_libs"])
2198 AC_ARG_WITH(libpq-path,
2199 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2200 [Use this PostgreSQL C interface (libpq) installation for building
2201 the PostgreSQL-SDBC extension.]),
2204 AC_ARG_WITH(system-firebird,
2205 AS_HELP_STRING([--with-system-firebird],
2206 [Use Firebird libraries already on system, for building the Firebird-SDBC
2207 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2208 [with_system_firebird="$with_system_libs"])
2210 AC_ARG_WITH(system-libtommath,
2211 AS_HELP_STRING([--with-system-libtommath],
2212 [Use libtommath already on system]),,
2213 [with_system_libtommath="$with_system_libs"])
2215 AC_ARG_WITH(system-hsqldb,
2216 AS_HELP_STRING([--with-system-hsqldb],
2217 [Use hsqldb already on system.]))
2219 AC_ARG_WITH(hsqldb-jar,
2220 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2221 [Specify path to jarfile manually.]),
2222 HSQLDB_JAR=$withval)
2224 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2225 AS_HELP_STRING([--disable-scripting-beanshell],
2226 [Disable support for scripts in BeanShell.]),
2230 AC_ARG_WITH(system-beanshell,
2231 AS_HELP_STRING([--with-system-beanshell],
2232 [Use beanshell already on system.]),,
2233 [with_system_beanshell="$with_system_jars"])
2235 AC_ARG_WITH(beanshell-jar,
2236 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2237 [Specify path to jarfile manually.]),
2240 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2241 AS_HELP_STRING([--disable-scripting-javascript],
2242 [Disable support for scripts in JavaScript.]),
2246 AC_ARG_WITH(system-rhino,
2247 AS_HELP_STRING([--with-system-rhino],
2248 [Use rhino already on system.]),,)
2249 # [with_system_rhino="$with_system_jars"])
2250 # Above is not used as we have different debug interface
2251 # patched into internal rhino. This code needs to be fixed
2252 # before we can enable it by default.
2254 AC_ARG_WITH(rhino-jar,
2255 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2256 [Specify path to jarfile manually.]),
2259 AC_ARG_WITH(system-jfreereport,
2260 AS_HELP_STRING([--with-system-jfreereport],
2261 [Use JFreeReport already on system.]),,
2262 [with_system_jfreereport="$with_system_jars"])
2264 AC_ARG_WITH(sac-jar,
2265 AS_HELP_STRING([--with-sac-jar=JARFILE],
2266 [Specify path to jarfile manually.]),
2269 AC_ARG_WITH(libxml-jar,
2270 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2271 [Specify path to jarfile manually.]),
2272 LIBXML_JAR=$withval)
2274 AC_ARG_WITH(flute-jar,
2275 AS_HELP_STRING([--with-flute-jar=JARFILE],
2276 [Specify path to jarfile manually.]),
2279 AC_ARG_WITH(jfreereport-jar,
2280 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2281 [Specify path to jarfile manually.]),
2282 JFREEREPORT_JAR=$withval)
2284 AC_ARG_WITH(liblayout-jar,
2285 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2286 [Specify path to jarfile manually.]),
2287 LIBLAYOUT_JAR=$withval)
2289 AC_ARG_WITH(libloader-jar,
2290 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2291 [Specify path to jarfile manually.]),
2292 LIBLOADER_JAR=$withval)
2294 AC_ARG_WITH(libformula-jar,
2295 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2296 [Specify path to jarfile manually.]),
2297 LIBFORMULA_JAR=$withval)
2299 AC_ARG_WITH(librepository-jar,
2300 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2301 [Specify path to jarfile manually.]),
2302 LIBREPOSITORY_JAR=$withval)
2304 AC_ARG_WITH(libfonts-jar,
2305 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2306 [Specify path to jarfile manually.]),
2307 LIBFONTS_JAR=$withval)
2309 AC_ARG_WITH(libserializer-jar,
2310 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2311 [Specify path to jarfile manually.]),
2312 LIBSERIALIZER_JAR=$withval)
2314 AC_ARG_WITH(libbase-jar,
2315 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2316 [Specify path to jarfile manually.]),
2317 LIBBASE_JAR=$withval)
2319 AC_ARG_WITH(system-odbc,
2320 AS_HELP_STRING([--with-system-odbc],
2321 [Use the odbc headers already on system.]),,
2322 [with_system_odbc="auto"])
2324 AC_ARG_WITH(system-sane,
2325 AS_HELP_STRING([--with-system-sane],
2326 [Use sane.h already on system.]),,
2327 [with_system_sane="$with_system_headers"])
2329 AC_ARG_WITH(system-bluez,
2330 AS_HELP_STRING([--with-system-bluez],
2331 [Use bluetooth.h already on system.]),,
2332 [with_system_bluez="$with_system_headers"])
2334 AC_ARG_WITH(system-curl,
2335 AS_HELP_STRING([--with-system-curl],
2336 [Use curl already on system.]),,
2337 [with_system_curl=auto])
2339 AC_ARG_WITH(system-boost,
2340 AS_HELP_STRING([--with-system-boost],
2341 [Use boost already on system.]),,
2342 [with_system_boost="$with_system_headers"])
2344 AC_ARG_WITH(system-cuckoo,
2345 AS_HELP_STRING([--with-system-cuckoo],
2346 [Use libcuckoo already on system.]),,
2347 [with_system_cuckoo="$with_system_headers"])
2349 AC_ARG_WITH(system-glm,
2350 AS_HELP_STRING([--with-system-glm],
2351 [Use glm already on system.]),,
2352 [with_system_glm="$with_system_headers"])
2354 AC_ARG_WITH(system-hunspell,
2355 AS_HELP_STRING([--with-system-hunspell],
2356 [Use libhunspell already on system.]),,
2357 [with_system_hunspell="$with_system_libs"])
2359 libo_FUZZ_ARG_ENABLE(zxing,
2360 AS_HELP_STRING([--disable-zxing],
2361 [Disable use of zxing external library.]))
2363 AC_ARG_WITH(system-zxing,
2364 AS_HELP_STRING([--with-system-zxing],
2365 [Use libzxing already on system.]),,
2366 [with_system_zxing="$with_system_libs"])
2368 AC_ARG_WITH(system-box2d,
2369 AS_HELP_STRING([--with-system-box2d],
2370 [Use box2d already on system.]),,
2371 [with_system_box2d="$with_system_libs"])
2373 AC_ARG_WITH(system-mythes,
2374 AS_HELP_STRING([--with-system-mythes],
2375 [Use mythes already on system.]),,
2376 [with_system_mythes="$with_system_libs"])
2378 AC_ARG_WITH(system-altlinuxhyph,
2379 AS_HELP_STRING([--with-system-altlinuxhyph],
2380 [Use ALTLinuxhyph already on system.]),,
2381 [with_system_altlinuxhyph="$with_system_libs"])
2383 AC_ARG_WITH(system-lpsolve,
2384 AS_HELP_STRING([--with-system-lpsolve],
2385 [Use lpsolve already on system.]),,
2386 [with_system_lpsolve="$with_system_libs"])
2388 AC_ARG_WITH(system-coinmp,
2389 AS_HELP_STRING([--with-system-coinmp],
2390 [Use CoinMP already on system.]),,
2391 [with_system_coinmp="$with_system_libs"])
2393 AC_ARG_WITH(system-liblangtag,
2394 AS_HELP_STRING([--with-system-liblangtag],
2395 [Use liblangtag library already on system.]),,
2396 [with_system_liblangtag="$with_system_libs"])
2399 AS_HELP_STRING([--with-webdav],
2400 [Specify which library to use for webdav implementation.
2401 Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2402 Example: --with-webdav="serf"]))
2404 AC_ARG_WITH(linker-hash-style,
2405 AS_HELP_STRING([--with-linker-hash-style],
2406 [Use linker with --hash-style=<style> when linking shared objects.
2407 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2408 if supported on the build system, and "sysv" otherwise.]))
2410 AC_ARG_WITH(jdk-home,
2411 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2412 [If you have installed JDK 9 or later on your system please supply the
2413 path here. Note that this is not the location of the java command but the
2414 location of the entire distribution. In case of cross-compiling, this
2415 is the JDK of the host os. Use --with-build-platform-configure-options
2416 to point to a different build platform JDK.]),
2420 AS_HELP_STRING([--with-help],
2421 [Enable the build of help. There is a special parameter "common" that
2422 can be used to bundle only the common part, .e.g help-specific icons.
2423 This is useful when you build the helpcontent separately.])
2425 Usage: --with-help build the old local help
2426 --without-help no local help (default)
2427 --with-help=html build the new HTML local help
2428 --with-help=online build the new HTML online help
2432 AC_ARG_WITH(omindex,
2433 AS_HELP_STRING([--with-omindex],
2434 [Enable the support of xapian-omega index for online help.])
2436 Usage: --with-omindex=server prepare the pages for omindex
2437 but let xapian-omega be built in server.
2438 --with-omindex=noxap do not prepare online pages
2443 libo_FUZZ_ARG_WITH(java,
2444 AS_HELP_STRING([--with-java=<java command>],
2445 [Specify the name of the Java interpreter command. Typically "java"
2446 which is the default.
2448 To build without support for Java components, applets, accessibility
2449 or the XML filters written in Java, use --without-java or --with-java=no.]),
2450 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2451 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2454 AC_ARG_WITH(jvm-path,
2455 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2456 [Use a specific JVM search path at runtime.
2457 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2460 AC_ARG_WITH(ant-home,
2461 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2462 [If you have installed Apache Ant on your system, please supply the path here.
2463 Note that this is not the location of the Ant binary but the location
2464 of the entire distribution.]),
2467 AC_ARG_WITH(symbol-config,
2468 AS_HELP_STRING([--with-symbol-config],
2469 [Configuration for the crashreport symbol upload]),
2471 [with_symbol_config=no])
2473 AC_ARG_WITH(export-validation,
2474 AS_HELP_STRING([--without-export-validation],
2475 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2476 ,with_export_validation=auto)
2478 AC_ARG_WITH(bffvalidator,
2479 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2480 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2481 Requires installed Microsoft Office Binary File Format Validator.
2482 Note: export-validation (--with-export-validation) is required to be turned on.
2483 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2484 ,with_bffvalidator=no)
2486 libo_FUZZ_ARG_WITH(junit,
2487 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2488 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2489 --without-junit disables those tests. Not relevant in the --without-java case.]),
2492 AC_ARG_WITH(hamcrest,
2493 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2494 [Specifies the hamcrest jar file to use for JUnit-based tests.
2495 --without-junit disables those tests. Not relevant in the --without-java case.]),
2498 AC_ARG_WITH(perl-home,
2499 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2500 [If you have installed Perl 5 Distribution, on your system, please
2501 supply the path here. Note that this is not the location of the Perl
2502 binary but the location of the entire distribution.]),
2505 libo_FUZZ_ARG_WITH(doxygen,
2507 [--with-doxygen=<absolute path to doxygen executable>],
2508 [Specifies the doxygen executable to use when generating ODK C/C++
2509 documentation. --without-doxygen disables generation of ODK C/C++
2510 documentation. Not relevant in the --disable-odk case.]),
2513 AC_ARG_WITH(visual-studio,
2514 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2515 [Specify which Visual Studio version to use in case several are
2516 installed. Currently 2019 (default) and 2022 are supported.]),
2519 AC_ARG_WITH(windows-sdk,
2520 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2521 [Specify which Windows SDK, or "Windows Kit", version to use
2522 in case the one that came with the selected Visual Studio
2523 is not what you want for some reason. Note that not all compiler/SDK
2524 combinations are supported. The intent is that this option should not
2529 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2530 [Use this option to build LibreOffice with additional UI language support.
2531 English (US) is always included by default.
2532 Separate multiple languages with space.
2533 For all languages, use --with-lang=ALL.]),
2536 AC_ARG_WITH(locales,
2537 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2538 [Use this option to limit the locale information built in.
2539 Separate multiple locales with space.
2540 Very experimental and might well break stuff.
2541 Just a desperate measure to shrink code and data size.
2542 By default all the locales available is included.
2543 This option is completely unrelated to --with-lang.])
2545 Affects also our character encoding conversion
2546 tables for encodings mainly targeted for a
2547 particular locale, like EUC-CN and EUC-TW for
2548 zh, ISO-2022-JP for ja.
2550 Affects also our add-on break iterator data for
2553 For the default, all locales, don't use this switch at all.
2554 Specifying just the language part of a locale means all matching
2555 locales will be included.
2559 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2560 libo_FUZZ_ARG_WITH(krb5,
2561 AS_HELP_STRING([--with-krb5],
2562 [Enable MIT Kerberos 5 support in modules that support it.
2563 By default automatically enabled on platforms
2564 where a good system Kerberos 5 is available.]),
2567 libo_FUZZ_ARG_WITH(gssapi,
2568 AS_HELP_STRING([--with-gssapi],
2569 [Enable GSSAPI support in modules that support it.
2570 By default automatically enabled on platforms
2571 where a good system GSSAPI is available.]),
2575 AS_HELP_STRING([--with-iwyu],
2576 [Use given IWYU binary path to check unneeded includes instead of building.
2577 Use only if you are hacking on it.]),
2580 libo_FUZZ_ARG_WITH(lxml,
2581 AS_HELP_STRING([--without-lxml],
2582 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2583 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2584 report widget classes and ids.]),
2587 libo_FUZZ_ARG_WITH(latest-c++,
2588 AS_HELP_STRING([--with-latest-c++],
2589 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2590 published standard.]),,
2591 [with_latest_c__=no])
2593 dnl ===================================================================
2595 dnl ===================================================================
2597 AC_ARG_WITH(branding,
2598 AS_HELP_STRING([--with-branding=/path/to/images],
2599 [Use given path to retrieve branding images set.])
2601 Search for intro.png about.svg and logo.svg.
2602 If any is missing, default ones will be used instead.
2604 Search also progress.conf for progress
2605 settings on intro screen :
2607 PROGRESSBARCOLOR="255,255,255" Set color of
2608 progress bar. Comma separated RGB decimal values.
2609 PROGRESSSIZE="407,6" Set size of progress bar.
2610 Comma separated decimal values (width, height).
2611 PROGRESSPOSITION="61,317" Set position of progress
2612 bar from left,top. Comma separated decimal values.
2613 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2614 bar frame. Comma separated RGB decimal values.
2615 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2616 bar text. Comma separated RGB decimal values.
2617 PROGRESSTEXTBASELINE="287" Set vertical position of
2618 progress bar text from top. Decimal value.
2620 Default values will be used if not found.
2625 AC_ARG_WITH(extra-buildid,
2626 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2627 [Show addition build identification in about dialog.]),
2632 AS_HELP_STRING([--with-vendor="John the Builder"],
2633 [Set vendor of the build.]),
2636 AC_ARG_WITH(privacy-policy-url,
2637 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2638 [The URL to your privacy policy (needed when
2639 enabling online-update or crashreporting via breakpad)]),
2640 [if test "x$with_privacy_policy_url" = "xyes"; then
2641 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2642 elif test "x$with_privacy_policy_url" = "xno"; then
2643 with_privacy_policy_url="undefined"
2645 ,[with_privacy_policy_url="undefined"])
2647 AC_ARG_WITH(android-package-name,
2648 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2649 [Set Android package name of the build.]),
2652 AC_ARG_WITH(compat-oowrappers,
2653 AS_HELP_STRING([--with-compat-oowrappers],
2654 [Install oo* wrappers in parallel with
2655 lo* ones to keep backward compatibility.
2656 Has effect only with make distro-pack-install]),
2659 AC_ARG_WITH(os-version,
2660 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2661 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2664 AC_ARG_WITH(idlc-cpp,
2665 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2666 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2669 AC_ARG_WITH(parallelism,
2670 AS_HELP_STRING([--with-parallelism],
2671 [Number of jobs to run simultaneously during build. Parallel builds can
2672 save a lot of time on multi-cpu machines. Defaults to the number of
2673 CPUs on the machine, unless you configure --enable-icecream - then to
2677 AC_ARG_WITH(all-tarballs,
2678 AS_HELP_STRING([--with-all-tarballs],
2679 [Download all external tarballs unconditionally]))
2681 AC_ARG_WITH(gdrive-client-id,
2682 AS_HELP_STRING([--with-gdrive-client-id],
2683 [Provides the client id of the application for OAuth2 authentication
2684 on Google Drive. If either this or --with-gdrive-client-secret is
2685 empty, the feature will be disabled]),
2688 AC_ARG_WITH(gdrive-client-secret,
2689 AS_HELP_STRING([--with-gdrive-client-secret],
2690 [Provides the client secret of the application for OAuth2
2691 authentication on Google Drive. If either this or
2692 --with-gdrive-client-id is empty, the feature will be disabled]),
2695 AC_ARG_WITH(alfresco-cloud-client-id,
2696 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2697 [Provides the client id of the application for OAuth2 authentication
2698 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2699 empty, the feature will be disabled]),
2702 AC_ARG_WITH(alfresco-cloud-client-secret,
2703 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2704 [Provides the client secret of the application for OAuth2
2705 authentication on Alfresco Cloud. If either this or
2706 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2709 AC_ARG_WITH(onedrive-client-id,
2710 AS_HELP_STRING([--with-onedrive-client-id],
2711 [Provides the client id of the application for OAuth2 authentication
2712 on OneDrive. If either this or --with-onedrive-client-secret is
2713 empty, the feature will be disabled]),
2716 AC_ARG_WITH(onedrive-client-secret,
2717 AS_HELP_STRING([--with-onedrive-client-secret],
2718 [Provides the client secret of the application for OAuth2
2719 authentication on OneDrive. If either this or
2720 --with-onedrive-client-id is empty, the feature will be disabled]),
2722 dnl ===================================================================
2723 dnl Do we want to use pre-build binary tarball for recompile
2724 dnl ===================================================================
2726 if test "$enable_library_bin_tar" = "yes" ; then
2727 USE_LIBRARY_BIN_TAR=TRUE
2729 USE_LIBRARY_BIN_TAR=
2731 AC_SUBST(USE_LIBRARY_BIN_TAR)
2733 dnl ===================================================================
2734 dnl Test whether build target is Release Build
2735 dnl ===================================================================
2736 AC_MSG_CHECKING([whether build target is Release Build])
2737 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2739 ENABLE_RELEASE_BUILD=
2740 GET_TASK_ALLOW_ENTITLEMENT='
2741 <!-- We want to be able to debug a hardened process when not building for release -->
2742 <key>com.apple.security.get-task-allow</key>
2745 AC_MSG_RESULT([yes])
2746 ENABLE_RELEASE_BUILD=TRUE
2747 GET_TASK_ALLOW_ENTITLEMENT=''
2749 AC_SUBST(ENABLE_RELEASE_BUILD)
2750 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2752 AC_MSG_CHECKING([whether to build a Community flavor])
2753 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2754 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2755 AC_MSG_RESULT([yes])
2760 dnl ===================================================================
2761 dnl Test whether to sign Windows Build
2762 dnl ===================================================================
2763 AC_MSG_CHECKING([whether to sign windows build])
2764 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2765 AC_MSG_RESULT([yes])
2766 WINDOWS_BUILD_SIGNING="TRUE"
2769 WINDOWS_BUILD_SIGNING="FALSE"
2771 AC_SUBST(WINDOWS_BUILD_SIGNING)
2773 dnl ===================================================================
2774 dnl MacOSX build and runtime environment options
2775 dnl ===================================================================
2777 AC_ARG_WITH(macosx-version-min-required,
2778 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2779 [set the minimum OS version needed to run the built LibreOffice])
2781 e. g.: --with-macosx-version-min-required=10.12
2785 AC_ARG_WITH(macosx-version-max-allowed,
2786 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2787 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2789 e. g.: --with-macosx-version-max-allowed=11.0
2794 dnl ===================================================================
2795 dnl options for stuff used during cross-compilation build
2796 dnl Not quite superseded by --with-build-platform-configure-options.
2797 dnl TODO: check, if the "force" option is still needed anywhere.
2798 dnl ===================================================================
2800 AC_ARG_WITH(system-icu-for-build,
2801 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2802 [Use icu already on system for build tools (cross-compilation only).]))
2805 dnl ===================================================================
2806 dnl Check for incompatible options set by fuzzing, and reset those
2807 dnl automatically to working combinations
2808 dnl ===================================================================
2810 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2811 "$enable_dbus" != "$enable_avahi"; then
2812 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2813 enable_avahi=$enable_dbus
2818 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2819 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2823 add_lopath_before ()
2828 for dir in $LO_PATH ; do
2829 if test "$dir" != "$1" ; then
2830 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2833 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2836 dnl ===================================================================
2837 dnl check for required programs (grep, awk, sed, bash)
2838 dnl ===================================================================
2843 if test -n "$1"; then
2844 if test "$build_os" = "cygwin"; then
2845 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2847 new_path=`cygpath -sm "$formatted_path"`
2850 new_path=`cygpath -u "$formatted_path"`
2855 if test "$2" = "after"; then
2856 add_lopath_after "$new_path"
2858 add_lopath_before "$new_path"
2864 AC_PATH_PROG( AWK, $AWK)
2865 if test -z "$AWK"; then
2866 AC_MSG_ERROR([install awk to run this script])
2869 AC_PATH_PROG(BASH, bash)
2870 if test -z "$BASH"; then
2871 AC_MSG_ERROR([bash not found in \$PATH])
2875 AC_MSG_CHECKING([for GNU or BSD tar])
2876 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2877 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2878 if test $? -eq 0; then
2883 AC_MSG_RESULT($GNUTAR)
2884 if test -z "$GNUTAR"; then
2885 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2889 AC_MSG_CHECKING([for tar's option to strip components])
2890 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2891 if test $? -eq 0; then
2892 STRIP_COMPONENTS="--strip-components"
2894 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2895 if test $? -eq 0; then
2896 STRIP_COMPONENTS="--strip-path"
2898 STRIP_COMPONENTS="unsupported"
2901 AC_MSG_RESULT($STRIP_COMPONENTS)
2902 if test x$STRIP_COMPONENTS = xunsupported; then
2903 AC_MSG_ERROR([you need a tar that is able to strip components.])
2905 AC_SUBST(STRIP_COMPONENTS)
2907 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2908 dnl desktop OSes from "mobile" ones.
2910 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2911 dnl In other words, that when building for an OS that is not a
2912 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2914 dnl Note the direction of the implication; there is no assumption that
2915 dnl cross-compiling would imply a non-desktop OS.
2917 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2918 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2919 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2920 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2923 # Whether to build "avmedia" functionality or not.
2925 if test -z "$enable_avmedia"; then
2929 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2930 if test "$enable_avmedia" = yes; then
2931 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2933 USE_AVMEDIA_DUMMY='TRUE'
2935 AC_SUBST(USE_AVMEDIA_DUMMY)
2937 # Decide whether to build database connectivity stuff (including Base) or not.
2938 if test "$enable_database_connectivity" != no; then
2939 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2940 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2942 if test "$_os" = iOS; then
2943 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2945 disable_database_connectivity_dependencies
2948 if test -z "$enable_extensions"; then
2949 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2950 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2951 enable_extensions=yes
2955 if test "$enable_extensions" = yes; then
2956 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2957 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2959 enable_extension_integration=no
2960 enable_extension_update=no
2963 if test -z "$enable_scripting"; then
2964 # Disable scripting for iOS unless specifically overridden
2965 # with --enable-scripting.
2966 if test $_os != iOS -o $_os = Emscripten; then
2967 enable_scripting=yes
2971 DISABLE_SCRIPTING=''
2972 if test "$enable_scripting" = yes; then
2973 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2974 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2976 DISABLE_SCRIPTING='TRUE'
2977 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2980 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2981 # Disable dynamic_loading always for iOS and Android
2982 enable_dynamic_loading=no
2983 elif test -z "$enable_dynamic_loading"; then
2984 # Otherwise enable it unless specifically disabled
2985 enable_dynamic_loading=yes
2988 DISABLE_DYNLOADING=''
2989 if test "$enable_dynamic_loading" = yes; then
2990 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2992 DISABLE_DYNLOADING='TRUE'
2994 AC_SUBST(DISABLE_DYNLOADING)
2996 # remember SYSBASE value
2999 dnl ===================================================================
3000 dnl Sort out various gallery compilation options
3001 dnl ===================================================================
3002 WITH_GALLERY_BUILD=TRUE
3003 AC_MSG_CHECKING([how to build and package galleries])
3004 if test -n "${with_galleries}"; then
3005 if test "$with_galleries" = "build"; then
3006 if test "$enable_database_connectivity" = no; then
3007 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3009 AC_MSG_RESULT([build from source images internally])
3010 elif test "$with_galleries" = "no"; then
3012 AC_MSG_RESULT([disable non-internal gallery build])
3014 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3017 if test $_os != iOS -a $_os != Android; then
3018 AC_MSG_RESULT([internal src images for desktop])
3021 AC_MSG_RESULT([disable src image build])
3024 AC_SUBST(WITH_GALLERY_BUILD)
3026 dnl ===================================================================
3027 dnl Checks if ccache is available
3028 dnl ===================================================================
3030 if test "$enable_ccache" = "no"; then
3032 elif test "$_os" = "WINNT"; then
3033 # on windows/VC build do not use ccache - but perhaps sccache is around?
3034 case "%$CC%$CXX%" in
3035 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3036 # assume that's good then
3037 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3038 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3039 CCACHE_DEPEND_MODE=1
3042 # for sharing code below, reuse CCACHE env var
3043 AC_PATH_PROG([CCACHE],[sccache],[not found])
3044 if test "$CCACHE" = "not found"; then
3047 CCACHE=`win_short_path_for_make "$CCACHE"`
3048 CCACHE_DEPEND_MODE=1
3052 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3053 case "%$CC%$CXX%" in
3054 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3055 # assume that's good then
3056 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3057 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3058 CCACHE_DEPEND_MODE=1
3061 AC_PATH_PROG([CCACHE],[ccache],[not found])
3062 if test "$CCACHE" = "not found"; then
3065 CCACHE_DEPEND_MODE=1
3066 # Need to check for ccache version: otherwise prevents
3067 # caching of the results (like "-x objective-c++" for Mac)
3068 if test $_os = Darwin -o $_os = iOS; then
3069 # Check ccache version
3070 AC_MSG_CHECKING([whether version of ccache is suitable])
3071 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3072 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3073 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3074 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3076 AC_MSG_RESULT([no, $CCACHE_VERSION])
3087 if test "$enable_ccache" = "nodepend"; then
3088 CCACHE_DEPEND_MODE=""
3090 AC_SUBST(CCACHE_DEPEND_MODE)
3092 # skip on windows - sccache defaults are good enough
3093 if test "$CCACHE" != "" -a "$_os" != "WINNT"; then
3094 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3095 # -p works with both 4.2 and 4.4
3096 ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3097 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3098 if test "$ccache_size" = ""; then
3099 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3100 if test "$ccache_size" = ""; then
3103 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3104 if test $ccache_size -lt 1024; then
3106 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3107 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3109 # warn that ccache may be too small for debug build
3110 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3111 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3114 if test $ccache_size -lt 5; then
3115 #warn that ccache may be too small for debug build
3116 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3117 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3122 dnl ===================================================================
3123 dnl Checks for C compiler,
3124 dnl The check for the C++ compiler is later on.
3125 dnl ===================================================================
3126 if test "$_os" != "WINNT"; then
3128 AC_MSG_CHECKING([gcc home])
3129 if test -z "$with_gcc_home"; then
3130 if test "$enable_icecream" = "yes"; then
3131 if test -d "/usr/lib/icecc/bin"; then
3132 GCC_HOME="/usr/lib/icecc/"
3133 elif test -d "/usr/libexec/icecc/bin"; then
3134 GCC_HOME="/usr/libexec/icecc/"
3135 elif test -d "/opt/icecream/bin"; then
3136 GCC_HOME="/opt/icecream/"
3138 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3142 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3143 GCC_HOME_SET="false"
3146 GCC_HOME="$with_gcc_home"
3148 AC_MSG_RESULT($GCC_HOME)
3151 if test "$GCC_HOME_SET" = "true"; then
3152 if test -z "$CC"; then
3153 CC="$GCC_HOME/bin/gcc"
3156 if test -z "$CXX"; then
3157 CXX="$GCC_HOME/bin/g++"
3163 COMPATH=`dirname "$CC"`
3164 if test "$COMPATH" = "."; then
3165 AC_PATH_PROGS(COMPATH, $CC)
3166 dnl double square bracket to get single because of M4 quote...
3167 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3169 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3171 dnl ===================================================================
3173 dnl ===================================================================
3174 AC_MSG_CHECKING([whether to build with Java support])
3175 if test "$with_java" != "no"; then
3176 if test "$DISABLE_SCRIPTING" = TRUE; then
3177 AC_MSG_RESULT([no, overridden by --disable-scripting])
3181 AC_MSG_RESULT([yes])
3183 AC_DEFINE(HAVE_FEATURE_JAVA)
3190 AC_SUBST(ENABLE_JAVA)
3192 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3194 dnl ENABLE_JAVA="" indicate no Java support at all
3196 dnl ===================================================================
3197 dnl Check macOS SDK and compiler
3198 dnl ===================================================================
3200 if test $_os = Darwin; then
3202 # The SDK in the currently selected Xcode should be found.
3204 AC_MSG_CHECKING([what macOS SDK to use])
3205 for macosx_sdk in 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3206 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3207 if test -d "$MACOSX_SDK_PATH"; then
3210 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3211 if test -d "$MACOSX_SDK_PATH"; then
3216 if test ! -d "$MACOSX_SDK_PATH"; then
3217 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3220 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3224 MACOSX_SDK_VERSION=101300
3227 MACOSX_SDK_VERSION=101400
3230 MACOSX_SDK_VERSION=101500
3233 MACOSX_SDK_VERSION=110000
3236 MACOSX_SDK_VERSION=110100
3239 MACOSX_SDK_VERSION=110300
3242 MACOSX_SDK_VERSION=120000
3245 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3249 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3250 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3253 if test "$with_macosx_version_min_required" = "" ; then
3254 if test "$host_cpu" = x86_64; then
3255 with_macosx_version_min_required="10.12";
3257 with_macosx_version_min_required="11.0";
3261 if test "$with_macosx_version_max_allowed" = "" ; then
3262 with_macosx_version_max_allowed="$macosx_sdk"
3265 # export this so that "xcrun" invocations later return matching values
3266 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3267 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3268 export DEVELOPER_DIR
3269 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3270 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3272 AC_MSG_CHECKING([whether Xcode is new enough])
3273 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3274 my_xcode_ver2=${my_xcode_ver1#Xcode }
3275 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3276 if test "$my_xcode_ver3" -ge 1103; then
3277 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3279 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3282 case "$with_macosx_version_min_required" in
3284 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3287 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3290 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3293 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3296 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3299 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3302 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3305 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3308 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3311 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--12.0])
3315 LIBTOOL=/usr/bin/libtool
3316 INSTALL_NAME_TOOL=install_name_tool
3317 if test -z "$save_CC"; then
3318 stdlib=-stdlib=libc++
3320 AC_MSG_CHECKING([what C compiler to use])
3321 CC="`xcrun -find clang`"
3322 CC_BASE=`first_arg_basename "$CC"`
3323 if test "$host_cpu" = x86_64; then
3324 CC+=" -target x86_64-apple-macos"
3326 CC+=" -target arm64-apple-macos"
3328 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3329 AC_MSG_RESULT([$CC])
3331 AC_MSG_CHECKING([what C++ compiler to use])
3332 CXX="`xcrun -find clang++`"
3333 CXX_BASE=`first_arg_basename "$CXX"`
3334 if test "$host_cpu" = x86_64; then
3335 CXX+=" -target x86_64-apple-macos"
3337 CXX+=" -target arm64-apple-macos"
3339 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3340 AC_MSG_RESULT([$CXX])
3342 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3345 STRIP=`xcrun -find strip`
3346 LIBTOOL=`xcrun -find libtool`
3347 RANLIB=`xcrun -find ranlib`
3350 case "$with_macosx_version_max_allowed" in
3352 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3355 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3358 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3361 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3364 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3367 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3370 MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3373 MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3376 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.0])
3380 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3381 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3382 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])
3387 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3388 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3389 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3393 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3394 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3396 AC_MSG_CHECKING([whether to do code signing])
3398 if test "$enable_macosx_code_signing" = yes; then
3399 # By default use the first suitable certificate (?).
3401 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3402 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3403 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3404 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3405 # "Developer ID Application" one.
3407 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3408 if test -n "$identity"; then
3409 MACOSX_CODESIGNING_IDENTITY=$identity
3410 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3411 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3413 AC_MSG_ERROR([cannot determine identity to use])
3415 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3416 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3417 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3418 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3423 AC_MSG_CHECKING([whether to create a Mac App Store package])
3425 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3427 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3428 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3429 elif test "$enable_macosx_package_signing" = yes; then
3430 # By default use the first suitable certificate.
3431 # It should be a "3rd Party Mac Developer Installer" one
3433 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3434 if test -n "$identity"; then
3435 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3436 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3437 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3439 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3442 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3443 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3444 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3447 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3448 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3451 AC_MSG_CHECKING([whether to sandbox the application])
3453 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3454 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3455 elif test "$enable_macosx_sandbox" = yes; then
3456 ENABLE_MACOSX_SANDBOX=TRUE
3457 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3458 AC_MSG_RESULT([yes])
3463 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3464 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3465 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3467 AC_SUBST(MACOSX_SDK_PATH)
3468 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3469 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3470 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3471 AC_SUBST(INSTALL_NAME_TOOL)
3472 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3473 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3474 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3475 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3476 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3478 dnl ===================================================================
3479 dnl Check iOS SDK and compiler
3480 dnl ===================================================================
3482 if test $_os = iOS; then
3483 AC_MSG_CHECKING([what iOS SDK to use])
3484 current_sdk_ver=15.0
3485 older_sdk_vers="14.5"
3486 if test "$enable_ios_simulator" = "yes"; then
3487 platform=iPhoneSimulator
3488 versionmin=-mios-simulator-version-min=13.6
3491 versionmin=-miphoneos-version-min=13.6
3493 xcode_developer=`xcode-select -print-path`
3495 for sdkver in $current_sdk_ver $older_sdk_vers; do
3496 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3503 if test -z "$sysroot"; then
3504 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3507 AC_MSG_RESULT($sysroot)
3509 stdlib="-stdlib=libc++"
3511 AC_MSG_CHECKING([what C compiler to use])
3512 CC="`xcrun -find clang`"
3513 CC_BASE=`first_arg_basename "$CC"`
3514 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3515 AC_MSG_RESULT([$CC])
3517 AC_MSG_CHECKING([what C++ compiler to use])
3518 CXX="`xcrun -find clang++`"
3519 CXX_BASE=`first_arg_basename "$CXX"`
3520 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3521 AC_MSG_RESULT([$CXX])
3523 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3526 STRIP=`xcrun -find strip`
3527 LIBTOOL=`xcrun -find libtool`
3528 RANLIB=`xcrun -find ranlib`
3531 AC_MSG_CHECKING([whether to treat the installation as read-only])
3533 if test $_os = Darwin; then
3534 enable_readonly_installset=yes
3535 elif test "$enable_extensions" != yes; then
3536 enable_readonly_installset=yes
3538 if test "$enable_readonly_installset" = yes; then
3539 AC_MSG_RESULT([yes])
3540 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3545 dnl ===================================================================
3546 dnl Structure of install set
3547 dnl ===================================================================
3549 if test $_os = Darwin; then
3550 LIBO_BIN_FOLDER=MacOS
3551 LIBO_ETC_FOLDER=Resources
3552 LIBO_LIBEXEC_FOLDER=MacOS
3553 LIBO_LIB_FOLDER=Frameworks
3554 LIBO_LIB_PYUNO_FOLDER=Resources
3555 LIBO_SHARE_FOLDER=Resources
3556 LIBO_SHARE_HELP_FOLDER=Resources/help
3557 LIBO_SHARE_JAVA_FOLDER=Resources/java
3558 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3559 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3560 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3561 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3562 LIBO_URE_BIN_FOLDER=MacOS
3563 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3564 LIBO_URE_LIB_FOLDER=Frameworks
3565 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3566 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3567 elif test $_os = WINNT; then
3568 LIBO_BIN_FOLDER=program
3569 LIBO_ETC_FOLDER=program
3570 LIBO_LIBEXEC_FOLDER=program
3571 LIBO_LIB_FOLDER=program
3572 LIBO_LIB_PYUNO_FOLDER=program
3573 LIBO_SHARE_FOLDER=share
3574 LIBO_SHARE_HELP_FOLDER=help
3575 LIBO_SHARE_JAVA_FOLDER=program/classes
3576 LIBO_SHARE_PRESETS_FOLDER=presets
3577 LIBO_SHARE_READMES_FOLDER=readmes
3578 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3579 LIBO_SHARE_SHELL_FOLDER=program/shell
3580 LIBO_URE_BIN_FOLDER=program
3581 LIBO_URE_ETC_FOLDER=program
3582 LIBO_URE_LIB_FOLDER=program
3583 LIBO_URE_MISC_FOLDER=program
3584 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3586 LIBO_BIN_FOLDER=program
3587 LIBO_ETC_FOLDER=program
3588 LIBO_LIBEXEC_FOLDER=program
3589 LIBO_LIB_FOLDER=program
3590 LIBO_LIB_PYUNO_FOLDER=program
3591 LIBO_SHARE_FOLDER=share
3592 LIBO_SHARE_HELP_FOLDER=help
3593 LIBO_SHARE_JAVA_FOLDER=program/classes
3594 LIBO_SHARE_PRESETS_FOLDER=presets
3595 LIBO_SHARE_READMES_FOLDER=readmes
3596 if test "$enable_fuzzers" != yes; then
3597 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3599 LIBO_SHARE_RESOURCE_FOLDER=resource
3601 LIBO_SHARE_SHELL_FOLDER=program/shell
3602 LIBO_URE_BIN_FOLDER=program
3603 LIBO_URE_ETC_FOLDER=program
3604 LIBO_URE_LIB_FOLDER=program
3605 LIBO_URE_MISC_FOLDER=program
3606 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3608 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3609 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3610 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3611 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3612 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3613 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3614 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3615 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3616 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3617 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3618 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3619 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3620 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3621 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3622 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3623 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3625 # Not all of them needed in config_host.mk, add more if need arises
3626 AC_SUBST(LIBO_BIN_FOLDER)
3627 AC_SUBST(LIBO_ETC_FOLDER)
3628 AC_SUBST(LIBO_LIB_FOLDER)
3629 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3630 AC_SUBST(LIBO_SHARE_FOLDER)
3631 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3632 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3633 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3634 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3635 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3636 AC_SUBST(LIBO_URE_BIN_FOLDER)
3637 AC_SUBST(LIBO_URE_ETC_FOLDER)
3638 AC_SUBST(LIBO_URE_LIB_FOLDER)
3639 AC_SUBST(LIBO_URE_MISC_FOLDER)
3640 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3642 dnl ===================================================================
3643 dnl Windows specific tests and stuff
3644 dnl ===================================================================
3648 # Return value: $regvalue
3651 if test "$build_os" = "wsl"; then
3652 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3656 local _regentry="/proc/registry${1}/${2}"
3657 if test -f "$_regentry"; then
3658 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3659 # Registry keys read via /proc/registry* are always \0 terminated!
3660 local _regvalue=$(tr -d '\0' < "$_regentry")
3661 if test $? -eq 0; then
3667 # Get a value from the 32-bit side of the Registry
3670 reg_get_value "32" "$1"
3673 # Get a value from the 64-bit side of the Registry
3676 reg_get_value "64" "$1"
3684 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3693 PLATFORMID=windows_x86_64
3695 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3697 WIN_MULTI_ARCH="x86"
3703 PLATFORMID=windows_x86
3706 WIN_OTHER_ARCH="x64"
3711 PLATFORMID=windows_aarch64
3713 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3714 WIN_HOST_ARCH="arm64"
3719 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3723 case "$build_cpu" in
3724 x86_64) WIN_BUILD_ARCH="x64" ;;
3725 i*86) WIN_BUILD_ARCH="x86" ;;
3726 aarch64) WIN_BUILD_ARCH="arm64" ;;
3728 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3732 SCPDEFS="$SCPDEFS -D_MSC_VER"
3736 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3737 # other-arch won't, but wouldn't break the build (x64 on x86).
3738 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3739 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3743 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3744 # To allow building Windows multi-arch releases without cross-tooling
3745 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3746 cross_compiling="yes"
3750 ENABLE_WASM_STRIP=''
3751 if test "$cross_compiling" = "yes"; then
3752 export CROSS_COMPILING=TRUE
3753 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3754 ENABLE_WASM_STRIP=TRUE
3758 BUILD_TYPE="$BUILD_TYPE NATIVE"
3760 AC_SUBST(CROSS_COMPILING)
3761 AC_SUBST(ENABLE_WASM_STRIP)
3763 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3764 # NOTE: must _not_ be used for bundled external libraries!
3766 if test "$GCC" = "yes"; then
3767 AC_MSG_CHECKING( for -isystem )
3769 CFLAGS="$CFLAGS -Werror"
3770 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3772 if test -n "$ISYSTEM"; then
3778 if test -z "$ISYSTEM"; then
3779 # fall back to using -I
3784 dnl ===================================================================
3785 dnl Check which Visual Studio compiler is used
3786 dnl ===================================================================
3788 map_vs_year_to_version()
3790 # Return value: $vsversion
3800 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3804 vs_versions_to_check()
3806 # Args: $1 (optional) : versions to check, in the order of preference
3807 # Return value: $vsversions
3811 if test -n "$1"; then
3812 map_vs_year_to_version "$1"
3813 vsversions=$vsversion
3815 # Default version is 2019
3820 win_get_env_from_vsvars32bat()
3822 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3823 # Also seems to be located in another directory under the same name: vsvars32.bat
3824 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3825 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3826 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3827 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3829 if test "$build_os" = "wsl"; then
3830 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3832 chmod +x $WRAPPERBATCHFILEPATH
3833 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3835 rm -f $WRAPPERBATCHFILEPATH
3836 printf '%s' "$result"
3841 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3842 if test -n "$regvalue"; then
3843 PathFormat "$regvalue"
3844 UCRTSDKDIR=$formatted_path_unix
3845 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3846 UCRTVERSION=$regvalue
3848 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3852 if test -z "$UCRTSDKDIR"; then
3853 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3854 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3855 if test -f "$ide_env_file"; then
3856 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3857 UCRTSDKDIR=$formatted_path
3858 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3859 dnl Hack needed at least by tml:
3860 if test "$UCRTVERSION" = 10.0.15063.0 \
3861 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3862 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3864 UCRTVERSION=10.0.14393.0
3867 AC_MSG_ERROR([No UCRT found])
3875 # Args: $1 (optional) : The VS version year
3876 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3878 unset vctest vctoolset vcnumwithdot vcbuildnumber
3880 vs_versions_to_check "$1"
3881 if test "$build_os" = wsl; then
3882 vswhere="$PROGRAMFILESX86"
3884 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3886 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3887 PathFormat "$vswhere"
3888 vswhere=$formatted_path_unix
3889 for ver in $vsversions; do
3890 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3891 # Fall back to all MS products (this includes VC++ Build Tools)
3892 if ! test -n "$vswhereoutput"; then
3893 AC_MSG_CHECKING([VC++ Build Tools and similar])
3894 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3896 if test -n "$vswhereoutput"; then
3897 PathFormat "$vswhereoutput"
3898 vctest=$formatted_path_unix
3903 if test -n "$vctest"; then
3904 vcnumwithdot="$ver.0"
3905 case "$vcnumwithdot" in
3915 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3922 AC_MSG_CHECKING([$1 compiler])
3924 CL_EXE_PATH="$2/cl.exe"
3926 if test ! -f "$CL_EXE_PATH"; then
3927 if test "$1" = "multi-arch"; then
3928 AC_MSG_WARN([no compiler (cl.exe) in $2])
3931 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3935 dnl ===========================================================
3936 dnl Check for the corresponding mspdb*.dll
3937 dnl ===========================================================
3939 # MSVC 15.0 has libraries from 14.0?
3942 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3943 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3946 # The compiles has to find its shared libraries
3948 TEMP_PATH=`cygpath -d "$2"`
3949 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3951 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3952 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3957 AC_MSG_RESULT([$CL_EXE_PATH])
3963 if test "$_os" = "WINNT"; then
3964 AC_MSG_CHECKING([Visual C++])
3965 find_msvc "$with_visual_studio"
3966 if test -z "$vctest"; then
3967 if test -n "$with_visual_studio"; then
3968 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3970 AC_MSG_ERROR([no Visual Studio installation found])
3975 VC_PRODUCT_DIR="$vctest/VC"
3976 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3978 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3979 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3980 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3981 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3982 if test $? -ne 0; then
3988 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3989 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3990 test_cl_exe "build" "$MSVC_BUILD_PATH"
3993 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3994 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3995 test_cl_exe "host" "$MSVC_HOST_PATH"
3997 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4000 AC_MSG_CHECKING([for short pathname of VC product directory])
4001 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4002 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4007 AC_MSG_CHECKING([for UCRT location])
4009 # find_ucrt errors out if it doesn't find it
4010 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4011 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4012 ucrtincpath_formatted=$formatted_path
4013 # SOLARINC is used for external modules and must be set too.
4014 # And no, it's not sufficient to set SOLARINC only, as configure
4015 # itself doesn't honour it.
4016 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4017 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4018 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4019 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4021 AC_SUBST(UCRTSDKDIR)
4022 AC_SUBST(UCRTVERSION)
4024 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4025 # Find the proper version of MSBuild.exe to use based on the VS version
4026 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4027 if test -z "$regvalue" ; then
4028 if test "$WIN_BUILD_ARCH" != "x64"; then
4029 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4031 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4034 if test -d "$regvalue" ; then
4035 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4036 AC_MSG_RESULT([$regvalue])
4038 AC_MSG_ERROR([MSBuild.exe location not found])
4041 # Find the version of devenv.exe
4042 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4043 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4044 DEVENV_unix=$(cygpath -u "$DEVENV")
4045 if test ! -e "$DEVENV_unix"; then
4046 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4049 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4050 dnl needed when building CLR code:
4051 if test -z "$MSVC_CXX"; then
4052 # This gives us a posix path with 8.3 filename restrictions
4053 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4056 if test -z "$CC"; then
4058 CC_BASE=`first_arg_basename "$CC"`
4060 if test -z "$CXX"; then
4062 CXX_BASE=`first_arg_basename "$CXX"`
4065 if test -n "$CC"; then
4066 # Remove /cl.exe from CC case insensitive
4067 AC_MSG_NOTICE([found Visual C++ $vcyear])
4069 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4070 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4072 PathFormat "$COMPATH"
4073 COMPATH=`win_short_path_for_make "$formatted_path"`
4076 VCTOOLSET=$vctoolset
4078 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4079 # are always "better", we list them in reverse chronological order.
4081 case "$vcnumwithdot" in
4083 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4087 # The expectation is that --with-windows-sdk should not need to be used
4088 if test -n "$with_windows_sdk"; then
4089 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4090 *" "$with_windows_sdk" "*)
4091 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4094 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4099 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4104 AC_MSG_ERROR([Visual C++ not found after all, huh])
4107 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4108 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4109 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4110 // between Visual Studio versions and _MSC_VER:
4114 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4116 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4117 # version of the Explorer extension (and maybe other small
4118 # bits, too) needed when installing a 32-bit LibreOffice on a
4119 # 64-bit OS. The 64-bit Explorer extension is a feature that
4120 # has been present since long in OOo. Don't confuse it with
4121 # building LibreOffice itself as 64-bit code.
4126 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4127 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4128 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4129 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4132 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4133 AC_MSG_RESULT([found])
4135 AC_MSG_RESULT([not found])
4136 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4138 elif test "$WIN_HOST_ARCH" = "x64"; then
4143 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4144 AC_SUBST(CXX_X64_BINARY)
4146 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4147 # needed to support TWAIN scan on both 32- and 64-bit systems
4149 case "$WIN_HOST_ARCH" in
4151 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4152 if test -n "$CXX_X86_BINARY"; then
4154 AC_MSG_RESULT([preset])
4155 elif test -n "$WIN_MULTI_ARCH"; then
4157 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4158 CXX_X86_BINARY+=" /arch:SSE"
4159 AC_MSG_RESULT([found])
4161 AC_MSG_RESULT([not found])
4162 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4167 CXX_X86_BINARY=$MSVC_CXX
4171 AC_SUBST(CXX_X86_BINARY)
4179 AC_MSG_CHECKING([whether the compiler is actually Clang])
4180 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4186 [AC_MSG_RESULT([yes])
4188 [AC_MSG_RESULT([no])])
4189 AC_SUBST(COM_IS_CLANG)
4193 if test "$COM_IS_CLANG" = TRUE; then
4194 AC_MSG_CHECKING([whether Clang is new enough])
4195 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4196 #if !defined __apple_build_version__
4200 [my_apple_clang=yes],[my_apple_clang=])
4201 if test "$my_apple_clang" = yes; then
4202 AC_MSG_RESULT([assumed yes (Apple Clang)])
4203 elif test "$_os" = Emscripten; then
4204 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4206 if test "$_os" = WINNT; then
4207 dnl In which case, assume clang-cl:
4209 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4217 CC_PLAIN="$CC_PLAIN $i"
4224 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4225 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4226 CLANGVER=`echo $clang_version \
4227 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4228 if test "$CLANGVER" -ge 50002; then
4229 AC_MSG_RESULT([yes ($clang_version)])
4231 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4233 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4234 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4238 SHOWINCLUDES_PREFIX=
4239 if test "$_os" = WINNT; then
4240 dnl We need to guess the prefix of the -showIncludes output, it can be
4242 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4243 echo "#include <stdlib.h>" > conftest.c
4244 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4245 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4246 rm -f conftest.c conftest.obj
4247 if test -z "$SHOWINCLUDES_PREFIX"; then
4248 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4250 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4253 AC_SUBST(SHOWINCLUDES_PREFIX)
4256 # prefix C with ccache if needed
4258 if test "$CCACHE" != ""; then
4259 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4263 CFLAGS="$CFLAGS --ccache-skip -O2"
4264 dnl an empty program will do, we're checking the compiler flags
4265 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4266 [use_ccache=yes], [use_ccache=no])
4268 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4269 AC_MSG_RESULT([yes])
4272 CC_BASE="ccache $CC_BASE"
4278 # ===================================================================
4279 # check various GCC options that Clang does not support now but maybe
4280 # will somewhen in the future, check them even for GCC, so that the
4282 # ===================================================================
4285 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4286 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4288 CFLAGS="$CFLAGS -Werror -ggdb2"
4289 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4291 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4292 AC_MSG_RESULT([yes])
4297 if test "$host_cpu" = "m68k"; then
4298 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4300 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4301 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4303 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4304 AC_MSG_RESULT([yes])
4310 AC_SUBST(HAVE_GCC_GGDB2)
4312 dnl ===================================================================
4313 dnl Test the gcc version
4314 dnl ===================================================================
4315 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4316 AC_MSG_CHECKING([the GCC version])
4317 _gcc_version=`$CC -dumpfullversion`
4318 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4319 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4320 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4322 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4324 if test "$gcc_full_version" -lt 70000; then
4325 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4328 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4329 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4330 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4331 # (which reports itself as GCC 4.2.1).
4334 AC_SUBST(GCC_VERSION)
4336 dnl Set the ENABLE_DBGUTIL variable
4337 dnl ===================================================================
4338 AC_MSG_CHECKING([whether to build with additional debug utilities])
4339 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4340 ENABLE_DBGUTIL="TRUE"
4341 # this is an extra var so it can have different default on different MSVC
4342 # versions (in case there are version specific problems with it)
4343 MSVC_USE_DEBUG_RUNTIME="TRUE"
4345 AC_MSG_RESULT([yes])
4346 # cppunit and graphite expose STL in public headers
4347 if test "$with_system_cppunit" = "yes"; then
4348 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4350 with_system_cppunit=no
4352 if test "$with_system_graphite" = "yes"; then
4353 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4355 with_system_graphite=no
4357 if test "$with_system_orcus" = "yes"; then
4358 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4360 with_system_orcus=no
4362 if test "$with_system_libcmis" = "yes"; then
4363 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4365 with_system_libcmis=no
4367 if test "$with_system_hunspell" = "yes"; then
4368 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4370 with_system_hunspell=no
4372 if test "$with_system_gpgmepp" = "yes"; then
4373 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4375 with_system_gpgmepp=no
4377 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4378 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4379 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4380 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4381 # of those two is using the system variant:
4382 if test "$with_system_libnumbertext" = "yes"; then
4383 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4385 with_system_libnumbertext=no
4387 if test "$with_system_libwps" = "yes"; then
4388 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4390 with_system_libwps=no
4394 MSVC_USE_DEBUG_RUNTIME=""
4397 AC_SUBST(ENABLE_DBGUTIL)
4398 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4400 dnl Set the ENABLE_DEBUG variable.
4401 dnl ===================================================================
4402 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4403 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4405 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4406 if test -z "$libo_fuzzed_enable_debug"; then
4407 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4409 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4414 AC_MSG_CHECKING([whether to do a debug build])
4415 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4417 if test -n "$ENABLE_DBGUTIL" ; then
4418 AC_MSG_RESULT([yes (dbgutil)])
4420 AC_MSG_RESULT([yes])
4426 AC_SUBST(ENABLE_DEBUG)
4428 dnl ===================================================================
4429 dnl Select the linker to use (gold/lld/ld.bfd).
4430 dnl This is done only after compiler checks (need to know if Clang is
4431 dnl used, for different defaults) and after checking if a debug build
4432 dnl is wanted (non-debug builds get the default linker if not explicitly
4433 dnl specified otherwise).
4434 dnl All checks for linker features/options should come after this.
4435 dnl ===================================================================
4438 use_ld=-fuse-ld=${1%%:*}
4440 if test "$use_ld_path" != "$1"; then
4441 use_ld="$use_ld --ld-path=$use_ld_path"
4443 use_ld_fail_if_error=$2
4445 AC_MSG_CHECKING([for $use_ld linker support])
4446 use_ld_ldflags_save="$LDFLAGS"
4447 LDFLAGS="$LDFLAGS $use_ld"
4448 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4451 printf ("hello world\n");
4452 ])], USE_LD=$use_ld, [])
4453 if test -n "$USE_LD"; then
4454 AC_MSG_RESULT( yes )
4457 if test -n "$use_ld_fail_if_error"; then
4463 if test -n "$use_ld_ok"; then
4464 dnl keep the value of LDFLAGS
4467 LDFLAGS="$use_ld_ldflags_save"
4471 if test "$enable_ld" != "no"; then
4472 if test "$GCC" = "yes"; then
4473 if test -n "$enable_ld"; then
4474 check_use_ld "$enable_ld" fail_if_error
4475 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4476 dnl non-debug builds default to the default linker
4478 elif test -n "$COM_IS_CLANG"; then
4480 if test $? -ne 0; then
4484 # For gcc first try gold, new versions also support lld.
4486 if test $? -ne 0; then
4490 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4492 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4493 if test -z "$ld_used"; then
4496 AC_MSG_CHECKING([for linker that is used])
4497 AC_MSG_RESULT([$ld_used])
4498 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4499 if echo "$ld_used" | grep -q "^GNU ld"; then
4500 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4501 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4505 if test "$enable_ld" = "yes"; then
4506 AC_MSG_ERROR([--enable-ld not supported])
4512 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4513 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4514 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4515 bsymbolic_functions_ldflags_save=$LDFLAGS
4516 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4517 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4520 printf ("hello world\n");
4521 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4522 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4523 AC_MSG_RESULT( found )
4525 AC_MSG_RESULT( not found )
4527 LDFLAGS=$bsymbolic_functions_ldflags_save
4529 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4532 if test "$GCC" = "yes"; then
4533 for flag in "--gc-sections" "-dead_strip"; do
4534 AC_MSG_CHECKING([for $flag linker support])
4535 ldflags_save=$LDFLAGS
4536 LDFLAGS="$LDFLAGS -Wl,$flag"
4537 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4540 printf ("hello world\n");
4542 LD_GC_SECTIONS="-Wl,$flag"
4543 AC_MSG_RESULT( found )
4545 AC_MSG_RESULT( not found )
4547 LDFLAGS=$ldflags_save
4548 if test -n "$LD_GC_SECTIONS"; then
4553 AC_SUBST(LD_GC_SECTIONS)
4556 if test "$enable_split_debug" != no; then
4557 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4558 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4559 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4561 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4562 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4564 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4565 AC_MSG_RESULT([yes])
4567 if test "$enable_split_debug" = yes; then
4574 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4575 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4576 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4579 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4581 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4582 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4584 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4585 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4587 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4588 AC_MSG_RESULT([yes])
4592 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4595 if test "$enable_gdb_index" != "no"; then
4596 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4597 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4598 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4600 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4602 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4603 if test "$have_ggnu_pubnames" != "TRUE"; then
4604 if test "$enable_gdb_index" = "yes"; then
4605 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4610 AC_MSG_RESULT( yes )
4611 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4612 ldflags_save=$LDFLAGS
4613 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4614 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4617 printf ("hello world\n");
4618 ])], ENABLE_GDB_INDEX=TRUE, [])
4619 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4620 AC_MSG_RESULT( yes )
4622 if test "$enable_gdb_index" = "yes"; then
4628 LDFLAGS=$ldflags_save
4632 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4633 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4634 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4637 AC_SUBST(ENABLE_GDB_INDEX)
4639 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4642 if test "$enable_sal_log" = yes; then
4645 AC_SUBST(ENABLE_SAL_LOG)
4647 dnl Check for enable symbols option
4648 dnl ===================================================================
4649 AC_MSG_CHECKING([whether to generate debug information])
4650 if test -z "$enable_symbols"; then
4651 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4657 if test "$enable_symbols" = yes; then
4658 ENABLE_SYMBOLS_FOR=all
4659 AC_MSG_RESULT([yes])
4660 elif test "$enable_symbols" = no; then
4664 # Selective debuginfo.
4665 ENABLE_SYMBOLS_FOR="$enable_symbols"
4666 AC_MSG_RESULT([for "$enable_symbols"])
4668 AC_SUBST(ENABLE_SYMBOLS_FOR)
4670 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4671 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4672 AC_MSG_CHECKING([whether enough memory is available for linking])
4673 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4674 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4675 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4676 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4678 AC_MSG_RESULT([yes])
4683 ENABLE_OPTIMIZED_DEBUG=
4684 AC_MSG_CHECKING([whether to compile with optimization flags])
4685 if test -z "$enable_optimized"; then
4686 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4689 enable_optimized=yes
4692 if test "$enable_optimized" = yes; then
4693 ENABLE_OPTIMIZED=TRUE
4694 AC_MSG_RESULT([yes])
4695 elif test "$enable_optimized" = debug; then
4696 ENABLE_OPTIMIZED_DEBUG=TRUE
4697 AC_MSG_RESULT([yes (debug)])
4699 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4700 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4702 CFLAGS="$CFLAGS -Werror -Og"
4703 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4705 if test "$HAVE_GCC_OG" = "TRUE"; then
4706 AC_MSG_RESULT([yes])
4711 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4712 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4717 AC_SUBST(ENABLE_OPTIMIZED)
4718 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4721 # determine CPUNAME, OS, ...
4731 PLATFORMID=aix_powerpc
4747 if test "$enable_ios_simulator" = "yes"; then
4752 PLATFORMID=macosx_aarch64
4756 if test "$enable_ios_simulator" = "yes"; then
4761 PLATFORMID=macosx_x86_64
4764 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4777 if test "$enable_ios_simulator" = "yes"; then
4778 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4782 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4787 PLATFORMID=ios_arm64
4800 PLATFORMID=dragonfly_x86
4805 PLATFORMID=dragonfly_x86_64
4808 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4822 PLATFORMID=freebsd_aarch64
4828 PLATFORMID=freebsd_x86
4833 PLATFORMID=freebsd_x86_64
4838 PLATFORMID=freebsd_powerpc64
4843 PLATFORMID=freebsd_powerpc
4846 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4862 PLATFORMID=haiku_x86
4867 PLATFORMID=haiku_x86_64
4870 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4886 PLATFORMID=kfreebsd_x86
4891 PLATFORMID=kfreebsd_x86_64
4894 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4899 linux-gnu*|linux-musl*)
4909 PLATFORMID=linux_aarch64
4911 EPM_FLAGS="-a arm64"
4916 PLATFORMID=linux_alpha
4922 PLATFORMID=linux_arm_eabi
4926 PLATFORMID=linux_arm_oabi
4934 PLATFORMID=linux_hppa
4939 PLATFORMID=linux_x86
4944 PLATFORMID=linux_ia64
4950 PLATFORMID=linux_mips_eb
4955 EPM_FLAGS="-a mips64"
4956 PLATFORMID=linux_mips64_eb
4961 EPM_FLAGS="-a mips64el"
4962 PLATFORMID=linux_mips64_el
4967 EPM_FLAGS="-a mipsel"
4968 PLATFORMID=linux_mips_el
4973 PLATFORMID=linux_m68k
4978 PLATFORMID=linux_powerpc
4983 PLATFORMID=linux_powerpc64
4987 RTL_ARCH=PowerPC_64_LE
4988 PLATFORMID=linux_powerpc64_le
4993 PLATFORMID=linux_sparc
4998 PLATFORMID=linux_sparc64
5003 PLATFORMID=linux_s390
5008 PLATFORMID=linux_s390x
5013 PLATFORMID=linux_x86_64
5016 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5032 PLATFORMID=android_arm_eabi
5037 PLATFORMID=android_aarch64
5042 PLATFORMID=android_x86
5047 PLATFORMID=android_x86_64
5050 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5065 PLATFORMID=netbsd_x86
5070 PLATFORMID=netbsd_powerpc
5075 PLATFORMID=netbsd_sparc
5080 PLATFORMID=netbsd_x86_64
5083 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5098 PLATFORMID=openbsd_x86
5103 PLATFORMID=openbsd_x86_64
5106 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5109 SOLARINC="$SOLARINC -I/usr/local/include"
5122 PLATFORMID=solaris_x86
5127 PLATFORMID=solaris_sparc
5132 PLATFORMID=solaris_sparc64
5135 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5138 SOLARINC="$SOLARINC -I/usr/local/include"
5151 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5156 PLATFORMID=linux_x86
5160 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5164 if test "$with_x" = "no"; then
5165 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5169 if test "$enable_gui" = "no"; then
5170 if test "$using_x11" != yes; then
5171 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5176 AC_DEFINE(HAVE_FEATURE_UI)
5178 AC_SUBST(DISABLE_GUI)
5180 if test "$using_x11" = yes; then
5181 if test "$USING_X11" = TRUE; then
5182 AC_DEFINE(USING_X11)
5187 if test "$USING_X11" = TRUE; then
5188 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5192 WORKDIR="${BUILDDIR}/workdir"
5193 INSTDIR="${BUILDDIR}/instdir"
5194 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5195 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5196 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5204 AC_SUBST([INSTROOT])
5205 AC_SUBST([INSTROOTBASE])
5209 AC_SUBST(PLATFORMID)
5210 AC_SUBST(WINDOWS_X64)
5211 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5213 if test "$OS" = WNT -a "$COM" = MSC; then
5215 INTEL) CPPU_ENV=msci ;;
5216 X86_64) CPPU_ENV=mscx ;;
5217 AARCH64) CPPU_ENV=msca ;;
5219 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5227 dnl ===================================================================
5228 dnl Test which package format to use
5229 dnl ===================================================================
5230 AC_MSG_CHECKING([which package format to use])
5231 if test -n "$with_package_format" -a "$with_package_format" != no; then
5232 for i in $with_package_format; do
5234 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5237 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5238 aix - AIX software distribution
5239 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5240 deb - Debian software distribution
5241 pkg - Solaris software distribution
5242 rpm - RedHat software distribution
5244 LibreOffice additionally supports:
5245 archive - .tar.gz or .zip
5247 installed - installation tree
5253 # fakeroot is needed to ensure correct file ownerships/permissions
5254 # inside deb packages and tar archives created on Linux and Solaris.
5255 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5256 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5257 if test "$FAKEROOT" = "no"; then
5259 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5262 PKGFORMAT="$with_package_format"
5263 AC_MSG_RESULT([$PKGFORMAT])
5266 AC_MSG_RESULT([none])
5270 dnl ===================================================================
5271 dnl handle help related options
5273 dnl If you change help related options, please update README.help
5274 dnl ===================================================================
5281 AC_MSG_CHECKING([which help to build])
5282 if test -n "$with_help" -a "$with_help" != "no"; then
5283 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5284 BUILD_TYPE="$BUILD_TYPE HELP"
5285 case "$with_help" in
5287 ENABLE_HTMLHELP=TRUE
5289 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5290 AC_MSG_RESULT([HTML (local)])
5293 ENABLE_HTMLHELP=TRUE
5295 AC_MSG_RESULT([HTML (online)])
5299 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5300 AC_MSG_RESULT([XML (local)])
5303 AC_MSG_ERROR([Unknown --with-help=$with_help])
5310 AC_MSG_CHECKING([if we need to build the help index tooling])
5311 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5312 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5313 AC_MSG_RESULT([yes])
5318 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5319 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5320 if test "$HELP_ONLINE" != TRUE; then
5321 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5323 case "$with_omindex" in
5325 HELP_OMINDEX_PAGE=TRUE
5326 AC_MSG_RESULT([SERVER])
5329 AC_MSG_RESULT([NOXAP])
5332 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5339 AC_MSG_CHECKING([whether to include the XML-help support])
5340 if test "$enable_xmlhelp" = yes; then
5341 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5342 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5343 AC_MSG_RESULT([yes])
5345 if test "$with_help" = yes; then
5346 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5351 dnl Test whether to integrate helppacks into the product's installer
5352 AC_MSG_CHECKING([for helppack integration])
5353 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5354 AC_MSG_RESULT([no integration])
5356 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5357 AC_MSG_RESULT([integration])
5360 AC_SUBST([ENABLE_HTMLHELP])
5361 AC_SUBST([HELP_OMINDEX_PAGE])
5362 AC_SUBST([HELP_ONLINE])
5363 # WITH_HELPPACKS is used only in configure
5365 dnl ===================================================================
5366 dnl Set up a different compiler to produce tools to run on the build
5367 dnl machine when doing cross-compilation
5368 dnl ===================================================================
5370 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5371 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5372 if test "$cross_compiling" = "yes"; then
5373 AC_MSG_CHECKING([for BUILD platform configuration])
5375 rm -rf CONF-FOR-BUILD config_build.mk
5376 mkdir CONF-FOR-BUILD
5377 # Here must be listed all files needed when running the configure script. In particular, also
5378 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5379 # keep them in the same order as there.
5380 (cd $SRC_ROOT && tar cf - \
5382 bin/get_config_variables \
5383 solenv/bin/getcompver.awk \
5384 solenv/inc/langlist.mk \
5387 config_host_lang.mk.in \
5389 bin/bffvalidator.sh.in \
5390 bin/odfvalidator.sh.in \
5391 bin/officeotron.sh.in \
5392 hardened_runtime.xcent.in \
5393 instsetoo_native/util/openoffice.lst.in \
5395 sysui/desktop/macosx/Info.plist.in \
5396 .vscode/vs-code-template.code-workspace.in \
5398 | (cd CONF-FOR-BUILD && tar xf -)
5399 cp configure CONF-FOR-BUILD
5400 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5402 unset COM USING_X11 OS CPUNAME
5403 unset CC CXX SYSBASE CFLAGS
5404 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5405 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5406 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5407 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5408 if test -n "$CC_FOR_BUILD"; then
5409 export CC="$CC_FOR_BUILD"
5410 CC_BASE=`first_arg_basename "$CC"`
5412 if test -n "$CXX_FOR_BUILD"; then
5413 export CXX="$CXX_FOR_BUILD"
5414 CXX_BASE=`first_arg_basename "$CXX"`
5416 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5419 # Handle host configuration, which affects the cross-toolset too
5421 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5422 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5423 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5424 if test -n "$ENABLE_JAVA"; then
5426 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5428 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5429 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5432 if test -z "$with_jdk_home"; then
5433 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.])
5438 sub_conf_opts="$sub_conf_opts --without-java"
5440 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5441 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5442 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5443 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5444 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5445 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5447 # Don't bother having configure look for stuff not needed for the build platform anyway
5448 sub_conf_defaults=" \
5449 --build="$build_alias" \
5450 --disable-cairo-canvas \
5452 --disable-firebird-sdbc \
5454 --disable-gstreamer-1-0 \
5457 --disable-mariadb-sdbc \
5459 --disable-online-update \
5461 --disable-pdfimport \
5462 --disable-postgresql-sdbc \
5464 --enable-icecream="$enable_icecream" \
5467 --with-parallelism="$with_parallelism" \
5468 --with-theme="$with_theme" \
5469 --with-tls=openssl \
5471 echo " Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5473 $sub_conf_defaults \
5475 $with_build_platform_configure_options \
5477 2>&1 | sed -e 's/^/ /'
5478 if test [${PIPESTATUS[0]}] -ne 0; then
5479 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5482 # filter permitted build targets
5483 PERMITTED_BUILD_TARGETS="
5516 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5517 # newlined lists, to use grep as a filter
5518 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5519 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5520 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5521 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5523 cp config_host.mk ../config_build.mk
5524 cp config_host_lang.mk ../config_build_lang.mk
5525 mv config.log ../config.Build.log
5526 mkdir -p ../config_build
5527 mv config_host/*.h ../config_build
5528 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5530 # all these will get a _FOR_BUILD postfix
5531 DIRECT_FOR_BUILD_SETTINGS="
5542 LIBO_URE_MISC_FOLDER
5548 # these overwrite host config with build config
5549 OVERWRITING_SETTINGS="
5554 JAVA_CLASSPATH_NOT_SET
5562 # these need some special handling
5563 EXTRA_HANDLED_SETTINGS="
5570 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5574 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5575 echo "$line" >>build-config
5577 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5579 VV=`eval "echo $VV"`
5580 if test -n "$VV"; then
5581 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5582 echo "$line" >>build-config
5586 for V in $OVERWRITING_SETTINGS; do
5588 VV=`eval "echo $VV"`
5589 if test -n "$VV"; then
5590 line=${V}='${'${V}:-$VV'}'
5591 echo "$line" >>build-config
5595 for V in INSTDIR INSTROOT WORKDIR; do
5597 VV=`eval "echo $VV"`
5598 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5599 if test -n "$VV"; then
5600 line="${V}_FOR_BUILD='$VV'"
5601 echo "$line" >>build-config
5606 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5607 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])
5608 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5609 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5611 eval `cat CONF-FOR-BUILD/build-config`
5613 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5615 rm -rf CONF-FOR-BUILD
5619 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5620 CXX_FOR_BUILD="$CXX"
5621 INSTDIR_FOR_BUILD="$INSTDIR"
5622 INSTROOT_FOR_BUILD="$INSTROOT"
5623 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5624 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5625 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5626 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5627 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5628 WORKDIR_FOR_BUILD="$WORKDIR"
5630 AC_SUBST(OS_FOR_BUILD)
5631 AC_SUBST(INSTDIR_FOR_BUILD)
5632 AC_SUBST(INSTROOT_FOR_BUILD)
5633 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5634 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5635 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5636 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5637 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5638 AC_SUBST(WORKDIR_FOR_BUILD)
5639 AC_SUBST(CC_FOR_BUILD)
5640 AC_SUBST(CXX_FOR_BUILD)
5641 AC_SUBST(CPPU_ENV_FOR_BUILD)
5643 dnl ===================================================================
5644 dnl Check for syslog header
5645 dnl ===================================================================
5646 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5648 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5649 dnl ===================================================================
5650 AC_MSG_CHECKING([whether to turn warnings to errors])
5651 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5652 ENABLE_WERROR="TRUE"
5653 PYTHONWARNINGS="error"
5654 AC_MSG_RESULT([yes])
5656 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5657 ENABLE_WERROR="TRUE"
5658 PYTHONWARNINGS="error"
5659 AC_MSG_RESULT([yes])
5664 AC_SUBST(ENABLE_WERROR)
5665 AC_SUBST(PYTHONWARNINGS)
5667 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5668 dnl ===================================================================
5669 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5670 if test -z "$enable_assert_always_abort"; then
5671 if test "$ENABLE_DEBUG" = TRUE; then
5672 enable_assert_always_abort=yes
5674 enable_assert_always_abort=no
5677 if test "$enable_assert_always_abort" = "yes"; then
5678 ASSERT_ALWAYS_ABORT="TRUE"
5679 AC_MSG_RESULT([yes])
5681 ASSERT_ALWAYS_ABORT="FALSE"
5684 AC_SUBST(ASSERT_ALWAYS_ABORT)
5686 # Determine whether to use ooenv for the instdir installation
5687 # ===================================================================
5688 if test $_os != "WINNT" -a $_os != "Darwin"; then
5689 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5690 if test -z "$enable_ooenv"; then
5691 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5697 if test "$enable_ooenv" = "no"; then
5701 AC_MSG_RESULT([yes])
5704 AC_SUBST(ENABLE_OOENV)
5706 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5707 if test "$enable_qt5" = "no"; then
5708 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5714 dnl ===================================================================
5715 dnl check for cups support
5716 dnl ===================================================================
5718 AC_MSG_CHECKING([whether to enable CUPS support])
5719 if test "$test_cups" = yes -a "$enable_cups" != no; then
5721 AC_MSG_RESULT([yes])
5723 AC_MSG_CHECKING([whether cups support is present])
5724 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5725 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5726 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5727 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5733 AC_SUBST(ENABLE_CUPS)
5736 if test "$using_freetype_fontconfig" = yes; then
5737 AC_MSG_CHECKING([which fontconfig to use])
5739 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5740 AC_MSG_RESULT([external])
5741 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5742 SYSTEM_FONTCONFIG=TRUE
5743 FilterLibs "${FONTCONFIG_LIBS}"
5744 FONTCONFIG_LIBS="${filteredlibs}"
5745 elif test "$using_freetype_fontconfig" = yes; then
5746 AC_MSG_RESULT([internal])
5747 BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5749 AC_SUBST(FONTCONFIG_CFLAGS)
5750 AC_SUBST(FONTCONFIG_LIBS)
5751 AC_SUBST([SYSTEM_FONTCONFIG])
5753 dnl whether to find & fetch external tarballs?
5754 dnl ===================================================================
5755 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5756 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5757 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5759 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5762 if test -z "$TARFILE_LOCATION"; then
5763 if test -d "$SRC_ROOT/src" ; then
5764 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5765 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5767 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5769 AbsolutePath "$TARFILE_LOCATION"
5770 PathFormat "${absolute_path}"
5771 TARFILE_LOCATION="${formatted_path}"
5773 AC_SUBST(TARFILE_LOCATION)
5775 AC_MSG_CHECKING([whether we want to fetch tarballs])
5776 if test "$enable_fetch_external" != "no"; then
5777 if test "$with_all_tarballs" = "yes"; then
5778 AC_MSG_RESULT([yes, all of them])
5779 DO_FETCH_TARBALLS="ALL"
5781 AC_MSG_RESULT([yes, if we use them])
5782 DO_FETCH_TARBALLS="TRUE"
5788 AC_SUBST(DO_FETCH_TARBALLS)
5790 dnl Test whether to include MySpell dictionaries
5791 dnl ===================================================================
5792 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5793 if test "$with_myspell_dicts" = "yes"; then
5794 AC_MSG_RESULT([yes])
5795 WITH_MYSPELL_DICTS=TRUE
5796 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5797 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5802 AC_SUBST(WITH_MYSPELL_DICTS)
5804 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5805 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5806 if test "$with_system_dicts" = yes; then
5807 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5809 with_system_dicts=no
5812 AC_MSG_CHECKING([whether to use dicts from external paths])
5813 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5814 AC_MSG_RESULT([yes])
5816 AC_MSG_CHECKING([for spelling dictionary directory])
5817 if test -n "$with_external_dict_dir"; then
5818 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5820 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5821 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5822 DICT_SYSTEM_DIR=file:///usr/share/myspell
5825 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5826 AC_MSG_CHECKING([for hyphenation patterns directory])
5827 if test -n "$with_external_hyph_dir"; then
5828 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5830 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5832 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5833 AC_MSG_CHECKING([for thesaurus directory])
5834 if test -n "$with_external_thes_dir"; then
5835 THES_SYSTEM_DIR=file://$with_external_thes_dir
5837 THES_SYSTEM_DIR=file:///usr/share/mythes
5839 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5844 AC_SUBST(SYSTEM_DICTS)
5845 AC_SUBST(DICT_SYSTEM_DIR)
5846 AC_SUBST(HYPH_SYSTEM_DIR)
5847 AC_SUBST(THES_SYSTEM_DIR)
5849 dnl ===================================================================
5850 dnl Precompiled headers.
5852 AC_MSG_CHECKING([whether to enable pch feature])
5853 if test -z "$enable_pch"; then
5854 if test "$_os" = "WINNT"; then
5855 # Enabled by default on Windows.
5861 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5862 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5864 if test "$enable_pch" = "system"; then
5866 AC_MSG_RESULT([yes (system headers)])
5867 elif test "$enable_pch" = "base"; then
5869 AC_MSG_RESULT([yes (system and base headers)])
5870 elif test "$enable_pch" = "normal"; then
5872 AC_MSG_RESULT([yes (normal)])
5873 elif test "$enable_pch" = "full"; then
5875 AC_MSG_RESULT([yes (full)])
5876 elif test "$enable_pch" = "yes"; then
5877 # Pick a suitable default.
5878 if test "$GCC" = "yes"; then
5879 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5880 # while making the PCHs larger and rebuilds more likely.
5882 AC_MSG_RESULT([yes (system and base headers)])
5884 # With MSVC the highest level makes a significant difference,
5885 # and it was the default when there used to be no PCH levels.
5887 AC_MSG_RESULT([yes (full)])
5889 elif test "$enable_pch" = "no"; then
5892 AC_MSG_ERROR([Unknown value for --enable-pch])
5894 AC_SUBST(ENABLE_PCH)
5895 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5896 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5897 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5898 if test "$CCACHE_BIN" != "not found"; then
5899 AC_MSG_CHECKING([ccache version])
5900 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5901 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5902 AC_MSG_RESULT([$CCACHE_VERSION])
5903 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5904 if test "$CCACHE_NUMVER" -gt "030701"; then
5905 AC_MSG_RESULT([yes])
5907 AC_MSG_RESULT([no (not newer than 3.7.1)])
5913 PCH_INSTANTIATE_TEMPLATES=
5914 if test -n "$ENABLE_PCH"; then
5915 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5917 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5918 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5920 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5926 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5928 BUILDING_PCH_WITH_OBJ=
5929 if test -n "$ENABLE_PCH"; then
5930 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5932 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5933 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5935 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5941 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5945 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5946 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5948 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5949 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5951 PCH_CODEGEN="-fpch-codegen"
5952 PCH_NO_CODEGEN="-fno-pch-codegen"
5955 if test -n "$PCH_CODEGEN"; then
5961 AC_SUBST(PCH_CODEGEN)
5962 AC_SUBST(PCH_NO_CODEGEN)
5964 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5965 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5967 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5968 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5970 if test -n "$PCH_DEBUGINFO"; then
5976 AC_SUBST(PCH_DEBUGINFO)
5980 AC_MSG_CHECKING([the GNU Make version])
5981 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5982 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5983 if test "$_make_longver" -ge "038200"; then
5984 AC_MSG_RESULT([$GNUMAKE $_make_version])
5986 elif test "$_make_longver" -ge "038100"; then
5987 if test "$build_os" = "cygwin"; then
5988 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5990 AC_MSG_RESULT([$GNUMAKE $_make_version])
5992 dnl ===================================================================
5993 dnl Search all the common names for sha1sum
5994 dnl ===================================================================
5995 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5996 if test -z "$SHA1SUM"; then
5997 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5998 elif test "$SHA1SUM" = "openssl"; then
5999 SHA1SUM="openssl sha1"
6001 AC_MSG_CHECKING([for GNU Make bug 20033])
6002 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6003 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6004 A := \$(wildcard *.a)
6008 <TAB>@echo survived bug20033.
6012 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6025 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6026 <TAB>\$(call d1,\$(CHECKSUM)),\
6027 <TAB>\$(call d2,\$(CHECKSUM)))
6029 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6030 no_parallelism_make="YES"
6031 AC_MSG_RESULT([yes, disable parallelism])
6033 AC_MSG_RESULT([no, keep parallelism enabled])
6035 rm -rf $TESTGMAKEBUG20033
6037 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6040 # find if gnumake support file function
6041 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6042 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6043 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6044 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6046 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6047 \$(file >test.txt,Success )
6054 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6055 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6056 HAVE_GNUMAKE_FILE_FUNC=TRUE
6057 AC_MSG_RESULT([yes])
6061 rm -rf $TESTGMAKEFILEFUNC
6062 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6064 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6066 if test "$_make_ver_check" = ""; then
6070 HAVE_LD_HASH_STYLE=FALSE
6071 WITH_LINKER_HASH_STYLE=
6072 AC_MSG_CHECKING([for --hash-style gcc linker support])
6073 if test "$GCC" = "yes"; then
6074 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6075 hash_styles="gnu sysv"
6076 elif test "$with_linker_hash_style" = "no"; then
6079 hash_styles="$with_linker_hash_style"
6082 for hash_style in $hash_styles; do
6083 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6084 hash_style_ldflags_save=$LDFLAGS
6085 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6087 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6094 HAVE_LD_HASH_STYLE=TRUE
6095 WITH_LINKER_HASH_STYLE=$hash_style
6097 [HAVE_LD_HASH_STYLE=FALSE],
6098 [HAVE_LD_HASH_STYLE=FALSE])
6099 LDFLAGS=$hash_style_ldflags_save
6102 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6103 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6107 LDFLAGS=$hash_style_ldflags_save
6111 AC_SUBST(HAVE_LD_HASH_STYLE)
6112 AC_SUBST(WITH_LINKER_HASH_STYLE)
6114 dnl ===================================================================
6115 dnl Check whether there's a Perl version available.
6116 dnl ===================================================================
6117 if test -z "$with_perl_home"; then
6118 AC_PATH_PROG(PERL, perl)
6120 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6121 _perl_path="$with_perl_home/bin/perl"
6122 if test -x "$_perl_path"; then
6125 AC_MSG_ERROR([$_perl_path not found])
6129 dnl ===================================================================
6130 dnl Testing for Perl version 5 or greater.
6131 dnl $] is the Perl version variable, it is returned as an integer
6132 dnl ===================================================================
6133 if test "$PERL"; then
6134 AC_MSG_CHECKING([the Perl version])
6135 ${PERL} -e "exit($]);"
6137 if test "$_perl_version" -lt 5; then
6138 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6140 AC_MSG_RESULT([Perl $_perl_version])
6142 AC_MSG_ERROR([Perl not found, install Perl 5])
6145 dnl ===================================================================
6146 dnl Testing for required Perl modules
6147 dnl ===================================================================
6149 AC_MSG_CHECKING([for required Perl modules])
6150 perl_use_string="use Cwd ; use Digest::MD5"
6151 if test "$_os" = "WINNT"; then
6152 if test -n "$PKGFORMAT"; then
6153 for i in $PKGFORMAT; do
6156 # for getting fonts versions to use in MSI
6157 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6163 if test "$with_system_hsqldb" = "yes"; then
6164 perl_use_string="$perl_use_string ; use Archive::Zip"
6166 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6167 # OpenSSL needs that to build
6168 perl_use_string="$perl_use_string ; use FindBin"
6170 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6171 AC_MSG_RESULT([all modules found])
6173 AC_MSG_RESULT([failed to find some modules])
6174 # Find out which modules are missing.
6175 for i in $perl_use_string; do
6176 if test "$i" != "use" -a "$i" != ";"; then
6177 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6178 missing_perl_modules="$missing_perl_modules $i"
6183 The missing Perl modules are: $missing_perl_modules
6184 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6187 dnl ===================================================================
6188 dnl Check for pkg-config
6189 dnl ===================================================================
6190 if test "$_os" != "WINNT"; then
6194 if test "$_os" != "WINNT"; then
6196 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6197 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6198 # explicitly. Or put /path/to/compiler in PATH yourself.
6200 # Use wrappers for LTO
6201 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6202 AC_CHECK_TOOL(AR,gcc-ar)
6203 AC_CHECK_TOOL(NM,gcc-nm)
6204 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6206 AC_CHECK_TOOL(AR,ar)
6207 AC_CHECK_TOOL(NM,nm)
6208 AC_CHECK_TOOL(RANLIB,ranlib)
6210 AC_CHECK_TOOL(OBJDUMP,objdump)
6211 AC_CHECK_TOOL(READELF,readelf)
6212 AC_CHECK_TOOL(STRIP,strip)
6218 AC_SUBST(PKG_CONFIG)
6219 AC_SUBST(PKG_CONFIG_PATH)
6220 AC_SUBST(PKG_CONFIG_LIBDIR)
6225 dnl ===================================================================
6226 dnl pkg-config checks on macOS
6227 dnl ===================================================================
6229 if test $_os = Darwin; then
6230 AC_MSG_CHECKING([for bogus pkg-config])
6231 if test -n "$PKG_CONFIG"; then
6232 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6233 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6235 if test "$enable_bogus_pkg_config" = "yes"; then
6236 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6238 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.])
6242 AC_MSG_RESULT([no, good])
6248 # Return value: $csctest
6252 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6253 if test -n "$regvalue"; then
6261 # Return value: $altest
6265 # We need this check to detect 4.6.1 or above.
6266 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6267 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6268 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6274 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6275 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6276 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6287 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6288 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6289 if test -n "$regvalue"; then
6296 find_winsdk_version()
6298 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6299 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6301 unset winsdktest winsdkbinsubdir winsdklibsubdir
6305 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6306 if test -n "$regvalue"; then
6307 winsdktest=$regvalue
6308 winsdklibsubdir=win8
6313 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6314 if test -n "$regvalue"; then
6315 winsdktest=$regvalue
6316 winsdklibsubdir=winv6.3
6321 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6322 if test -n "$regvalue"; then
6323 winsdktest=$regvalue
6324 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6325 if test -n "$regvalue"; then
6326 winsdkbinsubdir="$regvalue".0
6327 winsdklibsubdir=$winsdkbinsubdir
6328 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6329 local tmppath_unix=$(cygpath -u "$tmppath")
6330 # test exist the SDK path
6331 if test -d "$tmppath_unix"; then
6332 # when path is convertible to a short path then path is okay
6333 cygpath -d "$tmppath" >/dev/null 2>&1
6334 if test $? -ne 0; then
6335 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6338 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6349 # Return value: From find_winsdk_version
6353 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6354 find_winsdk_version $ver
6355 if test -n "$winsdktest"; then
6363 # Return value: $msmdir
6365 AC_MSG_CHECKING([for MSVC merge modules directory])
6369 dnl Order my_msm_files in increasing order. Then check the directories returned
6370 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6371 dnl the result will be the highest MSM version found in the highest directory.
6375 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6378 for f in $my_msm_files; do
6379 echo "$as_me:$LINENO: searching for $f" >&5
6385 for f in ${my_msm_files}; do
6386 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6387 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6388 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6389 if test -e "$my_msm_dir${f}"; then
6397 if test -n "$msmdir"; then
6398 msmdir=`cygpath -m "$msmdir"`
6399 AC_MSG_RESULT([$msmdir])
6401 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6402 AC_MSG_FAILURE([not found])
6404 AC_MSG_WARN([not found (check config.log)])
6405 add_warning "MSM none of ${my_msm_files} found"
6410 find_msvc_x64_dlls()
6412 # Return value: $msvcdllpath, $msvcdlls
6414 AC_MSG_CHECKING([for MSVC x64 DLL path])
6416 dnl Order crtver in increasing order. Then check the directories returned by
6417 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6418 dnl the result will be the highest CRT version found in the highest directory.
6420 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6423 for crtver in 141 142 143; do
6424 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6425 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6426 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6427 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6433 AC_MSG_RESULT([$msvcdllpath])
6434 AC_MSG_CHECKING([for MSVC x64 DLLs])
6435 msvcdlls="msvcp140.dll vcruntime140.dll"
6436 for dll in $msvcdlls; do
6437 if ! test -f "$msvcdllpath/$dll"; then
6438 AC_MSG_FAILURE([missing $dll])
6441 AC_MSG_RESULT([found all ($msvcdlls)])
6444 dnl =========================================
6445 dnl Check for the Windows SDK.
6446 dnl =========================================
6447 if test "$_os" = "WINNT"; then
6448 AC_MSG_CHECKING([for Windows SDK])
6449 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6451 WINDOWS_SDK_HOME=$winsdktest
6453 # normalize if found
6454 if test -n "$WINDOWS_SDK_HOME"; then
6455 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6456 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6459 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6462 if test -n "$WINDOWS_SDK_HOME"; then
6463 # Remove a possible trailing backslash
6464 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6466 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6467 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6468 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6469 have_windows_sdk_headers=yes
6470 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6471 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6472 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6473 have_windows_sdk_headers=yes
6474 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6475 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6476 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6477 have_windows_sdk_headers=yes
6479 have_windows_sdk_headers=no
6482 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6483 have_windows_sdk_libs=yes
6484 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6485 have_windows_sdk_libs=yes
6487 have_windows_sdk_libs=no
6490 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6491 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6492 the Windows SDK are installed.])
6496 if test -z "$WINDOWS_SDK_HOME"; then
6497 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6498 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6499 WINDOWS_SDK_VERSION=80
6500 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6501 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6502 WINDOWS_SDK_VERSION=81
6503 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6504 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6505 WINDOWS_SDK_VERSION=10
6506 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6508 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6510 PathFormat "$WINDOWS_SDK_HOME"
6511 WINDOWS_SDK_HOME="$formatted_path"
6512 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6513 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6514 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6515 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6516 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6517 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6518 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6522 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6523 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6524 dnl but not in v8.0), so allow this to be overridden with a
6525 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6526 dnl and configuration error if no WiLangId.vbs is found would arguably be
6527 dnl better, but I do not know under which conditions exactly it is needed by
6529 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6530 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6531 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6532 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6533 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6534 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6536 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6537 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6538 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6540 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6541 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6542 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6545 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6546 if test -n "$with_package_format" -a "$with_package_format" != no; then
6547 for i in "$with_package_format"; do
6548 if test "$i" = "msi"; then
6549 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6550 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6557 AC_SUBST(WINDOWS_SDK_HOME)
6558 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6559 AC_SUBST(WINDOWS_SDK_VERSION)
6560 AC_SUBST(WINDOWS_SDK_WILANGID)
6562 if test "$build_os" = "cygwin"; then
6563 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6564 dnl dir, it also determines that dir's path w/o an arch segment if any,
6565 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6566 AC_MSG_CHECKING([for midl.exe])
6569 if test -n "$winsdkbinsubdir" \
6570 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6572 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6573 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6574 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6575 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6576 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6577 elif test -f "$winsdktest/Bin/midl.exe"; then
6578 MIDL_PATH=$winsdktest/Bin
6579 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6581 if test ! -f "$MIDL_PATH/midl.exe"; then
6582 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6584 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6587 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6588 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6590 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6591 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6592 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6593 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6594 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6595 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6596 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6597 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6598 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6599 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6600 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6601 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6603 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6607 AC_MSG_CHECKING([for csc.exe])
6609 if test -f "$csctest/csc.exe"; then
6612 if test ! -f "$CSC_PATH/csc.exe"; then
6613 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6615 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6618 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6621 AC_MSG_CHECKING([for al.exe])
6623 if test -n "$winsdkbinsubdir" \
6624 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6626 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6627 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6628 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6629 elif test -f "$winsdktest/Bin/al.exe"; then
6630 AL_PATH="$winsdktest/Bin"
6633 if test -z "$AL_PATH"; then
6635 if test -f "$altest/bin/al.exe"; then
6636 AL_PATH="$altest/bin"
6637 elif test -f "$altest/al.exe"; then
6641 if test ! -f "$AL_PATH/al.exe"; then
6642 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6644 AC_MSG_RESULT([$AL_PATH/al.exe])
6647 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6649 dnl Check mscoree.lib / .NET Framework dir
6650 AC_MSG_CHECKING(.NET Framework)
6652 PathFormat "$frametest"
6653 frametest="$formatted_path"
6654 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6655 DOTNET_FRAMEWORK_HOME="$frametest"
6658 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6659 DOTNET_FRAMEWORK_HOME="$winsdktest"
6662 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
6663 AC_MSG_ERROR([mscoree.lib not found])
6665 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6667 PathFormat "$MIDL_PATH"
6668 MIDL_PATH="$formatted_path"
6670 PathFormat "$AL_PATH"
6671 AL_PATH="$formatted_path"
6673 PathFormat "$DOTNET_FRAMEWORK_HOME"
6674 DOTNET_FRAMEWORK_HOME="$formatted_path"
6676 PathFormat "$CSC_PATH"
6677 CSC_PATH="$formatted_path"
6680 dnl ===================================================================
6681 dnl Testing for C++ compiler and version...
6682 dnl ===================================================================
6684 if test "$_os" != "WINNT"; then
6685 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6686 save_CXXFLAGS=$CXXFLAGS
6688 CXXFLAGS=$save_CXXFLAGS
6689 if test -z "$CXX_BASE"; then
6690 CXX_BASE=`first_arg_basename "$CXX"`
6694 dnl check for GNU C++ compiler version
6695 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6696 AC_MSG_CHECKING([the GNU C++ compiler version])
6698 _gpp_version=`$CXX -dumpversion`
6699 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6701 if test "$_gpp_majmin" -lt "700"; then
6702 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6704 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6707 dnl see https://code.google.com/p/android/issues/detail?id=41770
6711 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6712 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6713 #include <bits/c++config.h>]],[[
6714 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6715 && !defined(_GLIBCXX__PTHREADS) \
6716 && !defined(_GLIBCXX_HAS_GTHREADS)
6719 ]])],[AC_MSG_RESULT([yes])
6720 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6722 if test $glibcxx_threads = yes; then
6723 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6726 AC_SUBST(BOOST_CXXFLAGS)
6729 # prefx CXX with ccache if needed
6731 if test "$CCACHE" != ""; then
6732 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6734 save_CXXFLAGS=$CXXFLAGS
6735 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6736 dnl an empty program will do, we're checking the compiler flags
6737 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6738 [use_ccache=yes], [use_ccache=no])
6739 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6740 AC_MSG_RESULT([yes])
6743 CXX_BASE="ccache $CXX_BASE"
6746 CXXFLAGS=$save_CXXFLAGS
6750 dnl ===================================================================
6751 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6752 dnl ===================================================================
6754 if test "$_os" != "WINNT"; then
6757 dnl Check whether there's a C pre-processor.
6762 dnl ===================================================================
6763 dnl Find integral type sizes and alignments
6764 dnl ===================================================================
6766 if test "$_os" != "WINNT"; then
6768 AC_CHECK_SIZEOF(long)
6769 AC_CHECK_SIZEOF(short)
6770 AC_CHECK_SIZEOF(int)
6771 AC_CHECK_SIZEOF(long long)
6772 AC_CHECK_SIZEOF(double)
6773 AC_CHECK_SIZEOF(void*)
6774 AC_CHECK_SIZEOF(size_t)
6776 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6777 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6778 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6779 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6780 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6781 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6783 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6784 m4_pattern_allow([AC_CHECK_ALIGNOF])
6785 m4_ifdef([AC_CHECK_ALIGNOF],
6787 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6788 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6789 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6790 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6793 case "$_os-$host_cpu" in
6795 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6796 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6797 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6798 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6801 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6802 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6803 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6804 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6807 if test -z "$ac_cv_alignof_short" -o \
6808 -z "$ac_cv_alignof_int" -o \
6809 -z "$ac_cv_alignof_long" -o \
6810 -z "$ac_cv_alignof_double"; then
6811 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.])
6817 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6818 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6819 if test $ac_cv_sizeof_long -eq 8; then
6820 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6821 elif test $ac_cv_sizeof_double -eq 8; then
6822 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6824 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6827 dnl Check for large file support
6829 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6830 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6832 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6833 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6837 SAL_TYPES_SIZEOFSHORT=2
6838 SAL_TYPES_SIZEOFINT=4
6839 SAL_TYPES_SIZEOFLONG=4
6840 SAL_TYPES_SIZEOFLONGLONG=8
6841 if test $WIN_HOST_BITS -eq 32; then
6842 SAL_TYPES_SIZEOFPOINTER=4
6845 SAL_TYPES_SIZEOFPOINTER=8
6848 SAL_TYPES_ALIGNMENT2=2
6849 SAL_TYPES_ALIGNMENT4=4
6850 SAL_TYPES_ALIGNMENT8=8
6853 AC_SUBST(LFS_CFLAGS)
6854 AC_SUBST(SIZEOF_SIZE_T)
6856 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6857 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6858 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6859 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6860 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6861 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6862 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6863 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6865 dnl ===================================================================
6866 dnl Check whether to enable runtime optimizations
6867 dnl ===================================================================
6868 ENABLE_RUNTIME_OPTIMIZATIONS=
6869 AC_MSG_CHECKING([whether to enable runtime optimizations])
6870 if test -z "$enable_runtime_optimizations"; then
6874 enable_runtime_optimizations=no
6880 if test "$enable_runtime_optimizations" != no; then
6881 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6882 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6883 AC_MSG_RESULT([yes])
6887 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6889 dnl ===================================================================
6890 dnl Check if valgrind headers are available
6891 dnl ===================================================================
6893 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6894 prev_cppflags=$CPPFLAGS
6895 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6896 # or where does it come from?
6897 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6898 AC_CHECK_HEADER([valgrind/valgrind.h],
6899 [ENABLE_VALGRIND=TRUE])
6900 CPPFLAGS=$prev_cppflags
6902 AC_SUBST([ENABLE_VALGRIND])
6903 if test -z "$ENABLE_VALGRIND"; then
6904 if test "$with_valgrind" = yes; then
6905 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6909 AC_SUBST([VALGRIND_CFLAGS])
6912 dnl ===================================================================
6913 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6914 dnl ===================================================================
6916 # We need at least the sys/sdt.h include header.
6917 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6918 if test "$SDT_H_FOUND" = "TRUE"; then
6919 # Found sys/sdt.h header, now make sure the c++ compiler works.
6920 # Old g++ versions had problems with probes in constructors/destructors.
6921 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6923 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6924 #include <sys/sdt.h>
6932 ProbeClass(int& v, const char *n) : ref(v), name(n)
6934 DTRACE_PROBE2(_test_, cons, name, ref);
6937 void method(int min)
6939 DTRACE_PROBE3(_test_, meth, name, ref, min);
6945 DTRACE_PROBE2(_test_, dest, name, ref);
6950 DTRACE_PROBE1(_test_, call, i);
6951 ProbeClass inst = ProbeClass(i, "call");
6953 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6954 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6957 AC_CONFIG_HEADERS([config_host/config_probes.h])
6959 dnl ===================================================================
6961 dnl ===================================================================
6962 HAVE_GCC_STACK_CLASH_PROTECTION=
6963 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6964 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6966 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6968 [AC_LANG_PROGRAM(, [[return 0;]])],
6969 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6970 [AC_MSG_RESULT([no])])
6973 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6975 CFLAGS="$CFLAGS -Werror -mno-avx"
6976 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6978 if test "$HAVE_GCC_AVX" = "TRUE"; then
6979 AC_MSG_RESULT([yes])
6984 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6985 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6987 if (__sync_add_and_fetch(&v, 1) != 1 ||
6988 __sync_sub_and_fetch(&v, 1) != 0)
6990 __sync_synchronize();
6991 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6995 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6996 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6997 AC_MSG_RESULT([yes])
6998 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7003 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7005 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7008 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7010 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7011 AC_MSG_RESULT([yes])
7012 ], [AC_MSG_RESULT([no])])
7015 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7017 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7020 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7022 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7023 AC_MSG_RESULT([yes])
7024 ], [AC_MSG_RESULT([no])])
7027 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7029 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7031 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7033 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7034 AC_MSG_RESULT([yes])
7035 ], [AC_MSG_RESULT([no])])
7038 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7040 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7043 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7045 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7046 AC_MSG_RESULT([yes])
7047 ], [AC_MSG_RESULT([no])])
7050 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7052 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7055 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7057 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7058 AC_MSG_RESULT([yes])
7059 ], [AC_MSG_RESULT([no])])
7062 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7064 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7066 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7068 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7069 AC_MSG_RESULT([yes])
7070 ], [AC_MSG_RESULT([no])])
7073 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7075 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7077 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7079 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7080 AC_MSG_RESULT([yes])
7081 ], [AC_MSG_RESULT([no])])
7084 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7086 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7088 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7090 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7091 AC_MSG_RESULT([yes])
7092 ], [AC_MSG_RESULT([no])])
7095 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7097 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7100 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7102 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7103 AC_MSG_RESULT([yes])
7104 ], [AC_MSG_RESULT([no])])
7107 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7109 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7112 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7114 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7115 AC_MSG_RESULT([yes])
7116 ], [AC_MSG_RESULT([no])])
7120 AC_SUBST(HAVE_GCC_AVX)
7121 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7122 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7124 dnl ===================================================================
7125 dnl Identify the C++ library
7126 dnl ===================================================================
7128 AC_MSG_CHECKING([what the C++ library is])
7131 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7137 [CPP_LIBRARY=GLIBCXX
7138 cpp_library_name="GNU libstdc++"
7141 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7143 #ifndef _LIBCPP_VERSION
7148 cpp_library_name="LLVM libc++"
7149 AC_DEFINE([HAVE_LIBCXX])
7151 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7158 cpp_library_name="Microsoft"
7160 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7161 AC_MSG_RESULT([$cpp_library_name])
7163 AC_SUBST([HAVE_LIBSTDCPP])
7165 dnl ===================================================================
7167 dnl ===================================================================
7168 AC_PATH_PROG(GPERF, gperf)
7169 if test -z "$GPERF"; then
7170 AC_MSG_ERROR([gperf not found but needed. Install it.])
7172 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7173 GPERF=`cygpath -m $GPERF`
7175 AC_MSG_CHECKING([whether gperf is new enough])
7176 my_gperf_ver1=$($GPERF --version | head -n 1)
7177 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7178 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7179 if test "$my_gperf_ver3" -ge 301; then
7180 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7182 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7186 dnl ===================================================================
7187 dnl Check for system libcmis
7188 dnl ===================================================================
7189 # libcmis requires curl and we can't build curl for iOS
7190 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7191 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7196 AC_SUBST(ENABLE_LIBCMIS)
7198 dnl ===================================================================
7200 dnl ===================================================================
7202 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7204 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7205 if test "$with_latest_c__" = yes; then
7206 CXXFLAGS_CXX11=-std:c++latest
7208 CXXFLAGS_CXX11=-std:c++17
7210 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7211 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7212 my_flags='-std=c++17 -std=c++1z'
7213 if test "$with_latest_c__" = yes; then
7214 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7216 for flag in $my_flags; do
7217 if test "$COM" = MSC; then
7218 flag="-Xclang $flag"
7220 save_CXXFLAGS=$CXXFLAGS
7221 CXXFLAGS="$CXXFLAGS $flag -Werror"
7222 if test "$SYSTEM_LIBCMIS" = TRUE; then
7223 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7226 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7227 #include <algorithm>
7228 #include <functional>
7231 #if defined SYSTEM_LIBCMIS
7232 // See ucb/source/ucp/cmis/auth_provider.hxx:
7233 #if !defined __clang__
7234 #pragma GCC diagnostic push
7235 #pragma GCC diagnostic ignored "-Wdeprecated"
7236 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7238 #include <libcmis/libcmis.hxx>
7239 #if !defined __clang__
7240 #pragma GCC diagnostic pop
7244 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7245 std::sort(v.begin(), v.end(), fn);
7247 ]])],[CXXFLAGS_CXX11=$flag])
7249 CXXFLAGS=$save_CXXFLAGS
7250 if test -n "$CXXFLAGS_CXX11"; then
7255 if test -n "$CXXFLAGS_CXX11"; then
7256 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7260 AC_SUBST(CXXFLAGS_CXX11)
7262 if test "$GCC" = "yes"; then
7263 save_CXXFLAGS=$CXXFLAGS
7264 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7266 CXXFLAGS=$save_CXXFLAGS
7267 AC_SUBST(ATOMIC_LIB)
7270 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7271 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7272 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7273 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7274 dnl again towards 4.7.2:
7275 if test $CPP_LIBRARY = GLIBCXX; then
7276 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7278 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7280 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7281 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7282 // GCC 4.7.0: 20120322
7283 // GCC 4.7.1: 20120614
7284 // and using a range check is not possible as the mapping between
7285 // __GLIBCXX__ values and GCC versions is not monotonic
7290 ]])], [AC_MSG_RESULT(no, ok)],
7291 [AC_MSG_ERROR(yes)])
7295 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7296 save_CXXFLAGS=$CXXFLAGS
7297 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7300 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7303 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7319 a thinga[]={{0,0}, {1,1}};
7320 b thingb[]={{0,0}, {1,1}};
7321 size_t i = sizeof(sal_n_array_size(thinga));
7322 size_t j = sizeof(sal_n_array_size(thingb));
7323 return !(i != 0 && j != 0);
7325 ], [ AC_MSG_RESULT(yes) ],
7326 [ AC_MSG_ERROR(no)])
7328 CXXFLAGS=$save_CXXFLAGS
7330 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7331 if test "$GCC" = yes; then
7332 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7334 save_CXXFLAGS=$CXXFLAGS
7335 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7336 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7337 CXXFLAGS=$save_CXXFLAGS
7339 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7340 AC_MSG_RESULT([yes])
7345 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7347 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7348 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7349 dnl from consteval constructor initializing const variable",
7350 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
7351 dnl expression' with consteval constructor", or <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
7352 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
7353 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'":
7355 save_CXXFLAGS=$CXXFLAGS
7356 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7357 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7359 consteval S() { i = 1; }
7364 struct S1 { consteval S1(int) {} };
7379 return (s.i == 1) ? 0 : 1;
7381 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7382 AC_MSG_RESULT([yes])
7383 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7384 CXXFLAGS=$save_CXXFLAGS
7387 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7389 save_CXXFLAGS=$CXXFLAGS
7390 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7391 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7392 #include <algorithm>
7393 #include <initializer_list>
7395 template<typename T> class S {
7399 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7401 constinit S<int> s{3, 2, 1};
7403 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7404 AC_MSG_RESULT([yes])
7405 ], [AC_MSG_RESULT([no])])
7406 CXXFLAGS=$save_CXXFLAGS
7409 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7411 save_CXXFLAGS=$CXXFLAGS
7412 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7415 #include <type_traits>
7416 // Don't check size_type directly, as it was called index_type before P1872R0:
7417 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7419 AC_DEFINE([HAVE_CPP_SPAN],[1])
7420 AC_MSG_RESULT([yes])
7421 ], [AC_MSG_RESULT([no])])
7422 CXXFLAGS=$save_CXXFLAGS
7425 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7427 save_CXXFLAGS=$CXXFLAGS
7428 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7429 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7430 struct S1 { S1(S1 &&); };
7432 S1 f(S2 s) { return s; }
7434 AC_DEFINE([HAVE_P1155R3],[1])
7435 AC_MSG_RESULT([yes])
7436 ], [AC_MSG_RESULT([no])])
7437 CXXFLAGS=$save_CXXFLAGS
7440 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7441 dnl which is included in -Wextra anyway):
7442 HAVE_WDEPRECATED_COPY_DTOR=
7443 if test "$GCC" = yes; then
7444 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7446 save_CXXFLAGS=$CXXFLAGS
7447 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7448 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7449 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7450 AC_MSG_RESULT([yes])
7451 ], [AC_MSG_RESULT([no])])
7452 CXXFLAGS=$save_CXXFLAGS
7455 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7457 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7458 dnl uninitialized warning for code like
7461 dnl boost::optional<OString> * g(bool b) {
7462 dnl boost::optional<OString> o;
7464 dnl return new boost::optional<OString>(o);
7467 dnl (as is e.g. present, in a slightly more elaborate form, in
7468 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7469 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7470 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7471 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7472 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7474 save_CXXFLAGS=$CXXFLAGS
7475 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7476 if test "$ENABLE_OPTIMIZED" = TRUE; then
7477 CXXFLAGS="$CXXFLAGS -O2"
7479 CXXFLAGS="$CXXFLAGS -O0"
7481 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7490 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7491 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7497 char stg[sizeof (S1)];
7505 ]])], [AC_MSG_RESULT([no])], [
7506 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7507 AC_MSG_RESULT([yes])
7509 CXXFLAGS=$save_CXXFLAGS
7512 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7514 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7515 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7516 dnl hits us e.g. with GCC 10 and --enable-optimized at
7518 dnl In file included from include/rtl/string.hxx:49,
7519 dnl from include/rtl/ustring.hxx:43,
7520 dnl from include/osl/file.hxx:35,
7521 dnl from include/codemaker/global.hxx:28,
7522 dnl from include/codemaker/options.hxx:23,
7523 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7524 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7525 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,
7526 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,
7527 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,
7528 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7529 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7530 dnl 78 | memcpy( buffer, data, length );
7531 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7532 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7533 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7534 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7536 save_CXXFLAGS=$CXXFLAGS
7537 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7538 if test "$ENABLE_OPTIMIZED" = TRUE; then
7539 CXXFLAGS="$CXXFLAGS -O2"
7541 CXXFLAGS="$CXXFLAGS -O0"
7543 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7544 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7545 void fill(char const * begin, char const * end, char c);
7551 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7552 __builtin_strncpy(c.username, "root", sizeof(c.username));
7554 ]])], [AC_MSG_RESULT([no])], [
7555 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7556 AC_MSG_RESULT([yes])
7558 CXXFLAGS=$save_CXXFLAGS
7561 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7563 HAVE_DLLEXPORTINLINES=
7564 if test "$_os" = "WINNT"; then
7565 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7567 save_CXXFLAGS=$CXXFLAGS
7568 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7569 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7570 HAVE_DLLEXPORTINLINES=TRUE
7571 AC_MSG_RESULT([yes])
7572 ], [AC_MSG_RESULT([no])])
7573 CXXFLAGS=$save_CXXFLAGS
7576 AC_SUBST([HAVE_DLLEXPORTINLINES])
7578 dnl ===================================================================
7579 dnl CPU Intrinsics support - SSE, AVX
7580 dnl ===================================================================
7582 CXXFLAGS_INTRINSICS_SSE2=
7583 CXXFLAGS_INTRINSICS_SSSE3=
7584 CXXFLAGS_INTRINSICS_SSE41=
7585 CXXFLAGS_INTRINSICS_SSE42=
7586 CXXFLAGS_INTRINSICS_AVX=
7587 CXXFLAGS_INTRINSICS_AVX2=
7588 CXXFLAGS_INTRINSICS_AVX512=
7589 CXXFLAGS_INTRINSICS_AVX512F=
7590 CXXFLAGS_INTRINSICS_F16C=
7591 CXXFLAGS_INTRINSICS_FMA=
7593 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7594 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7601 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7602 flag_avx512f=-mavx512f
7606 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7607 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7608 # SSE2 seems to be SSE2+.
7609 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7610 # is not empty (and can be tested in gbuild).
7611 flag_sse2=-arch:SSE2
7612 flag_ssse3=-arch:SSE2
7613 flag_sse41=-arch:SSE2
7614 flag_sse42=-arch:SSE2
7616 flag_avx2=-arch:AVX2
7617 flag_avx512=-arch:AVX512
7618 flag_avx512f=-arch:AVX512
7619 # These are part of -arch:AVX2
7620 flag_f16c=-arch:AVX2
7624 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7626 save_CXXFLAGS=$CXXFLAGS
7627 CXXFLAGS="$CXXFLAGS $flag_sse2"
7628 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7629 #include <emmintrin.h>
7631 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7632 c = _mm_xor_si128 (a, b);
7636 [can_compile_sse2=yes],
7637 [can_compile_sse2=no])
7639 CXXFLAGS=$save_CXXFLAGS
7640 AC_MSG_RESULT([${can_compile_sse2}])
7641 if test "${can_compile_sse2}" = "yes" ; then
7642 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7645 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7647 save_CXXFLAGS=$CXXFLAGS
7648 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7649 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7650 #include <tmmintrin.h>
7652 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7653 c = _mm_maddubs_epi16 (a, b);
7657 [can_compile_ssse3=yes],
7658 [can_compile_ssse3=no])
7660 CXXFLAGS=$save_CXXFLAGS
7661 AC_MSG_RESULT([${can_compile_ssse3}])
7662 if test "${can_compile_ssse3}" = "yes" ; then
7663 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7666 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7668 save_CXXFLAGS=$CXXFLAGS
7669 CXXFLAGS="$CXXFLAGS $flag_sse41"
7670 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7671 #include <smmintrin.h>
7673 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7674 c = _mm_cmpeq_epi64 (a, b);
7678 [can_compile_sse41=yes],
7679 [can_compile_sse41=no])
7681 CXXFLAGS=$save_CXXFLAGS
7682 AC_MSG_RESULT([${can_compile_sse41}])
7683 if test "${can_compile_sse41}" = "yes" ; then
7684 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7687 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7689 save_CXXFLAGS=$CXXFLAGS
7690 CXXFLAGS="$CXXFLAGS $flag_sse42"
7691 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7692 #include <nmmintrin.h>
7694 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7695 c = _mm_cmpgt_epi64 (a, b);
7699 [can_compile_sse42=yes],
7700 [can_compile_sse42=no])
7702 CXXFLAGS=$save_CXXFLAGS
7703 AC_MSG_RESULT([${can_compile_sse42}])
7704 if test "${can_compile_sse42}" = "yes" ; then
7705 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7708 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7710 save_CXXFLAGS=$CXXFLAGS
7711 CXXFLAGS="$CXXFLAGS $flag_avx"
7712 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7713 #include <immintrin.h>
7715 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7716 c = _mm256_xor_ps(a, b);
7720 [can_compile_avx=yes],
7721 [can_compile_avx=no])
7723 CXXFLAGS=$save_CXXFLAGS
7724 AC_MSG_RESULT([${can_compile_avx}])
7725 if test "${can_compile_avx}" = "yes" ; then
7726 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7729 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7731 save_CXXFLAGS=$CXXFLAGS
7732 CXXFLAGS="$CXXFLAGS $flag_avx2"
7733 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7734 #include <immintrin.h>
7736 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7737 c = _mm256_maddubs_epi16(a, b);
7741 [can_compile_avx2=yes],
7742 [can_compile_avx2=no])
7744 CXXFLAGS=$save_CXXFLAGS
7745 AC_MSG_RESULT([${can_compile_avx2}])
7746 if test "${can_compile_avx2}" = "yes" ; then
7747 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7750 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7752 save_CXXFLAGS=$CXXFLAGS
7753 CXXFLAGS="$CXXFLAGS $flag_avx512"
7754 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7755 #include <immintrin.h>
7757 __m512i a = _mm512_loadu_si512(0);
7758 __m512d v1 = _mm512_load_pd(0);
7759 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7760 __m512d v2 = _mm512_abs_pd(v1);
7764 [can_compile_avx512=yes],
7765 [can_compile_avx512=no])
7767 CXXFLAGS=$save_CXXFLAGS
7768 AC_MSG_RESULT([${can_compile_avx512}])
7769 if test "${can_compile_avx512}" = "yes" ; then
7770 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7771 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7774 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7776 save_CXXFLAGS=$CXXFLAGS
7777 CXXFLAGS="$CXXFLAGS $flag_f16c"
7778 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7779 #include <immintrin.h>
7781 __m128i a = _mm_set1_epi32 (0);
7783 c = _mm_cvtph_ps(a);
7787 [can_compile_f16c=yes],
7788 [can_compile_f16c=no])
7790 CXXFLAGS=$save_CXXFLAGS
7791 AC_MSG_RESULT([${can_compile_f16c}])
7792 if test "${can_compile_f16c}" = "yes" ; then
7793 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7796 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7798 save_CXXFLAGS=$CXXFLAGS
7799 CXXFLAGS="$CXXFLAGS $flag_fma"
7800 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7801 #include <immintrin.h>
7803 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7804 d = _mm256_fmadd_ps(a, b, c);
7808 [can_compile_fma=yes],
7809 [can_compile_fma=no])
7811 CXXFLAGS=$save_CXXFLAGS
7812 AC_MSG_RESULT([${can_compile_fma}])
7813 if test "${can_compile_fma}" = "yes" ; then
7814 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7817 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7818 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7819 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7820 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7821 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7822 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7823 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7824 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7825 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7826 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7828 dnl ===================================================================
7829 dnl system stl sanity tests
7830 dnl ===================================================================
7831 if test "$_os" != "WINNT"; then
7835 save_CPPFLAGS="$CPPFLAGS"
7836 if test -n "$MACOSX_SDK_PATH"; then
7837 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7840 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7842 if test "$CPP_LIBRARY" = GLIBCXX; then
7843 dnl gcc#19664, gcc#22482, rhbz#162935
7844 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7845 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7846 AC_MSG_RESULT([$stlvisok])
7847 if test "$stlvisok" = "no"; then
7848 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7852 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7853 # when we don't make any dynamic libraries?
7854 if test "$DISABLE_DYNLOADING" = ""; then
7855 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7856 cat > conftestlib1.cc <<_ACEOF
7857 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7858 struct S2: S1<int> { virtual ~S2(); };
7861 cat > conftestlib2.cc <<_ACEOF
7862 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7863 struct S2: S1<int> { virtual ~S2(); };
7864 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7866 gccvisinlineshiddenok=yes
7867 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7868 gccvisinlineshiddenok=no
7870 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7871 dnl known to not work with -z defs (unsetting which makes the test
7873 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7874 if test "$COM_IS_CLANG" = TRUE; then
7875 for i in $CXX $CXXFLAGS; do
7878 my_linkflagsnoundefs=
7884 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7885 gccvisinlineshiddenok=no
7890 AC_MSG_RESULT([$gccvisinlineshiddenok])
7891 if test "$gccvisinlineshiddenok" = "no"; then
7892 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7896 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7897 cat >visibility.cxx <<_ACEOF
7898 #pragma GCC visibility push(hidden)
7899 struct __attribute__ ((visibility ("default"))) TestStruct {
7902 __attribute__ ((visibility ("default"))) void TestFunc() {
7906 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7911 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7914 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7926 rm -f visibility.s visibility.cxx
7928 AC_MSG_RESULT([$gccvisbroken])
7929 if test "$gccvisbroken" = "yes"; then
7930 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7933 CPPFLAGS="$save_CPPFLAGS"
7938 dnl ===================================================================
7940 dnl ===================================================================
7942 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7943 if test "$GCC" = "yes"; then
7944 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7946 save_CXXFLAGS=$CXXFLAGS
7947 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7948 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7949 CXXFLAGS=$save_CXXFLAGS
7951 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7952 AC_MSG_RESULT([yes])
7957 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7959 dnl ===================================================================
7960 dnl Compiler plugins
7961 dnl ===================================================================
7964 # currently only Clang
7966 if test "$COM_IS_CLANG" != "TRUE"; then
7967 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7968 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7969 enable_compiler_plugins=no
7973 COMPILER_PLUGINS_COM_IS_CLANG=
7974 if test "$COM_IS_CLANG" = "TRUE"; then
7975 if test -n "$enable_compiler_plugins"; then
7976 compiler_plugins="$enable_compiler_plugins"
7977 elif test -n "$ENABLE_DBGUTIL"; then
7978 compiler_plugins=test
7982 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7983 if test "$CLANGVER" -lt 50002; then
7984 if test "$compiler_plugins" = yes; then
7985 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7991 if test "$compiler_plugins" != "no"; then
7992 dnl The prefix where Clang resides, override to where Clang resides if
7993 dnl using a source build:
7994 if test -z "$CLANGDIR"; then
7995 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
7997 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7998 if test -z "$COMPILER_PLUGINS_CXX"; then
7999 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8001 clangbindir=$CLANGDIR/bin
8002 if test "$build_os" = "cygwin"; then
8003 clangbindir=$(cygpath -u "$clangbindir")
8005 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8006 if test -n "$LLVM_CONFIG"; then
8007 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8008 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8009 if test -z "$CLANGLIBDIR"; then
8010 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8012 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8013 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8014 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8015 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8016 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8018 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8019 clangobjdir=$($LLVM_CONFIG --obj-root)
8020 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8021 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8024 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8028 save_CPPFLAGS=$CPPFLAGS
8029 save_CXXFLAGS=$CXXFLAGS
8030 save_LDFLAGS=$LDFLAGS
8032 CXX=$COMPILER_PLUGINS_CXX
8033 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8034 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8035 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8036 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8037 [COMPILER_PLUGINS=TRUE],
8039 if test "$compiler_plugins" = "yes"; then
8040 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8042 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8043 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8046 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8047 dnl comment in compilerplugins/Makefile-clang.mk:
8048 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8050 AC_MSG_CHECKING([for clang libraries to use])
8051 if test -z "$CLANGTOOLLIBS"; then
8052 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8053 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8055 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8056 [[ clang::FullSourceLoc().dump(); ]])
8057 ],[CLANGTOOLLIBS="$LIBS"],[])
8059 if test -z "$CLANGTOOLLIBS"; then
8060 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8062 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8063 [[ clang::FullSourceLoc().dump(); ]])
8064 ],[CLANGTOOLLIBS="$LIBS"],[])
8066 AC_MSG_RESULT([$CLANGTOOLLIBS])
8067 if test -z "$CLANGTOOLLIBS"; then
8068 if test "$compiler_plugins" = "yes"; then
8069 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8071 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8072 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8076 if test -n "$COMPILER_PLUGINS"; then
8077 if test -z "$CLANGSYSINCLUDE"; then
8078 if test -n "$LLVM_CONFIG"; then
8079 # Path to the clang system headers (no idea if there's a better way to get it).
8080 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8087 CPPFLAGS=$save_CPPFLAGS
8088 CXXFLAGS=$save_CXXFLAGS
8089 LDFLAGS=$save_LDFLAGS
8093 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8094 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8100 [AC_MSG_RESULT([yes])
8101 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8102 [AC_MSG_RESULT([no])])
8103 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8106 if test "$enable_compiler_plugins" = "yes"; then
8107 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8110 COMPILER_PLUGINS_ANALYZER_PCH=
8111 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8112 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8114 AC_SUBST(COMPILER_PLUGINS)
8115 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8116 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8117 AC_SUBST(COMPILER_PLUGINS_CXX)
8118 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8119 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8120 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8121 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8123 AC_SUBST(CLANGLIBDIR)
8124 AC_SUBST(CLANGTOOLLIBS)
8125 AC_SUBST(CLANGSYSINCLUDE)
8127 # Plugin to help linker.
8128 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8129 # This makes --enable-lto build with clang work.
8132 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8133 AC_SUBST(HAVE_POSIX_FALLOCATE)
8135 JITC_PROCESSOR_TYPE=""
8136 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8137 # IBMs JDK needs this...
8138 JITC_PROCESSOR_TYPE=6
8139 export JITC_PROCESSOR_TYPE
8141 AC_SUBST([JITC_PROCESSOR_TYPE])
8143 # Misc Windows Stuff
8144 AC_ARG_WITH(ucrt-dir,
8145 AS_HELP_STRING([--with-ucrt-dir],
8146 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8147 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8148 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8149 Windows6.1-KB2999226-x64.msu
8150 Windows6.1-KB2999226-x86.msu
8151 Windows8.1-KB2999226-x64.msu
8152 Windows8.1-KB2999226-x86.msu
8153 Windows8-RT-KB2999226-x64.msu
8154 Windows8-RT-KB2999226-x86.msu
8155 A zip archive including those files is available from Microsoft site:
8156 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8159 UCRT_REDISTDIR="$with_ucrt_dir"
8160 if test $_os = "WINNT"; then
8162 for i in $PKGFORMAT; do
8163 if test "$i" = msi; then
8168 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8169 MSVC_DLLS="$msvcdlls"
8170 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8171 # MSVC 15.3 changed it to VC141
8172 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8173 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8174 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8175 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8176 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8177 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8179 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8182 if test "$UCRT_REDISTDIR" = "no"; then
8183 dnl explicitly disabled
8186 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8187 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8188 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8189 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8190 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8191 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8193 if test -n "$PKGFORMAT"; then
8194 for i in $PKGFORMAT; do
8197 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8198 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8207 AC_SUBST(UCRT_REDISTDIR)
8208 AC_SUBST(MSVC_DLL_PATH)
8213 dnl ===================================================================
8215 dnl ===================================================================
8216 if test "$ENABLE_JAVA" != ""; then
8218 # Windows-specific tests
8219 if test "$build_os" = "cygwin"; then
8220 if test -z "$with_jdk_home"; then
8221 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8222 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8223 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8224 if test -n "$regvalue"; then
8226 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8227 with_jdk_home=$regvalue
8229 howfound="found automatically"
8231 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8232 howfound="you passed"
8235 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8236 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])
8240 # 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.
8241 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8242 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8243 with_jdk_home=`/usr/libexec/java_home`
8246 JAVA_HOME=; export JAVA_HOME
8247 if test -z "$with_jdk_home"; then
8248 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8250 _java_path="$with_jdk_home/bin/$with_java"
8251 dnl Check if there is a Java interpreter at all.
8252 if test -x "$_java_path"; then
8253 JAVAINTERPRETER=$_java_path
8255 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8259 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8260 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8261 dnl loaded by java to run JunitTests:
8262 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8263 shortjdkhome=`cygpath -d "$with_jdk_home"`
8264 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
8265 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8266 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8267 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
8268 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8269 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8272 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8273 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8275 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8276 elif test "$cross_compiling" != "yes"; then
8278 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8279 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8280 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8281 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8284 *) # assumption: everything else 32-bit
8285 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8286 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8287 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8294 dnl ===================================================================
8296 dnl ===================================================================
8298 # Whether all the complexity here actually is needed any more or not, no idea.
8300 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8302 AC_MSG_CHECKING([the installed JDK])
8303 if test -n "$JAVAINTERPRETER"; then
8304 dnl java -version sends output to stderr!
8305 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8306 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8307 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8308 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8309 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8310 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8311 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8312 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8316 dnl Sun JDK specific tests
8317 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8318 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8320 if test "$_jdk_ver" -lt 10900; then
8321 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8323 if test "$_jdk_ver" -gt 10900; then
8324 JAVA_CLASSPATH_NOT_SET=TRUE
8327 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8328 if test "$_os" = "WINNT"; then
8329 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8331 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8333 # set to limit VM usage for JunitTests
8335 # set to limit VM usage for javac
8336 JAVACFLAGS=-J-Xmx128M
8339 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8342 if test -z "$ENABLE_JAVA"; then
8346 elif test "$cross_compiling" = "yes"; then
8347 # Just assume compatibility of build and host JDK
8349 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8353 dnl ===================================================================
8354 dnl Checks for javac
8355 dnl ===================================================================
8356 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8357 javacompiler="javac"
8358 : ${JAVA_SOURCE_VER=8}
8359 : ${JAVA_TARGET_VER=8}
8360 if test -z "$with_jdk_home"; then
8361 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8363 _javac_path="$with_jdk_home/bin/$javacompiler"
8364 dnl Check if there is a Java compiler at all.
8365 if test -x "$_javac_path"; then
8366 JAVACOMPILER=$_javac_path
8369 if test -z "$JAVACOMPILER"; then
8370 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8372 if test "$build_os" = "cygwin"; then
8373 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8374 JAVACOMPILER="${JAVACOMPILER}.exe"
8376 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8380 dnl ===================================================================
8381 dnl Checks for javadoc
8382 dnl ===================================================================
8383 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8384 if test -z "$with_jdk_home"; then
8385 AC_PATH_PROG(JAVADOC, javadoc)
8387 _javadoc_path="$with_jdk_home/bin/javadoc"
8388 dnl Check if there is a javadoc at all.
8389 if test -x "$_javadoc_path"; then
8390 JAVADOC=$_javadoc_path
8392 AC_PATH_PROG(JAVADOC, javadoc)
8395 if test -z "$JAVADOC"; then
8396 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8398 if test "$build_os" = "cygwin"; then
8399 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8400 JAVADOC="${JAVADOC}.exe"
8402 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8405 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8406 JAVADOCISGJDOC="yes"
8410 AC_SUBST(JAVADOCISGJDOC)
8412 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8413 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8414 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8415 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8416 # try to recover first by looking whether we have an alternative
8417 # system as in Debian or newer SuSEs where following /usr/bin/javac
8418 # over /etc/alternatives/javac leads to the right bindir where we
8419 # just need to strip a bit away to get a valid JAVA_HOME
8420 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8421 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8422 # maybe only one level of symlink (e.g. on Mac)
8423 JAVA_HOME=$(readlink $JAVACOMPILER)
8424 if test "$(dirname $JAVA_HOME)" = "."; then
8425 # we've got no path to trim back
8430 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8431 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8432 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8433 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8435 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8436 if test "$JAVA_HOME" != "/usr"; then
8437 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8438 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8439 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8440 dnl Tiger already returns a JDK path...
8441 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8443 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8444 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8445 dnl that checks which version to run
8446 if test -f "$JAVA_HOME"; then
8447 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8452 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8454 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8455 if test -z "$JAVA_HOME"; then
8456 if test "x$with_jdk_home" = "x"; then
8457 cat > findhome.java <<_ACEOF
8458 [import java.io.File;
8462 public static void main(String args[])
8464 String jrelocation = System.getProperty("java.home");
8465 File jre = new File(jrelocation);
8466 System.out.println(jre.getParent());
8470 AC_MSG_CHECKING([if javac works])
8471 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8472 AC_TRY_EVAL(javac_cmd)
8473 if test $? = 0 -a -f ./findhome.class; then
8474 AC_MSG_RESULT([javac works])
8476 echo "configure: javac test failed" >&5
8477 cat findhome.java >&5
8478 AC_MSG_ERROR([javac does not work - java projects will not build!])
8480 AC_MSG_CHECKING([if gij knows its java.home])
8481 JAVA_HOME=`$JAVAINTERPRETER findhome`
8482 if test $? = 0 -a "$JAVA_HOME" != ""; then
8483 AC_MSG_RESULT([$JAVA_HOME])
8485 echo "configure: java test failed" >&5
8486 cat findhome.java >&5
8487 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8489 # clean-up after ourselves
8490 rm -f ./findhome.java ./findhome.class
8492 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8496 # now check if $JAVA_HOME is really valid
8497 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8498 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8499 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8500 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8501 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8502 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8503 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8504 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8507 PathFormat "$JAVA_HOME"
8508 JAVA_HOME="$formatted_path"
8511 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8514 AC_MSG_CHECKING([for JAWT lib])
8515 if test "$_os" = WINNT; then
8516 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8521 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8522 JAVA_ARCH=$my_java_arch
8537 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8538 JAVA_ARCH=$my_java_arch
8541 my_java_arch=sparcv9
8547 my_java_arch=$host_cpu
8550 # This is where JDK9 puts the library
8551 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8552 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8554 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8556 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8558 AC_MSG_RESULT([$JAWTLIB])
8562 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8566 JAVAINC="-I$JAVA_HOME/include"
8567 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8568 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8572 JAVAINC="-I$JAVA_HOME/include/win32"
8573 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8577 if test -d "$JAVA_HOME/include/darwin"; then
8578 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8580 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8585 JAVAINC="-I$JAVA_HOME/include"
8586 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8590 JAVAINC="-I$JAVA_HOME/include"
8591 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8592 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8593 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8594 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8598 JAVAINC="-I$JAVA_HOME/include"
8599 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8600 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8604 JAVAINC="-I$JAVA_HOME/include"
8605 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8606 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8610 JAVAINC="-I$JAVA_HOME/include"
8611 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8612 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8616 JAVAINC="-I$JAVA_HOME/include"
8617 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8618 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8622 JAVAINC="-I$JAVA_HOME/include"
8623 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8624 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8628 SOLARINC="$SOLARINC $JAVAINC"
8630 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8631 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8632 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8636 AC_SUBST(JAVACFLAGS)
8637 AC_SUBST(JAVACOMPILER)
8638 AC_SUBST(JAVAINTERPRETER)
8639 AC_SUBST(JAVAIFLAGS)
8640 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8641 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8643 AC_SUBST(JAVA_HOME_FOR_BUILD)
8645 AC_SUBST(JDK_FOR_BUILD)
8646 AC_SUBST(JAVA_SOURCE_VER)
8647 AC_SUBST(JAVA_TARGET_VER)
8650 dnl ===================================================================
8651 dnl Export file validation
8652 dnl ===================================================================
8653 AC_MSG_CHECKING([whether to enable export file validation])
8654 if test "$with_export_validation" != "no"; then
8655 if test -z "$ENABLE_JAVA"; then
8656 if test "$with_export_validation" = "yes"; then
8657 AC_MSG_ERROR([requested, but Java is disabled])
8659 AC_MSG_RESULT([no, as Java is disabled])
8661 elif ! test -d "${SRC_ROOT}/schema"; then
8662 if test "$with_export_validation" = "yes"; then
8663 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8665 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8668 AC_MSG_RESULT([yes])
8669 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8671 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8672 if test -z "$ODFVALIDATOR"; then
8673 # remember to download the ODF toolkit with validator later
8674 AC_MSG_NOTICE([no odfvalidator found, will download it])
8675 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8676 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8678 # and fetch name of odfvalidator jar name from download.lst
8679 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8680 AC_SUBST(ODFVALIDATOR_JAR)
8682 if test -z "$ODFVALIDATOR_JAR"; then
8683 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8686 if test "$build_os" = "cygwin"; then
8687 # In case of Cygwin it will be executed from Windows,
8688 # so we need to run bash and absolute path to validator
8689 # so instead of "odfvalidator" it will be
8690 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8691 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8693 ODFVALIDATOR="sh $ODFVALIDATOR"
8695 AC_SUBST(ODFVALIDATOR)
8698 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8699 if test -z "$OFFICEOTRON"; then
8700 # remember to download the officeotron with validator later
8701 AC_MSG_NOTICE([no officeotron found, will download it])
8702 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8703 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8705 # and fetch name of officeotron jar name from download.lst
8706 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8707 AC_SUBST(OFFICEOTRON_JAR)
8709 if test -z "$OFFICEOTRON_JAR"; then
8710 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8713 # check version of existing officeotron
8714 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8715 if test 0"$OFFICEOTRON_VER" -lt 704; then
8716 AC_MSG_ERROR([officeotron too old])
8719 if test "$build_os" = "cygwin"; then
8720 # In case of Cygwin it will be executed from Windows,
8721 # so we need to run bash and absolute path to validator
8722 # so instead of "odfvalidator" it will be
8723 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8724 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8726 OFFICEOTRON="sh $OFFICEOTRON"
8729 AC_SUBST(OFFICEOTRON)
8734 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8735 if test "$with_bffvalidator" != "no"; then
8736 AC_DEFINE(HAVE_BFFVALIDATOR)
8738 if test "$with_export_validation" = "no"; then
8739 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8742 if test "$with_bffvalidator" = "yes"; then
8743 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8745 BFFVALIDATOR="$with_bffvalidator"
8748 if test "$build_os" = "cygwin"; then
8749 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8750 AC_MSG_RESULT($BFFVALIDATOR)
8752 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8754 elif test -n "$BFFVALIDATOR"; then
8755 # We are not in Cygwin but need to run Windows binary with wine
8756 AC_PATH_PROGS(WINE, wine)
8758 # so swap in a shell wrapper that converts paths transparently
8759 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8760 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8761 AC_SUBST(BFFVALIDATOR_EXE)
8762 AC_MSG_RESULT($BFFVALIDATOR)
8764 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8766 AC_SUBST(BFFVALIDATOR)
8771 dnl ===================================================================
8772 dnl Check for C preprocessor to use
8773 dnl ===================================================================
8774 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8776 if test -n "$with_idlc_cpp"; then
8777 AC_MSG_RESULT([$with_idlc_cpp])
8778 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8779 AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8780 # ucpp will accept -v (to output version), warn about the others as unknown
8781 # and return 1 (due to -v)
8782 # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8783 # and return 0 (due to --version ) if all options are supported
8784 $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8785 if test $? -eq 0; then
8786 SYSTEM_UCPP_IS_GCC=TRUE
8787 AC_MSG_RESULT([yes])
8792 AC_MSG_RESULT([ucpp])
8793 AC_MSG_CHECKING([which ucpp to use])
8794 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8795 AC_MSG_RESULT([external])
8796 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8798 AC_MSG_RESULT([internal])
8799 BUILD_TYPE="$BUILD_TYPE UCPP"
8802 AC_SUBST(SYSTEM_UCPP)
8803 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8805 dnl ===================================================================
8806 dnl Check for epm (not needed for Windows)
8807 dnl ===================================================================
8808 AC_MSG_CHECKING([whether to enable EPM for packing])
8809 if test "$enable_epm" = "yes"; then
8810 AC_MSG_RESULT([yes])
8811 if test "$_os" != "WINNT"; then
8812 if test $_os = Darwin; then
8814 elif test -n "$with_epm"; then
8817 AC_PATH_PROG(EPM, epm, no)
8819 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8820 AC_MSG_NOTICE([EPM will be built.])
8821 BUILD_TYPE="$BUILD_TYPE EPM"
8822 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8824 # Gentoo has some epm which is something different...
8825 AC_MSG_CHECKING([whether the found epm is the right epm])
8826 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8827 AC_MSG_RESULT([yes])
8829 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8831 AC_MSG_CHECKING([epm version])
8832 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8833 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8834 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8835 AC_MSG_RESULT([OK, >= 3.7])
8837 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8838 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8843 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8844 AC_MSG_CHECKING([for rpm])
8845 for a in "$RPM" rpmbuild rpm; do
8846 $a --usage >/dev/null 2> /dev/null
8847 if test $? -eq 0; then
8851 $a --version >/dev/null 2> /dev/null
8852 if test $? -eq 0; then
8858 if test -z "$RPM"; then
8859 AC_MSG_ERROR([not found])
8860 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8861 RPM_PATH=`which $RPM`
8862 AC_MSG_RESULT([$RPM_PATH])
8863 SCPDEFS="$SCPDEFS -DWITH_RPM"
8865 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8868 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8869 AC_PATH_PROG(DPKG, dpkg, no)
8870 if test "$DPKG" = "no"; then
8871 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8874 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8875 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8876 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8877 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8878 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8879 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8880 AC_MSG_RESULT([yes])
8883 if echo "$PKGFORMAT" | $GREP -q rpm; then
8885 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8886 add_warning "the rpms will need to be installed with --nodeps"
8890 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8891 add_warning "the ${_pt}s will not be relocatable"
8892 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8893 relocation will work, you need to patch your epm with the
8894 patch in epm/epm-3.7.patch or build with
8895 --with-epm=internal which will build a suitable epm])
8900 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8901 AC_PATH_PROG(PKGMK, pkgmk, no)
8902 if test "$PKGMK" = "no"; then
8903 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8910 for i in $PKGFORMAT; do
8912 aix | bsd | deb | pkg | rpm | native | portable)
8914 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8924 if test "$enable_lotuswordpro" = "yes"; then
8927 AC_SUBST(ENABLE_LWP)
8929 dnl ===================================================================
8930 dnl Check for building ODK
8931 dnl ===================================================================
8932 if test "$enable_odk" != yes; then
8935 if test "$with_doxygen" = no; then
8936 AC_MSG_CHECKING([for doxygen])
8940 if test "$with_doxygen" = yes; then
8941 AC_PATH_PROG([DOXYGEN], [doxygen])
8942 if test -z "$DOXYGEN"; then
8943 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8945 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8946 if ! dot -V 2>/dev/null; then
8947 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8951 AC_MSG_CHECKING([for doxygen])
8952 DOXYGEN=$with_doxygen
8953 AC_MSG_RESULT([$DOXYGEN])
8955 if test -n "$DOXYGEN"; then
8956 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8957 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8958 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8959 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8966 AC_MSG_CHECKING([whether to build the ODK])
8967 if test "$enable_odk" = yes; then
8968 AC_MSG_RESULT([yes])
8969 BUILD_TYPE="$BUILD_TYPE ODK"
8974 dnl ===================================================================
8975 dnl Check for system zlib
8976 dnl ===================================================================
8977 if test "$with_system_zlib" = "auto"; then
8980 with_system_zlib="$with_system_libs"
8983 if test "$enable_fuzzers" != "yes"; then
8984 with_system_zlib=yes
8992 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8993 dnl and has no pkg-config for it at least on some tinderboxes,
8994 dnl so leaving that out for now
8995 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8996 AC_MSG_CHECKING([which zlib to use])
8997 if test "$with_system_zlib" = "yes"; then
8998 AC_MSG_RESULT([external])
9000 AC_CHECK_HEADER(zlib.h, [],
9001 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9002 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9003 [AC_MSG_ERROR(zlib not found or functional)], [])
9005 AC_MSG_RESULT([internal])
9007 BUILD_TYPE="$BUILD_TYPE ZLIB"
9008 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9009 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9011 AC_SUBST(ZLIB_CFLAGS)
9013 AC_SUBST(SYSTEM_ZLIB)
9015 dnl ===================================================================
9016 dnl Check for system jpeg
9017 dnl ===================================================================
9018 AC_MSG_CHECKING([which libjpeg to use])
9019 if test "$with_system_jpeg" = "yes"; then
9020 AC_MSG_RESULT([external])
9022 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9023 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9024 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9025 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9028 AC_MSG_RESULT([internal, libjpeg-turbo])
9029 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9032 x86_64 | amd64 | i*86 | x86 | ia32)
9033 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9034 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9035 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9036 NASM="$LODE_HOME/opt/bin/nasm"
9037 elif test -x "/opt/lo/bin/nasm"; then
9038 NASM="/opt/lo/bin/nasm"
9042 if test -n "$NASM"; then
9043 AC_MSG_CHECKING([for object file format of host system])
9045 cygwin* | mingw* | pw32* | wsl*)
9055 msdosdjgpp* | go32*)
9058 os2-emx*) # not tested
9059 objfmt='MSOMF' # obj
9061 linux*coff* | linux*oldld*)
9077 kfreebsd* | freebsd* | netbsd* | openbsd*)
9078 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9091 solaris* | sunos* | sysv* | sco*)
9101 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9116 AC_MSG_RESULT([$objfmt])
9117 if test "$objfmt" = 'ELF ?'; then
9119 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9122 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9124 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9125 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9126 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9127 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9128 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9129 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9130 ELF) NAFLAGS='-felf -DELF -DPIC';;
9131 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9132 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9133 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9134 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9136 AC_MSG_RESULT([$NAFLAGS])
9138 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9139 cat > conftest.asm << EOF
9140 [%line __oline__ "configure"
9148 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9149 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9152 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9153 cat conftest.asm >&AS_MESSAGE_LOG_FD
9156 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9162 if test -z "$NASM"; then
9164 ****************************************************************************
9165 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9169 if test "$build_os" = "cygwin"; then
9171 install a pre-compiled binary for Win32
9173 mkdir -p /opt/lo/bin
9175 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9178 or get and install one from http://www.nasm.us/
9180 Then re-run autogen.sh
9182 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9183 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9188 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9192 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9193 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9201 AC_SUBST(LIBJPEG_CFLAGS)
9202 AC_SUBST(LIBJPEG_LIBS)
9203 AC_SUBST(SYSTEM_LIBJPEG)
9205 dnl ===================================================================
9206 dnl Check for system clucene
9207 dnl ===================================================================
9208 dnl we should rather be using
9209 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9210 dnl but the contribs-lib check seems tricky
9211 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9212 AC_MSG_CHECKING([which clucene to use])
9213 if test "$with_system_clucene" = "yes"; then
9214 AC_MSG_RESULT([external])
9216 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9217 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9218 FilterLibs "${CLUCENE_LIBS}"
9219 CLUCENE_LIBS="${filteredlibs}"
9221 save_CXXFLAGS=$CXXFLAGS
9222 save_CPPFLAGS=$CPPFLAGS
9223 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9224 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9225 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9226 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9227 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9228 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9229 CXXFLAGS=$save_CXXFLAGS
9230 CPPFLAGS=$save_CPPFLAGS
9233 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9235 AC_MSG_RESULT([internal])
9237 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9240 AC_SUBST(SYSTEM_CLUCENE)
9241 AC_SUBST(CLUCENE_CFLAGS)
9242 AC_SUBST(CLUCENE_LIBS)
9244 dnl ===================================================================
9245 dnl Check for system expat
9246 dnl ===================================================================
9247 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9249 dnl ===================================================================
9250 dnl Check for system xmlsec
9251 dnl ===================================================================
9252 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9254 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9255 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9257 AC_DEFINE([ENABLE_EOT])
9258 AC_MSG_RESULT([yes])
9260 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9265 AC_SUBST([ENABLE_EOT])
9267 dnl ===================================================================
9268 dnl Check for DLP libs
9269 dnl ===================================================================
9270 AS_IF([test "$COM" = "MSC"],
9271 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9272 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9274 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9276 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9278 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9280 AS_IF([test "$COM" = "MSC"],
9281 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9282 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9284 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9286 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9288 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9289 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9291 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9293 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9295 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9297 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9298 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9300 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9301 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9303 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9305 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9306 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9308 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9310 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9312 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9314 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9316 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9317 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9319 dnl ===================================================================
9320 dnl Check for system lcms2
9321 dnl ===================================================================
9322 if test "$with_system_lcms2" != "yes"; then
9325 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9326 if test "$GCC" = "yes"; then
9327 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9329 if test "$COM" = "MSC"; then # override the above
9330 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9333 dnl ===================================================================
9334 dnl Check for system cppunit
9335 dnl ===================================================================
9336 if test "$_os" != "Android" ; then
9337 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9340 dnl ===================================================================
9341 dnl Check whether freetype is available
9342 dnl ===================================================================
9343 if test "$using_freetype_fontconfig" = yes; then
9344 AC_MSG_CHECKING([which freetype to use])
9346 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9347 AC_MSG_RESULT([external])
9348 # FreeType has 3 different kinds of versions
9349 # * release, like 2.4.10
9350 # * libtool, like 13.0.7 (this what pkg-config returns)
9352 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9355 # When the minimal version is at least 2.8.1, remove Skia's check down below.
9356 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9357 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9358 FilterLibs "${FREETYPE_LIBS}"
9359 FREETYPE_LIBS="${filteredlibs}"
9360 SYSTEM_FREETYPE=TRUE
9361 elif test "$using_freetype_fontconfig" = yes; then
9362 AC_MSG_RESULT([internal])
9363 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9364 if test "x$ac_config_site_64bit_host" = xYES; then
9365 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9367 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9369 BUILD_TYPE="$BUILD_TYPE FREETYPE"
9371 AC_SUBST(FREETYPE_CFLAGS)
9372 AC_SUBST(FREETYPE_LIBS)
9373 AC_SUBST([SYSTEM_FREETYPE])
9375 # ===================================================================
9376 # Check for system libxslt
9377 # to prevent incompatibilities between internal libxml2 and external libxslt,
9378 # or vice versa, use with_system_libxml here
9379 # ===================================================================
9380 if test "$with_system_libxml" = "auto"; then
9383 with_system_libxml="$with_system_libs"
9386 with_system_libxml=no
9389 if test "$enable_fuzzers" != "yes"; then
9390 with_system_libxml=yes
9392 with_system_libxml=no
9398 AC_MSG_CHECKING([which libxslt to use])
9399 if test "$with_system_libxml" = "yes"; then
9400 AC_MSG_RESULT([external])
9402 if test "$_os" = "Darwin"; then
9403 dnl make sure to use SDK path
9404 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9405 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9407 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9408 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9410 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9411 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9412 FilterLibs "${LIBXSLT_LIBS}"
9413 LIBXSLT_LIBS="${filteredlibs}"
9414 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9415 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9416 FilterLibs "${LIBEXSLT_LIBS}"
9417 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9420 dnl Check for xsltproc
9421 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9422 if test "$XSLTPROC" = "no"; then
9423 AC_MSG_ERROR([xsltproc is required])
9426 AC_MSG_RESULT([internal])
9428 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9430 AC_SUBST(SYSTEM_LIBXSLT)
9431 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9432 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9434 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9436 AC_SUBST(LIBEXSLT_CFLAGS)
9437 AC_SUBST(LIBEXSLT_LIBS)
9438 AC_SUBST(LIBXSLT_CFLAGS)
9439 AC_SUBST(LIBXSLT_LIBS)
9442 # ===================================================================
9443 # Check for system libxml
9444 # ===================================================================
9445 AC_MSG_CHECKING([which libxml to use])
9446 if test "$with_system_libxml" = "yes"; then
9447 AC_MSG_RESULT([external])
9449 if test "$_os" = "Darwin"; then
9450 dnl make sure to use SDK path
9451 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9453 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9454 elif test $_os = iOS; then
9455 dnl make sure to use SDK path
9456 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9457 LIBXML_CFLAGS="-I$usr/include/libxml2"
9458 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9460 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9461 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9462 FilterLibs "${LIBXML_LIBS}"
9463 LIBXML_LIBS="${filteredlibs}"
9466 dnl Check for xmllint
9467 AC_PATH_PROG(XMLLINT, xmllint, no)
9468 if test "$XMLLINT" = "no"; then
9469 AC_MSG_ERROR([xmllint is required])
9472 AC_MSG_RESULT([internal])
9474 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9475 if test "$COM" = "MSC"; then
9476 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9478 if test "$COM" = "MSC"; then
9479 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9481 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9482 if test "$_os" = Android; then
9483 LIBXML_LIBS="$LIBXML_LIBS -lm"
9486 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9488 AC_SUBST(SYSTEM_LIBXML)
9489 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9490 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9492 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9493 AC_SUBST(LIBXML_CFLAGS)
9494 AC_SUBST(LIBXML_LIBS)
9497 # =====================================================================
9498 # Checking for a Python interpreter with version >= 3.3.
9499 # Optionally user can pass an option to configure, i. e.
9500 # ./configure PYTHON=/usr/bin/python
9501 # =====================================================================
9502 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9503 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9504 # unless PYTHON is defined as above which allows 'system'
9505 enable_python=internal
9507 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9508 if test -n "$PYTHON"; then
9509 PYTHON_FOR_BUILD=$PYTHON
9511 # This allows a lack of system python with no error, we use internal one in that case.
9512 AM_PATH_PYTHON([3.3],, [:])
9513 # Clean PYTHON_VERSION checked below if cross-compiling
9515 if test "$PYTHON" != ":"; then
9516 PYTHON_FOR_BUILD=$PYTHON
9520 AC_SUBST(PYTHON_FOR_BUILD)
9522 # Checks for Python to use for Pyuno
9523 AC_MSG_CHECKING([which Python to use for Pyuno])
9524 case "$enable_python" in
9526 if test -z $PYTHON_FOR_BUILD; then
9527 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9528 # requirement from the choice whether to include Python stuff in the installer, but why
9530 if test "$cross_compiling" = yes; then
9531 enable_python=system
9533 AC_MSG_ERROR([Python is required at build time.])
9537 AC_MSG_RESULT([none])
9540 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9541 AC_MSG_RESULT([no, overridden by --disable-scripting])
9543 elif test $build_os = cygwin; then
9544 dnl When building on Windows we don't attempt to use any installed
9545 dnl "system" Python.
9546 AC_MSG_RESULT([fully internal])
9547 enable_python=internal
9548 elif test "$cross_compiling" = yes; then
9549 AC_MSG_RESULT([system])
9550 enable_python=system
9552 # Unset variables set by the above AM_PATH_PYTHON so that
9553 # we actually do check anew.
9555 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
9556 AM_PATH_PYTHON([3.3],, [:])
9557 AC_MSG_CHECKING([which Python to use for Pyuno])
9558 if test "$PYTHON" = ":"; then
9559 if test -z "$PYTHON_FOR_BUILD"; then
9560 AC_MSG_RESULT([fully internal])
9562 AC_MSG_RESULT([internal])
9564 enable_python=internal
9566 AC_MSG_RESULT([system])
9567 enable_python=system
9572 AC_MSG_RESULT([internal])
9575 AC_MSG_RESULT([fully internal])
9576 enable_python=internal
9579 AC_MSG_RESULT([system])
9580 if test "$_os" = Darwin -a -z "$PYTHON"; then
9581 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9585 AC_MSG_ERROR([Incorrect --enable-python option])
9589 if test $enable_python != no; then
9590 BUILD_TYPE="$BUILD_TYPE PYUNO"
9593 if test $enable_python = system; then
9594 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9595 # Fallback: Accept these in the environment, or as set above
9598 elif test "$cross_compiling" != yes; then
9599 # Unset variables set by the above AM_PATH_PYTHON so that
9600 # we actually do check anew.
9601 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
9602 # This causes an error if no python command is found
9603 AM_PATH_PYTHON([3.3])
9604 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9605 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9606 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9607 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9608 if test -z "$PKG_CONFIG"; then
9609 PYTHON_CFLAGS="-I$python_include"
9610 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9611 elif $PKG_CONFIG --exists python-$python_version-embed; then
9612 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9613 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9614 elif $PKG_CONFIG --exists python-$python_version; then
9615 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9616 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9618 PYTHON_CFLAGS="-I$python_include"
9619 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9621 FilterLibs "${PYTHON_LIBS}"
9622 PYTHON_LIBS="${filteredlibs}"
9624 dnl How to find out the cross-compilation Python installation path?
9625 AC_MSG_CHECKING([for python version])
9626 AS_IF([test -n "$PYTHON_VERSION"],
9627 [AC_MSG_RESULT([$PYTHON_VERSION])],
9628 [AC_MSG_RESULT([not found])
9629 AC_MSG_ERROR([no usable python found])])
9630 test -n "$PYTHON_CFLAGS" && break
9633 dnl Check if the headers really work
9634 save_CPPFLAGS="$CPPFLAGS"
9635 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9636 AC_CHECK_HEADER(Python.h)
9637 CPPFLAGS="$save_CPPFLAGS"
9639 # let the PYTHON_FOR_BUILD match the same python installation that
9640 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9641 # better for PythonTests.
9642 PYTHON_FOR_BUILD=$PYTHON
9645 if test "$with_lxml" != no; then
9646 if test -z "$PYTHON_FOR_BUILD"; then
9649 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9652 if test "$cross_compiling" != yes ; then
9653 BUILD_TYPE="$BUILD_TYPE LXML"
9658 AC_MSG_CHECKING([for python lxml])
9659 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9660 AC_MSG_RESULT([yes])
9664 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9667 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9668 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9669 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9671 BUILD_TYPE="$BUILD_TYPE LXML"
9672 AC_MSG_RESULT([no, using internal lxml])
9675 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9683 dnl By now enable_python should be "system", "internal" or "no"
9684 case $enable_python in
9688 if test "x$ac_cv_header_Python_h" != "xyes"; then
9689 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9693 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9694 AC_MSG_CHECKING([for correct python library version])
9695 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9698 int main(int argc, char **argv) {
9699 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9702 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9705 dnl FIXME Check if the Python library can be linked with, too?
9710 PYTHON_VERSION_MAJOR=3
9711 PYTHON_VERSION_MINOR=8
9712 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9713 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9714 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9716 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9717 BUILD_TYPE="$BUILD_TYPE PYTHON"
9718 if test "$OS" = LINUX -o "$OS" = WNT ; then
9719 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9721 # Embedded Python dies without Home set
9722 if test "$HOME" = ""; then
9731 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9735 AC_SUBST(DISABLE_PYTHON)
9736 AC_SUBST(SYSTEM_PYTHON)
9737 AC_SUBST(PYTHON_CFLAGS)
9738 AC_SUBST(PYTHON_LIBS)
9739 AC_SUBST(PYTHON_VERSION)
9740 AC_SUBST(PYTHON_VERSION_MAJOR)
9741 AC_SUBST(PYTHON_VERSION_MINOR)
9743 AC_MSG_CHECKING([whether to build LibreLogo])
9744 case "$enable_python" in
9746 AC_MSG_RESULT([no; Python disabled])
9749 if test "${enable_librelogo}" = "no"; then
9752 AC_MSG_RESULT([yes])
9753 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9754 AC_DEFINE([ENABLE_LIBRELOGO],1)
9758 AC_SUBST(ENABLE_LIBRELOGO)
9764 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9765 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9766 ENABLE_MARIADBC=TRUE
9767 AC_MSG_RESULT([yes])
9768 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9772 AC_SUBST(ENABLE_MARIADBC)
9773 AC_SUBST(MARIADBC_MAJOR)
9774 AC_SUBST(MARIADBC_MINOR)
9775 AC_SUBST(MARIADBC_MICRO)
9777 if test "$ENABLE_MARIADBC" = "TRUE"; then
9778 dnl ===================================================================
9779 dnl Check for system MariaDB
9780 dnl ===================================================================
9781 AC_MSG_CHECKING([which MariaDB to use])
9782 if test "$with_system_mariadb" = "yes"; then
9783 AC_MSG_RESULT([external])
9784 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9785 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9786 if test -z "$MARIADBCONFIG"; then
9787 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9788 if test -z "$MARIADBCONFIG"; then
9789 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9790 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9793 AC_MSG_CHECKING([MariaDB version])
9794 MARIADB_VERSION=`$MARIADBCONFIG --version`
9795 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9796 if test "$MARIADB_MAJOR" -ge "5"; then
9799 AC_MSG_ERROR([too old, use 5.0.x or later])
9801 AC_MSG_CHECKING([for MariaDB Client library])
9802 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9803 if test "$COM_IS_CLANG" = TRUE; then
9804 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9806 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9807 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9808 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9810 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9811 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9812 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9813 | sed -e 's|/lib64/|/lib/|')
9815 FilterLibs "${MARIADB_LIBS}"
9816 MARIADB_LIBS="${filteredlibs}"
9817 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9818 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9819 if test "$enable_bundle_mariadb" = "yes"; then
9820 AC_MSG_RESULT([yes])
9821 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9822 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9824 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9826 /g' | grep -E '(mysqlclient|mariadb)')
9827 if test "$_os" = "Darwin"; then
9828 LIBMARIADB=${LIBMARIADB}.dylib
9829 elif test "$_os" = "WINNT"; then
9830 LIBMARIADB=${LIBMARIADB}.dll
9832 LIBMARIADB=${LIBMARIADB}.so
9834 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9835 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9836 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9837 AC_MSG_RESULT([found.])
9838 PathFormat "$LIBMARIADB_PATH"
9839 LIBMARIADB_PATH="$formatted_path"
9841 AC_MSG_ERROR([not found.])
9845 BUNDLE_MARIADB_CONNECTOR_C=
9848 AC_MSG_RESULT([internal])
9849 SYSTEM_MARIADB_CONNECTOR_C=
9850 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9851 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9852 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9855 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9856 AC_SUBST(MARIADB_CFLAGS)
9857 AC_SUBST(MARIADB_LIBS)
9858 AC_SUBST(LIBMARIADB)
9859 AC_SUBST(LIBMARIADB_PATH)
9860 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9863 dnl ===================================================================
9864 dnl Check for system hsqldb
9865 dnl ===================================================================
9866 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9867 HSQLDB_USE_JDBC_4_1=
9868 AC_MSG_CHECKING([which hsqldb to use])
9869 if test "$with_system_hsqldb" = "yes"; then
9870 AC_MSG_RESULT([external])
9872 if test -z $HSQLDB_JAR; then
9873 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9875 if ! test -f $HSQLDB_JAR; then
9876 AC_MSG_ERROR(hsqldb.jar not found.)
9878 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9882 my $file = "$ENV{'HSQLDB_JAR'}";
9883 my $zip = Archive::Zip->new( $file );
9884 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9885 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9887 push @l, split(/\n/, $mf);
9888 foreach my $line (@l)
9890 if ($line =~ m/Specification-Version:/)
9892 ($t, $version) = split (/:/,$line);
9893 $version =~ s/^\s//;
9894 ($a, $b, $c, $d) = split (/\./,$version);
9895 if ($c == "0" && $d > "8")
9910 AC_MSG_RESULT([yes])
9912 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9915 AC_MSG_RESULT([internal])
9917 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9919 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9920 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9921 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9922 AC_MSG_RESULT([yes])
9923 HSQLDB_USE_JDBC_4_1=TRUE
9929 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9930 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9933 AC_SUBST(SYSTEM_HSQLDB)
9934 AC_SUBST(HSQLDB_JAR)
9935 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9937 dnl ===================================================================
9938 dnl Check for PostgreSQL stuff
9939 dnl ===================================================================
9940 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9941 if test "x$enable_postgresql_sdbc" != "xno"; then
9942 AC_MSG_RESULT([yes])
9943 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9945 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9946 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9948 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9949 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9952 postgres_interface=""
9953 if test "$with_system_postgresql" = "yes"; then
9954 postgres_interface="external PostgreSQL"
9955 SYSTEM_POSTGRESQL=TRUE
9956 if test "$_os" = Darwin; then
9958 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9959 pg_supp_path="$P_SEP$d$pg_supp_path"
9962 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9963 if test -n "$PGCONFIG"; then
9964 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9965 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9967 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9968 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9969 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9971 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9974 FilterLibs "${POSTGRESQL_LIB}"
9975 POSTGRESQL_LIB="${filteredlibs}"
9977 # if/when anything else than PostgreSQL uses Kerberos,
9978 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9983 # macOS has system MIT Kerberos 5 since 10.4
9984 if test "$with_krb5" != "no"; then
9987 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9988 # that the libraries where these functions are located on macOS will change, is it?
9989 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9990 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9993 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9994 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9995 KRB5_LIBS="$KRB5_LIBS $LIBS"
9998 if test "$with_gssapi" != "no"; then
10001 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10002 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10008 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10009 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10012 Linux|GNU|*BSD|DragonFly)
10013 if test "$with_krb5" != "no"; then
10016 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10017 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10020 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10021 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10022 KRB5_LIBS="$KRB5_LIBS $LIBS"
10025 if test "$with_gssapi" != "no"; then
10028 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10029 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10035 if test "$with_krb5" = "yes"; then
10038 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10039 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10042 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10043 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10044 KRB5_LIBS="$KRB5_LIBS $LIBS"
10047 if test "$with_gssapi" = "yes"; then
10050 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10051 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10057 if test -n "$with_libpq_path"; then
10058 SYSTEM_POSTGRESQL=TRUE
10059 postgres_interface="external libpq"
10060 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10061 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10064 postgres_interface="internal"
10066 POSTGRESQL_INC="%OVERRIDE_ME%"
10067 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10071 AC_MSG_CHECKING([PostgreSQL C interface])
10072 AC_MSG_RESULT([$postgres_interface])
10074 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10075 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10076 save_CFLAGS=$CFLAGS
10077 save_CPPFLAGS=$CPPFLAGS
10079 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10080 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10081 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10082 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10083 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10084 CFLAGS=$save_CFLAGS
10085 CPPFLAGS=$save_CPPFLAGS
10088 BUILD_POSTGRESQL_SDBC=TRUE
10090 AC_MSG_RESULT([no])
10092 AC_SUBST(WITH_KRB5)
10093 AC_SUBST(WITH_GSSAPI)
10094 AC_SUBST(GSSAPI_LIBS)
10095 AC_SUBST(KRB5_LIBS)
10096 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10097 AC_SUBST(SYSTEM_POSTGRESQL)
10098 AC_SUBST(POSTGRESQL_INC)
10099 AC_SUBST(POSTGRESQL_LIB)
10101 dnl ===================================================================
10102 dnl Check for Firebird stuff
10103 dnl ===================================================================
10104 ENABLE_FIREBIRD_SDBC=
10105 if test "$enable_firebird_sdbc" = "yes" ; then
10106 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10108 dnl ===================================================================
10109 dnl Check for system Firebird
10110 dnl ===================================================================
10111 AC_MSG_CHECKING([which Firebird to use])
10112 if test "$with_system_firebird" = "yes"; then
10113 AC_MSG_RESULT([external])
10114 SYSTEM_FIREBIRD=TRUE
10115 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10116 if test -z "$FIREBIRDCONFIG"; then
10117 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10118 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10119 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10121 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10123 AC_MSG_NOTICE([fb_config found])
10124 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10125 AC_MSG_CHECKING([for Firebird Client library])
10126 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10127 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10128 FilterLibs "${FIREBIRD_LIBS}"
10129 FIREBIRD_LIBS="${filteredlibs}"
10131 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10132 AC_MSG_CHECKING([Firebird version])
10133 if test -n "${FIREBIRD_VERSION}"; then
10134 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10135 if test "$FIREBIRD_MAJOR" -ge "3"; then
10136 AC_MSG_RESULT([OK])
10138 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10141 save_CFLAGS="${CFLAGS}"
10142 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10143 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10144 #if defined(FB_API_VER) && FB_API_VER == 30
10145 int fb_api_is_30(void) { return 0; }
10147 #error "Wrong Firebird API version"
10148 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10149 CFLAGS="$save_CFLAGS"
10151 ENABLE_FIREBIRD_SDBC=TRUE
10152 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10153 elif test "$enable_database_connectivity" = no; then
10154 AC_MSG_RESULT([none])
10155 elif test "$cross_compiling" = "yes"; then
10156 AC_MSG_RESULT([none])
10158 dnl Embedded Firebird has version 3.0
10159 dnl We need libatomic_ops for any non X86/X64 system
10160 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10161 dnl ===================================================================
10162 dnl Check for system libatomic_ops
10163 dnl ===================================================================
10164 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10165 if test "$with_system_libatomic_ops" = "yes"; then
10166 SYSTEM_LIBATOMIC_OPS=TRUE
10167 AC_CHECK_HEADERS(atomic_ops.h, [],
10168 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10170 SYSTEM_LIBATOMIC_OPS=
10171 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10172 LIBATOMIC_OPS_LIBS="-latomic_ops"
10173 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10177 AC_MSG_RESULT([internal])
10179 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10180 FIREBIRD_LIBS="-lfbclient"
10182 if test "$with_system_libtommath" = "yes"; then
10183 SYSTEM_LIBTOMMATH=TRUE
10184 dnl check for tommath presence
10186 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10187 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10191 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10192 LIBTOMMATH_LIBS="-ltommath"
10193 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10196 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10197 ENABLE_FIREBIRD_SDBC=TRUE
10198 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10201 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10202 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10203 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10204 AC_SUBST(LIBATOMIC_OPS_LIBS)
10205 AC_SUBST(SYSTEM_FIREBIRD)
10206 AC_SUBST(FIREBIRD_CFLAGS)
10207 AC_SUBST(FIREBIRD_LIBS)
10208 AC_SUBST(SYSTEM_LIBTOMMATH)
10209 AC_SUBST(LIBTOMMATH_CFLAGS)
10210 AC_SUBST(LIBTOMMATH_LIBS)
10212 dnl ===================================================================
10213 dnl Check for system curl
10214 dnl ===================================================================
10215 AC_MSG_CHECKING([which libcurl to use])
10216 if test "$with_system_curl" = "auto"; then
10217 with_system_curl="$with_system_libs"
10220 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10221 AC_MSG_RESULT([external])
10224 # First try PKGCONFIG and then fall back
10225 PKG_CHECK_MODULES(CURL, libcurl >= 7.63.0,, [:])
10227 if test -n "$CURL_PKG_ERRORS"; then
10228 AC_PATH_PROG(CURLCONFIG, curl-config)
10229 if test -z "$CURLCONFIG"; then
10230 AC_MSG_ERROR([curl development files not found])
10232 CURL_LIBS=`$CURLCONFIG --libs`
10233 FilterLibs "${CURL_LIBS}"
10234 CURL_LIBS="${filteredlibs}"
10235 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10236 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10238 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10239 case $curl_version in
10240 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10241 dnl so they need to be doubled to end up in the configure script
10242 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10243 AC_MSG_RESULT([yes])
10246 AC_MSG_ERROR([no, you have $curl_version])
10252 elif test "$enable_curl" = "no"; then
10253 AC_MSG_RESULT([none])
10255 AC_MSG_RESULT([internal])
10257 BUILD_TYPE="$BUILD_TYPE CURL"
10260 AC_SUBST(SYSTEM_CURL)
10261 AC_SUBST(CURL_CFLAGS)
10262 AC_SUBST(CURL_LIBS)
10263 AC_SUBST(ENABLE_CURL)
10265 dnl ===================================================================
10266 dnl Check for system boost
10267 dnl ===================================================================
10268 AC_MSG_CHECKING([which boost to use])
10269 if test "$with_system_boost" = "yes"; then
10270 AC_MSG_RESULT([external])
10272 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10274 AX_BOOST_FILESYSTEM
10277 AC_LANG_PUSH([C++])
10278 save_CXXFLAGS=$CXXFLAGS
10279 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10280 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10281 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10282 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10283 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10284 CXXFLAGS=$save_CXXFLAGS
10286 # this is in m4/ax_boost_base.m4
10287 FilterLibs "${BOOST_LDFLAGS}"
10288 BOOST_LDFLAGS="${filteredlibs}"
10290 AC_MSG_RESULT([internal])
10291 BUILD_TYPE="$BUILD_TYPE BOOST"
10293 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10294 # use warning-suppressing wrapper headers
10295 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10297 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10300 AC_SUBST(SYSTEM_BOOST)
10302 dnl ===================================================================
10303 dnl Check for system mdds
10304 dnl ===================================================================
10305 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10307 dnl ===================================================================
10308 dnl Check for system cuckoo
10309 dnl ===================================================================
10310 AC_MSG_CHECKING([which cuckoo to use])
10311 if test "$with_system_cuckoo" = "yes"; then
10312 AC_MSG_RESULT([external])
10314 AC_LANG_PUSH([C++])
10315 AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10316 [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10319 AC_MSG_RESULT([internal])
10320 BUILD_TYPE="$BUILD_TYPE CUCKOO"
10322 CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10324 AC_SUBST([CUCKOO_CFLAGS])
10325 AC_SUBST([SYSTEM_CUCKOO])
10327 dnl ===================================================================
10328 dnl Check for system glm
10329 dnl ===================================================================
10330 AC_MSG_CHECKING([which glm to use])
10331 if test "$with_system_glm" = "yes"; then
10332 AC_MSG_RESULT([external])
10334 AC_LANG_PUSH([C++])
10335 AC_CHECK_HEADER([glm/glm.hpp], [],
10336 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10339 AC_MSG_RESULT([internal])
10340 BUILD_TYPE="$BUILD_TYPE GLM"
10342 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10344 AC_SUBST([GLM_CFLAGS])
10345 AC_SUBST([SYSTEM_GLM])
10347 dnl ===================================================================
10348 dnl Check for system odbc
10349 dnl ===================================================================
10350 AC_MSG_CHECKING([which odbc headers to use])
10351 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
10352 AC_MSG_RESULT([external])
10353 SYSTEM_ODBC_HEADERS=TRUE
10355 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10356 save_CPPFLAGS=$CPPFLAGS
10358 PathFormat "$winsdktest"
10359 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"
10360 AC_CHECK_HEADER(sqlext.h, [],
10361 [AC_MSG_ERROR(odbc not found. install odbc)],
10362 [#include <windows.h>])
10363 CPPFLAGS=$save_CPPFLAGS
10365 AC_CHECK_HEADER(sqlext.h, [],
10366 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10368 elif test "$enable_database_connectivity" = no; then
10369 AC_MSG_RESULT([none])
10371 AC_MSG_RESULT([internal])
10372 SYSTEM_ODBC_HEADERS=
10374 AC_SUBST(SYSTEM_ODBC_HEADERS)
10376 dnl ===================================================================
10377 dnl Check for system NSS
10378 dnl ===================================================================
10379 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10380 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10381 AC_DEFINE(HAVE_FEATURE_NSS)
10383 elif test $_os != iOS ; then
10386 AC_SUBST(ENABLE_NSS)
10388 dnl ===================================================================
10389 dnl Enable LDAP support
10390 dnl ===================================================================
10392 if test "$test_openldap" = yes; then
10393 AC_MSG_CHECKING([whether to enable LDAP support])
10394 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10395 AC_MSG_RESULT([yes])
10398 if test "$enable_ldap" != "yes"; then
10399 AC_MSG_RESULT([no])
10401 AC_MSG_RESULT([no (needs NSS or system openldap)])
10405 dnl ===================================================================
10406 dnl Check for system openldap
10407 dnl ===================================================================
10409 if test "$ENABLE_LDAP" = TRUE; then
10410 AC_MSG_CHECKING([which openldap library to use])
10411 if test "$with_system_openldap" = yes; then
10412 AC_MSG_RESULT([external])
10413 SYSTEM_OPENLDAP=TRUE
10414 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10415 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10416 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10418 AC_MSG_RESULT([internal])
10419 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10424 AC_SUBST(ENABLE_LDAP)
10425 AC_SUBST(SYSTEM_OPENLDAP)
10427 dnl ===================================================================
10428 dnl Check for TLS/SSL and cryptographic implementation to use
10429 dnl ===================================================================
10430 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10431 if test -n "$with_tls"; then
10434 AC_DEFINE(USE_TLS_OPENSSL)
10436 AC_MSG_RESULT([$TLS])
10438 if test "$enable_openssl" != "yes"; then
10439 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10442 # warn that OpenSSL has been selected but not all TLS code has this option
10443 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10444 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10447 AC_DEFINE(USE_TLS_NSS)
10449 AC_MSG_RESULT([$TLS])
10452 AC_MSG_RESULT([none])
10453 AC_MSG_WARN([Skipping TLS/SSL])
10457 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10459 nss - Mozilla's Network Security Services (NSS)
10464 # default to using NSS, it results in smaller oox lib
10465 AC_DEFINE(USE_TLS_NSS)
10467 AC_MSG_RESULT([$TLS])
10471 dnl ===================================================================
10472 dnl Check for system sane
10473 dnl ===================================================================
10474 AC_MSG_CHECKING([which sane header to use])
10475 if test "$with_system_sane" = "yes"; then
10476 AC_MSG_RESULT([external])
10477 AC_CHECK_HEADER(sane/sane.h, [],
10478 [AC_MSG_ERROR(sane not found. install sane)], [])
10480 AC_MSG_RESULT([internal])
10481 BUILD_TYPE="$BUILD_TYPE SANE"
10484 dnl ===================================================================
10485 dnl Check for system icu
10486 dnl ===================================================================
10493 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10494 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10495 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10496 AC_MSG_CHECKING([which icu to use])
10497 if test "$with_system_icu" = "yes"; then
10498 AC_MSG_RESULT([external])
10500 AC_LANG_PUSH([C++])
10501 AC_MSG_CHECKING([for unicode/rbbi.h])
10502 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10505 if test "$cross_compiling" != "yes"; then
10506 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10507 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10508 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10509 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10512 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10513 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10514 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10515 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10516 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10517 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10518 AC_MSG_RESULT([yes])
10520 AC_MSG_RESULT([no])
10521 if test "$with_system_icu_for_build" != "force"; then
10522 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10523 You can use --with-system-icu-for-build=force to use it anyway.])
10528 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10529 # using the system icu tools can lead to version confusion, use the
10530 # ones from the build environment when cross-compiling
10531 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10532 if test -z "$SYSTEM_GENBRK"; then
10533 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10535 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10536 if test -z "$SYSTEM_GENCCODE"; then
10537 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10539 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10540 if test -z "$SYSTEM_GENCMN"; then
10541 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10543 if test "$ICU_MAJOR" -ge "49"; then
10544 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10545 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10546 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10548 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10549 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10550 ICU_RECLASSIFIED_HEBREW_LETTER=
10554 if test "$cross_compiling" = "yes"; then
10555 if test "$ICU_MAJOR" -ge "50"; then
10556 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10561 AC_MSG_RESULT([internal])
10563 BUILD_TYPE="$BUILD_TYPE ICU"
10564 # surprisingly set these only for "internal" (to be used by various other
10565 # external libs): the system icu-config is quite unhelpful and spits out
10566 # dozens of weird flags and also default path -I/usr/include
10567 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10568 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10570 if test "$ICU_MAJOR" -ge "59"; then
10571 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10572 # with -std=c++11 but not all external libraries can be built with that,
10573 # for those use a bit-compatible typedef uint16_t UChar; see
10574 # icu/source/common/unicode/umachine.h
10575 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10579 AC_SUBST(SYSTEM_ICU)
10580 AC_SUBST(SYSTEM_GENBRK)
10581 AC_SUBST(SYSTEM_GENCCODE)
10582 AC_SUBST(SYSTEM_GENCMN)
10583 AC_SUBST(ICU_MAJOR)
10584 AC_SUBST(ICU_MINOR)
10585 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10586 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10587 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10588 AC_SUBST(ICU_CFLAGS)
10590 AC_SUBST(ICU_UCHAR_TYPE)
10592 dnl ==================================================================
10594 dnl ==================================================================
10595 DEFAULT_CRASHDUMP_VALUE="true"
10596 AC_MSG_CHECKING([whether to enable breakpad])
10597 if test "$enable_breakpad" != yes; then
10598 AC_MSG_RESULT([no])
10600 AC_MSG_RESULT([yes])
10601 ENABLE_BREAKPAD="TRUE"
10602 AC_DEFINE(ENABLE_BREAKPAD)
10603 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10604 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10606 AC_MSG_CHECKING([for disable crash dump])
10607 if test "$enable_crashdump" = no; then
10608 DEFAULT_CRASHDUMP_VALUE="false"
10609 AC_MSG_RESULT([yes])
10611 AC_MSG_RESULT([no])
10614 AC_MSG_CHECKING([for crashreport config])
10615 if test "$with_symbol_config" = "no"; then
10616 BREAKPAD_SYMBOL_CONFIG="invalid"
10617 AC_MSG_RESULT([no])
10619 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10620 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10621 AC_MSG_RESULT([yes])
10623 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10625 AC_SUBST(ENABLE_BREAKPAD)
10626 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10628 dnl ==================================================================
10630 dnl ==================================================================
10631 AC_MSG_CHECKING([whether to enable fuzzers])
10632 if test "$enable_fuzzers" != yes; then
10633 AC_MSG_RESULT([no])
10635 if test -z $LIB_FUZZING_ENGINE; then
10636 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10638 AC_MSG_RESULT([yes])
10639 ENABLE_FUZZERS="TRUE"
10640 AC_DEFINE([ENABLE_FUZZERS],1)
10641 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10643 AC_SUBST(LIB_FUZZING_ENGINE)
10644 AC_SUBST(ENABLE_FUZZERS)
10646 dnl ===================================================================
10648 dnl ===================================================================
10649 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
10650 if test "$with_system_orcus" != "yes"; then
10651 if test "$SYSTEM_BOOST" = "TRUE"; then
10652 dnl Link with Boost.System
10653 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10654 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10655 dnl in documentation has no effect.
10659 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10660 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10661 AC_SUBST([BOOST_SYSTEM_LIB])
10662 AC_SUBST(SYSTEM_LIBORCUS)
10664 dnl ===================================================================
10666 dnl ===================================================================
10667 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10668 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10669 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10671 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10672 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10673 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10675 if test "$COM" = "MSC"; then # override the above
10676 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10677 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10680 if test "$with_system_harfbuzz" = "yes"; then
10681 if test "$with_system_graphite" = "no"; then
10682 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10684 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10686 save_CFLAGS="$CFLAGS"
10687 LIBS="$LIBS $HARFBUZZ_LIBS"
10688 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10689 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10691 CFLAGS="$save_CFLAGS"
10693 if test "$with_system_graphite" = "yes"; then
10694 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10698 if test "$USING_X11" = TRUE; then
10701 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10703 if test -z "$x_includes"; then
10704 x_includes="default_x_includes"
10706 if test -z "$x_libraries"; then
10707 x_libraries="default_x_libraries"
10709 CFLAGS="$CFLAGS $X_CFLAGS"
10710 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10711 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10713 x_includes="no_x_includes"
10714 x_libraries="no_x_libraries"
10717 if test "$USING_X11" = TRUE; then
10718 dnl ===================================================================
10719 dnl Check for extension headers
10720 dnl ===================================================================
10721 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10722 [#include <X11/extensions/shape.h>])
10724 # vcl needs ICE and SM
10725 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10726 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10727 [AC_MSG_ERROR(ICE library not found)])
10728 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10729 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10730 [AC_MSG_ERROR(SM library not found)])
10733 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10734 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10735 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10738 dnl ===================================================================
10739 dnl Check for system Xrender
10740 dnl ===================================================================
10741 AC_MSG_CHECKING([whether to use Xrender])
10742 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10743 AC_MSG_RESULT([yes])
10744 PKG_CHECK_MODULES(XRENDER, xrender)
10745 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10746 FilterLibs "${XRENDER_LIBS}"
10747 XRENDER_LIBS="${filteredlibs}"
10748 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10749 [AC_MSG_ERROR(libXrender not found or functional)], [])
10750 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10751 [AC_MSG_ERROR(Xrender not found. install X)], [])
10753 AC_MSG_RESULT([no])
10755 AC_SUBST(XRENDER_CFLAGS)
10756 AC_SUBST(XRENDER_LIBS)
10758 dnl ===================================================================
10759 dnl Check for XRandr
10760 dnl ===================================================================
10761 AC_MSG_CHECKING([whether to enable RandR support])
10762 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10763 AC_MSG_RESULT([yes])
10764 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10765 if test "$ENABLE_RANDR" != "TRUE"; then
10766 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10767 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10769 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10770 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10771 XRANDR_LIBS="-lXrandr "
10772 ENABLE_RANDR="TRUE"
10774 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10775 FilterLibs "${XRANDR_LIBS}"
10776 XRANDR_LIBS="${filteredlibs}"
10779 AC_MSG_RESULT([no])
10781 AC_SUBST(XRANDR_CFLAGS)
10782 AC_SUBST(XRANDR_LIBS)
10783 AC_SUBST(ENABLE_RANDR)
10785 if test "$test_webdav" = yes; then
10786 if test -z "$with_webdav"; then
10788 if test "$enable_mpl_subset" = yes; then
10792 WITH_WEBDAV="$with_webdav"
10796 AC_MSG_CHECKING([for webdav library])
10797 case "$WITH_WEBDAV" in
10799 AC_MSG_RESULT([curl])
10800 # curl is already mandatory (almost) and checked elsewhere
10801 if test "$enable_curl" = "no"; then
10802 AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10806 AC_MSG_RESULT([serf])
10807 # Check for system apr-util
10808 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10809 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10810 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10811 if test "$COM" = "MSC"; then
10813 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10814 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10817 # Check for system serf
10818 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10821 AC_MSG_RESULT([neon])
10822 # Check for system neon
10823 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10824 if test "$with_system_neon" = "yes"; then
10825 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10829 AC_SUBST(NEON_VERSION)
10832 AC_MSG_RESULT([none, disabled])
10836 AC_SUBST(WITH_WEBDAV)
10838 dnl ===================================================================
10839 dnl Check for disabling cve_tests
10840 dnl ===================================================================
10841 AC_MSG_CHECKING([whether to execute CVE tests])
10842 # If not explicitly enabled or disabled, default
10843 if test -z "$enable_cve_tests"; then
10846 # Default cves off for Windows with its wild and wonderful
10847 # variety of AV software kicking in and panicking
10848 enable_cve_tests=no
10852 enable_cve_tests=yes
10856 if test "$enable_cve_tests" = "no"; then
10857 AC_MSG_RESULT([no])
10858 DISABLE_CVE_TESTS=TRUE
10859 AC_SUBST(DISABLE_CVE_TESTS)
10861 AC_MSG_RESULT([yes])
10864 dnl ===================================================================
10865 dnl Check for enabling chart XShape tests
10866 dnl ===================================================================
10867 AC_MSG_CHECKING([whether to execute chart XShape tests])
10868 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10869 AC_MSG_RESULT([yes])
10870 ENABLE_CHART_TESTS=TRUE
10871 AC_SUBST(ENABLE_CHART_TESTS)
10873 AC_MSG_RESULT([no])
10876 dnl ===================================================================
10877 dnl Check for system openssl
10878 dnl ===================================================================
10880 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10881 if test "$enable_openssl" = "yes"; then
10882 AC_MSG_RESULT([no])
10883 ENABLE_OPENSSL=TRUE
10884 if test "$_os" = Darwin ; then
10885 # OpenSSL is deprecated when building for 10.7 or later.
10887 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10888 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10890 with_system_openssl=no
10891 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10892 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10893 && test "$with_system_openssl" != "no"; then
10894 with_system_openssl=yes
10895 SYSTEM_OPENSSL=TRUE
10897 OPENSSL_LIBS="-lssl -lcrypto"
10899 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10901 if test "$with_system_openssl" = "yes"; then
10902 AC_MSG_CHECKING([whether openssl supports SHA512])
10904 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10905 SHA512_CTX context;
10906 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10910 AC_MSG_RESULT([yes])
10912 # warn that although OpenSSL is disabled, system libraries may depend on it
10913 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10914 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10917 AC_SUBST([ENABLE_OPENSSL])
10919 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10920 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10921 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10922 enable_cipher_openssl_backend=no
10924 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10927 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10928 ENABLE_CIPHER_OPENSSL_BACKEND=
10929 if test "$enable_cipher_openssl_backend" = yes; then
10930 AC_MSG_RESULT([yes])
10931 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10933 AC_MSG_RESULT([no])
10935 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10937 dnl ===================================================================
10938 dnl Select the crypto backends used by LO
10939 dnl ===================================================================
10941 if test "$build_crypto" = yes; then
10942 if test "$OS" = WNT; then
10943 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10944 AC_DEFINE([USE_CRYPTO_MSCAPI])
10945 elif test "$ENABLE_NSS" = TRUE; then
10946 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10947 AC_DEFINE([USE_CRYPTO_NSS])
10951 dnl ===================================================================
10952 dnl Check for building gnutls
10953 dnl ===================================================================
10954 AC_MSG_CHECKING([whether to use gnutls])
10955 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10956 AC_MSG_RESULT([yes])
10957 AM_PATH_LIBGCRYPT()
10958 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10959 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10960 available in the system to use as replacement.]]))
10961 FilterLibs "${LIBGCRYPT_LIBS}"
10962 LIBGCRYPT_LIBS="${filteredlibs}"
10964 AC_MSG_RESULT([no])
10967 AC_SUBST([LIBGCRYPT_CFLAGS])
10968 AC_SUBST([LIBGCRYPT_LIBS])
10970 dnl ===================================================================
10971 dnl Check for system redland
10972 dnl ===================================================================
10973 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10974 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10975 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10976 if test "$with_system_redland" = "yes"; then
10977 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10978 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10984 AC_SUBST(RAPTOR_MAJOR)
10985 AC_SUBST(RASQAL_MAJOR)
10986 AC_SUBST(REDLAND_MAJOR)
10988 dnl ===================================================================
10989 dnl Check for system hunspell
10990 dnl ===================================================================
10991 AC_MSG_CHECKING([which libhunspell to use])
10992 if test "$with_system_hunspell" = "yes"; then
10993 AC_MSG_RESULT([external])
10994 SYSTEM_HUNSPELL=TRUE
10995 AC_LANG_PUSH([C++])
10996 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10997 if test "$HUNSPELL_PC" != "TRUE"; then
10998 AC_CHECK_HEADER(hunspell.hxx, [],
11000 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11001 [AC_MSG_ERROR(hunspell headers not found.)], [])
11003 AC_CHECK_LIB([hunspell], [main], [:],
11004 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11005 HUNSPELL_LIBS=-lhunspell
11008 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11009 FilterLibs "${HUNSPELL_LIBS}"
11010 HUNSPELL_LIBS="${filteredlibs}"
11012 AC_MSG_RESULT([internal])
11014 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11015 if test "$COM" = "MSC"; then
11016 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11018 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11020 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11022 AC_SUBST(SYSTEM_HUNSPELL)
11023 AC_SUBST(HUNSPELL_CFLAGS)
11024 AC_SUBST(HUNSPELL_LIBS)
11026 dnl ===================================================================
11027 dnl Check for system zxing
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([whether to use zxing])
11030 if test "$enable_zxing" = "no"; then
11031 AC_MSG_RESULT([no])
11035 AC_MSG_RESULT([yes])
11037 AC_MSG_CHECKING([which libzxing to use])
11038 if test "$with_system_zxing" = "yes"; then
11039 AC_MSG_RESULT([external])
11041 AC_LANG_PUSH([C++])
11042 AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11043 [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11044 ZXING_CFLAGS=-I/usr/include/ZXing
11045 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11046 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11047 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11049 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11050 FilterLibs "${ZXING_LIBS}"
11051 ZXING_LIBS="${filteredlibs}"
11053 AC_MSG_RESULT([internal])
11055 BUILD_TYPE="$BUILD_TYPE ZXING"
11057 if test "$ENABLE_ZXING" = TRUE; then
11058 AC_DEFINE(ENABLE_ZXING)
11061 AC_SUBST(SYSTEM_ZXING)
11062 AC_SUBST(ENABLE_ZXING)
11063 AC_SUBST(ZXING_CFLAGS)
11064 AC_SUBST(ZXING_LIBS)
11066 dnl ===================================================================
11067 dnl Check for system box2d
11068 dnl ===================================================================
11069 AC_MSG_CHECKING([which box2d to use])
11070 if test "$with_system_box2d" = "yes"; then
11071 AC_MSG_RESULT([external])
11073 AC_LANG_PUSH([C++])
11074 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11075 [BOX2D_H_FOUND='FALSE'])
11076 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11078 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11080 # fail this. there's no other alternative to check when we are here.
11081 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11082 [AC_MSG_ERROR(box2d headers not found.)])
11084 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11086 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11087 [ AC_MSG_ERROR(box2d library not found.) ], [])
11088 BOX2D_LIBS=-l$_BOX2D_LIB
11090 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11091 FilterLibs "${BOX2D_LIBS}"
11092 BOX2D_LIBS="${filteredlibs}"
11094 AC_MSG_RESULT([internal])
11096 BUILD_TYPE="$BUILD_TYPE BOX2D"
11098 AC_SUBST(SYSTEM_BOX2D)
11099 AC_SUBST(BOX2D_CFLAGS)
11100 AC_SUBST(BOX2D_LIBS)
11102 dnl ===================================================================
11103 dnl Checking for altlinuxhyph
11104 dnl ===================================================================
11105 AC_MSG_CHECKING([which altlinuxhyph to use])
11106 if test "$with_system_altlinuxhyph" = "yes"; then
11107 AC_MSG_RESULT([external])
11109 AC_CHECK_HEADER(hyphen.h, [],
11110 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11111 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11112 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11113 [#include <hyphen.h>])
11114 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11115 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11116 if test -z "$HYPHEN_LIB"; then
11117 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11118 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11120 if test -z "$HYPHEN_LIB"; then
11121 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11122 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11125 AC_MSG_RESULT([internal])
11127 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11128 if test "$COM" = "MSC"; then
11129 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11131 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11134 AC_SUBST(SYSTEM_HYPH)
11135 AC_SUBST(HYPHEN_LIB)
11137 dnl ===================================================================
11138 dnl Checking for mythes
11139 dnl ===================================================================
11140 AC_MSG_CHECKING([which mythes to use])
11141 if test "$with_system_mythes" = "yes"; then
11142 AC_MSG_RESULT([external])
11144 AC_LANG_PUSH([C++])
11145 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11146 if test "$MYTHES_PKGCONFIG" = "no"; then
11147 AC_CHECK_HEADER(mythes.hxx, [],
11148 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11149 AC_CHECK_LIB([mythes-1.2], [main], [:],
11150 [ MYTHES_FOUND=no], [])
11151 if test "$MYTHES_FOUND" = "no"; then
11152 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11153 [ MYTHES_FOUND=no], [])
11155 if test "$MYTHES_FOUND" = "no"; then
11156 AC_MSG_ERROR([mythes library not found!.])
11160 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11161 FilterLibs "${MYTHES_LIBS}"
11162 MYTHES_LIBS="${filteredlibs}"
11164 AC_MSG_RESULT([internal])
11166 BUILD_TYPE="$BUILD_TYPE MYTHES"
11167 if test "$COM" = "MSC"; then
11168 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11170 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11173 AC_SUBST(SYSTEM_MYTHES)
11174 AC_SUBST(MYTHES_CFLAGS)
11175 AC_SUBST(MYTHES_LIBS)
11177 dnl ===================================================================
11178 dnl How should we build the linear programming solver ?
11179 dnl ===================================================================
11182 AC_MSG_CHECKING([whether to build with CoinMP])
11183 if test "$enable_coinmp" != "no"; then
11185 AC_MSG_RESULT([yes])
11186 if test "$with_system_coinmp" = "yes"; then
11188 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11189 FilterLibs "${COINMP_LIBS}"
11190 COINMP_LIBS="${filteredlibs}"
11192 BUILD_TYPE="$BUILD_TYPE COINMP"
11195 AC_MSG_RESULT([no])
11197 AC_SUBST(ENABLE_COINMP)
11198 AC_SUBST(SYSTEM_COINMP)
11199 AC_SUBST(COINMP_CFLAGS)
11200 AC_SUBST(COINMP_LIBS)
11203 AC_MSG_CHECKING([whether to build with lpsolve])
11204 if test "$enable_lpsolve" != "no"; then
11205 ENABLE_LPSOLVE=TRUE
11206 AC_MSG_RESULT([yes])
11208 AC_MSG_RESULT([no])
11210 AC_SUBST(ENABLE_LPSOLVE)
11212 if test "$ENABLE_LPSOLVE" = TRUE; then
11213 AC_MSG_CHECKING([which lpsolve to use])
11214 if test "$with_system_lpsolve" = "yes"; then
11215 AC_MSG_RESULT([external])
11216 SYSTEM_LPSOLVE=TRUE
11217 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11218 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11220 # some systems need this. Like Ubuntu...
11221 AC_CHECK_LIB(m, floor)
11222 AC_CHECK_LIB(dl, dlopen)
11223 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11224 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11227 AC_MSG_RESULT([internal])
11229 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11232 AC_SUBST(SYSTEM_LPSOLVE)
11234 dnl ===================================================================
11235 dnl Checking for libexttextcat
11236 dnl ===================================================================
11237 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11238 if test "$with_system_libexttextcat" = "yes"; then
11239 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11241 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11243 dnl ===================================================================
11244 dnl Checking for libnumbertext
11245 dnl ===================================================================
11246 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11247 if test "$with_system_libnumbertext" = "yes"; then
11248 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11249 SYSTEM_LIBNUMBERTEXT=YES
11251 SYSTEM_LIBNUMBERTEXT=
11252 AC_LANG_PUSH([C++])
11253 save_CPPFLAGS=$CPPFLAGS
11254 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11255 AC_CHECK_HEADERS([codecvt regex])
11256 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11257 [ LIBNUMBERTEXT_CFLAGS=''
11258 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11259 Enable libnumbertext fallback (missing number to number name conversion).])
11261 CPPFLAGS=$save_CPPFLAGS
11264 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11265 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11266 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11268 dnl ***************************************
11269 dnl testing libc version for Linux...
11270 dnl ***************************************
11271 if test "$_os" = "Linux"; then
11272 AC_MSG_CHECKING([whether the libc is recent enough])
11273 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11274 #include <features.h>
11275 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11276 #error glibc >= 2.1 is required
11278 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11281 dnl =========================================
11282 dnl Check for uuidgen
11283 dnl =========================================
11284 if test "$_os" = "WINNT"; then
11285 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11286 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11287 UUIDGEN=uuidgen.exe
11290 AC_PATH_PROG([UUIDGEN], [uuidgen])
11291 if test -z "$UUIDGEN"; then
11292 AC_MSG_WARN([uuid is needed for building installation sets])
11296 dnl ***************************************
11297 dnl Checking for bison and flex
11298 dnl ***************************************
11299 AC_PATH_PROG(BISON, bison)
11300 if test -z "$BISON"; then
11301 AC_MSG_ERROR([no bison found in \$PATH, install it])
11303 AC_MSG_CHECKING([the bison version])
11304 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11305 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11306 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11309 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]
11310 dnl typedef union YYSTYPE
11313 dnl while at least 3.4.1 is know to be good:
11314 if test "$COMPILER_PLUGINS" = TRUE; then
11315 if test "$_bison_longver" -lt 2004; then
11316 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11319 if test "$_bison_longver" -lt 2000; then
11320 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11326 AC_PATH_PROG(FLEX, flex)
11327 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11328 FLEX=`cygpath -m $FLEX`
11330 if test -z "$FLEX"; then
11331 AC_MSG_ERROR([no flex found in \$PATH, install it])
11333 AC_MSG_CHECKING([the flex version])
11334 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11335 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11336 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11340 dnl ***************************************
11341 dnl Checking for patch
11342 dnl ***************************************
11343 AC_PATH_PROG(PATCH, patch)
11344 if test -z "$PATCH"; then
11345 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11348 dnl On Solaris or macOS, check if --with-gnu-patch was used
11349 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11350 if test -z "$with_gnu_patch"; then
11353 if test -x "$with_gnu_patch"; then
11354 GNUPATCH=$with_gnu_patch
11356 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11360 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11361 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11362 AC_MSG_RESULT([yes])
11364 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11370 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11371 GNUPATCH=`cygpath -m $GNUPATCH`
11374 dnl We also need to check for --with-gnu-cp
11376 if test -z "$with_gnu_cp"; then
11377 # check the place where the good stuff is hidden on Solaris...
11378 if test -x /usr/gnu/bin/cp; then
11379 GNUCP=/usr/gnu/bin/cp
11381 AC_PATH_PROGS(GNUCP, gnucp cp)
11383 if test -z $GNUCP; then
11384 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11387 if test -x "$with_gnu_cp"; then
11390 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11394 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11395 GNUCP=`cygpath -m $GNUCP`
11398 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11399 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11400 AC_MSG_RESULT([yes])
11401 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11402 AC_MSG_RESULT([yes])
11404 case "$build_os" in
11405 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11408 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11411 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11420 dnl ***************************************
11421 dnl testing assembler path
11422 dnl ***************************************
11424 if test "$_os" = "WINNT"; then
11425 case "$WIN_HOST_ARCH" in
11426 x86) assembler=ml.exe ;;
11427 x64) assembler=ml64.exe ;;
11428 arm64) assembler=armasm64.exe ;;
11431 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11432 if test -f "$MSVC_HOST_PATH/$assembler"; then
11433 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11434 AC_MSG_RESULT([$ML_EXE])
11436 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11442 dnl ===================================================================
11443 dnl We need zip and unzip
11444 dnl ===================================================================
11445 AC_PATH_PROG(ZIP, zip)
11446 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11447 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11448 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],,)
11451 AC_PATH_PROG(UNZIP, unzip)
11452 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11454 dnl ===================================================================
11455 dnl Zip must be a specific type for different build types.
11456 dnl ===================================================================
11457 if test $build_os = cygwin; then
11458 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11459 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11463 dnl ===================================================================
11464 dnl We need touch with -h option support.
11465 dnl ===================================================================
11466 AC_PATH_PROG(TOUCH, touch)
11467 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11468 touch "$WARNINGS_FILE"
11469 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11470 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],,)
11473 dnl ===================================================================
11474 dnl Check for system epoxy
11475 dnl ===================================================================
11476 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11478 dnl ===================================================================
11479 dnl Set vcl option: coordinate device in double or sal_Int32
11480 dnl ===================================================================
11482 dnl disabled for now, we don't want subtle differences between OSs
11483 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11484 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11485 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11486 dnl AC_MSG_RESULT([double])
11488 dnl AC_MSG_RESULT([sal_Int32])
11491 dnl ===================================================================
11492 dnl Show which vclplugs will be built.
11493 dnl ===================================================================
11495 if test "$USING_X11" != TRUE; then
11500 if test "x$enable_gtk3" = "xyes"; then
11502 AC_DEFINE(ENABLE_GTK3)
11505 AC_SUBST(ENABLE_GTK3)
11507 ENABLE_GTK3_KDE5=""
11508 if test "x$enable_gtk3_kde5" = "xyes"; then
11509 ENABLE_GTK3_KDE5="TRUE"
11510 AC_DEFINE(ENABLE_GTK3_KDE5)
11513 AC_SUBST(ENABLE_GTK3_KDE5)
11516 if test "x$enable_gtk4" = "xyes"; then
11518 AC_DEFINE(ENABLE_GTK4)
11521 AC_SUBST(ENABLE_GTK4)
11524 if test "x$enable_qt5" = "xyes"; then
11526 AC_DEFINE(ENABLE_QT5)
11529 AC_SUBST(ENABLE_QT5)
11532 if test "x$enable_qt6" = "xyes"; then
11534 AC_DEFINE(ENABLE_QT6)
11537 AC_SUBST(ENABLE_QT6)
11541 if test "x$enable_kf5" = "xyes"; then
11543 AC_DEFINE(ENABLE_KF5)
11546 AC_SUBST(ENABLE_KF5)
11548 if test "x$USING_X11" = "xyes"; then
11552 if test "$_os" = "WINNT"; then
11554 elif test "$_os" = "Darwin"; then
11556 elif test "$_os" = "iOS"; then
11558 elif test "$_os" = Android; then
11562 build_vcl_plugins="$R"
11563 if test -z "$build_vcl_plugins"; then
11564 build_vcl_plugins=" none"
11566 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11568 AC_SUBST([VCL_PLUGIN_INFO])
11570 dnl ===================================================================
11571 dnl Check for GTK libraries
11572 dnl ===================================================================
11576 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11577 if test "$with_system_cairo" = no; then
11578 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11580 : ${with_system_cairo:=yes}
11581 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)
11582 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11583 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11584 FilterLibs "${GTK3_LIBS}"
11585 GTK3_LIBS="${filteredlibs}"
11587 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11588 if test "$with_system_epoxy" != "yes"; then
11589 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11590 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11591 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11594 AC_SUBST(GTK3_LIBS)
11595 AC_SUBST(GTK3_CFLAGS)
11599 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11600 if test "$with_system_cairo" = no; then
11601 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11603 : ${with_system_cairo:=yes}
11604 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11605 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11606 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11607 FilterLibs "${GTK4_LIBS}"
11608 GTK4_LIBS="${filteredlibs}"
11610 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11611 if test "$with_system_epoxy" != "yes"; then
11612 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11613 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11614 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11617 AC_SUBST(GTK4_LIBS)
11618 AC_SUBST(GTK4_CFLAGS)
11620 if test "$enable_introspection" = yes; then
11621 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11622 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11624 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11628 dnl ===================================================================
11629 dnl check for dbus support
11630 dnl ===================================================================
11634 DBUS_GLIB_CFLAGS=""
11638 if test "$enable_dbus" = "no"; then
11642 AC_MSG_CHECKING([whether to enable DBUS support])
11643 if test "$test_dbus" = "yes"; then
11645 AC_MSG_RESULT([yes])
11646 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11647 AC_DEFINE(ENABLE_DBUS)
11648 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11649 FilterLibs "${DBUS_LIBS}"
11650 DBUS_LIBS="${filteredlibs}"
11652 # Glib is needed for BluetoothServer
11653 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11654 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11656 DBUS_HAVE_GLIB="TRUE"
11657 AC_DEFINE(DBUS_HAVE_GLIB,1)
11659 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11662 AC_MSG_RESULT([no])
11665 AC_SUBST(ENABLE_DBUS)
11666 AC_SUBST(DBUS_CFLAGS)
11667 AC_SUBST(DBUS_LIBS)
11668 AC_SUBST(DBUS_GLIB_CFLAGS)
11669 AC_SUBST(DBUS_GLIB_LIBS)
11670 AC_SUBST(DBUS_HAVE_GLIB)
11672 AC_MSG_CHECKING([whether to enable Impress remote control])
11673 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11674 AC_MSG_RESULT([yes])
11675 ENABLE_SDREMOTE=TRUE
11676 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11678 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11679 # The Bluetooth code doesn't compile with macOS SDK 10.15
11680 if test "$enable_sdremote_bluetooth" = yes; then
11681 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11683 enable_sdremote_bluetooth=no
11685 # If not explicitly enabled or disabled, default
11686 if test -z "$enable_sdremote_bluetooth"; then
11689 # Default to yes for these
11690 enable_sdremote_bluetooth=yes
11694 enable_sdremote_bluetooth=no
11698 # $enable_sdremote_bluetooth is guaranteed non-empty now
11700 if test "$enable_sdremote_bluetooth" != "no"; then
11701 if test "$OS" = "LINUX"; then
11702 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11703 AC_MSG_RESULT([yes])
11704 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11705 dnl ===================================================================
11706 dnl Check for system bluez
11707 dnl ===================================================================
11708 AC_MSG_CHECKING([which Bluetooth header to use])
11709 if test "$with_system_bluez" = "yes"; then
11710 AC_MSG_RESULT([external])
11711 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11712 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11715 AC_MSG_RESULT([internal])
11719 AC_MSG_RESULT([no, dbus disabled])
11720 ENABLE_SDREMOTE_BLUETOOTH=
11724 AC_MSG_RESULT([yes])
11725 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11729 AC_MSG_RESULT([no])
11730 ENABLE_SDREMOTE_BLUETOOTH=
11736 AC_MSG_RESULT([no])
11738 AC_SUBST(ENABLE_SDREMOTE)
11739 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11740 AC_SUBST(SYSTEM_BLUEZ)
11742 dnl ===================================================================
11743 dnl Check whether to enable GIO support
11744 dnl ===================================================================
11745 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11746 AC_MSG_CHECKING([whether to enable GIO support])
11747 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11748 dnl Need at least 2.26 for the dbus support.
11749 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11750 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11751 if test "$ENABLE_GIO" = "TRUE"; then
11752 AC_DEFINE(ENABLE_GIO)
11753 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11754 FilterLibs "${GIO_LIBS}"
11755 GIO_LIBS="${filteredlibs}"
11758 AC_MSG_RESULT([no])
11761 AC_SUBST(ENABLE_GIO)
11762 AC_SUBST(GIO_CFLAGS)
11766 dnl ===================================================================
11768 SPLIT_APP_MODULES=""
11769 if test "$enable_split_app_modules" = "yes"; then
11770 SPLIT_APP_MODULES="TRUE"
11772 AC_SUBST(SPLIT_APP_MODULES)
11774 SPLIT_OPT_FEATURES=""
11775 if test "$enable_split_opt_features" = "yes"; then
11776 SPLIT_OPT_FEATURES="TRUE"
11778 AC_SUBST(SPLIT_OPT_FEATURES)
11780 dnl ===================================================================
11781 dnl Check whether the GStreamer libraries are available.
11782 dnl ===================================================================
11784 ENABLE_GSTREAMER_1_0=""
11786 if test "$test_gstreamer_1_0" = yes; then
11788 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11789 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11790 ENABLE_GSTREAMER_1_0="TRUE"
11791 AC_MSG_RESULT([yes])
11792 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11793 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11794 FilterLibs "${GSTREAMER_1_0_LIBS}"
11795 GSTREAMER_1_0_LIBS="${filteredlibs}"
11796 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11798 AC_MSG_RESULT([no])
11801 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11802 AC_SUBST(GSTREAMER_1_0_LIBS)
11803 AC_SUBST(ENABLE_GSTREAMER_1_0)
11805 ENABLE_OPENGL_TRANSITIONS=
11806 ENABLE_OPENGL_CANVAS=
11807 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11809 elif test "$_os" = "Darwin"; then
11810 # We use frameworks on macOS, no need for detail checks
11811 ENABLE_OPENGL_TRANSITIONS=TRUE
11812 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11813 ENABLE_OPENGL_CANVAS=TRUE
11814 elif test $_os = WINNT; then
11815 ENABLE_OPENGL_TRANSITIONS=TRUE
11816 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11817 ENABLE_OPENGL_CANVAS=TRUE
11819 if test "$USING_X11" = TRUE; then
11820 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11821 ENABLE_OPENGL_TRANSITIONS=TRUE
11822 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11823 ENABLE_OPENGL_CANVAS=TRUE
11827 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11828 AC_SUBST(ENABLE_OPENGL_CANVAS)
11830 dnl =================================================
11831 dnl Check whether to build with OpenCL support.
11832 dnl =================================================
11834 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11835 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11836 # platform (optional at run-time, used through clew).
11837 BUILD_TYPE="$BUILD_TYPE OPENCL"
11838 AC_DEFINE(HAVE_FEATURE_OPENCL)
11841 dnl =================================================
11842 dnl Check whether to build with dconf support.
11843 dnl =================================================
11845 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11846 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11847 if test "$enable_dconf" = yes; then
11848 AC_MSG_ERROR([dconf not found])
11853 AC_MSG_CHECKING([whether to enable dconf])
11854 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11858 AC_MSG_RESULT([no])
11861 AC_DEFINE(ENABLE_DCONF)
11862 AC_MSG_RESULT([yes])
11864 AC_SUBST([DCONF_CFLAGS])
11865 AC_SUBST([DCONF_LIBS])
11866 AC_SUBST([ENABLE_DCONF])
11869 AC_MSG_CHECKING([whether to build the PDF import feature])
11871 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11872 AC_MSG_RESULT([yes])
11873 ENABLE_PDFIMPORT=TRUE
11874 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11876 AC_MSG_RESULT([no])
11880 AC_MSG_CHECKING([whether to build PDFium])
11882 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11883 AC_MSG_RESULT([yes])
11885 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11887 AC_MSG_RESULT([no])
11889 AC_SUBST(ENABLE_PDFIUM)
11891 dnl ===================================================================
11892 dnl Check for poppler
11893 dnl ===================================================================
11895 AC_MSG_CHECKING([whether to build Poppler])
11896 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11897 AC_MSG_RESULT([yes])
11898 ENABLE_POPPLER=TRUE
11899 AC_DEFINE(HAVE_FEATURE_POPPLER)
11901 AC_MSG_RESULT([no])
11903 AC_SUBST(ENABLE_POPPLER)
11905 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11906 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11909 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11910 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11913 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11914 dnl ===================================================================
11915 dnl Check for system poppler
11916 dnl ===================================================================
11917 AC_MSG_CHECKING([which PDF import poppler to use])
11918 if test "$with_system_poppler" = "yes"; then
11919 AC_MSG_RESULT([external])
11920 SYSTEM_POPPLER=TRUE
11921 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11922 AC_LANG_PUSH([C++])
11923 save_CXXFLAGS=$CXXFLAGS
11924 save_CPPFLAGS=$CPPFLAGS
11925 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11926 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11927 AC_CHECK_HEADER([cpp/poppler-version.h],
11928 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11930 CXXFLAGS=$save_CXXFLAGS
11931 CPPFLAGS=$save_CPPFLAGS
11933 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11935 FilterLibs "${POPPLER_LIBS}"
11936 POPPLER_LIBS="${filteredlibs}"
11938 AC_MSG_RESULT([internal])
11940 BUILD_TYPE="$BUILD_TYPE POPPLER"
11941 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11943 AC_DEFINE([ENABLE_PDFIMPORT],1)
11945 AC_SUBST(ENABLE_PDFIMPORT)
11946 AC_SUBST(SYSTEM_POPPLER)
11947 AC_SUBST(POPPLER_CFLAGS)
11948 AC_SUBST(POPPLER_LIBS)
11952 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11953 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
11954 if test "$SYSTEM_FREETYPE" = TRUE; then
11955 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
11956 [skia_freetype_ok=yes],
11957 [skia_freetype_ok=no])
11958 else # internal is ok
11959 skia_freetype_ok=yes
11961 AC_MSG_CHECKING([whether to build Skia])
11962 if test "$skia_freetype_ok" = "yes"; then
11963 if test "$enable_skia" = "debug"; then
11964 AC_MSG_RESULT([yes (debug)])
11965 ENABLE_SKIA_DEBUG=TRUE
11967 AC_MSG_RESULT([yes])
11971 AC_DEFINE(HAVE_FEATURE_SKIA)
11972 BUILD_TYPE="$BUILD_TYPE SKIA"
11974 if test "$OS" = "MACOSX"; then
11975 AC_DEFINE(SK_SUPPORT_GPU,1)
11976 AC_DEFINE(SK_METAL,1)
11980 AC_DEFINE(SK_SUPPORT_GPU,1)
11981 AC_DEFINE(SK_VULKAN,1)
11986 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
11987 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
11988 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
11991 AC_MSG_RESULT([no (freetype too old)])
11992 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
11996 AC_MSG_CHECKING([whether to build Skia])
11997 AC_MSG_RESULT([no])
11999 AC_SUBST(ENABLE_SKIA)
12000 AC_SUBST(ENABLE_SKIA_DEBUG)
12002 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12003 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12004 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12005 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12006 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12007 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12008 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12009 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12010 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12011 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12012 HAVE_LO_CLANG_DLLEXPORTINLINES=
12014 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12015 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12016 AC_MSG_CHECKING([for Clang])
12017 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12019 if test "$_os" = "WINNT"; then
12020 AC_MSG_CHECKING([for clang-cl])
12021 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12022 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12023 dnl explicitly set -m32/-m64
12024 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12025 LO_CLANG_CXX="$LO_CLANG_CC"
12026 AC_MSG_RESULT([$LO_CLANG_CC])
12028 AC_MSG_RESULT([no])
12031 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12032 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12035 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12036 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12037 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12038 if test "$clang2_ver" -lt 50002; then
12039 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12044 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12046 CXX="$LO_CLANG_CXX"
12047 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12048 AC_LANG_PUSH([C++])
12049 save_CXXFLAGS=$CXXFLAGS
12050 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12051 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12052 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12053 AC_MSG_RESULT([yes])
12054 ], [AC_MSG_RESULT([no])])
12055 CXXFLAGS=$save_CXXFLAGS
12058 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12059 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.])
12062 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12063 # Skia is the default on Windows, so hard-require Clang.
12064 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12065 if test "$_os" = "WINNT"; then
12066 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
12068 AC_MSG_WARN([Clang compiler not found.])
12073 CXX="$LO_CLANG_CXX"
12074 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12077 flag_sse41=-msse4.1
12078 flag_sse42=-msse4.2
12081 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12082 flag_avx512f=-mavx512f
12086 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12087 AC_LANG_PUSH([C++])
12088 save_CXXFLAGS=$CXXFLAGS
12089 CXXFLAGS="$CXXFLAGS $flag_sse2"
12090 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12091 #include <emmintrin.h>
12093 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12094 c = _mm_xor_si128 (a, b);
12098 [can_compile_sse2=yes],
12099 [can_compile_sse2=no])
12101 CXXFLAGS=$save_CXXFLAGS
12102 AC_MSG_RESULT([${can_compile_sse2}])
12103 if test "${can_compile_sse2}" = "yes" ; then
12104 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12107 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12108 AC_LANG_PUSH([C++])
12109 save_CXXFLAGS=$CXXFLAGS
12110 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12111 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12112 #include <tmmintrin.h>
12114 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12115 c = _mm_maddubs_epi16 (a, b);
12119 [can_compile_ssse3=yes],
12120 [can_compile_ssse3=no])
12122 CXXFLAGS=$save_CXXFLAGS
12123 AC_MSG_RESULT([${can_compile_ssse3}])
12124 if test "${can_compile_ssse3}" = "yes" ; then
12125 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12128 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12129 AC_LANG_PUSH([C++])
12130 save_CXXFLAGS=$CXXFLAGS
12131 CXXFLAGS="$CXXFLAGS $flag_sse41"
12132 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12133 #include <smmintrin.h>
12135 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12136 c = _mm_cmpeq_epi64 (a, b);
12140 [can_compile_sse41=yes],
12141 [can_compile_sse41=no])
12143 CXXFLAGS=$save_CXXFLAGS
12144 AC_MSG_RESULT([${can_compile_sse41}])
12145 if test "${can_compile_sse41}" = "yes" ; then
12146 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12149 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12150 AC_LANG_PUSH([C++])
12151 save_CXXFLAGS=$CXXFLAGS
12152 CXXFLAGS="$CXXFLAGS $flag_sse42"
12153 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12154 #include <nmmintrin.h>
12156 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12157 c = _mm_cmpgt_epi64 (a, b);
12161 [can_compile_sse42=yes],
12162 [can_compile_sse42=no])
12164 CXXFLAGS=$save_CXXFLAGS
12165 AC_MSG_RESULT([${can_compile_sse42}])
12166 if test "${can_compile_sse42}" = "yes" ; then
12167 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12170 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12171 AC_LANG_PUSH([C++])
12172 save_CXXFLAGS=$CXXFLAGS
12173 CXXFLAGS="$CXXFLAGS $flag_avx"
12174 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12175 #include <immintrin.h>
12177 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12178 c = _mm256_xor_ps(a, b);
12182 [can_compile_avx=yes],
12183 [can_compile_avx=no])
12185 CXXFLAGS=$save_CXXFLAGS
12186 AC_MSG_RESULT([${can_compile_avx}])
12187 if test "${can_compile_avx}" = "yes" ; then
12188 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12191 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12192 AC_LANG_PUSH([C++])
12193 save_CXXFLAGS=$CXXFLAGS
12194 CXXFLAGS="$CXXFLAGS $flag_avx2"
12195 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12196 #include <immintrin.h>
12198 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12199 c = _mm256_maddubs_epi16(a, b);
12203 [can_compile_avx2=yes],
12204 [can_compile_avx2=no])
12206 CXXFLAGS=$save_CXXFLAGS
12207 AC_MSG_RESULT([${can_compile_avx2}])
12208 if test "${can_compile_avx2}" = "yes" ; then
12209 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12212 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12213 AC_LANG_PUSH([C++])
12214 save_CXXFLAGS=$CXXFLAGS
12215 CXXFLAGS="$CXXFLAGS $flag_avx512"
12216 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12217 #include <immintrin.h>
12219 __m512i a = _mm512_loadu_si512(0);
12220 __m512d v1 = _mm512_load_pd(0);
12221 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12222 __m512d v2 = _mm512_abs_pd(v1);
12226 [can_compile_avx512=yes],
12227 [can_compile_avx512=no])
12229 CXXFLAGS=$save_CXXFLAGS
12230 AC_MSG_RESULT([${can_compile_avx512}])
12231 if test "${can_compile_avx512}" = "yes" ; then
12232 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12233 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12236 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12237 AC_LANG_PUSH([C++])
12238 save_CXXFLAGS=$CXXFLAGS
12239 CXXFLAGS="$CXXFLAGS $flag_f16c"
12240 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12241 #include <immintrin.h>
12243 __m128i a = _mm_set1_epi32 (0);
12245 c = _mm_cvtph_ps(a);
12249 [can_compile_f16c=yes],
12250 [can_compile_f16c=no])
12252 CXXFLAGS=$save_CXXFLAGS
12253 AC_MSG_RESULT([${can_compile_f16c}])
12254 if test "${can_compile_f16c}" = "yes" ; then
12255 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12258 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12259 AC_LANG_PUSH([C++])
12260 save_CXXFLAGS=$CXXFLAGS
12261 CXXFLAGS="$CXXFLAGS $flag_fma"
12262 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12263 #include <immintrin.h>
12265 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12266 d = _mm256_fmadd_ps(a, b, c);
12270 [can_compile_fma=yes],
12271 [can_compile_fma=no])
12273 CXXFLAGS=$save_CXXFLAGS
12274 AC_MSG_RESULT([${can_compile_fma}])
12275 if test "${can_compile_fma}" = "yes" ; then
12276 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12283 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12285 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12286 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12290 save_CFLAGS=$CFLAGS
12291 CFLAGS="$CFLAGS --ccache-skip -O2"
12292 dnl an empty program will do, we're checking the compiler flags
12293 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12294 [use_ccache=yes], [use_ccache=no])
12295 CFLAGS=$save_CFLAGS
12297 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12298 AC_MSG_RESULT([yes])
12300 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12301 AC_MSG_RESULT([no])
12305 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12306 AC_LANG_PUSH([C++])
12308 CXX="$LO_CLANG_CXX"
12309 save_CXXFLAGS=$CXXFLAGS
12310 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12311 dnl an empty program will do, we're checking the compiler flags
12312 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12313 [use_ccache=yes], [use_ccache=no])
12314 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12315 AC_MSG_RESULT([yes])
12317 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12318 AC_MSG_RESULT([no])
12320 CXXFLAGS=$save_CXXFLAGS
12325 AC_SUBST(LO_CLANG_CC)
12326 AC_SUBST(LO_CLANG_CXX)
12327 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12328 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12329 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12330 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12331 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12332 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12333 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12334 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12335 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12336 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12337 AC_SUBST(CLANG_USE_LD)
12338 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12342 if test "$enable_gpgmepp" = no; then
12343 AC_MSG_CHECKING([whether to enable gpgmepp])
12344 AC_MSG_RESULT([no])
12345 elif test "$enable_mpl_subset" = "yes"; then
12346 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12347 AC_MSG_RESULT([yes])
12348 elif test "$enable_fuzzers" = "yes"; then
12349 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12350 AC_MSG_RESULT([yes])
12351 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12352 dnl ===================================================================
12353 dnl Check for system gpgme
12354 dnl ===================================================================
12355 AC_MSG_CHECKING([which gpgmepp to use])
12356 if test "$with_system_gpgmepp" = "yes"; then
12357 AC_MSG_RESULT([external])
12358 SYSTEM_GPGMEPP=TRUE
12360 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12361 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12362 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12363 # progress_callback is the only func with plain C linkage
12364 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12365 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12366 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12367 AC_CHECK_HEADER(gpgme.h, [],
12368 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12370 AC_MSG_RESULT([internal])
12371 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12372 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12374 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12375 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12376 if test "$_os" != "WINNT"; then
12377 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12378 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12381 ENABLE_GPGMEPP=TRUE
12382 AC_DEFINE([HAVE_FEATURE_GPGME])
12383 AC_PATH_PROG(GPG, gpg)
12384 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12385 # so let's exclude that manually for the moment
12386 if test -n "$GPG" -a "$_os" != "WINNT"; then
12387 # make sure we not only have a working gpgme, but a full working
12388 # gpg installation to run OpenPGP signature verification
12389 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12391 if test "$_os" = "Linux"; then
12393 AC_MSG_CHECKING([for /run/user/$uid])
12394 if test -d /run/user/$uid; then
12395 AC_MSG_RESULT([yes])
12396 AC_PATH_PROG(GPGCONF, gpgconf)
12398 # Older versions of gpgconf are not working as expected, since
12399 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12400 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12401 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12402 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12403 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12404 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12405 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12406 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12407 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12408 if $GPGCONF --dump-options > /dev/null ; then
12409 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12410 AC_MSG_RESULT([yes])
12411 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12412 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12414 AC_MSG_RESULT([no])
12417 AC_MSG_RESULT([no. missing or broken gpgconf?])
12420 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12423 AC_MSG_RESULT([no])
12427 AC_SUBST(ENABLE_GPGMEPP)
12428 AC_SUBST(SYSTEM_GPGMEPP)
12429 AC_SUBST(GPG_ERROR_CFLAGS)
12430 AC_SUBST(GPG_ERROR_LIBS)
12431 AC_SUBST(LIBASSUAN_CFLAGS)
12432 AC_SUBST(LIBASSUAN_LIBS)
12433 AC_SUBST(GPGMEPP_CFLAGS)
12434 AC_SUBST(GPGMEPP_LIBS)
12436 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12437 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12438 AC_MSG_RESULT([yes])
12439 ENABLE_MEDIAWIKI=TRUE
12440 BUILD_TYPE="$BUILD_TYPE XSLTML"
12441 if test "x$with_java" = "xno"; then
12442 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12445 AC_MSG_RESULT([no])
12447 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12449 AC_SUBST(ENABLE_MEDIAWIKI)
12451 AC_MSG_CHECKING([whether to build the Report Builder])
12452 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12453 AC_MSG_RESULT([yes])
12454 ENABLE_REPORTBUILDER=TRUE
12455 AC_MSG_CHECKING([which jfreereport libs to use])
12456 if test "$with_system_jfreereport" = "yes"; then
12457 SYSTEM_JFREEREPORT=TRUE
12458 AC_MSG_RESULT([external])
12459 if test -z $SAC_JAR; then
12460 SAC_JAR=/usr/share/java/sac.jar
12462 if ! test -f $SAC_JAR; then
12463 AC_MSG_ERROR(sac.jar not found.)
12466 if test -z $LIBXML_JAR; then
12467 if test -f /usr/share/java/libxml-1.0.0.jar; then
12468 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12469 elif test -f /usr/share/java/libxml.jar; then
12470 LIBXML_JAR=/usr/share/java/libxml.jar
12472 AC_MSG_ERROR(libxml.jar replacement not found.)
12474 elif ! test -f $LIBXML_JAR; then
12475 AC_MSG_ERROR(libxml.jar not found.)
12478 if test -z $FLUTE_JAR; then
12479 if test -f /usr/share/java/flute-1.3.0.jar; then
12480 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12481 elif test -f /usr/share/java/flute.jar; then
12482 FLUTE_JAR=/usr/share/java/flute.jar
12484 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12486 elif ! test -f $FLUTE_JAR; then
12487 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12490 if test -z $JFREEREPORT_JAR; then
12491 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12492 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12493 elif test -f /usr/share/java/flow-engine.jar; then
12494 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12496 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12498 elif ! test -f $JFREEREPORT_JAR; then
12499 AC_MSG_ERROR(jfreereport.jar not found.)
12502 if test -z $LIBLAYOUT_JAR; then
12503 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12504 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12505 elif test -f /usr/share/java/liblayout.jar; then
12506 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12508 AC_MSG_ERROR(liblayout.jar replacement not found.)
12510 elif ! test -f $LIBLAYOUT_JAR; then
12511 AC_MSG_ERROR(liblayout.jar not found.)
12514 if test -z $LIBLOADER_JAR; then
12515 if test -f /usr/share/java/libloader-1.0.0.jar; then
12516 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12517 elif test -f /usr/share/java/libloader.jar; then
12518 LIBLOADER_JAR=/usr/share/java/libloader.jar
12520 AC_MSG_ERROR(libloader.jar replacement not found.)
12522 elif ! test -f $LIBLOADER_JAR; then
12523 AC_MSG_ERROR(libloader.jar not found.)
12526 if test -z $LIBFORMULA_JAR; then
12527 if test -f /usr/share/java/libformula-0.2.0.jar; then
12528 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12529 elif test -f /usr/share/java/libformula.jar; then
12530 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12532 AC_MSG_ERROR(libformula.jar replacement not found.)
12534 elif ! test -f $LIBFORMULA_JAR; then
12535 AC_MSG_ERROR(libformula.jar not found.)
12538 if test -z $LIBREPOSITORY_JAR; then
12539 if test -f /usr/share/java/librepository-1.0.0.jar; then
12540 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12541 elif test -f /usr/share/java/librepository.jar; then
12542 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12544 AC_MSG_ERROR(librepository.jar replacement not found.)
12546 elif ! test -f $LIBREPOSITORY_JAR; then
12547 AC_MSG_ERROR(librepository.jar not found.)
12550 if test -z $LIBFONTS_JAR; then
12551 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12552 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12553 elif test -f /usr/share/java/libfonts.jar; then
12554 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12556 AC_MSG_ERROR(libfonts.jar replacement not found.)
12558 elif ! test -f $LIBFONTS_JAR; then
12559 AC_MSG_ERROR(libfonts.jar not found.)
12562 if test -z $LIBSERIALIZER_JAR; then
12563 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12564 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12565 elif test -f /usr/share/java/libserializer.jar; then
12566 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12568 AC_MSG_ERROR(libserializer.jar replacement not found.)
12570 elif ! test -f $LIBSERIALIZER_JAR; then
12571 AC_MSG_ERROR(libserializer.jar not found.)
12574 if test -z $LIBBASE_JAR; then
12575 if test -f /usr/share/java/libbase-1.0.0.jar; then
12576 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12577 elif test -f /usr/share/java/libbase.jar; then
12578 LIBBASE_JAR=/usr/share/java/libbase.jar
12580 AC_MSG_ERROR(libbase.jar replacement not found.)
12582 elif ! test -f $LIBBASE_JAR; then
12583 AC_MSG_ERROR(libbase.jar not found.)
12587 AC_MSG_RESULT([internal])
12588 SYSTEM_JFREEREPORT=
12589 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12593 AC_MSG_RESULT([no])
12594 ENABLE_REPORTBUILDER=
12595 SYSTEM_JFREEREPORT=
12597 AC_SUBST(ENABLE_REPORTBUILDER)
12598 AC_SUBST(SYSTEM_JFREEREPORT)
12600 AC_SUBST(LIBXML_JAR)
12601 AC_SUBST(FLUTE_JAR)
12602 AC_SUBST(JFREEREPORT_JAR)
12603 AC_SUBST(LIBBASE_JAR)
12604 AC_SUBST(LIBLAYOUT_JAR)
12605 AC_SUBST(LIBLOADER_JAR)
12606 AC_SUBST(LIBFORMULA_JAR)
12607 AC_SUBST(LIBREPOSITORY_JAR)
12608 AC_SUBST(LIBFONTS_JAR)
12609 AC_SUBST(LIBSERIALIZER_JAR)
12611 # scripting provider for BeanShell?
12612 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12613 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12614 AC_MSG_RESULT([yes])
12615 ENABLE_SCRIPTING_BEANSHELL=TRUE
12617 dnl ===================================================================
12618 dnl Check for system beanshell
12619 dnl ===================================================================
12620 AC_MSG_CHECKING([which beanshell to use])
12621 if test "$with_system_beanshell" = "yes"; then
12622 AC_MSG_RESULT([external])
12624 if test -z $BSH_JAR; then
12625 BSH_JAR=/usr/share/java/bsh.jar
12627 if ! test -f $BSH_JAR; then
12628 AC_MSG_ERROR(bsh.jar not found.)
12631 AC_MSG_RESULT([internal])
12633 BUILD_TYPE="$BUILD_TYPE BSH"
12636 AC_MSG_RESULT([no])
12637 ENABLE_SCRIPTING_BEANSHELL=
12638 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12640 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12641 AC_SUBST(SYSTEM_BSH)
12644 # scripting provider for JavaScript?
12645 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12646 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12647 AC_MSG_RESULT([yes])
12648 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12650 dnl ===================================================================
12651 dnl Check for system rhino
12652 dnl ===================================================================
12653 AC_MSG_CHECKING([which rhino to use])
12654 if test "$with_system_rhino" = "yes"; then
12655 AC_MSG_RESULT([external])
12657 if test -z $RHINO_JAR; then
12658 RHINO_JAR=/usr/share/java/js.jar
12660 if ! test -f $RHINO_JAR; then
12661 AC_MSG_ERROR(js.jar not found.)
12664 AC_MSG_RESULT([internal])
12666 BUILD_TYPE="$BUILD_TYPE RHINO"
12670 AC_MSG_RESULT([no])
12671 ENABLE_SCRIPTING_JAVASCRIPT=
12672 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12674 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12675 AC_SUBST(SYSTEM_RHINO)
12676 AC_SUBST(RHINO_JAR)
12678 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12679 # paths should be added to library search path. So lets put all 64-bit
12682 case "$host_cpu" in
12683 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12684 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12685 supports_multilib="yes"
12692 dnl ===================================================================
12693 dnl QT5 Integration
12694 dnl ===================================================================
12700 QT5_GOBJECT_CFLAGS=""
12701 QT5_GOBJECT_LIBS=""
12702 QT5_HAVE_GOBJECT=""
12703 QT5_PLATFORMS_SRCDIR=""
12704 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12705 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12706 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12708 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12709 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12711 if test -n "$supports_multilib"; then
12712 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12715 qt5_test_include="QtWidgets/qapplication.h"
12716 if test "$_os" = "Emscripten"; then
12717 qt5_test_library="libQt5Widgets.a"
12719 qt5_test_library="libQt5Widgets.so"
12722 dnl Check for qmake5
12723 if test -n "$QT5DIR"; then
12724 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12726 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12728 if test "$QMAKE5" = "no"; then
12729 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12731 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12732 if test -z "$qmake5_test_ver"; then
12733 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12735 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12736 qt5_minimal_minor="6"
12737 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12738 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12740 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12744 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12745 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12746 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12747 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12749 AC_MSG_CHECKING([for Qt5 headers])
12751 for inc_dir in $qt5_incdirs; do
12752 if test -r "$inc_dir/$qt5_test_include"; then
12753 qt5_incdir="$inc_dir"
12757 AC_MSG_RESULT([$qt5_incdir])
12758 if test "x$qt5_incdir" = "xno"; then
12759 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12761 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12762 AC_LANG_PUSH([C++])
12763 save_CPPFLAGS=$CPPFLAGS
12764 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12765 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12766 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12767 CPPFLAGS=$save_CPPFLAGS
12770 AC_MSG_CHECKING([for Qt5 libraries])
12772 for lib_dir in $qt5_libdirs; do
12773 if test -r "$lib_dir/$qt5_test_library"; then
12774 qt5_libdir="$lib_dir"
12778 AC_MSG_RESULT([$qt5_libdir])
12779 if test "x$qt5_libdir" = "xno"; then
12780 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12783 if test "$_os" = "Emscripten"; then
12784 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12785 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12787 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12788 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12792 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12793 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12794 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12795 if test "$_os" = "Emscripten"; then
12796 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12799 if test "$USING_X11" = TRUE; then
12800 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12801 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12802 QT5_HAVE_XCB_ICCCM=1
12803 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12805 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)])
12806 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12808 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12809 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12811 AC_DEFINE(QT5_USING_X11)
12814 dnl Check for Meta Object Compiler
12816 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12817 if test "$MOC5" = "no"; then
12818 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12819 the root of your Qt installation by exporting QT5DIR before running "configure".])
12822 if test "$test_gstreamer_1_0" = yes; then
12823 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12825 AC_DEFINE(QT5_HAVE_GOBJECT)
12827 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12831 AC_SUBST(QT5_CFLAGS)
12834 AC_SUBST(QT5_GOBJECT_CFLAGS)
12835 AC_SUBST(QT5_GOBJECT_LIBS)
12836 AC_SUBST(QT5_HAVE_GOBJECT)
12837 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12839 dnl ===================================================================
12840 dnl QT6 Integration
12841 dnl ===================================================================
12847 QT6_PLATFORMS_SRCDIR=""
12848 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12850 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12851 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12853 if test -n "$supports_multilib"; then
12854 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12857 qt6_test_include="QtWidgets/qapplication.h"
12858 if test "$_os" = "Emscripten"; then
12859 qt6_test_library="libQt6Widgets.a"
12861 qt6_test_library="libQt6Widgets.so"
12864 dnl Check for qmake6
12865 if test -n "$QT6DIR"; then
12866 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12868 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12870 if test "$QMAKE6" = "no"; then
12871 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12873 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12874 if test -z "$qmake6_test_ver"; then
12875 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12877 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12880 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12881 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12882 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12883 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12885 AC_MSG_CHECKING([for Qt6 headers])
12887 for inc_dir in $qt6_incdirs; do
12888 if test -r "$inc_dir/$qt6_test_include"; then
12889 qt6_incdir="$inc_dir"
12893 AC_MSG_RESULT([$qt6_incdir])
12894 if test "x$qt6_incdir" = "xno"; then
12895 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12897 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12898 AC_LANG_PUSH([C++])
12899 save_CPPFLAGS=$CPPFLAGS
12900 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12901 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12902 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12903 CPPFLAGS=$save_CPPFLAGS
12906 AC_MSG_CHECKING([for Qt6 libraries])
12908 for lib_dir in $qt6_libdirs; do
12909 if test -r "$lib_dir/$qt6_test_library"; then
12910 qt6_libdir="$lib_dir"
12914 AC_MSG_RESULT([$qt6_libdir])
12915 if test "x$qt6_libdir" = "xno"; then
12916 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12919 if test "$_os" = "Emscripten"; then
12920 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12921 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12923 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12924 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12928 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12929 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12930 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12931 if test "$_os" = "Emscripten"; then
12932 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12935 if test "$USING_X11" = TRUE; then
12936 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12937 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12938 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
12940 AC_DEFINE(QT6_USING_X11)
12943 dnl Check for Meta Object Compiler
12945 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
12946 if test "$MOC6" = "no"; then
12947 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12948 the root of your Qt installation by exporting QT6DIR before running "configure".])
12951 AC_SUBST(QT6_CFLAGS)
12954 AC_SUBST(QT6_PLATFORMS_SRCDIR)
12956 dnl ===================================================================
12957 dnl KF5 Integration
12958 dnl ===================================================================
12962 KF5_CONFIG="kf5-config"
12963 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12964 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12966 if test "$OS" = "HAIKU"; then
12967 haiku_arch="`echo $RTL_ARCH | tr X x`"
12968 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12969 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12972 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12973 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12974 if test -n "$supports_multilib"; then
12975 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12978 kf5_test_include="KF5/kcoreaddons_version.h"
12979 kf5_test_library="libKF5CoreAddons.so"
12980 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12982 dnl kf5 KDE4 support compatibility installed
12983 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12984 if test "$KF5_CONFIG" != "no"; then
12985 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12986 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12989 dnl Check for KF5 headers
12990 AC_MSG_CHECKING([for KF5 headers])
12992 for kf5_check in $kf5_incdirs; do
12993 if test -r "$kf5_check/$kf5_test_include"; then
12994 kf5_incdir="$kf5_check/KF5"
12998 AC_MSG_RESULT([$kf5_incdir])
12999 if test "x$kf5_incdir" = "xno"; then
13000 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13003 dnl Check for KF5 libraries
13004 AC_MSG_CHECKING([for KF5 libraries])
13006 for kf5_check in $kf5_libdirs; do
13007 if test -r "$kf5_check/$kf5_test_library"; then
13008 kf5_libdir="$kf5_check"
13013 AC_MSG_RESULT([$kf5_libdir])
13014 if test "x$kf5_libdir" = "xno"; then
13015 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13018 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"
13019 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13020 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13022 if test "$USING_X11" = TRUE; then
13023 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13026 AC_LANG_PUSH([C++])
13027 save_CXXFLAGS=$CXXFLAGS
13028 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13029 AC_MSG_CHECKING([whether KDE is >= 5.0])
13030 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13031 #include <kcoreaddons_version.h>
13033 int main(int argc, char **argv) {
13034 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13037 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13038 CXXFLAGS=$save_CXXFLAGS
13041 AC_SUBST(KF5_CFLAGS)
13044 dnl ===================================================================
13045 dnl Test whether to include Evolution 2 support
13046 dnl ===================================================================
13047 AC_MSG_CHECKING([whether to enable evolution 2 support])
13048 if test "$enable_evolution2" = yes; then
13049 AC_MSG_RESULT([yes])
13050 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13051 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13052 FilterLibs "${GOBJECT_LIBS}"
13053 GOBJECT_LIBS="${filteredlibs}"
13054 ENABLE_EVOAB2="TRUE"
13056 AC_MSG_RESULT([no])
13058 AC_SUBST(ENABLE_EVOAB2)
13059 AC_SUBST(GOBJECT_CFLAGS)
13060 AC_SUBST(GOBJECT_LIBS)
13062 dnl ===================================================================
13063 dnl Test which themes to include
13064 dnl ===================================================================
13065 AC_MSG_CHECKING([which themes to include])
13066 # if none given use default subset of available themes
13067 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13068 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"
13072 if test "x$with_theme" != "xno"; then
13073 for theme in $with_theme; do
13075 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" ;;
13076 default) real_theme=colibre ;;
13077 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13079 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13082 AC_MSG_RESULT([$WITH_THEMES])
13083 AC_SUBST([WITH_THEMES])
13084 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13085 for theme in $with_theme; do
13087 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13092 ###############################################################################
13093 # Extensions checking
13094 ###############################################################################
13095 AC_MSG_CHECKING([for extensions integration])
13096 if test "x$enable_extension_integration" != "xno"; then
13097 WITH_EXTENSION_INTEGRATION=TRUE
13098 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13099 AC_MSG_RESULT([yes, use integration])
13101 WITH_EXTENSION_INTEGRATION=
13102 AC_MSG_RESULT([no, do not integrate])
13104 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13106 dnl Should any extra extensions be included?
13107 dnl There are standalone tests for each of these below.
13108 WITH_EXTRA_EXTENSIONS=
13109 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13111 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13112 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13113 if test "x$with_java" != "xno"; then
13114 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13115 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13118 AC_MSG_CHECKING([whether to build opens___.ttf])
13119 if test "$enable_build_opensymbol" = "yes"; then
13120 AC_MSG_RESULT([yes])
13121 AC_PATH_PROG(FONTFORGE, fontforge)
13122 if test -z "$FONTFORGE"; then
13123 AC_MSG_ERROR([fontforge not installed])
13126 AC_MSG_RESULT([no])
13127 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
13128 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13130 AC_SUBST(OPENSYMBOL_TTF)
13131 AC_SUBST(FONTFORGE)
13133 dnl ===================================================================
13134 dnl Test whether to include fonts
13135 dnl ===================================================================
13136 AC_MSG_CHECKING([whether to include third-party fonts])
13137 if test "$with_fonts" != "no"; then
13138 AC_MSG_RESULT([yes])
13140 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13141 AC_DEFINE(HAVE_MORE_FONTS)
13143 AC_MSG_RESULT([no])
13145 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13147 AC_SUBST(WITH_FONTS)
13150 dnl ===================================================================
13151 dnl Test whether to enable online update service
13152 dnl ===================================================================
13153 AC_MSG_CHECKING([whether to enable online update])
13154 ENABLE_ONLINE_UPDATE=
13155 ENABLE_ONLINE_UPDATE_MAR=
13157 if test "$enable_online_update" = ""; then
13158 AC_MSG_RESULT([no])
13160 if test "$enable_online_update" = "mar"; then
13161 AC_MSG_RESULT([yes - MAR-based online update])
13162 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13163 if test "$with_update_config" = ""; then
13164 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13166 UPDATE_CONFIG="$with_update_config"
13167 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13168 elif test "$enable_online_update" = "yes"; then
13169 AC_MSG_RESULT([yes])
13170 ENABLE_ONLINE_UPDATE="TRUE"
13172 AC_MSG_RESULT([no])
13175 AC_SUBST(ENABLE_ONLINE_UPDATE)
13176 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13177 AC_SUBST(UPDATE_CONFIG)
13180 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13181 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13182 if test "x$with_privacy_policy_url" = "xundefined"; then
13183 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13186 AC_SUBST(PRIVACY_POLICY_URL)
13187 dnl ===================================================================
13188 dnl Test whether we need bzip2
13189 dnl ===================================================================
13191 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13192 AC_MSG_CHECKING([whether to use system bzip2])
13193 if test "$with_system_bzip2" = yes; then
13195 AC_MSG_RESULT([yes])
13196 PKG_CHECK_MODULES(BZIP2, bzip2)
13197 FilterLibs "${BZIP2_LIBS}"
13198 BZIP2_LIBS="${filteredlibs}"
13200 AC_MSG_RESULT([no])
13201 BUILD_TYPE="$BUILD_TYPE BZIP2"
13204 AC_SUBST(SYSTEM_BZIP2)
13205 AC_SUBST(BZIP2_CFLAGS)
13206 AC_SUBST(BZIP2_LIBS)
13208 dnl ===================================================================
13209 dnl Test whether to enable extension update
13210 dnl ===================================================================
13211 AC_MSG_CHECKING([whether to enable extension update])
13212 ENABLE_EXTENSION_UPDATE=
13213 if test "x$enable_extension_update" = "xno"; then
13214 AC_MSG_RESULT([no])
13216 AC_MSG_RESULT([yes])
13217 ENABLE_EXTENSION_UPDATE="TRUE"
13218 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13219 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13221 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13224 dnl ===================================================================
13225 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13226 dnl ===================================================================
13227 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13228 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13229 AC_MSG_RESULT([no])
13232 AC_MSG_RESULT([yes])
13233 ENABLE_SILENT_MSI=TRUE
13234 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13236 AC_SUBST(ENABLE_SILENT_MSI)
13238 AC_MSG_CHECKING([whether and how to use Xinerama])
13239 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13240 if test "$x_libraries" = "default_x_libraries"; then
13241 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13242 if test "x$XINERAMALIB" = x; then
13243 XINERAMALIB="/usr/lib"
13246 XINERAMALIB="$x_libraries"
13248 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13249 # we have both versions, let the user decide but use the dynamic one
13252 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13253 XINERAMA_LINK=dynamic
13255 XINERAMA_LINK=static
13257 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13258 # we have only the dynamic version
13260 XINERAMA_LINK=dynamic
13261 elif test -e "$XINERAMALIB/libXinerama.a"; then
13263 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13265 XINERAMA_LINK=static
13275 if test "$USE_XINERAMA" = "TRUE"; then
13276 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13277 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13278 [AC_MSG_ERROR(Xinerama header not found.)], [])
13279 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13280 if test "x$XEXTLIB" = x; then
13281 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13283 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13284 if test "$_os" = "FreeBSD"; then
13285 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13287 if test "$_os" = "Linux"; then
13288 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13290 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13291 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13293 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13298 AC_MSG_RESULT([no])
13300 AC_SUBST(USE_XINERAMA)
13301 AC_SUBST(XINERAMA_LINK)
13303 dnl ===================================================================
13304 dnl Test whether to build cairo or rely on the system version
13305 dnl ===================================================================
13307 if test "$test_cairo" = "yes"; then
13308 AC_MSG_CHECKING([whether to use the system cairo])
13310 : ${with_system_cairo:=$with_system_libs}
13311 if test "$with_system_cairo" = "yes"; then
13313 AC_MSG_RESULT([yes])
13315 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13316 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13317 FilterLibs "${CAIRO_LIBS}"
13318 CAIRO_LIBS="${filteredlibs}"
13320 if test "$test_xrender" = "yes"; then
13321 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13323 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13324 #ifdef PictStandardA8
13328 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13333 AC_MSG_RESULT([no])
13334 BUILD_TYPE="$BUILD_TYPE CAIRO"
13337 if test "$enable_cairo_canvas" != no; then
13338 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13339 ENABLE_CAIRO_CANVAS=TRUE
13343 AC_SUBST(CAIRO_CFLAGS)
13344 AC_SUBST(CAIRO_LIBS)
13345 AC_SUBST(ENABLE_CAIRO_CANVAS)
13346 AC_SUBST(SYSTEM_CAIRO)
13348 dnl ===================================================================
13349 dnl Test whether to use avahi
13350 dnl ===================================================================
13351 if test "$_os" = "WINNT"; then
13352 # Windows uses bundled mDNSResponder
13353 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13354 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13355 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13356 [ENABLE_AVAHI="TRUE"])
13357 AC_DEFINE(HAVE_FEATURE_AVAHI)
13358 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13359 FilterLibs "${AVAHI_LIBS}"
13360 AVAHI_LIBS="${filteredlibs}"
13363 AC_SUBST(ENABLE_AVAHI)
13364 AC_SUBST(AVAHI_CFLAGS)
13365 AC_SUBST(AVAHI_LIBS)
13367 dnl ===================================================================
13368 dnl Test whether to use liblangtag
13369 dnl ===================================================================
13371 AC_MSG_CHECKING([whether to use system liblangtag])
13372 if test "$with_system_liblangtag" = yes; then
13373 SYSTEM_LIBLANGTAG=TRUE
13374 AC_MSG_RESULT([yes])
13375 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13376 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13377 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13378 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13379 FilterLibs "${LIBLANGTAG_LIBS}"
13380 LIBLANGTAG_LIBS="${filteredlibs}"
13383 AC_MSG_RESULT([no])
13384 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13385 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13386 if test "$COM" = "MSC"; then
13387 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13389 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13392 AC_SUBST(SYSTEM_LIBLANGTAG)
13393 AC_SUBST(LIBLANGTAG_CFLAGS)
13394 AC_SUBST(LIBLANGTAG_LIBS)
13396 dnl ===================================================================
13397 dnl Test whether to build libpng or rely on the system version
13398 dnl ===================================================================
13400 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13402 dnl ===================================================================
13403 dnl Check for runtime JVM search path
13404 dnl ===================================================================
13405 if test "$ENABLE_JAVA" != ""; then
13406 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13407 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13408 AC_MSG_RESULT([yes])
13409 if ! test -d "$with_jvm_path"; then
13410 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13412 if ! test -d "$with_jvm_path"jvm; then
13413 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13415 JVM_ONE_PATH_CHECK="$with_jvm_path"
13416 AC_SUBST(JVM_ONE_PATH_CHECK)
13418 AC_MSG_RESULT([no])
13422 dnl ===================================================================
13423 dnl Test for the presence of Ant and that it works
13424 dnl ===================================================================
13426 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13427 ANT_HOME=; export ANT_HOME
13428 WITH_ANT_HOME=; export WITH_ANT_HOME
13429 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13430 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13431 if test "$_os" = "WINNT"; then
13432 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13434 with_ant_home="$LODE_HOME/opt/ant"
13436 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13437 with_ant_home="$LODE_HOME/opt/ant"
13440 if test -z "$with_ant_home"; then
13441 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13443 if test "$_os" = "WINNT"; then
13444 # AC_PATH_PROGS needs unix path
13445 with_ant_home=`cygpath -u "$with_ant_home"`
13447 AbsolutePath "$with_ant_home"
13448 with_ant_home=$absolute_path
13449 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13450 WITH_ANT_HOME=$with_ant_home
13451 ANT_HOME=$with_ant_home
13454 if test -z "$ANT"; then
13455 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13457 # resolve relative or absolute symlink
13458 while test -h "$ANT"; do
13460 a_basename=`basename "$ANT"`
13461 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13462 cd "`dirname "$ANT"`"
13463 cd "`dirname "$a_script"`"
13464 ANT="`pwd`"/"`basename "$a_script"`"
13468 AC_MSG_CHECKING([if $ANT works])
13469 mkdir -p conftest.dir
13472 cat > conftest.java << EOF
13473 public class conftest {
13474 int testmethod(int a, int b) {
13480 cat > conftest.xml << EOF
13481 <project name="conftest" default="conftest">
13482 <target name="conftest">
13483 <javac srcdir="." includes="conftest.java">
13489 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13490 if test $? = 0 -a -f ./conftest.class; then
13491 AC_MSG_RESULT([Ant works])
13492 if test -z "$WITH_ANT_HOME"; then
13493 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13494 if test -z "$ANT_HOME"; then
13495 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13498 ANT_HOME="$WITH_ANT_HOME"
13501 echo "configure: Ant test failed" >&5
13502 cat conftest.java >&5
13503 cat conftest.xml >&5
13504 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13507 rm -fr conftest.dir
13509 if test -z "$ANT_HOME"; then
13510 ANT_HOME="NO_ANT_HOME"
13512 PathFormat "$ANT_HOME"
13513 ANT_HOME="$formatted_path"
13515 ANT="$formatted_path"
13518 dnl Checking for ant.jar
13519 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13520 AC_MSG_CHECKING([Ant lib directory])
13521 if test -f $ANT_HOME/lib/ant.jar; then
13522 ANT_LIB="$ANT_HOME/lib"
13524 if test -f $ANT_HOME/ant.jar; then
13525 ANT_LIB="$ANT_HOME"
13527 if test -f /usr/share/java/ant.jar; then
13528 ANT_LIB=/usr/share/java
13530 if test -f /usr/share/ant-core/lib/ant.jar; then
13531 ANT_LIB=/usr/share/ant-core/lib
13533 if test -f $ANT_HOME/lib/ant/ant.jar; then
13534 ANT_LIB="$ANT_HOME/lib/ant"
13536 if test -f /usr/share/lib/ant/ant.jar; then
13537 ANT_LIB=/usr/share/lib/ant
13539 AC_MSG_ERROR([Ant libraries not found!])
13546 PathFormat "$ANT_LIB"
13547 ANT_LIB="$formatted_path"
13548 AC_MSG_RESULT([Ant lib directory found.])
13552 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13554 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13555 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13556 ant_version_major=`echo $ant_version | cut -d. -f1`
13557 ant_version_minor=`echo $ant_version | cut -d. -f2`
13558 echo "configure: ant_version $ant_version " >&5
13559 echo "configure: ant_version_major $ant_version_major " >&5
13560 echo "configure: ant_version_minor $ant_version_minor " >&5
13561 if test "$ant_version_major" -ge "2"; then
13562 AC_MSG_RESULT([yes, $ant_version])
13563 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13564 AC_MSG_RESULT([yes, $ant_version])
13566 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13569 rm -f conftest* core core.* *.core
13577 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13578 AC_MSG_CHECKING([for JUnit 4])
13579 if test "$with_junit" = "yes"; then
13580 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13581 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13582 elif test -e /usr/share/java/junit4.jar; then
13583 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13585 if test -e /usr/share/lib/java/junit.jar; then
13586 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13588 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13592 OOO_JUNIT_JAR=$with_junit
13594 if test "$_os" = "WINNT"; then
13595 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13597 printf 'import org.junit.Before;' > conftest.java
13598 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13599 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13602 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13603 specify its pathname via --with-junit=..., or disable it via --without-junit])
13605 rm -f conftest.class conftest.java
13606 if test $OOO_JUNIT_JAR != ""; then
13607 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13610 AC_MSG_CHECKING([for included Hamcrest])
13611 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13612 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13613 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13615 AC_MSG_RESULT([Not included])
13616 AC_MSG_CHECKING([for standalone hamcrest jar.])
13617 if test "$with_hamcrest" = "yes"; then
13618 if test -e /usr/share/lib/java/hamcrest.jar; then
13619 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13620 elif test -e /usr/share/java/hamcrest/core.jar; then
13621 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13622 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13623 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13625 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13628 HAMCREST_JAR=$with_hamcrest
13630 if test "$_os" = "WINNT"; then
13631 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13633 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13634 AC_MSG_RESULT([$HAMCREST_JAR])
13636 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),
13637 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13640 rm -f conftest.class conftest.java
13642 AC_SUBST(OOO_JUNIT_JAR)
13643 AC_SUBST(HAMCREST_JAR)
13649 # check for wget and curl
13654 if test "$enable_fetch_external" != "no"; then
13656 CURL=`which curl 2>/dev/null`
13658 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13660 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13661 if test $? -eq 0; then
13667 if test -z "$WGET" -a -z "$CURL"; then
13668 AC_MSG_ERROR([neither wget nor curl found!])
13677 # check for sha256sum
13681 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13682 eval "$i -a 256 --version" > /dev/null 2>&1
13684 if test $ret -eq 0; then
13685 SHA256SUM="$i -a 256"
13690 if test -z "$SHA256SUM"; then
13691 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13692 eval "$i --version" > /dev/null 2>&1
13694 if test $ret -eq 0; then
13701 if test -z "$SHA256SUM"; then
13702 AC_MSG_ERROR([no sha256sum found!])
13705 AC_SUBST(SHA256SUM)
13707 dnl ===================================================================
13708 dnl Dealing with l10n options
13709 dnl ===================================================================
13710 AC_MSG_CHECKING([which languages to be built])
13711 # get list of all languages
13712 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13713 # the sed command does the following:
13714 # + if a line ends with a backslash, append the next line to it
13715 # + adds " on the beginning of the value (after =)
13716 # + adds " at the end of the value
13717 # + removes en-US; we want to put it on the beginning
13718 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13719 [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)]
13720 ALL_LANGS="en-US $completelangiso"
13721 # check the configured localizations
13722 WITH_LANG="$with_lang"
13724 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13725 # (Norwegian is "nb" and "nn".)
13726 if test "$WITH_LANG" = "no"; then
13730 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13731 AC_MSG_RESULT([en-US])
13733 AC_MSG_RESULT([$WITH_LANG])
13734 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13735 if test -z "$MSGFMT"; then
13736 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13737 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13738 elif test -x "/opt/lo/bin/msgfmt"; then
13739 MSGFMT="/opt/lo/bin/msgfmt"
13741 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13742 if test -z "$MSGFMT"; then
13743 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13747 if test -z "$MSGUNIQ"; then
13748 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13749 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13750 elif test -x "/opt/lo/bin/msguniq"; then
13751 MSGUNIQ="/opt/lo/bin/msguniq"
13753 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13754 if test -z "$MSGUNIQ"; then
13755 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13762 # check that the list is valid
13763 for lang in $WITH_LANG; do
13764 test "$lang" = "ALL" && continue
13765 # need to check for the exact string, so add space before and after the list of all languages
13766 for vl in $ALL_LANGS; do
13767 if test "$vl" = "$lang"; then
13771 if test "$vl" != "$lang"; then
13772 # if you're reading this - you prolly quoted your languages remove the quotes ...
13773 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13776 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13777 echo $WITH_LANG | grep -q en-US
13778 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13780 # list with substituted ALL
13781 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13782 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13783 test "$WITH_LANG" = "en-US" && WITH_LANG=
13784 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13785 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13786 ALL_LANGS=`echo $ALL_LANGS qtz`
13788 AC_SUBST(ALL_LANGS)
13789 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13790 AC_SUBST(WITH_LANG)
13791 AC_SUBST(WITH_LANG_LIST)
13792 AC_SUBST(GIT_NEEDED_SUBMODULES)
13794 WITH_POOR_HELP_LOCALIZATIONS=
13795 if test -d "$SRC_ROOT/translations/source"; then
13796 for l in `ls -1 $SRC_ROOT/translations/source`; do
13797 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13798 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13802 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13804 if test -n "$with_locales"; then
13805 WITH_LOCALES="$with_locales"
13807 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13808 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13809 # config_host/config_locales.h.in
13810 for locale in $WITH_LOCALES; do
13813 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13817 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13820 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13825 AC_DEFINE(WITH_LOCALE_ALL)
13827 AC_SUBST(WITH_LOCALES)
13829 dnl git submodule update --reference
13830 dnl ===================================================================
13831 if test -n "${GIT_REFERENCE_SRC}"; then
13832 for repo in ${GIT_NEEDED_SUBMODULES}; do
13833 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13834 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13838 AC_SUBST(GIT_REFERENCE_SRC)
13840 dnl git submodules linked dirs
13841 dnl ===================================================================
13842 if test -n "${GIT_LINK_SRC}"; then
13843 for repo in ${GIT_NEEDED_SUBMODULES}; do
13844 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13845 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13849 AC_SUBST(GIT_LINK_SRC)
13852 dnl ===================================================================
13853 AC_MSG_CHECKING([for alternative branding images directory])
13854 # initialize mapped arrays
13855 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13856 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13858 if test -z "$with_branding" -o "$with_branding" = "no"; then
13859 AC_MSG_RESULT([none])
13860 DEFAULT_BRAND_IMAGES="$brand_files"
13862 if ! test -d $with_branding ; then
13863 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13865 AC_MSG_RESULT([$with_branding])
13866 CUSTOM_BRAND_DIR="$with_branding"
13867 for lfile in $brand_files
13869 if ! test -f $with_branding/$lfile ; then
13870 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13871 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13873 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13876 check_for_progress="yes"
13879 AC_SUBST([BRAND_INTRO_IMAGES])
13880 AC_SUBST([CUSTOM_BRAND_DIR])
13881 AC_SUBST([CUSTOM_BRAND_IMAGES])
13882 AC_SUBST([DEFAULT_BRAND_IMAGES])
13885 AC_MSG_CHECKING([for 'intro' progress settings])
13889 PROGRESSFRAMECOLOR=
13891 PROGRESSTEXTBASELINE=
13893 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13894 source "$with_branding/progress.conf"
13895 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13897 AC_MSG_RESULT([none])
13900 AC_SUBST(PROGRESSBARCOLOR)
13901 AC_SUBST(PROGRESSSIZE)
13902 AC_SUBST(PROGRESSPOSITION)
13903 AC_SUBST(PROGRESSFRAMECOLOR)
13904 AC_SUBST(PROGRESSTEXTCOLOR)
13905 AC_SUBST(PROGRESSTEXTBASELINE)
13908 dnl ===================================================================
13909 dnl Custom build version
13910 dnl ===================================================================
13911 AC_MSG_CHECKING([for extra build ID])
13912 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13913 EXTRA_BUILDID="$with_extra_buildid"
13915 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13916 if test -n "$EXTRA_BUILDID" ; then
13917 AC_MSG_RESULT([$EXTRA_BUILDID])
13919 AC_MSG_RESULT([not set])
13921 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13924 AC_MSG_CHECKING([for vendor])
13925 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13926 OOO_VENDOR="$USERNAME"
13928 if test -z "$OOO_VENDOR"; then
13932 if test -z "$OOO_VENDOR"; then
13933 OOO_VENDOR="`id -u -n`"
13936 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13938 OOO_VENDOR="$with_vendor"
13939 AC_MSG_RESULT([$OOO_VENDOR])
13941 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13942 AC_SUBST(OOO_VENDOR)
13944 if test "$_os" = "Android" ; then
13945 ANDROID_PACKAGE_NAME=
13946 AC_MSG_CHECKING([for Android package name])
13947 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13948 if test -n "$ENABLE_DEBUG"; then
13949 # Default to the package name that makes ndk-gdb happy.
13950 ANDROID_PACKAGE_NAME="org.libreoffice"
13952 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13955 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13957 ANDROID_PACKAGE_NAME="$with_android_package_name"
13958 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13960 AC_SUBST(ANDROID_PACKAGE_NAME)
13963 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13964 if test "$with_compat_oowrappers" = "yes"; then
13965 WITH_COMPAT_OOWRAPPERS=TRUE
13968 WITH_COMPAT_OOWRAPPERS=
13971 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13973 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13974 AC_MSG_CHECKING([for install dirname])
13975 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13976 INSTALLDIRNAME="$with_install_dirname"
13978 AC_MSG_RESULT([$INSTALLDIRNAME])
13979 AC_SUBST(INSTALLDIRNAME)
13981 AC_MSG_CHECKING([for prefix])
13982 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13983 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13984 PREFIXDIR="$prefix"
13985 AC_MSG_RESULT([$PREFIXDIR])
13986 AC_SUBST(PREFIXDIR)
13988 LIBDIR=[$(eval echo $(eval echo $libdir))]
13991 DATADIR=[$(eval echo $(eval echo $datadir))]
13994 MANDIR=[$(eval echo $(eval echo $mandir))]
13997 DOCDIR=[$(eval echo $(eval echo $docdir))]
14000 BINDIR=[$(eval echo $(eval echo $bindir))]
14003 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14004 AC_SUBST(INSTALLDIR)
14006 TESTINSTALLDIR="${BUILDDIR}/test-install"
14007 AC_SUBST(TESTINSTALLDIR)
14010 # ===================================================================
14011 # OAuth2 id and secrets
14012 # ===================================================================
14014 AC_MSG_CHECKING([for Google Drive client id and secret])
14015 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14016 AC_MSG_RESULT([not set])
14017 GDRIVE_CLIENT_ID="\"\""
14018 GDRIVE_CLIENT_SECRET="\"\""
14020 AC_MSG_RESULT([set])
14021 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14022 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14024 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14025 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14027 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14028 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14029 AC_MSG_RESULT([not set])
14030 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14031 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14033 AC_MSG_RESULT([set])
14034 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14035 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14037 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14038 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14040 AC_MSG_CHECKING([for OneDrive client id and secret])
14041 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14042 AC_MSG_RESULT([not set])
14043 ONEDRIVE_CLIENT_ID="\"\""
14044 ONEDRIVE_CLIENT_SECRET="\"\""
14046 AC_MSG_RESULT([set])
14047 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14048 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14050 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14051 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14054 dnl ===================================================================
14055 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14056 dnl --enable-dependency-tracking configure option
14057 dnl ===================================================================
14058 AC_MSG_CHECKING([whether to enable dependency tracking])
14059 if test "$enable_dependency_tracking" = "no"; then
14061 AC_MSG_RESULT([no])
14063 AC_MSG_RESULT([yes])
14067 dnl ===================================================================
14068 dnl Number of CPUs to use during the build
14069 dnl ===================================================================
14070 AC_MSG_CHECKING([for number of processors to use])
14071 # plain --with-parallelism is just the default
14072 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14073 if test "$with_parallelism" = "no"; then
14076 PARALLELISM=$with_parallelism
14079 if test "$enable_icecream" = "yes"; then
14084 Darwin|FreeBSD|NetBSD|OpenBSD)
14085 PARALLELISM=`sysctl -n hw.ncpu`
14089 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14091 # what else than above does profit here *and* has /proc?
14093 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14097 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14098 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14102 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14103 if test -z "$with_parallelism"; then
14104 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14105 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14108 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."
14112 if test $PARALLELISM -eq 0; then
14113 AC_MSG_RESULT([explicit make -j option needed])
14115 AC_MSG_RESULT([$PARALLELISM])
14117 AC_SUBST(PARALLELISM)
14119 IWYU_PATH="$with_iwyu"
14120 AC_SUBST(IWYU_PATH)
14121 if test ! -z "$IWYU_PATH"; then
14122 if test ! -f "$IWYU_PATH"; then
14123 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14128 # Set up ILIB for MSVC build
14131 if test "$build_os" = "cygwin"; then
14133 if test -n "$JAVA_HOME"; then
14134 ILIB="$ILIB;$JAVA_HOME/lib"
14137 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14138 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14139 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14140 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14141 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14142 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14143 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14145 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14146 ucrtlibpath_formatted=$formatted_path
14147 ILIB="$ILIB;$ucrtlibpath_formatted"
14148 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14149 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14150 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14152 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14155 if test "$cross_compiling" != "yes"; then
14156 ILIB_FOR_BUILD="$ILIB"
14160 AC_SUBST(ILIB_FOR_BUILD)
14162 # ===================================================================
14163 # Creating bigger shared library to link against
14164 # ===================================================================
14165 AC_MSG_CHECKING([whether to create huge library])
14168 if test $_os = iOS -o $_os = Android; then
14169 # Never any point in mergelibs for these as we build just static
14170 # libraries anyway...
14171 enable_mergelibs=no
14174 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14175 if test $_os != Linux -a $_os != WINNT; then
14176 add_warning "--enable-mergelibs is not tested for this platform"
14179 AC_MSG_RESULT([yes])
14180 AC_DEFINE(ENABLE_MERGELIBS)
14182 AC_MSG_RESULT([no])
14184 AC_SUBST([MERGELIBS])
14186 dnl ===================================================================
14187 dnl icerun is a wrapper that stops us spawning tens of processes
14188 dnl locally - for tools that can't be executed on the compile cluster
14189 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14190 dnl ===================================================================
14191 AC_MSG_CHECKING([whether to use icerun wrapper])
14193 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14194 ICECREAM_RUN=icerun
14195 AC_MSG_RESULT([yes])
14197 AC_MSG_RESULT([no])
14199 AC_SUBST(ICECREAM_RUN)
14201 dnl ===================================================================
14202 dnl Setup the ICECC_VERSION for the build the same way it was set for
14203 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14204 dnl ===================================================================
14205 x_ICECC_VERSION=[\#]
14206 if test -n "$ICECC_VERSION" ; then
14209 AC_SUBST(x_ICECC_VERSION)
14210 AC_SUBST(ICECC_VERSION)
14212 dnl ===================================================================
14214 AC_MSG_CHECKING([MPL subset])
14217 if test "$enable_mpl_subset" = "yes"; then
14219 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14221 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14224 if test "$warn_report" = "true"; then
14225 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14227 if test "x$enable_postgresql_sdbc" != "xno"; then
14228 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14230 if test "$enable_lotuswordpro" = "yes"; then
14231 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14233 if test "$WITH_WEBDAV" = "neon"; then
14234 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14236 if test -n "$ENABLE_POPPLER"; then
14237 if test "x$SYSTEM_POPPLER" = "x"; then
14238 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14241 # cf. m4/libo_check_extension.m4
14242 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14243 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14245 for theme in $WITH_THEMES; do
14247 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14248 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14253 ENABLE_OPENGL_TRANSITIONS=
14255 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14256 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14260 AC_DEFINE(MPL_HAVE_SUBSET)
14261 AC_MSG_RESULT([only])
14263 AC_MSG_RESULT([no restrictions])
14265 AC_SUBST(MPL_SUBSET)
14267 dnl ===================================================================
14269 AC_MSG_CHECKING([formula logger])
14270 ENABLE_FORMULA_LOGGER=
14272 if test "x$enable_formula_logger" = "xyes"; then
14273 AC_MSG_RESULT([yes])
14274 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14275 ENABLE_FORMULA_LOGGER=TRUE
14276 elif test -n "$ENABLE_DBGUTIL" ; then
14277 AC_MSG_RESULT([yes])
14278 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14279 ENABLE_FORMULA_LOGGER=TRUE
14281 AC_MSG_RESULT([no])
14284 AC_SUBST(ENABLE_FORMULA_LOGGER)
14286 dnl ===================================================================
14287 dnl Checking for active Antivirus software.
14288 dnl ===================================================================
14290 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14291 AC_MSG_CHECKING([for active Antivirus software])
14292 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14293 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14294 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14295 AC_MSG_RESULT([found])
14296 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14297 echo $EICAR_STRING > $SRC_ROOT/eicar
14298 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14300 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14301 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14303 echo $EICAR_STRING > $BUILDDIR/eicar
14304 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14306 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14307 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14309 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"
14311 AC_MSG_RESULT([not found])
14314 AC_MSG_RESULT([n/a])
14318 dnl ===================================================================
14319 dnl Setting up the environment.
14320 dnl ===================================================================
14321 AC_MSG_NOTICE([setting up the build environment variables...])
14325 if test "$build_os" = "cygwin"; then
14326 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14327 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14328 ATL_INCLUDE="$COMPATH/atlmfc/include"
14329 elif test -d "$COMPATH/atlmfc/lib"; then
14330 ATL_LIB="$COMPATH/atlmfc/lib"
14331 ATL_INCLUDE="$COMPATH/atlmfc/include"
14333 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14334 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14336 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14337 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14338 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14340 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14341 PathFormat "/usr/bin/find.exe"
14342 FIND="$formatted_path"
14343 PathFormat "/usr/bin/sort.exe"
14344 SORT="$formatted_path"
14345 PathFormat "/usr/bin/grep.exe"
14346 WIN_GREP="$formatted_path"
14347 PathFormat "/usr/bin/ls.exe"
14348 WIN_LS="$formatted_path"
14349 PathFormat "/usr/bin/touch.exe"
14350 WIN_TOUCH="$formatted_path"
14356 AC_SUBST(ATL_INCLUDE)
14362 AC_SUBST(WIN_TOUCH)
14364 AC_SUBST(BUILD_TYPE)
14369 PERL="$formatted_path"
14372 if test -n "$TMPDIR"; then
14373 TEMP_DIRECTORY="$TMPDIR"
14375 TEMP_DIRECTORY="/tmp"
14377 if test "$build_os" = "cygwin"; then
14378 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14380 AC_SUBST(TEMP_DIRECTORY)
14382 # setup the PATH for the environment
14383 if test -n "$LO_PATH_FOR_BUILD"; then
14384 LO_PATH="$LO_PATH_FOR_BUILD"
14387 pathmunge "$MSVC_HOST_PATH" "before"
14395 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14396 if test "$ENABLE_JAVA" != ""; then
14397 pathmunge "$JAVA_HOME/bin" "after"
14402 # Win32 make needs native paths
14403 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14404 LO_PATH=`cygpath -p -m "$PATH"`
14406 if test "$WIN_BUILD_ARCH" = "x64"; then
14407 # needed for msi packaging
14408 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14410 # .NET 4.6 and higher don't have bin directory
14411 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14412 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14414 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14415 pathmunge "$CSC_PATH" "before"
14416 pathmunge "$MIDL_PATH" "before"
14417 pathmunge "$AL_PATH" "before"
14418 pathmunge "$MSVC_MULTI_PATH" "before"
14419 pathmunge "$MSVC_BUILD_PATH" "before"
14420 if test -n "$MSBUILD_PATH" ; then
14421 pathmunge "$MSBUILD_PATH" "before"
14423 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14424 if test "$ENABLE_JAVA" != ""; then
14425 if test -d "$JAVA_HOME/jre/bin/client"; then
14426 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14428 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14429 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14431 pathmunge "$JAVA_HOME/bin" "before"
14433 pathmunge "$MSVC_HOST_PATH" "before"
14437 pathmunge "/usr/css/bin" "before"
14438 if test "$ENABLE_JAVA" != ""; then
14439 pathmunge "$JAVA_HOME/bin" "after"
14447 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14448 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14449 x_LO_ELFCHECK_ALLOWLIST=
14451 x_LO_ELFCHECK_ALLOWLIST=[\#]
14453 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14454 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14458 # Generate a configuration sha256 we can use for deps
14459 if test -f config_host.mk; then
14460 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14462 if test -f config_host_lang.mk; then
14463 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14466 CFLAGS=$my_original_CFLAGS
14467 CXXFLAGS=$my_original_CXXFLAGS
14468 CPPFLAGS=$my_original_CPPFLAGS
14470 AC_CONFIG_LINKS([include:include])
14472 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14473 # BUILD platform configuration] - otherwise breaks cross building
14474 AC_CONFIG_FILES([config_host.mk
14475 config_host_lang.mk
14477 bin/bffvalidator.sh
14478 bin/odfvalidator.sh
14480 hardened_runtime.xcent
14481 instsetoo_native/util/openoffice.lst
14482 sysui/desktop/macosx/Info.plist
14483 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14484 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14485 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14486 AC_CONFIG_HEADERS([config_host/config_clang.h])
14487 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14488 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14489 AC_CONFIG_HEADERS([config_host/config_eot.h])
14490 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14491 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14492 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14493 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14494 AC_CONFIG_HEADERS([config_host/config_features.h])
14495 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14496 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14497 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14498 AC_CONFIG_HEADERS([config_host/config_folders.h])
14499 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14500 AC_CONFIG_HEADERS([config_host/config_gio.h])
14501 AC_CONFIG_HEADERS([config_host/config_global.h])
14502 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14503 AC_CONFIG_HEADERS([config_host/config_java.h])
14504 AC_CONFIG_HEADERS([config_host/config_langs.h])
14505 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14506 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14507 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14508 AC_CONFIG_HEADERS([config_host/config_locales.h])
14509 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14510 AC_CONFIG_HEADERS([config_host/config_oox.h])
14511 AC_CONFIG_HEADERS([config_host/config_options.h])
14512 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14513 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14514 AC_CONFIG_HEADERS([config_host/config_skia.h])
14515 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14516 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14517 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14518 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14519 AC_CONFIG_HEADERS([config_host/config_version.h])
14520 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14521 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14522 AC_CONFIG_HEADERS([config_host/config_python.h])
14523 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14526 if test "$CROSS_COMPILING" = TRUE; then
14527 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14530 # touch the config timestamp file
14531 if test ! -f config_host.mk.stamp; then
14532 echo > config_host.mk.stamp
14533 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14534 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14536 echo > config_host.mk.stamp
14539 # touch the config lang timestamp file
14540 if test ! -f config_host_lang.mk.stamp; then
14541 echo > config_host_lang.mk.stamp
14542 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14543 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14545 echo > config_host_lang.mk.stamp
14549 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14550 -a "$build_os" = "cygwin"; then
14553 ****************************************************************************
14555 Your make version is known to be horribly slow, and hard to debug
14556 problems with. To get a reasonably functional make please do:
14558 to install a pre-compiled binary make for Win32
14560 mkdir -p /opt/lo/bin
14562 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14563 cp make-4.2.1-msvc.exe make
14566 to install from source:
14567 place yourself in a working directory of you choice.
14569 git clone git://git.savannah.gnu.org/make.git
14571 [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"]
14572 set PATH=%PATH%;C:\Cygwin\bin
14573 [or Cygwin64, if that is what you have]
14574 cd path-to-make-repo-you-cloned-above
14575 build_w32.bat --without-guile
14577 should result in a WinRel/gnumake.exe.
14578 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14580 Then re-run autogen.sh
14582 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14583 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14586 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14587 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14593 ****************************************************************************
14598 To view some help, run:
14603 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14605 After the build has finished successfully, you can immediately run what you built using the command:
14608 if test $_os = Darwin; then
14609 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14611 echo instdir/program/soffice
14615 If you want to run the smoketest, run:
14621 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14622 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14623 cat "$WARNINGS_FILE_FOR_BUILD"
14627 if test -s "$WARNINGS_FILE"; then
14628 echo "HOST config ($WARNINGS_FILE)"
14629 cat "$WARNINGS_FILE"
14632 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: