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([Collabora Office],[24.04.8.5],[],[],[https://collaboraoffice.com/])
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
49 if test "$COM" = "MSC"; then
51 if test "x$f" != "x${f#-L}"; then
52 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53 elif test "x$f" != "x${f#-l}"; then
54 filteredlibs="$filteredlibs ${f:2}.lib"
56 filteredlibs="$filteredlibs $f"
62 # let's start with Fedora's paths for now
63 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64 # ignore it: on UNIXoids it is searched by default anyway
65 # but if it's given explicitly then it may override other paths
66 # (on macOS it would be an error to use it instead of SDK)
69 filteredlibs="$filteredlibs $f"
78 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79 # function is called also on Unix.
81 # Return value: $formatted_path and $formatted_path_unix.
83 # $formatted_path is the argument in Windows format, but using forward slashes instead of
84 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85 # or shell metacharacters).
87 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
91 # Errors out if 8.3 names are needed but aren't present for some of the path components.
95 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
97 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
99 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
101 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
103 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
105 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
107 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110 printf "PathFormat $1 ==> "
114 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115 if test "$build_os" = "wsl"; then
116 formatted_path=$(echo "$formatted_path" | tr -d '\r')
120 # spaces,parentheses,brackets,braces are problematic in pathname
122 case "$formatted_path" in
123 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
127 if test "$pf_conv_to_dos" = "yes"; then
128 if test "$build_os" = "wsl"; then
129 case "$formatted_path" in
131 formatted_path=$(wslpath -w "$formatted_path")
134 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136 formatted_path=`cygpath -sm "$formatted_path"`
138 formatted_path=`cygpath -d "$formatted_path"`
140 if test $? -ne 0; then
141 AC_MSG_ERROR([path conversion failed for "$1".])
144 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146 if test "$fp_count_slash$fp_count_colon" != "00"; then
147 if test "$fp_count_colon" = "0"; then
148 new_formatted_path=`realpath "$formatted_path"`
149 if test $? -ne 0; then
150 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
152 formatted_path="$new_formatted_path"
155 if test "$build_os" = "wsl"; then
156 if test "$fp_count_colon" != "0"; then
157 formatted_path=$(wslpath "$formatted_path")
159 case "$formatted_path" in
164 formatted_path=$(wslpath -m $formatted_path)
165 case "$formatted_path" in
169 formatted_path="$formatted_path"$final_slash
173 formatted_path=$(wslpath -m "$formatted_path")
176 formatted_path=`cygpath -m "$formatted_path"`
178 if test $? -ne 0; then
179 AC_MSG_ERROR([path conversion failed for "$1".])
182 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183 if test "$fp_count_space" != "0"; then
184 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
187 if test "$build_os" = "wsl"; then
188 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189 formatted_path_unix=$(wslpath "$formatted_path")
192 formatted_path_unix="$formatted_path"
198 # There appears to be no simple and portable method to get an absolute and
199 # canonical path, so we try creating the directory if does not exist and
200 # utilizing the shell and pwd.
202 # Args: $1: A possibly relative pathname
203 # Return value: $absolute_path
205 # Convert to unix path, mkdir would treat c:/path as a relative path.
207 local rel="$formatted_path_unix"
209 test ! -e "$rel" && mkdir -p "$rel"
210 if test -d "$rel" ; then
211 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212 absolute_path="$(pwd)"
215 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
225 if test "$have_WARNINGS" = "no"; then
226 echo "*************************************" > "$WARNINGS_FILE"
228 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
232 COLORWARN="* WARNING :"
235 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
246 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249 mac_git_path=`which git 2>/dev/null`
250 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251 mac_path="$mac_path:`dirname $mac_git_path`"
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255 mac_gpg_path=`which gpg 2>/dev/null`
256 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257 mac_path="$mac_path:`dirname $mac_gpg_path`"
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
272 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284 eval local MIN_MINOR="\$${1}_${2}_MINOR"
285 eval local MIN_TINY="\$${1}_${2}_TINY"
286 eval local CUR_MAJOR="\$${1}_MAJOR"
287 eval local CUR_MINOR="\$${1}_MINOR"
288 eval local CUR_TINY="\$${1}_TINY"
289 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
293 echo "********************************************************************"
295 echo "* Running ${PACKAGE_NAME} build configuration."
297 echo "********************************************************************"
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308 ac_cv_host="x86_64-pc-wsl"
309 ac_cv_host_cpu="x86_64"
311 ac_cv_build="$ac_cv_host"
312 ac_cv_build_cpu="$ac_cv_host_cpu"
313 ac_cv_build_os="$ac_cv_host_os"
315 # Emulation of Cygwin's cygpath command for WSL.
318 if test -n "$UNITTEST_WSL_CYGPATH"; then
319 echo -n cygpath "$@" "==> "
322 # Cygwin's real cygpath has a plethora of options but we use only a few here.
325 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
328 while getopts dmuwlsp opt; do
331 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
341 if test $# -ne 1; then
342 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
349 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352 if test -n "$opt_u"; then
353 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
358 # A Windows file in WSL format
359 input=$(wslpath -w "$input")
361 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362 # Already in Windows format
365 input=$(wslpath -w "$input")
368 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
371 if test -n "$opt_d" -o -n "$opt_s"; then
372 input=$($WSL_LO_HELPER --8.3 "$input")
374 if test -n "$opt_m"; then
375 input="${input//\\//}"
382 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
389 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
395 if test -n "$UNITTEST_WSL_CYGPATH"; then
398 # Nothing special with these file names, just arbitrary ones picked to test with
399 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403 # At least on my machine for instance this file does have an 8.3 name
404 cygpath -d /mnt/c/windows/WindowsUpdate.log
405 # But for instance this one doesn't
406 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407 cygpath -ws /mnt/c/windows/WindowsUpdate.log
408 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409 cygpath -ms /mnt/c/windows/WindowsUpdate.log
411 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
417 if test -z "$WSL_LO_HELPER"; then
418 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419 WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420 elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421 WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
424 if test -z "$WSL_LO_HELPER"; then
425 AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
436 # Use of PathFormat must be after AC_CANONICAL_BUILD above
438 printf "$formatted_path , $formatted_path_unix\n"
441 printf "$formatted_path , $formatted_path_unix\n"
443 PathFormat "$PROGRAMFILESX86"
444 printf "$formatted_path , $formatted_path_unix\n"
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452 PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455 PRODUCTNAME="${PRODUCTNAME}Dev"
456 PRODUCTNAME=AC_PACKAGE_NAME
458 AC_MSG_RESULT([$PRODUCTNAME])
459 AC_SUBST(PRODUCTNAME)
460 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
461 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
463 dnl ===================================================================
464 dnl Our version is defined by the AC_INIT() at the top of this script.
465 dnl ===================================================================
467 AC_MSG_CHECKING([for package version])
468 if test -n "$with_package_version" -a "$with_package_version" != no; then
469 PACKAGE_VERSION="$with_package_version"
471 AC_MSG_RESULT([$PACKAGE_VERSION])
473 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
475 LIBO_VERSION_MAJOR=$1
476 LIBO_VERSION_MINOR=$2
477 LIBO_VERSION_MICRO=$3
478 LIBO_VERSION_PATCH=$4
480 LIBO_VERSION_SUFFIX=$5
482 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
483 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
484 # they get undoubled before actually passed to sed.
485 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
486 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
487 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
488 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
490 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
491 # three non-negative integers. Please find more information about CFBundleVersion at
492 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
494 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
495 # of at most three non-negative integers. Please find more information about
496 # CFBundleShortVersionString at
497 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
499 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
500 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
502 AC_SUBST(LIBO_VERSION_MAJOR)
503 AC_SUBST(LIBO_VERSION_MINOR)
504 AC_SUBST(LIBO_VERSION_MICRO)
505 AC_SUBST(LIBO_VERSION_PATCH)
506 AC_SUBST(LIBO_VERSION_SUFFIX)
507 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
508 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
509 AC_SUBST(MACOSX_BUNDLE_VERSION)
511 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
512 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
513 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
514 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
516 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>/dev/null`
517 LIBO_THIS_YEAR=${git_date:-2024}
518 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
520 dnl ===================================================================
522 dnl ===================================================================
523 AC_MSG_CHECKING([for product version])
524 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
525 AC_MSG_RESULT([$PRODUCTVERSION])
526 AC_SUBST(PRODUCTVERSION)
529 # AC_PROG_EGREP doesn't set GREP on all systems as well
530 AC_PATH_PROG(GREP, grep)
538 dnl ======================================
539 dnl Required GObject introspection version
540 dnl ======================================
541 INTROSPECTION_REQUIRED_VERSION=1.32.0
543 dnl ===================================================================
544 dnl Search all the common names for GNU Make
545 dnl ===================================================================
546 AC_MSG_CHECKING([for GNU Make])
548 # try to use our own make if it is available and GNUMAKE was not already defined
549 if test -z "$GNUMAKE"; then
550 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
551 GNUMAKE="$LODE_HOME/opt/bin/make"
552 elif test -x "/opt/lo/bin/make"; then
553 GNUMAKE="/opt/lo/bin/make"
558 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
559 if test -n "$a"; then
560 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
561 if test $? -eq 0; then
562 if test "$build_os" = "cygwin"; then
563 if test -n "$($a -v | grep 'Built for Windows')" ; then
564 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
565 GNUMAKE_WIN_NATIVE="TRUE"
576 AC_MSG_RESULT($GNUMAKE)
577 if test -z "$GNUMAKE"; then
578 AC_MSG_ERROR([not found. install GNU Make.])
580 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
581 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
585 win_short_path_for_make()
587 local short_path="$1"
588 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
589 cygpath -sm "$short_path"
591 cygpath -u "$(cygpath -d "$short_path")"
596 if test "$build_os" = "cygwin"; then
597 PathFormat "$SRC_ROOT"
598 SRC_ROOT="$formatted_path"
599 PathFormat "$BUILDDIR"
600 BUILDDIR="$formatted_path"
602 AC_MSG_CHECKING(for explicit COMSPEC)
603 if test -z "$COMSPEC"; then
604 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
606 AC_MSG_RESULT([found: $COMSPEC])
613 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
614 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
615 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
617 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
618 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
621 # need sed in os checks...
622 AC_PATH_PROGS(SED, sed)
623 if test -z "$SED"; then
624 AC_MSG_ERROR([install sed to run this script])
627 # Set the ENABLE_LTO variable
628 # ===================================================================
629 AC_MSG_CHECKING([whether to use link-time optimization])
630 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
639 AC_ARG_ENABLE(fuzz-options,
640 AS_HELP_STRING([--enable-fuzz-options],
641 [Randomly enable or disable each of those configurable options
642 that are supposed to be freely selectable without interdependencies,
643 or where bad interaction from interdependencies is automatically avoided.])
646 dnl ===================================================================
647 dnl When building for Android, --with-android-ndk,
648 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
650 dnl ===================================================================
652 AC_ARG_WITH(android-ndk,
653 AS_HELP_STRING([--with-android-ndk],
654 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
657 AC_ARG_WITH(android-ndk-toolchain-version,
658 AS_HELP_STRING([--with-android-ndk-toolchain-version],
659 [Specify which toolchain version to use, of those present in the
660 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
661 with_android_ndk_toolchain_version=clang5.0)
663 AC_ARG_WITH(android-sdk,
664 AS_HELP_STRING([--with-android-sdk],
665 [Specify location of the Android SDK. Mandatory when building for Android.]),
668 AC_ARG_WITH(android-api-level,
669 AS_HELP_STRING([--with-android-api-level],
670 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
674 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
675 with_android_ndk="$SRC_ROOT/external/android-ndk"
677 if test -n "$with_android_ndk"; then
678 eval ANDROID_NDK_DIR=$with_android_ndk
681 if test -n "$with_android_api_level" ; then
682 ANDROID_API_LEVEL="$with_android_api_level"
685 if test $host_cpu = arm; then
686 LLVM_TRIPLE=armv7a-linux-androideabi
687 ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
688 ANDROID_APP_ABI=armeabi-v7a
689 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
690 elif test $host_cpu = aarch64; then
691 LLVM_TRIPLE=aarch64-linux-android
692 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
693 ANDROID_APP_ABI=arm64-v8a
694 elif test $host_cpu = x86_64; then
695 LLVM_TRIPLE=x86_64-linux-android
696 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
697 ANDROID_APP_ABI=x86_64
699 # host_cpu is something like "i386" or "i686" I guess, NDK uses
700 # "x86" in some contexts
701 LLVM_TRIPLE=i686-linux-android
702 ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
706 # Set up a lot of pre-canned defaults
708 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
709 if test ! -f $ANDROID_NDK_DIR/source.properties; then
710 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
712 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
714 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
716 if test -z "$ANDROID_NDK_VERSION"; then
717 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
719 case $ANDROID_NDK_VERSION in
721 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
723 11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
724 AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
729 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
730 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
734 case "$with_android_ndk_toolchain_version" in
736 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
739 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
742 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
744 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
745 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
746 # manage to link the (app-specific) single huge .so that is built for the app in
747 # android/source/ if there is debug information in a significant part of the object files.
748 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
749 # all objects have been built with debug information.)
752 android_HOST_TAG=linux-x86_64
755 android_HOST_TAG=darwin-x86_64
758 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
759 # ndk would also support windows and windows-x86_64
762 ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
763 ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
765 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
766 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
767 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
768 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
769 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
771 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
772 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
773 if test "$ENABLE_LTO" = TRUE; then
774 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
775 # $CC and $CXX when building external libraries
776 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
779 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
781 if test -z "$CC"; then
782 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
785 if test -z "$CXX"; then
786 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
790 AC_SUBST(ANDROID_NDK_DIR)
791 AC_SUBST(ANDROID_API_LEVEL)
792 AC_SUBST(ANDROID_APP_ABI)
793 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
794 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
795 AC_SUBST(ANDROID_TOOLCHAIN)
797 dnl ===================================================================
798 dnl --with-android-sdk
799 dnl ===================================================================
801 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
802 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
804 if test -n "$with_android_sdk"; then
805 eval ANDROID_SDK_DIR=$with_android_sdk
806 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
808 AC_SUBST(ANDROID_SDK_DIR)
810 AC_ARG_ENABLE([android-lok],
811 AS_HELP_STRING([--enable-android-lok],
812 [The Android app from the android/ subdir needs several tweaks all
813 over the place that break the LOK when used in the Online-based
814 Android app. This switch indicates that the intent of this build is
815 actually the Online-based, non-modified LOK.])
818 if test -n "$ANDROID_NDK_DIR" ; then
819 if test "$enable_android_lok" = yes; then
820 ENABLE_ANDROID_LOK=TRUE
821 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
822 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
824 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
827 AC_SUBST([ENABLE_ANDROID_LOK])
829 libo_FUZZ_ARG_ENABLE([android-editing],
830 AS_HELP_STRING([--enable-android-editing],
831 [Enable the experimental editing feature on Android.])
833 ENABLE_ANDROID_EDITING=
834 if test "$enable_android_editing" = yes; then
835 ENABLE_ANDROID_EDITING=TRUE
837 AC_SUBST([ENABLE_ANDROID_EDITING])
839 disable_database_connectivity_dependencies()
842 enable_firebird_sdbc=no
843 enable_mariadb_sdbc=no
844 enable_postgresql_sdbc=no
845 enable_report_builder=no
848 # ===================================================================
850 # Start initial platform setup
852 # The using_* variables reflect platform support and should not be
853 # changed after the "End initial platform setup" block.
854 # This is also true for most test_* variables.
855 # ===================================================================
864 # There is currently just iOS not using salplug, so this explicitly enables it.
865 # must: using_freetype_fontconfig
866 # may: using_headless_plugin defaults to $using_freetype_fontconfig
869 # Default values, as such probably valid just for Linux, set
870 # differently below just for Mac OSX, but at least better than
871 # hardcoding these as we used to do. Much of this is duplicated also
872 # in solenv for old build system and for gbuild, ideally we should
873 # perhaps define stuff like this only here in configure.ac?
875 LINKFLAGSSHL="-shared"
879 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
882 INSTROOTCONTENTSUFFIX=
885 HOST_PLATFORM="$host"
887 host_cpu_for_clang="$host_cpu"
892 using_freetype_fontconfig=yes
897 dnl ===========================================================
898 dnl Check whether we're using Solaris 10 - SPARC or Intel.
899 dnl ===========================================================
900 AC_MSG_CHECKING([the Solaris operating system release])
901 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
902 if test "$_os_release" -lt "10"; then
903 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
905 AC_MSG_RESULT([ok ($_os_release)])
908 dnl Check whether we're using a SPARC or i386 processor
909 AC_MSG_CHECKING([the processor type])
910 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
911 AC_MSG_RESULT([ok ($host_cpu)])
913 AC_MSG_ERROR([only SPARC and i386 processors are supported])
917 linux-gnu*|k*bsd*-gnu*|linux-musl*)
918 using_freetype_fontconfig=yes
923 if test "$enable_fuzzers" = yes; then
924 test_system_freetype=no
930 using_freetype_fontconfig=yes
936 # When building on Windows normally with MSVC under Cygwin,
937 # configure thinks that the host platform (the platform the
938 # built code will run on) is Cygwin, even if it obviously is
939 # Windows, which in Autoconf terminology is called
940 # "mingw32". (Which is misleading as MinGW is the name of the
941 # tool-chain, not an operating system.)
943 # Somewhat confusing, yes. But this configure script doesn't
944 # look at $host etc that much, it mostly uses its own $_os
945 # variable, set here in this case statement.
947 using_freetype_fontconfig=no
958 if test "$host_cpu" = "aarch64"; then
962 enable_firebird_sdbc=no
967 using_freetype_fontconfig=no
971 if test -n "$LODE_HOME" ; then
973 AC_MSG_NOTICE([sanitized the PATH to $PATH])
976 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
977 INSTROOTCONTENTSUFFIX=/Contents
978 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
979 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
980 LINKFLAGSSHL="-dynamiclib"
987 # -undefined error is the default
991 # Apple's Clang uses "arm64"
992 host_cpu_for_clang=arm64
997 using_freetype_fontconfig=no
1004 if test -n "$LODE_HOME" ; then
1006 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1010 enable_mpl_subset=yes
1011 enable_lotuswordpro=no
1012 disable_database_connectivity_dependencies
1015 enable_extension_integration=no
1018 if test "$enable_ios_simulator" = "yes"; then
1019 host=x86_64-apple-darwin
1021 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1022 LINKFLAGSSHL="-dynamiclib"
1029 # -undefined error is the default
1030 LINKFLAGSNOUNDEFS=""
1032 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1033 # part, so use aarch64-apple-darwin for now.
1034 HOST_PLATFORM=aarch64-apple-darwin
1036 # Apple's Clang uses "arm64"
1037 host_cpu_for_clang=arm64
1041 using_freetype_fontconfig=yes
1044 AC_MSG_CHECKING([the FreeBSD operating system release])
1045 if test -n "$with_os_version"; then
1046 OSVERSION="$with_os_version"
1048 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1050 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1051 AC_MSG_CHECKING([which thread library to use])
1052 if test "$OSVERSION" -lt "500016"; then
1053 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054 PTHREAD_LIBS="-pthread"
1055 elif test "$OSVERSION" -lt "502102"; then
1056 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057 PTHREAD_LIBS="-lc_r"
1060 PTHREAD_LIBS="-pthread"
1062 AC_MSG_RESULT([$PTHREAD_LIBS])
1067 using_freetype_fontconfig=yes
1071 PTHREAD_LIBS="-pthread -lpthread"
1076 using_freetype_fontconfig=yes
1078 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1079 PTHREAD_LIBS="-pthread"
1084 using_freetype_fontconfig=yes
1087 PTHREAD_LIBS="-pthread"
1092 # API exists, but seems not really usable since Android 7 AFAIK
1094 using_freetype_fontconfig=yes
1095 using_headless_plugin=no
1099 test_system_freetype=no
1102 disable_database_connectivity_dependencies
1103 enable_lotuswordpro=no
1104 enable_mpl_subset=yes
1105 enable_cairo_canvas=no
1115 using_freetype_fontconfig=yes
1125 enable_postgresql_sdbc=no
1126 enable_firebird_sdbc=no
1131 # API currently just exists in headers, not code
1133 using_freetype_fontconfig=yes
1137 test_split_debug=yes
1138 test_system_freetype=no
1139 enable_compiler_plugins=no
1140 enable_customtarget_components=yes
1141 enable_split_debug=yes
1142 enable_wasm_strip=yes
1144 with_theme="colibre"
1149 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1153 AC_SUBST(HOST_PLATFORM)
1155 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1156 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1159 # Set defaults, if not set by platform
1160 test "${test_cups+set}" = set || test_cups="$using_x11"
1161 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1162 test "${test_gen+set}" = set || test_gen="$using_x11"
1163 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1164 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1165 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1166 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1167 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1168 # don't handle test_qt5, so it can disable test_kf5 later
1169 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1170 test "${test_randr+set}" = set || test_randr="$using_x11"
1171 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1172 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1174 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1175 # Make sure fontconfig and freetype test both either system or not
1176 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1177 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1179 # convenience / platform overriding "fixes"
1181 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1182 test "$test_kf5" = yes && test_qt5=yes
1183 test "$test_gtk3" != yes && enable_gtk3=no
1184 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1185 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1186 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1188 # Keep in sync with the above $using_x11 depending test default list
1194 test_gstreamer_1_0=no
1206 test "$using_x11" = yes && USING_X11=TRUE
1208 if test "$using_freetype_fontconfig" = yes; then
1209 AC_DEFINE(USE_HEADLESS_CODE)
1210 USE_HEADLESS_CODE=TRUE
1211 if test "$using_headless_plugin" = yes; then
1212 AC_DEFINE(ENABLE_HEADLESS)
1213 ENABLE_HEADLESS=TRUE
1220 AC_SUBST(ENABLE_HEADLESS)
1221 AC_SUBST(USE_HEADLESS_CODE)
1223 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1224 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1225 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1226 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1228 # ===================================================================
1230 # End initial platform setup
1232 # ===================================================================
1234 if test "$_os" = "Android" ; then
1235 # Verify that the NDK and SDK options are proper
1236 if test -z "$with_android_ndk"; then
1237 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1238 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1239 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1242 if test -z "$ANDROID_SDK_DIR"; then
1243 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1244 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1245 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1249 AC_SUBST(SDKDIRNAME)
1251 AC_SUBST(PTHREAD_CFLAGS)
1252 AC_SUBST(PTHREAD_LIBS)
1254 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1255 # By default use the ones specified by our build system,
1256 # but explicit override is possible.
1257 AC_MSG_CHECKING(for explicit AFLAGS)
1258 if test -n "$AFLAGS"; then
1259 AC_MSG_RESULT([$AFLAGS])
1265 AC_MSG_CHECKING(for explicit CFLAGS)
1266 if test -n "$CFLAGS"; then
1267 AC_MSG_RESULT([$CFLAGS])
1273 AC_MSG_CHECKING(for explicit CXXFLAGS)
1274 if test -n "$CXXFLAGS"; then
1275 AC_MSG_RESULT([$CXXFLAGS])
1281 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1282 if test -n "$OBJCFLAGS"; then
1283 AC_MSG_RESULT([$OBJCFLAGS])
1289 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1290 if test -n "$OBJCXXFLAGS"; then
1291 AC_MSG_RESULT([$OBJCXXFLAGS])
1297 AC_MSG_CHECKING(for explicit LDFLAGS)
1298 if test -n "$LDFLAGS"; then
1299 AC_MSG_RESULT([$LDFLAGS])
1309 AC_SUBST(OBJCXXFLAGS)
1313 AC_SUBST(x_CXXFLAGS)
1314 AC_SUBST(x_OBJCFLAGS)
1315 AC_SUBST(x_OBJCXXFLAGS)
1318 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1319 my_original_CFLAGS=$CFLAGS
1320 my_original_CXXFLAGS=$CXXFLAGS
1321 my_original_CPPFLAGS=$CPPFLAGS
1323 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1324 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1325 dnl AC_PROG_CC internally.
1326 if test "$_os" != "WINNT"; then
1327 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1331 if test -z "$CC_BASE"; then
1332 CC_BASE=`first_arg_basename "$CC"`
1336 if test "$_os" != "WINNT"; then
1337 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1341 AC_SUBST(ENDIANNESS)
1343 if test "$usable_dlapi" != no; then
1344 AC_DEFINE([HAVE_DLAPI])
1345 if test "$test_unix_dlapi" != no; then
1347 AC_SEARCH_LIBS([dlsym], [dl],
1348 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1349 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1351 AC_DEFINE([HAVE_UNIX_DLAPI])
1354 AC_SUBST(UNIX_DLAPI_LIBS)
1356 # Check for a (GNU) backtrace implementation
1357 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1358 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1359 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1361 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1362 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1363 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1366 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1367 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1370 dnl ===================================================================
1371 dnl Sanity checks for Emscripten SDK setup
1372 dnl ===================================================================
1374 EMSCRIPTEN_MIN_MAJOR=2
1375 EMSCRIPTEN_MIN_MINOR=0
1376 EMSCRIPTEN_MIN_TINY=31
1377 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1379 if test "$_os" = "Emscripten"; then
1380 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1381 AS_IF([test -z "$EMSDK"],
1382 [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1383 EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1384 if test -f "$EMSCRIPTEN_VERSION_H"; then
1385 EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1386 EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1387 EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1389 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1390 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1391 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1392 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1395 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1397 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1398 if test $? -eq 0; then
1399 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1401 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1405 if ! which emconfigure >/dev/null 2>&1; then
1406 AC_MSG_WARN([emconfigure must be in your \$PATH])
1409 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1410 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1413 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1414 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1415 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1418 if test $EMSCRIPTEN_ERROR -ne 0; then
1419 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1422 AC_SUBST(EMSDK_FILE_PACKAGER)
1424 ###############################################################################
1425 # Extensions switches --enable/--disable
1426 ###############################################################################
1427 # By default these should be enabled unless having extra dependencies.
1428 # If there is extra dependency over configure options then the enable should
1429 # be automagic based on whether the requiring feature is enabled or not.
1430 # All this options change anything only with --enable-extension-integration.
1432 # The name of this option and its help string makes it sound as if
1433 # extensions are built anyway, just not integrated in the installer,
1434 # if you use --disable-extension-integration. Is that really the
1437 AC_ARG_ENABLE(ios-simulator,
1438 AS_HELP_STRING([--enable-ios-simulator],
1439 [build for iOS simulator])
1442 libo_FUZZ_ARG_ENABLE(extension-integration,
1443 AS_HELP_STRING([--disable-extension-integration],
1444 [Disable integration of the built extensions in the installer of the
1445 product. Use this switch to disable the integration.])
1448 AC_ARG_ENABLE(avmedia,
1449 AS_HELP_STRING([--disable-avmedia],
1450 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1451 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1453 AC_ARG_ENABLE(database-connectivity,
1454 AS_HELP_STRING([--disable-database-connectivity],
1455 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1458 # This doesn't mean not building (or "integrating") extensions
1459 # (although it probably should; i.e. it should imply
1460 # --disable-extension-integration I guess), it means not supporting
1461 # any extension mechanism at all
1462 libo_FUZZ_ARG_ENABLE(extensions,
1463 AS_HELP_STRING([--disable-extensions],
1464 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1467 AC_ARG_ENABLE(scripting,
1468 AS_HELP_STRING([--disable-scripting],
1469 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1470 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1472 # This is mainly for Android and iOS, but could potentially be used in some
1473 # special case otherwise, too, so factored out as a separate setting
1475 AC_ARG_ENABLE(dynamic-loading,
1476 AS_HELP_STRING([--disable-dynamic-loading],
1477 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1480 libo_FUZZ_ARG_ENABLE(report-builder,
1481 AS_HELP_STRING([--disable-report-builder],
1482 [Disable the Report Builder.])
1485 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1486 AS_HELP_STRING([--enable-ext-wiki-publisher],
1487 [Enable the Wiki Publisher extension.])
1490 libo_FUZZ_ARG_ENABLE(lpsolve,
1491 AS_HELP_STRING([--disable-lpsolve],
1492 [Disable compilation of the lp solve solver ])
1494 libo_FUZZ_ARG_ENABLE(coinmp,
1495 AS_HELP_STRING([--disable-coinmp],
1496 [Disable compilation of the CoinMP solver ])
1499 libo_FUZZ_ARG_ENABLE(pdfimport,
1500 AS_HELP_STRING([--disable-pdfimport],
1501 [Disable building the PDF import feature.])
1504 libo_FUZZ_ARG_ENABLE(pdfium,
1505 AS_HELP_STRING([--disable-pdfium],
1506 [Disable building PDFium. Results in unsecure PDF signature verification.])
1509 libo_FUZZ_ARG_ENABLE(skia,
1510 AS_HELP_STRING([--disable-skia],
1511 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1514 ###############################################################################
1516 dnl ---------- *** ----------
1518 libo_FUZZ_ARG_ENABLE(mergelibs,
1519 AS_HELP_STRING([--enable-mergelibs=yes/no/more],
1520 [Merge several of the smaller libraries into one big "merged" library.
1521 The "more" option will link even more of the smaller libraries.
1522 "more" not appropriate for distros which split up LibreOffice into multiple packages.
1523 It is only appropriate for situations where all of LO is delivered in a single install/package. ])
1526 libo_FUZZ_ARG_ENABLE(breakpad,
1527 AS_HELP_STRING([--enable-breakpad],
1528 [Enables breakpad for crash reporting.])
1531 libo_FUZZ_ARG_ENABLE(crashdump,
1532 AS_HELP_STRING([--disable-crashdump],
1533 [Disable dump.ini and dump-file, when --enable-breakpad])
1536 AC_ARG_ENABLE(fetch-external,
1537 AS_HELP_STRING([--disable-fetch-external],
1538 [Disables fetching external tarballs from web sources.])
1541 AC_ARG_ENABLE(fuzzers,
1542 AS_HELP_STRING([--enable-fuzzers],
1543 [Enables building libfuzzer targets for fuzz testing.])
1546 libo_FUZZ_ARG_ENABLE(pch,
1547 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1548 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1549 Using 'system' will include only external headers, 'base' will add also headers
1550 from base modules, 'normal' will also add all headers except from the module built,
1551 'full' will use all suitable headers even from a module itself.])
1554 libo_FUZZ_ARG_ENABLE(epm,
1555 AS_HELP_STRING([--enable-epm],
1556 [LibreOffice includes self-packaging code, that requires epm, however epm is
1557 useless for large scale package building.])
1560 libo_FUZZ_ARG_ENABLE(odk,
1561 AS_HELP_STRING([--enable-odk],
1562 [Enable building the Office Development Kit, the part that extensions need to build against])
1565 AC_ARG_ENABLE(mpl-subset,
1566 AS_HELP_STRING([--enable-mpl-subset],
1567 [Don't compile any pieces which are not MPL or more liberally licensed])
1570 libo_FUZZ_ARG_ENABLE(evolution2,
1571 AS_HELP_STRING([--enable-evolution2],
1572 [Allows the built-in evolution 2 addressbook connectivity build to be
1576 AC_ARG_ENABLE(avahi,
1577 AS_HELP_STRING([--enable-avahi],
1578 [Determines whether to use Avahi to advertise Impress to remote controls.])
1581 libo_FUZZ_ARG_ENABLE(werror,
1582 AS_HELP_STRING([--enable-werror],
1583 [Turn warnings to errors. (Has no effect in modules where the treating
1584 of warnings as errors is disabled explicitly.)]),
1587 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1588 AS_HELP_STRING([--enable-assert-always-abort],
1589 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1592 libo_FUZZ_ARG_ENABLE(dbgutil,
1593 AS_HELP_STRING([--enable-dbgutil],
1594 [Provide debugging support from --enable-debug and include additional debugging
1595 utilities such as object counting or more expensive checks.
1596 This is the recommended option for developers.
1597 Note that this makes the build ABI incompatible, it is not possible to mix object
1598 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1600 libo_FUZZ_ARG_ENABLE(debug,
1601 AS_HELP_STRING([--enable-debug],
1602 [Include debugging information, disable compiler optimization and inlining plus
1603 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1605 libo_FUZZ_ARG_ENABLE(split-debug,
1606 AS_HELP_STRING([--disable-split-debug],
1607 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1608 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1610 libo_FUZZ_ARG_ENABLE(gdb-index,
1611 AS_HELP_STRING([--disable-gdb-index],
1612 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1613 The feature requires a linker that supports the --gdb-index option.]))
1615 libo_FUZZ_ARG_ENABLE(sal-log,
1616 AS_HELP_STRING([--enable-sal-log],
1617 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1619 libo_FUZZ_ARG_ENABLE(symbols,
1620 AS_HELP_STRING([--enable-symbols],
1621 [Generate debug information.
1622 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1623 otherwise. It is possible to explicitly specify gbuild build targets
1624 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1625 everything in the directory; there is no ordering, more specific overrides
1626 more general, and disabling takes precedence).
1627 Example: --enable-symbols="all -sw/ -Library_sc".]))
1629 libo_FUZZ_ARG_ENABLE(optimized,
1630 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1631 [Whether to compile with optimization flags.
1632 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1633 otherwise. Using 'debug' will try to use only optimizations that should
1634 not interfere with debugging. For Emscripten we default to optimized (-O1)
1635 debug build, as otherwise binaries become too large.]))
1637 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1638 AS_HELP_STRING([--disable-runtime-optimizations],
1639 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1640 JVM JIT) that are known to interact badly with certain dynamic analysis
1641 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1642 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1643 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1645 AC_ARG_WITH(valgrind,
1646 AS_HELP_STRING([--with-valgrind],
1647 [Make availability of Valgrind headers a hard requirement.]))
1649 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1650 AS_HELP_STRING([--enable-compiler-plugins],
1651 [Enable compiler plugins that will perform additional checks during
1652 building. Enabled automatically by --enable-dbgutil.
1653 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1654 COMPILER_PLUGINS_DEBUG=
1655 if test "$enable_compiler_plugins" = debug; then
1656 enable_compiler_plugins=yes
1657 COMPILER_PLUGINS_DEBUG=TRUE
1660 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1661 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1662 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1663 relevant in the --disable-compiler-plugins case.]))
1665 libo_FUZZ_ARG_ENABLE(ooenv,
1666 AS_HELP_STRING([--enable-ooenv],
1667 [Enable ooenv for the instdir installation.]))
1670 AS_HELP_STRING([--enable-lto],
1671 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1672 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1675 AC_ARG_ENABLE(python,
1676 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1677 [Enables or disables Python support at run-time.
1678 Also specifies what Python to use at build-time.
1679 'fully-internal' even forces the internal version for uses of Python
1681 On macOS the only choices are
1682 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1685 libo_FUZZ_ARG_ENABLE(gtk3,
1686 AS_HELP_STRING([--disable-gtk3],
1687 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1688 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1691 AS_HELP_STRING([--enable-gtk4],
1692 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1694 AC_ARG_ENABLE(atspi-tests,
1695 AS_HELP_STRING([--disable-atspi-tests],
1696 [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1698 AC_ARG_ENABLE(introspection,
1699 AS_HELP_STRING([--enable-introspection],
1700 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1701 Linux distributions.)]))
1703 AC_ARG_ENABLE(split-app-modules,
1704 AS_HELP_STRING([--enable-split-app-modules],
1705 [Split file lists for app modules, e.g. base, calc.
1706 Has effect only with make distro-pack-install]),
1709 AC_ARG_ENABLE(split-opt-features,
1710 AS_HELP_STRING([--enable-split-opt-features],
1711 [Split file lists for some optional features, e.g. pyuno, testtool.
1712 Has effect only with make distro-pack-install]),
1715 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1716 AS_HELP_STRING([--disable-cairo-canvas],
1717 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1720 libo_FUZZ_ARG_ENABLE(dbus,
1721 AS_HELP_STRING([--disable-dbus],
1722 [Determines whether to enable features that depend on dbus.
1723 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1724 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1726 libo_FUZZ_ARG_ENABLE(sdremote,
1727 AS_HELP_STRING([--disable-sdremote],
1728 [Determines whether to enable Impress remote control (i.e. the server component).]),
1729 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1731 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1732 AS_HELP_STRING([--disable-sdremote-bluetooth],
1733 [Determines whether to build sdremote with bluetooth support.
1734 Requires dbus on Linux.]))
1736 libo_FUZZ_ARG_ENABLE(gio,
1737 AS_HELP_STRING([--disable-gio],
1738 [Determines whether to use the GIO support.]),
1739 ,test "${enable_gio+set}" = set || enable_gio=yes)
1742 AS_HELP_STRING([--enable-qt5],
1743 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1748 AS_HELP_STRING([--enable-qt6],
1749 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1754 AS_HELP_STRING([--enable-kf5],
1755 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1756 KF5 are available.]),
1760 AS_HELP_STRING([--enable-kf6],
1761 [Determines whether to use KF6 vclplug on platforms where Qt6 and
1762 KF6 are available.]),
1766 AC_ARG_ENABLE(gtk3_kde5,
1767 AS_HELP_STRING([--enable-gtk3-kde5],
1768 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1769 platforms where Gtk3, Qt5 and Plasma is available.]),
1773 AS_HELP_STRING([--enable-gen],
1774 [To select the gen backend in case of --disable-dynamic-loading.
1775 Per default auto-enabled when X11 is used.]),
1776 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1779 AS_HELP_STRING([--disable-gui],
1780 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1783 libo_FUZZ_ARG_ENABLE(randr,
1784 AS_HELP_STRING([--disable-randr],
1785 [Disable RandR support in the vcl project.]),
1786 ,test "${enable_randr+set}" = set || enable_randr=yes)
1788 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1789 AS_HELP_STRING([--disable-gstreamer-1-0],
1790 [Disable building with the gstreamer 1.0 avmedia backend.]),
1791 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1793 libo_FUZZ_ARG_ENABLE([eot],
1794 [AS_HELP_STRING([--enable-eot],
1795 [Enable support for Embedded OpenType fonts.])],
1796 ,test "${enable_eot+set}" = set || enable_eot=no)
1798 libo_FUZZ_ARG_ENABLE(cve-tests,
1799 AS_HELP_STRING([--disable-cve-tests],
1800 [Prevent CVE tests to be executed]),
1803 AC_ARG_ENABLE(build-opensymbol,
1804 AS_HELP_STRING([--enable-build-opensymbol],
1805 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1806 fontforge installed.]),
1809 AC_ARG_ENABLE(dependency-tracking,
1810 AS_HELP_STRING([--enable-dependency-tracking],
1811 [Do not reject slow dependency extractors.])[
1812 --disable-dependency-tracking
1813 Disables generation of dependency information.
1814 Speed up one-time builds.],
1817 AC_ARG_ENABLE(icecream,
1818 AS_HELP_STRING([--enable-icecream],
1819 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1820 It defaults to /opt/icecream for the location of the icecream gcc/g++
1821 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1825 AS_HELP_STRING([--enable-ld=<linker>],
1826 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1827 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1828 If <linker> contains any ':', the part before the first ':' is used as the value of
1829 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1830 needed for Clang 12).]),
1833 libo_FUZZ_ARG_ENABLE(cups,
1834 AS_HELP_STRING([--disable-cups],
1835 [Do not build cups support.])
1838 AC_ARG_ENABLE(ccache,
1839 AS_HELP_STRING([--disable-ccache],
1840 [Do not try to use ccache automatically.
1841 By default we will try to detect if ccache is available; in that case if
1842 CC/CXX are not yet set, and --enable-icecream is not given, we
1843 attempt to use ccache. --disable-ccache disables ccache completely.
1844 Additionally ccache's depend mode is enabled if possible,
1845 use --enable-ccache=nodepend to enable ccache without depend mode.
1849 AC_ARG_ENABLE(z7-debug,
1850 AS_HELP_STRING([--enable-z7-debug],
1851 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1852 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1853 Enabled by default if ccache is detected.]))
1855 libo_FUZZ_ARG_ENABLE(online-update,
1856 AS_HELP_STRING([--enable-online-update],
1857 [Enable the online update service that will check for new versions of
1858 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1861 libo_FUZZ_ARG_ENABLE(online-update-mar,
1862 AS_HELP_STRING([--enable-online-update-mar],
1863 [Enable the experimental Mozilla-like online update service that will
1864 check for new versions of LibreOffice. Disabled by default.]),
1867 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1868 AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1869 [Set the base URL value for --enable-online-update-mar.
1870 (Can be left off for debug purposes, even if that may render the feature
1874 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1875 AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1876 [Set the certificate DER value for --enable-online-update-mar.
1877 (Can be left off for debug purposes, even if that may render the feature
1881 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1882 AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1883 [Set the certificate name value for --enable-online-update-mar.
1884 (Can be left off for debug purposes, even if that may render the feature
1888 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1889 AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1890 [Set the certificate path value for --enable-online-update-mar.
1891 (Can be left off for debug purposes, even if that may render the feature
1895 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1896 AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1897 [Set the upload URL value for --enable-online-update-mar.
1898 (Can be left off for debug purposes, even if that may render the feature
1902 libo_FUZZ_ARG_ENABLE(extension-update,
1903 AS_HELP_STRING([--disable-extension-update],
1904 [Disable possibility to update installed extensions.]),
1907 libo_FUZZ_ARG_ENABLE(release-build,
1908 AS_HELP_STRING([--enable-release-build],
1909 [Enable release build. Note that the "release build" choice is orthogonal to
1910 whether symbols are present, debug info is generated, or optimization
1912 See https://wiki.documentfoundation.org/Development/DevBuild]),
1915 libo_FUZZ_ARG_ENABLE(hardening-flags,
1916 AS_HELP_STRING([--enable-hardening-flags],
1917 [Enable automatically using hardening compiler flags. Distros should typically
1918 use their default configuration via CXXFLAGS, etc. But this provides a
1919 convenient default set of hardening flags]),
1922 AC_ARG_ENABLE(windows-build-signing,
1923 AS_HELP_STRING([--enable-windows-build-signing],
1924 [Enable signing of windows binaries (*.exe, *.dll)]),
1927 AC_ARG_ENABLE(silent-msi,
1928 AS_HELP_STRING([--enable-silent-msi],
1929 [Enable MSI with LIMITUI=1 (silent install).]),
1933 AS_HELP_STRING([--enable-wix],
1934 [Build Windows installer using WiX.]),
1937 AC_ARG_ENABLE(macosx-code-signing,
1938 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1939 [Sign executables, dylibs, frameworks and the app bundle. If you
1940 don't provide an identity the first suitable certificate
1941 in your keychain is used.]),
1944 AC_ARG_ENABLE(macosx-package-signing,
1945 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1946 [Create a .pkg suitable for uploading to the Mac App Store and sign
1947 it. If you don't provide an identity the first suitable certificate
1948 in your keychain is used.]),
1951 AC_ARG_ENABLE(macosx-sandbox,
1952 AS_HELP_STRING([--enable-macosx-sandbox],
1953 [Make the app bundle run in a sandbox. Requires code signing.
1954 Is required by apps distributed in the Mac App Store, and implies
1955 adherence to App Store rules.]),
1958 AC_ARG_WITH(macosx-bundle-identifier,
1959 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1960 [Define the macOS bundle identifier. Default is the somewhat weird
1961 org.libreoffice.script ("script", huh?).]),
1962 ,with_macosx_bundle_identifier=org.libreoffice.script)
1964 AC_ARG_WITH(macosx-provisioning-profile,
1965 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1966 [Specify the path to a provisioning profile to use]),
1969 AC_ARG_WITH(product-name,
1970 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1971 [Define the product name. Default is AC_PACKAGE_NAME.]),
1972 ,with_product_name=$PRODUCTNAME)
1974 libo_FUZZ_ARG_ENABLE(community-flavor,
1975 AS_HELP_STRING([--disable-community-flavor],
1976 [Disable the Community branding.]),
1979 AC_ARG_WITH(package-version,
1980 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1981 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1984 libo_FUZZ_ARG_ENABLE(readonly-installset,
1985 AS_HELP_STRING([--enable-readonly-installset],
1986 [Prevents any attempts by LibreOffice to write into its installation. That means
1987 at least that no "system-wide" extensions can be added. Partly experimental work in
1988 progress, probably not fully implemented. Always enabled for macOS.]),
1991 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1992 AS_HELP_STRING([--disable-mariadb-sdbc],
1993 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1996 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1997 AS_HELP_STRING([--disable-postgresql-sdbc],
1998 [Disable the build of the PostgreSQL-SDBC driver.])
2001 libo_FUZZ_ARG_ENABLE(lotuswordpro,
2002 AS_HELP_STRING([--disable-lotuswordpro],
2003 [Disable the build of the Lotus Word Pro filter.]),
2004 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2006 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2007 AS_HELP_STRING([--disable-firebird-sdbc],
2008 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2009 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2011 AC_ARG_ENABLE(bogus-pkg-config,
2012 AS_HELP_STRING([--enable-bogus-pkg-config],
2013 [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.]),
2016 AC_ARG_ENABLE(openssl,
2017 AS_HELP_STRING([--disable-openssl],
2018 [Disable using libssl/libcrypto from OpenSSL. If disabled,
2019 components will use NSS. Work in progress,
2020 use only if you are hacking on it.]),
2021 ,enable_openssl=yes)
2023 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2024 AS_HELP_STRING([--enable-cipher-openssl-backend],
2025 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2026 Requires --enable-openssl.]))
2029 AS_HELP_STRING([--disable-nss],
2030 [Disable using NSS. If disabled,
2031 components will use openssl. Work in progress,
2032 use only if you are hacking on it.]),
2035 AC_ARG_ENABLE(library-bin-tar,
2036 AS_HELP_STRING([--enable-library-bin-tar],
2037 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2038 Some libraries can save their build result in a tarball
2039 stored in TARFILE_LOCATION. That binary tarball is
2040 uniquely identified by the source tarball,
2041 the content of the config_host.mk file and the content
2042 of the top-level directory in core for that library
2043 If this option is enabled, then if such a tarfile exist, it will be untarred
2044 instead of the source tarfile, and the build step will be skipped for that
2046 If a proper tarfile does not exist, then the normal source-based
2047 build is done for that library and a proper binary tarfile is created
2048 for the next time.]),
2051 AC_ARG_ENABLE(dconf,
2052 AS_HELP_STRING([--disable-dconf],
2053 [Disable the dconf configuration backend (enabled by default where
2056 libo_FUZZ_ARG_ENABLE(formula-logger,
2058 [--enable-formula-logger],
2059 [Enable formula logger for logging formula calculation flow in Calc.]
2064 AS_HELP_STRING([--disable-ldap],
2065 [Disable LDAP support.]),
2068 AC_ARG_ENABLE(opencl,
2069 AS_HELP_STRING([--disable-opencl],
2070 [Disable OpenCL support.]),
2073 libo_FUZZ_ARG_ENABLE(librelogo,
2074 AS_HELP_STRING([--disable-librelogo],
2075 [Do not build LibreLogo.]),
2076 ,enable_librelogo=yes)
2078 AC_ARG_ENABLE(wasm-strip,
2079 AS_HELP_STRING([--enable-wasm-strip],
2080 [Strip the static build like for WASM/emscripten platform.]),
2083 AC_ARG_WITH(main-module,
2084 AS_HELP_STRING([--with-main-module=<writer/calc>],
2085 [Specify which main module to build for wasm.
2086 Default value is 'writer'.]),
2089 AC_ARG_ENABLE(wasm-exceptions,
2090 AS_HELP_STRING([--enable-wasm-exceptions],
2091 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2092 matter of fact, this is currently not finished by any implementation)
2093 (see https://webassembly.org/roadmap/ for the current state]),
2096 AC_ARG_ENABLE(xmlhelp,
2097 AS_HELP_STRING([--disable-xmlhelp],
2098 [Disable XML help support]),
2099 ,enable_xmlhelp=yes)
2101 AC_ARG_ENABLE(customtarget-components,
2102 AS_HELP_STRING([--enable-customtarget-components],
2103 [Generates the static UNO object constructor mapping from the build.]))
2105 dnl ===================================================================
2106 dnl Optional Packages (--with/without-)
2107 dnl ===================================================================
2109 AC_ARG_WITH(gcc-home,
2110 AS_HELP_STRING([--with-gcc-home],
2111 [Specify the location of gcc/g++ manually. This can be used in conjunction
2112 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2113 non-default path.]),
2116 AC_ARG_WITH(gnu-patch,
2117 AS_HELP_STRING([--with-gnu-patch],
2118 [Specify location of GNU patch on Solaris or FreeBSD.]),
2121 AC_ARG_WITH(build-platform-configure-options,
2122 AS_HELP_STRING([--with-build-platform-configure-options],
2123 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2127 AS_HELP_STRING([--with-gnu-cp],
2128 [Specify location of GNU cp on Solaris or FreeBSD.]),
2131 AC_ARG_WITH(external-tar,
2132 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2133 [Specify an absolute path of where to find (and store) tarfiles.]),
2134 TARFILE_LOCATION=$withval ,
2137 AC_ARG_WITH(referenced-git,
2138 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2139 [Specify another checkout directory to reference. This makes use of
2140 git submodule update --reference, and saves a lot of diskspace
2141 when having multiple trees side-by-side.]),
2142 GIT_REFERENCE_SRC=$withval ,
2145 AC_ARG_WITH(linked-git,
2146 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2147 [Specify a directory where the repositories of submodules are located.
2148 This uses a method similar to git-new-workdir to get submodules.]),
2149 GIT_LINK_SRC=$withval ,
2152 AC_ARG_WITH(galleries,
2153 AS_HELP_STRING([--with-galleries],
2154 [Specify how galleries should be built. It is possible either to
2155 build these internally from source ("build"),
2156 or to disable them ("no")]),
2159 AC_ARG_WITH(templates,
2160 AS_HELP_STRING([--with-templates],
2161 [Specify we build with or without template files. It is possible either to
2162 build with templates ("yes"),
2163 or to disable them ("no")]),
2167 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2168 [Choose which themes to include. By default those themes with an '*' are included.
2169 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2170 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2171 *elementary, *elementary_svg,
2172 *karasa_jaga, *karasa_jaga_svg,
2173 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2174 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2177 libo_FUZZ_ARG_WITH(helppack-integration,
2178 AS_HELP_STRING([--without-helppack-integration],
2179 [It will not integrate the helppacks to the installer
2180 of the product. Please use this switch to use the online help
2181 or separate help packages.]),
2184 libo_FUZZ_ARG_WITH(fonts,
2185 AS_HELP_STRING([--without-fonts],
2186 [LibreOffice includes some third-party fonts to provide a reliable basis for
2187 help content, templates, samples, etc. When these fonts are already
2188 known to be available on the system then you should use this option.]),
2191 libo_FUZZ_ARG_WITH(docrepair-fonts,
2192 AS_HELP_STRING([--with-docrepair-fonts],
2193 [LibreOffice optionally includes fonts from 'The DocRepair Project' that
2194 provide metrically equivalent fallback fonts for a variety of common fonts
2195 seen in Office Open XML documents. See https://github.com/docrepair-fonts
2196 for more details. This option has no effect when --without-fonts is used.]),
2199 AC_ARG_ENABLE(noto-font,
2200 AS_HELP_STRING([--enable-noto-font],
2201 [Add more Google Noto fonts.]),
2205 AS_HELP_STRING([--with-epm],
2206 [Decides which epm to use. Default is to use the one from the system if
2207 one is built. When either this is not there or you say =internal epm
2211 AC_ARG_WITH(package-format,
2212 AS_HELP_STRING([--with-package-format],
2213 [Specify package format(s) for LibreOffice installation sets. The
2214 implicit --without-package-format leads to no installation sets being
2215 generated. Possible values: archive, bsd, deb, dmg,
2216 installed, msi, pkg, and rpm.
2217 Example: --with-package-format='deb rpm']),
2221 AS_HELP_STRING([--with-tls],
2222 [Decides which TLS/SSL and cryptographic implementations to use for
2223 LibreOffice's code. Default is to use NSS although OpenSSL is also
2224 possible. Notice that selecting NSS restricts the usage of OpenSSL
2225 in LO's code but selecting OpenSSL doesn't restrict by now the
2226 usage of NSS in LO's code. Possible values: openssl, nss.
2227 Example: --with-tls="nss"]),
2230 AC_ARG_WITH(system-libs,
2231 AS_HELP_STRING([--with-system-libs],
2232 [Use libraries already on system -- enables all --with-system-* flags.]),
2235 AC_ARG_WITH(system-bzip2,
2236 AS_HELP_STRING([--with-system-bzip2],
2237 [Use bzip2 already on system. Used when --enable-online-update-mar
2238 or --enable-python=internal]),,
2239 [with_system_bzip2="$with_system_libs"])
2241 AC_ARG_WITH(system-headers,
2242 AS_HELP_STRING([--with-system-headers],
2243 [Use headers already on system -- enables all --with-system-* flags for
2244 external packages whose headers are the only entities used i.e.
2245 boost/odbc/sane-header(s).]),,
2246 [with_system_headers="$with_system_libs"])
2248 AC_ARG_WITH(system-jars,
2249 AS_HELP_STRING([--without-system-jars],
2250 [When building with --with-system-libs, also the needed jars are expected
2251 on the system. Use this to disable that]),,
2252 [with_system_jars="$with_system_libs"])
2254 AC_ARG_WITH(system-cairo,
2255 AS_HELP_STRING([--with-system-cairo],
2256 [Use cairo libraries already on system. Happens automatically for
2257 (implicit) --enable-gtk3.]))
2259 AC_ARG_WITH(system-epoxy,
2260 AS_HELP_STRING([--with-system-epoxy],
2261 [Use epoxy libraries already on system. Happens automatically for
2262 (implicit) --enable-gtk3.]),,
2263 [with_system_epoxy="$with_system_libs"])
2265 AC_ARG_WITH(myspell-dicts,
2266 AS_HELP_STRING([--with-myspell-dicts],
2267 [Adds myspell dictionaries to the LibreOffice installation set]),
2270 AC_ARG_WITH(system-dicts,
2271 AS_HELP_STRING([--without-system-dicts],
2272 [Do not use dictionaries from system paths.]),
2275 AC_ARG_WITH(external-dict-dir,
2276 AS_HELP_STRING([--with-external-dict-dir],
2277 [Specify external dictionary dir.]),
2280 AC_ARG_WITH(external-hyph-dir,
2281 AS_HELP_STRING([--with-external-hyph-dir],
2282 [Specify external hyphenation pattern dir.]),
2285 AC_ARG_WITH(external-thes-dir,
2286 AS_HELP_STRING([--with-external-thes-dir],
2287 [Specify external thesaurus dir.]),
2290 AC_ARG_WITH(system-zlib,
2291 AS_HELP_STRING([--with-system-zlib],
2292 [Use zlib already on system.]),,
2293 [with_system_zlib=auto])
2295 AC_ARG_WITH(system-jpeg,
2296 AS_HELP_STRING([--with-system-jpeg],
2297 [Use jpeg already on system.]),,
2298 [with_system_jpeg="$with_system_libs"])
2300 AC_ARG_WITH(system-expat,
2301 AS_HELP_STRING([--with-system-expat],
2302 [Use expat already on system.]),,
2303 [with_system_expat="$with_system_libs"])
2305 AC_ARG_WITH(system-libxml,
2306 AS_HELP_STRING([--with-system-libxml],
2307 [Use libxml/libxslt already on system.]),,
2308 [with_system_libxml=auto])
2310 AC_ARG_WITH(system-openldap,
2311 AS_HELP_STRING([--with-system-openldap],
2312 [Use the OpenLDAP LDAP SDK already on system.]),,
2313 [with_system_openldap="$with_system_libs"])
2315 libo_FUZZ_ARG_ENABLE(poppler,
2316 AS_HELP_STRING([--disable-poppler],
2317 [Disable building Poppler.])
2320 AC_ARG_WITH(system-poppler,
2321 AS_HELP_STRING([--with-system-poppler],
2322 [Use system poppler (only needed for PDF import).]),,
2323 [with_system_poppler="$with_system_libs"])
2325 AC_ARG_WITH(system-abseil,
2326 AS_HELP_STRING([--with-system-abseil],
2327 [Use the abseil libraries already on system.]),,
2328 [with_system_abseil="$with_system_libs"])
2330 AC_ARG_WITH(system-openjpeg,
2331 AS_HELP_STRING([--with-system-openjpeg],
2332 [Use the OpenJPEG library already on system.]),,
2333 [with_system_openjpeg="$with_system_libs"])
2335 libo_FUZZ_ARG_ENABLE(gpgmepp,
2336 AS_HELP_STRING([--disable-gpgmepp],
2337 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2340 AC_ARG_WITH(system-gpgmepp,
2341 AS_HELP_STRING([--with-system-gpgmepp],
2342 [Use gpgmepp already on system]),,
2343 [with_system_gpgmepp="$with_system_libs"])
2345 AC_ARG_WITH(system-mariadb,
2346 AS_HELP_STRING([--with-system-mariadb],
2347 [Use MariaDB/MySQL libraries already on system.]),,
2348 [with_system_mariadb="$with_system_libs"])
2350 AC_ARG_ENABLE(bundle-mariadb,
2351 AS_HELP_STRING([--enable-bundle-mariadb],
2352 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2355 AC_ARG_WITH(system-postgresql,
2356 AS_HELP_STRING([--with-system-postgresql],
2357 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2358 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2359 [with_system_postgresql="$with_system_libs"])
2361 AC_ARG_WITH(libpq-path,
2362 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2363 [Use this PostgreSQL C interface (libpq) installation for building
2364 the PostgreSQL-SDBC extension.]),
2367 AC_ARG_WITH(system-firebird,
2368 AS_HELP_STRING([--with-system-firebird],
2369 [Use Firebird libraries already on system, for building the Firebird-SDBC
2370 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2371 [with_system_firebird="$with_system_libs"])
2373 AC_ARG_WITH(system-libtommath,
2374 AS_HELP_STRING([--with-system-libtommath],
2375 [Use libtommath already on system]),,
2376 [with_system_libtommath="$with_system_libs"])
2378 AC_ARG_WITH(system-hsqldb,
2379 AS_HELP_STRING([--with-system-hsqldb],
2380 [Use hsqldb already on system.]))
2382 AC_ARG_WITH(hsqldb-jar,
2383 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2384 [Specify path to jarfile manually.]),
2385 HSQLDB_JAR=$withval)
2387 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2388 AS_HELP_STRING([--disable-scripting-beanshell],
2389 [Disable support for scripts in BeanShell.]),
2393 AC_ARG_WITH(system-beanshell,
2394 AS_HELP_STRING([--with-system-beanshell],
2395 [Use beanshell already on system.]),,
2396 [with_system_beanshell="$with_system_jars"])
2398 AC_ARG_WITH(beanshell-jar,
2399 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2400 [Specify path to jarfile manually.]),
2403 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2404 AS_HELP_STRING([--disable-scripting-javascript],
2405 [Disable support for scripts in JavaScript.]),
2409 AC_ARG_WITH(system-rhino,
2410 AS_HELP_STRING([--with-system-rhino],
2411 [Use rhino already on system.]),,)
2412 # [with_system_rhino="$with_system_jars"])
2413 # Above is not used as we have different debug interface
2414 # patched into internal rhino. This code needs to be fixed
2415 # before we can enable it by default.
2417 AC_ARG_WITH(rhino-jar,
2418 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2419 [Specify path to jarfile manually.]),
2422 AC_ARG_WITH(system-jfreereport,
2423 AS_HELP_STRING([--with-system-jfreereport],
2424 [Use JFreeReport already on system.]),,
2425 [with_system_jfreereport="$with_system_jars"])
2427 AC_ARG_WITH(sac-jar,
2428 AS_HELP_STRING([--with-sac-jar=JARFILE],
2429 [Specify path to jarfile manually.]),
2432 AC_ARG_WITH(libxml-jar,
2433 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2434 [Specify path to jarfile manually.]),
2435 LIBXML_JAR=$withval)
2437 AC_ARG_WITH(flute-jar,
2438 AS_HELP_STRING([--with-flute-jar=JARFILE],
2439 [Specify path to jarfile manually.]),
2442 AC_ARG_WITH(jfreereport-jar,
2443 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2444 [Specify path to jarfile manually.]),
2445 JFREEREPORT_JAR=$withval)
2447 AC_ARG_WITH(liblayout-jar,
2448 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2449 [Specify path to jarfile manually.]),
2450 LIBLAYOUT_JAR=$withval)
2452 AC_ARG_WITH(libloader-jar,
2453 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2454 [Specify path to jarfile manually.]),
2455 LIBLOADER_JAR=$withval)
2457 AC_ARG_WITH(libformula-jar,
2458 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2459 [Specify path to jarfile manually.]),
2460 LIBFORMULA_JAR=$withval)
2462 AC_ARG_WITH(librepository-jar,
2463 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2464 [Specify path to jarfile manually.]),
2465 LIBREPOSITORY_JAR=$withval)
2467 AC_ARG_WITH(libfonts-jar,
2468 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2469 [Specify path to jarfile manually.]),
2470 LIBFONTS_JAR=$withval)
2472 AC_ARG_WITH(libserializer-jar,
2473 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2474 [Specify path to jarfile manually.]),
2475 LIBSERIALIZER_JAR=$withval)
2477 AC_ARG_WITH(libbase-jar,
2478 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2479 [Specify path to jarfile manually.]),
2480 LIBBASE_JAR=$withval)
2482 AC_ARG_WITH(system-odbc,
2483 AS_HELP_STRING([--with-system-odbc],
2484 [Use the odbc headers already on system.]),,
2485 [with_system_odbc="auto"])
2487 AC_ARG_WITH(system-sane,
2488 AS_HELP_STRING([--with-system-sane],
2489 [Use sane.h already on system.]),,
2490 [with_system_sane="$with_system_headers"])
2492 AC_ARG_WITH(system-bluez,
2493 AS_HELP_STRING([--with-system-bluez],
2494 [Use bluetooth.h already on system.]),,
2495 [with_system_bluez="$with_system_headers"])
2497 AC_ARG_WITH(system-boost,
2498 AS_HELP_STRING([--with-system-boost],
2499 [Use boost already on system.]),,
2500 [with_system_boost="$with_system_headers"])
2502 AC_ARG_WITH(system-dragonbox,
2503 AS_HELP_STRING([--with-system-dragonbox],
2504 [Use dragonbox already on system.]),,
2505 [with_system_dragonbox="$with_system_headers"])
2507 AC_ARG_WITH(system-frozen,
2508 AS_HELP_STRING([--with-system-frozen],
2509 [Use frozen already on system.]),,
2510 [with_system_frozen="$with_system_headers"])
2512 AC_ARG_WITH(system-libfixmath,
2513 AS_HELP_STRING([--with-system-libfixmath],
2514 [Use libfixmath already on system.]),,
2515 [with_system_libfixmath="$with_system_libs"])
2517 AC_ARG_WITH(system-glm,
2518 AS_HELP_STRING([--with-system-glm],
2519 [Use glm already on system.]),,
2520 [with_system_glm="$with_system_headers"])
2522 AC_ARG_WITH(system-hunspell,
2523 AS_HELP_STRING([--with-system-hunspell],
2524 [Use libhunspell already on system.]),,
2525 [with_system_hunspell="$with_system_libs"])
2527 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2528 AS_HELP_STRING([--enable-cairo-rgba],
2529 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2531 libo_FUZZ_ARG_ENABLE(zxing,
2532 AS_HELP_STRING([--disable-zxing],
2533 [Disable use of zxing external library.]))
2535 AC_ARG_WITH(system-zxing,
2536 AS_HELP_STRING([--with-system-zxing],
2537 [Use libzxing already on system.]),,
2538 [with_system_zxing="$with_system_libs"])
2540 AC_ARG_WITH(system-zxcvbn,
2541 AS_HELP_STRING([--with-system-zxcvbn],
2542 [Use libzxcvbn already on system.]),,
2543 [with_system_zxcvbn="$with_system_libs"])
2545 AC_ARG_WITH(system-box2d,
2546 AS_HELP_STRING([--with-system-box2d],
2547 [Use box2d already on system.]),,
2548 [with_system_box2d="$with_system_libs"])
2550 AC_ARG_WITH(system-mythes,
2551 AS_HELP_STRING([--with-system-mythes],
2552 [Use mythes already on system.]),,
2553 [with_system_mythes="$with_system_libs"])
2555 AC_ARG_WITH(system-altlinuxhyph,
2556 AS_HELP_STRING([--with-system-altlinuxhyph],
2557 [Use ALTLinuxhyph already on system.]),,
2558 [with_system_altlinuxhyph="$with_system_libs"])
2560 AC_ARG_WITH(system-lpsolve,
2561 AS_HELP_STRING([--with-system-lpsolve],
2562 [Use lpsolve already on system.]),,
2563 [with_system_lpsolve="$with_system_libs"])
2565 AC_ARG_WITH(system-coinmp,
2566 AS_HELP_STRING([--with-system-coinmp],
2567 [Use CoinMP already on system.]),,
2568 [with_system_coinmp="$with_system_libs"])
2570 AC_ARG_WITH(system-liblangtag,
2571 AS_HELP_STRING([--with-system-liblangtag],
2572 [Use liblangtag library already on system.]),,
2573 [with_system_liblangtag="$with_system_libs"])
2575 AC_ARG_WITH(system-lockfile,
2576 AS_HELP_STRING([--with-system-lockfile[=file]],
2577 [Detect a system lockfile program or use the \$file argument.]))
2580 AS_HELP_STRING([--without-webdav],
2581 [Disable WebDAV support in the UCB.]))
2583 AC_ARG_WITH(linker-hash-style,
2584 AS_HELP_STRING([--with-linker-hash-style],
2585 [Use linker with --hash-style=<style> when linking shared objects.
2586 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2587 if supported on the build system, and "sysv" otherwise.]))
2589 AC_ARG_WITH(jdk-home,
2590 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2591 [If you have installed JDK 8 or later on your system please supply the
2592 path here. Note that this is not the location of the java command but the
2593 location of the entire distribution. In case of cross-compiling, this
2594 is the JDK of the host os. Use --with-build-platform-configure-options
2595 to point to a different build platform JDK.]),
2599 AS_HELP_STRING([--with-help],
2600 [Enable the build of help. There is a special parameter "common" that
2601 can be used to bundle only the common part, .e.g help-specific icons.
2602 This is useful when you build the helpcontent separately.])
2604 Usage: --with-help build the old local help
2605 --without-help no local help (default)
2606 --with-help=html build the new HTML local help
2607 --with-help=online build the new HTML online help
2611 AC_ARG_WITH(omindex,
2612 AS_HELP_STRING([--with-omindex],
2613 [Enable the support of xapian-omega index for online help.])
2615 Usage: --with-omindex=server prepare the pages for omindex
2616 but let xapian-omega be built in server.
2617 --with-omindex=noxap do not prepare online pages
2622 libo_FUZZ_ARG_WITH(java,
2623 AS_HELP_STRING([--with-java=<java command>],
2624 [Specify the name of the Java interpreter command. Typically "java"
2625 which is the default.
2627 To build without support for Java components, applets, accessibility
2628 or the XML filters written in Java, use --without-java or --with-java=no.]),
2629 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2630 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2633 AC_ARG_WITH(jvm-path,
2634 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2635 [Use a specific JVM search path at runtime.
2636 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2639 AC_ARG_WITH(ant-home,
2640 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2641 [If you have installed Apache Ant on your system, please supply the path here.
2642 Note that this is not the location of the Ant binary but the location
2643 of the entire distribution.]),
2646 AC_ARG_WITH(symbol-config,
2647 AS_HELP_STRING([--with-symbol-config],
2648 [Configuration for the crashreport symbol upload]),
2650 [with_symbol_config=no])
2652 AC_ARG_WITH(export-validation,
2653 AS_HELP_STRING([--without-export-validation],
2654 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2655 ,with_export_validation=auto)
2657 AC_ARG_WITH(bffvalidator,
2658 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2659 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2660 Requires installed Microsoft Office Binary File Format Validator.
2661 Note: export-validation (--with-export-validation) is required to be turned on.
2662 See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2663 ,with_bffvalidator=no)
2665 libo_FUZZ_ARG_WITH(junit,
2666 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2667 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2668 --without-junit disables those tests. Not relevant in the --without-java case.]),
2671 AC_ARG_WITH(hamcrest,
2672 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2673 [Specifies the hamcrest jar file to use for JUnit-based tests.
2674 --without-junit disables those tests. Not relevant in the --without-java case.]),
2677 AC_ARG_WITH(perl-home,
2678 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2679 [If you have installed Perl 5 Distribution, on your system, please
2680 supply the path here. Note that this is not the location of the Perl
2681 binary but the location of the entire distribution.]),
2684 libo_FUZZ_ARG_WITH(doxygen,
2686 [--with-doxygen=<absolute path to doxygen executable>],
2687 [Specifies the doxygen executable to use when generating ODK C/C++
2688 documentation. --without-doxygen disables generation of ODK C/C++
2689 documentation. Not relevant in the --disable-odk case.]),
2692 AC_ARG_WITH(visual-studio,
2693 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2694 [Specify which Visual Studio version to use in case several are
2695 installed. Currently 2019 (default) and 2022 are supported.]),
2698 AC_ARG_WITH(windows-sdk,
2699 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2700 [Specify which Windows SDK, or "Windows Kit", version to use
2701 in case the one that came with the selected Visual Studio
2702 is not what you want for some reason. Note that not all compiler/SDK
2703 combinations are supported. The intent is that this option should not
2708 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2709 [Use this option to build LibreOffice with additional UI language support.
2710 English (US) is always included by default.
2711 Separate multiple languages with space.
2712 For all languages, use --with-lang=ALL.]),
2715 AC_ARG_WITH(locales,
2716 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2717 [Use this option to limit the locale information built in.
2718 Separate multiple locales with space.
2719 Very experimental and might well break stuff.
2720 Just a desperate measure to shrink code and data size.
2721 By default all the locales available is included.
2722 Just works with --disable-dynloading. Defaults to "ALL".
2723 This option is completely unrelated to --with-lang.])
2725 Affects also our character encoding conversion
2726 tables for encodings mainly targeted for a
2727 particular locale, like EUC-CN and EUC-TW for
2728 zh, ISO-2022-JP for ja.
2730 Affects also our add-on break iterator data for
2733 For the default, all locales, don't use this switch at all.
2734 Specifying just the language part of a locale means all matching
2735 locales will be included.
2739 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2740 #Â and also by libcurl since LibO 24.2.6
2741 libo_FUZZ_ARG_WITH(krb5,
2742 AS_HELP_STRING([--with-krb5],
2743 [Enable MIT Kerberos 5 support in modules that support it.
2744 By default automatically enabled on platforms
2745 where a good system Kerberos 5 is available.]),
2748 libo_FUZZ_ARG_WITH(gssapi,
2749 AS_HELP_STRING([--with-gssapi],
2750 [Enable GSSAPI support in modules that support it.
2751 By default automatically enabled on platforms
2752 where a good system GSSAPI is available.]),
2755 libo_FUZZ_ARG_WITH(lxml,
2756 AS_HELP_STRING([--without-lxml],
2757 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2758 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2759 report widget classes and ids.]),
2762 libo_FUZZ_ARG_WITH(latest-c++,
2763 AS_HELP_STRING([--with-latest-c++],
2764 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2765 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2766 [with_latest_c__=no])
2768 AC_ARG_WITH(gtk3-build,
2769 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2770 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2771 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2773 dnl ===================================================================
2775 dnl ===================================================================
2777 AC_ARG_WITH(branding,
2778 AS_HELP_STRING([--with-branding=/path/to/images],
2779 [Use given path to retrieve branding images set.])
2781 Search for intro.png about.svg and logo.svg.
2782 If any is missing, default ones will be used instead.
2784 Search also progress.conf for progress
2785 settings on intro screen :
2787 PROGRESSBARCOLOR="255,255,255" Set color of
2788 progress bar. Comma separated RGB decimal values.
2789 PROGRESSSIZE="407,6" Set size of progress bar.
2790 Comma separated decimal values (width, height).
2791 PROGRESSPOSITION="61,317" Set position of progress
2792 bar from left,top. Comma separated decimal values.
2793 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2794 bar frame. Comma separated RGB decimal values.
2795 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2796 bar text. Comma separated RGB decimal values.
2797 PROGRESSTEXTBASELINE="287" Set vertical position of
2798 progress bar text from top. Decimal value.
2800 Default values will be used if not found.
2805 AC_ARG_WITH(extra-buildid,
2806 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2807 [Show addition build identification in about dialog.]),
2812 AS_HELP_STRING([--with-vendor="John the Builder"],
2813 [Set vendor of the build.]),
2816 AC_ARG_WITH(privacy-policy-url,
2817 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2818 [The URL to your privacy policy (needed when
2819 enabling online-update or crashreporting via breakpad)]),
2820 [if test "x$with_privacy_policy_url" = "xyes"; then
2821 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2822 elif test "x$with_privacy_policy_url" = "xno"; then
2823 with_privacy_policy_url="undefined"
2825 ,[with_privacy_policy_url="undefined"])
2827 AC_ARG_WITH(android-package-name,
2828 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2829 [Set Android package name of the build.]),
2832 AC_ARG_WITH(compat-oowrappers,
2833 AS_HELP_STRING([--with-compat-oowrappers],
2834 [Install oo* wrappers in parallel with
2835 lo* ones to keep backward compatibility.
2836 Has effect only with make distro-pack-install]),
2839 AC_ARG_WITH(os-version,
2840 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2841 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2844 AC_ARG_WITH(parallelism,
2845 AS_HELP_STRING([--with-parallelism],
2846 [Number of jobs to run simultaneously during build. Parallel builds can
2847 save a lot of time on multi-cpu machines. Defaults to the number of
2848 CPUs on the machine, unless you configure --enable-icecream - then to
2852 AC_ARG_WITH(all-tarballs,
2853 AS_HELP_STRING([--with-all-tarballs],
2854 [Download all external tarballs unconditionally]))
2856 AC_ARG_WITH(gdrive-client-id,
2857 AS_HELP_STRING([--with-gdrive-client-id],
2858 [Provides the client id of the application for OAuth2 authentication
2859 on Google Drive. If either this or --with-gdrive-client-secret is
2860 empty, the feature will be disabled]),
2863 AC_ARG_WITH(gdrive-client-secret,
2864 AS_HELP_STRING([--with-gdrive-client-secret],
2865 [Provides the client secret of the application for OAuth2
2866 authentication on Google Drive. If either this or
2867 --with-gdrive-client-id is empty, the feature will be disabled]),
2870 AC_ARG_WITH(alfresco-cloud-client-id,
2871 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2872 [Provides the client id of the application for OAuth2 authentication
2873 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2874 empty, the feature will be disabled]),
2877 AC_ARG_WITH(alfresco-cloud-client-secret,
2878 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2879 [Provides the client secret of the application for OAuth2
2880 authentication on Alfresco Cloud. If either this or
2881 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2884 AC_ARG_WITH(onedrive-client-id,
2885 AS_HELP_STRING([--with-onedrive-client-id],
2886 [Provides the client id of the application for OAuth2 authentication
2887 on OneDrive. If either this or --with-onedrive-client-secret is
2888 empty, the feature will be disabled]),
2891 AC_ARG_WITH(onedrive-client-secret,
2892 AS_HELP_STRING([--with-onedrive-client-secret],
2893 [Provides the client secret of the application for OAuth2
2894 authentication on OneDrive. If either this or
2895 --with-onedrive-client-id is empty, the feature will be disabled]),
2898 dnl Check for coredumpctl support to present information about crashing test processes:
2899 AC_ARG_WITH(coredumpctl,
2900 AS_HELP_STRING([--with-coredumpctl],
2901 [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2904 AC_ARG_WITH(buildconfig-recorded,
2905 AS_HELP_STRING([--with-buildconfig-recorded],
2906 [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2909 AC_MSG_CHECKING([whether to record build config])
2910 if test -z "$with_buildconfig_recorded"; then
2911 with_buildconfig_recorded=no
2913 if test "$with_buildconfig_recorded" = no; then
2916 AC_MSG_RESULT([yes])
2917 # replace backslashes, to get a valid c++ string
2918 config_args=$(echo $ac_configure_args | tr '\\' '/')
2919 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2920 AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2923 dnl ===================================================================
2924 dnl Do we want to use pre-build binary tarball for recompile
2925 dnl ===================================================================
2927 if test "$enable_library_bin_tar" = "yes" ; then
2928 USE_LIBRARY_BIN_TAR=TRUE
2930 USE_LIBRARY_BIN_TAR=
2932 AC_SUBST(USE_LIBRARY_BIN_TAR)
2934 dnl ===================================================================
2935 dnl Test whether build target is Release Build
2936 dnl ===================================================================
2937 AC_MSG_CHECKING([whether build target is Release Build])
2938 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2940 ENABLE_RELEASE_BUILD=
2941 dnl Pu the value on one line as make (at least on macOS) seems to ignore
2942 dnl the newlines and then complains about spaces.
2943 GET_TASK_ALLOW_ENTITLEMENT='<!-- We want to be able to debug a hardened process when not building for release --><key>com.apple.security.get-task-allow</key><true/>'
2945 AC_MSG_RESULT([yes])
2946 ENABLE_RELEASE_BUILD=TRUE
2947 GET_TASK_ALLOW_ENTITLEMENT=
2949 AC_SUBST(ENABLE_RELEASE_BUILD)
2950 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2952 dnl ===================================================================
2953 dnl Test whether build should auto use hardening compiler flags
2954 dnl ===================================================================
2955 AC_MSG_CHECKING([whether build should auto use hardening compiler flags])
2956 if test "$enable_hardening_flags" = "" -o "$enable_hardening_flags" = "no"; then
2958 ENABLE_HARDENING_FLAGS=
2960 AC_MSG_RESULT([yes])
2961 ENABLE_HARDENING_FLAGS=TRUE
2963 AC_SUBST(ENABLE_HARDENING_FLAGS)
2965 AC_MSG_CHECKING([whether to build a Community flavor])
2966 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2967 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2968 AC_MSG_RESULT([yes])
2973 dnl ===================================================================
2974 dnl Test whether to sign Windows Build
2975 dnl ===================================================================
2976 AC_MSG_CHECKING([whether to sign windows build])
2977 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2978 AC_MSG_RESULT([yes])
2979 WINDOWS_BUILD_SIGNING="TRUE"
2982 WINDOWS_BUILD_SIGNING="FALSE"
2984 AC_SUBST(WINDOWS_BUILD_SIGNING)
2986 dnl ===================================================================
2987 dnl MacOSX build and runtime environment options
2988 dnl ===================================================================
2990 AC_ARG_WITH(macosx-version-min-required,
2991 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2992 [set the minimum OS version needed to run the built LibreOffice])
2994 e. g.: --with-macosx-version-min-required=10.15
2998 dnl ===================================================================
2999 dnl Check for incompatible options set by fuzzing, and reset those
3000 dnl automatically to working combinations
3001 dnl ===================================================================
3003 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
3004 "$enable_dbus" != "$enable_avahi"; then
3005 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
3006 enable_avahi=$enable_dbus
3011 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
3012 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
3016 add_lopath_before ()
3021 for dir in $LO_PATH ; do
3022 if test "$dir" != "$1" ; then
3023 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
3026 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
3029 dnl ===================================================================
3030 dnl check for required programs (grep, awk, sed, bash)
3031 dnl ===================================================================
3036 if test -n "$1"; then
3037 if test "$build_os" = "cygwin"; then
3038 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3040 new_path=`cygpath -sm "$formatted_path"`
3043 new_path=`cygpath -u "$formatted_path"`
3048 if test "$2" = "after"; then
3049 add_lopath_after "$new_path"
3051 add_lopath_before "$new_path"
3057 AC_PATH_PROG( AWK, $AWK)
3058 if test -z "$AWK"; then
3059 AC_MSG_ERROR([install awk to run this script])
3062 AC_PATH_PROG(BASH, bash)
3063 if test -z "$BASH"; then
3064 AC_MSG_ERROR([bash not found in \$PATH])
3068 # prefer parallel compression tools, if available
3069 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3070 if test -z "$COMPRESSIONTOOL"; then
3071 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3072 if test -z "$COMPRESSIONTOOL"; then
3073 AC_MSG_ERROR([gzip not found in \$PATH])
3076 AC_SUBST(COMPRESSIONTOOL)
3078 AC_MSG_CHECKING([for GNU or BSD tar])
3079 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3080 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
3081 if test $? -eq 0; then
3086 AC_MSG_RESULT($GNUTAR)
3087 if test -z "$GNUTAR"; then
3088 AC_MSG_ERROR([not found. install GNU or BSD tar.])
3092 AC_MSG_CHECKING([for tar's option to strip components])
3093 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3094 if test $? -eq 0; then
3095 STRIP_COMPONENTS="--strip-components"
3097 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3098 if test $? -eq 0; then
3099 STRIP_COMPONENTS="--strip-path"
3101 STRIP_COMPONENTS="unsupported"
3104 AC_MSG_RESULT($STRIP_COMPONENTS)
3105 if test x$STRIP_COMPONENTS = xunsupported; then
3106 AC_MSG_ERROR([you need a tar that is able to strip components.])
3108 AC_SUBST(STRIP_COMPONENTS)
3110 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3111 dnl desktop OSes from "mobile" ones.
3113 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3114 dnl In other words, that when building for an OS that is not a
3115 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3117 dnl Note the direction of the implication; there is no assumption that
3118 dnl cross-compiling would imply a non-desktop OS.
3120 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3121 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3122 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3123 if test "$_os" != Emscripten; then
3124 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3128 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3129 # also work with the default gtk3 plugin.
3130 if test "$enable_wasm_strip" = "yes"; then
3135 test "$_os" = Emscripten && enable_curl=no
3136 enable_database_connectivity=no
3139 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3140 enable_extension_integration=no
3141 enable_extensions=no
3142 enable_extension_update=no
3146 enable_lotuswordpro=no
3150 enable_online_update=no
3154 enable_report_builder=no
3156 enable_sdremote_bluetooth=no
3166 test_libpagemaker=no
3176 test "${with_fonts+set}" = set || with_fonts=yes
3177 test "${with_locales+set}" = set || with_locales=en
3179 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3180 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3181 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3182 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3183 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3184 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3185 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3186 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3187 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3188 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3189 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3190 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3191 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3192 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3193 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3194 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3195 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3196 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3199 EMSCRIPTEN_NEH_MAJOR=3
3200 EMSCRIPTEN_NEH_MINOR=1
3201 EMSCRIPTEN_NEH_TINY=3
3202 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3204 if test "$enable_wasm_exceptions" = yes; then
3205 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3206 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3207 if test $? -ne 0; then
3208 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3210 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3212 ENABLE_WASM_EXCEPTIONS=TRUE
3214 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3216 # Whether to build "avmedia" functionality or not.
3218 if test "$enable_avmedia" = yes; then
3219 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3220 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3222 test_gstreamer_1_0=no
3225 # Decide whether to build database connectivity stuff (including Base) or not.
3226 if test "$enable_database_connectivity" != no; then
3227 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3228 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3230 if test "$_os" = iOS; then
3231 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3233 disable_database_connectivity_dependencies
3236 if test -z "$enable_extensions"; then
3237 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3238 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3239 enable_extensions=yes
3243 DISABLE_SCRIPTING=''
3244 if test "$enable_scripting" = yes; then
3245 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3246 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3248 DISABLE_SCRIPTING='TRUE'
3249 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3252 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3253 # Disable dynamic_loading always for iOS and Android
3254 enable_dynamic_loading=no
3255 elif test -z "$enable_dynamic_loading"; then
3256 # Otherwise enable it unless specifically disabled
3257 enable_dynamic_loading=yes
3260 DISABLE_DYNLOADING=''
3261 if test "$enable_dynamic_loading" = yes; then
3262 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3264 DISABLE_DYNLOADING='TRUE'
3265 if test $_os != iOS -a $_os != Android; then
3266 enable_database_connectivity=no
3274 AC_SUBST(DISABLE_DYNLOADING)
3276 ENABLE_CUSTOMTARGET_COMPONENTS=
3277 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3278 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3279 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3280 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3283 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3285 if test "$enable_extensions" = yes; then
3286 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3287 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3289 enable_extension_integration=no
3290 enable_extension_update=no
3293 # remember SYSBASE value
3296 dnl ===================================================================
3297 dnl Sort out various gallery compilation options
3298 dnl ===================================================================
3299 WITH_GALLERY_BUILD=TRUE
3300 AC_MSG_CHECKING([how to build and package galleries])
3301 if test -n "${with_galleries}"; then
3302 if test "$with_galleries" = "build"; then
3303 if test "$enable_database_connectivity" = no; then
3304 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3306 AC_MSG_RESULT([build from source images internally])
3307 elif test "$with_galleries" = "no"; then
3309 AC_MSG_RESULT([disable non-internal gallery build])
3311 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3314 if test $_os != iOS -a $_os != Android; then
3315 AC_MSG_RESULT([internal src images for desktop])
3318 AC_MSG_RESULT([disable src image build])
3321 AC_SUBST(WITH_GALLERY_BUILD)
3323 dnl ===================================================================
3324 dnl Sort out various templates compilation options
3325 dnl ===================================================================
3327 AC_MSG_CHECKING([build with or without template files])
3328 if test -n "${with_templates}"; then
3329 if test "$with_templates" = "yes"; then
3330 AC_MSG_RESULT([enable all templates])
3331 elif test "$with_templates" = "no"; then
3333 AC_MSG_RESULT([disable non-internal templates])
3335 AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3338 if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3339 AC_MSG_RESULT([enable all templates])
3342 AC_MSG_RESULT([disable non-internal templates])
3345 AC_SUBST(WITH_TEMPLATES)
3347 dnl ===================================================================
3348 dnl Checks if ccache is available
3349 dnl ===================================================================
3351 if test "$enable_ccache" = "no"; then
3353 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3354 case "%$CC%$CXX%" in
3355 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3356 # assume that's good then
3357 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3358 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3359 CCACHE_DEPEND_MODE=1
3362 # try to use our own ccache if it is available and CCACHE was not already defined
3363 if test -z "$CCACHE"; then
3364 if test "$_os" = "WINNT"; then
3365 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3367 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3368 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3369 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3370 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3373 AC_PATH_PROG([CCACHE],[ccache],[not found])
3374 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3375 CCACHE=`win_short_path_for_make "$CCACHE"`
3376 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3378 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3379 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3380 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3388 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3389 # on windows/VC perhaps sccache is around?
3390 case "%$CC%$CXX%" in
3391 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3392 # assume that's good then
3393 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3394 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3395 CCACHE_DEPEND_MODE=1
3399 # for sharing code below, reuse CCACHE env var
3400 AC_PATH_PROG([CCACHE],[sccache],[not found])
3401 if test "$CCACHE" != "not found"; then
3402 CCACHE=`win_short_path_for_make "$CCACHE"`
3404 CCACHE_DEPEND_MODE=1
3409 if test "$CCACHE" = "not found"; then
3412 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3413 CCACHE_DEPEND_MODE=1
3414 # Need to check for ccache version: otherwise prevents
3415 # caching of the results (like "-x objective-c++" for Mac)
3416 if test $_os = Darwin -o $_os = iOS; then
3417 # Check ccache version
3418 AC_MSG_CHECKING([whether version of ccache is suitable])
3419 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3420 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3421 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3422 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3424 AC_MSG_RESULT([no, $CCACHE_VERSION])
3435 if test "$enable_ccache" = "nodepend"; then
3436 CCACHE_DEPEND_MODE=""
3438 AC_SUBST(CCACHE_DEPEND_MODE)
3440 # sccache defaults are good enough
3441 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3442 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3443 # or (...) max_size = 20.0 G
3444 # -p works with both 4.2 and 4.4
3445 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3446 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3447 if test "$ccache_size" = ""; then
3448 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3449 if test "$ccache_size" = ""; then
3452 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3453 if test $ccache_size -lt 1024; then
3455 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3456 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3458 # warn that ccache may be too small for debug build
3459 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3460 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3463 if test $ccache_size -lt 5; then
3464 #warn that ccache may be too small for debug build
3465 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3466 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3472 if test "$enable_z7_debug" != no; then
3473 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3474 ENABLE_Z7_DEBUG=TRUE
3477 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3478 add_warning "ccache will not work with --disable-z7-debug"
3480 AC_SUBST(ENABLE_Z7_DEBUG)
3482 dnl ===================================================================
3483 dnl Checks for C compiler,
3484 dnl The check for the C++ compiler is later on.
3485 dnl ===================================================================
3486 if test "$_os" != "WINNT"; then
3488 AC_MSG_CHECKING([gcc home])
3489 if test -z "$with_gcc_home"; then
3490 if test "$enable_icecream" = "yes"; then
3491 if test -d "/usr/lib/icecc/bin"; then
3492 GCC_HOME="/usr/lib/icecc/"
3493 elif test -d "/usr/libexec/icecc/bin"; then
3494 GCC_HOME="/usr/libexec/icecc/"
3495 elif test -d "/opt/icecream/bin"; then
3496 GCC_HOME="/opt/icecream/"
3498 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3502 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3503 GCC_HOME_SET="false"
3506 GCC_HOME="$with_gcc_home"
3508 AC_MSG_RESULT($GCC_HOME)
3511 if test "$GCC_HOME_SET" = "true"; then
3512 if test -z "$CC"; then
3513 CC="$GCC_HOME/bin/gcc"
3516 if test -z "$CXX"; then
3517 CXX="$GCC_HOME/bin/g++"
3523 COMPATH=`dirname "$CC"`
3524 if test "$COMPATH" = "."; then
3525 AC_PATH_PROGS(COMPATH, $CC)
3526 dnl double square bracket to get single because of M4 quote...
3527 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3529 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3531 dnl ===================================================================
3533 dnl ===================================================================
3534 AC_MSG_CHECKING([whether to build with Java support])
3535 if test "$with_java" != "no"; then
3536 if test "$DISABLE_SCRIPTING" = TRUE; then
3537 AC_MSG_RESULT([no, overridden by --disable-scripting])
3541 AC_MSG_RESULT([yes])
3543 AC_DEFINE(HAVE_FEATURE_JAVA)
3550 AC_SUBST(ENABLE_JAVA)
3552 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3554 dnl ENABLE_JAVA="" indicate no Java support at all
3556 dnl ===================================================================
3557 dnl Check macOS SDK and compiler
3558 dnl ===================================================================
3560 if test $_os = Darwin; then
3562 # The SDK in the currently selected Xcode should be found.
3564 AC_MSG_CHECKING([what macOS SDK to use])
3565 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3566 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3567 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3568 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3569 # problems that existed in the PPC days with target versions not being respected or random
3570 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3571 # SDK version is enough, no need to do both...
3572 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3573 if test ! -d "$MACOSX_SDK_PATH"; then
3574 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3576 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3577 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3578 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3579 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3581 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3582 # correct version in case such an old SDK is specified, it will be rejected later anyway
3583 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3584 if test $MACOSX_SDK_VERSION -lt 101500; then
3585 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3587 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3588 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3590 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3592 AC_MSG_CHECKING([what minimum version of macOS to require])
3593 if test "$with_macosx_version_min_required" = "" ; then
3594 if test "$host_cpu" = x86_64; then
3595 with_macosx_version_min_required="10.15";
3597 with_macosx_version_min_required="11.0";
3600 # see same notes about MACOSX_SDK_VERSION above
3601 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3602 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3603 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3605 AC_MSG_RESULT([$with_macosx_version_min_required])
3607 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3608 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3609 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3611 AC_MSG_RESULT([yes])
3614 # export this so that "xcrun" invocations later return matching values
3615 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3616 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3617 export DEVELOPER_DIR
3618 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3619 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3621 AC_MSG_CHECKING([whether Xcode is new enough])
3622 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3623 my_xcode_ver2=${my_xcode_ver1#Xcode }
3624 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3625 if test "$my_xcode_ver3" -ge 1205; then
3626 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3627 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3628 if test "$my_xcode_ver3" -eq 1500; then
3629 dnl the bug was aleady fixed on 15.1 and 15.2 still has the same OS requirements as 15.0
3630 dnl in other words all affected users could update to a working Xcode version
3631 AC_MSG_WARN([Use a current version of XCode or bump the minimum deployment target])
3632 AC_MSG_WARN([[see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking]])
3633 AC_MSG_ERROR([Xcode 15.0 has a bug in the new linker that causes runtime crashes on macOS 11 - aborting])
3637 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3640 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3641 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3643 LIBTOOL=/usr/bin/libtool
3644 INSTALL_NAME_TOOL=install_name_tool
3645 if test -z "$save_CC"; then
3646 stdlib=-stdlib=libc++
3648 AC_MSG_CHECKING([what C compiler to use])
3649 CC="`xcrun -find clang`"
3650 CC_BASE=`first_arg_basename "$CC"`
3651 if test "$host_cpu" = x86_64; then
3652 CC+=" -target x86_64-apple-macos"
3654 CC+=" -target arm64-apple-macos"
3656 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3657 AC_MSG_RESULT([$CC])
3659 AC_MSG_CHECKING([what C++ compiler to use])
3660 CXX="`xcrun -find clang++`"
3661 CXX_BASE=`first_arg_basename "$CXX"`
3662 if test "$host_cpu" = x86_64; then
3663 CXX+=" -target x86_64-apple-macos"
3665 CXX+=" -target arm64-apple-macos"
3667 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3668 AC_MSG_RESULT([$CXX])
3670 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3673 STRIP=`xcrun -find strip`
3674 LIBTOOL=`xcrun -find libtool`
3675 RANLIB=`xcrun -find ranlib`
3678 AC_MSG_CHECKING([whether to do code signing])
3680 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3683 if test "$enable_macosx_code_signing" = yes; then
3684 # By default use the first suitable certificate (?).
3686 # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3687 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3688 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3689 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3690 # "Developer ID Application" one.
3691 identity="Developer ID Application:"
3693 identity=$enable_macosx_code_signing
3695 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3696 if test -n "$identity"; then
3697 MACOSX_CODESIGNING_IDENTITY=$identity
3698 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3699 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3701 AC_MSG_ERROR([cannot determine identity to use])
3705 AC_MSG_CHECKING([whether to create a Mac App Store package])
3707 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3709 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3710 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3712 if test "$enable_macosx_package_signing" = yes; then
3713 # By default use the first suitable certificate.
3714 # It should be a "3rd Party Mac Developer Installer" one
3715 identity="3rd Party Mac Developer Installer:"
3717 identity=$enable_macosx_package_signing
3719 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3720 if test -n "$identity"; then
3721 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3722 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3723 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3725 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3729 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3730 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3733 AC_MSG_CHECKING([whether to sandbox the application])
3735 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3736 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3737 elif test "$enable_macosx_sandbox" = yes; then
3738 ENABLE_MACOSX_SANDBOX=TRUE
3739 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3740 AC_MSG_RESULT([yes])
3745 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3746 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3747 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3749 if test -n "$with_macosx_provisioning_profile" ; then
3750 if test ! -f "$with_macosx_provisioning_profile"; then
3751 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3753 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3754 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3755 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3756 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3757 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3761 AC_SUBST(MACOSX_SDK_PATH)
3762 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3763 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3764 AC_SUBST(INSTALL_NAME_TOOL)
3765 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3766 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3767 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3768 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3769 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3770 AC_SUBST(MACOSX_PROVISIONING_INFO)
3771 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3772 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3773 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3775 dnl ===================================================================
3776 dnl Check iOS SDK and compiler
3777 dnl ===================================================================
3779 if test $_os = iOS; then
3780 AC_MSG_CHECKING([what iOS SDK to use])
3782 if test "$enable_ios_simulator" = "yes"; then
3783 platformlc=iphonesimulator
3784 versionmin=-mios-simulator-version-min=14.5
3787 versionmin=-miphoneos-version-min=14.5
3790 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3792 if ! test -d "$sysroot"; then
3793 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3796 AC_MSG_RESULT($sysroot)
3798 stdlib="-stdlib=libc++"
3800 AC_MSG_CHECKING([what C compiler to use])
3801 CC="`xcrun -find clang`"
3802 CC_BASE=`first_arg_basename "$CC"`
3803 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3804 AC_MSG_RESULT([$CC])
3806 AC_MSG_CHECKING([what C++ compiler to use])
3807 CXX="`xcrun -find clang++`"
3808 CXX_BASE=`first_arg_basename "$CXX"`
3809 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3810 AC_MSG_RESULT([$CXX])
3812 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3815 STRIP=`xcrun -find strip`
3816 LIBTOOL=`xcrun -find libtool`
3817 RANLIB=`xcrun -find ranlib`
3820 AC_MSG_CHECKING([whether to treat the installation as read-only])
3822 if test $_os = Darwin; then
3823 enable_readonly_installset=yes
3824 elif test "$enable_extensions" != yes; then
3825 enable_readonly_installset=yes
3827 if test "$enable_readonly_installset" = yes; then
3828 AC_MSG_RESULT([yes])
3829 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3834 dnl ===================================================================
3835 dnl Structure of install set
3836 dnl ===================================================================
3838 if test $_os = Darwin; then
3839 LIBO_BIN_FOLDER=MacOS
3840 LIBO_ETC_FOLDER=Resources
3841 LIBO_LIBEXEC_FOLDER=MacOS
3842 LIBO_LIB_FOLDER=Frameworks
3843 LIBO_LIB_PYUNO_FOLDER=Resources
3844 LIBO_SHARE_FOLDER=Resources
3845 LIBO_SHARE_HELP_FOLDER=Resources/help
3846 LIBO_SHARE_JAVA_FOLDER=Resources/java
3847 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3848 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3849 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3850 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3851 LIBO_URE_BIN_FOLDER=MacOS
3852 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3853 LIBO_URE_LIB_FOLDER=Frameworks
3854 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3855 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3856 elif test $_os = WINNT; then
3857 LIBO_BIN_FOLDER=program
3858 LIBO_ETC_FOLDER=program
3859 LIBO_LIBEXEC_FOLDER=program
3860 LIBO_LIB_FOLDER=program
3861 LIBO_LIB_PYUNO_FOLDER=program
3862 LIBO_SHARE_FOLDER=share
3863 LIBO_SHARE_HELP_FOLDER=help
3864 LIBO_SHARE_JAVA_FOLDER=program/classes
3865 LIBO_SHARE_PRESETS_FOLDER=presets
3866 LIBO_SHARE_READMES_FOLDER=readmes
3867 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3868 LIBO_SHARE_SHELL_FOLDER=program/shell
3869 LIBO_URE_BIN_FOLDER=program
3870 LIBO_URE_ETC_FOLDER=program
3871 LIBO_URE_LIB_FOLDER=program
3872 LIBO_URE_MISC_FOLDER=program
3873 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3875 LIBO_BIN_FOLDER=program
3876 LIBO_ETC_FOLDER=program
3877 LIBO_LIBEXEC_FOLDER=program
3878 LIBO_LIB_FOLDER=program
3879 LIBO_LIB_PYUNO_FOLDER=program
3880 LIBO_SHARE_FOLDER=share
3881 LIBO_SHARE_HELP_FOLDER=help
3882 LIBO_SHARE_JAVA_FOLDER=program/classes
3883 LIBO_SHARE_PRESETS_FOLDER=presets
3884 LIBO_SHARE_READMES_FOLDER=readmes
3885 if test "$enable_fuzzers" != yes; then
3886 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3888 LIBO_SHARE_RESOURCE_FOLDER=resource
3890 LIBO_SHARE_SHELL_FOLDER=program/shell
3891 LIBO_URE_BIN_FOLDER=program
3892 LIBO_URE_ETC_FOLDER=program
3893 LIBO_URE_LIB_FOLDER=program
3894 LIBO_URE_MISC_FOLDER=program
3895 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3897 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3898 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3899 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3900 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3901 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3902 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3903 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3904 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3905 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3906 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3907 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3908 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3909 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3910 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3911 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3912 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3914 # Not all of them needed in config_host.mk, add more if need arises
3915 AC_SUBST(LIBO_BIN_FOLDER)
3916 AC_SUBST(LIBO_ETC_FOLDER)
3917 AC_SUBST(LIBO_LIB_FOLDER)
3918 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3919 AC_SUBST(LIBO_SHARE_FOLDER)
3920 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3921 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3922 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3923 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3924 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3925 AC_SUBST(LIBO_URE_BIN_FOLDER)
3926 AC_SUBST(LIBO_URE_ETC_FOLDER)
3927 AC_SUBST(LIBO_URE_LIB_FOLDER)
3928 AC_SUBST(LIBO_URE_MISC_FOLDER)
3929 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3931 dnl ===================================================================
3932 dnl Windows specific tests and stuff
3933 dnl ===================================================================
3937 # Return value: $regvalue
3940 if test "$build_os" = "wsl"; then
3941 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3945 local _regentry="/proc/registry${1}/${2}"
3946 if test -f "$_regentry"; then
3947 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3948 # Registry keys read via /proc/registry* are always \0 terminated!
3949 local _regvalue=$(tr -d '\0' < "$_regentry")
3950 if test $? -eq 0; then
3956 # Get a value from the 32-bit side of the Registry
3959 reg_get_value "32" "$1"
3962 # Get a value from the 64-bit side of the Registry
3965 reg_get_value "64" "$1"
3970 # Return value: $reglist
3973 if test "$build_os" = "wsl"; then
3974 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3978 reglist=$(ls "/proc/registry${1}/${2}")
3981 # List values from the 32-bit side of the Registry
3982 reg_list_values_32()
3984 reg_list_values "32" "$1"
3987 # List values from the 64-bit side of the Registry
3988 reg_list_values_64()
3990 reg_list_values "64" "$1"
3998 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
4007 PLATFORMID=windows_x86_64
4009 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4011 WIN_MULTI_ARCH="x86"
4017 PLATFORMID=windows_x86
4020 WIN_OTHER_ARCH="x64"
4025 PLATFORMID=windows_aarch64
4027 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4028 WIN_HOST_ARCH="arm64"
4033 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4037 case "$build_cpu" in
4038 x86_64) WIN_BUILD_ARCH="x64" ;;
4039 i*86) WIN_BUILD_ARCH="x86" ;;
4040 aarch64) WIN_BUILD_ARCH="arm64" ;;
4042 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4046 SCPDEFS="$SCPDEFS -D_MSC_VER"
4050 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4051 # other-arch won't, but wouldn't break the build (x64 on x86).
4052 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4053 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4057 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4058 # To allow building Windows multi-arch releases without cross-tooling
4059 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4060 cross_compiling="yes"
4064 if test "$cross_compiling" = "yes"; then
4065 export CROSS_COMPILING=TRUE
4066 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4067 ENABLE_WASM_STRIP=TRUE
4069 if test "$_os" = "Emscripten"; then
4070 if test "$with_main_module" = "calc"; then
4071 ENABLE_WASM_STRIP_WRITER=TRUE
4072 elif test "$with_main_module" = "writer"; then
4073 ENABLE_WASM_STRIP_CALC=TRUE
4078 BUILD_TYPE="$BUILD_TYPE NATIVE"
4080 AC_SUBST(CROSS_COMPILING)
4081 AC_SUBST(ENABLE_WASM_STRIP)
4082 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4083 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4085 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4086 # NOTE: must _not_ be used for bundled external libraries!
4088 if test "$GCC" = "yes"; then
4089 AC_MSG_CHECKING( for -isystem )
4091 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4092 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4094 if test -n "$ISYSTEM"; then
4100 if test -z "$ISYSTEM"; then
4101 # fall back to using -I
4106 dnl ===================================================================
4107 dnl Check which Visual Studio compiler is used
4108 dnl ===================================================================
4110 map_vs_year_to_version()
4112 # Return value: $vsversion
4124 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4128 vs_versions_to_check()
4130 # Args: $1 (optional) : versions to check, in the order of preference
4131 # Return value: $vsversions
4135 if test -n "$1"; then
4136 map_vs_year_to_version "$1"
4137 vsversions=$vsversion
4139 # Default version is 2019
4144 win_get_env_from_vsdevcmdbat()
4146 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4147 printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4148 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4149 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4150 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4152 if test "$build_os" = "wsl"; then
4153 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4155 chmod +x $WRAPPERBATCHFILEPATH
4156 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4158 rm -f $WRAPPERBATCHFILEPATH
4159 printf '%s' "$result"
4164 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4165 if test -n "$regvalue"; then
4166 PathFormat "$regvalue"
4167 UCRTSDKDIR=$formatted_path_unix
4168 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4169 UCRTVERSION=$regvalue
4171 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4175 if test -z "$UCRTSDKDIR"; then
4176 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4177 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4178 if test -f "$ide_env_file"; then
4179 PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4180 UCRTSDKDIR=$formatted_path
4181 UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4182 dnl Hack needed at least by tml:
4183 if test "$UCRTVERSION" = 10.0.15063.0 \
4184 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4185 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4187 UCRTVERSION=10.0.14393.0
4190 AC_MSG_ERROR([No UCRT found])
4198 # Args: $1 (optional) : The VS version year
4199 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4201 unset vctest vctoolset vcnumwithdot vcbuildnumber
4203 vs_versions_to_check "$1"
4204 if test "$build_os" = wsl; then
4205 vswhere="$PROGRAMFILESX86"
4206 if test -z "$vswhere"; then
4207 vswhere="c:\\Program Files (x86)"
4210 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4212 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4213 PathFormat "$vswhere"
4214 vswhere=$formatted_path_unix
4215 for ver in $vsversions; do
4216 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4217 if test -z "$vswhereoutput"; then
4218 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4220 # Fall back to all MS products (this includes VC++ Build Tools)
4221 if ! test -n "$vswhereoutput"; then
4222 AC_MSG_CHECKING([VC++ Build Tools and similar])
4223 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4225 if test -n "$vswhereoutput"; then
4226 PathFormat "$vswhereoutput"
4227 vctest=$formatted_path_unix
4232 if test -n "$vctest"; then
4234 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4235 vcnumwithdot=$vcnumwithdot.0
4237 case "$vcnumwithdot" in
4247 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4254 AC_MSG_CHECKING([$1 compiler])
4256 CL_EXE_PATH="$2/cl.exe"
4258 if test ! -f "$CL_EXE_PATH"; then
4259 if test "$1" = "multi-arch"; then
4260 AC_MSG_WARN([no compiler (cl.exe) in $2])
4263 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4267 dnl ===========================================================
4268 dnl Check for the corresponding mspdb*.dll
4269 dnl ===========================================================
4271 # MSVC 15.0 has libraries from 14.0?
4274 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4275 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4278 # The compiles has to find its shared libraries
4280 TEMP_PATH=`cygpath -d "$2"`
4281 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4283 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4284 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4289 AC_MSG_RESULT([$CL_EXE_PATH])
4295 if test "$_os" = "WINNT"; then
4296 AC_MSG_CHECKING([Visual C++])
4297 find_msvc "$with_visual_studio"
4298 if test -z "$vctest"; then
4299 if test -n "$with_visual_studio"; then
4300 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4302 AC_MSG_ERROR([no Visual Studio installation found])
4307 VC_PRODUCT_DIR="$vctest/VC"
4308 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4310 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4311 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4312 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4313 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4314 if test $? -ne 0; then
4320 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4321 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4322 test_cl_exe "build" "$MSVC_BUILD_PATH"
4325 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4326 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4327 test_cl_exe "host" "$MSVC_HOST_PATH"
4329 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4332 AC_MSG_CHECKING([for short pathname of VC product directory])
4333 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4334 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4339 AC_MSG_CHECKING([for UCRT location])
4341 # find_ucrt errors out if it doesn't find it
4342 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4343 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4344 ucrtincpath_formatted=$formatted_path
4345 # SOLARINC is used for external modules and must be set too.
4346 # And no, it's not sufficient to set SOLARINC only, as configure
4347 # itself doesn't honour it.
4348 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4349 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4350 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4351 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4353 AC_SUBST(UCRTSDKDIR)
4354 AC_SUBST(UCRTVERSION)
4356 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4357 # Find the proper version of MSBuild.exe to use based on the VS version
4358 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4359 if test -z "$regvalue" ; then
4360 if test "$WIN_BUILD_ARCH" != "x64"; then
4361 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4363 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4366 if test -d "$regvalue" ; then
4367 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4368 AC_MSG_RESULT([$regvalue])
4370 AC_MSG_ERROR([MSBuild.exe location not found])
4373 # Find the version of devenv.exe
4374 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4375 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4376 DEVENV_unix=$(cygpath -u "$DEVENV")
4377 if test ! -e "$DEVENV_unix"; then
4378 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4381 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4382 dnl needed when building CLR code:
4383 if test -z "$MSVC_CXX"; then
4384 # This gives us a posix path with 8.3 filename restrictions
4385 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4388 if test -z "$CC"; then
4390 CC_BASE=`first_arg_basename "$CC"`
4392 if test -z "$CXX"; then
4394 CXX_BASE=`first_arg_basename "$CXX"`
4397 if test -n "$CC"; then
4398 # Remove /cl.exe from CC case insensitive
4399 AC_MSG_NOTICE([found Visual C++ $vcyear])
4401 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4402 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4404 PathFormat "$COMPATH"
4405 COMPATH=`win_short_path_for_make "$formatted_path"`
4408 VCTOOLSET=$vctoolset
4410 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4411 # are always "better", we list them in reverse chronological order.
4413 case "$vcnumwithdot" in
4415 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4419 # The expectation is that --with-windows-sdk should not need to be used
4420 if test -n "$with_windows_sdk"; then
4421 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4422 *" "$with_windows_sdk" "*)
4423 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4426 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4431 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4436 AC_MSG_ERROR([Visual C++ not found after all, huh])
4439 # ERROR if VS version < 16.5
4440 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4441 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4442 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4443 // between Visual Studio versions and _MSC_VER:
4447 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4449 # WARN if VS version < 16.10
4450 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4451 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4455 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4457 if test $vs2019_recommended_version = yes; then
4458 AC_MSG_RESULT([yes])
4461 add_warning "You should have at least Visual Studio 2019 version 16.10 to avoid build problems. Otherwise, you may face problems with the build of some modules including dragonbox."
4464 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4465 # version of the Explorer extension (and maybe other small
4466 # bits, too) needed when installing a 32-bit LibreOffice on a
4467 # 64-bit OS. The 64-bit Explorer extension is a feature that
4468 # has been present since long in OOo. Don't confuse it with
4469 # building LibreOffice itself as 64-bit code.
4474 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4475 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4476 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4477 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4480 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4481 AC_MSG_RESULT([found])
4483 AC_MSG_RESULT([not found])
4484 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4486 elif test "$WIN_HOST_ARCH" = "x64"; then
4491 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4492 AC_SUBST(CXX_X64_BINARY)
4494 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4495 # needed to support TWAIN scan on both 32- and 64-bit systems
4497 case "$WIN_HOST_ARCH" in
4499 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4500 if test -n "$CXX_X86_BINARY"; then
4502 AC_MSG_RESULT([preset])
4503 elif test -n "$WIN_MULTI_ARCH"; then
4505 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4506 AC_MSG_RESULT([found])
4508 AC_MSG_RESULT([not found])
4509 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4514 CXX_X86_BINARY=$MSVC_CXX
4518 AC_SUBST(CXX_X86_BINARY)
4526 AC_MSG_CHECKING([whether the compiler is actually Clang])
4527 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4533 [AC_MSG_RESULT([yes])
4535 [AC_MSG_RESULT([no])])
4536 AC_SUBST(COM_IS_CLANG)
4539 if test "$COM_IS_CLANG" = TRUE; then
4540 AC_MSG_CHECKING([whether Clang is new enough])
4541 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4542 #if !defined __apple_build_version__
4546 [my_apple_clang=yes],[my_apple_clang=])
4547 if test "$my_apple_clang" = yes; then
4548 AC_MSG_RESULT([assumed yes (Apple Clang)])
4549 elif test "$_os" = Emscripten; then
4550 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4552 if test "$_os" = WINNT; then
4553 dnl In which case, assume clang-cl:
4558 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4559 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4560 CLANGVER=`echo $clang_version \
4561 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4562 if test "$CLANGVER" -ge 120000; then
4563 AC_MSG_RESULT([yes ($clang_version)])
4565 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4567 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4568 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4572 SHOWINCLUDES_PREFIX=
4573 if test "$_os" = WINNT; then
4574 dnl We need to guess the prefix of the -showIncludes output, it can be
4576 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4577 echo "#include <stdlib.h>" > conftest.c
4578 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4579 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4580 rm -f conftest.c conftest.obj
4581 if test -z "$SHOWINCLUDES_PREFIX"; then
4582 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4584 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4587 AC_SUBST(SHOWINCLUDES_PREFIX)
4590 # prefix C with ccache if needed
4592 if test "$CCACHE" != ""; then
4593 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4597 CFLAGS="$CFLAGS --ccache-skip -O2"
4598 # msvc does not fail on unknown options, check stdout
4599 if test "$COM" = MSC; then
4600 CFLAGS="$CFLAGS -nologo"
4602 save_ac_c_werror_flag=$ac_c_werror_flag
4603 ac_c_werror_flag=yes
4604 dnl an empty program will do, we're checking the compiler flags
4605 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4606 [use_ccache=yes], [use_ccache=no])
4608 ac_c_werror_flag=$save_ac_c_werror_flag
4609 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4610 AC_MSG_RESULT([yes])
4613 CC_BASE="ccache $CC_BASE"
4619 # ===================================================================
4620 # check various GCC options that Clang does not support now but maybe
4621 # will somewhen in the future, check them even for GCC, so that the
4623 # ===================================================================
4626 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4627 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4629 CFLAGS="$CFLAGS -Werror -ggdb2"
4630 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4632 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4633 AC_MSG_RESULT([yes])
4638 if test "$host_cpu" = "m68k"; then
4639 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4641 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4642 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4644 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4645 AC_MSG_RESULT([yes])
4651 AC_SUBST(HAVE_GCC_GGDB2)
4653 dnl ===================================================================
4654 dnl Test the gcc version
4655 dnl ===================================================================
4656 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4657 AC_MSG_CHECKING([the GCC version])
4658 _gcc_version=`$CC -dumpfullversion`
4659 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4660 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4661 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4663 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4665 if test "$gcc_full_version" -lt 120000; then
4666 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4669 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4670 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4671 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4672 # (which reports itself as GCC 4.2.1).
4675 AC_SUBST(GCC_VERSION)
4677 dnl Set the ENABLE_DBGUTIL variable
4678 dnl ===================================================================
4679 AC_MSG_CHECKING([whether to build with additional debug utilities])
4680 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4681 ENABLE_DBGUTIL="TRUE"
4682 # this is an extra var so it can have different default on different MSVC
4683 # versions (in case there are version specific problems with it)
4684 MSVC_USE_DEBUG_RUNTIME="TRUE"
4686 AC_MSG_RESULT([yes])
4687 # cppunit and graphite expose STL in public headers
4688 if test "$with_system_cppunit" = "yes"; then
4689 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4691 with_system_cppunit=no
4693 if test "$with_system_graphite" = "yes"; then
4694 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4696 with_system_graphite=no
4698 if test "$with_system_orcus" = "yes"; then
4699 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4701 with_system_orcus=no
4703 if test "$with_system_libcmis" = "yes"; then
4704 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4706 with_system_libcmis=no
4708 if test "$with_system_hunspell" = "yes"; then
4709 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4711 with_system_hunspell=no
4713 if test "$with_system_gpgmepp" = "yes"; then
4714 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4716 with_system_gpgmepp=no
4718 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4719 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4720 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4721 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4722 # of those two is using the system variant:
4723 if test "$with_system_libnumbertext" = "yes"; then
4724 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4726 with_system_libnumbertext=no
4728 if test "$with_system_libwps" = "yes"; then
4729 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4731 with_system_libwps=no
4735 MSVC_USE_DEBUG_RUNTIME=""
4738 AC_SUBST(ENABLE_DBGUTIL)
4739 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4741 dnl Set the ENABLE_DEBUG variable.
4742 dnl ===================================================================
4743 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4744 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4746 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4747 if test -z "$libo_fuzzed_enable_debug"; then
4748 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4750 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4755 AC_MSG_CHECKING([whether to do a debug build])
4756 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4758 if test -n "$ENABLE_DBGUTIL" ; then
4759 AC_MSG_RESULT([yes (dbgutil)])
4761 AC_MSG_RESULT([yes])
4767 AC_SUBST(ENABLE_DEBUG)
4769 dnl ===================================================================
4770 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4771 dnl This is done only after compiler checks (need to know if Clang is
4772 dnl used, for different defaults) and after checking if a debug build
4773 dnl is wanted (non-debug builds get the default linker if not explicitly
4774 dnl specified otherwise).
4775 dnl All checks for linker features/options should come after this.
4776 dnl ===================================================================
4779 use_ld=-fuse-ld=${1%%:*}
4781 if test "$use_ld_path" != "$1"; then
4782 if test "$COM_IS_CLANG" = TRUE; then
4783 if test "$CLANGVER" -ge 120000; then
4784 use_ld="${use_ld} --ld-path=${use_ld_path}"
4786 use_ld="-fuse-ld=${use_ld_path}"
4789 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4790 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4791 # pickup the alternative linker, when called by libtool for linking.
4792 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4793 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4796 use_ld_fail_if_error=$2
4798 AC_MSG_CHECKING([for $use_ld linker support])
4799 use_ld_ldflags_save="$LDFLAGS"
4800 LDFLAGS="$LDFLAGS $use_ld"
4801 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4804 printf ("hello world\n");
4805 ])], USE_LD=$use_ld, [])
4806 if test -n "$USE_LD"; then
4807 AC_MSG_RESULT( yes )
4810 if test -n "$use_ld_fail_if_error"; then
4816 if test -n "$use_ld_ok"; then
4817 dnl keep the value of LDFLAGS
4820 LDFLAGS="$use_ld_ldflags_save"
4824 if test "$enable_ld" != "no"; then
4825 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4826 if test -n "$enable_ld"; then
4827 check_use_ld "$enable_ld" fail_if_error
4828 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4829 dnl non-debug builds default to the default linker
4831 elif test -n "$COM_IS_CLANG"; then
4833 if test $? -ne 0; then
4835 if test $? -ne 0; then
4840 # For gcc first try gold, new versions also support lld/mold.
4842 if test $? -ne 0; then
4844 if test $? -ne 0; then
4849 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4851 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4852 if test -z "$ld_used"; then
4855 AC_MSG_CHECKING([for linker that is used])
4856 AC_MSG_RESULT([$ld_used])
4857 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4858 if echo "$ld_used" | grep -q "^GNU ld"; then
4859 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4860 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4864 if test "$enable_ld" = "yes"; then
4865 AC_MSG_ERROR([--enable-ld not supported])
4872 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4873 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4874 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4875 bsymbolic_functions_ldflags_save=$LDFLAGS
4876 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4877 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4880 printf ("hello world\n");
4881 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4882 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4883 AC_MSG_RESULT( found )
4885 AC_MSG_RESULT( not found )
4887 LDFLAGS=$bsymbolic_functions_ldflags_save
4889 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4892 if test "$GCC" = "yes"; then
4893 for flag in "--gc-sections" "-dead_strip"; do
4894 AC_MSG_CHECKING([for $flag linker support])
4895 ldflags_save=$LDFLAGS
4896 LDFLAGS="$LDFLAGS -Wl,$flag"
4897 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4900 printf ("hello world\n");
4902 LD_GC_SECTIONS="-Wl,$flag"
4903 AC_MSG_RESULT( found )
4905 AC_MSG_RESULT( not found )
4907 LDFLAGS=$ldflags_save
4908 if test -n "$LD_GC_SECTIONS"; then
4913 AC_SUBST(LD_GC_SECTIONS)
4915 HAVE_EXTERNAL_DWARF=
4916 if test "$enable_split_debug" != no; then
4918 if test -n "$ENABLE_LTO"; then
4919 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4920 elif test "$enable_split_debug" = yes; then
4922 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4923 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4926 if test -n "$use_split_debug"; then
4927 if test "$_os" = "Emscripten"; then
4928 TEST_CC_FLAG=-gseparate-dwarf
4930 TEST_CC_FLAG=-gsplit-dwarf
4932 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4934 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4935 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4937 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4938 AC_MSG_RESULT([yes])
4940 if test "$enable_split_debug" = yes; then
4947 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4948 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4949 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4952 AC_SUBST(HAVE_EXTERNAL_DWARF)
4954 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4955 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4957 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4958 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4960 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4961 AC_MSG_RESULT([yes])
4965 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4968 if test "$enable_gdb_index" != "no"; then
4969 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4970 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4971 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4973 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4975 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4976 if test "$have_ggnu_pubnames" != "TRUE"; then
4977 if test "$enable_gdb_index" = "yes"; then
4978 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4983 AC_MSG_RESULT( yes )
4984 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4985 ldflags_save=$LDFLAGS
4986 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4987 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4990 printf ("hello world\n");
4991 ])], ENABLE_GDB_INDEX=TRUE, [])
4992 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4993 AC_MSG_RESULT( yes )
4995 if test "$enable_gdb_index" = "yes"; then
5001 LDFLAGS=$ldflags_save
5005 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5006 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
5007 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
5010 AC_SUBST(ENABLE_GDB_INDEX)
5012 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
5015 if test "$enable_sal_log" = yes; then
5018 AC_SUBST(ENABLE_SAL_LOG)
5020 dnl Check for enable symbols option
5021 dnl ===================================================================
5022 AC_MSG_CHECKING([whether to generate debug information])
5023 if test -z "$enable_symbols"; then
5024 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5030 if test "$enable_symbols" = yes; then
5031 ENABLE_SYMBOLS_FOR=all
5032 AC_MSG_RESULT([yes])
5033 elif test "$enable_symbols" = no; then
5037 # Selective debuginfo.
5038 ENABLE_SYMBOLS_FOR="$enable_symbols"
5039 AC_MSG_RESULT([for "$enable_symbols"])
5041 AC_SUBST(ENABLE_SYMBOLS_FOR)
5042 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5043 # Building on Android with full symbols: without enough memory the linker never finishes currently.
5044 AC_MSG_CHECKING([whether enough memory is available for linking])
5045 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5046 # Check for 15GB, as Linux reports a bit less than the physical memory size.
5047 if test -n "$mem_size" -a $mem_size -lt 15728640; then
5048 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5050 AC_MSG_RESULT([yes])
5055 ENABLE_OPTIMIZED_DEBUG=
5056 AC_MSG_CHECKING([whether to compile with optimization flags])
5057 if test -z "$enable_optimized"; then
5058 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5061 enable_optimized=yes
5064 if test "$enable_optimized" = yes; then
5065 ENABLE_OPTIMIZED=TRUE
5066 AC_MSG_RESULT([yes])
5067 elif test "$enable_optimized" = debug; then
5068 ENABLE_OPTIMIZED_DEBUG=TRUE
5069 AC_MSG_RESULT([yes (debug)])
5071 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5072 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5074 CFLAGS="$CFLAGS -Werror -Og"
5075 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5077 if test "$HAVE_GCC_OG" = "TRUE"; then
5078 AC_MSG_RESULT([yes])
5083 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5084 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5089 AC_SUBST(ENABLE_OPTIMIZED)
5090 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5093 # determine CPUNAME, OS, ...
5109 if test "$enable_ios_simulator" = "yes"; then
5114 PLATFORMID=macosx_aarch64
5118 if test "$enable_ios_simulator" = "yes"; then
5123 PLATFORMID=macosx_x86_64
5126 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5139 if test "$enable_ios_simulator" = "yes"; then
5140 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5144 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5149 PLATFORMID=ios_arm64
5162 PLATFORMID=dragonfly_x86
5167 PLATFORMID=dragonfly_x86_64
5170 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5184 PLATFORMID=freebsd_aarch64
5190 PLATFORMID=freebsd_x86
5195 PLATFORMID=freebsd_x86_64
5200 PLATFORMID=freebsd_powerpc64
5205 PLATFORMID=freebsd_powerpc
5208 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5224 PLATFORMID=haiku_x86
5229 PLATFORMID=haiku_x86_64
5232 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5248 PLATFORMID=kfreebsd_x86
5253 PLATFORMID=kfreebsd_x86_64
5256 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5261 linux-gnu*|linux-musl*)
5271 PLATFORMID=linux_aarch64
5273 EPM_FLAGS="-a arm64"
5278 PLATFORMID=linux_alpha
5284 PLATFORMID=linux_arm_eabi
5288 PLATFORMID=linux_arm_oabi
5296 PLATFORMID=linux_hppa
5301 PLATFORMID=linux_x86
5306 PLATFORMID=linux_ia64
5312 PLATFORMID=linux_mips_eb
5317 EPM_FLAGS="-a mips64"
5318 PLATFORMID=linux_mips64_eb
5323 EPM_FLAGS="-a mips64el"
5324 PLATFORMID=linux_mips64_el
5329 EPM_FLAGS="-a mipsel"
5330 PLATFORMID=linux_mips_el
5335 EPM_FLAGS="-a riscv64"
5336 PLATFORMID=linux_riscv64
5341 PLATFORMID=linux_m68k
5346 PLATFORMID=linux_powerpc
5351 PLATFORMID=linux_powerpc64
5355 RTL_ARCH=PowerPC_64_LE
5356 PLATFORMID=linux_powerpc64_le
5361 PLATFORMID=linux_sparc
5366 PLATFORMID=linux_sparc64
5371 PLATFORMID=linux_s390x
5376 PLATFORMID=linux_x86_64
5380 RTL_ARCH=LOONGARCH64
5381 PLATFORMID=linux_loongarch64
5384 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5400 PLATFORMID=android_arm_eabi
5405 PLATFORMID=android_aarch64
5410 PLATFORMID=android_x86
5415 PLATFORMID=android_x86_64
5418 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5433 PLATFORMID=netbsd_x86
5438 PLATFORMID=netbsd_powerpc
5443 PLATFORMID=netbsd_sparc
5448 PLATFORMID=netbsd_x86_64
5451 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5466 PLATFORMID=openbsd_x86
5471 PLATFORMID=openbsd_x86_64
5474 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5477 SOLARINC="$SOLARINC -I/usr/local/include"
5490 PLATFORMID=solaris_x86
5495 PLATFORMID=solaris_sparc
5500 PLATFORMID=solaris_sparc64
5503 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5506 SOLARINC="$SOLARINC -I/usr/local/include"
5519 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5524 PLATFORMID=linux_x86
5528 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5533 if test "$enable_gui" = "no"; then
5534 if test "$using_x11" != yes; then
5535 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5541 AC_DEFINE(HAVE_FEATURE_UI)
5543 AC_SUBST(DISABLE_GUI)
5545 if test "$with_x" = "no"; then
5549 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5550 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5553 if test "$using_x11" = yes; then
5554 if test "$USING_X11" = TRUE; then
5555 AC_DEFINE(USING_X11)
5558 if test "$DISABLE_DYNLOADING" = TRUE; then
5563 if test "$USING_X11" = TRUE; then
5564 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5568 WORKDIR="${BUILDDIR}/workdir"
5569 INSTDIR="${BUILDDIR}/instdir"
5570 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5571 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5579 AC_SUBST([INSTROOT])
5580 AC_SUBST([INSTROOTBASE])
5584 AC_SUBST(PLATFORMID)
5585 AC_SUBST(WINDOWS_X64)
5586 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5587 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5589 if test "$OS" = WNT -a "$COM" = MSC; then
5591 INTEL) CPPU_ENV=msci ;;
5592 X86_64) CPPU_ENV=mscx ;;
5593 AARCH64) CPPU_ENV=msca ;;
5595 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5603 dnl ===================================================================
5604 dnl Test which package format to use
5605 dnl ===================================================================
5606 AC_MSG_CHECKING([which package format to use])
5607 if test -n "$with_package_format" -a "$with_package_format" != no; then
5608 for i in $with_package_format; do
5610 bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5613 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5614 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5615 deb - Debian software distribution
5616 pkg - Solaris software distribution
5617 rpm - RedHat software distribution
5619 LibreOffice additionally supports:
5620 archive - .tar.gz or .zip
5622 installed - installation tree
5628 # fakeroot is needed to ensure correct file ownerships/permissions
5629 # inside deb packages and tar archives created on Linux and Solaris.
5630 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5631 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5632 if test "$FAKEROOT" = "no"; then
5634 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5637 PKGFORMAT="$with_package_format"
5638 AC_MSG_RESULT([$PKGFORMAT])
5641 AC_MSG_RESULT([none])
5645 dnl ===================================================================
5646 dnl handle help related options
5648 dnl If you change help related options, please update README.help
5649 dnl ===================================================================
5656 AC_MSG_CHECKING([which help to build])
5657 if test -n "$with_help" -a "$with_help" != "no"; then
5658 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5659 BUILD_TYPE="$BUILD_TYPE HELP"
5660 case "$with_help" in
5662 ENABLE_HTMLHELP=TRUE
5663 ENABLE_LOCALHELP=TRUE
5664 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5665 AC_MSG_RESULT([HTML (local)])
5668 ENABLE_HTMLHELP=TRUE
5670 AC_MSG_RESULT([HTML (online)])
5673 ENABLE_LOCALHELP=TRUE
5674 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5675 AC_MSG_RESULT([XML (local)])
5678 AC_MSG_ERROR([Unknown --with-help=$with_help])
5685 AC_MSG_CHECKING([if we need to build the help index tooling])
5686 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5687 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5689 AC_MSG_RESULT([yes])
5694 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5695 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5696 if test "$HELP_ONLINE" != TRUE; then
5697 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5699 case "$with_omindex" in
5701 HELP_OMINDEX_PAGE=TRUE
5702 AC_MSG_RESULT([SERVER])
5705 AC_MSG_RESULT([NOXAP])
5708 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5715 AC_MSG_CHECKING([whether to include the XML-help support])
5716 if test "$enable_xmlhelp" = yes; then
5717 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5719 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5720 AC_MSG_RESULT([yes])
5722 if test "$with_help" = yes; then
5723 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5728 dnl Test whether to integrate helppacks into the product's installer
5729 AC_MSG_CHECKING([for helppack integration])
5730 if test -z "$ENABLE_LOCALHELP" -o "$with_helppack_integration" = no; then
5731 AC_MSG_RESULT([no integration])
5733 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5734 AC_MSG_RESULT([integration])
5737 AC_SUBST([ENABLE_HTMLHELP])
5738 AC_SUBST([HELP_OMINDEX_PAGE])
5739 AC_SUBST([HELP_ONLINE])
5740 if test "$ENABLE_LOCALHELP" = "TRUE" ; then
5741 AC_DEFINE(HAVE_FEATURE_LOCAL_HELP)
5744 dnl ===================================================================
5745 dnl Set up a different compiler to produce tools to run on the build
5746 dnl machine when doing cross-compilation
5747 dnl ===================================================================
5749 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5750 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5751 if test "$cross_compiling" = "yes"; then
5752 AC_MSG_CHECKING([for BUILD platform configuration])
5754 rm -rf CONF-FOR-BUILD config_build.mk
5755 mkdir CONF-FOR-BUILD
5756 # Here must be listed all files needed when running the configure script. In particular, also
5757 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5758 # keep them in the same order as there.
5759 (cd $SRC_ROOT && tar cf - \
5761 bin/get_config_variables \
5762 solenv/bin/getcompver.awk \
5763 solenv/inc/langlist.mk \
5766 config_host_lang.mk.in \
5768 bin/bffvalidator.sh.in \
5769 bin/odfvalidator.sh.in \
5770 bin/officeotron.sh.in \
5771 instsetoo_native/util/openoffice.lst.in \
5773 sysui/desktop/macosx/Info.plist.in \
5774 sysui/desktop/macosx/hardened_runtime.xcent.in \
5775 sysui/desktop/macosx/lo.xcent.in \
5776 .vscode/vs-code-template.code-workspace.in \
5777 solenv/lockfile/autoconf.h.in \
5779 | (cd CONF-FOR-BUILD && tar xf -)
5780 cp configure CONF-FOR-BUILD
5781 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5783 unset COM USING_X11 OS CPUNAME
5784 unset CC CXX SYSBASE CFLAGS
5785 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5786 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5787 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5788 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5789 if test -n "$CC_FOR_BUILD"; then
5790 export CC="$CC_FOR_BUILD"
5791 CC_BASE=`first_arg_basename "$CC"`
5793 if test -n "$CXX_FOR_BUILD"; then
5794 export CXX="$CXX_FOR_BUILD"
5795 CXX_BASE=`first_arg_basename "$CXX"`
5797 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5800 # Handle host configuration, which affects the cross-toolset too
5802 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5803 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5804 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5805 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5806 if test -n "$ENABLE_JAVA"; then
5809 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5810 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5813 if test -z "$with_jdk_home"; then
5814 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.])
5819 sub_conf_opts="$sub_conf_opts --without-java"
5821 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5822 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5823 test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5824 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5825 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5826 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5827 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5828 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5829 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5830 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5831 if test "$_os" = "Emscripten"; then
5832 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5833 if test "${with_main_module+set}" = set; then
5834 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5836 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5839 # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5840 # when cross-compiling for aarch64, overriding the defaults below
5841 test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5843 # Don't bother having configure look for stuff not needed for the build platform anyway
5844 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5845 sub_conf_defaults=" \
5846 --build="$build_alias" \
5847 --disable-cairo-canvas \
5849 --disable-customtarget-components \
5850 --disable-firebird-sdbc \
5852 --disable-gstreamer-1-0 \
5856 --disable-mariadb-sdbc \
5858 --disable-online-update \
5861 --disable-pdfimport \
5862 --disable-postgresql-sdbc \
5865 --enable-dynamic-loading \
5866 --enable-icecream="$enable_icecream" \
5872 # single quotes added for better readability in case of spaces
5873 echo " Running CONF-FOR-BUILD/configure" \
5874 $sub_conf_defaults \
5875 --with-parallelism="'$with_parallelism'" \
5876 --with-theme="'$with_theme'" \
5877 --with-vendor="'$with_vendor'" \
5879 $with_build_platform_configure_options \
5883 $sub_conf_defaults \
5884 --with-parallelism="$with_parallelism" \
5885 --with-theme="$with_theme" \
5886 "--with-vendor=$with_vendor" \
5888 $with_build_platform_configure_options \
5890 2>&1 | sed -e 's/^/ /'
5891 if test [${PIPESTATUS[0]}] -ne 0; then
5892 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5895 # filter permitted build targets
5896 PERMITTED_BUILD_TARGETS="
5935 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5936 # newlined lists, to use grep as a filter
5937 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5938 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5939 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5940 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5942 cp config_host.mk ../config_build.mk
5943 cp config_host_lang.mk ../config_build_lang.mk
5944 mv config.log ../config.Build.log
5945 mkdir -p ../config_build
5946 mv config_host/*.h ../config_build
5947 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5949 # all these will get a _FOR_BUILD postfix
5950 DIRECT_FOR_BUILD_SETTINGS="
5958 JDK_SECURITYMANAGER_DISALLOWED
5962 LIBO_URE_MISC_FOLDER
5968 # these overwrite host config with build config
5969 OVERWRITING_SETTINGS="
5984 # these need some special handling
5985 EXTRA_HANDLED_SETTINGS="
5992 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5996 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5997 echo "$line" >>build-config
5999 for V in $DIRECT_FOR_BUILD_SETTINGS; do
6001 VV=`eval "echo $VV"`
6002 if test -n "$VV"; then
6003 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
6004 echo "$line" >>build-config
6008 for V in $OVERWRITING_SETTINGS; do
6010 VV=`eval "echo $VV"`
6011 if test -n "$VV"; then
6012 line=${V}='${'${V}:-$VV'}'
6013 echo "$line" >>build-config
6017 for V in INSTDIR INSTROOT WORKDIR; do
6019 VV=`eval "echo $VV"`
6020 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6021 if test -n "$VV"; then
6022 line="${V}_FOR_BUILD='$VV'"
6023 echo "$line" >>build-config
6028 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6029 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])
6030 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6031 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6033 eval `cat CONF-FOR-BUILD/build-config`
6035 AC_MSG_RESULT([checking for BUILD platform configuration... done])
6037 rm -rf CONF-FOR-BUILD
6041 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6042 CXX_FOR_BUILD="$CXX"
6043 INSTDIR_FOR_BUILD="$INSTDIR"
6044 INSTROOT_FOR_BUILD="$INSTROOT"
6045 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6046 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6047 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6048 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6049 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6050 WORKDIR_FOR_BUILD="$WORKDIR"
6052 AC_SUBST(OS_FOR_BUILD)
6053 AC_SUBST(INSTDIR_FOR_BUILD)
6054 AC_SUBST(INSTROOT_FOR_BUILD)
6055 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6056 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6057 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6058 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6059 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6060 AC_SUBST(WORKDIR_FOR_BUILD)
6061 AC_SUBST(CC_FOR_BUILD)
6062 AC_SUBST(CXX_FOR_BUILD)
6063 AC_SUBST(CPPU_ENV_FOR_BUILD)
6065 dnl ===================================================================
6066 dnl Check for lockfile deps
6067 dnl ===================================================================
6068 if test -z "$CROSS_COMPILING"; then
6069 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6070 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6071 AC_MSG_CHECKING([which lockfile binary to use])
6072 case "$with_system_lockfile" in
6074 AC_MSG_RESULT([external])
6075 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6078 AC_MSG_RESULT([internal])
6081 if test -x "$with_system_lockfile"; then
6082 LOCKFILE="$with_system_lockfile"
6084 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6086 AC_MSG_RESULT([$with_system_lockfile])
6091 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6092 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6095 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6096 AC_CHECK_FUNCS([utime utimes])
6099 dnl ===================================================================
6100 dnl Check for syslog header
6101 dnl ===================================================================
6102 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6104 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6105 dnl ===================================================================
6106 AC_MSG_CHECKING([whether to turn warnings to errors])
6107 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6108 ENABLE_WERROR="TRUE"
6109 PYTHONWARNINGS="error"
6110 AC_MSG_RESULT([yes])
6112 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6113 ENABLE_WERROR="TRUE"
6114 PYTHONWARNINGS="error"
6115 AC_MSG_RESULT([yes])
6120 AC_SUBST(ENABLE_WERROR)
6121 AC_SUBST(PYTHONWARNINGS)
6123 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6124 dnl ===================================================================
6125 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6126 if test -z "$enable_assert_always_abort"; then
6127 if test "$ENABLE_DEBUG" = TRUE; then
6128 enable_assert_always_abort=yes
6130 enable_assert_always_abort=no
6133 if test "$enable_assert_always_abort" = "yes"; then
6134 ASSERT_ALWAYS_ABORT="TRUE"
6135 AC_MSG_RESULT([yes])
6137 ASSERT_ALWAYS_ABORT="FALSE"
6140 AC_SUBST(ASSERT_ALWAYS_ABORT)
6142 # Determine whether to use ooenv for the instdir installation
6143 # ===================================================================
6144 if test $_os != "WINNT" -a $_os != "Darwin"; then
6145 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6146 if test -z "$enable_ooenv"; then
6147 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6153 if test "$enable_ooenv" = "no"; then
6157 AC_MSG_RESULT([yes])
6160 AC_SUBST(ENABLE_OOENV)
6162 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6163 if test "$enable_qt5" = "no"; then
6164 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6170 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6171 if test "$enable_qt6" = "no"; then
6172 AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6179 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6180 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6181 AC_MSG_RESULT([yes])
6183 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6187 AC_SUBST(ENABLE_PAGEIN)
6189 dnl ===================================================================
6190 dnl check for cups support
6191 dnl ===================================================================
6193 AC_MSG_CHECKING([whether to enable CUPS support])
6194 if test "$test_cups" = yes -a "$enable_cups" != no; then
6196 AC_MSG_RESULT([yes])
6198 AC_MSG_CHECKING([whether cups support is present])
6199 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6200 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6201 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6202 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6208 AC_SUBST(ENABLE_CUPS)
6210 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6212 dnl whether to find & fetch external tarballs?
6213 dnl ===================================================================
6214 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6215 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6216 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6218 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6221 if test -z "$TARFILE_LOCATION"; then
6222 if test -d "$SRC_ROOT/src" ; then
6223 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6224 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6226 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6228 AbsolutePath "$TARFILE_LOCATION"
6229 PathFormat "${absolute_path}"
6230 TARFILE_LOCATION="${formatted_path_unix}"
6232 AC_SUBST(TARFILE_LOCATION)
6234 AC_MSG_CHECKING([whether we want to fetch tarballs])
6235 if test "$enable_fetch_external" != "no"; then
6236 if test "$with_all_tarballs" = "yes"; then
6237 AC_MSG_RESULT([yes, all of them])
6238 DO_FETCH_TARBALLS="ALL"
6240 AC_MSG_RESULT([yes, if we use them])
6241 DO_FETCH_TARBALLS="TRUE"
6247 AC_SUBST(DO_FETCH_TARBALLS)
6249 dnl Test whether to include MySpell dictionaries
6250 dnl ===================================================================
6251 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6252 if test "$with_myspell_dicts" = "yes"; then
6253 AC_MSG_RESULT([yes])
6254 WITH_MYSPELL_DICTS=TRUE
6255 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6256 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6261 AC_SUBST(WITH_MYSPELL_DICTS)
6263 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6264 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6265 if test "$with_system_dicts" = yes; then
6266 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6268 with_system_dicts=no
6271 AC_MSG_CHECKING([whether to use dicts from external paths])
6272 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6273 AC_MSG_RESULT([yes])
6275 AC_MSG_CHECKING([for spelling dictionary directory])
6276 if test -n "$with_external_dict_dir"; then
6277 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6279 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6280 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6281 DICT_SYSTEM_DIR=file:///usr/share/myspell
6284 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6285 AC_MSG_CHECKING([for hyphenation patterns directory])
6286 if test -n "$with_external_hyph_dir"; then
6287 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6289 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6291 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6292 AC_MSG_CHECKING([for thesaurus directory])
6293 if test -n "$with_external_thes_dir"; then
6294 THES_SYSTEM_DIR=file://$with_external_thes_dir
6296 THES_SYSTEM_DIR=file:///usr/share/mythes
6298 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6303 AC_SUBST(SYSTEM_DICTS)
6304 AC_SUBST(DICT_SYSTEM_DIR)
6305 AC_SUBST(HYPH_SYSTEM_DIR)
6306 AC_SUBST(THES_SYSTEM_DIR)
6308 dnl ===================================================================
6309 dnl Precompiled headers.
6311 AC_MSG_CHECKING([whether to enable pch feature])
6312 if test -z "$enable_pch"; then
6313 if test "$_os" = "WINNT"; then
6314 # Enabled by default on Windows.
6316 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6317 if test -z "$enable_ccache" -a "$SCCACHE"; then
6324 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6325 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6327 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6328 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6330 if test "$enable_pch" = "system"; then
6332 AC_MSG_RESULT([yes (system headers)])
6333 elif test "$enable_pch" = "base"; then
6335 AC_MSG_RESULT([yes (system and base headers)])
6336 elif test "$enable_pch" = "normal"; then
6338 AC_MSG_RESULT([yes (normal)])
6339 elif test "$enable_pch" = "full"; then
6341 AC_MSG_RESULT([yes (full)])
6342 elif test "$enable_pch" = "yes"; then
6343 # Pick a suitable default.
6344 if test "$GCC" = "yes"; then
6345 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6346 # while making the PCHs larger and rebuilds more likely.
6348 AC_MSG_RESULT([yes (system and base headers)])
6350 # With MSVC the highest level makes a significant difference,
6351 # and it was the default when there used to be no PCH levels.
6353 AC_MSG_RESULT([yes (full)])
6355 elif test "$enable_pch" = "no"; then
6358 AC_MSG_ERROR([Unknown value for --enable-pch])
6360 AC_SUBST(ENABLE_PCH)
6361 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6362 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6363 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6364 if test "$CCACHE_BIN" != "not found"; then
6365 AC_MSG_CHECKING([ccache version])
6366 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6367 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6368 AC_MSG_RESULT([$CCACHE_VERSION])
6369 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6370 if test "$CCACHE_NUMVER" -gt "030701"; then
6371 AC_MSG_RESULT([yes])
6373 AC_MSG_RESULT([no (not newer than 3.7.1)])
6379 PCH_INSTANTIATE_TEMPLATES=
6380 if test -n "$ENABLE_PCH"; then
6381 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6383 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6384 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6386 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6392 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6394 BUILDING_PCH_WITH_OBJ=
6395 if test -n "$ENABLE_PCH"; then
6396 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6398 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6399 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6401 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6407 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6412 if test "$COM" = MSC; then
6413 fpch_prefix="-Xclang "
6415 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6416 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6418 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6419 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6420 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6422 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6423 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6424 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6426 if test -n "$PCH_CODEGEN"; then
6432 AC_SUBST(PCH_CODEGEN)
6433 AC_SUBST(PCH_NO_CODEGEN)
6435 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6436 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6438 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6439 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6441 if test -n "$PCH_DEBUGINFO"; then
6447 AC_SUBST(PCH_DEBUGINFO)
6451 AC_MSG_CHECKING([the GNU Make version])
6452 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6453 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6454 if test "$_make_longver" -ge "040000"; then
6455 AC_MSG_RESULT([$GNUMAKE $_make_version])
6457 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6460 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6462 if test "$_make_ver_check" = ""; then
6466 HAVE_LD_HASH_STYLE=FALSE
6467 WITH_LINKER_HASH_STYLE=
6468 AC_MSG_CHECKING([for --hash-style gcc linker support])
6469 if test "$GCC" = "yes"; then
6470 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6471 hash_styles="gnu sysv"
6472 elif test "$with_linker_hash_style" = "no"; then
6475 hash_styles="$with_linker_hash_style"
6478 for hash_style in $hash_styles; do
6479 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6480 hash_style_ldflags_save=$LDFLAGS
6481 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6483 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6490 HAVE_LD_HASH_STYLE=TRUE
6491 WITH_LINKER_HASH_STYLE=$hash_style
6493 [HAVE_LD_HASH_STYLE=FALSE],
6494 [HAVE_LD_HASH_STYLE=FALSE])
6495 LDFLAGS=$hash_style_ldflags_save
6498 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6499 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6503 LDFLAGS=$hash_style_ldflags_save
6507 AC_SUBST(HAVE_LD_HASH_STYLE)
6508 AC_SUBST(WITH_LINKER_HASH_STYLE)
6510 dnl ===================================================================
6511 dnl Check whether there's a Perl version available.
6512 dnl ===================================================================
6513 if test -z "$with_perl_home"; then
6514 AC_PATH_PROG(PERL, perl)
6516 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6517 _perl_path="$with_perl_home/bin/perl"
6518 if test -x "$_perl_path"; then
6521 AC_MSG_ERROR([$_perl_path not found])
6525 dnl ===================================================================
6526 dnl Testing for Perl version 5 or greater.
6527 dnl $] is the Perl version variable, it is returned as an integer
6528 dnl ===================================================================
6529 if test "$PERL"; then
6530 AC_MSG_CHECKING([the Perl version])
6531 ${PERL} -e "exit($]);"
6533 if test "$_perl_version" -lt 5; then
6534 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6536 AC_MSG_RESULT([Perl $_perl_version])
6538 AC_MSG_ERROR([Perl not found, install Perl 5])
6541 dnl ===================================================================
6542 dnl Testing for required Perl modules
6543 dnl ===================================================================
6545 AC_MSG_CHECKING([for required Perl modules])
6546 perl_use_string="use Cwd ; use Digest::MD5"
6547 if test "$_os" = "WINNT"; then
6548 if test -n "$PKGFORMAT"; then
6549 for i in $PKGFORMAT; do
6552 # for getting fonts versions to use in MSI
6553 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6559 if test "$with_system_hsqldb" = "yes"; then
6560 perl_use_string="$perl_use_string ; use Archive::Zip"
6562 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6563 # OpenSSL needs that to build
6564 perl_use_string="$perl_use_string ; use FindBin"
6566 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6567 AC_MSG_RESULT([all modules found])
6569 AC_MSG_RESULT([failed to find some modules])
6570 # Find out which modules are missing.
6571 for i in $perl_use_string; do
6572 if test "$i" != "use" -a "$i" != ";"; then
6573 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6574 missing_perl_modules="$missing_perl_modules $i"
6579 The missing Perl modules are: $missing_perl_modules
6580 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6583 dnl ===================================================================
6584 dnl Check for pkg-config
6585 dnl ===================================================================
6586 if test "$_os" != "WINNT"; then
6589 AC_SUBST(PKG_CONFIG)
6590 AC_SUBST(PKG_CONFIG_PATH)
6591 AC_SUBST(PKG_CONFIG_LIBDIR)
6593 if test "$_os" != "WINNT"; then
6595 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6596 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6597 # explicitly. Or put /path/to/compiler in PATH yourself.
6600 if test "$COM_IS_CLANG" = "TRUE"; then
6603 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6604 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6605 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6606 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6607 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6608 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6617 dnl ===================================================================
6618 dnl pkg-config checks on macOS
6619 dnl ===================================================================
6621 if test $_os = Darwin; then
6622 AC_MSG_CHECKING([for bogus pkg-config])
6623 if test -n "$PKG_CONFIG"; then
6624 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6625 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6627 if test "$enable_bogus_pkg_config" = "yes"; then
6628 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6630 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.])
6634 AC_MSG_RESULT([no, good])
6640 # Return value: $csctest
6644 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6645 if test -n "$regvalue"; then
6653 # Return value: $altest
6657 # We need this check to detect 4.6.1 or above.
6658 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6659 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6660 PathFormat "$regvalue"
6661 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6667 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6668 for x in $reglist; do
6669 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6670 PathFormat "$regvalue"
6671 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6682 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6683 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6684 if test -n "$regvalue"; then
6689 AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6692 find_winsdk_version()
6694 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6695 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6697 unset winsdktest winsdkbinsubdir winsdklibsubdir
6701 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6702 if test -n "$regvalue"; then
6703 winsdktest=$regvalue
6704 winsdklibsubdir=win8
6709 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6710 if test -n "$regvalue"; then
6711 winsdktest=$regvalue
6712 winsdklibsubdir=winv6.3
6717 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6718 if test -n "$regvalue"; then
6719 winsdktest=$regvalue
6720 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6721 if test -n "$regvalue"; then
6722 winsdkbinsubdir="$regvalue".0
6723 winsdklibsubdir=$winsdkbinsubdir
6724 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6725 local tmppath_unix=$(cygpath -u "$tmppath")
6726 # test exist the SDK path
6727 if test -d "$tmppath_unix"; then
6728 # when path is convertible to a short path then path is okay
6729 cygpath -d "$tmppath" >/dev/null 2>&1
6730 if test $? -ne 0; then
6731 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6734 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6745 # Return value: From find_winsdk_version
6749 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6750 find_winsdk_version $ver
6751 if test -n "$winsdktest"; then
6759 # Return value: $msmdir
6762 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6763 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6766 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6771 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6772 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6773 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6774 if test -e "$my_msm_dir${my_msm_file}"; then
6781 if test -n "$msmdir"; then
6782 msmdir=`cygpath -m "$msmdir"`
6783 AC_MSG_RESULT([$msmdir])
6785 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6786 AC_MSG_FAILURE([not found])
6788 AC_MSG_WARN([not found (check config.log)])
6789 add_warning "MSM ${my_msm_file} not found"
6794 find_msvc_x64_dlls()
6796 # Return value: $msvcdllpath, $msvcdlls
6798 AC_MSG_CHECKING([for MSVC x64 DLL path])
6800 dnl Order crtver in increasing order. Then check the directories returned by
6801 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6802 dnl the result will be the highest CRT version found in the highest directory.
6804 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6807 for crtver in 141 142 143; do
6808 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6809 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6810 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6811 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6817 AC_MSG_RESULT([$msvcdllpath])
6818 AC_MSG_CHECKING([for MSVC x64 DLLs])
6819 msvcdlls="msvcp140.dll vcruntime140.dll"
6820 for dll in $msvcdlls; do
6821 if ! test -f "$msvcdllpath/$dll"; then
6822 AC_MSG_FAILURE([missing $dll])
6825 AC_MSG_RESULT([found all ($msvcdlls)])
6828 dnl =========================================
6829 dnl Check for the Windows SDK.
6830 dnl =========================================
6831 if test "$_os" = "WINNT"; then
6832 AC_MSG_CHECKING([for Windows SDK])
6833 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6835 WINDOWS_SDK_HOME=$winsdktest
6837 # normalize if found
6838 if test -n "$WINDOWS_SDK_HOME"; then
6839 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6840 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6843 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6846 if test -n "$WINDOWS_SDK_HOME"; then
6847 # Remove a possible trailing backslash
6848 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6850 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6851 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6852 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6853 have_windows_sdk_headers=yes
6854 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6855 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6856 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6857 have_windows_sdk_headers=yes
6858 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6859 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6860 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6861 have_windows_sdk_headers=yes
6863 have_windows_sdk_headers=no
6866 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6867 have_windows_sdk_libs=yes
6868 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6869 have_windows_sdk_libs=yes
6871 have_windows_sdk_libs=no
6874 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6875 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6876 the Windows SDK are installed.])
6880 if test -z "$WINDOWS_SDK_HOME"; then
6881 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6882 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6883 WINDOWS_SDK_VERSION=80
6884 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6885 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6886 WINDOWS_SDK_VERSION=81
6887 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6888 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6889 WINDOWS_SDK_VERSION=10
6890 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6892 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6894 PathFormat "$WINDOWS_SDK_HOME"
6895 WINDOWS_SDK_HOME="$formatted_path"
6896 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6897 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6898 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6899 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6900 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6901 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6902 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6906 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6907 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6908 dnl but not in v8.0), so allow this to be overridden with a
6909 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6910 dnl and configuration error if no WiLangId.vbs is found would arguably be
6911 dnl better, but I do not know under which conditions exactly it is needed by
6913 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6914 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6915 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6916 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6917 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6918 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6920 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6921 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6922 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6924 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6925 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6926 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6929 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6930 if test -n "$with_package_format" -a "$with_package_format" != no; then
6931 for i in "$with_package_format"; do
6932 if test "$i" = "msi"; then
6933 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6934 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6941 AC_SUBST(WINDOWS_SDK_HOME)
6942 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6943 AC_SUBST(WINDOWS_SDK_VERSION)
6944 AC_SUBST(WINDOWS_SDK_WILANGID)
6946 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6947 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6948 dnl dir, it also determines that dir's path w/o an arch segment if any,
6949 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6950 AC_MSG_CHECKING([for midl.exe])
6953 PathFormat "$winsdktest"
6954 winsdktest_unix="$formatted_path_unix"
6956 if test -n "$winsdkbinsubdir" \
6957 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6959 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6960 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6961 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6962 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6963 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6964 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6965 MIDL_PATH=$winsdktest/Bin
6966 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6968 PathFormat "$MIDL_PATH"
6969 if test ! -f "$formatted_path_unix/midl.exe"; then
6970 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6972 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6975 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6976 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6978 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6979 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6980 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6981 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6982 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6983 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6984 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6985 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6986 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6987 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6988 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6989 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6991 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6995 AC_MSG_CHECKING([for csc.exe])
6997 PathFormat "$csctest"
6998 csctest_unix="$formatted_path_unix"
6999 if test -f "$csctest_unix/csc.exe"; then
7002 if test ! -f "$csctest_unix/csc.exe"; then
7003 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
7005 AC_MSG_RESULT([$CSC_PATH/csc.exe])
7008 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
7011 AC_MSG_CHECKING([for al.exe])
7012 if test -n "$winsdkbinsubdir" \
7013 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
7015 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
7016 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
7017 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7018 elif test -f "$winsdktest_unix/Bin/al.exe"; then
7019 AL_PATH="$winsdktest/Bin"
7022 if test -z "$AL_PATH"; then
7024 PathFormat "$altest"
7025 altest_unix="$formatted_path_unix"
7026 if test -f "$altest_unix/bin/al.exe"; then
7027 AL_PATH="$altest/bin"
7028 elif test -f "$altest_unix/al.exe"; then
7032 PathFormat "$AL_PATH"
7033 if test ! -f "$formatted_path_unix/al.exe"; then
7034 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7036 AC_MSG_RESULT([$AL_PATH/al.exe])
7039 AL_PATH=`win_short_path_for_make "$AL_PATH"`
7041 dnl Check mscoree.lib / .NET Framework dir
7042 AC_MSG_CHECKING(.NET Framework)
7044 PathFormat "$frametest"
7045 frametest="$formatted_path_unix"
7046 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7047 DOTNET_FRAMEWORK_HOME="$frametest"
7049 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7050 DOTNET_FRAMEWORK_HOME="$winsdktest"
7053 PathFormat "$DOTNET_FRAMEWORK_HOME"
7054 if test ! -f "$formatted_path_unix/lib/mscoree.lib" -a ! -f "$formatted_path_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$formatted_path_unix/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7055 AC_MSG_ERROR([mscoree.lib not found])
7057 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7059 PathFormat "$MIDL_PATH"
7060 MIDL_PATH="$formatted_path"
7062 PathFormat "$AL_PATH"
7063 AL_PATH="$formatted_path"
7065 PathFormat "$DOTNET_FRAMEWORK_HOME"
7066 DOTNET_FRAMEWORK_HOME="$formatted_path"
7068 PathFormat "$CSC_PATH"
7069 CSC_PATH="$formatted_path"
7072 dnl ===================================================================
7073 dnl Testing for C++ compiler and version...
7074 dnl ===================================================================
7076 if test "$_os" != "WINNT"; then
7077 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7078 save_CXXFLAGS=$CXXFLAGS
7080 CXXFLAGS=$save_CXXFLAGS
7081 if test -z "$CXX_BASE"; then
7082 CXX_BASE=`first_arg_basename "$CXX"`
7086 dnl check for GNU C++ compiler version
7087 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7088 AC_MSG_CHECKING([the GNU C++ compiler version])
7090 _gpp_version=`$CXX -dumpversion`
7091 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7093 if test "$_gpp_majmin" -lt "700"; then
7094 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7096 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7099 dnl see https://issuetracker.google.com/issues/36962819
7103 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7104 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7105 #include <bits/c++config.h>]],[[
7106 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7107 && !defined(_GLIBCXX__PTHREADS) \
7108 && !defined(_GLIBCXX_HAS_GTHREADS)
7111 ]])],[AC_MSG_RESULT([yes])
7112 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7114 if test $glibcxx_threads = yes; then
7115 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7118 AC_SUBST(BOOST_CXXFLAGS)
7121 # prefx CXX with ccache if needed
7123 if test "$CCACHE" != ""; then
7124 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7126 save_CXXFLAGS=$CXXFLAGS
7127 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7128 # msvc does not fail on unknown options, check stdout
7129 if test "$COM" = MSC; then
7130 CXXFLAGS="$CXXFLAGS -nologo"
7132 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7133 ac_cxx_werror_flag=yes
7134 dnl an empty program will do, we're checking the compiler flags
7135 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7136 [use_ccache=yes], [use_ccache=no])
7137 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7138 AC_MSG_RESULT([yes])
7141 CXX_BASE="ccache $CXX_BASE"
7144 CXXFLAGS=$save_CXXFLAGS
7145 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7149 dnl ===================================================================
7150 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7151 dnl ===================================================================
7153 if test "$_os" != "WINNT"; then
7156 dnl Check whether there's a C pre-processor.
7161 dnl ===================================================================
7162 dnl Find integral type sizes and alignments
7163 dnl ===================================================================
7165 if test "$_os" != "WINNT"; then
7167 AC_CHECK_SIZEOF(long)
7168 AC_CHECK_SIZEOF(short)
7169 AC_CHECK_SIZEOF(int)
7170 AC_CHECK_SIZEOF(long long)
7171 AC_CHECK_SIZEOF(double)
7172 AC_CHECK_SIZEOF(void*)
7173 AC_CHECK_SIZEOF(size_t)
7175 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7176 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7177 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7178 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7179 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7180 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7182 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7183 m4_pattern_allow([AC_CHECK_ALIGNOF])
7184 m4_ifdef([AC_CHECK_ALIGNOF],
7186 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7187 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7188 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7189 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7192 case "$_os-$host_cpu" in
7194 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7195 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7196 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7197 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7200 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7201 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7202 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7203 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7206 if test -z "$ac_cv_alignof_short" -o \
7207 -z "$ac_cv_alignof_int" -o \
7208 -z "$ac_cv_alignof_long" -o \
7209 -z "$ac_cv_alignof_double"; then
7210 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.])
7216 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7217 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7218 if test $ac_cv_sizeof_long -eq 8; then
7219 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7220 elif test $ac_cv_sizeof_double -eq 8; then
7221 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7223 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7226 dnl Check for large file support
7228 if test -n "$ac_cv_sys_largefile_opts" -a "$ac_cv_sys_largefile_opts" != "none needed" -a "$ac_cv_sys_largefile_opts" != "support not detected"; then
7229 LFS_CFLAGS="$ac_cv_sys_largefile_opts"
7230 elif test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7231 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7233 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7234 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7238 SAL_TYPES_SIZEOFSHORT=2
7239 SAL_TYPES_SIZEOFINT=4
7240 SAL_TYPES_SIZEOFLONG=4
7241 SAL_TYPES_SIZEOFLONGLONG=8
7242 if test $WIN_HOST_BITS -eq 32; then
7243 SAL_TYPES_SIZEOFPOINTER=4
7246 SAL_TYPES_SIZEOFPOINTER=8
7249 SAL_TYPES_ALIGNMENT2=2
7250 SAL_TYPES_ALIGNMENT4=4
7251 SAL_TYPES_ALIGNMENT8=8
7254 AC_SUBST(LFS_CFLAGS)
7255 AC_SUBST(SIZEOF_SIZE_T)
7257 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7258 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7259 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7260 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7261 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7262 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7263 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7264 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7266 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7267 AC_MSG_CHECKING([whether jumbo sheets are supported])
7268 if test "$_os" != "WINNT"; then
7269 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7270 AC_MSG_RESULT([yes])
7271 ENABLE_JUMBO_SHEETS=TRUE
7272 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7277 if test $WIN_HOST_BITS -gt 32; then
7278 # 64bit windows is special-cased for tools::Long because long is 32bit
7279 AC_MSG_RESULT([yes])
7280 ENABLE_JUMBO_SHEETS=TRUE
7281 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7286 AC_SUBST(ENABLE_JUMBO_SHEETS)
7288 dnl ===================================================================
7289 dnl Check whether to enable runtime optimizations
7290 dnl ===================================================================
7291 ENABLE_RUNTIME_OPTIMIZATIONS=
7292 AC_MSG_CHECKING([whether to enable runtime optimizations])
7293 if test -z "$enable_runtime_optimizations"; then
7297 enable_runtime_optimizations=no
7303 if test "$enable_runtime_optimizations" != no; then
7304 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7305 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7306 AC_MSG_RESULT([yes])
7310 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7312 dnl ===================================================================
7313 dnl Check if valgrind headers are available
7314 dnl ===================================================================
7316 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7317 prev_cppflags=$CPPFLAGS
7318 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7319 # or where does it come from?
7320 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7321 AC_CHECK_HEADER([valgrind/valgrind.h],
7322 [ENABLE_VALGRIND=TRUE])
7323 CPPFLAGS=$prev_cppflags
7325 AC_SUBST([ENABLE_VALGRIND])
7326 if test -z "$ENABLE_VALGRIND"; then
7327 if test "$with_valgrind" = yes; then
7328 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7332 AC_SUBST([VALGRIND_CFLAGS])
7335 dnl ===================================================================
7336 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7337 dnl ===================================================================
7339 # We need at least the sys/sdt.h include header.
7340 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7341 if test "$SDT_H_FOUND" = "TRUE"; then
7342 # Found sys/sdt.h header, now make sure the c++ compiler works.
7343 # Old g++ versions had problems with probes in constructors/destructors.
7344 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7346 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7347 #include <sys/sdt.h>
7355 ProbeClass(int& v, const char *n) : ref(v), name(n)
7357 DTRACE_PROBE2(_test_, cons, name, ref);
7360 void method(int min)
7362 DTRACE_PROBE3(_test_, meth, name, ref, min);
7368 DTRACE_PROBE2(_test_, dest, name, ref);
7373 DTRACE_PROBE1(_test_, call, i);
7374 ProbeClass inst = ProbeClass(i, "call");
7376 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7377 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7380 AC_CONFIG_HEADERS([config_host/config_probes.h])
7382 dnl ===================================================================
7384 dnl ===================================================================
7385 HAVE_GCC_STACK_CLASH_PROTECTION=
7387 HARDENING_OPT_CFLAGS=
7388 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7389 AC_MSG_CHECKING([whether $CC_BASE supports -grecord-gcc-switches])
7391 CFLAGS="$CFLAGS -Werror -grecord-gcc-switches"
7393 [AC_LANG_PROGRAM(, [[return 0;]])],
7394 [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -grecord-gcc-switches"],
7395 [AC_MSG_RESULT([no])])
7398 AC_MSG_CHECKING([whether $CC_BASE supports -D_FORTIFY_SOURCE=2])
7400 CFLAGS="$CFLAGS -Werror -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"
7401 if test "$ENABLE_OPTIMIZED" = TRUE; then
7402 CFLAGS="$CFLAGS -O2"
7405 [AC_LANG_PROGRAM([[#include <string.h>]], [[return 0;]])],
7406 [AC_MSG_RESULT([yes]); HARDENING_OPT_CFLAGS="$HARDENING_OPT_CFLAGS -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2"],
7407 [AC_MSG_RESULT([no])])
7410 AC_MSG_CHECKING([whether $CC_BASE supports -D_GLIBCXX_ASSERTIONS])
7412 CFLAGS="$CFLAGS -Werror -Wp,-D_GLIBCXX_ASSERTIONS"
7414 [AC_LANG_PROGRAM(, [[return 0;]])],
7415 [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"],
7416 [AC_MSG_RESULT([no])])
7419 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7421 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7423 [AC_LANG_PROGRAM(, [[return 0;]])],
7424 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE; HARDENING_CFLAGS="$HARDENING_CFLAGS -fstack-clash-protection"],
7425 [AC_MSG_RESULT([no])])
7428 AC_MSG_CHECKING([whether $CC_BASE supports -fcf-protection])
7430 CFLAGS="$CFLAGS -Werror -fcf-protection"
7432 [AC_LANG_PROGRAM(, [[return 0;]])],
7433 [AC_MSG_RESULT([yes]); HARDENING_CFLAGS="$HARDENING_CFLAGS -fcf-protection"],
7434 [AC_MSG_RESULT([no])])
7437 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7439 CFLAGS="$CFLAGS -Werror -mno-avx"
7440 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7442 if test "$HAVE_GCC_AVX" = "TRUE"; then
7443 AC_MSG_RESULT([yes])
7448 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7449 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7451 if (__sync_add_and_fetch(&v, 1) != 1 ||
7452 __sync_sub_and_fetch(&v, 1) != 0)
7454 __sync_synchronize();
7455 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7459 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7460 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7461 AC_MSG_RESULT([yes])
7462 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7467 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7469 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7472 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7474 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7475 AC_MSG_RESULT([yes])
7476 ], [AC_MSG_RESULT([no])])
7479 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7481 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7484 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7486 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7487 AC_MSG_RESULT([yes])
7488 ], [AC_MSG_RESULT([no])])
7491 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7493 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7495 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7497 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7498 AC_MSG_RESULT([yes])
7499 ], [AC_MSG_RESULT([no])])
7502 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7504 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7507 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7509 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7510 AC_MSG_RESULT([yes])
7511 ], [AC_MSG_RESULT([no])])
7514 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7516 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7519 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7521 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7522 AC_MSG_RESULT([yes])
7523 ], [AC_MSG_RESULT([no])])
7526 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7528 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7530 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7532 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7533 AC_MSG_RESULT([yes])
7534 ], [AC_MSG_RESULT([no])])
7537 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7539 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7541 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7543 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7544 AC_MSG_RESULT([yes])
7545 ], [AC_MSG_RESULT([no])])
7548 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7550 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7552 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7554 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7555 AC_MSG_RESULT([yes])
7556 ], [AC_MSG_RESULT([no])])
7559 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7561 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7564 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7566 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7567 AC_MSG_RESULT([yes])
7568 ], [AC_MSG_RESULT([no])])
7571 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7573 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7576 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7578 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7579 AC_MSG_RESULT([yes])
7580 ], [AC_MSG_RESULT([no])])
7584 AC_SUBST(HAVE_GCC_AVX)
7585 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7586 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7587 AC_SUBST(HARDENING_CFLAGS)
7588 AC_SUBST(HARDENING_OPT_CFLAGS)
7590 dnl ===================================================================
7591 dnl Identify the C++ library
7592 dnl ===================================================================
7594 AC_MSG_CHECKING([what the C++ library is])
7598 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7604 [CPP_LIBRARY=GLIBCXX
7605 cpp_library_name="GNU libstdc++"
7608 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7610 #ifndef _LIBCPP_VERSION
7615 cpp_library_name="LLVM libc++"
7616 AC_DEFINE([HAVE_LIBCPP])
7619 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7626 cpp_library_name="Microsoft"
7628 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7629 AC_MSG_RESULT([$cpp_library_name])
7631 AC_SUBST([HAVE_LIBSTDCPP])
7632 AC_SUBST([HAVE_LIBCPP])
7634 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7636 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7637 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7638 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7639 # although there will be backwards compatibility).
7640 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7641 # and there would be undefined references to debug functions.
7642 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7643 # So check if debug mode can be used and disable or downgrade it to assertions
7645 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7648 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7649 #define _LIBCPP_DEBUG 0 // only assertions
7657 ]])], [libcpp_debug_links=1])
7658 if test -n "$libcpp_debug_links"; then
7659 # we can use at least assertions, check if debug mode works
7660 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7661 #define _LIBCPP_DEBUG 1 // debug mode
7664 int foo(const std::vector<int>& v) { return *v.begin(); }
7669 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7670 return (foo(v) + s.size()) != 0 ? 0 : 1;
7674 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7676 [AC_MSG_RESULT(no, using only assertions)
7677 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7685 AC_SUBST([LIBCPP_DEBUG])
7687 dnl ===================================================================
7689 dnl ===================================================================
7690 AC_PATH_PROG(GPERF, gperf)
7691 if test -z "$GPERF"; then
7692 AC_MSG_ERROR([gperf not found but needed. Install it.])
7694 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7695 GPERF=`cygpath -m $GPERF`
7697 AC_MSG_CHECKING([whether gperf is new enough])
7698 my_gperf_ver1=$($GPERF --version | head -n 1)
7699 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7700 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7701 if test "$my_gperf_ver3" -ge 301; then
7702 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7704 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7708 dnl ===================================================================
7709 dnl Check for system libcmis
7710 dnl ===================================================================
7711 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7713 dnl ===================================================================
7715 dnl ===================================================================
7717 if test -z "${CXXFLAGS_CXX11+x}"; then
7718 AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7719 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7720 if test "$with_latest_c__" = yes; then
7721 CXXFLAGS_CXX11=-std:c++latest
7723 CXXFLAGS_CXX11=-std:c++20
7725 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7726 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7727 my_flags='-std=c++20 -std=c++2a'
7728 if test "$with_latest_c__" = yes; then
7729 my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7731 for flag in $my_flags; do
7732 if test "$COM" = MSC; then
7733 flag="-Xclang $flag"
7735 save_CXXFLAGS=$CXXFLAGS
7736 CXXFLAGS="$CXXFLAGS $flag -Werror"
7738 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7739 #include <algorithm>
7740 #include <functional>
7743 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7744 std::sort(v.begin(), v.end(), fn);
7746 ]])],[CXXFLAGS_CXX11=$flag])
7748 CXXFLAGS=$save_CXXFLAGS
7749 if test -n "$CXXFLAGS_CXX11"; then
7754 if test -n "$CXXFLAGS_CXX11"; then
7755 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7760 AC_SUBST(CXXFLAGS_CXX11)
7762 if test "$GCC" = "yes"; then
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7766 CXXFLAGS=$save_CXXFLAGS
7767 AC_SUBST(ATOMIC_LIB)
7770 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7771 save_CXXFLAGS=$CXXFLAGS
7772 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7775 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7778 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7794 a thinga[]={{0,0}, {1,1}};
7795 b thingb[]={{0,0}, {1,1}};
7796 size_t i = sizeof(sal_n_array_size(thinga));
7797 size_t j = sizeof(sal_n_array_size(thingb));
7798 return !(i != 0 && j != 0);
7800 ], [ AC_MSG_RESULT(yes) ],
7801 [ AC_MSG_ERROR(no)])
7803 CXXFLAGS=$save_CXXFLAGS
7805 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7806 if test "$GCC" = yes; then
7807 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7809 save_CXXFLAGS=$CXXFLAGS
7810 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7811 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7812 CXXFLAGS=$save_CXXFLAGS
7814 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7815 AC_MSG_RESULT([yes])
7820 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7822 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7824 save_CXXFLAGS=$CXXFLAGS
7825 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7826 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7827 #include <algorithm>
7828 #include <initializer_list>
7830 template<typename T> class S {
7834 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7836 constinit S<int> s{3, 2, 1};
7838 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7839 AC_MSG_RESULT([yes])
7840 ], [AC_MSG_RESULT([no])])
7841 CXXFLAGS=$save_CXXFLAGS
7844 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7846 save_CXXFLAGS=$CXXFLAGS
7847 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7848 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7849 struct S1 { S1(S1 &&); };
7851 S1 f(S2 s) { return s; }
7853 AC_DEFINE([HAVE_P1155R3],[1])
7854 AC_MSG_RESULT([yes])
7855 ], [AC_MSG_RESULT([no])])
7856 CXXFLAGS=$save_CXXFLAGS
7859 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7860 HAVE_CXX20_ATOMIC_REF=
7862 save_CXXFLAGS=$CXXFLAGS
7863 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7864 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7867 std::atomic_ref<int> y(x);
7869 HAVE_CXX20_ATOMIC_REF=TRUE
7870 AC_MSG_RESULT([yes])
7871 ], [AC_MSG_RESULT([no])])
7872 CXXFLAGS=$save_CXXFLAGS
7874 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7876 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7877 dnl which is included in -Wextra anyway):
7878 HAVE_WDEPRECATED_COPY_DTOR=
7879 if test "$GCC" = yes; then
7880 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7882 save_CXXFLAGS=$CXXFLAGS
7883 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7884 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7885 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7886 AC_MSG_RESULT([yes])
7887 ], [AC_MSG_RESULT([no])])
7888 CXXFLAGS=$save_CXXFLAGS
7891 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7893 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7894 dnl uninitialized warning for code like
7897 dnl boost::optional<OString> * g(bool b) {
7898 dnl boost::optional<OString> o;
7900 dnl return new boost::optional<OString>(o);
7903 dnl (as is e.g. present, in a slightly more elaborate form, in
7904 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7905 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7906 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7907 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7908 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7910 save_CXXFLAGS=$CXXFLAGS
7911 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7912 if test "$ENABLE_OPTIMIZED" = TRUE; then
7913 CXXFLAGS="$CXXFLAGS -O2"
7915 CXXFLAGS="$CXXFLAGS -O0"
7917 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7926 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7927 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7933 char stg[sizeof (S1)];
7941 ]])], [AC_MSG_RESULT([no])], [
7942 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7943 AC_MSG_RESULT([yes])
7945 CXXFLAGS=$save_CXXFLAGS
7948 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7950 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7951 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7952 dnl hits us e.g. with GCC 10 and --enable-optimized at
7954 dnl In file included from include/rtl/string.hxx:49,
7955 dnl from include/rtl/ustring.hxx:43,
7956 dnl from include/osl/file.hxx:35,
7957 dnl from include/codemaker/global.hxx:28,
7958 dnl from include/codemaker/options.hxx:23,
7959 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7960 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7961 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,
7962 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,
7963 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,
7964 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7965 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7966 dnl 78 | memcpy( buffer, data, length );
7967 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7968 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7969 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7970 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7972 save_CXXFLAGS=$CXXFLAGS
7973 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7974 if test "$ENABLE_OPTIMIZED" = TRUE; then
7975 CXXFLAGS="$CXXFLAGS -O2"
7977 CXXFLAGS="$CXXFLAGS -O0"
7979 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7980 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7981 void fill(char const * begin, char const * end, char c);
7987 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7988 __builtin_strncpy(c.username, "root", sizeof(c.username));
7990 ]])], [AC_MSG_RESULT([no])], [
7991 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7992 AC_MSG_RESULT([yes])
7994 CXXFLAGS=$save_CXXFLAGS
7997 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7999 HAVE_DLLEXPORTINLINES=
8000 if test "$_os" = "WINNT"; then
8001 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
8003 save_CXXFLAGS=$CXXFLAGS
8004 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
8005 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
8006 HAVE_DLLEXPORTINLINES=TRUE
8007 AC_MSG_RESULT([yes])
8008 ], [AC_MSG_RESULT([no])])
8009 CXXFLAGS=$save_CXXFLAGS
8012 AC_SUBST([HAVE_DLLEXPORTINLINES])
8014 dnl ===================================================================
8015 dnl CPU Intrinsics support - SSE, AVX
8016 dnl ===================================================================
8018 CXXFLAGS_INTRINSICS_SSE2=
8019 CXXFLAGS_INTRINSICS_SSSE3=
8020 CXXFLAGS_INTRINSICS_SSE41=
8021 CXXFLAGS_INTRINSICS_SSE42=
8022 CXXFLAGS_INTRINSICS_AVX=
8023 CXXFLAGS_INTRINSICS_AVX2=
8024 CXXFLAGS_INTRINSICS_AVX512=
8025 CXXFLAGS_INTRINSICS_AVX512F=
8026 CXXFLAGS_INTRINSICS_F16C=
8027 CXXFLAGS_INTRINSICS_FMA=
8029 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
8030 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
8037 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
8038 flag_avx512f=-mavx512f
8042 # With MSVC using -arch is in fact not necessary for being able
8043 # to use CPU intrinsics, code using AVX512F intrinsics will compile
8044 # even if compiled with -arch:AVX, the -arch option really only affects
8045 # instructions generated for C/C++ code.
8046 # So use the matching same (or lower) -arch options, but only in order
8047 # to generate the best matching instructions for the C++ code surrounding
8049 # SSE2 is the default for x86/x64, so no need to specify the option.
8051 # No specific options for these, use the next lower.
8052 flag_ssse3="$flag_sse2"
8053 flag_sse41="$flag_sse2"
8054 flag_sse42="$flag_sse2"
8056 flag_avx2=-arch:AVX2
8057 flag_avx512=-arch:AVX512
8058 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
8059 flag_avx512f=-arch:AVX2
8060 # No MSVC options for these.
8061 flag_f16c="$flag_sse2"
8062 flag_fma="$flag_sse2"
8065 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8067 save_CXXFLAGS=$CXXFLAGS
8068 CXXFLAGS="$CXXFLAGS $flag_sse2"
8069 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8070 #include <emmintrin.h>
8072 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8073 c = _mm_xor_si128 (a, b);
8077 [can_compile_sse2=yes],
8078 [can_compile_sse2=no])
8080 CXXFLAGS=$save_CXXFLAGS
8081 AC_MSG_RESULT([${can_compile_sse2}])
8082 if test "${can_compile_sse2}" = "yes" ; then
8083 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8086 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8088 save_CXXFLAGS=$CXXFLAGS
8089 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8090 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8091 #include <tmmintrin.h>
8093 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8094 c = _mm_maddubs_epi16 (a, b);
8098 [can_compile_ssse3=yes],
8099 [can_compile_ssse3=no])
8101 CXXFLAGS=$save_CXXFLAGS
8102 AC_MSG_RESULT([${can_compile_ssse3}])
8103 if test "${can_compile_ssse3}" = "yes" ; then
8104 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8107 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8109 save_CXXFLAGS=$CXXFLAGS
8110 CXXFLAGS="$CXXFLAGS $flag_sse41"
8111 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8112 #include <smmintrin.h>
8114 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8115 c = _mm_cmpeq_epi64 (a, b);
8119 [can_compile_sse41=yes],
8120 [can_compile_sse41=no])
8122 CXXFLAGS=$save_CXXFLAGS
8123 AC_MSG_RESULT([${can_compile_sse41}])
8124 if test "${can_compile_sse41}" = "yes" ; then
8125 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8128 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8130 save_CXXFLAGS=$CXXFLAGS
8131 CXXFLAGS="$CXXFLAGS $flag_sse42"
8132 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8133 #include <nmmintrin.h>
8135 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8136 c = _mm_cmpgt_epi64 (a, b);
8140 [can_compile_sse42=yes],
8141 [can_compile_sse42=no])
8143 CXXFLAGS=$save_CXXFLAGS
8144 AC_MSG_RESULT([${can_compile_sse42}])
8145 if test "${can_compile_sse42}" = "yes" ; then
8146 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8149 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8151 save_CXXFLAGS=$CXXFLAGS
8152 CXXFLAGS="$CXXFLAGS $flag_avx"
8153 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8154 #include <immintrin.h>
8156 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8157 c = _mm256_xor_ps(a, b);
8161 [can_compile_avx=yes],
8162 [can_compile_avx=no])
8164 CXXFLAGS=$save_CXXFLAGS
8165 AC_MSG_RESULT([${can_compile_avx}])
8166 if test "${can_compile_avx}" = "yes" ; then
8167 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8170 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8172 save_CXXFLAGS=$CXXFLAGS
8173 CXXFLAGS="$CXXFLAGS $flag_avx2"
8174 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8175 #include <immintrin.h>
8177 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8178 c = _mm256_maddubs_epi16(a, b);
8182 [can_compile_avx2=yes],
8183 [can_compile_avx2=no])
8185 CXXFLAGS=$save_CXXFLAGS
8186 AC_MSG_RESULT([${can_compile_avx2}])
8187 if test "${can_compile_avx2}" = "yes" ; then
8188 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8191 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8193 save_CXXFLAGS=$CXXFLAGS
8194 CXXFLAGS="$CXXFLAGS $flag_avx512"
8195 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8196 #include <immintrin.h>
8198 __m512i a = _mm512_loadu_si512(0);
8199 __m512d v1 = _mm512_load_pd(0);
8200 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8201 __m512d v2 = _mm512_abs_pd(v1);
8205 [can_compile_avx512=yes],
8206 [can_compile_avx512=no])
8208 CXXFLAGS=$save_CXXFLAGS
8209 AC_MSG_RESULT([${can_compile_avx512}])
8210 if test "${can_compile_avx512}" = "yes" ; then
8211 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8212 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8215 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8217 save_CXXFLAGS=$CXXFLAGS
8218 CXXFLAGS="$CXXFLAGS $flag_f16c"
8219 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8220 #include <immintrin.h>
8222 __m128i a = _mm_set1_epi32 (0);
8224 c = _mm_cvtph_ps(a);
8228 [can_compile_f16c=yes],
8229 [can_compile_f16c=no])
8231 CXXFLAGS=$save_CXXFLAGS
8232 AC_MSG_RESULT([${can_compile_f16c}])
8233 if test "${can_compile_f16c}" = "yes" ; then
8234 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8237 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8239 save_CXXFLAGS=$CXXFLAGS
8240 CXXFLAGS="$CXXFLAGS $flag_fma"
8241 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8242 #include <immintrin.h>
8244 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8245 d = _mm256_fmadd_ps(a, b, c);
8249 [can_compile_fma=yes],
8250 [can_compile_fma=no])
8252 CXXFLAGS=$save_CXXFLAGS
8253 AC_MSG_RESULT([${can_compile_fma}])
8254 if test "${can_compile_fma}" = "yes" ; then
8255 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8258 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8259 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8260 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8261 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8262 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8263 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8264 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8265 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8266 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8267 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8269 dnl ===================================================================
8270 dnl system stl sanity tests
8271 dnl ===================================================================
8272 if test "$_os" != "WINNT"; then
8276 save_CPPFLAGS="$CPPFLAGS"
8277 if test -n "$MACOSX_SDK_PATH"; then
8278 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8281 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8283 if test "$CPP_LIBRARY" = GLIBCXX; then
8284 dnl gcc#19664, gcc#22482, rhbz#162935
8285 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8286 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8287 AC_MSG_RESULT([$stlvisok])
8288 if test "$stlvisok" = "no"; then
8289 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8293 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8294 # when we don't make any dynamic libraries?
8295 if test "$DISABLE_DYNLOADING" = ""; then
8296 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8297 cat > conftestlib1.cc <<_ACEOF
8298 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8299 struct S2: S1<int> { virtual ~S2(); };
8302 cat > conftestlib2.cc <<_ACEOF
8303 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8304 struct S2: S1<int> { virtual ~S2(); };
8305 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8307 gccvisinlineshiddenok=yes
8308 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8309 gccvisinlineshiddenok=no
8311 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8312 dnl known to not work with -z defs (unsetting which makes the test
8314 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8315 if test "$COM_IS_CLANG" = TRUE; then
8316 for i in $CXX $CXXFLAGS; do
8319 my_linkflagsnoundefs=
8325 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8326 gccvisinlineshiddenok=no
8331 AC_MSG_RESULT([$gccvisinlineshiddenok])
8332 if test "$gccvisinlineshiddenok" = "no"; then
8333 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8337 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8338 cat >visibility.cxx <<_ACEOF
8339 #pragma GCC visibility push(hidden)
8340 struct __attribute__ ((visibility ("default"))) TestStruct {
8343 __attribute__ ((visibility ("default"))) void TestFunc() {
8347 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8352 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8355 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8367 rm -f visibility.s visibility.cxx
8369 AC_MSG_RESULT([$gccvisbroken])
8370 if test "$gccvisbroken" = "yes"; then
8371 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8374 CPPFLAGS="$save_CPPFLAGS"
8376 AC_MSG_CHECKING([if CET endbranch is recognized])
8377 cat > endbr.s <<_ACEOF
8380 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8381 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8382 AC_MSG_RESULT([yes])
8383 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8387 rm -f endbr.s endbr.o
8388 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8393 dnl ===================================================================
8395 dnl ===================================================================
8397 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8398 if test "$GCC" = "yes"; then
8399 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8401 save_CXXFLAGS=$CXXFLAGS
8402 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8403 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8404 CXXFLAGS=$save_CXXFLAGS
8406 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8407 AC_MSG_RESULT([yes])
8412 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8414 dnl ===================================================================
8415 dnl Compiler plugins
8416 dnl ===================================================================
8419 # currently only Clang
8421 if test "$COM_IS_CLANG" != "TRUE"; then
8422 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8423 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8424 enable_compiler_plugins=no
8428 COMPILER_PLUGINS_COM_IS_CLANG=
8429 if test "$COM_IS_CLANG" = "TRUE"; then
8430 if test -n "$enable_compiler_plugins"; then
8431 compiler_plugins="$enable_compiler_plugins"
8432 elif test -n "$ENABLE_DBGUTIL"; then
8433 compiler_plugins=test
8437 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8438 if test "$CLANGVER" -lt 120001; then
8439 if test "$compiler_plugins" = yes; then
8441 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8447 if test "$compiler_plugins" != "no"; then
8448 dnl The prefix where Clang resides, override to where Clang resides if
8449 dnl using a source build:
8450 if test -z "$CLANGDIR"; then
8451 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8453 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8454 if test -z "$COMPILER_PLUGINS_CXX"; then
8455 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8457 clangbindir=$CLANGDIR/bin
8458 if test "$build_os" = "cygwin"; then
8459 clangbindir=$(cygpath -u "$clangbindir")
8461 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8462 if test -n "$LLVM_CONFIG"; then
8463 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8464 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8465 if test -z "$CLANGLIBDIR"; then
8466 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8468 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8469 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8470 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8471 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8472 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8473 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8476 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8477 clangobjdir=$($LLVM_CONFIG --obj-root)
8478 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8479 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8482 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8486 save_CPPFLAGS=$CPPFLAGS
8487 save_CXXFLAGS=$CXXFLAGS
8488 save_LDFLAGS=$LDFLAGS
8490 CXX=$COMPILER_PLUGINS_CXX
8491 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8492 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8493 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8494 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8495 [COMPILER_PLUGINS=TRUE],
8497 if test "$compiler_plugins" = "yes"; then
8498 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8500 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8501 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8504 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8505 dnl comment in compilerplugins/Makefile-clang.mk:
8506 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8508 AC_MSG_CHECKING([for clang libraries to use])
8509 if test -z "$CLANGTOOLLIBS"; then
8510 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8512 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8513 [[ clang::FullSourceLoc().dump(); ]])
8514 ],[CLANGTOOLLIBS="$LIBS"],[])
8516 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8517 dnl list of individual -lclang* (but note that that list can become outdated over time,
8518 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8519 dnl needs to include -lclangSupport now"):
8520 if test -z "$CLANGTOOLLIBS"; then
8521 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8522 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8524 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8525 [[ clang::FullSourceLoc().dump(); ]])
8526 ],[CLANGTOOLLIBS="$LIBS"],[])
8528 AC_MSG_RESULT([$CLANGTOOLLIBS])
8529 if test -z "$CLANGTOOLLIBS"; then
8530 if test "$compiler_plugins" = "yes"; then
8531 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8533 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8534 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8538 if test -n "$COMPILER_PLUGINS"; then
8539 if test -z "$CLANGSYSINCLUDE"; then
8540 if test -n "$LLVM_CONFIG"; then
8541 # Path to the clang system headers (no idea if there's a better way to get it).
8542 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8549 CPPFLAGS=$save_CPPFLAGS
8550 CXXFLAGS=$save_CXXFLAGS
8551 LDFLAGS=$save_LDFLAGS
8555 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8556 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8562 [AC_MSG_RESULT([yes])
8563 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8564 [AC_MSG_RESULT([no])])
8565 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8568 if test "$enable_compiler_plugins" = "yes"; then
8569 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8572 COMPILER_PLUGINS_ANALYZER_PCH=
8573 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8574 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8576 AC_SUBST(COMPILER_PLUGINS)
8577 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8578 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8579 AC_SUBST(COMPILER_PLUGINS_CXX)
8580 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8581 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8582 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8583 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8585 AC_SUBST(CLANGLIBDIR)
8586 AC_SUBST(CLANGTOOLLIBS)
8587 AC_SUBST(CLANGSYSINCLUDE)
8589 # Plugin to help linker.
8590 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8591 # This makes --enable-lto build with clang work.
8594 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8595 AC_SUBST(HAVE_POSIX_FALLOCATE)
8597 JITC_PROCESSOR_TYPE=""
8598 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8599 # IBMs JDK needs this...
8600 JITC_PROCESSOR_TYPE=6
8601 export JITC_PROCESSOR_TYPE
8603 AC_SUBST([JITC_PROCESSOR_TYPE])
8605 # Misc Windows Stuff
8606 AC_ARG_WITH(ucrt-dir,
8607 AS_HELP_STRING([--with-ucrt-dir],
8608 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8609 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8610 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8611 Windows6.1-KB2999226-x64.msu
8612 Windows6.1-KB2999226-x86.msu
8613 Windows8.1-KB2999226-x64.msu
8614 Windows8.1-KB2999226-x86.msu
8615 Windows8-RT-KB2999226-x64.msu
8616 Windows8-RT-KB2999226-x86.msu
8617 A zip archive including those files is available from Microsoft site:
8618 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8621 UCRT_REDISTDIR="$with_ucrt_dir"
8622 if test $_os = "WINNT"; then
8624 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8625 MSVC_DLLS="$msvcdlls"
8626 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8628 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8630 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8633 for i in $PKGFORMAT; do
8634 if test "$i" = msi; then
8635 find_msms "$with_redist"
8636 if test -n "$msmdir"; then
8637 MSM_PATH=`win_short_path_for_make "$msmdir"`
8638 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8644 if test "$UCRT_REDISTDIR" = "no"; then
8645 dnl explicitly disabled
8648 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8649 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8650 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8651 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8652 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8653 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8655 if test -n "$PKGFORMAT"; then
8656 for i in $PKGFORMAT; do
8659 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8660 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8669 AC_SUBST(UCRT_REDISTDIR)
8670 AC_SUBST(MSVC_DLL_PATH)
8675 dnl ===================================================================
8677 dnl ===================================================================
8678 if test "$ENABLE_JAVA" != ""; then
8680 # Windows-specific tests
8681 if test "$build_os" = "cygwin"; then
8682 if test -z "$with_jdk_home"; then
8683 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8684 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8685 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8686 if test -n "$regvalue"; then
8688 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8689 with_jdk_home=$regvalue
8691 howfound="found automatically"
8693 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8694 howfound="you passed"
8697 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8698 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 8])
8702 # 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.
8703 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8704 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8705 with_jdk_home=`/usr/libexec/java_home`
8708 JAVA_HOME=; export JAVA_HOME
8709 if test -z "$with_jdk_home"; then
8710 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8712 _java_path="$with_jdk_home/bin/$with_java"
8713 dnl Check if there is a Java interpreter at all.
8714 if test -x "$_java_path"; then
8715 JAVAINTERPRETER=$_java_path
8717 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8721 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8722 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8723 dnl loaded by java to run JunitTests:
8724 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8725 shortjdkhome=`cygpath -d "$with_jdk_home"`
8726 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
8727 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8728 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8729 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
8730 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8731 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8734 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8735 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8737 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8738 elif test "$cross_compiling" != "yes"; then
8740 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8741 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8742 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8743 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8746 *) # assumption: everything else 32-bit
8747 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8748 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8749 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8756 dnl ===================================================================
8758 dnl ===================================================================
8760 # Whether all the complexity here actually is needed any more or not, no idea.
8762 JDK_SECURITYMANAGER_DISALLOWED=
8764 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8766 AC_MSG_CHECKING([the installed JDK])
8767 if test -n "$JAVAINTERPRETER"; then
8768 dnl java -version sends output to stderr!
8769 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8770 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8771 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8772 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8773 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8774 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8775 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8776 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8780 dnl Sun JDK specific tests
8781 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8782 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8784 if test "$_jdk_ver" -lt 10800; then
8785 AC_MSG_ERROR([JDK is too old, you need at least 8 ($_jdk_ver < 10800)])
8787 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8788 dnl completely removed in some Java version > 18 (see
8789 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8790 if test "$_jdk_ver" -ge 180000; then
8791 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8794 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8795 if test "$_os" = "WINNT"; then
8796 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8798 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8800 dnl Check whether the build Java supports modules
8801 if test "$_jdk_ver" -ge 90000; then
8804 AC_MSG_WARN([Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)])
8805 add_warning "Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)"
8808 # set to limit VM usage for JunitTests
8810 # set to limit VM usage for javac
8811 JAVACFLAGS=-J-Xmx128M
8814 AC_MSG_ERROR([Java not found. You need at least JDK 8])
8817 if test -z "$ENABLE_JAVA"; then
8821 elif test "$cross_compiling" = "yes"; then
8822 # Just assume compatibility of build and host JDK
8824 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8828 dnl ===================================================================
8829 dnl Checks for javac
8830 dnl ===================================================================
8831 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8832 javacompiler="javac"
8833 : ${JAVA_SOURCE_VER=8}
8834 : ${JAVA_TARGET_VER=8}
8835 if test -z "$with_jdk_home"; then
8836 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8838 _javac_path="$with_jdk_home/bin/$javacompiler"
8839 dnl Check if there is a Java compiler at all.
8840 if test -x "$_javac_path"; then
8841 JAVACOMPILER=$_javac_path
8844 if test -z "$JAVACOMPILER"; then
8845 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8847 if test "$build_os" = "cygwin"; then
8848 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8849 JAVACOMPILER="${JAVACOMPILER}.exe"
8851 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8855 dnl ===================================================================
8856 dnl Checks for javadoc
8857 dnl ===================================================================
8858 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8859 if test -z "$with_jdk_home"; then
8860 AC_PATH_PROG(JAVADOC, javadoc)
8862 _javadoc_path="$with_jdk_home/bin/javadoc"
8863 dnl Check if there is a javadoc at all.
8864 if test -x "$_javadoc_path"; then
8865 JAVADOC=$_javadoc_path
8867 AC_PATH_PROG(JAVADOC, javadoc)
8870 if test -z "$JAVADOC"; then
8871 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8873 if test "$build_os" = "cygwin"; then
8874 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8875 JAVADOC="${JAVADOC}.exe"
8877 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8880 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8881 JAVADOCISGJDOC="yes"
8885 AC_SUBST(JAVADOCISGJDOC)
8887 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8888 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8889 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8890 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8891 # try to recover first by looking whether we have an alternative
8892 # system as in Debian or newer SuSEs where following /usr/bin/javac
8893 # over /etc/alternatives/javac leads to the right bindir where we
8894 # just need to strip a bit away to get a valid JAVA_HOME
8895 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8896 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8897 # maybe only one level of symlink (e.g. on Mac)
8898 JAVA_HOME=$(readlink $JAVACOMPILER)
8899 if test "$(dirname $JAVA_HOME)" = "."; then
8900 # we've got no path to trim back
8905 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8906 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8907 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8908 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8910 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8911 if test "$JAVA_HOME" != "/usr"; then
8912 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8913 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8914 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8915 dnl Tiger already returns a JDK path...
8916 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8918 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8919 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8920 dnl that checks which version to run
8921 if test -f "$JAVA_HOME"; then
8922 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8927 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8929 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8930 if test -z "$JAVA_HOME"; then
8931 if test "x$with_jdk_home" = "x"; then
8932 cat > findhome.java <<_ACEOF
8933 [import java.io.File;
8937 public static void main(String args[])
8939 String jrelocation = System.getProperty("java.home");
8940 File jre = new File(jrelocation);
8941 System.out.println(jre.getParent());
8945 AC_MSG_CHECKING([if javac works])
8946 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8947 AC_TRY_EVAL(javac_cmd)
8948 if test $? = 0 -a -f ./findhome.class; then
8949 AC_MSG_RESULT([javac works])
8951 echo "configure: javac test failed" >&5
8952 cat findhome.java >&5
8953 AC_MSG_ERROR([javac does not work - java projects will not build!])
8955 AC_MSG_CHECKING([if gij knows its java.home])
8956 JAVA_HOME=`$JAVAINTERPRETER findhome`
8957 if test $? = 0 -a "$JAVA_HOME" != ""; then
8958 AC_MSG_RESULT([$JAVA_HOME])
8960 echo "configure: java test failed" >&5
8961 cat findhome.java >&5
8962 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8964 # clean-up after ourselves
8965 rm -f ./findhome.java ./findhome.class
8967 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8971 # now check if $JAVA_HOME is really valid
8972 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8973 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8974 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8975 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8976 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8977 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8978 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8979 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8982 PathFormat "$JAVA_HOME"
8983 JAVA_HOME="$formatted_path"
8986 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8989 AC_MSG_CHECKING([for JAWT lib])
8990 if test "$_os" = WINNT; then
8991 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8996 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8997 JAVA_ARCH=$my_java_arch
9012 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
9013 JAVA_ARCH=$my_java_arch
9016 my_java_arch=sparcv9
9022 my_java_arch=$host_cpu
9025 # This is where JDK9 puts the library
9026 if test -e "$JAVA_HOME/lib/libjawt.so"; then
9027 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
9029 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
9031 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
9033 AC_MSG_RESULT([$JAWTLIB])
9037 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
9041 JAVAINC="-I$JAVA_HOME/include/win32"
9042 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
9046 if test -d "$JAVA_HOME/include/darwin"; then
9047 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
9049 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
9054 JAVAINC="-I$JAVA_HOME/include"
9055 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9059 JAVAINC="-I$JAVA_HOME/include"
9060 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
9061 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
9062 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9063 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9067 JAVAINC="-I$JAVA_HOME/include"
9068 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9069 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9073 JAVAINC="-I$JAVA_HOME/include"
9074 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9075 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9079 JAVAINC="-I$JAVA_HOME/include"
9080 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9081 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9085 JAVAINC="-I$JAVA_HOME/include"
9086 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9087 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9091 JAVAINC="-I$JAVA_HOME/include"
9092 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9093 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9097 SOLARINC="$SOLARINC $JAVAINC"
9099 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9100 JAVA_HOME_FOR_BUILD=$JAVA_HOME
9101 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9103 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9106 AC_SUBST(JAVACFLAGS)
9107 AC_SUBST(JAVACOMPILER)
9108 AC_SUBST(JAVAINTERPRETER)
9109 AC_SUBST(JAVAIFLAGS)
9110 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9112 AC_SUBST(JAVA_HOME_FOR_BUILD)
9114 AC_SUBST(JDK_FOR_BUILD)
9115 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9116 AC_SUBST(JAVA_SOURCE_VER)
9117 AC_SUBST(JAVA_TARGET_VER)
9118 AC_SUBST(MODULAR_JAVA)
9121 dnl ===================================================================
9122 dnl Export file validation
9123 dnl ===================================================================
9124 AC_MSG_CHECKING([whether to enable export file validation])
9125 if test "$with_export_validation" != "no"; then
9126 if test -z "$ENABLE_JAVA"; then
9127 if test "$with_export_validation" = "yes"; then
9128 AC_MSG_ERROR([requested, but Java is disabled])
9130 AC_MSG_RESULT([no, as Java is disabled])
9132 elif ! test -d "${SRC_ROOT}/schema"; then
9133 if test "$with_export_validation" = "yes"; then
9134 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9136 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9139 AC_MSG_RESULT([yes])
9140 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9142 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9143 if test -z "$ODFVALIDATOR"; then
9144 # remember to download the ODF toolkit with validator later
9145 AC_MSG_NOTICE([no odfvalidator found, will download it])
9146 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9147 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9149 # and fetch name of odfvalidator jar name from download.lst
9150 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9151 AC_SUBST(ODFVALIDATOR_JAR)
9153 if test -z "$ODFVALIDATOR_JAR"; then
9154 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9157 if test "$build_os" = "cygwin"; then
9158 # In case of Cygwin it will be executed from Windows,
9159 # so we need to run bash and absolute path to validator
9160 # so instead of "odfvalidator" it will be
9161 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9162 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9164 ODFVALIDATOR="sh $ODFVALIDATOR"
9166 AC_SUBST(ODFVALIDATOR)
9169 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9170 if test -z "$OFFICEOTRON"; then
9171 # remember to download the officeotron with validator later
9172 AC_MSG_NOTICE([no officeotron found, will download it])
9173 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9174 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9176 # and fetch name of officeotron jar name from download.lst
9177 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9178 AC_SUBST(OFFICEOTRON_JAR)
9180 if test -z "$OFFICEOTRON_JAR"; then
9181 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9184 # check version of existing officeotron
9185 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9186 if test 0"$OFFICEOTRON_VER" -lt 704; then
9187 AC_MSG_ERROR([officeotron too old])
9190 if test "$build_os" = "cygwin"; then
9191 # In case of Cygwin it will be executed from Windows,
9192 # so we need to run bash and absolute path to validator
9193 # so instead of "odfvalidator" it will be
9194 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9195 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9197 OFFICEOTRON="sh $OFFICEOTRON"
9200 AC_SUBST(OFFICEOTRON)
9205 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9206 if test "$with_bffvalidator" != "no"; then
9207 AC_DEFINE(HAVE_BFFVALIDATOR)
9209 if test "$with_export_validation" = "no"; then
9210 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9213 if test "$with_bffvalidator" = "yes"; then
9214 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9216 BFFVALIDATOR="$with_bffvalidator"
9219 if test "$build_os" = "cygwin"; then
9220 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9221 AC_MSG_RESULT($BFFVALIDATOR)
9223 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9225 elif test -n "$BFFVALIDATOR"; then
9226 # We are not in Cygwin but need to run Windows binary with wine
9227 AC_PATH_PROGS(WINE, wine)
9229 # so swap in a shell wrapper that converts paths transparently
9230 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9231 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9232 AC_SUBST(BFFVALIDATOR_EXE)
9233 AC_MSG_RESULT($BFFVALIDATOR)
9235 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9237 AC_SUBST(BFFVALIDATOR)
9242 dnl ===================================================================
9243 dnl Check for epm (not needed for Windows)
9244 dnl ===================================================================
9245 AC_MSG_CHECKING([whether to enable EPM for packing])
9246 if test "$enable_epm" = "yes"; then
9247 AC_MSG_RESULT([yes])
9248 if test "$_os" != "WINNT"; then
9249 if test $_os = Darwin; then
9251 elif test -n "$with_epm"; then
9254 AC_PATH_PROG(EPM, epm, no)
9256 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9257 AC_MSG_NOTICE([EPM will be built.])
9258 BUILD_TYPE="$BUILD_TYPE EPM"
9259 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9261 # Gentoo has some epm which is something different...
9262 AC_MSG_CHECKING([whether the found epm is the right epm])
9263 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9264 AC_MSG_RESULT([yes])
9266 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9268 AC_MSG_CHECKING([epm version])
9269 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9270 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9271 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9272 AC_MSG_RESULT([OK, >= 3.7])
9274 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9275 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9280 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9281 AC_MSG_CHECKING([for rpm])
9282 for a in "$RPM" rpmbuild rpm; do
9283 $a --usage >/dev/null 2> /dev/null
9284 if test $? -eq 0; then
9288 $a --version >/dev/null 2> /dev/null
9289 if test $? -eq 0; then
9295 if test -z "$RPM"; then
9296 AC_MSG_ERROR([not found])
9297 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9298 RPM_PATH=`which $RPM`
9299 AC_MSG_RESULT([$RPM_PATH])
9300 SCPDEFS="$SCPDEFS -DWITH_RPM"
9302 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9305 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9306 AC_PATH_PROG(DPKG, dpkg, no)
9307 if test "$DPKG" = "no"; then
9308 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9311 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9312 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9313 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9314 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9315 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9316 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9317 AC_MSG_RESULT([yes])
9320 if echo "$PKGFORMAT" | $GREP -q rpm; then
9322 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9323 add_warning "the rpms will need to be installed with --nodeps"
9327 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9328 add_warning "the ${_pt}s will not be relocatable"
9329 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9330 relocation will work, you need to patch your epm with the
9331 patch in epm/epm-3.7.patch or build with
9332 --with-epm=internal which will build a suitable epm])
9337 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9338 AC_PATH_PROG(PKGMK, pkgmk, no)
9339 if test "$PKGMK" = "no"; then
9340 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9347 for i in $PKGFORMAT; do
9349 bsd | deb | pkg | rpm | native | portable)
9351 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9361 if test "$enable_lotuswordpro" = "yes"; then
9364 AC_SUBST(ENABLE_LWP)
9366 dnl ===================================================================
9367 dnl Check for building ODK
9368 dnl ===================================================================
9369 AC_MSG_CHECKING([whether to build the ODK])
9370 if test "$enable_odk" = yes; then
9371 if test "$DISABLE_DYNLOADING" = TRUE; then
9372 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9374 AC_MSG_RESULT([yes])
9375 BUILD_TYPE="$BUILD_TYPE ODK"
9380 if test "$enable_odk" != yes; then
9383 if test "$with_doxygen" = no; then
9384 AC_MSG_CHECKING([for doxygen])
9388 if test "$with_doxygen" = yes; then
9389 AC_PATH_PROG([DOXYGEN], [doxygen])
9390 if test -z "$DOXYGEN"; then
9391 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9393 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9394 if ! dot -V 2>/dev/null; then
9395 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9399 AC_MSG_CHECKING([for doxygen])
9400 DOXYGEN=$with_doxygen
9401 AC_MSG_RESULT([$DOXYGEN])
9403 if test -n "$DOXYGEN"; then
9404 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9405 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9406 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9407 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9414 dnl ==================================================================
9416 dnl ==================================================================
9417 AC_MSG_CHECKING([whether to enable fuzzers])
9418 if test "$enable_fuzzers" != yes; then
9421 if test -z $LIB_FUZZING_ENGINE; then
9422 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9424 AC_MSG_RESULT([yes])
9425 ENABLE_FUZZERS="TRUE"
9426 AC_DEFINE([ENABLE_FUZZERS],1)
9427 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9429 AC_SUBST(LIB_FUZZING_ENGINE)
9431 dnl ===================================================================
9432 dnl Check for system zlib
9433 dnl ===================================================================
9434 if test "$with_system_zlib" = "auto"; then
9437 with_system_zlib="$with_system_libs"
9440 if test "$enable_fuzzers" != "yes"; then
9441 with_system_zlib=yes
9449 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9450 dnl and has no pkg-config for it at least on some tinderboxes,
9451 dnl so leaving that out for now
9452 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9453 AC_MSG_CHECKING([which zlib to use])
9454 if test "$with_system_zlib" = "yes"; then
9455 AC_MSG_RESULT([external])
9457 AC_CHECK_HEADER(zlib.h, [],
9458 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9459 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9460 [AC_MSG_ERROR(zlib not found or functional)], [])
9462 AC_MSG_RESULT([internal])
9464 BUILD_TYPE="$BUILD_TYPE ZLIB"
9465 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9466 if test "$COM" = "MSC"; then
9467 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9469 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9472 AC_SUBST(ZLIB_CFLAGS)
9474 AC_SUBST(SYSTEM_ZLIB)
9476 dnl ===================================================================
9477 dnl Check for system jpeg
9478 dnl ===================================================================
9479 AC_MSG_CHECKING([which libjpeg to use])
9480 if test "$with_system_jpeg" = "yes"; then
9481 AC_MSG_RESULT([external])
9483 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9484 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9485 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9486 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9489 AC_MSG_RESULT([internal, libjpeg-turbo])
9490 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9493 x86_64 | amd64 | i*86 | x86 | ia32)
9494 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9495 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9496 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9497 NASM="$LODE_HOME/opt/bin/nasm"
9498 elif test -x "/opt/lo/bin/nasm"; then
9499 NASM="/opt/lo/bin/nasm"
9503 if test -n "$NASM"; then
9504 AC_MSG_CHECKING([for object file format of host system])
9506 cygwin* | mingw* | pw32* | wsl*)
9516 msdosdjgpp* | go32*)
9519 os2-emx*) # not tested
9520 objfmt='MSOMF' # obj
9522 linux*coff* | linux*oldld*)
9538 kfreebsd* | freebsd* | netbsd* | openbsd*)
9539 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9552 solaris* | sunos* | sysv* | sco*)
9562 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9577 AC_MSG_RESULT([$objfmt])
9578 if test "$objfmt" = 'ELF ?'; then
9580 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9583 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9585 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9586 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9587 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9588 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9589 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9590 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9591 ELF) NAFLAGS='-felf -DELF -DPIC';;
9592 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9593 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9594 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9595 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9597 AC_MSG_RESULT([$NAFLAGS])
9599 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9600 cat > conftest.asm << EOF
9601 [%line __oline__ "configure"
9609 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9610 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9613 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9614 cat conftest.asm >&AS_MESSAGE_LOG_FD
9617 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9623 if test -z "$NASM"; then
9625 ****************************************************************************
9626 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9630 if test "$build_os" = "cygwin"; then
9632 install a pre-compiled binary for Win32
9634 mkdir -p /opt/lo/bin
9636 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9639 or get and install one from https://www.nasm.us/
9641 Then re-run autogen.sh
9643 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9644 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9649 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9653 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9654 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9662 AC_SUBST(LIBJPEG_CFLAGS)
9663 AC_SUBST(LIBJPEG_LIBS)
9664 AC_SUBST(SYSTEM_LIBJPEG)
9666 dnl ===================================================================
9667 dnl Check for system clucene
9668 dnl ===================================================================
9669 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9670 if test "$SYSTEM_CLUCENE" = TRUE; then
9672 save_CXXFLAGS=$CXXFLAGS
9673 save_CPPFLAGS=$CPPFLAGS
9674 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9675 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9676 dnl https://sourceforge.net/p/clucene/bugs/200/
9677 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9678 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9679 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9680 CXXFLAGS=$save_CXXFLAGS
9681 CPPFLAGS=$save_CPPFLAGS
9683 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9686 dnl ===================================================================
9687 dnl Check for system expat
9688 dnl ===================================================================
9689 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9691 dnl ===================================================================
9692 dnl Check for system xmlsec
9693 dnl ===================================================================
9694 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9696 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9697 if test "$enable_eot" = "yes"; then
9699 AC_DEFINE([ENABLE_EOT])
9700 AC_MSG_RESULT([yes])
9702 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9707 AC_SUBST([ENABLE_EOT])
9709 dnl ===================================================================
9710 dnl Check for DLP libs
9711 dnl ===================================================================
9712 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9713 AS_IF([test "$COM" = "MSC"],
9714 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9715 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9717 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9718 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9720 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9722 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9724 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9725 AS_IF([test "$COM" = "MSC"],
9726 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9727 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9729 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9730 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9732 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9734 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9735 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9737 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9739 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9741 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9743 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9744 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9746 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9747 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9749 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9751 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9752 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9754 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9756 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9758 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9760 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9762 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9763 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9765 dnl ===================================================================
9766 dnl Check for system lcms2
9767 dnl ===================================================================
9768 if test "$with_system_lcms2" != "yes"; then
9771 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9772 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9773 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9774 if test "$GCC" = "yes"; then
9775 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9777 if test "$COM" = "MSC"; then # override the above
9778 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9781 dnl ===================================================================
9782 dnl Check for system cppunit
9783 dnl ===================================================================
9784 if test "$_os" != "Android" ; then
9785 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9788 dnl ===================================================================
9789 dnl Check whether freetype is available
9791 dnl FreeType has 3 different kinds of versions
9792 dnl * release, like 2.4.10
9793 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9795 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9798 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9799 dnl ===================================================================
9800 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9801 if test "x$ac_config_site_64bit_host" = xYES; then
9802 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9804 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9806 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9808 # ===================================================================
9809 # Check for system libxslt
9810 # to prevent incompatibilities between internal libxml2 and external libxslt,
9811 # or vice versa, use with_system_libxml here
9812 # ===================================================================
9813 if test "$with_system_libxml" = "auto"; then
9816 with_system_libxml="$with_system_libs"
9819 with_system_libxml=no
9822 if test "$enable_fuzzers" != "yes"; then
9823 with_system_libxml=yes
9825 with_system_libxml=no
9831 AC_MSG_CHECKING([which libxslt to use])
9832 if test "$with_system_libxml" = "yes"; then
9833 AC_MSG_RESULT([external])
9835 if test "$_os" = "Darwin"; then
9836 dnl make sure to use SDK path
9837 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9838 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9840 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9841 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9843 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9844 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9845 FilterLibs "${LIBXSLT_LIBS}"
9846 LIBXSLT_LIBS="${filteredlibs}"
9847 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9848 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9849 FilterLibs "${LIBEXSLT_LIBS}"
9850 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9853 dnl Check for xsltproc
9854 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9855 if test "$XSLTPROC" = "no"; then
9856 AC_MSG_ERROR([xsltproc is required])
9859 AC_MSG_RESULT([internal])
9861 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9863 AC_SUBST(SYSTEM_LIBXSLT)
9864 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9865 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9867 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9869 AC_SUBST(LIBEXSLT_CFLAGS)
9870 AC_SUBST(LIBEXSLT_LIBS)
9871 AC_SUBST(LIBXSLT_CFLAGS)
9872 AC_SUBST(LIBXSLT_LIBS)
9875 # ===================================================================
9876 # Check for system libxml
9877 # ===================================================================
9878 AC_MSG_CHECKING([which libxml to use])
9879 if test "$with_system_libxml" = "yes"; then
9880 AC_MSG_RESULT([external])
9882 if test "$_os" = "Darwin"; then
9883 dnl make sure to use SDK path
9884 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9886 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9887 elif test $_os = iOS; then
9888 dnl make sure to use SDK path
9889 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9890 LIBXML_CFLAGS="-I$usr/include/libxml2"
9891 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9893 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9894 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9895 FilterLibs "${LIBXML_LIBS}"
9896 LIBXML_LIBS="${filteredlibs}"
9899 dnl Check for xmllint
9900 AC_PATH_PROG(XMLLINT, xmllint, no)
9901 if test "$XMLLINT" = "no"; then
9902 AC_MSG_ERROR([xmllint is required])
9905 AC_MSG_RESULT([internal])
9907 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9908 if test "$COM" = "MSC"; then
9909 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9911 if test "$COM" = "MSC"; then
9912 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9914 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9915 if test "$DISABLE_DYNLOADING" = TRUE; then
9916 LIBXML_LIBS="$LIBXML_LIBS -lm"
9919 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9921 AC_SUBST(SYSTEM_LIBXML)
9922 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9923 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9925 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9926 AC_SUBST(LIBXML_CFLAGS)
9927 AC_SUBST(LIBXML_LIBS)
9930 # =====================================================================
9931 # Checking for a Python interpreter with version >= 3.3.
9932 # Optionally user can pass an option to configure, i. e.
9933 # ./configure PYTHON=/usr/bin/python
9934 # =====================================================================
9935 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9936 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9937 # unless PYTHON is defined as above which allows 'system'
9938 enable_python=internal
9940 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9941 if test -n "$PYTHON"; then
9942 PYTHON_FOR_BUILD=$PYTHON
9944 # This allows a lack of system python with no error, we use internal one in that case.
9945 AM_PATH_PYTHON([3.3],, [:])
9946 # Clean PYTHON_VERSION checked below if cross-compiling
9948 if test "$PYTHON" != ":"; then
9949 PYTHON_FOR_BUILD=$PYTHON
9954 # Checks for Python to use for Pyuno
9955 AC_MSG_CHECKING([which Python to use for Pyuno])
9956 case "$enable_python" in
9958 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9959 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9960 # requirement from the choice whether to include Python stuff in the installer, but why
9962 AC_MSG_ERROR([Python is required at build time.])
9965 AC_MSG_RESULT([none])
9968 if test "$DISABLE_SCRIPTING" = TRUE; then
9969 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9970 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9972 AC_MSG_RESULT([none, overridden by --disable-scripting])
9974 elif test $build_os = cygwin -o $build_os = wsl; then
9975 dnl When building on Windows we don't attempt to use any installed
9976 dnl "system" Python.
9977 AC_MSG_RESULT([fully internal])
9978 enable_python=internal
9979 elif test "$cross_compiling" = yes; then
9980 AC_MSG_RESULT([system])
9981 enable_python=system
9983 # Unset variables set by the above AM_PATH_PYTHON so that
9984 # we actually do check anew.
9986 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
9987 AM_PATH_PYTHON([3.3],, [:])
9988 AC_MSG_CHECKING([which Python to use for Pyuno])
9989 if test "$PYTHON" = ":"; then
9990 if test -z "$PYTHON_FOR_BUILD"; then
9991 AC_MSG_RESULT([fully internal])
9993 AC_MSG_RESULT([internal])
9995 enable_python=internal
9997 AC_MSG_RESULT([system])
9998 enable_python=system
10003 AC_MSG_RESULT([internal])
10006 AC_MSG_RESULT([fully internal])
10007 enable_python=internal
10010 AC_MSG_RESULT([system])
10011 if test "$_os" = Darwin -a -z "$PYTHON"; then
10012 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
10016 AC_MSG_ERROR([Incorrect --enable-python option])
10020 if test $enable_python != no; then
10021 BUILD_TYPE="$BUILD_TYPE PYUNO"
10024 if test $enable_python = system; then
10025 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
10026 # Fallback: Accept these in the environment, or as set above
10029 elif test "$cross_compiling" != yes; then
10030 # Unset variables set by the above AM_PATH_PYTHON so that
10031 # we actually do check anew.
10032 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
10033 # This causes an error if no python command is found
10034 AM_PATH_PYTHON([3.3])
10035 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
10036 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
10037 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
10038 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
10039 if test -z "$PKG_CONFIG"; then
10040 PYTHON_CFLAGS="-I$python_include"
10041 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10042 elif $PKG_CONFIG --exists python-$python_version-embed; then
10043 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
10044 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
10045 elif $PKG_CONFIG --exists python-$python_version; then
10046 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
10047 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
10049 PYTHON_CFLAGS="-I$python_include"
10050 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10052 FilterLibs "${PYTHON_LIBS}"
10053 PYTHON_LIBS="${filteredlibs}"
10055 dnl How to find out the cross-compilation Python installation path?
10056 AC_MSG_CHECKING([for python version])
10057 AS_IF([test -n "$PYTHON_VERSION"],
10058 [AC_MSG_RESULT([$PYTHON_VERSION])],
10059 [AC_MSG_RESULT([not found])
10060 AC_MSG_ERROR([no usable python found])])
10061 test -n "$PYTHON_CFLAGS" && break
10064 dnl Check if the headers really work
10065 save_CPPFLAGS="$CPPFLAGS"
10066 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10067 AC_CHECK_HEADER(Python.h)
10068 CPPFLAGS="$save_CPPFLAGS"
10070 # let the PYTHON_FOR_BUILD match the same python installation that
10071 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10072 # better for PythonTests.
10073 PYTHON_FOR_BUILD=$PYTHON
10076 if test "$with_lxml" != no; then
10077 if test -z "$PYTHON_FOR_BUILD"; then
10080 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10083 if test "$cross_compiling" != yes ; then
10084 BUILD_TYPE="$BUILD_TYPE LXML"
10089 AC_MSG_CHECKING([for python lxml])
10090 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10091 AC_MSG_RESULT([yes])
10095 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10098 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10099 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10100 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10102 BUILD_TYPE="$BUILD_TYPE LXML"
10103 AC_MSG_RESULT([no, using internal lxml])
10106 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10114 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10116 PYTHON_VERSION_MAJOR=3
10117 PYTHON_VERSION_MINOR=8
10118 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.20
10119 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10120 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10122 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10124 # Embedded Python dies without Home set
10125 if test "$HOME" = ""; then
10130 dnl By now enable_python should be "system", "internal" or "no"
10131 case $enable_python in
10135 if test "x$ac_cv_header_Python_h" != "xyes"; then
10136 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10140 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10141 AC_MSG_CHECKING([for correct python library version])
10142 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10143 #include <Python.h>
10145 int main(int argc, char **argv) {
10146 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10149 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10152 dnl FIXME Check if the Python library can be linked with, too?
10156 BUILD_TYPE="$BUILD_TYPE PYTHON"
10157 if test "$OS" = LINUX -o "$OS" = WNT ; then
10158 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10162 DISABLE_PYTHON=TRUE
10166 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10170 AC_SUBST(DISABLE_PYTHON)
10171 AC_SUBST(SYSTEM_PYTHON)
10172 AC_SUBST(PYTHON_CFLAGS)
10173 AC_SUBST(PYTHON_FOR_BUILD)
10174 AC_SUBST(PYTHON_LIBS)
10175 AC_SUBST(PYTHON_VERSION)
10176 AC_SUBST(PYTHON_VERSION_MAJOR)
10177 AC_SUBST(PYTHON_VERSION_MINOR)
10179 AC_MSG_CHECKING([whether to build LibreLogo])
10180 case "$enable_python" in
10182 AC_MSG_RESULT([no; Python disabled])
10185 if test "${enable_librelogo}" = "no"; then
10186 AC_MSG_RESULT([no])
10188 AC_MSG_RESULT([yes])
10189 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10190 AC_DEFINE([ENABLE_LIBRELOGO],1)
10194 AC_SUBST(ENABLE_LIBRELOGO)
10200 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10201 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10202 ENABLE_MARIADBC=TRUE
10203 AC_MSG_RESULT([yes])
10204 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10206 AC_MSG_RESULT([no])
10208 AC_SUBST(ENABLE_MARIADBC)
10209 AC_SUBST(MARIADBC_MAJOR)
10210 AC_SUBST(MARIADBC_MINOR)
10211 AC_SUBST(MARIADBC_MICRO)
10213 if test "$ENABLE_MARIADBC" = "TRUE"; then
10214 dnl ===================================================================
10215 dnl Check for system MariaDB
10216 dnl ===================================================================
10217 AC_MSG_CHECKING([which MariaDB to use])
10218 if test "$with_system_mariadb" = "yes"; then
10219 AC_MSG_RESULT([external])
10220 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10221 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10222 if test -z "$MARIADBCONFIG"; then
10223 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10224 if test -z "$MARIADBCONFIG"; then
10225 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10226 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10229 AC_MSG_CHECKING([MariaDB version])
10230 MARIADB_VERSION=`$MARIADBCONFIG --version`
10231 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10232 if test "$MARIADB_MAJOR" -ge "5"; then
10233 AC_MSG_RESULT([OK])
10235 AC_MSG_ERROR([too old, use 5.0.x or later])
10237 AC_MSG_CHECKING([for MariaDB Client library])
10238 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10239 if test "$COM_IS_CLANG" = TRUE; then
10240 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10242 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10243 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10244 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10246 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10247 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10248 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10249 | sed -e 's|/lib64/|/lib/|')
10251 FilterLibs "${MARIADB_LIBS}"
10252 MARIADB_LIBS="${filteredlibs}"
10253 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10254 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10255 if test "$enable_bundle_mariadb" = "yes"; then
10256 AC_MSG_RESULT([yes])
10257 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10258 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10260 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10262 /g' | grep -E '(mysqlclient|mariadb)')
10263 if test "$_os" = "Darwin"; then
10264 LIBMARIADB=${LIBMARIADB}.dylib
10265 elif test "$_os" = "WINNT"; then
10266 LIBMARIADB=${LIBMARIADB}.dll
10268 LIBMARIADB=${LIBMARIADB}.so
10270 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10271 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10272 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10273 AC_MSG_RESULT([found.])
10274 PathFormat "$LIBMARIADB_PATH"
10275 LIBMARIADB_PATH="$formatted_path"
10277 AC_MSG_ERROR([not found.])
10280 AC_MSG_RESULT([no])
10281 BUNDLE_MARIADB_CONNECTOR_C=
10284 AC_MSG_RESULT([internal])
10285 SYSTEM_MARIADB_CONNECTOR_C=
10286 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10287 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10288 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10291 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10292 AC_SUBST(MARIADB_CFLAGS)
10293 AC_SUBST(MARIADB_LIBS)
10294 AC_SUBST(LIBMARIADB)
10295 AC_SUBST(LIBMARIADB_PATH)
10296 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10299 dnl ===================================================================
10300 dnl Check for system hsqldb
10301 dnl ===================================================================
10302 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10303 AC_MSG_CHECKING([which hsqldb to use])
10304 if test "$with_system_hsqldb" = "yes"; then
10305 AC_MSG_RESULT([external])
10307 if test -z $HSQLDB_JAR; then
10308 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10310 if ! test -f $HSQLDB_JAR; then
10311 AC_MSG_ERROR(hsqldb.jar not found.)
10313 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10317 my $file = "$ENV{'HSQLDB_JAR'}";
10318 my $zip = Archive::Zip->new( $file );
10319 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10320 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10322 push @l, split(/\n/, $mf);
10323 foreach my $line (@l)
10325 if ($line =~ m/Specification-Version:/)
10327 ($t, $version) = split (/:/,$line);
10328 $version =~ s/^\s//;
10329 ($a, $b, $c, $d) = split (/\./,$version);
10330 if ($c == "0" && $d > "8")
10345 AC_MSG_RESULT([yes])
10347 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10350 AC_MSG_RESULT([internal])
10352 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10356 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10357 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10360 AC_SUBST(SYSTEM_HSQLDB)
10361 AC_SUBST(HSQLDB_JAR)
10363 dnl ===================================================================
10364 dnl Check for PostgreSQL stuff
10365 dnl ===================================================================
10366 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10367 if test "x$enable_postgresql_sdbc" != "xno"; then
10368 AC_MSG_RESULT([yes])
10369 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10371 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10372 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10374 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10375 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10378 postgres_interface=""
10379 if test "$with_system_postgresql" = "yes"; then
10380 postgres_interface="external PostgreSQL"
10381 SYSTEM_POSTGRESQL=TRUE
10382 if test "$_os" = Darwin; then
10384 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10385 pg_supp_path="$P_SEP$d$pg_supp_path"
10388 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10389 if test -n "$PGCONFIG"; then
10390 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10391 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10393 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10394 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10395 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10397 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10400 FilterLibs "${POSTGRESQL_LIB}"
10401 POSTGRESQL_LIB="${filteredlibs}"
10403 # if/when anything else than PostgreSQL uses Kerberos,
10404 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10409 # macOS has system MIT Kerberos 5 since 10.4
10410 if test "$with_krb5" != "no"; then
10413 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10414 # that the libraries where these functions are located on macOS will change, is it?
10415 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10416 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10419 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10420 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10421 KRB5_LIBS="$KRB5_LIBS $LIBS"
10424 if test "$with_gssapi" != "no"; then
10427 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10428 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10434 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10435 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10438 Linux|GNU|*BSD|DragonFly)
10439 if test "$with_krb5" != "no"; then
10442 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10443 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10446 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10447 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10448 KRB5_LIBS="$KRB5_LIBS $LIBS"
10451 if test "$with_gssapi" != "no"; then
10454 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10455 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10461 if test "$with_krb5" = "yes"; then
10464 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10465 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10468 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10469 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10470 KRB5_LIBS="$KRB5_LIBS $LIBS"
10473 if test "$with_gssapi" = "yes"; then
10476 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10477 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10483 if test -n "$with_libpq_path"; then
10484 SYSTEM_POSTGRESQL=TRUE
10485 postgres_interface="external libpq"
10486 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10487 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10490 postgres_interface="internal"
10492 POSTGRESQL_INC="%OVERRIDE_ME%"
10493 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10497 AC_MSG_CHECKING([PostgreSQL C interface])
10498 AC_MSG_RESULT([$postgres_interface])
10500 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10501 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10502 save_CFLAGS=$CFLAGS
10503 save_CPPFLAGS=$CPPFLAGS
10505 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10506 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10507 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10508 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10509 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10510 CFLAGS=$save_CFLAGS
10511 CPPFLAGS=$save_CPPFLAGS
10514 BUILD_POSTGRESQL_SDBC=TRUE
10516 AC_MSG_RESULT([no])
10518 AC_SUBST(WITH_KRB5)
10519 AC_SUBST(WITH_GSSAPI)
10520 AC_SUBST(GSSAPI_LIBS)
10521 AC_SUBST(KRB5_LIBS)
10522 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10523 AC_SUBST(SYSTEM_POSTGRESQL)
10524 AC_SUBST(POSTGRESQL_INC)
10525 AC_SUBST(POSTGRESQL_LIB)
10527 dnl ===================================================================
10528 dnl Check for Firebird stuff
10529 dnl ===================================================================
10530 ENABLE_FIREBIRD_SDBC=
10531 if test "$enable_firebird_sdbc" = "yes" ; then
10532 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10534 dnl ===================================================================
10535 dnl Check for system Firebird
10536 dnl ===================================================================
10537 AC_MSG_CHECKING([which Firebird to use])
10538 if test "$with_system_firebird" = "yes"; then
10539 AC_MSG_RESULT([external])
10540 SYSTEM_FIREBIRD=TRUE
10541 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10542 if test -z "$FIREBIRDCONFIG"; then
10543 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10544 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10545 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10547 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10549 AC_MSG_NOTICE([fb_config found])
10550 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10551 AC_MSG_CHECKING([for Firebird Client library])
10552 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10553 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10554 FilterLibs "${FIREBIRD_LIBS}"
10555 FIREBIRD_LIBS="${filteredlibs}"
10557 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10558 AC_MSG_CHECKING([Firebird version])
10559 if test -n "${FIREBIRD_VERSION}"; then
10560 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10561 if test "$FIREBIRD_MAJOR" -ge "3"; then
10562 AC_MSG_RESULT([OK])
10564 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10567 save_CFLAGS="${CFLAGS}"
10568 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10569 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10570 #if defined(FB_API_VER) && FB_API_VER == 30
10571 int fb_api_is_30(void) { return 0; }
10573 #error "Wrong Firebird API version"
10574 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10575 CFLAGS="$save_CFLAGS"
10577 ENABLE_FIREBIRD_SDBC=TRUE
10578 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10579 elif test "$enable_database_connectivity" = no; then
10580 AC_MSG_RESULT([none])
10581 elif test "$cross_compiling" = "yes"; then
10582 AC_MSG_RESULT([none])
10584 dnl Embedded Firebird has version 3.0
10585 dnl We need libatomic_ops for any non X86/X64 system
10586 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10587 dnl ===================================================================
10588 dnl Check for system libatomic_ops
10589 dnl ===================================================================
10590 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10591 if test "$with_system_libatomic_ops" = "yes"; then
10592 SYSTEM_LIBATOMIC_OPS=TRUE
10593 AC_CHECK_HEADERS(atomic_ops.h, [],
10594 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10596 SYSTEM_LIBATOMIC_OPS=
10597 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10598 LIBATOMIC_OPS_LIBS="-latomic_ops"
10599 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10603 AC_MSG_RESULT([internal])
10605 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10606 FIREBIRD_LIBS="-lfbclient"
10608 if test "$with_system_libtommath" = "yes"; then
10609 SYSTEM_LIBTOMMATH=TRUE
10610 dnl check for tommath presence
10612 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10613 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10617 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10618 LIBTOMMATH_LIBS="-ltommath"
10619 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10622 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10623 ENABLE_FIREBIRD_SDBC=TRUE
10624 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10627 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10628 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10629 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10630 AC_SUBST(LIBATOMIC_OPS_LIBS)
10631 AC_SUBST(SYSTEM_FIREBIRD)
10632 AC_SUBST(FIREBIRD_CFLAGS)
10633 AC_SUBST(FIREBIRD_LIBS)
10634 AC_SUBST(SYSTEM_LIBTOMMATH)
10635 AC_SUBST(LIBTOMMATH_CFLAGS)
10636 AC_SUBST(LIBTOMMATH_LIBS)
10638 dnl ===================================================================
10639 dnl Check for system curl
10640 dnl ===================================================================
10641 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10643 if test "$enable_curl" = "yes" -a "$with_system_curl" != "yes" -a "$with_gssapi" != "no"; then
10644 if test "$_os" != "WINNT"; then
10647 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10648 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10654 dnl ===================================================================
10655 dnl Check for system boost
10656 dnl ===================================================================
10657 AC_MSG_CHECKING([which boost to use])
10658 if test "$with_system_boost" = "yes"; then
10659 AC_MSG_RESULT([external])
10661 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10663 AX_BOOST_FILESYSTEM
10666 AC_LANG_PUSH([C++])
10667 save_CXXFLAGS=$CXXFLAGS
10668 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10669 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10670 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10671 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10672 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10673 CXXFLAGS=$save_CXXFLAGS
10675 # this is in m4/ax_boost_base.m4
10676 FilterLibs "${BOOST_LDFLAGS}"
10677 BOOST_LDFLAGS="${filteredlibs}"
10679 AC_MSG_RESULT([internal])
10680 BUILD_TYPE="$BUILD_TYPE BOOST"
10682 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10683 # use warning-suppressing wrapper headers
10684 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10686 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10689 AC_SUBST(SYSTEM_BOOST)
10691 dnl ===================================================================
10692 dnl Check for system mdds
10693 dnl ===================================================================
10694 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10695 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10697 dnl ===================================================================
10698 dnl Check for system dragonbox
10699 dnl ===================================================================
10700 AC_MSG_CHECKING([which dragonbox to use])
10701 if test "$with_system_dragonbox" = "yes"; then
10702 AC_MSG_RESULT([external])
10703 SYSTEM_DRAGONBOX=TRUE
10704 AC_LANG_PUSH([C++])
10705 save_CPPFLAGS=$CPPFLAGS
10706 # This is where upstream installs to, unfortunately no .pc or so...
10707 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10708 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10709 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10710 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10712 CPPFLAGS=$save_CPPFLAGS
10714 AC_MSG_RESULT([internal])
10715 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10718 AC_SUBST([SYSTEM_DRAGONBOX])
10719 AC_SUBST([DRAGONBOX_CFLAGS])
10721 dnl ===================================================================
10722 dnl Check for system frozen
10723 dnl ===================================================================
10724 AC_MSG_CHECKING([which frozen to use])
10725 if test "$with_system_frozen" = "yes"; then
10726 AC_MSG_RESULT([external])
10728 AC_LANG_PUSH([C++])
10729 save_CPPFLAGS=$CPPFLAGS
10730 AC_CHECK_HEADER([frozen/unordered_map.h], [],
10731 [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10733 CPPFLAGS=$save_CPPFLAGS
10735 AC_MSG_RESULT([internal])
10736 BUILD_TYPE="$BUILD_TYPE FROZEN"
10739 AC_SUBST([SYSTEM_FROZEN])
10740 AC_SUBST([FROZEN_CFLAGS])
10742 dnl ===================================================================
10743 dnl Check for system libfixmath
10744 dnl ===================================================================
10745 AC_MSG_CHECKING([which libfixmath to use])
10746 if test "$with_system_libfixmath" = "yes"; then
10747 AC_MSG_RESULT([external])
10748 SYSTEM_LIBFIXMATH=TRUE
10749 AC_LANG_PUSH([C++])
10750 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10751 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10752 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10755 AC_MSG_RESULT([internal])
10758 AC_SUBST([SYSTEM_LIBFIXMATH])
10760 dnl ===================================================================
10761 dnl Check for system glm
10762 dnl ===================================================================
10763 AC_MSG_CHECKING([which glm to use])
10764 if test "$with_system_glm" = "yes"; then
10765 AC_MSG_RESULT([external])
10767 AC_LANG_PUSH([C++])
10768 AC_CHECK_HEADER([glm/glm.hpp], [],
10769 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10772 AC_MSG_RESULT([internal])
10773 BUILD_TYPE="$BUILD_TYPE GLM"
10775 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10777 AC_SUBST([GLM_CFLAGS])
10778 AC_SUBST([SYSTEM_GLM])
10780 dnl ===================================================================
10781 dnl Check for system odbc
10782 dnl ===================================================================
10783 AC_MSG_CHECKING([which odbc headers to use])
10784 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
10785 AC_MSG_RESULT([external])
10786 SYSTEM_ODBC_HEADERS=TRUE
10788 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10789 save_CPPFLAGS=$CPPFLAGS
10791 PathFormat "$winsdktest"
10792 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"
10793 AC_CHECK_HEADER(sqlext.h, [],
10794 [AC_MSG_ERROR(odbc not found. install odbc)],
10795 [#include <windows.h>])
10796 CPPFLAGS=$save_CPPFLAGS
10798 AC_CHECK_HEADER(sqlext.h, [],
10799 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10801 elif test "$enable_database_connectivity" = no; then
10802 AC_MSG_RESULT([none])
10804 AC_MSG_RESULT([internal])
10805 SYSTEM_ODBC_HEADERS=
10806 BUILD_TYPE="$BUILD_TYPE IODBC"
10808 AC_SUBST(SYSTEM_ODBC_HEADERS)
10810 dnl ===================================================================
10811 dnl Check for system NSS
10812 dnl ===================================================================
10813 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10814 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10815 AC_DEFINE(HAVE_FEATURE_NSS)
10817 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10820 AC_SUBST(ENABLE_NSS)
10822 dnl ===================================================================
10823 dnl Enable LDAP support
10824 dnl ===================================================================
10826 if test "$test_openldap" = yes; then
10827 AC_MSG_CHECKING([whether to enable LDAP support])
10828 if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10829 AC_MSG_RESULT([yes])
10832 if test "$enable_ldap" != "yes"; then
10833 AC_MSG_RESULT([no])
10835 AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10839 dnl ===================================================================
10840 dnl Check for system openldap
10841 dnl ===================================================================
10843 if test "$ENABLE_LDAP" = TRUE; then
10844 AC_MSG_CHECKING([which openldap library to use])
10845 if test "$with_system_openldap" = yes; then
10846 AC_MSG_RESULT([external])
10847 SYSTEM_OPENLDAP=TRUE
10848 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10849 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10850 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10852 AC_MSG_RESULT([internal])
10853 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10858 AC_SUBST(ENABLE_LDAP)
10859 AC_SUBST(SYSTEM_OPENLDAP)
10861 dnl ===================================================================
10862 dnl Check for TLS/SSL and cryptographic implementation to use
10863 dnl ===================================================================
10864 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10865 if test -n "$with_tls"; then
10868 AC_DEFINE(USE_TLS_OPENSSL)
10870 AC_MSG_RESULT([$TLS])
10872 if test "$enable_openssl" != "yes"; then
10873 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10876 # warn that OpenSSL has been selected but not all TLS code has this option
10877 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10878 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10881 AC_DEFINE(USE_TLS_NSS)
10883 AC_MSG_RESULT([$TLS])
10886 AC_MSG_RESULT([none])
10887 AC_MSG_WARN([Skipping TLS/SSL])
10891 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10893 nss - Mozilla's Network Security Services (NSS)
10898 # default to using NSS, it results in smaller oox lib
10899 AC_DEFINE(USE_TLS_NSS)
10901 AC_MSG_RESULT([$TLS])
10905 dnl ===================================================================
10906 dnl Check for system sane
10907 dnl ===================================================================
10908 AC_MSG_CHECKING([which sane header to use])
10909 if test "$with_system_sane" = "yes"; then
10910 AC_MSG_RESULT([external])
10911 AC_CHECK_HEADER(sane/sane.h, [],
10912 [AC_MSG_ERROR(sane not found. install sane)], [])
10914 AC_MSG_RESULT([internal])
10915 BUILD_TYPE="$BUILD_TYPE SANE"
10918 dnl ===================================================================
10919 dnl Check for system icu
10920 dnl ===================================================================
10923 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10924 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10925 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10926 if test "$SYSTEM_ICU" = TRUE; then
10927 AC_LANG_PUSH([C++])
10928 AC_MSG_CHECKING([for unicode/rbbi.h])
10929 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10932 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10933 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10934 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10936 if test "$CROSS_COMPILING" != TRUE; then
10937 # using the system icu tools can lead to version confusion, use the
10938 # ones from the build environment when cross-compiling
10939 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10940 if test -z "$SYSTEM_GENBRK"; then
10941 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10943 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10944 if test -z "$SYSTEM_GENCCODE"; then
10945 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10947 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10948 if test -z "$SYSTEM_GENCMN"; then
10949 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10954 AC_SUBST(SYSTEM_GENBRK)
10955 AC_SUBST(SYSTEM_GENCCODE)
10956 AC_SUBST(SYSTEM_GENCMN)
10957 AC_SUBST(ICU_MAJOR)
10958 AC_SUBST(ICU_MINOR)
10960 dnl ==================================================================
10962 dnl ==================================================================
10963 if test "$enable_curl" = "yes"; then
10964 AC_DEFINE([HAVE_FEATURE_CURL])
10967 dnl ==================================================================
10969 dnl ==================================================================
10970 DEFAULT_CRASHDUMP_VALUE="true"
10971 AC_MSG_CHECKING([whether to enable breakpad])
10972 if test "$enable_breakpad" != yes; then
10973 AC_MSG_RESULT([no])
10975 if test "$enable_curl" != "yes"; then
10976 AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10978 AC_MSG_RESULT([yes])
10979 ENABLE_BREAKPAD="TRUE"
10980 AC_DEFINE(ENABLE_BREAKPAD)
10981 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10982 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10984 AC_MSG_CHECKING([for disable crash dump])
10985 if test "$enable_crashdump" = no; then
10986 DEFAULT_CRASHDUMP_VALUE="false"
10987 AC_MSG_RESULT([yes])
10989 AC_MSG_RESULT([no])
10992 AC_MSG_CHECKING([for crashreport config])
10993 if test "$with_symbol_config" = "no"; then
10994 BREAKPAD_SYMBOL_CONFIG="invalid"
10995 AC_MSG_RESULT([no])
10997 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10998 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10999 AC_MSG_RESULT([yes])
11001 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
11003 AC_SUBST(ENABLE_BREAKPAD)
11004 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
11006 dnl ==================================================================
11008 dnl ==================================================================
11009 if test "$enable_libcmis" = "yes"; then
11010 if test "$enable_curl" != "yes"; then
11011 AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
11015 dnl ===================================================================
11017 dnl ===================================================================
11018 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
11019 if test "$with_system_orcus" != "yes"; then
11020 if test "$SYSTEM_BOOST" = "TRUE"; then
11021 dnl Link with Boost.System
11022 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
11023 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
11024 dnl in documentation has no effect.
11028 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
11029 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
11030 AC_SUBST([BOOST_SYSTEM_LIB])
11031 AC_SUBST(SYSTEM_LIBORCUS)
11033 dnl ===================================================================
11035 dnl ===================================================================
11036 harfbuzz_required_version=5.1.0
11038 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
11039 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
11042 GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
11043 HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
11046 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
11047 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
11050 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
11051 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
11053 if test "$COM" = "MSC"; then # override the above
11054 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
11055 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
11058 if test "$with_system_harfbuzz" = "yes"; then
11059 if test "$with_system_graphite" = "no"; then
11060 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
11062 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
11064 save_CFLAGS="$CFLAGS"
11065 LIBS="$LIBS $HARFBUZZ_LIBS"
11066 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
11067 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
11069 CFLAGS="$save_CFLAGS"
11071 if test "$with_system_graphite" = "yes"; then
11072 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
11076 if test "$USING_X11" = TRUE; then
11079 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11081 if test -z "$x_includes"; then
11082 x_includes="default_x_includes"
11084 if test -z "$x_libraries"; then
11085 x_libraries="default_x_libraries"
11087 CFLAGS="$CFLAGS $X_CFLAGS"
11088 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11089 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11091 x_includes="no_x_includes"
11092 x_libraries="no_x_libraries"
11095 if test "$USING_X11" = TRUE; then
11096 dnl ===================================================================
11097 dnl Check for extension headers
11098 dnl ===================================================================
11099 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11100 [#include <X11/extensions/shape.h>])
11102 # vcl needs ICE and SM
11103 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11104 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11105 [AC_MSG_ERROR(ICE library not found)])
11106 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11107 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11108 [AC_MSG_ERROR(SM library not found)])
11111 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11112 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11113 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11116 dnl ===================================================================
11117 dnl Check for system Xrender
11118 dnl ===================================================================
11119 AC_MSG_CHECKING([whether to use Xrender])
11120 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
11121 AC_MSG_RESULT([yes])
11122 PKG_CHECK_MODULES(XRENDER, xrender)
11123 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11124 FilterLibs "${XRENDER_LIBS}"
11125 XRENDER_LIBS="${filteredlibs}"
11126 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11127 [AC_MSG_ERROR(libXrender not found or functional)], [])
11128 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11129 [AC_MSG_ERROR(Xrender not found. install X)], [])
11131 AC_MSG_RESULT([no])
11133 AC_SUBST(XRENDER_CFLAGS)
11134 AC_SUBST(XRENDER_LIBS)
11136 dnl ===================================================================
11137 dnl Check for XRandr
11138 dnl ===================================================================
11139 AC_MSG_CHECKING([whether to enable RandR support])
11140 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11141 AC_MSG_RESULT([yes])
11142 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11143 if test "$ENABLE_RANDR" != "TRUE"; then
11144 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11145 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11147 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11148 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11149 XRANDR_LIBS="-lXrandr "
11150 ENABLE_RANDR="TRUE"
11152 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11153 FilterLibs "${XRANDR_LIBS}"
11154 XRANDR_LIBS="${filteredlibs}"
11157 AC_MSG_RESULT([no])
11159 AC_SUBST(XRANDR_CFLAGS)
11160 AC_SUBST(XRANDR_LIBS)
11161 AC_SUBST(ENABLE_RANDR)
11163 if test -z "$with_webdav"; then
11164 with_webdav=$test_webdav
11167 AC_MSG_CHECKING([for WebDAV support])
11168 case "$with_webdav" in
11170 AC_MSG_RESULT([no])
11174 AC_MSG_RESULT([yes])
11175 # curl is already mandatory (almost) and checked elsewhere
11176 if test "$enable_curl" = "no"; then
11177 AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11182 AC_SUBST(WITH_WEBDAV)
11184 dnl ===================================================================
11185 dnl Check for disabling cve_tests
11186 dnl ===================================================================
11187 AC_MSG_CHECKING([whether to execute CVE tests])
11188 if test "$enable_cve_tests" = "no"; then
11189 AC_MSG_RESULT([no])
11190 DISABLE_CVE_TESTS=TRUE
11191 AC_SUBST(DISABLE_CVE_TESTS)
11193 AC_MSG_RESULT([yes])
11196 dnl ===================================================================
11197 dnl Check for system openssl
11198 dnl ===================================================================
11200 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11201 if test "$enable_openssl" = "yes"; then
11202 AC_MSG_RESULT([no])
11203 ENABLE_OPENSSL=TRUE
11204 if test "$_os" = Darwin ; then
11205 # OpenSSL is deprecated when building for 10.7 or later.
11207 # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11208 # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11210 with_system_openssl=no
11211 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11212 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11213 && test "$with_system_openssl" != "no"; then
11214 with_system_openssl=yes
11215 SYSTEM_OPENSSL=TRUE
11217 OPENSSL_LIBS="-lssl -lcrypto"
11219 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11220 if test -n "${SYSTEM_OPENSSL}"; then
11221 AC_DEFINE([SYSTEM_OPENSSL])
11224 if test "$with_system_openssl" = "yes"; then
11225 AC_MSG_CHECKING([whether openssl supports SHA512])
11227 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11228 SHA512_CTX context;
11229 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11233 AC_MSG_RESULT([yes])
11235 # warn that although OpenSSL is disabled, system libraries may depend on it
11236 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11237 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11240 AC_SUBST([ENABLE_OPENSSL])
11242 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11243 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11244 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11245 enable_cipher_openssl_backend=no
11247 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11250 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11251 ENABLE_CIPHER_OPENSSL_BACKEND=
11252 if test "$enable_cipher_openssl_backend" = yes; then
11253 AC_MSG_RESULT([yes])
11254 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11256 AC_MSG_RESULT([no])
11258 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11260 dnl ===================================================================
11261 dnl Select the crypto backends used by LO
11262 dnl ===================================================================
11264 if test "$build_crypto" = yes; then
11265 if test "$OS" = WNT; then
11266 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11267 AC_DEFINE([USE_CRYPTO_MSCAPI])
11268 elif test "$ENABLE_NSS" = TRUE; then
11269 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11270 AC_DEFINE([USE_CRYPTO_NSS])
11274 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11275 if test "$COM" = "MSC"; then
11276 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11278 ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11280 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11282 dnl ===================================================================
11283 dnl Check for system redland
11284 dnl ===================================================================
11285 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11286 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11287 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11288 if test "$with_system_redland" = "yes"; then
11289 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11290 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11296 AC_SUBST(RAPTOR_MAJOR)
11297 AC_SUBST(RASQAL_MAJOR)
11298 AC_SUBST(REDLAND_MAJOR)
11300 dnl ===================================================================
11301 dnl Check for system hunspell
11302 dnl ===================================================================
11303 AC_MSG_CHECKING([which libhunspell to use])
11304 if test "$with_system_hunspell" = "yes"; then
11305 AC_MSG_RESULT([external])
11306 SYSTEM_HUNSPELL=TRUE
11307 AC_LANG_PUSH([C++])
11308 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11309 if test "$HUNSPELL_PC" != "TRUE"; then
11310 AC_CHECK_HEADER(hunspell.hxx, [],
11312 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11313 [AC_MSG_ERROR(hunspell headers not found.)], [])
11315 AC_CHECK_LIB([hunspell], [main], [:],
11316 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11317 HUNSPELL_LIBS=-lhunspell
11320 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11321 FilterLibs "${HUNSPELL_LIBS}"
11322 HUNSPELL_LIBS="${filteredlibs}"
11324 AC_MSG_RESULT([internal])
11326 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11327 if test "$COM" = "MSC"; then
11328 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11330 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11332 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11334 AC_SUBST(SYSTEM_HUNSPELL)
11335 AC_SUBST(HUNSPELL_CFLAGS)
11336 AC_SUBST(HUNSPELL_LIBS)
11338 dnl ===================================================================
11339 dnl Check for system zxcvbn
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([which zxcvbn to use])
11342 if test "$with_system_zxcvbn" = "yes"; then
11343 AC_MSG_RESULT([external])
11345 AC_CHECK_HEADER(zxcvbn.h, [],
11346 [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11347 AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11348 [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11350 AC_MSG_RESULT([internal])
11351 BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11354 AC_SUBST(SYSTEM_ZXCVBN)
11356 dnl ===================================================================
11357 dnl Check for system zxing
11358 dnl ===================================================================
11359 AC_MSG_CHECKING([whether to use zxing])
11360 if test "$enable_zxing" = "no"; then
11361 AC_MSG_RESULT([no])
11365 AC_MSG_RESULT([yes])
11367 AC_MSG_CHECKING([which libzxing to use])
11368 if test "$with_system_zxing" = "yes"; then
11369 AC_MSG_RESULT([external])
11372 AC_LANG_PUSH([C++])
11373 save_CXXFLAGS=$CXXFLAGS
11376 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11377 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11378 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11379 dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11380 dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11381 dnl unsetting IFS."):
11383 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11384 dnl ignore them here:
11385 if test -z "$i"; then
11388 dnl TODO: White space in $i would cause problems:
11389 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11390 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11391 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11393 CXXFLAGS=$save_CXXFLAGS
11394 if test -z "$ZXING_CFLAGS"; then
11395 AC_MSG_ERROR(zxing headers not found.)
11397 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11398 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11399 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11401 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11402 FilterLibs "${ZXING_LIBS}"
11403 ZXING_LIBS="${filteredlibs}"
11405 AC_MSG_RESULT([internal])
11407 BUILD_TYPE="$BUILD_TYPE ZXING"
11408 ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11410 if test "$ENABLE_ZXING" = TRUE; then
11411 AC_DEFINE(ENABLE_ZXING)
11413 AC_MSG_CHECKING([whether zxing::tosvg function is available])
11414 AC_LANG_PUSH([C++])
11415 save_CXXFLAGS=$CXXFLAGS
11416 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11417 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11418 #include <BitMatrix.h>
11419 #include <BitMatrixIO.h>
11421 ZXing::BitMatrix matrix(1, 1);
11422 matrix.set(0, 0, true);
11423 ZXing::ToSVG(matrix);
11427 AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11428 AC_MSG_RESULT([yes])
11429 ], [AC_MSG_RESULT([no])])
11430 CXXFLAGS=$save_CXXFLAGS
11432 AC_SUBST(HAVE_ZXING_TOSVG)
11434 AC_SUBST(SYSTEM_ZXING)
11435 AC_SUBST(ENABLE_ZXING)
11436 AC_SUBST(ZXING_CFLAGS)
11437 AC_SUBST(ZXING_LIBS)
11439 dnl ===================================================================
11440 dnl Check for system box2d
11441 dnl ===================================================================
11442 AC_MSG_CHECKING([which box2d to use])
11443 if test "$with_system_box2d" = "yes"; then
11444 AC_MSG_RESULT([external])
11446 AC_LANG_PUSH([C++])
11447 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11448 [BOX2D_H_FOUND='FALSE'])
11449 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11451 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11453 # fail this. there's no other alternative to check when we are here.
11454 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11455 [AC_MSG_ERROR(box2d headers not found.)])
11457 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11459 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11460 [ AC_MSG_ERROR(box2d library not found.) ], [])
11461 BOX2D_LIBS=-l$_BOX2D_LIB
11463 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11464 FilterLibs "${BOX2D_LIBS}"
11465 BOX2D_LIBS="${filteredlibs}"
11467 AC_MSG_RESULT([internal])
11469 BUILD_TYPE="$BUILD_TYPE BOX2D"
11471 AC_SUBST(SYSTEM_BOX2D)
11472 AC_SUBST(BOX2D_CFLAGS)
11473 AC_SUBST(BOX2D_LIBS)
11475 dnl ===================================================================
11476 dnl Checking for altlinuxhyph
11477 dnl ===================================================================
11478 AC_MSG_CHECKING([which altlinuxhyph to use])
11479 if test "$with_system_altlinuxhyph" = "yes"; then
11480 AC_MSG_RESULT([external])
11482 AC_CHECK_HEADER(hyphen.h, [],
11483 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11484 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11485 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11486 [#include <hyphen.h>])
11487 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11488 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11489 if test -z "$HYPHEN_LIB"; then
11490 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11491 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11493 if test -z "$HYPHEN_LIB"; then
11494 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11495 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11498 AC_MSG_RESULT([internal])
11500 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11501 if test "$COM" = "MSC"; then
11502 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11504 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11507 AC_SUBST(SYSTEM_HYPH)
11508 AC_SUBST(HYPHEN_LIB)
11510 dnl ===================================================================
11511 dnl Checking for mythes
11512 dnl ===================================================================
11513 AC_MSG_CHECKING([which mythes to use])
11514 if test "$with_system_mythes" = "yes"; then
11515 AC_MSG_RESULT([external])
11517 AC_LANG_PUSH([C++])
11518 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11519 if test "$MYTHES_PKGCONFIG" = "no"; then
11520 AC_CHECK_HEADER(mythes.hxx, [],
11521 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11522 AC_CHECK_LIB([mythes-1.2], [main], [:],
11523 [ MYTHES_FOUND=no], [])
11524 if test "$MYTHES_FOUND" = "no"; then
11525 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11526 [ MYTHES_FOUND=no], [])
11528 if test "$MYTHES_FOUND" = "no"; then
11529 AC_MSG_ERROR([mythes library not found!.])
11533 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11534 FilterLibs "${MYTHES_LIBS}"
11535 MYTHES_LIBS="${filteredlibs}"
11537 AC_MSG_RESULT([internal])
11539 BUILD_TYPE="$BUILD_TYPE MYTHES"
11540 if test "$COM" = "MSC"; then
11541 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11543 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11546 AC_SUBST(SYSTEM_MYTHES)
11547 AC_SUBST(MYTHES_CFLAGS)
11548 AC_SUBST(MYTHES_LIBS)
11550 dnl ===================================================================
11551 dnl How should we build the linear programming solver ?
11552 dnl ===================================================================
11555 AC_MSG_CHECKING([whether to build with CoinMP])
11556 if test "$enable_coinmp" != "no"; then
11558 AC_MSG_RESULT([yes])
11559 if test "$with_system_coinmp" = "yes"; then
11561 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11562 FilterLibs "${COINMP_LIBS}"
11563 COINMP_LIBS="${filteredlibs}"
11565 BUILD_TYPE="$BUILD_TYPE COINMP"
11568 AC_MSG_RESULT([no])
11570 AC_SUBST(ENABLE_COINMP)
11571 AC_SUBST(SYSTEM_COINMP)
11572 AC_SUBST(COINMP_CFLAGS)
11573 AC_SUBST(COINMP_LIBS)
11576 AC_MSG_CHECKING([whether to build with lpsolve])
11577 if test "$enable_lpsolve" != "no"; then
11578 ENABLE_LPSOLVE=TRUE
11579 AC_MSG_RESULT([yes])
11581 AC_MSG_RESULT([no])
11583 AC_SUBST(ENABLE_LPSOLVE)
11585 if test "$ENABLE_LPSOLVE" = TRUE; then
11586 AC_MSG_CHECKING([which lpsolve to use])
11587 if test "$with_system_lpsolve" = "yes"; then
11588 AC_MSG_RESULT([external])
11589 SYSTEM_LPSOLVE=TRUE
11590 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11591 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11593 # some systems need this. Like Ubuntu...
11594 AC_CHECK_LIB(m, floor)
11595 AC_CHECK_LIB(dl, dlopen)
11596 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11597 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11600 AC_MSG_RESULT([internal])
11602 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11605 AC_SUBST(SYSTEM_LPSOLVE)
11607 dnl ===================================================================
11608 dnl Checking for libexttextcat
11609 dnl ===================================================================
11610 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11611 if test "$with_system_libexttextcat" = "yes"; then
11612 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11614 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11616 dnl ===================================================================
11617 dnl Checking for libnumbertext
11618 dnl ===================================================================
11619 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11620 if test "$with_system_libnumbertext" = "yes"; then
11621 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11622 SYSTEM_LIBNUMBERTEXT=YES
11624 SYSTEM_LIBNUMBERTEXT=
11626 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11627 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11629 dnl ***************************************
11630 dnl testing libc version for Linux...
11631 dnl ***************************************
11632 if test "$_os" = "Linux"; then
11633 AC_MSG_CHECKING([whether the libc is recent enough])
11634 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11635 #include <features.h>
11636 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11637 #error glibc >= 2.1 is required
11639 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11642 dnl =========================================
11643 dnl Check for uuidgen
11644 dnl =========================================
11645 if test "$_os" = "WINNT"; then
11646 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11647 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11648 UUIDGEN=uuidgen.exe
11651 AC_PATH_PROG([UUIDGEN], [uuidgen])
11652 if test -z "$UUIDGEN"; then
11653 AC_MSG_WARN([uuid is needed for building installation sets])
11657 dnl ***************************************
11658 dnl Checking for bison and flex
11659 dnl ***************************************
11660 AC_PATH_PROG(BISON, bison)
11661 if test -z "$BISON"; then
11662 AC_MSG_ERROR([no bison found in \$PATH, install it])
11664 AC_MSG_CHECKING([the bison version])
11665 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11666 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11667 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11670 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]
11671 dnl typedef union YYSTYPE
11674 dnl while at least 3.4.1 is know to be good:
11675 if test "$COMPILER_PLUGINS" = TRUE; then
11676 if test "$_bison_longver" -lt 2004; then
11677 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11680 if test "$_bison_longver" -lt 2000; then
11681 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11687 AC_PATH_PROG(FLEX, flex)
11688 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11689 FLEX=`cygpath -m $FLEX`
11691 if test -z "$FLEX"; then
11692 AC_MSG_ERROR([no flex found in \$PATH, install it])
11694 AC_MSG_CHECKING([the flex version])
11695 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11696 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11697 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11702 AC_PATH_PROG(DIFF, diff)
11703 if test -z "$DIFF"; then
11704 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11708 AC_PATH_PROG(UNIQ, uniq)
11709 if test -z "$UNIQ"; then
11710 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11714 dnl ***************************************
11715 dnl Checking for patch
11716 dnl ***************************************
11717 AC_PATH_PROG(PATCH, patch)
11718 if test -z "$PATCH"; then
11719 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11722 dnl On Solaris or macOS, check if --with-gnu-patch was used
11723 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11724 if test -z "$with_gnu_patch"; then
11727 if test -x "$with_gnu_patch"; then
11728 GNUPATCH=$with_gnu_patch
11730 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11734 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11735 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11736 AC_MSG_RESULT([yes])
11738 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11739 AC_MSG_RESULT([no, but accepted (Apple patch)])
11740 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11742 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11749 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11750 GNUPATCH=`cygpath -m $GNUPATCH`
11753 dnl We also need to check for --with-gnu-cp
11755 if test -z "$with_gnu_cp"; then
11756 # check the place where the good stuff is hidden on Solaris...
11757 if test -x /usr/gnu/bin/cp; then
11758 GNUCP=/usr/gnu/bin/cp
11760 AC_PATH_PROGS(GNUCP, gnucp cp)
11762 if test -z $GNUCP; then
11763 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11766 if test -x "$with_gnu_cp"; then
11769 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11773 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11774 GNUCP=`cygpath -m $GNUCP`
11777 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11778 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11779 AC_MSG_RESULT([yes])
11780 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11781 AC_MSG_RESULT([yes])
11783 case "$build_os" in
11784 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11787 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11790 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11799 dnl ***************************************
11800 dnl testing assembler path
11801 dnl ***************************************
11803 if test "$_os" = "WINNT"; then
11804 case "$WIN_HOST_ARCH" in
11805 x86) assembler=ml.exe ;;
11806 x64) assembler=ml64.exe ;;
11807 arm64) assembler=armasm64.exe ;;
11810 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11811 if test -f "$MSVC_HOST_PATH/$assembler"; then
11812 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11813 AC_MSG_RESULT([$ML_EXE])
11815 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11821 dnl ===================================================================
11822 dnl We need zip and unzip
11823 dnl ===================================================================
11824 AC_PATH_PROG(ZIP, zip)
11825 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11826 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11827 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],,)
11830 AC_PATH_PROG(UNZIP, unzip)
11831 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11833 dnl ===================================================================
11834 dnl Zip must be a specific type for different build types.
11835 dnl ===================================================================
11836 if test $build_os = cygwin; then
11837 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11838 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11842 dnl ===================================================================
11843 dnl We need touch with -h option support.
11844 dnl ===================================================================
11845 AC_PATH_PROG(TOUCH, touch)
11846 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11847 touch "$WARNINGS_FILE"
11848 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11849 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],,)
11852 dnl ===================================================================
11853 dnl Check for system epoxy
11854 dnl ===================================================================
11855 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11856 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11858 dnl ===================================================================
11859 dnl Show which vclplugs will be built.
11860 dnl ===================================================================
11863 libo_ENABLE_VCLPLUG([gen])
11864 libo_ENABLE_VCLPLUG([gtk3])
11865 libo_ENABLE_VCLPLUG([gtk3_kde5])
11866 libo_ENABLE_VCLPLUG([gtk4])
11867 libo_ENABLE_VCLPLUG([kf5])
11868 libo_ENABLE_VCLPLUG([kf6])
11869 libo_ENABLE_VCLPLUG([qt5])
11870 libo_ENABLE_VCLPLUG([qt6])
11872 if test "$_os" = "WINNT"; then
11874 elif test "$_os" = "Darwin"; then
11876 elif test "$_os" = "iOS"; then
11878 elif test "$_os" = Android; then
11882 build_vcl_plugins="$R"
11883 if test -z "$build_vcl_plugins"; then
11884 build_vcl_plugins=" none"
11886 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11888 AC_SUBST([VCL_PLUGIN_INFO])
11890 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11891 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11894 dnl ===================================================================
11895 dnl Check for GTK libraries
11896 dnl ===================================================================
11900 ENABLE_GTKTILEDVIEWER=""
11901 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11902 if test "$with_system_cairo" = no; then
11903 add_warning 'Non-system cairo combined with gtk3 is known to cause trouble (eg. broken image in the splashscreen). Use --with-system-cairo unless you know what you are doing.'
11905 : ${with_system_cairo:=yes}
11906 PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 atk >= 2.28.1 cairo)
11907 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11908 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11909 FilterLibs "${GTK3_LIBS}"
11910 GTK3_LIBS="${filteredlibs}"
11912 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11913 if test "$with_system_epoxy" != "yes"; then
11914 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11915 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11916 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11918 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11919 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11920 if test "$build_os" = "cygwin"; then
11921 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11922 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11925 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11926 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11927 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11928 FilterLibs "${GTK3_LIBS}"
11929 GTK3_LIBS="${filteredlibs}"
11930 ENABLE_GTKTILEDVIEWER="yes"
11932 AC_SUBST(GTK3_LIBS)
11933 AC_SUBST(GTK3_CFLAGS)
11934 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11938 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11939 if test "$with_system_cairo" = no; then
11940 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11942 : ${with_system_cairo:=yes}
11943 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11944 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11945 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11946 FilterLibs "${GTK4_LIBS}"
11947 GTK4_LIBS="${filteredlibs}"
11949 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11950 if test "$with_system_epoxy" != "yes"; then
11951 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11952 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11953 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11956 AC_SUBST(GTK4_LIBS)
11957 AC_SUBST(GTK4_CFLAGS)
11959 if test "$enable_introspection" = yes; then
11960 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11961 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11963 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11967 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11968 if ! test "$ENABLE_GTK3" = TRUE; then
11969 if test "$enable_atspi_tests" = yes; then
11970 AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11972 enable_atspi_tests=no
11974 if ! test "$enable_atspi_tests" = no; then
11975 AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11976 if ! test "$XVFB_RUN" = no; then
11977 dnl make sure the found xvfb-run actually works
11978 AC_MSG_CHECKING([whether $XVFB_RUN works...])
11979 if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11980 AC_MSG_RESULT([yes])
11982 AC_MSG_RESULT([no])
11986 if test "$XVFB_RUN" = no; then
11987 if test "$enable_atspi_tests" = yes; then
11988 AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11990 enable_atspi_tests=no
11993 if ! test "$enable_atspi_tests" = no; then
11994 AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11995 if test "$DBUS_LAUNCH" = no; then
11996 if test "$enable_atspi_tests" = yes; then
11997 AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11999 enable_atspi_tests=no
12002 if ! test "$enable_atspi_tests" = no; then
12003 PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
12004 [if test "$enable_atspi_tests" = yes; then
12005 AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
12007 enable_atspi_tests=no
12010 if ! test "x$enable_atspi_tests" = xno; then
12011 PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
12012 [have_atspi_scroll_to=1],
12013 [have_atspi_scroll_to=0])
12014 AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
12015 [Whether AT-SPI2 has the scrollTo API])
12017 ENABLE_ATSPI_TESTS=
12018 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
12019 AC_SUBST([ENABLE_ATSPI_TESTS])
12021 dnl ===================================================================
12022 dnl check for dbus support
12023 dnl ===================================================================
12027 DBUS_GLIB_CFLAGS=""
12031 if test "$enable_dbus" = "no"; then
12035 AC_MSG_CHECKING([whether to enable DBUS support])
12036 if test "$test_dbus" = "yes"; then
12038 AC_MSG_RESULT([yes])
12039 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
12040 AC_DEFINE(ENABLE_DBUS)
12041 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12042 FilterLibs "${DBUS_LIBS}"
12043 DBUS_LIBS="${filteredlibs}"
12045 # Glib is needed for BluetoothServer
12046 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
12047 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
12049 DBUS_HAVE_GLIB="TRUE"
12050 AC_DEFINE(DBUS_HAVE_GLIB,1)
12052 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
12055 AC_MSG_RESULT([no])
12058 AC_SUBST(ENABLE_DBUS)
12059 AC_SUBST(DBUS_CFLAGS)
12060 AC_SUBST(DBUS_LIBS)
12061 AC_SUBST(DBUS_GLIB_CFLAGS)
12062 AC_SUBST(DBUS_GLIB_LIBS)
12063 AC_SUBST(DBUS_HAVE_GLIB)
12065 AC_MSG_CHECKING([whether to enable Impress remote control])
12066 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12067 AC_MSG_RESULT([yes])
12068 ENABLE_SDREMOTE=TRUE
12069 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
12071 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12073 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12074 # The Bluetooth code doesn't compile with macOS SDK 10.15
12075 if test "$enable_sdremote_bluetooth" = yes; then
12076 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12078 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12079 enable_sdremote_bluetooth=no
12081 # If not explicitly enabled or disabled, default
12082 if test -z "$enable_sdremote_bluetooth"; then
12085 # Default to yes for these
12086 enable_sdremote_bluetooth=yes
12090 enable_sdremote_bluetooth=no
12094 # $enable_sdremote_bluetooth is guaranteed non-empty now
12096 if test "$enable_sdremote_bluetooth" != "no"; then
12097 if test "$OS" = "LINUX"; then
12098 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12099 AC_MSG_RESULT([yes])
12100 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12101 dnl ===================================================================
12102 dnl Check for system bluez
12103 dnl ===================================================================
12104 AC_MSG_CHECKING([which Bluetooth header to use])
12105 if test "$with_system_bluez" = "yes"; then
12106 AC_MSG_RESULT([external])
12107 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12108 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12111 AC_MSG_RESULT([internal])
12115 AC_MSG_RESULT([no, dbus disabled])
12116 ENABLE_SDREMOTE_BLUETOOTH=
12120 AC_MSG_RESULT([yes])
12121 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12123 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12124 <key>com.apple.security.device.bluetooth</key>
12128 AC_MSG_RESULT([no])
12129 ENABLE_SDREMOTE_BLUETOOTH=
12135 AC_MSG_RESULT([no])
12137 AC_SUBST(ENABLE_SDREMOTE)
12138 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12139 AC_SUBST(SDREMOTE_ENTITLEMENT)
12140 AC_SUBST(SYSTEM_BLUEZ)
12142 dnl ===================================================================
12143 dnl Check whether to enable GIO support
12144 dnl ===================================================================
12145 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12146 AC_MSG_CHECKING([whether to enable GIO support])
12147 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12148 dnl Need at least 2.26 for the dbus support.
12149 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12150 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12151 if test "$ENABLE_GIO" = "TRUE"; then
12152 AC_DEFINE(ENABLE_GIO)
12153 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12154 FilterLibs "${GIO_LIBS}"
12155 GIO_LIBS="${filteredlibs}"
12158 AC_MSG_RESULT([no])
12161 AC_SUBST(ENABLE_GIO)
12162 AC_SUBST(GIO_CFLAGS)
12166 dnl ===================================================================
12168 SPLIT_APP_MODULES=""
12169 if test "$enable_split_app_modules" = "yes"; then
12170 SPLIT_APP_MODULES="TRUE"
12172 AC_SUBST(SPLIT_APP_MODULES)
12174 SPLIT_OPT_FEATURES=""
12175 if test "$enable_split_opt_features" = "yes"; then
12176 SPLIT_OPT_FEATURES="TRUE"
12178 AC_SUBST(SPLIT_OPT_FEATURES)
12180 dnl ===================================================================
12181 dnl Check whether the GStreamer libraries are available.
12182 dnl ===================================================================
12184 ENABLE_GSTREAMER_1_0=""
12186 if test "$test_gstreamer_1_0" = yes; then
12188 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12189 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12190 ENABLE_GSTREAMER_1_0="TRUE"
12191 AC_MSG_RESULT([yes])
12192 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12193 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12194 FilterLibs "${GSTREAMER_1_0_LIBS}"
12195 GSTREAMER_1_0_LIBS="${filteredlibs}"
12196 AC_DEFINE(ENABLE_GSTREAMER_1_0)
12198 AC_MSG_RESULT([no])
12201 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12202 AC_SUBST(GSTREAMER_1_0_LIBS)
12203 AC_SUBST(ENABLE_GSTREAMER_1_0)
12205 ENABLE_OPENGL_TRANSITIONS=
12206 ENABLE_OPENGL_CANVAS=
12207 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12209 elif test "$_os" = "Darwin"; then
12210 # We use frameworks on macOS, no need for detail checks
12211 ENABLE_OPENGL_TRANSITIONS=TRUE
12212 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12213 ENABLE_OPENGL_CANVAS=TRUE
12214 elif test $_os = WINNT; then
12215 ENABLE_OPENGL_TRANSITIONS=TRUE
12216 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12217 ENABLE_OPENGL_CANVAS=TRUE
12219 if test "$USING_X11" = TRUE; then
12220 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12221 ENABLE_OPENGL_TRANSITIONS=TRUE
12222 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12223 ENABLE_OPENGL_CANVAS=TRUE
12227 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12228 AC_SUBST(ENABLE_OPENGL_CANVAS)
12230 dnl =================================================
12231 dnl Check whether to build with OpenCL support.
12232 dnl =================================================
12234 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12235 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12236 # platform (optional at run-time, used through clew).
12237 BUILD_TYPE="$BUILD_TYPE OPENCL"
12238 AC_DEFINE(HAVE_FEATURE_OPENCL)
12241 dnl =================================================
12242 dnl Check whether to build with dconf support.
12243 dnl =================================================
12245 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12246 PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12247 if test "$enable_dconf" = yes; then
12248 AC_MSG_ERROR([dconf not found])
12253 AC_MSG_CHECKING([whether to enable dconf])
12254 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12258 AC_MSG_RESULT([no])
12261 AC_DEFINE(ENABLE_DCONF)
12262 AC_MSG_RESULT([yes])
12264 AC_SUBST([DCONF_CFLAGS])
12265 AC_SUBST([DCONF_LIBS])
12266 AC_SUBST([ENABLE_DCONF])
12269 AC_MSG_CHECKING([whether to build the PDF import feature])
12271 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12272 AC_MSG_RESULT([yes])
12273 ENABLE_PDFIMPORT=TRUE
12274 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12276 AC_MSG_RESULT([no])
12280 AC_MSG_CHECKING([whether to build PDFium])
12282 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12283 AC_MSG_RESULT([yes])
12285 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12287 AC_MSG_RESULT([no])
12289 AC_SUBST(ENABLE_PDFIUM)
12291 if test "$ENABLE_PDFIUM" = "TRUE"; then
12292 AC_MSG_CHECKING([which OpenJPEG library to use])
12293 if test "$with_system_openjpeg" = "yes"; then
12294 SYSTEM_OPENJPEG2=TRUE
12295 AC_MSG_RESULT([external])
12296 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12297 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12298 FilterLibs "${OPENJPEG2_LIBS}"
12299 OPENJPEG2_LIBS="${filteredlibs}"
12301 SYSTEM_OPENJPEG2=FALSE
12302 AC_MSG_RESULT([internal])
12305 AC_MSG_CHECKING([which Abseil library to use])
12306 if test "$with_system_abseil" = "yes"; then
12307 AC_MSG_RESULT([external])
12309 AC_LANG_PUSH([C++])
12310 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12311 [AC_MSG_ERROR(abseil headers not found.)], [])
12312 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12313 [AC_MSG_ERROR(abseil headers not found.)], [])
12314 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12315 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12316 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12317 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12318 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12320 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12321 FilterLibs "${ABSEIL_LIBS}"
12322 ABSEIL_LIBS="${filteredlibs}"
12324 AC_MSG_RESULT([internal])
12327 AC_SUBST(SYSTEM_OPENJPEG2)
12328 AC_SUBST(SYSTEM_ABSEIL)
12329 AC_SUBST(ABSEIL_CFLAGS)
12330 AC_SUBST(ABSEIL_LIBS)
12332 dnl ===================================================================
12333 dnl Check for poppler
12334 dnl ===================================================================
12336 AC_MSG_CHECKING([whether to build Poppler])
12337 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12338 AC_MSG_RESULT([yes])
12339 ENABLE_POPPLER=TRUE
12340 AC_DEFINE(HAVE_FEATURE_POPPLER)
12342 AC_MSG_RESULT([no])
12344 AC_SUBST(ENABLE_POPPLER)
12346 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12347 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12350 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12351 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12354 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12355 dnl ===================================================================
12356 dnl Check for system poppler
12357 dnl ===================================================================
12358 AC_MSG_CHECKING([which PDF import poppler to use])
12359 if test "$with_system_poppler" = "yes"; then
12360 AC_MSG_RESULT([external])
12361 SYSTEM_POPPLER=TRUE
12362 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12363 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12364 FilterLibs "${POPPLER_LIBS}"
12365 POPPLER_LIBS="${filteredlibs}"
12367 AC_MSG_RESULT([internal])
12369 BUILD_TYPE="$BUILD_TYPE POPPLER"
12371 AC_DEFINE([ENABLE_PDFIMPORT],1)
12373 AC_SUBST(ENABLE_PDFIMPORT)
12374 AC_SUBST(SYSTEM_POPPLER)
12375 AC_SUBST(POPPLER_CFLAGS)
12376 AC_SUBST(POPPLER_LIBS)
12380 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12381 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12382 if test "$SYSTEM_FREETYPE" = TRUE; then
12383 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12384 [skia_freetype_ok=yes],
12385 [skia_freetype_ok=no])
12386 else # internal is ok
12387 skia_freetype_ok=yes
12389 AC_MSG_CHECKING([whether to build Skia])
12390 if test "$skia_freetype_ok" = "yes"; then
12391 if test "$enable_skia" = "debug"; then
12392 AC_MSG_RESULT([yes (debug)])
12393 ENABLE_SKIA_DEBUG=TRUE
12395 AC_MSG_RESULT([yes])
12399 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12400 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12403 AC_DEFINE(HAVE_FEATURE_SKIA)
12404 BUILD_TYPE="$BUILD_TYPE SKIA"
12406 if test "$OS" = "MACOSX"; then
12407 AC_DEFINE(SK_GANESH,1)
12408 AC_DEFINE(SK_METAL,1)
12412 AC_DEFINE(SK_GANESH,1)
12413 AC_DEFINE(SK_VULKAN,1)
12418 AC_MSG_RESULT([no (freetype too old)])
12419 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12423 AC_MSG_CHECKING([whether to build Skia])
12424 AC_MSG_RESULT([no])
12426 AC_SUBST(ENABLE_SKIA)
12427 AC_SUBST(ENABLE_SKIA_DEBUG)
12429 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12430 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12431 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12432 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12433 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12434 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12435 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12436 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12437 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12438 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12440 HAVE_LO_CLANG_DLLEXPORTINLINES=
12442 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12443 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12444 AC_MSG_CHECKING([for Clang])
12445 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12447 if test "$_os" = "WINNT"; then
12448 AC_MSG_CHECKING([for clang-cl])
12449 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12450 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12451 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12452 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12453 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12454 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12456 if test -n "$LO_CLANG_CC"; then
12457 dnl explicitly set -m32/-m64
12458 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12459 LO_CLANG_CXX="$LO_CLANG_CC"
12460 AC_MSG_RESULT([$LO_CLANG_CC])
12462 AC_MSG_RESULT([no])
12465 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12466 echo "#include <stdlib.h>" > conftest.c
12467 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12468 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12469 rm -f conftest.c conftest.obj
12470 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12471 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12473 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12476 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12477 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12480 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12481 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12482 LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12483 if test "$LO_CLANG_VERSION" -lt 50002; then
12484 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12489 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12491 CXX="$LO_CLANG_CXX"
12492 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12493 AC_LANG_PUSH([C++])
12494 save_CXXFLAGS=$CXXFLAGS
12495 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12496 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12497 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12498 AC_MSG_RESULT([yes])
12499 ], [AC_MSG_RESULT([no])])
12500 CXXFLAGS=$save_CXXFLAGS
12503 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12504 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.])
12507 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12508 # Skia is the default on Windows and Mac, so hard-require Clang.
12509 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12510 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12511 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12513 AC_MSG_WARN([Clang compiler not found.])
12518 CXX="$LO_CLANG_CXX"
12519 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12522 flag_sse41=-msse4.1
12523 flag_sse42=-msse4.2
12526 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12527 flag_avx512f=-mavx512f
12531 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12532 AC_LANG_PUSH([C++])
12533 save_CXXFLAGS=$CXXFLAGS
12534 CXXFLAGS="$CXXFLAGS $flag_sse2"
12535 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12536 #include <emmintrin.h>
12538 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12539 c = _mm_xor_si128 (a, b);
12543 [can_compile_sse2=yes],
12544 [can_compile_sse2=no])
12546 CXXFLAGS=$save_CXXFLAGS
12547 AC_MSG_RESULT([${can_compile_sse2}])
12548 if test "${can_compile_sse2}" = "yes" ; then
12549 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12552 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12553 AC_LANG_PUSH([C++])
12554 save_CXXFLAGS=$CXXFLAGS
12555 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12556 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12557 #include <tmmintrin.h>
12559 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12560 c = _mm_maddubs_epi16 (a, b);
12564 [can_compile_ssse3=yes],
12565 [can_compile_ssse3=no])
12567 CXXFLAGS=$save_CXXFLAGS
12568 AC_MSG_RESULT([${can_compile_ssse3}])
12569 if test "${can_compile_ssse3}" = "yes" ; then
12570 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12573 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12574 AC_LANG_PUSH([C++])
12575 save_CXXFLAGS=$CXXFLAGS
12576 CXXFLAGS="$CXXFLAGS $flag_sse41"
12577 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12578 #include <smmintrin.h>
12580 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12581 c = _mm_cmpeq_epi64 (a, b);
12585 [can_compile_sse41=yes],
12586 [can_compile_sse41=no])
12588 CXXFLAGS=$save_CXXFLAGS
12589 AC_MSG_RESULT([${can_compile_sse41}])
12590 if test "${can_compile_sse41}" = "yes" ; then
12591 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12594 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12595 AC_LANG_PUSH([C++])
12596 save_CXXFLAGS=$CXXFLAGS
12597 CXXFLAGS="$CXXFLAGS $flag_sse42"
12598 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12599 #include <nmmintrin.h>
12601 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12602 c = _mm_cmpgt_epi64 (a, b);
12606 [can_compile_sse42=yes],
12607 [can_compile_sse42=no])
12609 CXXFLAGS=$save_CXXFLAGS
12610 AC_MSG_RESULT([${can_compile_sse42}])
12611 if test "${can_compile_sse42}" = "yes" ; then
12612 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12615 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12616 AC_LANG_PUSH([C++])
12617 save_CXXFLAGS=$CXXFLAGS
12618 CXXFLAGS="$CXXFLAGS $flag_avx"
12619 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12620 #include <immintrin.h>
12622 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12623 c = _mm256_xor_ps(a, b);
12627 [can_compile_avx=yes],
12628 [can_compile_avx=no])
12630 CXXFLAGS=$save_CXXFLAGS
12631 AC_MSG_RESULT([${can_compile_avx}])
12632 if test "${can_compile_avx}" = "yes" ; then
12633 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12636 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12637 AC_LANG_PUSH([C++])
12638 save_CXXFLAGS=$CXXFLAGS
12639 CXXFLAGS="$CXXFLAGS $flag_avx2"
12640 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12641 #include <immintrin.h>
12643 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12644 c = _mm256_maddubs_epi16(a, b);
12648 [can_compile_avx2=yes],
12649 [can_compile_avx2=no])
12651 CXXFLAGS=$save_CXXFLAGS
12652 AC_MSG_RESULT([${can_compile_avx2}])
12653 if test "${can_compile_avx2}" = "yes" ; then
12654 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12657 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12658 AC_LANG_PUSH([C++])
12659 save_CXXFLAGS=$CXXFLAGS
12660 CXXFLAGS="$CXXFLAGS $flag_avx512"
12661 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12662 #include <immintrin.h>
12664 __m512i a = _mm512_loadu_si512(0);
12665 __m512d v1 = _mm512_load_pd(0);
12666 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12667 __m512d v2 = _mm512_abs_pd(v1);
12671 [can_compile_avx512=yes],
12672 [can_compile_avx512=no])
12674 CXXFLAGS=$save_CXXFLAGS
12675 AC_MSG_RESULT([${can_compile_avx512}])
12676 if test "${can_compile_avx512}" = "yes" ; then
12677 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12678 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12681 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12682 AC_LANG_PUSH([C++])
12683 save_CXXFLAGS=$CXXFLAGS
12684 CXXFLAGS="$CXXFLAGS $flag_f16c"
12685 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12686 #include <immintrin.h>
12688 __m128i a = _mm_set1_epi32 (0);
12690 c = _mm_cvtph_ps(a);
12694 [can_compile_f16c=yes],
12695 [can_compile_f16c=no])
12697 CXXFLAGS=$save_CXXFLAGS
12698 AC_MSG_RESULT([${can_compile_f16c}])
12699 if test "${can_compile_f16c}" = "yes" ; then
12700 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12703 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12704 AC_LANG_PUSH([C++])
12705 save_CXXFLAGS=$CXXFLAGS
12706 CXXFLAGS="$CXXFLAGS $flag_fma"
12707 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12708 #include <immintrin.h>
12710 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12711 d = _mm256_fmadd_ps(a, b, c);
12715 [can_compile_fma=yes],
12716 [can_compile_fma=no])
12718 CXXFLAGS=$save_CXXFLAGS
12719 AC_MSG_RESULT([${can_compile_fma}])
12720 if test "${can_compile_fma}" = "yes" ; then
12721 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12728 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12730 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12731 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12735 save_CFLAGS=$CFLAGS
12736 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12737 dnl an empty program will do, we're checking the compiler flags
12738 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12739 [use_ccache=yes], [use_ccache=no])
12740 CFLAGS=$save_CFLAGS
12742 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12743 AC_MSG_RESULT([yes])
12745 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12746 AC_MSG_RESULT([no])
12750 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12751 AC_LANG_PUSH([C++])
12753 CXX="$LO_CLANG_CXX"
12754 save_CXXFLAGS=$CXXFLAGS
12755 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12756 dnl an empty program will do, we're checking the compiler flags
12757 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12758 [use_ccache=yes], [use_ccache=no])
12759 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12760 AC_MSG_RESULT([yes])
12762 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12763 AC_MSG_RESULT([no])
12765 CXXFLAGS=$save_CXXFLAGS
12770 AC_SUBST(LO_CLANG_CC)
12771 AC_SUBST(LO_CLANG_CXX)
12772 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12773 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12774 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12775 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12776 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12777 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12778 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12779 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12780 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12781 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12782 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12783 AC_SUBST(LO_CLANG_VERSION)
12784 AC_SUBST(CLANG_USE_LD)
12785 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12789 AC_MSG_CHECKING([whether to enable gpgmepp])
12790 if test "$enable_gpgmepp" = no; then
12791 AC_MSG_RESULT([no])
12792 elif test "$enable_mpl_subset" = "yes"; then
12793 AC_MSG_RESULT([no (MPL only)])
12794 elif test "$enable_fuzzers" = "yes"; then
12795 AC_MSG_RESULT([no (oss-fuzz)])
12796 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12797 AC_MSG_RESULT([yes])
12798 dnl ===================================================================
12799 dnl Check for system gpgme
12800 dnl ===================================================================
12801 AC_MSG_CHECKING([which gpgmepp to use])
12802 if test "$with_system_gpgmepp" = "yes"; then
12803 AC_MSG_RESULT([external])
12804 SYSTEM_GPGMEPP=TRUE
12806 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12807 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12808 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12809 AC_CHECK_HEADER(gpgme.h, [],
12810 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12811 AC_CHECK_LIB(gpgmepp, main, [],
12812 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12813 GPGMEPP_LIBS=-lgpgmepp
12815 AC_MSG_RESULT([internal])
12816 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12818 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12819 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12820 if test "$_os" != "WINNT"; then
12821 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12822 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12825 ENABLE_GPGMEPP=TRUE
12826 AC_DEFINE([HAVE_FEATURE_GPGME])
12827 AC_PATH_PROG(GPG, gpg)
12828 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12829 # so let's exclude that manually for the moment
12830 if test -n "$GPG" -a "$_os" != "WINNT"; then
12831 # make sure we not only have a working gpgme, but a full working
12832 # gpg installation to run OpenPGP signature verification
12833 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12835 if test "$_os" = "Linux"; then
12837 AC_MSG_CHECKING([for /run/user/$uid])
12838 if test -d /run/user/$uid; then
12839 AC_MSG_RESULT([yes])
12840 AC_PATH_PROG(GPGCONF, gpgconf)
12842 # Older versions of gpgconf are not working as expected, since
12843 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12844 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12845 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12846 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12847 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12848 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12849 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12850 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12851 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12852 if $GPGCONF --dump-options > /dev/null ; then
12853 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12854 AC_MSG_RESULT([yes])
12855 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12856 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12858 AC_MSG_RESULT([no])
12861 AC_MSG_RESULT([no. missing or broken gpgconf?])
12864 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12867 AC_MSG_RESULT([no])
12871 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12873 AC_SUBST(ENABLE_GPGMEPP)
12874 AC_SUBST(SYSTEM_GPGMEPP)
12875 AC_SUBST(GPG_ERROR_CFLAGS)
12876 AC_SUBST(GPG_ERROR_LIBS)
12877 AC_SUBST(LIBASSUAN_CFLAGS)
12878 AC_SUBST(LIBASSUAN_LIBS)
12879 AC_SUBST(GPGMEPP_CFLAGS)
12880 AC_SUBST(GPGMEPP_LIBS)
12882 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12883 if test "$with_java" != "no"; then
12884 AC_MSG_RESULT([yes])
12885 ENABLE_JAVA_WEBSOCKET=TRUE
12886 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12889 AC_MSG_RESULT([no])
12890 ENABLE_JAVA_WEBSOCKET=
12892 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12894 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12895 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12896 AC_MSG_RESULT([yes])
12897 ENABLE_MEDIAWIKI=TRUE
12898 BUILD_TYPE="$BUILD_TYPE XSLTML"
12899 if test "x$with_java" = "xno"; then
12900 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12903 AC_MSG_RESULT([no])
12905 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12907 AC_SUBST(ENABLE_MEDIAWIKI)
12909 AC_MSG_CHECKING([whether to build the Report Builder])
12910 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12911 AC_MSG_RESULT([yes])
12912 ENABLE_REPORTBUILDER=TRUE
12913 AC_MSG_CHECKING([which jfreereport libs to use])
12914 if test "$with_system_jfreereport" = "yes"; then
12915 SYSTEM_JFREEREPORT=TRUE
12916 AC_MSG_RESULT([external])
12917 if test -z $SAC_JAR; then
12918 SAC_JAR=/usr/share/java/sac.jar
12920 if ! test -f $SAC_JAR; then
12921 AC_MSG_ERROR(sac.jar not found.)
12924 if test -z $LIBXML_JAR; then
12925 if test -f /usr/share/java/libxml-1.0.0.jar; then
12926 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12927 elif test -f /usr/share/java/libxml.jar; then
12928 LIBXML_JAR=/usr/share/java/libxml.jar
12930 AC_MSG_ERROR(libxml.jar replacement not found.)
12932 elif ! test -f $LIBXML_JAR; then
12933 AC_MSG_ERROR(libxml.jar not found.)
12936 if test -z $FLUTE_JAR; then
12937 if test -f /usr/share/java/flute-1.3.0.jar; then
12938 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12939 elif test -f /usr/share/java/flute.jar; then
12940 FLUTE_JAR=/usr/share/java/flute.jar
12942 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12944 elif ! test -f $FLUTE_JAR; then
12945 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12948 if test -z $JFREEREPORT_JAR; then
12949 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12950 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12951 elif test -f /usr/share/java/flow-engine.jar; then
12952 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12954 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12956 elif ! test -f $JFREEREPORT_JAR; then
12957 AC_MSG_ERROR(jfreereport.jar not found.)
12960 if test -z $LIBLAYOUT_JAR; then
12961 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12962 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12963 elif test -f /usr/share/java/liblayout.jar; then
12964 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12966 AC_MSG_ERROR(liblayout.jar replacement not found.)
12968 elif ! test -f $LIBLAYOUT_JAR; then
12969 AC_MSG_ERROR(liblayout.jar not found.)
12972 if test -z $LIBLOADER_JAR; then
12973 if test -f /usr/share/java/libloader-1.0.0.jar; then
12974 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12975 elif test -f /usr/share/java/libloader.jar; then
12976 LIBLOADER_JAR=/usr/share/java/libloader.jar
12978 AC_MSG_ERROR(libloader.jar replacement not found.)
12980 elif ! test -f $LIBLOADER_JAR; then
12981 AC_MSG_ERROR(libloader.jar not found.)
12984 if test -z $LIBFORMULA_JAR; then
12985 if test -f /usr/share/java/libformula-0.2.0.jar; then
12986 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12987 elif test -f /usr/share/java/libformula.jar; then
12988 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12990 AC_MSG_ERROR(libformula.jar replacement not found.)
12992 elif ! test -f $LIBFORMULA_JAR; then
12993 AC_MSG_ERROR(libformula.jar not found.)
12996 if test -z $LIBREPOSITORY_JAR; then
12997 if test -f /usr/share/java/librepository-1.0.0.jar; then
12998 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12999 elif test -f /usr/share/java/librepository.jar; then
13000 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
13002 AC_MSG_ERROR(librepository.jar replacement not found.)
13004 elif ! test -f $LIBREPOSITORY_JAR; then
13005 AC_MSG_ERROR(librepository.jar not found.)
13008 if test -z $LIBFONTS_JAR; then
13009 if test -f /usr/share/java/libfonts-1.0.0.jar; then
13010 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
13011 elif test -f /usr/share/java/libfonts.jar; then
13012 LIBFONTS_JAR=/usr/share/java/libfonts.jar
13014 AC_MSG_ERROR(libfonts.jar replacement not found.)
13016 elif ! test -f $LIBFONTS_JAR; then
13017 AC_MSG_ERROR(libfonts.jar not found.)
13020 if test -z $LIBSERIALIZER_JAR; then
13021 if test -f /usr/share/java/libserializer-1.0.0.jar; then
13022 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
13023 elif test -f /usr/share/java/libserializer.jar; then
13024 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
13026 AC_MSG_ERROR(libserializer.jar replacement not found.)
13028 elif ! test -f $LIBSERIALIZER_JAR; then
13029 AC_MSG_ERROR(libserializer.jar not found.)
13032 if test -z $LIBBASE_JAR; then
13033 if test -f /usr/share/java/libbase-1.0.0.jar; then
13034 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
13035 elif test -f /usr/share/java/libbase.jar; then
13036 LIBBASE_JAR=/usr/share/java/libbase.jar
13038 AC_MSG_ERROR(libbase.jar replacement not found.)
13040 elif ! test -f $LIBBASE_JAR; then
13041 AC_MSG_ERROR(libbase.jar not found.)
13045 AC_MSG_RESULT([internal])
13046 SYSTEM_JFREEREPORT=
13047 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
13050 BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
13052 AC_MSG_RESULT([no])
13053 ENABLE_REPORTBUILDER=
13054 SYSTEM_JFREEREPORT=
13056 AC_SUBST(ENABLE_REPORTBUILDER)
13057 AC_SUBST(SYSTEM_JFREEREPORT)
13059 AC_SUBST(LIBXML_JAR)
13060 AC_SUBST(FLUTE_JAR)
13061 AC_SUBST(JFREEREPORT_JAR)
13062 AC_SUBST(LIBBASE_JAR)
13063 AC_SUBST(LIBLAYOUT_JAR)
13064 AC_SUBST(LIBLOADER_JAR)
13065 AC_SUBST(LIBFORMULA_JAR)
13066 AC_SUBST(LIBREPOSITORY_JAR)
13067 AC_SUBST(LIBFONTS_JAR)
13068 AC_SUBST(LIBSERIALIZER_JAR)
13070 # scripting provider for BeanShell?
13071 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
13072 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
13073 AC_MSG_RESULT([yes])
13074 ENABLE_SCRIPTING_BEANSHELL=TRUE
13076 dnl ===================================================================
13077 dnl Check for system beanshell
13078 dnl ===================================================================
13079 AC_MSG_CHECKING([which beanshell to use])
13080 if test "$with_system_beanshell" = "yes"; then
13081 AC_MSG_RESULT([external])
13083 if test -z $BSH_JAR; then
13084 BSH_JAR=/usr/share/java/bsh.jar
13086 if ! test -f $BSH_JAR; then
13087 AC_MSG_ERROR(bsh.jar not found.)
13090 AC_MSG_RESULT([internal])
13092 BUILD_TYPE="$BUILD_TYPE BSH"
13095 AC_MSG_RESULT([no])
13096 ENABLE_SCRIPTING_BEANSHELL=
13097 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13099 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13100 AC_SUBST(SYSTEM_BSH)
13103 # scripting provider for JavaScript?
13104 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13105 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13106 AC_MSG_RESULT([yes])
13107 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13109 dnl ===================================================================
13110 dnl Check for system rhino
13111 dnl ===================================================================
13112 AC_MSG_CHECKING([which rhino to use])
13113 if test "$with_system_rhino" = "yes"; then
13114 AC_MSG_RESULT([external])
13116 if test -z $RHINO_JAR; then
13117 RHINO_JAR=/usr/share/java/js.jar
13119 if ! test -f $RHINO_JAR; then
13120 AC_MSG_ERROR(js.jar not found.)
13123 AC_MSG_RESULT([internal])
13125 BUILD_TYPE="$BUILD_TYPE RHINO"
13129 AC_MSG_RESULT([no])
13130 ENABLE_SCRIPTING_JAVASCRIPT=
13131 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13133 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13134 AC_SUBST(SYSTEM_RHINO)
13135 AC_SUBST(RHINO_JAR)
13137 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13138 # paths should be added to library search path. So lets put all 64-bit
13141 case "$host_cpu" in
13142 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13143 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13144 supports_multilib="yes"
13151 dnl ===================================================================
13152 dnl QT5 Integration
13153 dnl ===================================================================
13159 QT5_GOBJECT_CFLAGS=""
13160 QT5_GOBJECT_LIBS=""
13161 QT5_HAVE_GOBJECT=""
13162 QT5_PLATFORMS_SRCDIR=""
13163 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13164 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13165 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13167 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13168 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13170 if test -n "$supports_multilib"; then
13171 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13174 qt5_test_include="QtWidgets/qapplication.h"
13175 if test "$_os" = "Emscripten"; then
13176 qt5_test_library="libQt5Widgets.a"
13178 qt5_test_library="libQt5Widgets.so"
13181 dnl Check for qmake5
13182 if test -n "$QT5DIR"; then
13183 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13185 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13187 if test "$QMAKE5" = "no"; then
13188 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13190 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13191 if test -z "$qmake5_test_ver"; then
13192 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13194 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13195 qt5_minimal_minor="15"
13196 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13197 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13199 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13203 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13204 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13205 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13206 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13208 AC_MSG_CHECKING([for Qt5 headers])
13210 for inc_dir in $qt5_incdirs; do
13211 if test -r "$inc_dir/$qt5_test_include"; then
13212 qt5_incdir="$inc_dir"
13216 AC_MSG_RESULT([$qt5_incdir])
13217 if test "x$qt5_incdir" = "xno"; then
13218 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13220 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13221 AC_LANG_PUSH([C++])
13222 save_CPPFLAGS=$CPPFLAGS
13223 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13224 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13225 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13226 CPPFLAGS=$save_CPPFLAGS
13229 AC_MSG_CHECKING([for Qt5 libraries])
13231 for lib_dir in $qt5_libdirs; do
13232 if test -r "$lib_dir/$qt5_test_library"; then
13233 qt5_libdir="$lib_dir"
13237 AC_MSG_RESULT([$qt5_libdir])
13238 if test "x$qt5_libdir" = "xno"; then
13239 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13242 if test "$_os" = "Emscripten"; then
13243 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13244 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13246 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13247 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13250 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13251 if ! test -x "$EMSDK_LLVM_NM"; then
13252 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13254 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13255 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13257 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13258 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13259 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13261 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13262 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13266 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13267 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13268 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13269 if test "$_os" = "Emscripten"; then
13270 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13273 if test "$USING_X11" = TRUE; then
13274 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13275 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13276 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13278 AC_DEFINE(QT5_USING_X11)
13281 dnl Check for Meta Object Compiler
13283 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13284 if test "$MOC5" = "no"; then
13285 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13286 the root of your Qt installation by exporting QT5DIR before running "configure".])
13289 if test "$test_gstreamer_1_0" = yes; then
13290 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13292 AC_DEFINE(QT5_HAVE_GOBJECT)
13294 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13298 AC_SUBST(QT5_CFLAGS)
13301 AC_SUBST(QT5_GOBJECT_CFLAGS)
13302 AC_SUBST(QT5_GOBJECT_LIBS)
13303 AC_SUBST(QT5_HAVE_GOBJECT)
13304 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13306 dnl ===================================================================
13307 dnl QT6 Integration
13308 dnl ===================================================================
13314 QT6_PLATFORMS_SRCDIR=""
13315 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13316 \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13318 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13319 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13321 if test -n "$supports_multilib"; then
13322 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13325 qt6_test_include="QtWidgets/qapplication.h"
13326 if test "$_os" = "Emscripten"; then
13327 qt6_test_library="libQt6Widgets.a"
13329 qt6_test_library="libQt6Widgets.so"
13332 dnl Check for qmake6
13333 if test -n "$QT6DIR"; then
13334 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13336 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13338 if test "$QMAKE6" = "no"; then
13339 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13341 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13342 if test -z "$qmake6_test_ver"; then
13343 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13345 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13348 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13349 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13350 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13351 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13353 AC_MSG_CHECKING([for Qt6 headers])
13355 for inc_dir in $qt6_incdirs; do
13356 if test -r "$inc_dir/$qt6_test_include"; then
13357 qt6_incdir="$inc_dir"
13361 AC_MSG_RESULT([$qt6_incdir])
13362 if test "x$qt6_incdir" = "xno"; then
13363 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13365 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13366 AC_LANG_PUSH([C++])
13367 save_CPPFLAGS=$CPPFLAGS
13368 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13369 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13370 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13371 CPPFLAGS=$save_CPPFLAGS
13374 AC_MSG_CHECKING([for Qt6 libraries])
13376 for lib_dir in $qt6_libdirs; do
13377 if test -r "$lib_dir/$qt6_test_library"; then
13378 qt6_libdir="$lib_dir"
13382 AC_MSG_RESULT([$qt6_libdir])
13383 if test "x$qt6_libdir" = "xno"; then
13384 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13387 if test "$_os" = "Emscripten"; then
13388 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13389 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13391 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13392 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13396 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13397 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13398 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13399 if test "$_os" = "Emscripten"; then
13400 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13403 if test "$USING_X11" = TRUE; then
13404 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13405 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13406 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13408 AC_DEFINE(QT6_USING_X11)
13411 dnl Check for Meta Object Compiler
13413 for lib_dir in $qt6_libdirs; do
13414 if test -z "$qt6_libexec_dirs"; then
13415 qt6_libexec_dirs="$lib_dir/libexec"
13417 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13420 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH])
13421 if test "$MOC6" = "no"; then
13422 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13423 the root of your Qt installation by exporting QT6DIR before running "configure".])
13425 moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13426 if test -z "$moc6_test_ver"; then
13427 AC_MSG_ERROR([Wrong moc for Qt6 found.])
13429 AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13432 AC_SUBST(QT6_CFLAGS)
13435 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13437 dnl ===================================================================
13438 dnl KF5 Integration
13439 dnl ===================================================================
13443 KF5_CONFIG="kf5-config"
13444 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13445 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13447 if test "$OS" = "HAIKU"; then
13448 haiku_arch="`echo $RTL_ARCH | tr X x`"
13449 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13450 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13453 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13454 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13455 if test -n "$supports_multilib"; then
13456 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13459 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13460 kf5_test_library="libKF5KIOFileWidgets.so"
13461 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13463 dnl kf5 KDE4 support compatibility installed
13464 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13465 if test "$KF5_CONFIG" != "no"; then
13466 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13467 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13470 dnl Check for KF5 headers
13471 AC_MSG_CHECKING([for KF5 headers])
13473 for kf5_check in $kf5_incdirs; do
13474 if test -r "$kf5_check/$kf5_test_include"; then
13475 kf5_incdir="$kf5_check/KF5"
13479 AC_MSG_RESULT([$kf5_incdir])
13480 if test "x$kf5_incdir" = "xno"; then
13481 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13484 dnl Check for KF5 libraries
13485 AC_MSG_CHECKING([for KF5 libraries])
13487 for kf5_check in $kf5_libdirs; do
13488 if test -r "$kf5_check/$kf5_test_library"; then
13489 kf5_libdir="$kf5_check"
13494 AC_MSG_RESULT([$kf5_libdir])
13495 if test "x$kf5_libdir" = "xno"; then
13496 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13499 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"
13500 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13501 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13503 if test "$USING_X11" = TRUE; then
13504 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13507 AC_LANG_PUSH([C++])
13508 save_CXXFLAGS=$CXXFLAGS
13509 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13510 AC_MSG_CHECKING([whether KDE is >= 5.0])
13511 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13512 #include <kcoreaddons_version.h>
13514 int main(int argc, char **argv) {
13515 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13518 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13519 CXXFLAGS=$save_CXXFLAGS
13522 AC_SUBST(KF5_CFLAGS)
13525 dnl ===================================================================
13526 dnl KF6 Integration
13527 dnl ===================================================================
13531 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13533 if test "$OS" = "HAIKU"; then
13534 haiku_arch="`echo $RTL_ARCH | tr X x`"
13535 kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13536 kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13539 kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13540 kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13541 if test -n "$supports_multilib"; then
13542 kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13545 kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13546 kf6_test_library="libKF6KIOFileWidgets.so"
13547 kf6_libdirs="$qt6_libdir $kf6_libdirs"
13549 dnl Check for KF6 headers
13550 AC_MSG_CHECKING([for KF6 headers])
13552 for kf6_check in $kf6_incdirs; do
13553 if test -r "$kf6_check/$kf6_test_include"; then
13554 kf6_incdir="$kf6_check/KF6"
13558 AC_MSG_RESULT([$kf6_incdir])
13559 if test "x$kf6_incdir" = "xno"; then
13560 AC_MSG_ERROR([KF6 headers not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13563 dnl Check for KF6 libraries
13564 AC_MSG_CHECKING([for KF6 libraries])
13566 for kf6_check in $kf6_libdirs; do
13567 if test -r "$kf6_check/$kf6_test_library"; then
13568 kf6_libdir="$kf6_check"
13573 AC_MSG_RESULT([$kf6_libdir])
13574 if test "x$kf6_libdir" = "xno"; then
13575 AC_MSG_ERROR([KF6 libraries not found. Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13578 KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfig -I$kf6_incdir/KConfigCore -I$kf6_incdir/KWindowSystem -I$kf6_incdir/KIO -I$kf6_incdir/KIOCore -I$kf6_incdir/KIOWidgets -I$kf6_incdir/KIOFileWidgets -I$qt6_incdir -I$qt6_incdir/QtCore -I$qt6_incdir/QtGui -I$qt6_incdir/QtWidgets -I$qt6_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13579 KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13580 KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13582 AC_LANG_PUSH([C++])
13583 save_CXXFLAGS=$CXXFLAGS
13584 CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13585 dnl KF6 development version as of 2023-06 uses version number 5.240
13586 AC_MSG_CHECKING([whether KDE is >= 5.240])
13587 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13588 #include <kcoreaddons_version.h>
13590 int main(int argc, char **argv) {
13591 if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13594 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13595 CXXFLAGS=$save_CXXFLAGS
13598 AC_SUBST(KF6_CFLAGS)
13601 dnl ===================================================================
13602 dnl Test whether to include Evolution 2 support
13603 dnl ===================================================================
13604 AC_MSG_CHECKING([whether to enable evolution 2 support])
13605 if test "$enable_evolution2" = yes; then
13606 AC_MSG_RESULT([yes])
13607 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13608 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13609 FilterLibs "${GOBJECT_LIBS}"
13610 GOBJECT_LIBS="${filteredlibs}"
13611 ENABLE_EVOAB2="TRUE"
13613 AC_MSG_RESULT([no])
13615 AC_SUBST(ENABLE_EVOAB2)
13616 AC_SUBST(GOBJECT_CFLAGS)
13617 AC_SUBST(GOBJECT_LIBS)
13619 dnl ===================================================================
13620 dnl Test which themes to include
13621 dnl ===================================================================
13622 AC_MSG_CHECKING([which themes to include])
13623 # if none given use default subset of available themes
13624 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13625 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_dark sukapura_dark_svg sukapura_svg"
13629 if test "x$with_theme" != "xno"; then
13630 for theme in $with_theme; do
13632 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_dark|sukapura_dark_svg|sukapura_svg) WITH_THEMES="${WITH_THEMES:+$WITH_THEMES }$theme" ;;
13633 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13637 AC_MSG_RESULT([$WITH_THEMES])
13638 AC_SUBST([WITH_THEMES])
13640 ###############################################################################
13641 # Extensions checking
13642 ###############################################################################
13643 AC_MSG_CHECKING([for extensions integration])
13644 if test "x$enable_extension_integration" != "xno"; then
13645 WITH_EXTENSION_INTEGRATION=TRUE
13646 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13647 AC_MSG_RESULT([yes, use integration])
13649 WITH_EXTENSION_INTEGRATION=
13650 AC_MSG_RESULT([no, do not integrate])
13652 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13654 dnl Should any extra extensions be included?
13655 dnl There are standalone tests for each of these below.
13656 WITH_EXTRA_EXTENSIONS=
13657 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13659 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13660 if test "x$with_java" != "xno"; then
13661 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13664 AC_MSG_CHECKING([whether to build opens___.ttf])
13665 if test "$enable_build_opensymbol" = "yes"; then
13666 AC_MSG_RESULT([yes])
13667 AC_PATH_PROG(FONTFORGE, fontforge)
13668 if test -z "$FONTFORGE"; then
13669 AC_MSG_ERROR([fontforge not installed])
13672 AC_MSG_RESULT([no])
13673 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13675 AC_SUBST(FONTFORGE)
13677 dnl ===================================================================
13678 dnl Test whether to include fonts
13679 dnl ===================================================================
13681 WITH_DOCREPAIR_FONTS=
13682 AC_MSG_CHECKING([whether to include third-party fonts])
13683 if test "$with_fonts" != "no"; then
13684 AC_MSG_RESULT([yes])
13686 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13687 AC_DEFINE(HAVE_MORE_FONTS)
13688 AC_MSG_CHECKING([whether to include 'docrepair' fonts])
13689 if test "$with_docrepair_fonts" = "yes"; then
13690 AC_MSG_RESULT([yes])
13691 WITH_DOCREPAIR_FONTS=TRUE
13694 AC_MSG_RESULT([no])
13695 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13697 AC_SUBST(WITH_FONTS)
13698 AC_SUBST(WITH_DOCREPAIR_FONTS)
13700 dnl Test whether to include more Google Noto fonts
13701 dnl ===================================================================
13702 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13703 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13704 AC_MSG_RESULT([no])
13707 AC_MSG_RESULT([yes])
13708 WITH_NOTO_FONT=TRUE
13709 BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13710 SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13712 AC_SUBST(WITH_NOTO_FONT)
13714 dnl ===================================================================
13715 dnl Test whether to enable online update service
13716 dnl ===================================================================
13717 AC_MSG_CHECKING([whether to enable online update])
13718 ENABLE_ONLINE_UPDATE=
13719 if test "$enable_online_update" = ""; then
13720 AC_MSG_RESULT([no])
13722 if test "$enable_online_update" = "mar"; then
13723 AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13724 elif test "$enable_online_update" = "yes"; then
13725 if test "$enable_curl" != "yes"; then
13726 AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13728 AC_MSG_RESULT([yes])
13729 ENABLE_ONLINE_UPDATE="TRUE"
13731 AC_MSG_RESULT([no])
13734 AC_SUBST(ENABLE_ONLINE_UPDATE)
13737 dnl ===================================================================
13738 dnl Test whether to enable mar online update service
13739 dnl ===================================================================
13740 AC_MSG_CHECKING([whether to enable mar online update])
13741 ENABLE_ONLINE_UPDATE_MAR=
13742 if test "$enable_online_update_mar" = yes; then
13743 AC_MSG_RESULT([yes])
13744 BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13745 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13746 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13748 AC_MSG_RESULT([no])
13750 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13752 AC_MSG_CHECKING([for mar online update baseurl])
13753 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13754 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13755 AC_MSG_RESULT([yes])
13757 AC_MSG_RESULT([no])
13759 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13761 AC_MSG_CHECKING([for mar online update certificateder])
13762 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13763 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13764 AC_MSG_RESULT([yes])
13766 AC_MSG_RESULT([no])
13768 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13770 AC_MSG_CHECKING([for mar online update certificatename])
13771 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13772 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13773 AC_MSG_RESULT([yes])
13775 AC_MSG_RESULT([no])
13777 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13779 AC_MSG_CHECKING([for mar online update certificatepath])
13780 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13781 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13782 AC_MSG_RESULT([yes])
13784 AC_MSG_RESULT([no])
13786 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13788 AC_MSG_CHECKING([for mar online update uploadurl])
13789 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13790 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13791 AC_MSG_RESULT([yes])
13793 AC_MSG_RESULT([no])
13795 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13798 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13799 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13800 if test "x$with_privacy_policy_url" = "xundefined"; then
13801 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13804 AC_SUBST(PRIVACY_POLICY_URL)
13805 dnl ===================================================================
13806 dnl Test whether we need bzip2
13807 dnl ===================================================================
13809 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13810 AC_MSG_CHECKING([whether to use system bzip2])
13811 if test "$with_system_bzip2" = yes; then
13813 AC_MSG_RESULT([yes])
13814 PKG_CHECK_MODULES(BZIP2, bzip2)
13815 FilterLibs "${BZIP2_LIBS}"
13816 BZIP2_LIBS="${filteredlibs}"
13818 AC_MSG_RESULT([no])
13819 BUILD_TYPE="$BUILD_TYPE BZIP2"
13822 AC_SUBST(SYSTEM_BZIP2)
13823 AC_SUBST(BZIP2_CFLAGS)
13824 AC_SUBST(BZIP2_LIBS)
13826 dnl ===================================================================
13827 dnl Test whether to enable extension update
13828 dnl ===================================================================
13829 AC_MSG_CHECKING([whether to enable extension update])
13830 ENABLE_EXTENSION_UPDATE=
13831 if test "x$enable_extension_update" = "xno"; then
13832 AC_MSG_RESULT([no])
13834 AC_MSG_RESULT([yes])
13835 ENABLE_EXTENSION_UPDATE="TRUE"
13836 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13837 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13839 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13842 dnl ===================================================================
13843 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13844 dnl ===================================================================
13845 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13846 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13847 AC_MSG_RESULT([no])
13850 AC_MSG_RESULT([yes])
13851 ENABLE_SILENT_MSI=TRUE
13852 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13854 AC_SUBST(ENABLE_SILENT_MSI)
13856 dnl ===================================================================
13857 dnl Check for WiX tools.
13858 dnl ===================================================================
13859 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13860 AC_MSG_RESULT([no])
13863 AC_MSG_RESULT([yes])
13864 # FIXME: this should do proper detection, but the path is currently
13865 # hardcoded in msicreator/createmsi.py
13866 if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13867 AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13871 AC_SUBST(ENABLE_WIX)
13873 AC_MSG_CHECKING([whether and how to use Xinerama])
13874 if test "$USING_X11" = TRUE; then
13875 if test "$x_libraries" = "default_x_libraries"; then
13876 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13877 if test "x$XINERAMALIB" = x; then
13878 XINERAMALIB="/usr/lib"
13881 XINERAMALIB="$x_libraries"
13883 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13884 # we have both versions, let the user decide but use the dynamic one
13887 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13888 XINERAMA_LINK=dynamic
13890 XINERAMA_LINK=static
13892 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13893 # we have only the dynamic version
13895 XINERAMA_LINK=dynamic
13896 elif test -e "$XINERAMALIB/libXinerama.a"; then
13898 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13900 XINERAMA_LINK=static
13910 if test "$USE_XINERAMA" = "TRUE"; then
13911 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13912 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13913 [AC_MSG_ERROR(Xinerama header not found.)], [])
13914 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13915 if test "x$XEXTLIB" = x; then
13916 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13918 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13919 if test "$_os" = "FreeBSD"; then
13920 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13922 if test "$_os" = "Linux"; then
13923 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13925 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13926 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13928 AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13933 AC_MSG_RESULT([no])
13935 AC_SUBST(XINERAMA_LINK)
13937 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13938 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13939 enable_cairo_rgba=yes
13941 if test "$enable_cairo_rgba" = yes; then
13942 AC_DEFINE(ENABLE_CAIRO_RGBA)
13943 ENABLE_CAIRO_RGBA=TRUE
13944 AC_MSG_RESULT([yes])
13947 AC_MSG_RESULT([no])
13949 AC_SUBST(ENABLE_CAIRO_RGBA)
13951 dnl ===================================================================
13952 dnl Test whether to build cairo or rely on the system version
13953 dnl ===================================================================
13955 if test "$test_cairo" = "yes"; then
13956 AC_MSG_CHECKING([whether to use the system cairo])
13958 : ${with_system_cairo:=$with_system_libs}
13959 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13961 AC_MSG_RESULT([yes])
13963 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13964 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13965 FilterLibs "${CAIRO_LIBS}"
13966 CAIRO_LIBS="${filteredlibs}"
13968 if test "$test_xrender" = "yes"; then
13969 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13971 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13972 #ifdef PictStandardA8
13976 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13981 AC_MSG_RESULT([no])
13982 BUILD_TYPE="$BUILD_TYPE CAIRO"
13985 if test "$enable_cairo_canvas" != no; then
13986 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13987 ENABLE_CAIRO_CANVAS=TRUE
13991 AC_SUBST(CAIRO_CFLAGS)
13992 AC_SUBST(CAIRO_LIBS)
13993 AC_SUBST(ENABLE_CAIRO_CANVAS)
13994 AC_SUBST(SYSTEM_CAIRO)
13996 dnl ===================================================================
13997 dnl Test whether to use avahi
13998 dnl ===================================================================
13999 if test "$_os" = "WINNT"; then
14000 # Windows uses bundled mDNSResponder
14001 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
14002 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
14003 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
14004 [ENABLE_AVAHI="TRUE"])
14005 AC_DEFINE(HAVE_FEATURE_AVAHI)
14006 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
14007 FilterLibs "${AVAHI_LIBS}"
14008 AVAHI_LIBS="${filteredlibs}"
14011 AC_SUBST(ENABLE_AVAHI)
14012 AC_SUBST(AVAHI_CFLAGS)
14013 AC_SUBST(AVAHI_LIBS)
14015 dnl ===================================================================
14016 dnl Test whether to use liblangtag
14017 dnl ===================================================================
14019 AC_MSG_CHECKING([whether to use system liblangtag])
14020 if test "$with_system_liblangtag" = yes; then
14021 SYSTEM_LIBLANGTAG=TRUE
14022 AC_MSG_RESULT([yes])
14023 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
14024 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
14025 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
14026 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
14027 FilterLibs "${LIBLANGTAG_LIBS}"
14028 LIBLANGTAG_LIBS="${filteredlibs}"
14031 AC_MSG_RESULT([no])
14032 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
14033 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
14034 if test "$COM" = "MSC"; then
14035 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
14037 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
14040 AC_SUBST(SYSTEM_LIBLANGTAG)
14041 AC_SUBST(LIBLANGTAG_CFLAGS)
14042 AC_SUBST(LIBLANGTAG_LIBS)
14044 dnl ===================================================================
14045 dnl Test whether to build libpng or rely on the system version
14046 dnl ===================================================================
14048 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
14049 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
14050 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
14052 dnl ===================================================================
14053 dnl Test whether to build libtiff or rely on the system version
14054 dnl ===================================================================
14056 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
14058 dnl ===================================================================
14059 dnl Test whether to build libwebp or rely on the system version
14060 dnl ===================================================================
14062 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
14064 dnl ===================================================================
14065 dnl Check for runtime JVM search path
14066 dnl ===================================================================
14067 if test "$ENABLE_JAVA" != ""; then
14068 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
14069 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
14070 AC_MSG_RESULT([yes])
14071 if ! test -d "$with_jvm_path"; then
14072 AC_MSG_ERROR(["$with_jvm_path" not a directory])
14074 if ! test -d "$with_jvm_path"jvm; then
14075 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
14077 JVM_ONE_PATH_CHECK="$with_jvm_path"
14078 AC_SUBST(JVM_ONE_PATH_CHECK)
14080 AC_MSG_RESULT([no])
14084 dnl ===================================================================
14085 dnl Test for the presence of Ant and that it works
14086 dnl ===================================================================
14088 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
14089 # breaks filename decoding, so for the ant section, set it to LANG
14091 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14092 ANT_HOME=; export ANT_HOME
14093 WITH_ANT_HOME=; export WITH_ANT_HOME
14094 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14095 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14096 if test "$_os" = "WINNT"; then
14097 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14099 with_ant_home="$LODE_HOME/opt/ant"
14101 elif test -x "$LODE_HOME/opt/bin/ant" ; then
14102 with_ant_home="$LODE_HOME/opt/ant"
14105 if test -z "$with_ant_home"; then
14106 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14108 if test "$_os" = "WINNT"; then
14109 # AC_PATH_PROGS needs unix path
14110 with_ant_home=`cygpath -u "$with_ant_home"`
14112 AbsolutePath "$with_ant_home"
14113 with_ant_home=$absolute_path
14114 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14115 WITH_ANT_HOME=$with_ant_home
14116 ANT_HOME=$with_ant_home
14119 if test -z "$ANT"; then
14120 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14122 # resolve relative or absolute symlink
14123 while test -h "$ANT"; do
14125 a_basename=`basename "$ANT"`
14126 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14127 cd "`dirname "$ANT"`"
14128 cd "`dirname "$a_script"`"
14129 ANT="`pwd`"/"`basename "$a_script"`"
14133 AC_MSG_CHECKING([if $ANT works])
14134 mkdir -p conftest.dir
14137 cat > conftest.java << EOF
14138 public class conftest {
14139 int testmethod(int a, int b) {
14145 cat > conftest.xml << EOF
14146 <project name="conftest" default="conftest">
14147 <target name="conftest">
14148 <javac srcdir="." includes="conftest.java">
14154 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14155 if test $? = 0 -a -f ./conftest.class; then
14156 AC_MSG_RESULT([Ant works])
14157 if test -z "$WITH_ANT_HOME"; then
14158 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14159 if test -z "$ANT_HOME"; then
14160 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14163 ANT_HOME="$WITH_ANT_HOME"
14166 echo "configure: Ant test failed" >&5
14167 cat conftest.java >&5
14168 cat conftest.xml >&5
14169 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14172 rm -fr conftest.dir
14174 if test -z "$ANT_HOME"; then
14175 ANT_HOME="NO_ANT_HOME"
14177 PathFormat "$ANT_HOME"
14178 ANT_HOME="$formatted_path"
14180 ANT="$formatted_path"
14183 dnl Checking for ant.jar
14184 if test "$ANT_HOME" != "NO_ANT_HOME"; then
14185 AC_MSG_CHECKING([Ant lib directory])
14186 if test -f $ANT_HOME/lib/ant.jar; then
14187 ANT_LIB="$ANT_HOME/lib"
14189 if test -f $ANT_HOME/ant.jar; then
14190 ANT_LIB="$ANT_HOME"
14192 if test -f /usr/share/java/ant.jar; then
14193 ANT_LIB=/usr/share/java
14195 if test -f /usr/share/ant-core/lib/ant.jar; then
14196 ANT_LIB=/usr/share/ant-core/lib
14198 if test -f $ANT_HOME/lib/ant/ant.jar; then
14199 ANT_LIB="$ANT_HOME/lib/ant"
14201 if test -f /usr/share/lib/ant/ant.jar; then
14202 ANT_LIB=/usr/share/lib/ant
14204 AC_MSG_ERROR([Ant libraries not found!])
14211 PathFormat "$ANT_LIB"
14212 ANT_LIB="$formatted_path"
14213 AC_MSG_RESULT([Ant lib directory found.])
14217 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14219 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14220 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14221 ant_version_major=`echo $ant_version | cut -d. -f1`
14222 ant_version_minor=`echo $ant_version | cut -d. -f2`
14223 echo "configure: ant_version $ant_version " >&5
14224 echo "configure: ant_version_major $ant_version_major " >&5
14225 echo "configure: ant_version_minor $ant_version_minor " >&5
14226 if test "$ant_version_major" -ge "2"; then
14227 AC_MSG_RESULT([yes, $ant_version])
14228 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14229 AC_MSG_RESULT([yes, $ant_version])
14231 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14234 rm -f conftest* core core.* *.core
14242 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14243 AC_MSG_CHECKING([for JUnit 4])
14244 if test "$with_junit" = "yes"; then
14245 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14246 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14247 elif test -e /usr/share/java/junit4.jar; then
14248 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14250 if test -e /usr/share/lib/java/junit.jar; then
14251 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14253 OOO_JUNIT_JAR=/usr/share/java/junit.jar
14257 OOO_JUNIT_JAR=$with_junit
14259 if test "$_os" = "WINNT"; then
14260 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14262 printf 'import org.junit.Before;' > conftest.java
14263 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14264 AC_MSG_RESULT([$OOO_JUNIT_JAR])
14267 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14268 specify its pathname via --with-junit=..., or disable it via --without-junit])
14270 rm -f conftest.class conftest.java
14271 if test $OOO_JUNIT_JAR != ""; then
14272 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14275 AC_MSG_CHECKING([for included Hamcrest])
14276 printf 'import org.hamcrest.BaseDescription;' > conftest.java
14277 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14278 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14280 AC_MSG_RESULT([Not included])
14281 AC_MSG_CHECKING([for standalone hamcrest jar.])
14282 if test "$with_hamcrest" = "yes"; then
14283 if test -e /usr/share/lib/java/hamcrest.jar; then
14284 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14285 elif test -e /usr/share/java/hamcrest/core.jar; then
14286 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14287 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14288 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14290 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14293 HAMCREST_JAR=$with_hamcrest
14295 if test "$_os" = "WINNT"; then
14296 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14298 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14299 AC_MSG_RESULT([$HAMCREST_JAR])
14301 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),
14302 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14305 rm -f conftest.class conftest.java
14307 AC_SUBST(OOO_JUNIT_JAR)
14308 AC_SUBST(HAMCREST_JAR)
14309 # set back LC_ALL to C after the java related tests...
14315 # check for wget and curl
14320 if test "$enable_fetch_external" != "no"; then
14322 CURL=`which curl 2>/dev/null`
14324 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14326 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14327 if test $? -eq 0; then
14333 if test -z "$WGET" -a -z "$CURL"; then
14334 AC_MSG_ERROR([neither wget nor curl found!])
14343 # check for sha256sum
14347 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14348 eval "$i -a 256 --version" > /dev/null 2>&1
14350 if test $ret -eq 0; then
14351 SHA256SUM="$i -a 256"
14356 if test -z "$SHA256SUM"; then
14357 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14358 eval "$i --version" > /dev/null 2>&1
14360 if test $ret -eq 0; then
14367 if test -z "$SHA256SUM"; then
14368 AC_MSG_ERROR([no sha256sum found!])
14371 AC_SUBST(SHA256SUM)
14373 dnl ===================================================================
14374 dnl Dealing with l10n options
14375 dnl ===================================================================
14376 AC_MSG_CHECKING([which languages to be built])
14377 # get list of all languages
14378 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14379 # the sed command does the following:
14380 # + if a line ends with a backslash, append the next line to it
14381 # + adds " on the beginning of the value (after =)
14382 # + adds " at the end of the value
14383 # + removes en-US; we want to put it on the beginning
14384 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14385 [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)]
14386 ALL_LANGS="en-US $completelangiso"
14387 # check the configured localizations
14388 WITH_LANG="$with_lang"
14390 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14391 # (Norwegian is "nb" and "nn".)
14392 if test "$WITH_LANG" = "no"; then
14396 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14397 AC_MSG_RESULT([en-US])
14399 AC_MSG_RESULT([$WITH_LANG])
14400 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14401 if test -z "$MSGFMT"; then
14402 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14403 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14404 elif test -x "/opt/lo/bin/msgfmt"; then
14405 MSGFMT="/opt/lo/bin/msgfmt"
14407 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14408 if test -z "$MSGFMT"; then
14409 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14413 if test -z "$MSGUNIQ"; then
14414 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14415 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14416 elif test -x "/opt/lo/bin/msguniq"; then
14417 MSGUNIQ="/opt/lo/bin/msguniq"
14419 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14420 if test -z "$MSGUNIQ"; then
14421 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14428 # check that the list is valid
14429 for lang in $WITH_LANG; do
14430 test "$lang" = "ALL" && continue
14431 # need to check for the exact string, so add space before and after the list of all languages
14432 for vl in $ALL_LANGS; do
14433 if test "$vl" = "$lang"; then
14437 if test "$vl" != "$lang"; then
14438 # if you're reading this - you prolly quoted your languages remove the quotes ...
14439 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14442 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14443 echo $WITH_LANG | grep -q en-US
14444 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14446 # list with substituted ALL
14447 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14448 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14449 test "$WITH_LANG" = "en-US" && WITH_LANG=
14450 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14451 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14452 ALL_LANGS=`echo $ALL_LANGS qtz`
14454 AC_SUBST(ALL_LANGS)
14455 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14456 AC_SUBST(WITH_LANG)
14457 AC_SUBST(WITH_LANG_LIST)
14458 AC_SUBST(GIT_NEEDED_SUBMODULES)
14460 WITH_POOR_HELP_LOCALIZATIONS=
14461 if test -d "$SRC_ROOT/translations/source"; then
14462 for l in `ls -1 $SRC_ROOT/translations/source`; do
14463 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14464 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14467 if test "$OS" = WNT; then
14468 # We want to include only English (US), French, German, Italian and Spanish help
14469 # packs in our Windows distribution. Others are probably not needed and digital
14470 # signature of MSI packages is expensive. Some other languages are available online.
14471 WITH_POOR_HELP_LOCALIZATIONS="ab af am an ar as ast az be bg bn bn-IN bo br brx bs ca ca-valencia ckb cs cy da dgo dsb dz el en-GB en-ZA eo et eu fa fi fur fy ga gd gl gu gug he hi hr hsb hu hy id is ja jv ka kab kk kl km kmr-Latn kn ko kok ks ky lb lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc om or pa-IN pl pt pt-BR ro ru rw sa-IN sah sat sd si sid sk sl sq sr sr-Latn ss st sv sw-TZ szl ta te tg th ti tn tr ts tt ug uk ur uz ve vec vi xh zh-CN zh-TW zu"
14474 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14476 if test -n "$with_locales" -a "$with_locales" != ALL; then
14477 WITH_LOCALES="$with_locales"
14479 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14480 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14481 # config_host/config_locales.h.in
14482 for locale in $WITH_LOCALES; do
14485 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14489 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14492 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14497 AC_DEFINE(WITH_LOCALE_ALL)
14499 AC_SUBST(WITH_LOCALES)
14501 dnl git submodule update --reference
14502 dnl ===================================================================
14503 if test -n "${GIT_REFERENCE_SRC}"; then
14504 for repo in ${GIT_NEEDED_SUBMODULES}; do
14505 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14506 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14510 AC_SUBST(GIT_REFERENCE_SRC)
14512 dnl git submodules linked dirs
14513 dnl ===================================================================
14514 if test -n "${GIT_LINK_SRC}"; then
14515 for repo in ${GIT_NEEDED_SUBMODULES}; do
14516 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14517 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14521 AC_SUBST(GIT_LINK_SRC)
14524 dnl ===================================================================
14525 AC_MSG_CHECKING([for alternative branding images directory])
14526 # initialize mapped arrays
14527 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14528 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14530 if test -z "$with_branding" -o "$with_branding" = "no"; then
14531 AC_MSG_RESULT([none])
14532 DEFAULT_BRAND_IMAGES="$brand_files"
14534 if ! test -d $with_branding ; then
14535 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14537 AC_MSG_RESULT([$with_branding])
14538 CUSTOM_BRAND_DIR="$with_branding"
14539 for lfile in $brand_files
14541 if ! test -f $with_branding/$lfile ; then
14542 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14543 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14545 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14548 check_for_progress="yes"
14551 AC_SUBST([BRAND_INTRO_IMAGES])
14552 AC_SUBST([CUSTOM_BRAND_DIR])
14553 AC_SUBST([CUSTOM_BRAND_IMAGES])
14554 AC_SUBST([DEFAULT_BRAND_IMAGES])
14557 AC_MSG_CHECKING([for 'intro' progress settings])
14561 PROGRESSFRAMECOLOR=
14563 PROGRESSTEXTBASELINE=
14565 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14566 source "$with_branding/progress.conf"
14567 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14569 AC_MSG_RESULT([none])
14572 AC_SUBST(PROGRESSBARCOLOR)
14573 AC_SUBST(PROGRESSSIZE)
14574 AC_SUBST(PROGRESSPOSITION)
14575 AC_SUBST(PROGRESSFRAMECOLOR)
14576 AC_SUBST(PROGRESSTEXTCOLOR)
14577 AC_SUBST(PROGRESSTEXTBASELINE)
14580 dnl ===================================================================
14581 dnl Custom build version
14582 dnl ===================================================================
14583 AC_MSG_CHECKING([for extra build ID])
14584 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14585 EXTRA_BUILDID="$with_extra_buildid"
14587 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14588 if test -n "$EXTRA_BUILDID" ; then
14589 AC_MSG_RESULT([$EXTRA_BUILDID])
14591 AC_MSG_RESULT([not set])
14593 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14596 AC_MSG_CHECKING([for vendor])
14597 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14598 OOO_VENDOR="$USERNAME"
14600 if test -z "$OOO_VENDOR"; then
14604 if test -z "$OOO_VENDOR"; then
14605 OOO_VENDOR="`id -u -n`"
14608 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14610 OOO_VENDOR="$with_vendor"
14611 AC_MSG_RESULT([$OOO_VENDOR])
14613 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14614 AC_SUBST(OOO_VENDOR)
14616 if test "$_os" = "Android" ; then
14617 ANDROID_PACKAGE_NAME=
14618 AC_MSG_CHECKING([for Android package name])
14619 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14620 if test -n "$ENABLE_DEBUG"; then
14621 # Default to the package name that makes ndk-gdb happy.
14622 ANDROID_PACKAGE_NAME="org.libreoffice"
14624 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14627 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14629 ANDROID_PACKAGE_NAME="$with_android_package_name"
14630 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14632 AC_SUBST(ANDROID_PACKAGE_NAME)
14635 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14636 if test "$with_compat_oowrappers" = "yes"; then
14637 WITH_COMPAT_OOWRAPPERS=TRUE
14640 WITH_COMPAT_OOWRAPPERS=
14643 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14645 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14646 AC_MSG_CHECKING([for install dirname])
14647 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14648 INSTALLDIRNAME="$with_install_dirname"
14650 AC_MSG_RESULT([$INSTALLDIRNAME])
14651 AC_SUBST(INSTALLDIRNAME)
14653 AC_MSG_CHECKING([for prefix])
14654 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14655 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14656 PREFIXDIR="$prefix"
14657 AC_MSG_RESULT([$PREFIXDIR])
14658 AC_SUBST(PREFIXDIR)
14660 LIBDIR=[$(eval echo $(eval echo $libdir))]
14663 DATADIR=[$(eval echo $(eval echo $datadir))]
14666 MANDIR=[$(eval echo $(eval echo $mandir))]
14669 DOCDIR=[$(eval echo $(eval echo $docdir))]
14672 BINDIR=[$(eval echo $(eval echo $bindir))]
14675 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14676 AC_SUBST(INSTALLDIR)
14678 TESTINSTALLDIR="${BUILDDIR}/test-install"
14679 AC_SUBST(TESTINSTALLDIR)
14682 # ===================================================================
14683 # OAuth2 id and secrets
14684 # ===================================================================
14686 AC_MSG_CHECKING([for Google Drive client id and secret])
14687 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14688 AC_MSG_RESULT([not set])
14689 GDRIVE_CLIENT_ID="\"\""
14690 GDRIVE_CLIENT_SECRET="\"\""
14692 AC_MSG_RESULT([set])
14693 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14694 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14696 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14697 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14699 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14700 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14701 AC_MSG_RESULT([not set])
14702 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14703 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14705 AC_MSG_RESULT([set])
14706 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14707 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14709 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14710 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14712 AC_MSG_CHECKING([for OneDrive client id and secret])
14713 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14714 AC_MSG_RESULT([not set])
14715 ONEDRIVE_CLIENT_ID="\"\""
14716 ONEDRIVE_CLIENT_SECRET="\"\""
14718 AC_MSG_RESULT([set])
14719 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14720 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14722 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14723 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14726 dnl ===================================================================
14727 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14728 dnl --enable-dependency-tracking configure option
14729 dnl ===================================================================
14730 AC_MSG_CHECKING([whether to enable dependency tracking])
14731 if test "$enable_dependency_tracking" = "no"; then
14733 AC_MSG_RESULT([no])
14735 AC_MSG_RESULT([yes])
14739 dnl ===================================================================
14740 dnl Number of CPUs to use during the build
14741 dnl ===================================================================
14742 AC_MSG_CHECKING([for number of processors to use])
14743 # plain --with-parallelism is just the default
14744 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14745 if test "$with_parallelism" = "no"; then
14748 PARALLELISM=$with_parallelism
14751 if test "$enable_icecream" = "yes"; then
14756 Darwin|FreeBSD|NetBSD|OpenBSD)
14757 PARALLELISM=`sysctl -n hw.ncpu`
14761 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14763 # what else than above does profit here *and* has /proc?
14765 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14769 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14770 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14774 if test $PARALLELISM -eq 0; then
14775 AC_MSG_RESULT([explicit make -j option needed])
14777 AC_MSG_RESULT([$PARALLELISM])
14779 AC_SUBST(PARALLELISM)
14782 # Set up ILIB for MSVC build
14785 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14787 if test -n "$JAVA_HOME"; then
14788 ILIB="$ILIB;$JAVA_HOME/lib"
14791 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14792 ILIB="$ILIB;$formatted_path"
14793 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14794 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14795 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14796 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14797 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14798 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14800 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14801 ucrtlibpath_formatted=$formatted_path
14802 ILIB="$ILIB;$ucrtlibpath_formatted"
14803 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14804 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14805 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14806 ILIB="$ILIB;$formatted_path"
14808 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14809 ILIB="$ILIB;$formatted_path"
14812 if test "$cross_compiling" != "yes"; then
14813 ILIB_FOR_BUILD="$ILIB"
14817 AC_SUBST(ILIB_FOR_BUILD)
14819 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14820 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14821 dnl from consteval constructor initializing const variable",
14822 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14823 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14824 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14825 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14826 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14827 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)" (which appears to be
14828 dnl fixed at least in Visual Studio Community 2022 Preview 17.9.0 Preview 5.0),
14829 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14830 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14831 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14832 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17), or
14833 dnl <https://developercommunity.visualstudio.com/t/Bogus-error-C2440-with-consteval-constru/10579616>
14834 dnl "Bogus error C2440 with consteval constructor (/std:c++20)":
14835 AC_LANG_PUSH([C++])
14837 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14838 CXX="env LIB=$ILIB $CXX"
14840 save_CXXFLAGS=$CXXFLAGS
14841 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14842 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14844 consteval S() { i = 1; }
14851 consteval S1(int n): a(n) {}
14867 struct S4 { consteval S4() = default; };
14868 void f4(bool b) { b ? S4() : S4(); }
14871 consteval S5() { c = 0; }
14872 char * f() { return &c; }
14878 auto s5 = S5().f();
14881 consteval S6(char const (&lit)[2]) {
14890 void f6() { S6("a"); }
14892 return (s.i == 1) ? 0 : 1;
14894 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14895 AC_MSG_RESULT([yes])
14896 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14898 CXXFLAGS=$save_CXXFLAGS
14901 # ===================================================================
14902 # Creating bigger shared library to link against
14903 # ===================================================================
14904 AC_MSG_CHECKING([whether to create huge library])
14908 if test $_os = iOS -o $_os = Android; then
14909 # Never any point in mergelibs for these as we build just static
14910 # libraries anyway...
14911 enable_mergelibs=no
14914 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14915 if test "$enable_mergelibs" = "more"; then
14916 if test $_os != Linux; then
14917 add_warning "--enable-mergelibs=more is not tested for this platform"
14920 MERGELIBS_MORE="TRUE"
14921 AC_MSG_RESULT([yes (more)])
14922 AC_DEFINE(ENABLE_MERGELIBS)
14923 elif test "$enable_mergelibs" = "yes" -o "$enable_mergelibs" = ""; then
14924 if test $_os != Linux -a $_os != WINNT; then
14925 add_warning "--enable-mergelibs is not tested for this platform"
14928 AC_MSG_RESULT([yes])
14929 AC_DEFINE(ENABLE_MERGELIBS)
14931 AC_MSG_ERROR([unknown value --enable-mergelibs=$enable_mergelibs])
14934 AC_MSG_RESULT([no])
14936 AC_SUBST([MERGELIBS])
14937 AC_SUBST([MERGELIBS_MORE])
14939 dnl ===================================================================
14940 dnl icerun is a wrapper that stops us spawning tens of processes
14941 dnl locally - for tools that can't be executed on the compile cluster
14942 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14943 dnl ===================================================================
14944 AC_MSG_CHECKING([whether to use icerun wrapper])
14946 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14947 ICECREAM_RUN=icerun
14948 AC_MSG_RESULT([yes])
14950 AC_MSG_RESULT([no])
14952 AC_SUBST(ICECREAM_RUN)
14954 dnl ===================================================================
14955 dnl Setup the ICECC_VERSION for the build the same way it was set for
14956 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14957 dnl ===================================================================
14958 x_ICECC_VERSION=[\#]
14959 if test -n "$ICECC_VERSION" ; then
14962 AC_SUBST(x_ICECC_VERSION)
14963 AC_SUBST(ICECC_VERSION)
14965 dnl ===================================================================
14967 AC_MSG_CHECKING([MPL subset])
14971 if test "$enable_mpl_subset" = "yes"; then
14975 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14977 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14980 if test "$warn_report" = "true"; then
14981 mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14983 if test "x$enable_postgresql_sdbc" != "xno"; then
14984 mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14986 if test "$enable_lotuswordpro" = "yes"; then
14987 mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14989 if test -n "$ENABLE_POPPLER"; then
14990 if test "x$SYSTEM_POPPLER" = "x"; then
14991 mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14994 # cf. m4/libo_check_extension.m4
14995 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14996 mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
15000 for theme in $WITH_THEMES; do
15002 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
15003 denied_themes="${denied_themes:+$denied_themes }$theme" ;;
15005 filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
15008 if test "x$denied_themes" != "x"; then
15009 if test "x$filtered_themes" == "x"; then
15010 filtered_themes="colibre"
15012 mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
15015 ENABLE_OPENGL_TRANSITIONS=
15017 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
15018 mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
15021 if test "x$mpl_error_string" != "x"; then
15022 AC_MSG_ERROR([$mpl_error_string])
15027 AC_DEFINE(MPL_HAVE_SUBSET)
15028 AC_MSG_RESULT([only])
15030 AC_MSG_RESULT([no restrictions])
15032 AC_SUBST(MPL_SUBSET)
15035 dnl ===================================================================
15037 AC_MSG_CHECKING([formula logger])
15038 ENABLE_FORMULA_LOGGER=
15040 if test "x$enable_formula_logger" = "xyes"; then
15041 AC_MSG_RESULT([yes])
15042 AC_DEFINE(ENABLE_FORMULA_LOGGER)
15043 ENABLE_FORMULA_LOGGER=TRUE
15044 elif test -n "$ENABLE_DBGUTIL" ; then
15045 AC_MSG_RESULT([yes])
15046 AC_DEFINE(ENABLE_FORMULA_LOGGER)
15047 ENABLE_FORMULA_LOGGER=TRUE
15049 AC_MSG_RESULT([no])
15052 AC_SUBST(ENABLE_FORMULA_LOGGER)
15054 dnl ===================================================================
15055 dnl Checking for active Antivirus software.
15056 dnl ===================================================================
15058 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
15059 AC_MSG_CHECKING([for active Antivirus software])
15060 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
15061 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
15062 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
15063 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
15064 AC_MSG_RESULT([found])
15065 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
15066 echo $EICAR_STRING > $SRC_ROOT/eicar
15067 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
15069 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15070 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15072 echo $EICAR_STRING > $BUILDDIR/eicar
15073 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
15075 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15076 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15078 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"
15080 AC_MSG_RESULT([not found])
15083 AC_MSG_RESULT([n/a])
15087 dnl ===================================================================
15089 AC_MSG_CHECKING([for coredumpctl support])
15090 if test -z "$with_coredumpctl" && test $_os != Linux; then
15091 with_coredumpctl=no
15093 if test "$with_coredumpctl" = no; then
15096 AC_PATH_PROG(COREDUMPCTL, coredumpctl)
15097 AC_PATH_PROG(JQ, jq)
15098 AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
15099 AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
15100 if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
15101 || test -z "$SYSTEMD_RUN"
15103 if test -z "$with_coredumpctl"; then
15106 if test -z "$COREDUMPCTL"; then
15107 AC_MSG_ERROR([coredumpctl not found])
15109 if test -z "$JQ"; then
15110 AC_MSG_ERROR([jq not found])
15112 if test -z "$SYSTEMD_ESCAPE"; then
15113 AC_MSG_ERROR([systemd-escape not found])
15115 if test -z "$SYSTEMD_RUN"; then
15116 AC_MSG_ERROR([systemd-run not found])
15120 WITH_COREDUMPCTL=TRUE
15123 if test -z "$WITH_COREDUMPCTL"; then
15124 AC_MSG_RESULT([no])
15126 AC_MSG_RESULT([yes])
15128 AC_SUBST(COREDUMPCTL)
15130 AC_SUBST(SYSTEMD_ESCAPE)
15131 AC_SUBST(SYSTEMD_RUN)
15132 AC_SUBST(WITH_COREDUMPCTL)
15134 dnl ===================================================================
15135 dnl Setting up the environment.
15136 dnl ===================================================================
15137 AC_MSG_NOTICE([setting up the build environment variables...])
15141 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15142 if test -d "$COMPATH/atlmfc/lib/spectre"; then
15143 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15144 ATL_INCLUDE="$COMPATH/atlmfc/include"
15145 elif test -d "$COMPATH/atlmfc/lib"; then
15146 ATL_LIB="$COMPATH/atlmfc/lib"
15147 ATL_INCLUDE="$COMPATH/atlmfc/include"
15149 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15150 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15152 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15153 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15154 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15157 if test "$build_os" = "cygwin"; then
15158 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15159 PathFormat "/usr/bin/find.exe"
15160 FIND="$formatted_path"
15161 PathFormat "/usr/bin/sort.exe"
15162 SORT="$formatted_path"
15163 PathFormat "/usr/bin/grep.exe"
15164 WIN_GREP="$formatted_path"
15165 PathFormat "/usr/bin/ls.exe"
15166 WIN_LS="$formatted_path"
15167 PathFormat "/usr/bin/touch.exe"
15168 WIN_TOUCH="$formatted_path"
15174 AC_SUBST(ATL_INCLUDE)
15180 AC_SUBST(WIN_TOUCH)
15182 AC_SUBST(BUILD_TYPE)
15187 PERL="$formatted_path"
15190 if test -n "$TMPDIR"; then
15191 TEMP_DIRECTORY="$TMPDIR"
15193 TEMP_DIRECTORY="/tmp"
15195 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15196 if test "$build_os" = "cygwin"; then
15197 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15198 CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15200 AC_SUBST(TEMP_DIRECTORY)
15201 AC_SUBST(CYGWIN_BASH)
15203 # setup the PATH for the environment
15204 if test -n "$LO_PATH_FOR_BUILD"; then
15205 LO_PATH="$LO_PATH_FOR_BUILD"
15208 pathmunge "$MSVC_HOST_PATH" "before"
15216 dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15217 if test "$ENABLE_JAVA" != ""; then
15218 pathmunge "$JAVA_HOME/bin" "after"
15223 # Win32 make needs native paths
15224 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15225 LO_PATH=`cygpath -p -m "$PATH"`
15227 if test "$WIN_BUILD_ARCH" = "x64"; then
15228 # needed for msi packaging
15229 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15231 if test "$WIN_BUILD_ARCH" = "arm64"; then
15232 # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15233 # the x86 ones probably would work just as well...
15234 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15236 # .NET 4.6 and higher don't have bin directory
15237 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15238 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15240 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15241 pathmunge "$CSC_PATH" "before"
15242 pathmunge "$MIDL_PATH" "before"
15243 pathmunge "$AL_PATH" "before"
15244 pathmunge "$MSVC_MULTI_PATH" "before"
15245 pathmunge "$MSVC_BUILD_PATH" "before"
15246 if test -n "$MSBUILD_PATH" ; then
15247 pathmunge "$MSBUILD_PATH" "before"
15249 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15250 if test "$ENABLE_JAVA" != ""; then
15251 if test -d "$JAVA_HOME/jre/bin/client"; then
15252 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15254 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15255 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15257 pathmunge "$JAVA_HOME/bin" "before"
15259 pathmunge "$MSVC_HOST_PATH" "before"
15263 pathmunge "/usr/css/bin" "before"
15264 if test "$ENABLE_JAVA" != ""; then
15265 pathmunge "$JAVA_HOME/bin" "after"
15273 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15274 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15275 x_LO_ELFCHECK_ALLOWLIST=
15277 x_LO_ELFCHECK_ALLOWLIST=[\#]
15279 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15280 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15284 # Generate a configuration sha256 we can use for deps
15285 if test -f config_host.mk; then
15286 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15288 if test -f config_host_lang.mk; then
15289 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15292 CFLAGS=$my_original_CFLAGS
15293 CXXFLAGS=$my_original_CXXFLAGS
15294 CPPFLAGS=$my_original_CPPFLAGS
15296 AC_CONFIG_LINKS([include:include])
15298 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15299 # BUILD platform configuration] - otherwise breaks cross building
15300 AC_CONFIG_FILES([config_host.mk
15301 config_host_lang.mk
15303 bin/bffvalidator.sh
15304 bin/odfvalidator.sh
15306 instsetoo_native/util/openoffice.lst
15307 sysui/desktop/macosx/Info.plist
15308 hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15309 lo.xcent:sysui/desktop/macosx/lo.xcent.in
15310 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15312 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15313 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15314 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15315 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15316 AC_CONFIG_HEADERS([config_host/config_clang.h])
15317 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15318 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15319 AC_CONFIG_HEADERS([config_host/config_eot.h])
15320 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15321 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15322 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15323 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15324 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15325 AC_CONFIG_HEADERS([config_host/config_features.h])
15326 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15327 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15328 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15329 AC_CONFIG_HEADERS([config_host/config_folders.h])
15330 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15331 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15332 AC_CONFIG_HEADERS([config_host/config_gio.h])
15333 AC_CONFIG_HEADERS([config_host/config_global.h])
15334 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15335 AC_CONFIG_HEADERS([config_host/config_java.h])
15336 AC_CONFIG_HEADERS([config_host/config_langs.h])
15337 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15338 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15339 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15340 AC_CONFIG_HEADERS([config_host/config_locales.h])
15341 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15342 AC_CONFIG_HEADERS([config_host/config_oox.h])
15343 AC_CONFIG_HEADERS([config_host/config_options.h])
15344 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15345 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15346 AC_CONFIG_HEADERS([config_host/config_skia.h])
15347 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15348 AC_CONFIG_HEADERS([config_host/config_validation.h])
15349 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15350 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15351 AC_CONFIG_HEADERS([config_host/config_version.h])
15352 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15353 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15354 AC_CONFIG_HEADERS([config_host/config_python.h])
15355 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15356 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15357 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15360 if test "$CROSS_COMPILING" = TRUE; then
15361 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15364 # touch the config timestamp file
15365 if test ! -f config_host.mk.stamp; then
15366 echo > config_host.mk.stamp
15367 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15368 echo "Host Configuration unchanged - avoiding scp2 stamp update"
15370 echo > config_host.mk.stamp
15373 # touch the config lang timestamp file
15374 if test ! -f config_host_lang.mk.stamp; then
15375 echo > config_host_lang.mk.stamp
15376 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15377 echo "Language Configuration unchanged - avoiding scp2 stamp update"
15379 echo > config_host_lang.mk.stamp
15383 if test \( "$STALE_MAKE" = "TRUE" \) \
15384 -a "$build_os" = "cygwin"; then
15387 ****************************************************************************
15389 Your make version is known to be horribly slow, and hard to debug
15390 problems with. To get a reasonably functional make please do:
15392 to install a pre-compiled binary make for Win32
15394 mkdir -p /opt/lo/bin
15396 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15397 cp make-4.2.1-msvc.exe make
15400 to install from source:
15401 place yourself in a working directory of you choice.
15403 git clone git://git.savannah.gnu.org/make.git
15405 [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"]
15406 set PATH=%PATH%;C:\Cygwin\bin
15407 [or Cygwin64, if that is what you have]
15408 cd path-to-make-repo-you-cloned-above
15409 build_w32.bat --without-guile
15411 should result in a WinRel/gnumake.exe.
15412 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15414 Then re-run autogen.sh
15416 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15417 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15424 ****************************************************************************
15426 To show information on various make targets and make flags, run:
15429 To just build, run:
15434 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15436 After the build has finished successfully, you can immediately run what you built using the command:
15439 if test $_os = Darwin; then
15440 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15442 echo instdir/program/soffice
15446 If you want to run the unit tests, run:
15452 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15453 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15454 cat "$WARNINGS_FILE_FOR_BUILD"
15458 if test -s "$WARNINGS_FILE"; then
15459 echo "HOST config ($WARNINGS_FILE)"
15460 cat "$WARNINGS_FILE"
15463 # Remove unneeded emconfigure artifacts
15464 rm -f a.out a.wasm a.out.js a.out.wasm
15466 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: