1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.5.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
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. 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 "$(uname -r | grep -i Microsoft 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"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468 PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
504 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 LIBO_THIS_YEAR=`date +%Y`
523 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
525 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$ac_configure_args"]],[Options passed to configure script])
527 dnl ===================================================================
529 dnl ===================================================================
530 AC_MSG_CHECKING([for product version])
531 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
532 AC_MSG_RESULT([$PRODUCTVERSION])
533 AC_SUBST(PRODUCTVERSION)
536 # AC_PROG_EGREP doesn't set GREP on all systems as well
537 AC_PATH_PROG(GREP, grep)
545 dnl ======================================
546 dnl Required GObject introspection version
547 dnl ======================================
548 INTROSPECTION_REQUIRED_VERSION=1.32.0
550 dnl ===================================================================
551 dnl Search all the common names for GNU Make
552 dnl ===================================================================
553 AC_MSG_CHECKING([for GNU Make])
555 # try to use our own make if it is available and GNUMAKE was not already defined
556 if test -z "$GNUMAKE"; then
557 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
558 GNUMAKE="$LODE_HOME/opt/bin/make"
559 elif test -x "/opt/lo/bin/make"; then
560 GNUMAKE="/opt/lo/bin/make"
565 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
566 if test -n "$a"; then
567 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
568 if test $? -eq 0; then
569 if test "$build_os" = "cygwin"; then
570 if test -n "$($a -v | grep 'Built for Windows')" ; then
571 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
572 GNUMAKE_WIN_NATIVE="TRUE"
583 AC_MSG_RESULT($GNUMAKE)
584 if test -z "$GNUMAKE"; then
585 AC_MSG_ERROR([not found. install GNU Make.])
587 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
588 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
592 win_short_path_for_make()
594 local short_path="$1"
595 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
596 cygpath -sm "$short_path"
598 cygpath -u "$(cygpath -d "$short_path")"
603 if test "$build_os" = "cygwin"; then
604 PathFormat "$SRC_ROOT"
605 SRC_ROOT="$formatted_path"
606 PathFormat "$BUILDDIR"
607 BUILDDIR="$formatted_path"
609 AC_MSG_CHECKING(for explicit COMSPEC)
610 if test -z "$COMSPEC"; then
611 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
613 AC_MSG_RESULT([found: $COMSPEC])
620 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
621 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
622 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
624 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
625 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
628 # need sed in os checks...
629 AC_PATH_PROGS(SED, sed)
630 if test -z "$SED"; then
631 AC_MSG_ERROR([install sed to run this script])
634 # Set the ENABLE_LTO variable
635 # ===================================================================
636 AC_MSG_CHECKING([whether to use link-time optimization])
637 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
646 AC_ARG_ENABLE(fuzz-options,
647 AS_HELP_STRING([--enable-fuzz-options],
648 [Randomly enable or disable each of those configurable options
649 that are supposed to be freely selectable without interdependencies,
650 or where bad interaction from interdependencies is automatically avoided.])
653 dnl ===================================================================
654 dnl When building for Android, --with-android-ndk,
655 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
657 dnl ===================================================================
659 AC_ARG_WITH(android-ndk,
660 AS_HELP_STRING([--with-android-ndk],
661 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
664 AC_ARG_WITH(android-ndk-toolchain-version,
665 AS_HELP_STRING([--with-android-ndk-toolchain-version],
666 [Specify which toolchain version to use, of those present in the
667 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
668 with_android_ndk_toolchain_version=clang5.0)
670 AC_ARG_WITH(android-sdk,
671 AS_HELP_STRING([--with-android-sdk],
672 [Specify location of the Android SDK. Mandatory when building for Android.]),
675 AC_ARG_WITH(android-api-level,
676 AS_HELP_STRING([--with-android-api-level],
677 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
681 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
682 with_android_ndk="$SRC_ROOT/external/android-ndk"
684 if test -n "$with_android_ndk"; then
685 eval ANDROID_NDK_DIR=$with_android_ndk
687 # Set up a lot of pre-canned defaults
689 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
690 if test ! -f $ANDROID_NDK_DIR/source.properties; then
691 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
693 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
695 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
697 if test -z "$ANDROID_NDK_VERSION"; then
698 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
700 case $ANDROID_NDK_VERSION in
702 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
704 11.1.*|12.1.*|13.1.*|14.1.*)
705 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
707 16.*|17.*|18.*|19.*|20.*)
710 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
711 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
716 if test -n "$with_android_api_level" ; then
717 ANDROID_API_LEVEL="$with_android_api_level"
720 android_cpu=$host_cpu
721 if test $host_cpu = arm; then
722 android_platform_prefix=arm-linux-androideabi
723 android_gnu_prefix=$android_platform_prefix
724 LLVM_TRIPLE=armv7a-linux-androideabi
725 ANDROID_APP_ABI=armeabi-v7a
726 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
727 elif test $host_cpu = aarch64; then
728 android_platform_prefix=aarch64-linux-android
729 android_gnu_prefix=$android_platform_prefix
730 LLVM_TRIPLE=$android_platform_prefix
731 # minimum android version that supports aarch64
732 if test "$ANDROID_API_LEVEL" -lt "21" ; then
735 ANDROID_APP_ABI=arm64-v8a
736 elif test $host_cpu = x86_64; then
737 android_platform_prefix=x86_64-linux-android
738 android_gnu_prefix=$android_platform_prefix
739 LLVM_TRIPLE=$android_platform_prefix
740 # minimum android version that supports x86_64
742 ANDROID_APP_ABI=x86_64
744 # host_cpu is something like "i386" or "i686" I guess, NDK uses
745 # "x86" in some contexts
747 android_platform_prefix=$android_cpu
748 android_gnu_prefix=i686-linux-android
749 LLVM_TRIPLE=$android_gnu_prefix
753 case "$with_android_ndk_toolchain_version" in
755 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
758 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
761 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
763 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
764 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
765 # manage to link the (app-specific) single huge .so that is built for the app in
766 # android/source/ if there is debug information in a significant part of the object files.
767 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
768 # all objects have been built with debug information.)
771 android_HOST_TAG=linux-x86_64
774 android_HOST_TAG=darwin-x86_64
777 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
778 # ndk would also support windows and windows-x86_64
781 android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
782 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
783 dnl TODO: NSS build uses it...
784 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
785 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
787 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
788 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
789 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
790 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
791 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
793 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
794 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
795 if test "$ENABLE_LTO" = TRUE; then
796 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
797 # $CC and $CXX when building external libraries
798 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
801 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
803 if test -z "$CC"; then
804 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
807 if test -z "$CXX"; then
808 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
812 AC_SUBST(ANDROID_NDK_DIR)
813 AC_SUBST(ANDROID_APP_ABI)
814 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
816 dnl ===================================================================
817 dnl --with-android-sdk
818 dnl ===================================================================
820 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
821 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
823 if test -n "$with_android_sdk"; then
824 eval ANDROID_SDK_DIR=$with_android_sdk
825 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
827 AC_SUBST(ANDROID_SDK_DIR)
829 AC_ARG_ENABLE([android-lok],
830 AS_HELP_STRING([--enable-android-lok],
831 [The Android app from the android/ subdir needs several tweaks all
832 over the place that break the LOK when used in the Online-based
833 Android app. This switch indicates that the intent of this build is
834 actually the Online-based, non-modified LOK.])
837 if test -n "$ANDROID_NDK_DIR" ; then
838 if test "$enable_android_lok" = yes; then
839 ENABLE_ANDROID_LOK=TRUE
840 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
841 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
843 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
846 AC_SUBST([ENABLE_ANDROID_LOK])
848 libo_FUZZ_ARG_ENABLE([android-editing],
849 AS_HELP_STRING([--enable-android-editing],
850 [Enable the experimental editing feature on Android.])
852 ENABLE_ANDROID_EDITING=
853 if test "$enable_android_editing" = yes; then
854 ENABLE_ANDROID_EDITING=TRUE
856 AC_SUBST([ENABLE_ANDROID_EDITING])
858 disable_database_connectivity_dependencies()
861 enable_firebird_sdbc=no
862 enable_mariadb_sdbc=no
863 enable_postgresql_sdbc=no
864 enable_report_builder=no
867 # ===================================================================
869 # Start initial platform setup
871 # The using_* variables reflect platform support and should not be
872 # changed after the "End initial platform setup" block.
873 # This is also true for most test_* variables.
874 # ===================================================================
883 # There is currently just iOS not using salplug, so this explicitly enables it.
884 # must: using_freetype_fontconfig
885 # may: using_headless_plugin defaults to $using_freetype_fontconfig
888 # Default values, as such probably valid just for Linux, set
889 # differently below just for Mac OSX, but at least better than
890 # hardcoding these as we used to do. Much of this is duplicated also
891 # in solenv for old build system and for gbuild, ideally we should
892 # perhaps define stuff like this only here in configure.ac?
894 LINKFLAGSSHL="-shared"
898 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
901 INSTROOTCONTENTSUFFIX=
904 HOST_PLATFORM="$host"
906 host_cpu_for_clang="$host_cpu"
911 using_freetype_fontconfig=yes
916 dnl ===========================================================
917 dnl Check whether we're using Solaris 10 - SPARC or Intel.
918 dnl ===========================================================
919 AC_MSG_CHECKING([the Solaris operating system release])
920 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
921 if test "$_os_release" -lt "10"; then
922 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
924 AC_MSG_RESULT([ok ($_os_release)])
927 dnl Check whether we're using a SPARC or i386 processor
928 AC_MSG_CHECKING([the processor type])
929 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
930 AC_MSG_RESULT([ok ($host_cpu)])
932 AC_MSG_ERROR([only SPARC and i386 processors are supported])
936 linux-gnu*|k*bsd*-gnu*|linux-musl*)
937 using_freetype_fontconfig=yes
942 if test "$enable_fuzzers" = yes; then
943 test_system_freetype=no
949 using_freetype_fontconfig=yes
955 # When building on Windows normally with MSVC under Cygwin,
956 # configure thinks that the host platform (the platform the
957 # built code will run on) is Cygwin, even if it obviously is
958 # Windows, which in Autoconf terminology is called
959 # "mingw32". (Which is misleading as MinGW is the name of the
960 # tool-chain, not an operating system.)
962 # Somewhat confusing, yes. But this configure script doesn't
963 # look at $host etc that much, it mostly uses its own $_os
964 # variable, set here in this case statement.
966 using_freetype_fontconfig=no
977 if test "$host_cpu" = "aarch64"; then
981 enable_firebird_sdbc=no
986 using_freetype_fontconfig=no
990 if test -n "$LODE_HOME" ; then
992 AC_MSG_NOTICE([sanitized the PATH to $PATH])
995 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
996 INSTROOTCONTENTSUFFIX=/Contents
997 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
998 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
999 LINKFLAGSSHL="-dynamiclib -single_module"
1006 # -undefined error is the default
1007 LINKFLAGSNOUNDEFS=""
1010 # Apple's Clang uses "arm64"
1011 host_cpu_for_clang=arm64
1016 using_freetype_fontconfig=no
1022 if test -n "$LODE_HOME" ; then
1024 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1028 enable_mpl_subset=yes
1029 enable_lotuswordpro=no
1030 disable_database_connectivity_dependencies
1033 enable_extension_integration=no
1036 if test "$enable_ios_simulator" = "yes"; then
1037 host=x86_64-apple-darwin
1039 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1040 LINKFLAGSSHL="-dynamiclib -single_module"
1047 # -undefined error is the default
1048 LINKFLAGSNOUNDEFS=""
1050 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1051 # part, so use aarch64-apple-darwin for now.
1052 HOST_PLATFORM=aarch64-apple-darwin
1054 # Apple's Clang uses "arm64"
1055 host_cpu_for_clang=arm64
1059 using_freetype_fontconfig=yes
1062 AC_MSG_CHECKING([the FreeBSD operating system release])
1063 if test -n "$with_os_version"; then
1064 OSVERSION="$with_os_version"
1066 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1068 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1069 AC_MSG_CHECKING([which thread library to use])
1070 if test "$OSVERSION" -lt "500016"; then
1071 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1072 PTHREAD_LIBS="-pthread"
1073 elif test "$OSVERSION" -lt "502102"; then
1074 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1075 PTHREAD_LIBS="-lc_r"
1078 PTHREAD_LIBS="-pthread"
1080 AC_MSG_RESULT([$PTHREAD_LIBS])
1085 using_freetype_fontconfig=yes
1089 PTHREAD_LIBS="-pthread -lpthread"
1094 using_freetype_fontconfig=yes
1097 test_gstreamer_1_0=no
1098 PTHREAD_LIBS=-pthread
1103 using_freetype_fontconfig=yes
1105 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1106 PTHREAD_LIBS="-pthread"
1111 using_freetype_fontconfig=yes
1114 PTHREAD_LIBS="-pthread"
1119 # API exists, but seems not really usable since Android 7 AFAIK
1121 using_freetype_fontconfig=yes
1122 using_headless_plugin=no
1126 test_system_freetype=no
1128 disable_database_connectivity_dependencies
1129 enable_lotuswordpro=no
1130 enable_mpl_subset=yes
1131 enable_cairo_canvas=no
1141 using_freetype_fontconfig=yes
1150 enable_postgresql_sdbc=no
1151 enable_firebird_sdbc=no
1156 # API currently just exists in headers, not code
1158 using_freetype_fontconfig=yes
1162 test_split_debug=yes
1163 test_system_freetype=no
1164 enable_compiler_plugins=no
1165 enable_customtarget_components=yes
1168 enable_split_debug=yes
1169 enable_wasm_strip=yes
1171 with_theme="colibre"
1176 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1180 AC_SUBST(HOST_PLATFORM)
1182 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1183 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1186 # Set defaults, if not set by platform
1187 test "${test_cups+set}" = set || test_cups="$using_x11"
1188 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1189 test "${test_gen+set}" = set || test_gen="$using_x11"
1190 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1191 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1192 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1193 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1194 # don't handle test_qt5, so it can disable test_kf5 later
1195 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1196 test "${test_randr+set}" = set || test_randr="$using_x11"
1197 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1198 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1200 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1201 # Make sure fontconfig and freetype test both either system or not
1202 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1203 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1205 # convenience / platform overriding "fixes"
1207 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1208 test "$test_kf5" = yes && test_qt5=yes
1209 test "$test_gtk3" != yes && enable_gtk3=no
1210 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1211 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1212 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1214 # Keep in sync with the above $using_x11 depending test default list
1220 test_gstreamer_1_0=no
1231 test "$using_x11" = yes && USING_X11=TRUE
1233 if test "$using_freetype_fontconfig" = yes; then
1234 USE_HEADLESS_CODE=TRUE
1235 if test "$using_headless_plugin" = yes; then
1236 AC_DEFINE(ENABLE_HEADLESS)
1237 ENABLE_HEADLESS=TRUE
1244 AC_SUBST(ENABLE_HEADLESS)
1245 AC_SUBST(USE_HEADLESS_CODE)
1247 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1248 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1249 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1250 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1252 # ===================================================================
1254 # End initial platform setup
1256 # ===================================================================
1258 if test "$_os" = "Android" ; then
1259 # Verify that the NDK and SDK options are proper
1260 if test -z "$with_android_ndk"; then
1261 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1262 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1263 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1266 if test -z "$ANDROID_SDK_DIR"; then
1267 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1268 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1269 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1273 if test "$_os" = "AIX"; then
1274 AC_PATH_PROG(GAWK, gawk)
1275 if test -z "$GAWK"; then
1276 AC_MSG_ERROR([gawk not found in \$PATH])
1280 AC_SUBST(SDKDIRNAME)
1282 AC_SUBST(PTHREAD_CFLAGS)
1283 AC_SUBST(PTHREAD_LIBS)
1285 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1286 # By default use the ones specified by our build system,
1287 # but explicit override is possible.
1288 AC_MSG_CHECKING(for explicit AFLAGS)
1289 if test -n "$AFLAGS"; then
1290 AC_MSG_RESULT([$AFLAGS])
1296 AC_MSG_CHECKING(for explicit CFLAGS)
1297 if test -n "$CFLAGS"; then
1298 AC_MSG_RESULT([$CFLAGS])
1304 AC_MSG_CHECKING(for explicit CXXFLAGS)
1305 if test -n "$CXXFLAGS"; then
1306 AC_MSG_RESULT([$CXXFLAGS])
1312 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1313 if test -n "$OBJCFLAGS"; then
1314 AC_MSG_RESULT([$OBJCFLAGS])
1320 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1321 if test -n "$OBJCXXFLAGS"; then
1322 AC_MSG_RESULT([$OBJCXXFLAGS])
1328 AC_MSG_CHECKING(for explicit LDFLAGS)
1329 if test -n "$LDFLAGS"; then
1330 AC_MSG_RESULT([$LDFLAGS])
1340 AC_SUBST(OBJCXXFLAGS)
1344 AC_SUBST(x_CXXFLAGS)
1345 AC_SUBST(x_OBJCFLAGS)
1346 AC_SUBST(x_OBJCXXFLAGS)
1349 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1350 my_original_CFLAGS=$CFLAGS
1351 my_original_CXXFLAGS=$CXXFLAGS
1352 my_original_CPPFLAGS=$CPPFLAGS
1354 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1355 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1356 dnl AC_PROG_CC internally.
1357 if test "$_os" != "WINNT"; then
1358 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1362 if test -z "$CC_BASE"; then
1363 CC_BASE=`first_arg_basename "$CC"`
1367 if test "$_os" != "WINNT"; then
1368 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1372 AC_SUBST(ENDIANNESS)
1374 if test "$usable_dlapi" != no; then
1375 AC_DEFINE([HAVE_DLAPI])
1376 if test "$test_unix_dlapi" != no; then
1378 AC_SEARCH_LIBS([dlsym], [dl],
1379 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1380 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1382 AC_DEFINE([HAVE_UNIX_DLAPI])
1385 AC_SUBST(UNIX_DLAPI_LIBS)
1387 # Check for a (GNU) backtrace implementation
1388 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1389 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1390 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1392 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1393 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1394 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1397 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1398 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1401 dnl ===================================================================
1402 dnl Sanity checks for Emscripten SDK setup
1403 dnl ===================================================================
1405 EMSCRIPTEN_MIN_MAJOR=2
1406 EMSCRIPTEN_MIN_MINOR=0
1407 EMSCRIPTEN_MIN_TINY=31
1408 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1410 if test "$_os" = "Emscripten"; then
1411 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1412 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1413 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1414 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1415 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1416 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1418 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1419 if test $? -eq 0; then
1420 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1422 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1426 if ! which emconfigure >/dev/null 2>&1; then
1427 AC_MSG_WARN([emconfigure must be in your \$PATH])
1430 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1431 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1434 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1435 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1436 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1439 if test $EMSCRIPTEN_ERROR -ne 0; then
1440 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1443 AC_SUBST(EMSDK_FILE_PACKAGER)
1445 ###############################################################################
1446 # Extensions switches --enable/--disable
1447 ###############################################################################
1448 # By default these should be enabled unless having extra dependencies.
1449 # If there is extra dependency over configure options then the enable should
1450 # be automagic based on whether the requiring feature is enabled or not.
1451 # All this options change anything only with --enable-extension-integration.
1453 # The name of this option and its help string makes it sound as if
1454 # extensions are built anyway, just not integrated in the installer,
1455 # if you use --disable-extension-integration. Is that really the
1458 AC_ARG_ENABLE(ios-simulator,
1459 AS_HELP_STRING([--enable-ios-simulator],
1460 [build for iOS simulator])
1463 libo_FUZZ_ARG_ENABLE(extension-integration,
1464 AS_HELP_STRING([--disable-extension-integration],
1465 [Disable integration of the built extensions in the installer of the
1466 product. Use this switch to disable the integration.])
1469 AC_ARG_ENABLE(avmedia,
1470 AS_HELP_STRING([--disable-avmedia],
1471 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1472 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1474 AC_ARG_ENABLE(database-connectivity,
1475 AS_HELP_STRING([--disable-database-connectivity],
1476 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1479 # This doesn't mean not building (or "integrating") extensions
1480 # (although it probably should; i.e. it should imply
1481 # --disable-extension-integration I guess), it means not supporting
1482 # any extension mechanism at all
1483 libo_FUZZ_ARG_ENABLE(extensions,
1484 AS_HELP_STRING([--disable-extensions],
1485 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1488 AC_ARG_ENABLE(scripting,
1489 AS_HELP_STRING([--disable-scripting],
1490 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1491 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1493 # This is mainly for Android and iOS, but could potentially be used in some
1494 # special case otherwise, too, so factored out as a separate setting
1496 AC_ARG_ENABLE(dynamic-loading,
1497 AS_HELP_STRING([--disable-dynamic-loading],
1498 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1501 libo_FUZZ_ARG_ENABLE(report-builder,
1502 AS_HELP_STRING([--disable-report-builder],
1503 [Disable the Report Builder.])
1506 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1507 AS_HELP_STRING([--enable-ext-wiki-publisher],
1508 [Enable the Wiki Publisher extension.])
1511 libo_FUZZ_ARG_ENABLE(lpsolve,
1512 AS_HELP_STRING([--disable-lpsolve],
1513 [Disable compilation of the lp solve solver ])
1515 libo_FUZZ_ARG_ENABLE(coinmp,
1516 AS_HELP_STRING([--disable-coinmp],
1517 [Disable compilation of the CoinMP solver ])
1520 libo_FUZZ_ARG_ENABLE(pdfimport,
1521 AS_HELP_STRING([--disable-pdfimport],
1522 [Disable building the PDF import feature.])
1525 libo_FUZZ_ARG_ENABLE(pdfium,
1526 AS_HELP_STRING([--disable-pdfium],
1527 [Disable building PDFium. Results in unsecure PDF signature verification.])
1530 libo_FUZZ_ARG_ENABLE(skia,
1531 AS_HELP_STRING([--disable-skia],
1532 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1535 ###############################################################################
1537 dnl ---------- *** ----------
1539 libo_FUZZ_ARG_ENABLE(mergelibs,
1540 AS_HELP_STRING([--enable-mergelibs],
1541 [Merge several of the smaller libraries into one big, "merged", one.])
1544 libo_FUZZ_ARG_ENABLE(breakpad,
1545 AS_HELP_STRING([--enable-breakpad],
1546 [Enables breakpad for crash reporting.])
1549 libo_FUZZ_ARG_ENABLE(crashdump,
1550 AS_HELP_STRING([--disable-crashdump],
1551 [Disable dump.ini and dump-file, when --enable-breakpad])
1554 AC_ARG_ENABLE(fetch-external,
1555 AS_HELP_STRING([--disable-fetch-external],
1556 [Disables fetching external tarballs from web sources.])
1559 AC_ARG_ENABLE(fuzzers,
1560 AS_HELP_STRING([--enable-fuzzers],
1561 [Enables building libfuzzer targets for fuzz testing.])
1564 libo_FUZZ_ARG_ENABLE(pch,
1565 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1566 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1567 Using 'system' will include only external headers, 'base' will add also headers
1568 from base modules, 'normal' will also add all headers except from the module built,
1569 'full' will use all suitable headers even from a module itself.])
1572 libo_FUZZ_ARG_ENABLE(epm,
1573 AS_HELP_STRING([--enable-epm],
1574 [LibreOffice includes self-packaging code, that requires epm, however epm is
1575 useless for large scale package building.])
1578 libo_FUZZ_ARG_ENABLE(odk,
1579 AS_HELP_STRING([--enable-odk],
1580 [Enable building the Office Development Kit, the part that extensions need to build against])
1583 AC_ARG_ENABLE(mpl-subset,
1584 AS_HELP_STRING([--enable-mpl-subset],
1585 [Don't compile any pieces which are not MPL or more liberally licensed])
1588 libo_FUZZ_ARG_ENABLE(evolution2,
1589 AS_HELP_STRING([--enable-evolution2],
1590 [Allows the built-in evolution 2 addressbook connectivity build to be
1594 AC_ARG_ENABLE(avahi,
1595 AS_HELP_STRING([--enable-avahi],
1596 [Determines whether to use Avahi to advertise Impress to remote controls.])
1599 libo_FUZZ_ARG_ENABLE(werror,
1600 AS_HELP_STRING([--enable-werror],
1601 [Turn warnings to errors. (Has no effect in modules where the treating
1602 of warnings as errors is disabled explicitly.)]),
1605 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1606 AS_HELP_STRING([--enable-assert-always-abort],
1607 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1610 libo_FUZZ_ARG_ENABLE(dbgutil,
1611 AS_HELP_STRING([--enable-dbgutil],
1612 [Provide debugging support from --enable-debug and include additional debugging
1613 utilities such as object counting or more expensive checks.
1614 This is the recommended option for developers.
1615 Note that this makes the build ABI incompatible, it is not possible to mix object
1616 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1618 libo_FUZZ_ARG_ENABLE(debug,
1619 AS_HELP_STRING([--enable-debug],
1620 [Include debugging information, disable compiler optimization and inlining plus
1621 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1623 libo_FUZZ_ARG_ENABLE(split-debug,
1624 AS_HELP_STRING([--disable-split-debug],
1625 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1626 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1628 libo_FUZZ_ARG_ENABLE(gdb-index,
1629 AS_HELP_STRING([--disable-gdb-index],
1630 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1631 The feature requires a linker that supports the --gdb-index option.]))
1633 libo_FUZZ_ARG_ENABLE(sal-log,
1634 AS_HELP_STRING([--enable-sal-log],
1635 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1637 libo_FUZZ_ARG_ENABLE(symbols,
1638 AS_HELP_STRING([--enable-symbols],
1639 [Generate debug information.
1640 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1641 otherwise. It is possible to explicitly specify gbuild build targets
1642 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1643 everything in the directory; there is no ordering, more specific overrides
1644 more general, and disabling takes precedence).
1645 Example: --enable-symbols="all -sw/ -Library_sc".]))
1647 libo_FUZZ_ARG_ENABLE(optimized,
1648 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1649 [Whether to compile with optimization flags.
1650 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1651 otherwise. Using 'debug' will try to use only optimizations that should
1652 not interfere with debugging. For Emscripten we default to optimized (-O1)
1653 debug build, as otherwise binaries become too large.]))
1655 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1656 AS_HELP_STRING([--disable-runtime-optimizations],
1657 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1658 JVM JIT) that are known to interact badly with certain dynamic analysis
1659 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1660 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1661 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1663 AC_ARG_WITH(valgrind,
1664 AS_HELP_STRING([--with-valgrind],
1665 [Make availability of Valgrind headers a hard requirement.]))
1667 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1668 AS_HELP_STRING([--enable-compiler-plugins],
1669 [Enable compiler plugins that will perform additional checks during
1670 building. Enabled automatically by --enable-dbgutil.
1671 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1672 COMPILER_PLUGINS_DEBUG=
1673 if test "$enable_compiler_plugins" = debug; then
1674 enable_compiler_plugins=yes
1675 COMPILER_PLUGINS_DEBUG=TRUE
1678 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1679 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1680 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1681 relevant in the --disable-compiler-plugins case.]))
1683 libo_FUZZ_ARG_ENABLE(ooenv,
1684 AS_HELP_STRING([--enable-ooenv],
1685 [Enable ooenv for the instdir installation.]))
1688 AS_HELP_STRING([--enable-lto],
1689 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1690 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1693 AC_ARG_ENABLE(python,
1694 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1695 [Enables or disables Python support at run-time.
1696 Also specifies what Python to use at build-time.
1697 'fully-internal' even forces the internal version for uses of Python
1699 On macOS the only choices are
1700 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1703 libo_FUZZ_ARG_ENABLE(gtk3,
1704 AS_HELP_STRING([--disable-gtk3],
1705 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1706 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1709 AS_HELP_STRING([--enable-gtk4],
1710 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1712 AC_ARG_ENABLE(introspection,
1713 AS_HELP_STRING([--enable-introspection],
1714 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1715 Linux distributions.)]))
1717 AC_ARG_ENABLE(split-app-modules,
1718 AS_HELP_STRING([--enable-split-app-modules],
1719 [Split file lists for app modules, e.g. base, calc.
1720 Has effect only with make distro-pack-install]),
1723 AC_ARG_ENABLE(split-opt-features,
1724 AS_HELP_STRING([--enable-split-opt-features],
1725 [Split file lists for some optional features, e.g. pyuno, testtool.
1726 Has effect only with make distro-pack-install]),
1729 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1730 AS_HELP_STRING([--disable-cairo-canvas],
1731 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1734 libo_FUZZ_ARG_ENABLE(dbus,
1735 AS_HELP_STRING([--disable-dbus],
1736 [Determines whether to enable features that depend on dbus.
1737 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1738 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1740 libo_FUZZ_ARG_ENABLE(sdremote,
1741 AS_HELP_STRING([--disable-sdremote],
1742 [Determines whether to enable Impress remote control (i.e. the server component).]),
1743 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1745 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1746 AS_HELP_STRING([--disable-sdremote-bluetooth],
1747 [Determines whether to build sdremote with bluetooth support.
1748 Requires dbus on Linux.]))
1750 libo_FUZZ_ARG_ENABLE(gio,
1751 AS_HELP_STRING([--disable-gio],
1752 [Determines whether to use the GIO support.]),
1753 ,test "${enable_gio+set}" = set || enable_gio=yes)
1756 AS_HELP_STRING([--enable-qt5],
1757 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1762 AS_HELP_STRING([--enable-qt6],
1763 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1768 AS_HELP_STRING([--enable-kf5],
1769 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1770 KF5 are available.]),
1773 AC_ARG_ENABLE(gtk3_kde5,
1774 AS_HELP_STRING([--enable-gtk3-kde5],
1775 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1776 platforms where Gtk3, Qt5 and Plasma is available.]),
1780 AS_HELP_STRING([--enable-gen],
1781 [To select the gen backend in case of --disable-dynamic-loading.
1782 Per default auto-enabled when X11 is used.]),
1783 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1786 AS_HELP_STRING([--disable-gui],
1787 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1790 libo_FUZZ_ARG_ENABLE(randr,
1791 AS_HELP_STRING([--disable-randr],
1792 [Disable RandR support in the vcl project.]),
1793 ,test "${enable_randr+set}" = set || enable_randr=yes)
1795 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1796 AS_HELP_STRING([--disable-gstreamer-1-0],
1797 [Disable building with the gstreamer 1.0 avmedia backend.]),
1798 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1800 libo_FUZZ_ARG_ENABLE([eot],
1801 [AS_HELP_STRING([--enable-eot],
1802 [Enable support for Embedded OpenType fonts.])],
1803 ,test "${enable_eot+set}" = set || enable_eot=no)
1805 libo_FUZZ_ARG_ENABLE(cve-tests,
1806 AS_HELP_STRING([--disable-cve-tests],
1807 [Prevent CVE tests to be executed]),
1810 AC_ARG_ENABLE(build-opensymbol,
1811 AS_HELP_STRING([--enable-build-opensymbol],
1812 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1813 fontforge installed.]),
1816 AC_ARG_ENABLE(dependency-tracking,
1817 AS_HELP_STRING([--enable-dependency-tracking],
1818 [Do not reject slow dependency extractors.])[
1819 --disable-dependency-tracking
1820 Disables generation of dependency information.
1821 Speed up one-time builds.],
1824 AC_ARG_ENABLE(icecream,
1825 AS_HELP_STRING([--enable-icecream],
1826 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1827 It defaults to /opt/icecream for the location of the icecream gcc/g++
1828 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1832 AS_HELP_STRING([--enable-ld=<linker>],
1833 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1834 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1835 If <linker> contains any ':', the part before the first ':' is used as the value of
1836 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1837 needed for Clang 12).]),
1840 libo_FUZZ_ARG_ENABLE(cups,
1841 AS_HELP_STRING([--disable-cups],
1842 [Do not build cups support.])
1845 AC_ARG_ENABLE(ccache,
1846 AS_HELP_STRING([--disable-ccache],
1847 [Do not try to use ccache automatically.
1848 By default we will try to detect if ccache is available; in that case if
1849 CC/CXX are not yet set, and --enable-icecream is not given, we
1850 attempt to use ccache. --disable-ccache disables ccache completely.
1851 Additionally ccache's depend mode is enabled if possible,
1852 use --enable-ccache=nodepend to enable ccache without depend mode.
1856 AC_ARG_ENABLE(z7-debug,
1857 AS_HELP_STRING([--enable-z7-debug],
1858 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1859 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1860 Enabled by default if ccache is detected.]))
1862 libo_FUZZ_ARG_ENABLE(online-update,
1863 AS_HELP_STRING([--enable-online-update],
1864 [Enable the online update service that will check for new versions of
1865 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1866 If the value is "mar", the experimental Mozilla-like update will be
1867 enabled instead of the traditional update mechanism.]),
1870 AC_ARG_WITH(update-config,
1871 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1872 [Path to the update config ini file]))
1874 libo_FUZZ_ARG_ENABLE(extension-update,
1875 AS_HELP_STRING([--disable-extension-update],
1876 [Disable possibility to update installed extensions.]),
1879 libo_FUZZ_ARG_ENABLE(release-build,
1880 AS_HELP_STRING([--enable-release-build],
1881 [Enable release build. Note that the "release build" choice is orthogonal to
1882 whether symbols are present, debug info is generated, or optimization
1884 See http://wiki.documentfoundation.org/Development/DevBuild]),
1887 AC_ARG_ENABLE(windows-build-signing,
1888 AS_HELP_STRING([--enable-windows-build-signing],
1889 [Enable signing of windows binaries (*.exe, *.dll)]),
1892 AC_ARG_ENABLE(silent-msi,
1893 AS_HELP_STRING([--enable-silent-msi],
1894 [Enable MSI with LIMITUI=1 (silent install).]),
1897 AC_ARG_ENABLE(macosx-code-signing,
1898 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1899 [Sign executables, dylibs, frameworks and the app bundle. If you
1900 don't provide an identity the first suitable certificate
1901 in your keychain is used.]),
1904 AC_ARG_ENABLE(macosx-package-signing,
1905 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1906 [Create a .pkg suitable for uploading to the Mac App Store and sign
1907 it. If you don't provide an identity the first suitable certificate
1908 in your keychain is used.]),
1911 AC_ARG_ENABLE(macosx-sandbox,
1912 AS_HELP_STRING([--enable-macosx-sandbox],
1913 [Make the app bundle run in a sandbox. Requires code signing.
1914 Is required by apps distributed in the Mac App Store, and implies
1915 adherence to App Store rules.]),
1918 AC_ARG_WITH(macosx-bundle-identifier,
1919 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1920 [Define the macOS bundle identifier. Default is the somewhat weird
1921 org.libreoffice.script ("script", huh?).]),
1922 ,with_macosx_bundle_identifier=org.libreoffice.script)
1924 AC_ARG_WITH(macosx-provisioning-profile,
1925 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1926 [Specify the path to a provisioning profile to use]),
1929 AC_ARG_WITH(product-name,
1930 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1931 [Define the product name. Default is AC_PACKAGE_NAME.]),
1932 ,with_product_name=$PRODUCTNAME)
1934 libo_FUZZ_ARG_ENABLE(community-flavor,
1935 AS_HELP_STRING([--disable-community-flavor],
1936 [Disable the Community branding.]),
1939 AC_ARG_WITH(package-version,
1940 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1941 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1944 libo_FUZZ_ARG_ENABLE(readonly-installset,
1945 AS_HELP_STRING([--enable-readonly-installset],
1946 [Prevents any attempts by LibreOffice to write into its installation. That means
1947 at least that no "system-wide" extensions can be added. Partly experimental work in
1948 progress, probably not fully implemented. Always enabled for macOS.]),
1951 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1952 AS_HELP_STRING([--disable-mariadb-sdbc],
1953 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1956 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1957 AS_HELP_STRING([--disable-postgresql-sdbc],
1958 [Disable the build of the PostgreSQL-SDBC driver.])
1961 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1962 AS_HELP_STRING([--disable-lotuswordpro],
1963 [Disable the build of the Lotus Word Pro filter.]),
1964 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1966 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1967 AS_HELP_STRING([--disable-firebird-sdbc],
1968 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1969 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1971 AC_ARG_ENABLE(bogus-pkg-config,
1972 AS_HELP_STRING([--enable-bogus-pkg-config],
1973 [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.]),
1976 AC_ARG_ENABLE(openssl,
1977 AS_HELP_STRING([--disable-openssl],
1978 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1979 components will use NSS. Work in progress,
1980 use only if you are hacking on it.]),
1981 ,enable_openssl=yes)
1983 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1984 AS_HELP_STRING([--enable-cipher-openssl-backend],
1985 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1986 Requires --enable-openssl.]))
1989 AS_HELP_STRING([--disable-nss],
1990 [Disable using NSS. If disabled,
1991 components will use openssl. Work in progress,
1992 use only if you are hacking on it.]),
1995 AC_ARG_ENABLE(library-bin-tar,
1996 AS_HELP_STRING([--enable-library-bin-tar],
1997 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1998 Some libraries can save their build result in a tarball
1999 stored in TARFILE_LOCATION. That binary tarball is
2000 uniquely identified by the source tarball,
2001 the content of the config_host.mk file and the content
2002 of the top-level directory in core for that library
2003 If this option is enabled, then if such a tarfile exist, it will be untarred
2004 instead of the source tarfile, and the build step will be skipped for that
2006 If a proper tarfile does not exist, then the normal source-based
2007 build is done for that library and a proper binary tarfile is created
2008 for the next time.]),
2011 AC_ARG_ENABLE(dconf,
2012 AS_HELP_STRING([--disable-dconf],
2013 [Disable the dconf configuration backend (enabled by default where
2016 libo_FUZZ_ARG_ENABLE(formula-logger,
2018 [--enable-formula-logger],
2019 [Enable formula logger for logging formula calculation flow in Calc.]
2024 AS_HELP_STRING([--disable-ldap],
2025 [Disable LDAP support.]),
2028 AC_ARG_ENABLE(opencl,
2029 AS_HELP_STRING([--disable-opencl],
2030 [Disable OpenCL support.]),
2033 libo_FUZZ_ARG_ENABLE(librelogo,
2034 AS_HELP_STRING([--disable-librelogo],
2035 [Do not build LibreLogo.]),
2036 ,enable_librelogo=yes)
2038 AC_ARG_ENABLE(wasm-strip,
2039 AS_HELP_STRING([--enable-wasm-strip],
2040 [Strip the static build like for WASM/emscripten platform.]),
2043 AC_ARG_WITH(main-module,
2044 AS_HELP_STRING([--with-main-module=<writer/calc>],
2045 [Specify which main module to build for wasm.
2046 Default value is 'writer'.]),
2049 AC_ARG_ENABLE(wasm-exceptions,
2050 AS_HELP_STRING([--enable-wasm-exceptions],
2051 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2052 matter of fact, this is currently not finished by any implementation)
2053 (see https://webassembly.org/roadmap/ for the current state]),
2056 AC_ARG_ENABLE(xmlhelp,
2057 AS_HELP_STRING([--disable-xmlhelp],
2058 [Disable XML help support]),
2059 ,enable_xmlhelp=yes)
2061 AC_ARG_ENABLE(customtarget-components,
2062 AS_HELP_STRING([--enable-customtarget-components],
2063 [Generates the static UNO object constructor mapping from the build.]))
2065 AC_ARG_ENABLE(float_device_pixel,
2066 AS_HELP_STRING([--enable-float-device-pixel],
2067 [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2070 dnl ===================================================================
2071 dnl Optional Packages (--with/without-)
2072 dnl ===================================================================
2074 AC_ARG_WITH(gcc-home,
2075 AS_HELP_STRING([--with-gcc-home],
2076 [Specify the location of gcc/g++ manually. This can be used in conjunction
2077 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2078 non-default path.]),
2081 AC_ARG_WITH(gnu-patch,
2082 AS_HELP_STRING([--with-gnu-patch],
2083 [Specify location of GNU patch on Solaris or FreeBSD.]),
2086 AC_ARG_WITH(build-platform-configure-options,
2087 AS_HELP_STRING([--with-build-platform-configure-options],
2088 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2092 AS_HELP_STRING([--with-gnu-cp],
2093 [Specify location of GNU cp on Solaris or FreeBSD.]),
2096 AC_ARG_WITH(external-tar,
2097 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2098 [Specify an absolute path of where to find (and store) tarfiles.]),
2099 TARFILE_LOCATION=$withval ,
2102 AC_ARG_WITH(referenced-git,
2103 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2104 [Specify another checkout directory to reference. This makes use of
2105 git submodule update --reference, and saves a lot of diskspace
2106 when having multiple trees side-by-side.]),
2107 GIT_REFERENCE_SRC=$withval ,
2110 AC_ARG_WITH(linked-git,
2111 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2112 [Specify a directory where the repositories of submodules are located.
2113 This uses a method similar to git-new-workdir to get submodules.]),
2114 GIT_LINK_SRC=$withval ,
2117 AC_ARG_WITH(galleries,
2118 AS_HELP_STRING([--with-galleries],
2119 [Specify how galleries should be built. It is possible either to
2120 build these internally from source ("build"),
2121 or to disable them ("no")]),
2125 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2126 [Choose which themes to include. By default those themes with an '*' are included.
2127 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2128 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2129 *elementary, *elementary_svg,
2130 *karasa_jaga, *karasa_jaga_svg,
2131 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2132 *sukapura, *sukapura_svg.]),
2135 libo_FUZZ_ARG_WITH(helppack-integration,
2136 AS_HELP_STRING([--without-helppack-integration],
2137 [It will not integrate the helppacks to the installer
2138 of the product. Please use this switch to use the online help
2139 or separate help packages.]),
2142 libo_FUZZ_ARG_WITH(fonts,
2143 AS_HELP_STRING([--without-fonts],
2144 [LibreOffice includes some third-party fonts to provide a reliable basis for
2145 help content, templates, samples, etc. When these fonts are already
2146 known to be available on the system then you should use this option.]),
2150 AS_HELP_STRING([--with-epm],
2151 [Decides which epm to use. Default is to use the one from the system if
2152 one is built. When either this is not there or you say =internal epm
2156 AC_ARG_WITH(package-format,
2157 AS_HELP_STRING([--with-package-format],
2158 [Specify package format(s) for LibreOffice installation sets. The
2159 implicit --without-package-format leads to no installation sets being
2160 generated. Possible values: aix, archive, bsd, deb, dmg,
2161 installed, msi, pkg, and rpm.
2162 Example: --with-package-format='deb rpm']),
2166 AS_HELP_STRING([--with-tls],
2167 [Decides which TLS/SSL and cryptographic implementations to use for
2168 LibreOffice's code. Default is to use NSS although OpenSSL is also
2169 possible. Notice that selecting NSS restricts the usage of OpenSSL
2170 in LO's code but selecting OpenSSL doesn't restrict by now the
2171 usage of NSS in LO's code. Possible values: openssl, nss.
2172 Example: --with-tls="nss"]),
2175 AC_ARG_WITH(system-libs,
2176 AS_HELP_STRING([--with-system-libs],
2177 [Use libraries already on system -- enables all --with-system-* flags.]),
2180 AC_ARG_WITH(system-bzip2,
2181 AS_HELP_STRING([--with-system-bzip2],
2182 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2183 [with_system_bzip2="$with_system_libs"])
2185 AC_ARG_WITH(system-headers,
2186 AS_HELP_STRING([--with-system-headers],
2187 [Use headers already on system -- enables all --with-system-* flags for
2188 external packages whose headers are the only entities used i.e.
2189 boost/odbc/sane-header(s).]),,
2190 [with_system_headers="$with_system_libs"])
2192 AC_ARG_WITH(system-jars,
2193 AS_HELP_STRING([--without-system-jars],
2194 [When building with --with-system-libs, also the needed jars are expected
2195 on the system. Use this to disable that]),,
2196 [with_system_jars="$with_system_libs"])
2198 AC_ARG_WITH(system-cairo,
2199 AS_HELP_STRING([--with-system-cairo],
2200 [Use cairo libraries already on system. Happens automatically for
2201 (implicit) --enable-gtk3.]))
2203 AC_ARG_WITH(system-epoxy,
2204 AS_HELP_STRING([--with-system-epoxy],
2205 [Use epoxy libraries already on system. Happens automatically for
2206 (implicit) --enable-gtk3.]),,
2207 [with_system_epoxy="$with_system_libs"])
2209 AC_ARG_WITH(myspell-dicts,
2210 AS_HELP_STRING([--with-myspell-dicts],
2211 [Adds myspell dictionaries to the LibreOffice installation set]),
2214 AC_ARG_WITH(system-dicts,
2215 AS_HELP_STRING([--without-system-dicts],
2216 [Do not use dictionaries from system paths.]),
2219 AC_ARG_WITH(external-dict-dir,
2220 AS_HELP_STRING([--with-external-dict-dir],
2221 [Specify external dictionary dir.]),
2224 AC_ARG_WITH(external-hyph-dir,
2225 AS_HELP_STRING([--with-external-hyph-dir],
2226 [Specify external hyphenation pattern dir.]),
2229 AC_ARG_WITH(external-thes-dir,
2230 AS_HELP_STRING([--with-external-thes-dir],
2231 [Specify external thesaurus dir.]),
2234 AC_ARG_WITH(system-zlib,
2235 AS_HELP_STRING([--with-system-zlib],
2236 [Use zlib already on system.]),,
2237 [with_system_zlib=auto])
2239 AC_ARG_WITH(system-jpeg,
2240 AS_HELP_STRING([--with-system-jpeg],
2241 [Use jpeg already on system.]),,
2242 [with_system_jpeg="$with_system_libs"])
2244 AC_ARG_WITH(system-expat,
2245 AS_HELP_STRING([--with-system-expat],
2246 [Use expat already on system.]),,
2247 [with_system_expat="$with_system_libs"])
2249 AC_ARG_WITH(system-libxml,
2250 AS_HELP_STRING([--with-system-libxml],
2251 [Use libxml/libxslt already on system.]),,
2252 [with_system_libxml=auto])
2254 AC_ARG_WITH(system-openldap,
2255 AS_HELP_STRING([--with-system-openldap],
2256 [Use the OpenLDAP LDAP SDK already on system.]),,
2257 [with_system_openldap="$with_system_libs"])
2259 libo_FUZZ_ARG_ENABLE(poppler,
2260 AS_HELP_STRING([--disable-poppler],
2261 [Disable building Poppler.])
2264 AC_ARG_WITH(system-poppler,
2265 AS_HELP_STRING([--with-system-poppler],
2266 [Use system poppler (only needed for PDF import).]),,
2267 [with_system_poppler="$with_system_libs"])
2269 AC_ARG_WITH(system-abseil,
2270 AS_HELP_STRING([--with-system-abseil],
2271 [Use the abseil libraries already on system.]),,
2272 [with_system_abseil="$with_system_libs"])
2274 AC_ARG_WITH(system-openjpeg,
2275 AS_HELP_STRING([--with-system-openjpeg],
2276 [Use the OpenJPEG library already on system.]),,
2277 [with_system_openjpeg="$with_system_libs"])
2279 libo_FUZZ_ARG_ENABLE(gpgmepp,
2280 AS_HELP_STRING([--disable-gpgmepp],
2281 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2284 AC_ARG_WITH(system-gpgmepp,
2285 AS_HELP_STRING([--with-system-gpgmepp],
2286 [Use gpgmepp already on system]),,
2287 [with_system_gpgmepp="$with_system_libs"])
2289 AC_ARG_WITH(system-mariadb,
2290 AS_HELP_STRING([--with-system-mariadb],
2291 [Use MariaDB/MySQL libraries already on system.]),,
2292 [with_system_mariadb="$with_system_libs"])
2294 AC_ARG_ENABLE(bundle-mariadb,
2295 AS_HELP_STRING([--enable-bundle-mariadb],
2296 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2299 AC_ARG_WITH(system-postgresql,
2300 AS_HELP_STRING([--with-system-postgresql],
2301 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2302 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2303 [with_system_postgresql="$with_system_libs"])
2305 AC_ARG_WITH(libpq-path,
2306 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2307 [Use this PostgreSQL C interface (libpq) installation for building
2308 the PostgreSQL-SDBC extension.]),
2311 AC_ARG_WITH(system-firebird,
2312 AS_HELP_STRING([--with-system-firebird],
2313 [Use Firebird libraries already on system, for building the Firebird-SDBC
2314 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2315 [with_system_firebird="$with_system_libs"])
2317 AC_ARG_WITH(system-libtommath,
2318 AS_HELP_STRING([--with-system-libtommath],
2319 [Use libtommath already on system]),,
2320 [with_system_libtommath="$with_system_libs"])
2322 AC_ARG_WITH(system-hsqldb,
2323 AS_HELP_STRING([--with-system-hsqldb],
2324 [Use hsqldb already on system.]))
2326 AC_ARG_WITH(hsqldb-jar,
2327 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2328 [Specify path to jarfile manually.]),
2329 HSQLDB_JAR=$withval)
2331 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2332 AS_HELP_STRING([--disable-scripting-beanshell],
2333 [Disable support for scripts in BeanShell.]),
2337 AC_ARG_WITH(system-beanshell,
2338 AS_HELP_STRING([--with-system-beanshell],
2339 [Use beanshell already on system.]),,
2340 [with_system_beanshell="$with_system_jars"])
2342 AC_ARG_WITH(beanshell-jar,
2343 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2344 [Specify path to jarfile manually.]),
2347 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2348 AS_HELP_STRING([--disable-scripting-javascript],
2349 [Disable support for scripts in JavaScript.]),
2353 AC_ARG_WITH(system-rhino,
2354 AS_HELP_STRING([--with-system-rhino],
2355 [Use rhino already on system.]),,)
2356 # [with_system_rhino="$with_system_jars"])
2357 # Above is not used as we have different debug interface
2358 # patched into internal rhino. This code needs to be fixed
2359 # before we can enable it by default.
2361 AC_ARG_WITH(rhino-jar,
2362 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2363 [Specify path to jarfile manually.]),
2366 AC_ARG_WITH(system-jfreereport,
2367 AS_HELP_STRING([--with-system-jfreereport],
2368 [Use JFreeReport already on system.]),,
2369 [with_system_jfreereport="$with_system_jars"])
2371 AC_ARG_WITH(sac-jar,
2372 AS_HELP_STRING([--with-sac-jar=JARFILE],
2373 [Specify path to jarfile manually.]),
2376 AC_ARG_WITH(libxml-jar,
2377 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2378 [Specify path to jarfile manually.]),
2379 LIBXML_JAR=$withval)
2381 AC_ARG_WITH(flute-jar,
2382 AS_HELP_STRING([--with-flute-jar=JARFILE],
2383 [Specify path to jarfile manually.]),
2386 AC_ARG_WITH(jfreereport-jar,
2387 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2388 [Specify path to jarfile manually.]),
2389 JFREEREPORT_JAR=$withval)
2391 AC_ARG_WITH(liblayout-jar,
2392 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2393 [Specify path to jarfile manually.]),
2394 LIBLAYOUT_JAR=$withval)
2396 AC_ARG_WITH(libloader-jar,
2397 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2398 [Specify path to jarfile manually.]),
2399 LIBLOADER_JAR=$withval)
2401 AC_ARG_WITH(libformula-jar,
2402 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2403 [Specify path to jarfile manually.]),
2404 LIBFORMULA_JAR=$withval)
2406 AC_ARG_WITH(librepository-jar,
2407 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2408 [Specify path to jarfile manually.]),
2409 LIBREPOSITORY_JAR=$withval)
2411 AC_ARG_WITH(libfonts-jar,
2412 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2413 [Specify path to jarfile manually.]),
2414 LIBFONTS_JAR=$withval)
2416 AC_ARG_WITH(libserializer-jar,
2417 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2418 [Specify path to jarfile manually.]),
2419 LIBSERIALIZER_JAR=$withval)
2421 AC_ARG_WITH(libbase-jar,
2422 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2423 [Specify path to jarfile manually.]),
2424 LIBBASE_JAR=$withval)
2426 AC_ARG_WITH(system-odbc,
2427 AS_HELP_STRING([--with-system-odbc],
2428 [Use the odbc headers already on system.]),,
2429 [with_system_odbc="auto"])
2431 AC_ARG_WITH(system-sane,
2432 AS_HELP_STRING([--with-system-sane],
2433 [Use sane.h already on system.]),,
2434 [with_system_sane="$with_system_headers"])
2436 AC_ARG_WITH(system-bluez,
2437 AS_HELP_STRING([--with-system-bluez],
2438 [Use bluetooth.h already on system.]),,
2439 [with_system_bluez="$with_system_headers"])
2441 AC_ARG_WITH(system-boost,
2442 AS_HELP_STRING([--with-system-boost],
2443 [Use boost already on system.]),,
2444 [with_system_boost="$with_system_headers"])
2446 AC_ARG_WITH(system-dragonbox,
2447 AS_HELP_STRING([--with-system-dragonbox],
2448 [Use dragonbox already on system.]),,
2449 [with_system_dragonbox="$with_system_headers"])
2451 AC_ARG_WITH(system-libfixmath,
2452 AS_HELP_STRING([--with-system-libfixmath],
2453 [Use libfixmath already on system.]),,
2454 [with_system_libfixmath="$with_system_libs"])
2456 AC_ARG_WITH(system-glm,
2457 AS_HELP_STRING([--with-system-glm],
2458 [Use glm already on system.]),,
2459 [with_system_glm="$with_system_headers"])
2461 AC_ARG_WITH(system-hunspell,
2462 AS_HELP_STRING([--with-system-hunspell],
2463 [Use libhunspell already on system.]),,
2464 [with_system_hunspell="$with_system_libs"])
2466 libo_FUZZ_ARG_ENABLE(zxing,
2467 AS_HELP_STRING([--disable-zxing],
2468 [Disable use of zxing external library.]))
2470 AC_ARG_WITH(system-zxing,
2471 AS_HELP_STRING([--with-system-zxing],
2472 [Use libzxing already on system.]),,
2473 [with_system_zxing="$with_system_libs"])
2475 AC_ARG_WITH(system-box2d,
2476 AS_HELP_STRING([--with-system-box2d],
2477 [Use box2d already on system.]),,
2478 [with_system_box2d="$with_system_libs"])
2480 AC_ARG_WITH(system-mythes,
2481 AS_HELP_STRING([--with-system-mythes],
2482 [Use mythes already on system.]),,
2483 [with_system_mythes="$with_system_libs"])
2485 AC_ARG_WITH(system-altlinuxhyph,
2486 AS_HELP_STRING([--with-system-altlinuxhyph],
2487 [Use ALTLinuxhyph already on system.]),,
2488 [with_system_altlinuxhyph="$with_system_libs"])
2490 AC_ARG_WITH(system-lpsolve,
2491 AS_HELP_STRING([--with-system-lpsolve],
2492 [Use lpsolve already on system.]),,
2493 [with_system_lpsolve="$with_system_libs"])
2495 AC_ARG_WITH(system-coinmp,
2496 AS_HELP_STRING([--with-system-coinmp],
2497 [Use CoinMP already on system.]),,
2498 [with_system_coinmp="$with_system_libs"])
2500 AC_ARG_WITH(system-liblangtag,
2501 AS_HELP_STRING([--with-system-liblangtag],
2502 [Use liblangtag library already on system.]),,
2503 [with_system_liblangtag="$with_system_libs"])
2505 AC_ARG_WITH(system-lockfile,
2506 AS_HELP_STRING([--with-system-lockfile[=file]],
2507 [Detect a system lockfile program or use the \$file argument.]))
2510 AS_HELP_STRING([--without-webdav],
2511 [Disable WebDAV support in the UCB.]))
2513 AC_ARG_WITH(linker-hash-style,
2514 AS_HELP_STRING([--with-linker-hash-style],
2515 [Use linker with --hash-style=<style> when linking shared objects.
2516 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2517 if supported on the build system, and "sysv" otherwise.]))
2519 AC_ARG_WITH(jdk-home,
2520 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2521 [If you have installed JDK 9 or later on your system please supply the
2522 path here. Note that this is not the location of the java command but the
2523 location of the entire distribution. In case of cross-compiling, this
2524 is the JDK of the host os. Use --with-build-platform-configure-options
2525 to point to a different build platform JDK.]),
2529 AS_HELP_STRING([--with-help],
2530 [Enable the build of help. There is a special parameter "common" that
2531 can be used to bundle only the common part, .e.g help-specific icons.
2532 This is useful when you build the helpcontent separately.])
2534 Usage: --with-help build the old local help
2535 --without-help no local help (default)
2536 --with-help=html build the new HTML local help
2537 --with-help=online build the new HTML online help
2541 AC_ARG_WITH(omindex,
2542 AS_HELP_STRING([--with-omindex],
2543 [Enable the support of xapian-omega index for online help.])
2545 Usage: --with-omindex=server prepare the pages for omindex
2546 but let xapian-omega be built in server.
2547 --with-omindex=noxap do not prepare online pages
2552 libo_FUZZ_ARG_WITH(java,
2553 AS_HELP_STRING([--with-java=<java command>],
2554 [Specify the name of the Java interpreter command. Typically "java"
2555 which is the default.
2557 To build without support for Java components, applets, accessibility
2558 or the XML filters written in Java, use --without-java or --with-java=no.]),
2559 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2560 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2563 AC_ARG_WITH(jvm-path,
2564 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2565 [Use a specific JVM search path at runtime.
2566 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2569 AC_ARG_WITH(ant-home,
2570 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2571 [If you have installed Apache Ant on your system, please supply the path here.
2572 Note that this is not the location of the Ant binary but the location
2573 of the entire distribution.]),
2576 AC_ARG_WITH(symbol-config,
2577 AS_HELP_STRING([--with-symbol-config],
2578 [Configuration for the crashreport symbol upload]),
2580 [with_symbol_config=no])
2582 AC_ARG_WITH(export-validation,
2583 AS_HELP_STRING([--without-export-validation],
2584 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2585 ,with_export_validation=auto)
2587 AC_ARG_WITH(bffvalidator,
2588 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2589 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2590 Requires installed Microsoft Office Binary File Format Validator.
2591 Note: export-validation (--with-export-validation) is required to be turned on.
2592 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2593 ,with_bffvalidator=no)
2595 libo_FUZZ_ARG_WITH(junit,
2596 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2597 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2598 --without-junit disables those tests. Not relevant in the --without-java case.]),
2601 AC_ARG_WITH(hamcrest,
2602 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2603 [Specifies the hamcrest jar file to use for JUnit-based tests.
2604 --without-junit disables those tests. Not relevant in the --without-java case.]),
2607 AC_ARG_WITH(perl-home,
2608 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2609 [If you have installed Perl 5 Distribution, on your system, please
2610 supply the path here. Note that this is not the location of the Perl
2611 binary but the location of the entire distribution.]),
2614 libo_FUZZ_ARG_WITH(doxygen,
2616 [--with-doxygen=<absolute path to doxygen executable>],
2617 [Specifies the doxygen executable to use when generating ODK C/C++
2618 documentation. --without-doxygen disables generation of ODK C/C++
2619 documentation. Not relevant in the --disable-odk case.]),
2622 AC_ARG_WITH(visual-studio,
2623 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2624 [Specify which Visual Studio version to use in case several are
2625 installed. Currently 2019 (default) and 2022 are supported.]),
2628 AC_ARG_WITH(windows-sdk,
2629 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2630 [Specify which Windows SDK, or "Windows Kit", version to use
2631 in case the one that came with the selected Visual Studio
2632 is not what you want for some reason. Note that not all compiler/SDK
2633 combinations are supported. The intent is that this option should not
2638 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2639 [Use this option to build LibreOffice with additional UI language support.
2640 English (US) is always included by default.
2641 Separate multiple languages with space.
2642 For all languages, use --with-lang=ALL.]),
2645 AC_ARG_WITH(locales,
2646 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2647 [Use this option to limit the locale information built in.
2648 Separate multiple locales with space.
2649 Very experimental and might well break stuff.
2650 Just a desperate measure to shrink code and data size.
2651 By default all the locales available is included.
2652 Just works with --disable-dynloading. Defaults to "ALL".
2653 This option is completely unrelated to --with-lang.])
2655 Affects also our character encoding conversion
2656 tables for encodings mainly targeted for a
2657 particular locale, like EUC-CN and EUC-TW for
2658 zh, ISO-2022-JP for ja.
2660 Affects also our add-on break iterator data for
2663 For the default, all locales, don't use this switch at all.
2664 Specifying just the language part of a locale means all matching
2665 locales will be included.
2669 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2670 libo_FUZZ_ARG_WITH(krb5,
2671 AS_HELP_STRING([--with-krb5],
2672 [Enable MIT Kerberos 5 support in modules that support it.
2673 By default automatically enabled on platforms
2674 where a good system Kerberos 5 is available.]),
2677 libo_FUZZ_ARG_WITH(gssapi,
2678 AS_HELP_STRING([--with-gssapi],
2679 [Enable GSSAPI support in modules that support it.
2680 By default automatically enabled on platforms
2681 where a good system GSSAPI is available.]),
2684 libo_FUZZ_ARG_WITH(lxml,
2685 AS_HELP_STRING([--without-lxml],
2686 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2687 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2688 report widget classes and ids.]),
2691 libo_FUZZ_ARG_WITH(latest-c++,
2692 AS_HELP_STRING([--with-latest-c++],
2693 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2694 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2695 [with_latest_c__=no])
2697 AC_ARG_WITH(gtk3-build,
2698 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2699 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2700 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2702 dnl ===================================================================
2704 dnl ===================================================================
2706 AC_ARG_WITH(branding,
2707 AS_HELP_STRING([--with-branding=/path/to/images],
2708 [Use given path to retrieve branding images set.])
2710 Search for intro.png about.svg and logo.svg.
2711 If any is missing, default ones will be used instead.
2713 Search also progress.conf for progress
2714 settings on intro screen :
2716 PROGRESSBARCOLOR="255,255,255" Set color of
2717 progress bar. Comma separated RGB decimal values.
2718 PROGRESSSIZE="407,6" Set size of progress bar.
2719 Comma separated decimal values (width, height).
2720 PROGRESSPOSITION="61,317" Set position of progress
2721 bar from left,top. Comma separated decimal values.
2722 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2723 bar frame. Comma separated RGB decimal values.
2724 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2725 bar text. Comma separated RGB decimal values.
2726 PROGRESSTEXTBASELINE="287" Set vertical position of
2727 progress bar text from top. Decimal value.
2729 Default values will be used if not found.
2734 AC_ARG_WITH(extra-buildid,
2735 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2736 [Show addition build identification in about dialog.]),
2741 AS_HELP_STRING([--with-vendor="John the Builder"],
2742 [Set vendor of the build.]),
2745 AC_ARG_WITH(privacy-policy-url,
2746 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2747 [The URL to your privacy policy (needed when
2748 enabling online-update or crashreporting via breakpad)]),
2749 [if test "x$with_privacy_policy_url" = "xyes"; then
2750 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2751 elif test "x$with_privacy_policy_url" = "xno"; then
2752 with_privacy_policy_url="undefined"
2754 ,[with_privacy_policy_url="undefined"])
2756 AC_ARG_WITH(android-package-name,
2757 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2758 [Set Android package name of the build.]),
2761 AC_ARG_WITH(compat-oowrappers,
2762 AS_HELP_STRING([--with-compat-oowrappers],
2763 [Install oo* wrappers in parallel with
2764 lo* ones to keep backward compatibility.
2765 Has effect only with make distro-pack-install]),
2768 AC_ARG_WITH(os-version,
2769 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2770 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2773 AC_ARG_WITH(parallelism,
2774 AS_HELP_STRING([--with-parallelism],
2775 [Number of jobs to run simultaneously during build. Parallel builds can
2776 save a lot of time on multi-cpu machines. Defaults to the number of
2777 CPUs on the machine, unless you configure --enable-icecream - then to
2781 AC_ARG_WITH(all-tarballs,
2782 AS_HELP_STRING([--with-all-tarballs],
2783 [Download all external tarballs unconditionally]))
2785 AC_ARG_WITH(gdrive-client-id,
2786 AS_HELP_STRING([--with-gdrive-client-id],
2787 [Provides the client id of the application for OAuth2 authentication
2788 on Google Drive. If either this or --with-gdrive-client-secret is
2789 empty, the feature will be disabled]),
2792 AC_ARG_WITH(gdrive-client-secret,
2793 AS_HELP_STRING([--with-gdrive-client-secret],
2794 [Provides the client secret of the application for OAuth2
2795 authentication on Google Drive. If either this or
2796 --with-gdrive-client-id is empty, the feature will be disabled]),
2799 AC_ARG_WITH(alfresco-cloud-client-id,
2800 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2801 [Provides the client id of the application for OAuth2 authentication
2802 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2803 empty, the feature will be disabled]),
2806 AC_ARG_WITH(alfresco-cloud-client-secret,
2807 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2808 [Provides the client secret of the application for OAuth2
2809 authentication on Alfresco Cloud. If either this or
2810 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2813 AC_ARG_WITH(onedrive-client-id,
2814 AS_HELP_STRING([--with-onedrive-client-id],
2815 [Provides the client id of the application for OAuth2 authentication
2816 on OneDrive. If either this or --with-onedrive-client-secret is
2817 empty, the feature will be disabled]),
2820 AC_ARG_WITH(onedrive-client-secret,
2821 AS_HELP_STRING([--with-onedrive-client-secret],
2822 [Provides the client secret of the application for OAuth2
2823 authentication on OneDrive. If either this or
2824 --with-onedrive-client-id is empty, the feature will be disabled]),
2826 dnl ===================================================================
2827 dnl Do we want to use pre-build binary tarball for recompile
2828 dnl ===================================================================
2830 if test "$enable_library_bin_tar" = "yes" ; then
2831 USE_LIBRARY_BIN_TAR=TRUE
2833 USE_LIBRARY_BIN_TAR=
2835 AC_SUBST(USE_LIBRARY_BIN_TAR)
2837 dnl ===================================================================
2838 dnl Test whether build target is Release Build
2839 dnl ===================================================================
2840 AC_MSG_CHECKING([whether build target is Release Build])
2841 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2843 ENABLE_RELEASE_BUILD=
2844 GET_TASK_ALLOW_ENTITLEMENT='
2845 <!-- We want to be able to debug a hardened process when not building for release -->
2846 <key>com.apple.security.get-task-allow</key>
2849 AC_MSG_RESULT([yes])
2850 ENABLE_RELEASE_BUILD=TRUE
2851 GET_TASK_ALLOW_ENTITLEMENT=''
2853 AC_SUBST(ENABLE_RELEASE_BUILD)
2854 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2856 AC_MSG_CHECKING([whether to build a Community flavor])
2857 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2858 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2859 AC_MSG_RESULT([yes])
2864 dnl ===================================================================
2865 dnl Test whether to sign Windows Build
2866 dnl ===================================================================
2867 AC_MSG_CHECKING([whether to sign windows build])
2868 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2869 AC_MSG_RESULT([yes])
2870 WINDOWS_BUILD_SIGNING="TRUE"
2873 WINDOWS_BUILD_SIGNING="FALSE"
2875 AC_SUBST(WINDOWS_BUILD_SIGNING)
2877 dnl ===================================================================
2878 dnl MacOSX build and runtime environment options
2879 dnl ===================================================================
2881 AC_ARG_WITH(macosx-version-min-required,
2882 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2883 [set the minimum OS version needed to run the built LibreOffice])
2885 e. g.: --with-macosx-version-min-required=10.14
2889 dnl ===================================================================
2890 dnl Check for incompatible options set by fuzzing, and reset those
2891 dnl automatically to working combinations
2892 dnl ===================================================================
2894 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2895 "$enable_dbus" != "$enable_avahi"; then
2896 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2897 enable_avahi=$enable_dbus
2902 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2903 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2907 add_lopath_before ()
2912 for dir in $LO_PATH ; do
2913 if test "$dir" != "$1" ; then
2914 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2917 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2920 dnl ===================================================================
2921 dnl check for required programs (grep, awk, sed, bash)
2922 dnl ===================================================================
2927 if test -n "$1"; then
2928 if test "$build_os" = "cygwin"; then
2929 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2931 new_path=`cygpath -sm "$formatted_path"`
2934 new_path=`cygpath -u "$formatted_path"`
2939 if test "$2" = "after"; then
2940 add_lopath_after "$new_path"
2942 add_lopath_before "$new_path"
2948 AC_PATH_PROG( AWK, $AWK)
2949 if test -z "$AWK"; then
2950 AC_MSG_ERROR([install awk to run this script])
2953 AC_PATH_PROG(BASH, bash)
2954 if test -z "$BASH"; then
2955 AC_MSG_ERROR([bash not found in \$PATH])
2959 # prefer parallel compression tools, if available
2960 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2961 if test -z "$COMPRESSIONTOOL"; then
2962 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2963 if test -z "$COMPRESSIONTOOL"; then
2964 AC_MSG_ERROR([gzip not found in \$PATH])
2967 AC_SUBST(COMPRESSIONTOOL)
2969 # use GNU parallel for packaging, if available
2970 AC_PATH_PROG(GNUPARALLEL, parallel)
2971 AC_SUBST(GNUPARALLEL)
2973 AC_MSG_CHECKING([for GNU or BSD tar])
2974 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2975 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
2976 if test $? -eq 0; then
2981 AC_MSG_RESULT($GNUTAR)
2982 if test -z "$GNUTAR"; then
2983 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2987 AC_MSG_CHECKING([for tar's option to strip components])
2988 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2989 if test $? -eq 0; then
2990 STRIP_COMPONENTS="--strip-components"
2992 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
2993 if test $? -eq 0; then
2994 STRIP_COMPONENTS="--strip-path"
2996 STRIP_COMPONENTS="unsupported"
2999 AC_MSG_RESULT($STRIP_COMPONENTS)
3000 if test x$STRIP_COMPONENTS = xunsupported; then
3001 AC_MSG_ERROR([you need a tar that is able to strip components.])
3003 AC_SUBST(STRIP_COMPONENTS)
3005 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3006 dnl desktop OSes from "mobile" ones.
3008 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3009 dnl In other words, that when building for an OS that is not a
3010 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3012 dnl Note the direction of the implication; there is no assumption that
3013 dnl cross-compiling would imply a non-desktop OS.
3015 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3016 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3017 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3018 if test "$_os" != Emscripten; then
3019 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3023 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3024 # also work with the default gtk3 plugin.
3025 if test "$enable_wasm_strip" = "yes"; then
3030 test "$_os" = Emscripten && enable_curl=no
3031 enable_database_connectivity=no
3034 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3035 enable_extension_integration=no
3036 enable_extensions=no
3037 enable_extension_update=no
3041 enable_lotuswordpro=no
3045 enable_online_update=no
3049 enable_report_builder=no
3051 enable_sdremote_bluetooth=no
3061 test_libpagemaker=no
3070 test "${with_fonts+set}" = set || with_fonts=yes
3071 test "${with_locales+set}" = set || with_locales=en
3073 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3074 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3075 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3076 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3077 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3078 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3079 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3080 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3081 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3082 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3083 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3084 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3085 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3086 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3087 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3088 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3089 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3092 EMSCRIPTEN_NEH_MAJOR=3
3093 EMSCRIPTEN_NEH_MINOR=1
3094 EMSCRIPTEN_NEH_TINY=3
3095 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3097 if test "$enable_wasm_exceptions" = yes; then
3098 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3099 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3100 if test $? -ne 0; then
3101 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3103 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3105 ENABLE_WASM_EXCEPTIONS=TRUE
3107 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3109 # Whether to build "avmedia" functionality or not.
3111 if test "$enable_avmedia" = yes; then
3112 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3113 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3115 test_gstreamer_1_0=no
3118 # Decide whether to build database connectivity stuff (including Base) or not.
3119 if test "$enable_database_connectivity" != no; then
3120 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3121 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3123 if test "$_os" = iOS; then
3124 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3126 disable_database_connectivity_dependencies
3129 if test -z "$enable_extensions"; then
3130 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3131 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3132 enable_extensions=yes
3136 DISABLE_SCRIPTING=''
3137 if test "$enable_scripting" = yes; then
3138 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3139 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3141 DISABLE_SCRIPTING='TRUE'
3142 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3145 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3146 # Disable dynamic_loading always for iOS and Android
3147 enable_dynamic_loading=no
3148 elif test -z "$enable_dynamic_loading"; then
3149 # Otherwise enable it unless specifically disabled
3150 enable_dynamic_loading=yes
3153 DISABLE_DYNLOADING=''
3154 if test "$enable_dynamic_loading" = yes; then
3155 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3157 DISABLE_DYNLOADING='TRUE'
3158 if test $_os != iOS -a $_os != Android; then
3159 enable_database_connectivity=no
3167 AC_SUBST(DISABLE_DYNLOADING)
3169 ENABLE_CUSTOMTARGET_COMPONENTS=
3170 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3171 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3172 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3173 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3176 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3178 if test "$enable_extensions" = yes; then
3179 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3180 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3182 enable_extension_integration=no
3183 enable_extension_update=no
3186 # remember SYSBASE value
3189 dnl ===================================================================
3190 dnl Sort out various gallery compilation options
3191 dnl ===================================================================
3192 WITH_GALLERY_BUILD=TRUE
3193 AC_MSG_CHECKING([how to build and package galleries])
3194 if test -n "${with_galleries}"; then
3195 if test "$with_galleries" = "build"; then
3196 if test "$enable_database_connectivity" = no; then
3197 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3199 AC_MSG_RESULT([build from source images internally])
3200 elif test "$with_galleries" = "no"; then
3202 AC_MSG_RESULT([disable non-internal gallery build])
3204 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3207 if test $_os != iOS -a $_os != Android; then
3208 AC_MSG_RESULT([internal src images for desktop])
3211 AC_MSG_RESULT([disable src image build])
3214 AC_SUBST(WITH_GALLERY_BUILD)
3216 dnl ===================================================================
3217 dnl Checks if ccache is available
3218 dnl ===================================================================
3220 if test "$enable_ccache" = "no"; then
3222 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3223 case "%$CC%$CXX%" in
3224 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3225 # assume that's good then
3226 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3227 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3228 CCACHE_DEPEND_MODE=1
3231 # try to use our own ccache if it is available and CCACHE was not already defined
3232 if test -z "$CCACHE"; then
3233 if test "$_os" = "WINNT"; then
3234 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3236 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3237 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3238 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3239 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3242 AC_PATH_PROG([CCACHE],[ccache],[not found])
3243 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3244 CCACHE=`win_short_path_for_make "$CCACHE"`
3245 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3247 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3248 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3249 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3257 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3258 # on windows/VC perhaps sccache is around?
3259 case "%$CC%$CXX%" in
3260 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3261 # assume that's good then
3262 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3263 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3264 CCACHE_DEPEND_MODE=1
3268 # for sharing code below, reuse CCACHE env var
3269 AC_PATH_PROG([CCACHE],[sccache],[not found])
3270 if test "$CCACHE" != "not found"; then
3271 CCACHE=`win_short_path_for_make "$CCACHE"`
3273 CCACHE_DEPEND_MODE=1
3278 if test "$CCACHE" = "not found"; then
3281 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3282 CCACHE_DEPEND_MODE=1
3283 # Need to check for ccache version: otherwise prevents
3284 # caching of the results (like "-x objective-c++" for Mac)
3285 if test $_os = Darwin -o $_os = iOS; then
3286 # Check ccache version
3287 AC_MSG_CHECKING([whether version of ccache is suitable])
3288 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3289 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3290 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3291 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3293 AC_MSG_RESULT([no, $CCACHE_VERSION])
3304 if test "$enable_ccache" = "nodepend"; then
3305 CCACHE_DEPEND_MODE=""
3307 AC_SUBST(CCACHE_DEPEND_MODE)
3309 # sccache defaults are good enough
3310 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3311 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3312 # -p works with both 4.2 and 4.4
3313 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3314 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3315 if test "$ccache_size" = ""; then
3316 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3317 if test "$ccache_size" = ""; then
3320 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3321 if test $ccache_size -lt 1024; then
3323 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3324 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3326 # warn that ccache may be too small for debug build
3327 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3328 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3331 if test $ccache_size -lt 5; then
3332 #warn that ccache may be too small for debug build
3333 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3334 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3340 if test "$enable_z7_debug" != no; then
3341 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3342 ENABLE_Z7_DEBUG=TRUE
3345 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3346 add_warning "ccache will not work with --disable-z7-debug"
3348 AC_SUBST(ENABLE_Z7_DEBUG)
3350 dnl ===================================================================
3351 dnl Checks for C compiler,
3352 dnl The check for the C++ compiler is later on.
3353 dnl ===================================================================
3354 if test "$_os" != "WINNT"; then
3356 AC_MSG_CHECKING([gcc home])
3357 if test -z "$with_gcc_home"; then
3358 if test "$enable_icecream" = "yes"; then
3359 if test -d "/usr/lib/icecc/bin"; then
3360 GCC_HOME="/usr/lib/icecc/"
3361 elif test -d "/usr/libexec/icecc/bin"; then
3362 GCC_HOME="/usr/libexec/icecc/"
3363 elif test -d "/opt/icecream/bin"; then
3364 GCC_HOME="/opt/icecream/"
3366 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3370 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3371 GCC_HOME_SET="false"
3374 GCC_HOME="$with_gcc_home"
3376 AC_MSG_RESULT($GCC_HOME)
3379 if test "$GCC_HOME_SET" = "true"; then
3380 if test -z "$CC"; then
3381 CC="$GCC_HOME/bin/gcc"
3384 if test -z "$CXX"; then
3385 CXX="$GCC_HOME/bin/g++"
3391 COMPATH=`dirname "$CC"`
3392 if test "$COMPATH" = "."; then
3393 AC_PATH_PROGS(COMPATH, $CC)
3394 dnl double square bracket to get single because of M4 quote...
3395 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3397 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3399 dnl ===================================================================
3401 dnl ===================================================================
3402 AC_MSG_CHECKING([whether to build with Java support])
3403 if test "$with_java" != "no"; then
3404 if test "$DISABLE_SCRIPTING" = TRUE; then
3405 AC_MSG_RESULT([no, overridden by --disable-scripting])
3409 AC_MSG_RESULT([yes])
3411 AC_DEFINE(HAVE_FEATURE_JAVA)
3418 AC_SUBST(ENABLE_JAVA)
3420 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3422 dnl ENABLE_JAVA="" indicate no Java support at all
3424 dnl ===================================================================
3425 dnl Check macOS SDK and compiler
3426 dnl ===================================================================
3428 if test $_os = Darwin; then
3430 # The SDK in the currently selected Xcode should be found.
3432 AC_MSG_CHECKING([what macOS SDK to use])
3433 for macosx_sdk in 13.0 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14; do
3434 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3435 if test -d "$MACOSX_SDK_PATH"; then
3438 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3439 if test -d "$MACOSX_SDK_PATH"; then
3444 if test ! -d "$MACOSX_SDK_PATH"; then
3445 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3448 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3449 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3452 MACOSX_SDK_VERSION=101400
3455 MACOSX_SDK_VERSION=101500
3458 MACOSX_SDK_VERSION=110000
3461 MACOSX_SDK_VERSION=110100
3464 MACOSX_SDK_VERSION=110300
3467 MACOSX_SDK_VERSION=120000
3470 MACOSX_SDK_VERSION=120100
3473 MACOSX_SDK_VERSION=120300
3476 MACOSX_SDK_VERSION=130000
3479 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3483 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3484 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3487 if test "$with_macosx_version_min_required" = "" ; then
3488 if test "$host_cpu" = x86_64; then
3489 with_macosx_version_min_required="10.14";
3491 with_macosx_version_min_required="11.0";
3495 # export this so that "xcrun" invocations later return matching values
3496 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3497 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3498 export DEVELOPER_DIR
3499 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3500 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3502 AC_MSG_CHECKING([whether Xcode is new enough])
3503 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3504 my_xcode_ver2=${my_xcode_ver1#Xcode }
3505 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3506 if test "$my_xcode_ver3" -ge 1205; then
3507 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3509 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3512 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3513 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3515 case "$with_macosx_version_min_required" in
3517 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3520 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3523 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3526 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3529 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3532 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3535 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3538 MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3541 MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3544 MAC_OS_X_VERSION_MIN_REQUIRED="130000"
3547 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.14--13.0])
3551 LIBTOOL=/usr/bin/libtool
3552 INSTALL_NAME_TOOL=install_name_tool
3553 if test -z "$save_CC"; then
3554 stdlib=-stdlib=libc++
3556 AC_MSG_CHECKING([what C compiler to use])
3557 CC="`xcrun -find clang`"
3558 CC_BASE=`first_arg_basename "$CC"`
3559 if test "$host_cpu" = x86_64; then
3560 CC+=" -target x86_64-apple-macos"
3562 CC+=" -target arm64-apple-macos"
3564 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3565 AC_MSG_RESULT([$CC])
3567 AC_MSG_CHECKING([what C++ compiler to use])
3568 CXX="`xcrun -find clang++`"
3569 CXX_BASE=`first_arg_basename "$CXX"`
3570 if test "$host_cpu" = x86_64; then
3571 CXX+=" -target x86_64-apple-macos"
3573 CXX+=" -target arm64-apple-macos"
3575 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3576 AC_MSG_RESULT([$CXX])
3578 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3581 STRIP=`xcrun -find strip`
3582 LIBTOOL=`xcrun -find libtool`
3583 RANLIB=`xcrun -find ranlib`
3586 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3587 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3588 AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3592 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3594 AC_MSG_CHECKING([whether to do code signing])
3596 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3599 if test "$enable_macosx_code_signing" = yes; then
3600 # By default use the first suitable certificate (?).
3602 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3603 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3604 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3605 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3606 # "Developer ID Application" one.
3607 identity="Developer ID Application:"
3609 identity=$enable_macosx_code_signing
3611 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3612 if test -n "$identity"; then
3613 MACOSX_CODESIGNING_IDENTITY=$identity
3614 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3615 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3617 AC_MSG_ERROR([cannot determine identity to use])
3621 AC_MSG_CHECKING([whether to create a Mac App Store package])
3623 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3625 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3626 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3628 if test "$enable_macosx_package_signing" = yes; then
3629 # By default use the first suitable certificate.
3630 # It should be a "3rd Party Mac Developer Installer" one
3631 identity="3rd Party Mac Developer Installer:"
3633 identity=$enable_macosx_package_signing
3635 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3636 if test -n "$identity"; then
3637 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3638 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3639 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3641 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3645 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3646 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3649 AC_MSG_CHECKING([whether to sandbox the application])
3651 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3652 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3653 elif test "$enable_macosx_sandbox" = yes; then
3654 ENABLE_MACOSX_SANDBOX=TRUE
3655 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3656 AC_MSG_RESULT([yes])
3661 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3662 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3663 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3665 if test -n "$with_macosx_provisioning_profile" ; then
3666 if test ! -f "$with_macosx_provisioning_profile"; then
3667 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3669 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3670 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3671 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3672 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3673 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3677 AC_SUBST(MACOSX_SDK_PATH)
3678 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3679 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3680 AC_SUBST(INSTALL_NAME_TOOL)
3681 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3682 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3683 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3684 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3685 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3686 AC_SUBST(MACOSX_PROVISIONING_INFO)
3687 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3688 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3689 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3691 dnl ===================================================================
3692 dnl Check iOS SDK and compiler
3693 dnl ===================================================================
3695 if test $_os = iOS; then
3696 AC_MSG_CHECKING([what iOS SDK to use])
3697 current_sdk_ver=16.1
3698 older_sdk_vers="16.0 15.6"
3699 if test "$enable_ios_simulator" = "yes"; then
3700 platform=iPhoneSimulator
3701 versionmin=-mios-simulator-version-min=14.5
3704 versionmin=-miphoneos-version-min=14.5
3706 xcode_developer=`xcode-select -print-path`
3708 for sdkver in $current_sdk_ver $older_sdk_vers; do
3709 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3716 if test -z "$sysroot"; then
3717 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3720 AC_MSG_RESULT($sysroot)
3722 stdlib="-stdlib=libc++"
3724 AC_MSG_CHECKING([what C compiler to use])
3725 CC="`xcrun -find clang`"
3726 CC_BASE=`first_arg_basename "$CC"`
3727 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3728 AC_MSG_RESULT([$CC])
3730 AC_MSG_CHECKING([what C++ compiler to use])
3731 CXX="`xcrun -find clang++`"
3732 CXX_BASE=`first_arg_basename "$CXX"`
3733 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3734 AC_MSG_RESULT([$CXX])
3736 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3739 STRIP=`xcrun -find strip`
3740 LIBTOOL=`xcrun -find libtool`
3741 RANLIB=`xcrun -find ranlib`
3744 AC_MSG_CHECKING([whether to treat the installation as read-only])
3746 if test $_os = Darwin; then
3747 enable_readonly_installset=yes
3748 elif test "$enable_extensions" != yes; then
3749 enable_readonly_installset=yes
3751 if test "$enable_readonly_installset" = yes; then
3752 AC_MSG_RESULT([yes])
3753 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3758 dnl ===================================================================
3759 dnl Structure of install set
3760 dnl ===================================================================
3762 if test $_os = Darwin; then
3763 LIBO_BIN_FOLDER=MacOS
3764 LIBO_ETC_FOLDER=Resources
3765 LIBO_LIBEXEC_FOLDER=MacOS
3766 LIBO_LIB_FOLDER=Frameworks
3767 LIBO_LIB_PYUNO_FOLDER=Resources
3768 LIBO_SHARE_FOLDER=Resources
3769 LIBO_SHARE_HELP_FOLDER=Resources/help
3770 LIBO_SHARE_JAVA_FOLDER=Resources/java
3771 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3772 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3773 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3774 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3775 LIBO_URE_BIN_FOLDER=MacOS
3776 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3777 LIBO_URE_LIB_FOLDER=Frameworks
3778 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3779 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3780 elif test $_os = WINNT; then
3781 LIBO_BIN_FOLDER=program
3782 LIBO_ETC_FOLDER=program
3783 LIBO_LIBEXEC_FOLDER=program
3784 LIBO_LIB_FOLDER=program
3785 LIBO_LIB_PYUNO_FOLDER=program
3786 LIBO_SHARE_FOLDER=share
3787 LIBO_SHARE_HELP_FOLDER=help
3788 LIBO_SHARE_JAVA_FOLDER=program/classes
3789 LIBO_SHARE_PRESETS_FOLDER=presets
3790 LIBO_SHARE_READMES_FOLDER=readmes
3791 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3792 LIBO_SHARE_SHELL_FOLDER=program/shell
3793 LIBO_URE_BIN_FOLDER=program
3794 LIBO_URE_ETC_FOLDER=program
3795 LIBO_URE_LIB_FOLDER=program
3796 LIBO_URE_MISC_FOLDER=program
3797 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3799 LIBO_BIN_FOLDER=program
3800 LIBO_ETC_FOLDER=program
3801 LIBO_LIBEXEC_FOLDER=program
3802 LIBO_LIB_FOLDER=program
3803 LIBO_LIB_PYUNO_FOLDER=program
3804 LIBO_SHARE_FOLDER=share
3805 LIBO_SHARE_HELP_FOLDER=help
3806 LIBO_SHARE_JAVA_FOLDER=program/classes
3807 LIBO_SHARE_PRESETS_FOLDER=presets
3808 LIBO_SHARE_READMES_FOLDER=readmes
3809 if test "$enable_fuzzers" != yes; then
3810 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3812 LIBO_SHARE_RESOURCE_FOLDER=resource
3814 LIBO_SHARE_SHELL_FOLDER=program/shell
3815 LIBO_URE_BIN_FOLDER=program
3816 LIBO_URE_ETC_FOLDER=program
3817 LIBO_URE_LIB_FOLDER=program
3818 LIBO_URE_MISC_FOLDER=program
3819 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3821 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3822 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3823 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3824 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3825 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3826 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3827 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3828 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3829 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3830 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3831 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3832 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3833 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3834 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3835 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3836 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3838 # Not all of them needed in config_host.mk, add more if need arises
3839 AC_SUBST(LIBO_BIN_FOLDER)
3840 AC_SUBST(LIBO_ETC_FOLDER)
3841 AC_SUBST(LIBO_LIB_FOLDER)
3842 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3843 AC_SUBST(LIBO_SHARE_FOLDER)
3844 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3845 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3846 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3847 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3848 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3849 AC_SUBST(LIBO_URE_BIN_FOLDER)
3850 AC_SUBST(LIBO_URE_ETC_FOLDER)
3851 AC_SUBST(LIBO_URE_LIB_FOLDER)
3852 AC_SUBST(LIBO_URE_MISC_FOLDER)
3853 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3855 dnl ===================================================================
3856 dnl Windows specific tests and stuff
3857 dnl ===================================================================
3861 # Return value: $regvalue
3864 if test "$build_os" = "wsl"; then
3865 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3869 local _regentry="/proc/registry${1}/${2}"
3870 if test -f "$_regentry"; then
3871 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3872 # Registry keys read via /proc/registry* are always \0 terminated!
3873 local _regvalue=$(tr -d '\0' < "$_regentry")
3874 if test $? -eq 0; then
3880 # Get a value from the 32-bit side of the Registry
3883 reg_get_value "32" "$1"
3886 # Get a value from the 64-bit side of the Registry
3889 reg_get_value "64" "$1"
3894 # Return value: $reglist
3897 if test "$build_os" = "wsl"; then
3898 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3902 reglist=$(ls "/proc/registry${1}/${2}")
3905 # List values from the 32-bit side of the Registry
3906 reg_list_values_32()
3908 reg_list_values "32" "$1"
3911 # List values from the 64-bit side of the Registry
3912 reg_list_values_64()
3914 reg_list_values "64" "$1"
3922 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3931 PLATFORMID=windows_x86_64
3933 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3935 WIN_MULTI_ARCH="x86"
3941 PLATFORMID=windows_x86
3944 WIN_OTHER_ARCH="x64"
3949 PLATFORMID=windows_aarch64
3951 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3952 WIN_HOST_ARCH="arm64"
3957 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3961 case "$build_cpu" in
3962 x86_64) WIN_BUILD_ARCH="x64" ;;
3963 i*86) WIN_BUILD_ARCH="x86" ;;
3964 aarch64) WIN_BUILD_ARCH="arm64" ;;
3966 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3970 SCPDEFS="$SCPDEFS -D_MSC_VER"
3974 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3975 # other-arch won't, but wouldn't break the build (x64 on x86).
3976 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3977 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3981 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3982 # To allow building Windows multi-arch releases without cross-tooling
3983 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3984 cross_compiling="yes"
3988 if test "$cross_compiling" = "yes"; then
3989 export CROSS_COMPILING=TRUE
3990 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3991 ENABLE_WASM_STRIP=TRUE
3993 if test "$_os" = "Emscripten"; then
3994 if test "$with_main_module" = "calc"; then
3995 ENABLE_WASM_STRIP_WRITER=TRUE
3997 ENABLE_WASM_STRIP_CALC=TRUE
4002 BUILD_TYPE="$BUILD_TYPE NATIVE"
4004 AC_SUBST(CROSS_COMPILING)
4005 AC_SUBST(ENABLE_WASM_STRIP)
4006 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4007 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4009 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4010 # NOTE: must _not_ be used for bundled external libraries!
4012 if test "$GCC" = "yes"; then
4013 AC_MSG_CHECKING( for -isystem )
4015 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4016 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4018 if test -n "$ISYSTEM"; then
4024 if test -z "$ISYSTEM"; then
4025 # fall back to using -I
4030 dnl ===================================================================
4031 dnl Check which Visual Studio compiler is used
4032 dnl ===================================================================
4034 map_vs_year_to_version()
4036 # Return value: $vsversion
4048 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4052 vs_versions_to_check()
4054 # Args: $1 (optional) : versions to check, in the order of preference
4055 # Return value: $vsversions
4059 if test -n "$1"; then
4060 map_vs_year_to_version "$1"
4061 vsversions=$vsversion
4063 # Default version is 2019
4068 win_get_env_from_vsvars32bat()
4070 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4071 # Also seems to be located in another directory under the same name: vsvars32.bat
4072 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4073 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4074 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4075 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4077 if test "$build_os" = "wsl"; then
4078 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4080 chmod +x $WRAPPERBATCHFILEPATH
4081 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4083 rm -f $WRAPPERBATCHFILEPATH
4084 printf '%s' "$result"
4089 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4090 if test -n "$regvalue"; then
4091 PathFormat "$regvalue"
4092 UCRTSDKDIR=$formatted_path_unix
4093 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4094 UCRTVERSION=$regvalue
4096 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4100 if test -z "$UCRTSDKDIR"; then
4101 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4102 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4103 if test -f "$ide_env_file"; then
4104 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4105 UCRTSDKDIR=$formatted_path
4106 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4107 dnl Hack needed at least by tml:
4108 if test "$UCRTVERSION" = 10.0.15063.0 \
4109 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4110 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4112 UCRTVERSION=10.0.14393.0
4115 AC_MSG_ERROR([No UCRT found])
4123 # Args: $1 (optional) : The VS version year
4124 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4126 unset vctest vctoolset vcnumwithdot vcbuildnumber
4128 vs_versions_to_check "$1"
4129 if test "$build_os" = wsl; then
4130 vswhere="$PROGRAMFILESX86"
4131 if test -z "$vswhere"; then
4132 vswhere="c:\\Program Files (x86)"
4135 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4137 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4138 PathFormat "$vswhere"
4139 vswhere=$formatted_path_unix
4140 for ver in $vsversions; do
4141 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4142 if test -z "$vswhereoutput"; then
4143 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4145 # Fall back to all MS products (this includes VC++ Build Tools)
4146 if ! test -n "$vswhereoutput"; then
4147 AC_MSG_CHECKING([VC++ Build Tools and similar])
4148 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4150 if test -n "$vswhereoutput"; then
4151 PathFormat "$vswhereoutput"
4152 vctest=$formatted_path_unix
4157 if test -n "$vctest"; then
4159 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4160 vcnumwithdot=$vcnumwithdot.0
4162 case "$vcnumwithdot" in
4172 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4179 AC_MSG_CHECKING([$1 compiler])
4181 CL_EXE_PATH="$2/cl.exe"
4183 if test ! -f "$CL_EXE_PATH"; then
4184 if test "$1" = "multi-arch"; then
4185 AC_MSG_WARN([no compiler (cl.exe) in $2])
4188 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4192 dnl ===========================================================
4193 dnl Check for the corresponding mspdb*.dll
4194 dnl ===========================================================
4196 # MSVC 15.0 has libraries from 14.0?
4199 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4200 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4203 # The compiles has to find its shared libraries
4205 TEMP_PATH=`cygpath -d "$2"`
4206 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4208 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4209 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4214 AC_MSG_RESULT([$CL_EXE_PATH])
4220 if test "$_os" = "WINNT"; then
4221 AC_MSG_CHECKING([Visual C++])
4222 find_msvc "$with_visual_studio"
4223 if test -z "$vctest"; then
4224 if test -n "$with_visual_studio"; then
4225 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4227 AC_MSG_ERROR([no Visual Studio installation found])
4232 VC_PRODUCT_DIR="$vctest/VC"
4233 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4235 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4236 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4237 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4238 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4239 if test $? -ne 0; then
4245 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4246 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4247 test_cl_exe "build" "$MSVC_BUILD_PATH"
4250 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4251 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4252 test_cl_exe "host" "$MSVC_HOST_PATH"
4254 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4257 AC_MSG_CHECKING([for short pathname of VC product directory])
4258 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4259 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4264 AC_MSG_CHECKING([for UCRT location])
4266 # find_ucrt errors out if it doesn't find it
4267 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4268 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4269 ucrtincpath_formatted=$formatted_path
4270 # SOLARINC is used for external modules and must be set too.
4271 # And no, it's not sufficient to set SOLARINC only, as configure
4272 # itself doesn't honour it.
4273 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4274 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4275 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4276 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4278 AC_SUBST(UCRTSDKDIR)
4279 AC_SUBST(UCRTVERSION)
4281 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4282 # Find the proper version of MSBuild.exe to use based on the VS version
4283 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4284 if test -z "$regvalue" ; then
4285 if test "$WIN_BUILD_ARCH" != "x64"; then
4286 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4288 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4291 if test -d "$regvalue" ; then
4292 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4293 AC_MSG_RESULT([$regvalue])
4295 AC_MSG_ERROR([MSBuild.exe location not found])
4298 # Find the version of devenv.exe
4299 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4300 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4301 DEVENV_unix=$(cygpath -u "$DEVENV")
4302 if test ! -e "$DEVENV_unix"; then
4303 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4306 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4307 dnl needed when building CLR code:
4308 if test -z "$MSVC_CXX"; then
4309 # This gives us a posix path with 8.3 filename restrictions
4310 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4313 if test -z "$CC"; then
4315 CC_BASE=`first_arg_basename "$CC"`
4317 if test -z "$CXX"; then
4319 CXX_BASE=`first_arg_basename "$CXX"`
4322 if test -n "$CC"; then
4323 # Remove /cl.exe from CC case insensitive
4324 AC_MSG_NOTICE([found Visual C++ $vcyear])
4326 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4327 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4329 PathFormat "$COMPATH"
4330 COMPATH=`win_short_path_for_make "$formatted_path"`
4333 VCTOOLSET=$vctoolset
4335 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4336 # are always "better", we list them in reverse chronological order.
4338 case "$vcnumwithdot" in
4340 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4344 # The expectation is that --with-windows-sdk should not need to be used
4345 if test -n "$with_windows_sdk"; then
4346 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4347 *" "$with_windows_sdk" "*)
4348 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4351 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4356 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4361 AC_MSG_ERROR([Visual C++ not found after all, huh])
4364 # ERROR if VS version < 16.5
4365 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4366 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4367 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4368 // between Visual Studio versions and _MSC_VER:
4372 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4374 # WARN if VS version < 16.10
4375 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4376 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4380 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4382 if test $vs2019_recommended_version = yes; then
4383 AC_MSG_RESULT([yes])
4386 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."
4389 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4390 # version of the Explorer extension (and maybe other small
4391 # bits, too) needed when installing a 32-bit LibreOffice on a
4392 # 64-bit OS. The 64-bit Explorer extension is a feature that
4393 # has been present since long in OOo. Don't confuse it with
4394 # building LibreOffice itself as 64-bit code.
4399 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4400 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4401 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4402 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4405 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4406 AC_MSG_RESULT([found])
4408 AC_MSG_RESULT([not found])
4409 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4411 elif test "$WIN_HOST_ARCH" = "x64"; then
4416 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4417 AC_SUBST(CXX_X64_BINARY)
4419 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4420 # needed to support TWAIN scan on both 32- and 64-bit systems
4422 case "$WIN_HOST_ARCH" in
4424 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4425 if test -n "$CXX_X86_BINARY"; then
4427 AC_MSG_RESULT([preset])
4428 elif test -n "$WIN_MULTI_ARCH"; then
4430 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4431 AC_MSG_RESULT([found])
4433 AC_MSG_RESULT([not found])
4434 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4439 CXX_X86_BINARY=$MSVC_CXX
4443 AC_SUBST(CXX_X86_BINARY)
4451 AC_MSG_CHECKING([whether the compiler is actually Clang])
4452 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4458 [AC_MSG_RESULT([yes])
4460 [AC_MSG_RESULT([no])])
4461 AC_SUBST(COM_IS_CLANG)
4464 if test "$COM_IS_CLANG" = TRUE; then
4465 AC_MSG_CHECKING([whether Clang is new enough])
4466 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4467 #if !defined __apple_build_version__
4471 [my_apple_clang=yes],[my_apple_clang=])
4472 if test "$my_apple_clang" = yes; then
4473 AC_MSG_RESULT([assumed yes (Apple Clang)])
4474 elif test "$_os" = Emscripten; then
4475 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4477 if test "$_os" = WINNT; then
4478 dnl In which case, assume clang-cl:
4483 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4484 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4485 CLANGVER=`echo $clang_version \
4486 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4487 if test "$CLANGVER" -ge 80001; then
4488 AC_MSG_RESULT([yes ($clang_version)])
4490 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4492 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4493 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4497 SHOWINCLUDES_PREFIX=
4498 if test "$_os" = WINNT; then
4499 dnl We need to guess the prefix of the -showIncludes output, it can be
4501 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4502 echo "#include <stdlib.h>" > conftest.c
4503 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4504 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4505 rm -f conftest.c conftest.obj
4506 if test -z "$SHOWINCLUDES_PREFIX"; then
4507 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4509 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4512 AC_SUBST(SHOWINCLUDES_PREFIX)
4515 # prefix C with ccache if needed
4517 if test "$CCACHE" != ""; then
4518 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4522 CFLAGS="$CFLAGS --ccache-skip -O2"
4523 # msvc does not fail on unknown options, check stdout
4524 if test "$COM" = MSC; then
4525 CFLAGS="$CFLAGS -nologo"
4527 save_ac_c_werror_flag=$ac_c_werror_flag
4528 ac_c_werror_flag=yes
4529 dnl an empty program will do, we're checking the compiler flags
4530 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4531 [use_ccache=yes], [use_ccache=no])
4533 ac_c_werror_flag=$save_ac_c_werror_flag
4534 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4535 AC_MSG_RESULT([yes])
4538 CC_BASE="ccache $CC_BASE"
4544 # ===================================================================
4545 # check various GCC options that Clang does not support now but maybe
4546 # will somewhen in the future, check them even for GCC, so that the
4548 # ===================================================================
4551 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4552 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4554 CFLAGS="$CFLAGS -Werror -ggdb2"
4555 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4557 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4558 AC_MSG_RESULT([yes])
4563 if test "$host_cpu" = "m68k"; then
4564 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4566 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4567 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4569 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4570 AC_MSG_RESULT([yes])
4576 AC_SUBST(HAVE_GCC_GGDB2)
4578 dnl ===================================================================
4579 dnl Test the gcc version
4580 dnl ===================================================================
4581 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4582 AC_MSG_CHECKING([the GCC version])
4583 _gcc_version=`$CC -dumpfullversion`
4584 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4585 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4586 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4588 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4590 if test "$gcc_full_version" -lt 70000; then
4591 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4594 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4595 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4596 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4597 # (which reports itself as GCC 4.2.1).
4600 AC_SUBST(GCC_VERSION)
4602 dnl Set the ENABLE_DBGUTIL variable
4603 dnl ===================================================================
4604 AC_MSG_CHECKING([whether to build with additional debug utilities])
4605 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4606 ENABLE_DBGUTIL="TRUE"
4607 # this is an extra var so it can have different default on different MSVC
4608 # versions (in case there are version specific problems with it)
4609 MSVC_USE_DEBUG_RUNTIME="TRUE"
4611 AC_MSG_RESULT([yes])
4612 # cppunit and graphite expose STL in public headers
4613 if test "$with_system_cppunit" = "yes"; then
4614 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4616 with_system_cppunit=no
4618 if test "$with_system_graphite" = "yes"; then
4619 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4621 with_system_graphite=no
4623 if test "$with_system_orcus" = "yes"; then
4624 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4626 with_system_orcus=no
4628 if test "$with_system_libcmis" = "yes"; then
4629 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4631 with_system_libcmis=no
4633 if test "$with_system_hunspell" = "yes"; then
4634 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4636 with_system_hunspell=no
4638 if test "$with_system_gpgmepp" = "yes"; then
4639 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4641 with_system_gpgmepp=no
4643 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4644 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4645 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4646 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4647 # of those two is using the system variant:
4648 if test "$with_system_libnumbertext" = "yes"; then
4649 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4651 with_system_libnumbertext=no
4653 if test "$with_system_libwps" = "yes"; then
4654 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4656 with_system_libwps=no
4660 MSVC_USE_DEBUG_RUNTIME=""
4663 AC_SUBST(ENABLE_DBGUTIL)
4664 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4666 dnl Set the ENABLE_DEBUG variable.
4667 dnl ===================================================================
4668 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4669 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4671 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4672 if test -z "$libo_fuzzed_enable_debug"; then
4673 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4675 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4680 AC_MSG_CHECKING([whether to do a debug build])
4681 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4683 if test -n "$ENABLE_DBGUTIL" ; then
4684 AC_MSG_RESULT([yes (dbgutil)])
4686 AC_MSG_RESULT([yes])
4692 AC_SUBST(ENABLE_DEBUG)
4694 dnl ===================================================================
4695 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4696 dnl This is done only after compiler checks (need to know if Clang is
4697 dnl used, for different defaults) and after checking if a debug build
4698 dnl is wanted (non-debug builds get the default linker if not explicitly
4699 dnl specified otherwise).
4700 dnl All checks for linker features/options should come after this.
4701 dnl ===================================================================
4704 use_ld=-fuse-ld=${1%%:*}
4706 if test "$use_ld_path" != "$1"; then
4707 if test "$COM_IS_CLANG" = TRUE; then
4708 if test "$CLANGVER" -ge 120000; then
4709 use_ld="${use_ld} --ld-path=${use_ld_path}"
4711 use_ld="-fuse-ld=${use_ld_path}"
4714 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4715 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4716 # pickup the alternative linker, when called by libtool for linking.
4717 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4718 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4721 use_ld_fail_if_error=$2
4723 AC_MSG_CHECKING([for $use_ld linker support])
4724 use_ld_ldflags_save="$LDFLAGS"
4725 LDFLAGS="$LDFLAGS $use_ld"
4726 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4729 printf ("hello world\n");
4730 ])], USE_LD=$use_ld, [])
4731 if test -n "$USE_LD"; then
4732 AC_MSG_RESULT( yes )
4735 if test -n "$use_ld_fail_if_error"; then
4741 if test -n "$use_ld_ok"; then
4742 dnl keep the value of LDFLAGS
4745 LDFLAGS="$use_ld_ldflags_save"
4749 if test "$enable_ld" != "no"; then
4750 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4751 if test -n "$enable_ld"; then
4752 check_use_ld "$enable_ld" fail_if_error
4753 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4754 dnl non-debug builds default to the default linker
4756 elif test -n "$COM_IS_CLANG"; then
4758 if test $? -ne 0; then
4760 if test $? -ne 0; then
4765 # For gcc first try gold, new versions also support lld/mold.
4767 if test $? -ne 0; then
4769 if test $? -ne 0; then
4774 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4776 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4777 if test -z "$ld_used"; then
4780 AC_MSG_CHECKING([for linker that is used])
4781 AC_MSG_RESULT([$ld_used])
4782 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4783 if echo "$ld_used" | grep -q "^GNU ld"; then
4784 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4785 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4789 if test "$enable_ld" = "yes"; then
4790 AC_MSG_ERROR([--enable-ld not supported])
4797 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4798 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4799 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4800 bsymbolic_functions_ldflags_save=$LDFLAGS
4801 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4802 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4805 printf ("hello world\n");
4806 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4807 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4808 AC_MSG_RESULT( found )
4810 AC_MSG_RESULT( not found )
4812 LDFLAGS=$bsymbolic_functions_ldflags_save
4814 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4817 if test "$GCC" = "yes"; then
4818 for flag in "--gc-sections" "-dead_strip"; do
4819 AC_MSG_CHECKING([for $flag linker support])
4820 ldflags_save=$LDFLAGS
4821 LDFLAGS="$LDFLAGS -Wl,$flag"
4822 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4825 printf ("hello world\n");
4827 LD_GC_SECTIONS="-Wl,$flag"
4828 AC_MSG_RESULT( found )
4830 AC_MSG_RESULT( not found )
4832 LDFLAGS=$ldflags_save
4833 if test -n "$LD_GC_SECTIONS"; then
4838 AC_SUBST(LD_GC_SECTIONS)
4840 HAVE_EXTERNAL_DWARF=
4841 if test "$enable_split_debug" != no; then
4843 if test -n "$ENABLE_LTO"; then
4844 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4845 elif test "$enable_split_debug" = yes; then
4847 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4848 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4851 if test -n "$use_split_debug"; then
4852 if test "$_os" = "Emscripten"; then
4853 TEST_CC_FLAG=-gseparate-dwarf
4855 TEST_CC_FLAG=-gsplit-dwarf
4857 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4859 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4860 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4862 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4863 AC_MSG_RESULT([yes])
4865 if test "$enable_split_debug" = yes; then
4872 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4873 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4874 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4877 AC_SUBST(HAVE_EXTERNAL_DWARF)
4879 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4880 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4882 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4883 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4885 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4886 AC_MSG_RESULT([yes])
4890 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4893 if test "$enable_gdb_index" != "no"; then
4894 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4895 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4896 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4898 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4900 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4901 if test "$have_ggnu_pubnames" != "TRUE"; then
4902 if test "$enable_gdb_index" = "yes"; then
4903 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4908 AC_MSG_RESULT( yes )
4909 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4910 ldflags_save=$LDFLAGS
4911 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4912 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4915 printf ("hello world\n");
4916 ])], ENABLE_GDB_INDEX=TRUE, [])
4917 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4918 AC_MSG_RESULT( yes )
4920 if test "$enable_gdb_index" = "yes"; then
4926 LDFLAGS=$ldflags_save
4930 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4931 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4932 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4935 AC_SUBST(ENABLE_GDB_INDEX)
4937 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4940 if test "$enable_sal_log" = yes; then
4943 AC_SUBST(ENABLE_SAL_LOG)
4945 dnl Check for enable symbols option
4946 dnl ===================================================================
4947 AC_MSG_CHECKING([whether to generate debug information])
4948 if test -z "$enable_symbols"; then
4949 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4955 if test "$enable_symbols" = yes; then
4956 ENABLE_SYMBOLS_FOR=all
4957 AC_MSG_RESULT([yes])
4958 elif test "$enable_symbols" = no; then
4962 # Selective debuginfo.
4963 ENABLE_SYMBOLS_FOR="$enable_symbols"
4964 AC_MSG_RESULT([for "$enable_symbols"])
4966 AC_SUBST(ENABLE_SYMBOLS_FOR)
4968 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4969 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4970 AC_MSG_CHECKING([whether enough memory is available for linking])
4971 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4972 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4973 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4974 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4976 AC_MSG_RESULT([yes])
4981 ENABLE_OPTIMIZED_DEBUG=
4982 AC_MSG_CHECKING([whether to compile with optimization flags])
4983 if test -z "$enable_optimized"; then
4984 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4987 enable_optimized=yes
4990 if test "$enable_optimized" = yes; then
4991 ENABLE_OPTIMIZED=TRUE
4992 AC_MSG_RESULT([yes])
4993 elif test "$enable_optimized" = debug; then
4994 ENABLE_OPTIMIZED_DEBUG=TRUE
4995 AC_MSG_RESULT([yes (debug)])
4997 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4998 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5000 CFLAGS="$CFLAGS -Werror -Og"
5001 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5003 if test "$HAVE_GCC_OG" = "TRUE"; then
5004 AC_MSG_RESULT([yes])
5009 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5010 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5015 AC_SUBST(ENABLE_OPTIMIZED)
5016 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5019 # determine CPUNAME, OS, ...
5029 PLATFORMID=aix_powerpc
5045 if test "$enable_ios_simulator" = "yes"; then
5050 PLATFORMID=macosx_aarch64
5054 if test "$enable_ios_simulator" = "yes"; then
5059 PLATFORMID=macosx_x86_64
5062 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5075 if test "$enable_ios_simulator" = "yes"; then
5076 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5080 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5085 PLATFORMID=ios_arm64
5098 PLATFORMID=dragonfly_x86
5103 PLATFORMID=dragonfly_x86_64
5106 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5120 PLATFORMID=freebsd_aarch64
5126 PLATFORMID=freebsd_x86
5131 PLATFORMID=freebsd_x86_64
5136 PLATFORMID=freebsd_powerpc64
5141 PLATFORMID=freebsd_powerpc
5144 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5160 PLATFORMID=haiku_x86
5165 PLATFORMID=haiku_x86_64
5168 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5184 PLATFORMID=kfreebsd_x86
5189 PLATFORMID=kfreebsd_x86_64
5192 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5197 linux-gnu*|linux-musl*)
5207 PLATFORMID=linux_aarch64
5209 EPM_FLAGS="-a arm64"
5214 PLATFORMID=linux_alpha
5220 PLATFORMID=linux_arm_eabi
5224 PLATFORMID=linux_arm_oabi
5232 PLATFORMID=linux_hppa
5237 PLATFORMID=linux_x86
5242 PLATFORMID=linux_ia64
5248 PLATFORMID=linux_mips_eb
5253 EPM_FLAGS="-a mips64"
5254 PLATFORMID=linux_mips64_eb
5259 EPM_FLAGS="-a mips64el"
5260 PLATFORMID=linux_mips64_el
5265 EPM_FLAGS="-a mipsel"
5266 PLATFORMID=linux_mips_el
5271 EPM_FLAGS="-a riscv64"
5272 PLATFORMID=linux_riscv64
5277 PLATFORMID=linux_m68k
5282 PLATFORMID=linux_powerpc
5287 PLATFORMID=linux_powerpc64
5291 RTL_ARCH=PowerPC_64_LE
5292 PLATFORMID=linux_powerpc64_le
5297 PLATFORMID=linux_sparc
5302 PLATFORMID=linux_sparc64
5307 PLATFORMID=linux_s390
5312 PLATFORMID=linux_s390x
5317 PLATFORMID=linux_x86_64
5321 RTL_ARCH=LOONGARCH64
5322 PLATFORMID=linux_loongarch64
5325 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5341 PLATFORMID=android_arm_eabi
5346 PLATFORMID=android_aarch64
5351 PLATFORMID=android_x86
5356 PLATFORMID=android_x86_64
5359 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5374 PLATFORMID=netbsd_x86
5379 PLATFORMID=netbsd_powerpc
5384 PLATFORMID=netbsd_sparc
5389 PLATFORMID=netbsd_x86_64
5392 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5407 PLATFORMID=openbsd_x86
5412 PLATFORMID=openbsd_x86_64
5415 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5418 SOLARINC="$SOLARINC -I/usr/local/include"
5431 PLATFORMID=solaris_x86
5436 PLATFORMID=solaris_sparc
5441 PLATFORMID=solaris_sparc64
5444 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5447 SOLARINC="$SOLARINC -I/usr/local/include"
5460 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5465 PLATFORMID=linux_x86
5469 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5474 if test "$enable_gui" = "no"; then
5475 if test "$using_x11" != yes; then
5476 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5482 AC_DEFINE(HAVE_FEATURE_UI)
5484 AC_SUBST(DISABLE_GUI)
5486 if test "$with_x" = "no"; then
5490 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5491 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5494 if test "$using_x11" = yes; then
5495 if test "$USING_X11" = TRUE; then
5496 AC_DEFINE(USING_X11)
5499 if test "$DISABLE_DYNLOADING" = TRUE; then
5504 if test "$USING_X11" = TRUE; then
5505 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5509 WORKDIR="${BUILDDIR}/workdir"
5510 INSTDIR="${BUILDDIR}/instdir"
5511 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5512 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5520 AC_SUBST([INSTROOT])
5521 AC_SUBST([INSTROOTBASE])
5525 AC_SUBST(PLATFORMID)
5526 AC_SUBST(WINDOWS_X64)
5527 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5528 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5530 if test "$OS" = WNT -a "$COM" = MSC; then
5532 INTEL) CPPU_ENV=msci ;;
5533 X86_64) CPPU_ENV=mscx ;;
5534 AARCH64) CPPU_ENV=msca ;;
5536 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5544 dnl ===================================================================
5545 dnl Test which package format to use
5546 dnl ===================================================================
5547 AC_MSG_CHECKING([which package format to use])
5548 if test -n "$with_package_format" -a "$with_package_format" != no; then
5549 for i in $with_package_format; do
5551 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5554 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5555 aix - AIX software distribution
5556 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5557 deb - Debian software distribution
5558 pkg - Solaris software distribution
5559 rpm - RedHat software distribution
5561 LibreOffice additionally supports:
5562 archive - .tar.gz or .zip
5564 installed - installation tree
5570 # fakeroot is needed to ensure correct file ownerships/permissions
5571 # inside deb packages and tar archives created on Linux and Solaris.
5572 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5573 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5574 if test "$FAKEROOT" = "no"; then
5576 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5579 PKGFORMAT="$with_package_format"
5580 AC_MSG_RESULT([$PKGFORMAT])
5583 AC_MSG_RESULT([none])
5587 dnl ===================================================================
5588 dnl handle help related options
5590 dnl If you change help related options, please update README.help
5591 dnl ===================================================================
5598 AC_MSG_CHECKING([which help to build])
5599 if test -n "$with_help" -a "$with_help" != "no"; then
5600 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5601 BUILD_TYPE="$BUILD_TYPE HELP"
5602 case "$with_help" in
5604 ENABLE_HTMLHELP=TRUE
5606 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5607 AC_MSG_RESULT([HTML (local)])
5610 ENABLE_HTMLHELP=TRUE
5612 AC_MSG_RESULT([HTML (online)])
5616 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5617 AC_MSG_RESULT([XML (local)])
5620 AC_MSG_ERROR([Unknown --with-help=$with_help])
5627 AC_MSG_CHECKING([if we need to build the help index tooling])
5628 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5629 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5631 AC_MSG_RESULT([yes])
5636 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5637 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5638 if test "$HELP_ONLINE" != TRUE; then
5639 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5641 case "$with_omindex" in
5643 HELP_OMINDEX_PAGE=TRUE
5644 AC_MSG_RESULT([SERVER])
5647 AC_MSG_RESULT([NOXAP])
5650 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5657 AC_MSG_CHECKING([whether to include the XML-help support])
5658 if test "$enable_xmlhelp" = yes; then
5659 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5661 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5662 AC_MSG_RESULT([yes])
5664 if test "$with_help" = yes; then
5665 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5670 dnl Test whether to integrate helppacks into the product's installer
5671 AC_MSG_CHECKING([for helppack integration])
5672 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5673 AC_MSG_RESULT([no integration])
5675 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5676 AC_MSG_RESULT([integration])
5679 AC_SUBST([ENABLE_HTMLHELP])
5680 AC_SUBST([HELP_OMINDEX_PAGE])
5681 AC_SUBST([HELP_ONLINE])
5682 # WITH_HELPPACKS is used only in configure
5684 dnl ===================================================================
5685 dnl Set up a different compiler to produce tools to run on the build
5686 dnl machine when doing cross-compilation
5687 dnl ===================================================================
5689 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5690 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5691 if test "$cross_compiling" = "yes"; then
5692 AC_MSG_CHECKING([for BUILD platform configuration])
5694 rm -rf CONF-FOR-BUILD config_build.mk
5695 mkdir CONF-FOR-BUILD
5696 # Here must be listed all files needed when running the configure script. In particular, also
5697 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5698 # keep them in the same order as there.
5699 (cd $SRC_ROOT && tar cf - \
5701 bin/get_config_variables \
5702 solenv/bin/getcompver.awk \
5703 solenv/inc/langlist.mk \
5706 config_host_lang.mk.in \
5709 bin/bffvalidator.sh.in \
5710 bin/odfvalidator.sh.in \
5711 bin/officeotron.sh.in \
5712 hardened_runtime.xcent.in \
5713 instsetoo_native/util/openoffice.lst.in \
5715 sysui/desktop/macosx/Info.plist.in \
5716 .vscode/vs-code-template.code-workspace.in \
5717 solenv/lockfile/autoconf.h.in \
5719 | (cd CONF-FOR-BUILD && tar xf -)
5720 cp configure CONF-FOR-BUILD
5721 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5723 unset COM USING_X11 OS CPUNAME
5724 unset CC CXX SYSBASE CFLAGS
5725 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5726 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5727 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5728 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5729 if test -n "$CC_FOR_BUILD"; then
5730 export CC="$CC_FOR_BUILD"
5731 CC_BASE=`first_arg_basename "$CC"`
5733 if test -n "$CXX_FOR_BUILD"; then
5734 export CXX="$CXX_FOR_BUILD"
5735 CXX_BASE=`first_arg_basename "$CXX"`
5737 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5740 # Handle host configuration, which affects the cross-toolset too
5742 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5743 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5744 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5745 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5746 if test -n "$ENABLE_JAVA"; then
5749 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5750 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5753 if test -z "$with_jdk_home"; then
5754 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.])
5759 sub_conf_opts="$sub_conf_opts --without-java"
5761 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5762 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5763 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5764 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5765 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5766 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5767 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5768 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5769 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5770 if test "$_os" = "Emscripten"; then
5771 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5772 if test "${with_main_module+set}" = set; then
5773 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5775 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5779 # Don't bother having configure look for stuff not needed for the build platform anyway
5780 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5781 sub_conf_defaults=" \
5782 --build="$build_alias" \
5783 --disable-cairo-canvas \
5785 --disable-customtarget-components \
5786 --disable-firebird-sdbc \
5788 --disable-gstreamer-1-0 \
5792 --disable-mariadb-sdbc \
5794 --disable-online-update \
5796 --disable-pdfimport \
5797 --disable-postgresql-sdbc \
5800 --enable-dynamic-loading \
5801 --enable-icecream="$enable_icecream" \
5805 --with-tls=openssl \
5807 # single quotes added for better readability in case of spaces
5808 echo " Running CONF-FOR-BUILD/configure" \
5809 $sub_conf_defaults \
5810 --with-parallelism="'$with_parallelism'" \
5811 --with-theme="'$with_theme'" \
5812 --with-vendor="'$with_vendor'" \
5814 $with_build_platform_configure_options \
5818 $sub_conf_defaults \
5819 --with-parallelism="$with_parallelism" \
5820 --with-theme="$with_theme" \
5821 "--with-vendor=$with_vendor" \
5823 $with_build_platform_configure_options \
5825 2>&1 | sed -e 's/^/ /'
5826 if test [${PIPESTATUS[0]}] -ne 0; then
5827 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5830 # filter permitted build targets
5831 PERMITTED_BUILD_TARGETS="
5866 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5867 # newlined lists, to use grep as a filter
5868 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5869 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5870 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5871 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5873 cp config_host.mk ../config_build.mk
5874 cp config_host_lang.mk ../config_build_lang.mk
5875 mv config.log ../config.Build.log
5876 mkdir -p ../config_build
5877 mv config_host/*.h ../config_build
5878 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5880 # all these will get a _FOR_BUILD postfix
5881 DIRECT_FOR_BUILD_SETTINGS="
5889 JDK_SECURITYMANAGER_DISALLOWED
5893 LIBO_URE_MISC_FOLDER
5899 # these overwrite host config with build config
5900 OVERWRITING_SETTINGS="
5904 JAVA_CLASSPATH_NOT_SET
5916 # these need some special handling
5917 EXTRA_HANDLED_SETTINGS="
5924 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5928 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5929 echo "$line" >>build-config
5931 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5933 VV=`eval "echo $VV"`
5934 if test -n "$VV"; then
5935 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5936 echo "$line" >>build-config
5940 for V in $OVERWRITING_SETTINGS; do
5942 VV=`eval "echo $VV"`
5943 if test -n "$VV"; then
5944 line=${V}='${'${V}:-$VV'}'
5945 echo "$line" >>build-config
5949 for V in INSTDIR INSTROOT WORKDIR; do
5951 VV=`eval "echo $VV"`
5952 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5953 if test -n "$VV"; then
5954 line="${V}_FOR_BUILD='$VV'"
5955 echo "$line" >>build-config
5960 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5961 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])
5962 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5963 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5965 eval `cat CONF-FOR-BUILD/build-config`
5967 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5969 rm -rf CONF-FOR-BUILD
5973 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5974 CXX_FOR_BUILD="$CXX"
5975 INSTDIR_FOR_BUILD="$INSTDIR"
5976 INSTROOT_FOR_BUILD="$INSTROOT"
5977 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5978 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5979 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5980 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5981 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5982 WORKDIR_FOR_BUILD="$WORKDIR"
5984 AC_SUBST(OS_FOR_BUILD)
5985 AC_SUBST(INSTDIR_FOR_BUILD)
5986 AC_SUBST(INSTROOT_FOR_BUILD)
5987 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5988 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5989 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5990 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5991 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5992 AC_SUBST(WORKDIR_FOR_BUILD)
5993 AC_SUBST(CC_FOR_BUILD)
5994 AC_SUBST(CXX_FOR_BUILD)
5995 AC_SUBST(CPPU_ENV_FOR_BUILD)
5997 dnl ===================================================================
5998 dnl Check for lockfile deps
5999 dnl ===================================================================
6000 if test -z "$CROSS_COMPILING"; then
6001 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6002 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6003 AC_MSG_CHECKING([which lockfile binary to use])
6004 case "$with_system_lockfile" in
6006 AC_MSG_RESULT([external])
6007 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6010 AC_MSG_RESULT([internal])
6013 if test -x "$with_system_lockfile"; then
6014 LOCKFILE="$with_system_lockfile"
6016 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6018 AC_MSG_RESULT([$with_system_lockfile])
6023 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6024 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6027 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6028 AC_CHECK_FUNCS([utime utimes])
6031 dnl ===================================================================
6032 dnl Check for syslog header
6033 dnl ===================================================================
6034 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6036 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6037 dnl ===================================================================
6038 AC_MSG_CHECKING([whether to turn warnings to errors])
6039 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6040 ENABLE_WERROR="TRUE"
6041 PYTHONWARNINGS="error"
6042 AC_MSG_RESULT([yes])
6044 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6045 ENABLE_WERROR="TRUE"
6046 PYTHONWARNINGS="error"
6047 AC_MSG_RESULT([yes])
6052 AC_SUBST(ENABLE_WERROR)
6053 AC_SUBST(PYTHONWARNINGS)
6055 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6056 dnl ===================================================================
6057 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6058 if test -z "$enable_assert_always_abort"; then
6059 if test "$ENABLE_DEBUG" = TRUE; then
6060 enable_assert_always_abort=yes
6062 enable_assert_always_abort=no
6065 if test "$enable_assert_always_abort" = "yes"; then
6066 ASSERT_ALWAYS_ABORT="TRUE"
6067 AC_MSG_RESULT([yes])
6069 ASSERT_ALWAYS_ABORT="FALSE"
6072 AC_SUBST(ASSERT_ALWAYS_ABORT)
6074 # Determine whether to use ooenv for the instdir installation
6075 # ===================================================================
6076 if test $_os != "WINNT" -a $_os != "Darwin"; then
6077 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6078 if test -z "$enable_ooenv"; then
6079 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6085 if test "$enable_ooenv" = "no"; then
6089 AC_MSG_RESULT([yes])
6092 AC_SUBST(ENABLE_OOENV)
6094 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6095 if test "$enable_qt5" = "no"; then
6096 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6102 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6103 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6104 AC_MSG_RESULT([yes])
6106 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6110 AC_SUBST(ENABLE_PAGEIN)
6112 dnl ===================================================================
6113 dnl check for cups support
6114 dnl ===================================================================
6116 AC_MSG_CHECKING([whether to enable CUPS support])
6117 if test "$test_cups" = yes -a "$enable_cups" != no; then
6119 AC_MSG_RESULT([yes])
6121 AC_MSG_CHECKING([whether cups support is present])
6122 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6123 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6124 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6125 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6131 AC_SUBST(ENABLE_CUPS)
6133 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6135 dnl whether to find & fetch external tarballs?
6136 dnl ===================================================================
6137 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6138 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6139 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6141 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6144 if test -z "$TARFILE_LOCATION"; then
6145 if test -d "$SRC_ROOT/src" ; then
6146 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6147 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6149 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6151 AbsolutePath "$TARFILE_LOCATION"
6152 PathFormat "${absolute_path}"
6153 TARFILE_LOCATION="${formatted_path_unix}"
6155 AC_SUBST(TARFILE_LOCATION)
6157 AC_MSG_CHECKING([whether we want to fetch tarballs])
6158 if test "$enable_fetch_external" != "no"; then
6159 if test "$with_all_tarballs" = "yes"; then
6160 AC_MSG_RESULT([yes, all of them])
6161 DO_FETCH_TARBALLS="ALL"
6163 AC_MSG_RESULT([yes, if we use them])
6164 DO_FETCH_TARBALLS="TRUE"
6170 AC_SUBST(DO_FETCH_TARBALLS)
6172 dnl Test whether to include MySpell dictionaries
6173 dnl ===================================================================
6174 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6175 if test "$with_myspell_dicts" = "yes"; then
6176 AC_MSG_RESULT([yes])
6177 WITH_MYSPELL_DICTS=TRUE
6178 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6179 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6184 AC_SUBST(WITH_MYSPELL_DICTS)
6186 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6187 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6188 if test "$with_system_dicts" = yes; then
6189 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6191 with_system_dicts=no
6194 AC_MSG_CHECKING([whether to use dicts from external paths])
6195 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6196 AC_MSG_RESULT([yes])
6198 AC_MSG_CHECKING([for spelling dictionary directory])
6199 if test -n "$with_external_dict_dir"; then
6200 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6202 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6203 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6204 DICT_SYSTEM_DIR=file:///usr/share/myspell
6207 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6208 AC_MSG_CHECKING([for hyphenation patterns directory])
6209 if test -n "$with_external_hyph_dir"; then
6210 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6212 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6214 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6215 AC_MSG_CHECKING([for thesaurus directory])
6216 if test -n "$with_external_thes_dir"; then
6217 THES_SYSTEM_DIR=file://$with_external_thes_dir
6219 THES_SYSTEM_DIR=file:///usr/share/mythes
6221 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6226 AC_SUBST(SYSTEM_DICTS)
6227 AC_SUBST(DICT_SYSTEM_DIR)
6228 AC_SUBST(HYPH_SYSTEM_DIR)
6229 AC_SUBST(THES_SYSTEM_DIR)
6231 dnl ===================================================================
6232 dnl Precompiled headers.
6234 AC_MSG_CHECKING([whether to enable pch feature])
6235 if test -z "$enable_pch"; then
6236 if test "$_os" = "WINNT"; then
6237 # Enabled by default on Windows.
6239 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6240 if test -z "$enable_ccache" -a "$SCCACHE"; then
6247 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6248 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6250 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6251 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6253 if test "$enable_pch" = "system"; then
6255 AC_MSG_RESULT([yes (system headers)])
6256 elif test "$enable_pch" = "base"; then
6258 AC_MSG_RESULT([yes (system and base headers)])
6259 elif test "$enable_pch" = "normal"; then
6261 AC_MSG_RESULT([yes (normal)])
6262 elif test "$enable_pch" = "full"; then
6264 AC_MSG_RESULT([yes (full)])
6265 elif test "$enable_pch" = "yes"; then
6266 # Pick a suitable default.
6267 if test "$GCC" = "yes"; then
6268 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6269 # while making the PCHs larger and rebuilds more likely.
6271 AC_MSG_RESULT([yes (system and base headers)])
6273 # With MSVC the highest level makes a significant difference,
6274 # and it was the default when there used to be no PCH levels.
6276 AC_MSG_RESULT([yes (full)])
6278 elif test "$enable_pch" = "no"; then
6281 AC_MSG_ERROR([Unknown value for --enable-pch])
6283 AC_SUBST(ENABLE_PCH)
6284 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6285 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6286 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6287 if test "$CCACHE_BIN" != "not found"; then
6288 AC_MSG_CHECKING([ccache version])
6289 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6290 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6291 AC_MSG_RESULT([$CCACHE_VERSION])
6292 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6293 if test "$CCACHE_NUMVER" -gt "030701"; then
6294 AC_MSG_RESULT([yes])
6296 AC_MSG_RESULT([no (not newer than 3.7.1)])
6302 PCH_INSTANTIATE_TEMPLATES=
6303 if test -n "$ENABLE_PCH"; then
6304 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6306 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6307 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6309 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6315 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6317 BUILDING_PCH_WITH_OBJ=
6318 if test -n "$ENABLE_PCH"; then
6319 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6321 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6322 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6324 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6330 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6335 if test "$COM" = MSC; then
6336 fpch_prefix="-Xclang "
6338 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6339 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6341 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6342 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6343 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6345 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6346 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6347 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6349 if test -n "$PCH_CODEGEN"; then
6355 AC_SUBST(PCH_CODEGEN)
6356 AC_SUBST(PCH_NO_CODEGEN)
6358 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6359 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6361 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6362 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6364 if test -n "$PCH_DEBUGINFO"; then
6370 AC_SUBST(PCH_DEBUGINFO)
6374 AC_MSG_CHECKING([the GNU Make version])
6375 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6376 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6377 if test "$_make_longver" -ge "038200"; then
6378 AC_MSG_RESULT([$GNUMAKE $_make_version])
6380 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6383 # find if gnumake support file function
6384 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6385 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6386 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6387 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6389 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6390 \$(file >test.txt,Success )
6397 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6398 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6399 HAVE_GNUMAKE_FILE_FUNC=TRUE
6400 AC_MSG_RESULT([yes])
6404 rm -rf $TESTGMAKEFILEFUNC
6405 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6407 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6409 if test "$_make_ver_check" = ""; then
6413 HAVE_LD_HASH_STYLE=FALSE
6414 WITH_LINKER_HASH_STYLE=
6415 AC_MSG_CHECKING([for --hash-style gcc linker support])
6416 if test "$GCC" = "yes"; then
6417 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6418 hash_styles="gnu sysv"
6419 elif test "$with_linker_hash_style" = "no"; then
6422 hash_styles="$with_linker_hash_style"
6425 for hash_style in $hash_styles; do
6426 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6427 hash_style_ldflags_save=$LDFLAGS
6428 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6430 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6437 HAVE_LD_HASH_STYLE=TRUE
6438 WITH_LINKER_HASH_STYLE=$hash_style
6440 [HAVE_LD_HASH_STYLE=FALSE],
6441 [HAVE_LD_HASH_STYLE=FALSE])
6442 LDFLAGS=$hash_style_ldflags_save
6445 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6446 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6450 LDFLAGS=$hash_style_ldflags_save
6454 AC_SUBST(HAVE_LD_HASH_STYLE)
6455 AC_SUBST(WITH_LINKER_HASH_STYLE)
6457 dnl ===================================================================
6458 dnl Check whether there's a Perl version available.
6459 dnl ===================================================================
6460 if test -z "$with_perl_home"; then
6461 AC_PATH_PROG(PERL, perl)
6463 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6464 _perl_path="$with_perl_home/bin/perl"
6465 if test -x "$_perl_path"; then
6468 AC_MSG_ERROR([$_perl_path not found])
6472 dnl ===================================================================
6473 dnl Testing for Perl version 5 or greater.
6474 dnl $] is the Perl version variable, it is returned as an integer
6475 dnl ===================================================================
6476 if test "$PERL"; then
6477 AC_MSG_CHECKING([the Perl version])
6478 ${PERL} -e "exit($]);"
6480 if test "$_perl_version" -lt 5; then
6481 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6483 AC_MSG_RESULT([Perl $_perl_version])
6485 AC_MSG_ERROR([Perl not found, install Perl 5])
6488 dnl ===================================================================
6489 dnl Testing for required Perl modules
6490 dnl ===================================================================
6492 AC_MSG_CHECKING([for required Perl modules])
6493 perl_use_string="use Cwd ; use Digest::MD5"
6494 if test "$_os" = "WINNT"; then
6495 if test -n "$PKGFORMAT"; then
6496 for i in $PKGFORMAT; do
6499 # for getting fonts versions to use in MSI
6500 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6506 if test "$with_system_hsqldb" = "yes"; then
6507 perl_use_string="$perl_use_string ; use Archive::Zip"
6509 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6510 # OpenSSL needs that to build
6511 perl_use_string="$perl_use_string ; use FindBin"
6513 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6514 AC_MSG_RESULT([all modules found])
6516 AC_MSG_RESULT([failed to find some modules])
6517 # Find out which modules are missing.
6518 for i in $perl_use_string; do
6519 if test "$i" != "use" -a "$i" != ";"; then
6520 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6521 missing_perl_modules="$missing_perl_modules $i"
6526 The missing Perl modules are: $missing_perl_modules
6527 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6530 dnl ===================================================================
6531 dnl Check for pkg-config
6532 dnl ===================================================================
6533 if test "$_os" != "WINNT"; then
6536 AC_SUBST(PKG_CONFIG)
6537 AC_SUBST(PKG_CONFIG_PATH)
6538 AC_SUBST(PKG_CONFIG_LIBDIR)
6540 if test "$_os" != "WINNT"; then
6542 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6543 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6544 # explicitly. Or put /path/to/compiler in PATH yourself.
6547 if test "$COM_IS_CLANG" = "TRUE"; then
6550 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6551 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6552 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6553 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6554 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6555 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6564 dnl ===================================================================
6565 dnl pkg-config checks on macOS
6566 dnl ===================================================================
6568 if test $_os = Darwin; then
6569 AC_MSG_CHECKING([for bogus pkg-config])
6570 if test -n "$PKG_CONFIG"; then
6571 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6572 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6574 if test "$enable_bogus_pkg_config" = "yes"; then
6575 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6577 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.])
6581 AC_MSG_RESULT([no, good])
6587 # Return value: $csctest
6591 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6592 if test -n "$regvalue"; then
6600 # Return value: $altest
6604 # We need this check to detect 4.6.1 or above.
6605 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6606 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6607 PathFormat "$regvalue"
6608 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6614 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6615 for x in $reglist; do
6616 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6617 PathFormat "$regvalue"
6618 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6629 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
6630 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6631 if test -n "$regvalue"; then
6638 find_winsdk_version()
6640 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6641 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6643 unset winsdktest winsdkbinsubdir winsdklibsubdir
6647 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6648 if test -n "$regvalue"; then
6649 winsdktest=$regvalue
6650 winsdklibsubdir=win8
6655 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6656 if test -n "$regvalue"; then
6657 winsdktest=$regvalue
6658 winsdklibsubdir=winv6.3
6663 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6664 if test -n "$regvalue"; then
6665 winsdktest=$regvalue
6666 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6667 if test -n "$regvalue"; then
6668 winsdkbinsubdir="$regvalue".0
6669 winsdklibsubdir=$winsdkbinsubdir
6670 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6671 local tmppath_unix=$(cygpath -u "$tmppath")
6672 # test exist the SDK path
6673 if test -d "$tmppath_unix"; then
6674 # when path is convertible to a short path then path is okay
6675 cygpath -d "$tmppath" >/dev/null 2>&1
6676 if test $? -ne 0; then
6677 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6680 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6691 # Return value: From find_winsdk_version
6695 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6696 find_winsdk_version $ver
6697 if test -n "$winsdktest"; then
6705 # Return value: $msmdir
6708 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6709 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6712 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6717 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6718 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6719 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6720 if test -e "$my_msm_dir${my_msm_file}"; then
6727 if test -n "$msmdir"; then
6728 msmdir=`cygpath -m "$msmdir"`
6729 AC_MSG_RESULT([$msmdir])
6731 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6732 AC_MSG_FAILURE([not found])
6734 AC_MSG_WARN([not found (check config.log)])
6735 add_warning "MSM ${my_msm_file} not found"
6740 find_msvc_x64_dlls()
6742 # Return value: $msvcdllpath, $msvcdlls
6744 AC_MSG_CHECKING([for MSVC x64 DLL path])
6746 dnl Order crtver in increasing order. Then check the directories returned by
6747 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6748 dnl the result will be the highest CRT version found in the highest directory.
6750 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6753 for crtver in 141 142 143; do
6754 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6755 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6756 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6757 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6763 AC_MSG_RESULT([$msvcdllpath])
6764 AC_MSG_CHECKING([for MSVC x64 DLLs])
6765 msvcdlls="msvcp140.dll vcruntime140.dll"
6766 for dll in $msvcdlls; do
6767 if ! test -f "$msvcdllpath/$dll"; then
6768 AC_MSG_FAILURE([missing $dll])
6771 AC_MSG_RESULT([found all ($msvcdlls)])
6774 dnl =========================================
6775 dnl Check for the Windows SDK.
6776 dnl =========================================
6777 if test "$_os" = "WINNT"; then
6778 AC_MSG_CHECKING([for Windows SDK])
6779 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6781 WINDOWS_SDK_HOME=$winsdktest
6783 # normalize if found
6784 if test -n "$WINDOWS_SDK_HOME"; then
6785 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6786 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6789 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6792 if test -n "$WINDOWS_SDK_HOME"; then
6793 # Remove a possible trailing backslash
6794 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6796 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6797 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6798 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6799 have_windows_sdk_headers=yes
6800 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6801 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6802 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6803 have_windows_sdk_headers=yes
6804 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6805 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6806 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6807 have_windows_sdk_headers=yes
6809 have_windows_sdk_headers=no
6812 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6813 have_windows_sdk_libs=yes
6814 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6815 have_windows_sdk_libs=yes
6817 have_windows_sdk_libs=no
6820 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6821 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6822 the Windows SDK are installed.])
6826 if test -z "$WINDOWS_SDK_HOME"; then
6827 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6828 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6829 WINDOWS_SDK_VERSION=80
6830 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6831 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6832 WINDOWS_SDK_VERSION=81
6833 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6834 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6835 WINDOWS_SDK_VERSION=10
6836 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6838 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6840 PathFormat "$WINDOWS_SDK_HOME"
6841 WINDOWS_SDK_HOME="$formatted_path"
6842 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6843 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6844 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6845 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6846 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6847 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6848 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6852 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6853 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6854 dnl but not in v8.0), so allow this to be overridden with a
6855 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6856 dnl and configuration error if no WiLangId.vbs is found would arguably be
6857 dnl better, but I do not know under which conditions exactly it is needed by
6859 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6860 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6861 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6862 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6863 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6864 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6866 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6867 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6868 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6870 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6871 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6872 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6875 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6876 if test -n "$with_package_format" -a "$with_package_format" != no; then
6877 for i in "$with_package_format"; do
6878 if test "$i" = "msi"; then
6879 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6880 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6887 AC_SUBST(WINDOWS_SDK_HOME)
6888 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6889 AC_SUBST(WINDOWS_SDK_VERSION)
6890 AC_SUBST(WINDOWS_SDK_WILANGID)
6892 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6893 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6894 dnl dir, it also determines that dir's path w/o an arch segment if any,
6895 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6896 AC_MSG_CHECKING([for midl.exe])
6899 PathFormat "$winsdktest"
6900 winsdktest_unix="$formatted_path_unix"
6902 if test -n "$winsdkbinsubdir" \
6903 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6905 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6906 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6907 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6908 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6909 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6910 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6911 MIDL_PATH=$winsdktest/Bin
6912 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6914 PathFormat "$MIDL_PATH"
6915 if test ! -f "$formatted_path_unix/midl.exe"; then
6916 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6918 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6921 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6922 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6924 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6925 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6926 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6927 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6928 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6929 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6930 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6931 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6932 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6933 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6934 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6935 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6937 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6941 AC_MSG_CHECKING([for csc.exe])
6943 PathFormat "$csctest"
6944 csctest_unix="$formatted_path_unix"
6945 if test -f "$csctest_unix/csc.exe"; then
6948 if test ! -f "$csctest_unix/csc.exe"; then
6949 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6951 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6954 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6957 AC_MSG_CHECKING([for al.exe])
6958 if test -n "$winsdkbinsubdir" \
6959 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6961 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6962 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6963 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6964 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6965 AL_PATH="$winsdktest/Bin"
6968 if test -z "$AL_PATH"; then
6970 PathFormat "$altest"
6971 altest_unix="$formatted_path_unix"
6972 if test -f "$altest_unix/bin/al.exe"; then
6973 AL_PATH="$altest/bin"
6974 elif test -f "$altest_unix/al.exe"; then
6978 PathFormat "$AL_PATH"
6979 if test ! -f "$formatted_path_unix/al.exe"; then
6980 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6982 AC_MSG_RESULT([$AL_PATH/al.exe])
6985 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6987 dnl Check mscoree.lib / .NET Framework dir
6988 AC_MSG_CHECKING(.NET Framework)
6990 PathFormat "$frametest"
6991 frametest="$formatted_path_unix"
6992 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6993 DOTNET_FRAMEWORK_HOME="$frametest"
6995 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6996 DOTNET_FRAMEWORK_HOME="$winsdktest"
6999 PathFormat "$DOTNET_FRAMEWORK_HOME"
7000 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
7001 AC_MSG_ERROR([mscoree.lib not found])
7003 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7005 PathFormat "$MIDL_PATH"
7006 MIDL_PATH="$formatted_path"
7008 PathFormat "$AL_PATH"
7009 AL_PATH="$formatted_path"
7011 PathFormat "$DOTNET_FRAMEWORK_HOME"
7012 DOTNET_FRAMEWORK_HOME="$formatted_path"
7014 PathFormat "$CSC_PATH"
7015 CSC_PATH="$formatted_path"
7018 dnl ===================================================================
7019 dnl Testing for C++ compiler and version...
7020 dnl ===================================================================
7022 if test "$_os" != "WINNT"; then
7023 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7024 save_CXXFLAGS=$CXXFLAGS
7026 CXXFLAGS=$save_CXXFLAGS
7027 if test -z "$CXX_BASE"; then
7028 CXX_BASE=`first_arg_basename "$CXX"`
7032 dnl check for GNU C++ compiler version
7033 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7034 AC_MSG_CHECKING([the GNU C++ compiler version])
7036 _gpp_version=`$CXX -dumpversion`
7037 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7039 if test "$_gpp_majmin" -lt "700"; then
7040 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7042 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7045 dnl see https://code.google.com/p/android/issues/detail?id=41770
7049 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7050 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7051 #include <bits/c++config.h>]],[[
7052 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7053 && !defined(_GLIBCXX__PTHREADS) \
7054 && !defined(_GLIBCXX_HAS_GTHREADS)
7057 ]])],[AC_MSG_RESULT([yes])
7058 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7060 if test $glibcxx_threads = yes; then
7061 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7064 AC_SUBST(BOOST_CXXFLAGS)
7067 # prefx CXX with ccache if needed
7069 if test "$CCACHE" != ""; then
7070 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7072 save_CXXFLAGS=$CXXFLAGS
7073 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7074 # msvc does not fail on unknown options, check stdout
7075 if test "$COM" = MSC; then
7076 CXXFLAGS="$CXXFLAGS -nologo"
7078 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7079 ac_cxx_werror_flag=yes
7080 dnl an empty program will do, we're checking the compiler flags
7081 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7082 [use_ccache=yes], [use_ccache=no])
7083 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7084 AC_MSG_RESULT([yes])
7087 CXX_BASE="ccache $CXX_BASE"
7090 CXXFLAGS=$save_CXXFLAGS
7091 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7095 dnl ===================================================================
7096 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7097 dnl ===================================================================
7099 if test "$_os" != "WINNT"; then
7102 dnl Check whether there's a C pre-processor.
7107 dnl ===================================================================
7108 dnl Find integral type sizes and alignments
7109 dnl ===================================================================
7111 if test "$_os" != "WINNT"; then
7113 AC_CHECK_SIZEOF(long)
7114 AC_CHECK_SIZEOF(short)
7115 AC_CHECK_SIZEOF(int)
7116 AC_CHECK_SIZEOF(long long)
7117 AC_CHECK_SIZEOF(double)
7118 AC_CHECK_SIZEOF(void*)
7119 AC_CHECK_SIZEOF(size_t)
7121 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7122 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7123 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7124 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7125 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7126 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7128 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7129 m4_pattern_allow([AC_CHECK_ALIGNOF])
7130 m4_ifdef([AC_CHECK_ALIGNOF],
7132 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7133 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7134 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7135 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7138 case "$_os-$host_cpu" in
7140 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7141 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7142 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7143 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7146 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7147 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7148 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7149 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7152 if test -z "$ac_cv_alignof_short" -o \
7153 -z "$ac_cv_alignof_int" -o \
7154 -z "$ac_cv_alignof_long" -o \
7155 -z "$ac_cv_alignof_double"; then
7156 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.])
7162 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7163 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7164 if test $ac_cv_sizeof_long -eq 8; then
7165 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7166 elif test $ac_cv_sizeof_double -eq 8; then
7167 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7169 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7172 dnl Check for large file support
7174 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7175 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7177 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7178 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7182 SAL_TYPES_SIZEOFSHORT=2
7183 SAL_TYPES_SIZEOFINT=4
7184 SAL_TYPES_SIZEOFLONG=4
7185 SAL_TYPES_SIZEOFLONGLONG=8
7186 if test $WIN_HOST_BITS -eq 32; then
7187 SAL_TYPES_SIZEOFPOINTER=4
7190 SAL_TYPES_SIZEOFPOINTER=8
7193 SAL_TYPES_ALIGNMENT2=2
7194 SAL_TYPES_ALIGNMENT4=4
7195 SAL_TYPES_ALIGNMENT8=8
7198 AC_SUBST(LFS_CFLAGS)
7199 AC_SUBST(SIZEOF_SIZE_T)
7201 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7202 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7203 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7204 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7205 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7206 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7207 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7208 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7210 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7211 AC_MSG_CHECKING([whether jumbo sheets are supported])
7212 if test "$_os" != "WINNT"; then
7213 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7214 AC_MSG_RESULT([yes])
7215 ENABLE_JUMBO_SHEETS=TRUE
7216 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7221 if test $WIN_HOST_BITS -gt 32; then
7222 # 64bit windows is special-cased for tools::Long because long is 32bit
7223 AC_MSG_RESULT([yes])
7224 ENABLE_JUMBO_SHEETS=TRUE
7225 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7230 AC_SUBST(ENABLE_JUMBO_SHEETS)
7232 dnl ===================================================================
7233 dnl Check whether to enable runtime optimizations
7234 dnl ===================================================================
7235 ENABLE_RUNTIME_OPTIMIZATIONS=
7236 AC_MSG_CHECKING([whether to enable runtime optimizations])
7237 if test -z "$enable_runtime_optimizations"; then
7241 enable_runtime_optimizations=no
7247 if test "$enable_runtime_optimizations" != no; then
7248 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7249 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7250 AC_MSG_RESULT([yes])
7254 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7256 dnl ===================================================================
7257 dnl Check if valgrind headers are available
7258 dnl ===================================================================
7260 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7261 prev_cppflags=$CPPFLAGS
7262 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7263 # or where does it come from?
7264 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7265 AC_CHECK_HEADER([valgrind/valgrind.h],
7266 [ENABLE_VALGRIND=TRUE])
7267 CPPFLAGS=$prev_cppflags
7269 AC_SUBST([ENABLE_VALGRIND])
7270 if test -z "$ENABLE_VALGRIND"; then
7271 if test "$with_valgrind" = yes; then
7272 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7276 AC_SUBST([VALGRIND_CFLAGS])
7279 dnl ===================================================================
7280 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7281 dnl ===================================================================
7283 # We need at least the sys/sdt.h include header.
7284 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7285 if test "$SDT_H_FOUND" = "TRUE"; then
7286 # Found sys/sdt.h header, now make sure the c++ compiler works.
7287 # Old g++ versions had problems with probes in constructors/destructors.
7288 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7290 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7291 #include <sys/sdt.h>
7299 ProbeClass(int& v, const char *n) : ref(v), name(n)
7301 DTRACE_PROBE2(_test_, cons, name, ref);
7304 void method(int min)
7306 DTRACE_PROBE3(_test_, meth, name, ref, min);
7312 DTRACE_PROBE2(_test_, dest, name, ref);
7317 DTRACE_PROBE1(_test_, call, i);
7318 ProbeClass inst = ProbeClass(i, "call");
7320 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7321 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7324 AC_CONFIG_HEADERS([config_host/config_probes.h])
7326 dnl ===================================================================
7328 dnl ===================================================================
7329 HAVE_GCC_STACK_CLASH_PROTECTION=
7330 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7331 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7333 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7335 [AC_LANG_PROGRAM(, [[return 0;]])],
7336 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7337 [AC_MSG_RESULT([no])])
7340 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7342 CFLAGS="$CFLAGS -Werror -mno-avx"
7343 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7345 if test "$HAVE_GCC_AVX" = "TRUE"; then
7346 AC_MSG_RESULT([yes])
7351 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7352 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7354 if (__sync_add_and_fetch(&v, 1) != 1 ||
7355 __sync_sub_and_fetch(&v, 1) != 0)
7357 __sync_synchronize();
7358 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7362 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7363 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7364 AC_MSG_RESULT([yes])
7365 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7370 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7372 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7375 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7377 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7378 AC_MSG_RESULT([yes])
7379 ], [AC_MSG_RESULT([no])])
7382 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7387 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7389 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7390 AC_MSG_RESULT([yes])
7391 ], [AC_MSG_RESULT([no])])
7394 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7396 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7398 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7400 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7401 AC_MSG_RESULT([yes])
7402 ], [AC_MSG_RESULT([no])])
7405 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7407 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7410 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7412 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7413 AC_MSG_RESULT([yes])
7414 ], [AC_MSG_RESULT([no])])
7417 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7419 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7422 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7424 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7425 AC_MSG_RESULT([yes])
7426 ], [AC_MSG_RESULT([no])])
7429 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7431 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7433 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7435 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7436 AC_MSG_RESULT([yes])
7437 ], [AC_MSG_RESULT([no])])
7440 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7442 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7444 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7446 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7447 AC_MSG_RESULT([yes])
7448 ], [AC_MSG_RESULT([no])])
7451 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7453 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7455 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7457 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7458 AC_MSG_RESULT([yes])
7459 ], [AC_MSG_RESULT([no])])
7462 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7464 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7467 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7469 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7470 AC_MSG_RESULT([yes])
7471 ], [AC_MSG_RESULT([no])])
7474 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7476 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7479 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7481 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7482 AC_MSG_RESULT([yes])
7483 ], [AC_MSG_RESULT([no])])
7487 AC_SUBST(HAVE_GCC_AVX)
7488 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7489 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7491 dnl ===================================================================
7492 dnl Identify the C++ library
7493 dnl ===================================================================
7495 AC_MSG_CHECKING([what the C++ library is])
7499 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7505 [CPP_LIBRARY=GLIBCXX
7506 cpp_library_name="GNU libstdc++"
7509 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7511 #ifndef _LIBCPP_VERSION
7516 cpp_library_name="LLVM libc++"
7517 AC_DEFINE([HAVE_LIBCPP])
7520 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7527 cpp_library_name="Microsoft"
7529 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7530 AC_MSG_RESULT([$cpp_library_name])
7532 AC_SUBST([HAVE_LIBSTDCPP])
7533 AC_SUBST([HAVE_LIBCPP])
7535 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7537 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7538 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7539 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7540 # although there will be backwards compatibility).
7541 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7542 # and there would be undefined references to debug functions.
7543 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7544 # So check if debug mode can be used and disable or downgrade it to assertions
7546 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7549 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7550 #define _LIBCPP_DEBUG 0 // only assertions
7558 ]])], [libcpp_debug_links=1])
7559 if test -n "$libcpp_debug_links"; then
7560 # we can use at least assertions, check if debug mode works
7561 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7562 #define _LIBCPP_DEBUG 1 // debug mode
7565 int foo(const std::vector<int>& v) { return *v.begin(); }
7570 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7571 return (foo(v) + s.size()) != 0 ? 0 : 1;
7575 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7577 [AC_MSG_RESULT(no, using only assertions)
7578 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7586 AC_SUBST([LIBCPP_DEBUG])
7588 dnl ===================================================================
7590 dnl ===================================================================
7591 AC_PATH_PROG(GPERF, gperf)
7592 if test -z "$GPERF"; then
7593 AC_MSG_ERROR([gperf not found but needed. Install it.])
7595 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7596 GPERF=`cygpath -m $GPERF`
7598 AC_MSG_CHECKING([whether gperf is new enough])
7599 my_gperf_ver1=$($GPERF --version | head -n 1)
7600 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7601 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7602 if test "$my_gperf_ver3" -ge 301; then
7603 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7605 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7609 dnl ===================================================================
7610 dnl Check for system libcmis
7611 dnl ===================================================================
7612 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7614 dnl ===================================================================
7616 dnl ===================================================================
7618 if test -z "${CXXFLAGS_CXX11+x}"; then
7619 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7620 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7621 if test "$with_latest_c__" = yes; then
7622 CXXFLAGS_CXX11=-std:c++latest
7624 CXXFLAGS_CXX11=-std:c++17
7626 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7627 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7628 my_flags='-std=c++17 -std=c++1z'
7629 if test "$with_latest_c__" = yes; then
7630 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7632 for flag in $my_flags; do
7633 if test "$COM" = MSC; then
7634 flag="-Xclang $flag"
7636 save_CXXFLAGS=$CXXFLAGS
7637 CXXFLAGS="$CXXFLAGS $flag -Werror"
7638 if test "$SYSTEM_LIBCMIS" = TRUE; then
7639 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7642 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7643 #include <algorithm>
7644 #include <functional>
7647 #if defined SYSTEM_LIBCMIS
7648 // See ucb/source/ucp/cmis/auth_provider.hxx:
7649 #if !defined __clang__
7650 #pragma GCC diagnostic push
7651 #pragma GCC diagnostic ignored "-Wdeprecated"
7652 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7654 #include <libcmis/libcmis.hxx>
7655 #if !defined __clang__
7656 #pragma GCC diagnostic pop
7660 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7661 std::sort(v.begin(), v.end(), fn);
7663 ]])],[CXXFLAGS_CXX11=$flag])
7665 CXXFLAGS=$save_CXXFLAGS
7666 if test -n "$CXXFLAGS_CXX11"; then
7671 if test -n "$CXXFLAGS_CXX11"; then
7672 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7677 AC_SUBST(CXXFLAGS_CXX11)
7679 if test "$GCC" = "yes"; then
7680 save_CXXFLAGS=$CXXFLAGS
7681 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7683 CXXFLAGS=$save_CXXFLAGS
7684 AC_SUBST(ATOMIC_LIB)
7687 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7688 save_CXXFLAGS=$CXXFLAGS
7689 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7692 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7695 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7711 a thinga[]={{0,0}, {1,1}};
7712 b thingb[]={{0,0}, {1,1}};
7713 size_t i = sizeof(sal_n_array_size(thinga));
7714 size_t j = sizeof(sal_n_array_size(thingb));
7715 return !(i != 0 && j != 0);
7717 ], [ AC_MSG_RESULT(yes) ],
7718 [ AC_MSG_ERROR(no)])
7720 CXXFLAGS=$save_CXXFLAGS
7722 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7723 if test "$GCC" = yes; then
7724 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7726 save_CXXFLAGS=$CXXFLAGS
7727 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7728 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7729 CXXFLAGS=$save_CXXFLAGS
7731 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7732 AC_MSG_RESULT([yes])
7737 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7739 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7741 save_CXXFLAGS=$CXXFLAGS
7742 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7743 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7744 #include <algorithm>
7745 #include <initializer_list>
7747 template<typename T> class S {
7751 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7753 constinit S<int> s{3, 2, 1};
7755 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7756 AC_MSG_RESULT([yes])
7757 ], [AC_MSG_RESULT([no])])
7758 CXXFLAGS=$save_CXXFLAGS
7761 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7765 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7767 #include <type_traits>
7768 // Don't check size_type directly, as it was called index_type before P1872R0:
7769 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7771 AC_DEFINE([HAVE_CPP_SPAN],[1])
7772 AC_MSG_RESULT([yes])
7773 ], [AC_MSG_RESULT([no])])
7774 CXXFLAGS=$save_CXXFLAGS
7777 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7779 save_CXXFLAGS=$CXXFLAGS
7780 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7781 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7782 struct S1 { S1(S1 &&); };
7784 S1 f(S2 s) { return s; }
7786 AC_DEFINE([HAVE_P1155R3],[1])
7787 AC_MSG_RESULT([yes])
7788 ], [AC_MSG_RESULT([no])])
7789 CXXFLAGS=$save_CXXFLAGS
7792 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7793 HAVE_CXX20_ATOMIC_REF=
7795 save_CXXFLAGS=$CXXFLAGS
7796 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7797 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7800 std::atomic_ref<int> y(x);
7802 HAVE_CXX20_ATOMIC_REF=TRUE
7803 AC_MSG_RESULT([yes])
7804 ], [AC_MSG_RESULT([no])])
7805 CXXFLAGS=$save_CXXFLAGS
7807 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7809 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7810 dnl which is included in -Wextra anyway):
7811 HAVE_WDEPRECATED_COPY_DTOR=
7812 if test "$GCC" = yes; then
7813 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7815 save_CXXFLAGS=$CXXFLAGS
7816 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7817 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7818 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7819 AC_MSG_RESULT([yes])
7820 ], [AC_MSG_RESULT([no])])
7821 CXXFLAGS=$save_CXXFLAGS
7824 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7826 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7827 dnl uninitialized warning for code like
7830 dnl boost::optional<OString> * g(bool b) {
7831 dnl boost::optional<OString> o;
7833 dnl return new boost::optional<OString>(o);
7836 dnl (as is e.g. present, in a slightly more elaborate form, in
7837 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7838 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7839 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7840 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7841 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7843 save_CXXFLAGS=$CXXFLAGS
7844 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7845 if test "$ENABLE_OPTIMIZED" = TRUE; then
7846 CXXFLAGS="$CXXFLAGS -O2"
7848 CXXFLAGS="$CXXFLAGS -O0"
7850 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7859 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7860 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7866 char stg[sizeof (S1)];
7874 ]])], [AC_MSG_RESULT([no])], [
7875 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7876 AC_MSG_RESULT([yes])
7878 CXXFLAGS=$save_CXXFLAGS
7881 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7883 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7884 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7885 dnl hits us e.g. with GCC 10 and --enable-optimized at
7887 dnl In file included from include/rtl/string.hxx:49,
7888 dnl from include/rtl/ustring.hxx:43,
7889 dnl from include/osl/file.hxx:35,
7890 dnl from include/codemaker/global.hxx:28,
7891 dnl from include/codemaker/options.hxx:23,
7892 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7893 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7894 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,
7895 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,
7896 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,
7897 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7898 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7899 dnl 78 | memcpy( buffer, data, length );
7900 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7901 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7902 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7903 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7905 save_CXXFLAGS=$CXXFLAGS
7906 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7907 if test "$ENABLE_OPTIMIZED" = TRUE; then
7908 CXXFLAGS="$CXXFLAGS -O2"
7910 CXXFLAGS="$CXXFLAGS -O0"
7912 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7913 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7914 void fill(char const * begin, char const * end, char c);
7920 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7921 __builtin_strncpy(c.username, "root", sizeof(c.username));
7923 ]])], [AC_MSG_RESULT([no])], [
7924 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7925 AC_MSG_RESULT([yes])
7927 CXXFLAGS=$save_CXXFLAGS
7930 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7932 HAVE_DLLEXPORTINLINES=
7933 if test "$_os" = "WINNT"; then
7934 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7936 save_CXXFLAGS=$CXXFLAGS
7937 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7938 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7939 HAVE_DLLEXPORTINLINES=TRUE
7940 AC_MSG_RESULT([yes])
7941 ], [AC_MSG_RESULT([no])])
7942 CXXFLAGS=$save_CXXFLAGS
7945 AC_SUBST([HAVE_DLLEXPORTINLINES])
7947 dnl ===================================================================
7948 dnl CPU Intrinsics support - SSE, AVX
7949 dnl ===================================================================
7951 CXXFLAGS_INTRINSICS_SSE2=
7952 CXXFLAGS_INTRINSICS_SSSE3=
7953 CXXFLAGS_INTRINSICS_SSE41=
7954 CXXFLAGS_INTRINSICS_SSE42=
7955 CXXFLAGS_INTRINSICS_AVX=
7956 CXXFLAGS_INTRINSICS_AVX2=
7957 CXXFLAGS_INTRINSICS_AVX512=
7958 CXXFLAGS_INTRINSICS_AVX512F=
7959 CXXFLAGS_INTRINSICS_F16C=
7960 CXXFLAGS_INTRINSICS_FMA=
7962 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7963 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7970 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7971 flag_avx512f=-mavx512f
7975 # With MSVC using -arch is in fact not necessary for being able
7976 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7977 # even if compiled with -arch:AVX, the -arch option really only affects
7978 # instructions generated for C/C++ code.
7979 # So use the matching same (or lower) -arch options, but only in order
7980 # to generate the best matching instructions for the C++ code surrounding
7982 # SSE2 is the default for x86/x64, so no need to specify the option.
7984 # No specific options for these, use the next lower.
7985 flag_ssse3="$flag_sse2"
7986 flag_sse41="$flag_sse2"
7987 flag_sse42="$flag_sse2"
7989 flag_avx2=-arch:AVX2
7990 flag_avx512=-arch:AVX512
7991 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7992 flag_avx512f=-arch:AVX2
7993 # No MSVC options for these.
7994 flag_f16c="$flag_sse2"
7995 flag_fma="$flag_sse2"
7998 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8000 save_CXXFLAGS=$CXXFLAGS
8001 CXXFLAGS="$CXXFLAGS $flag_sse2"
8002 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8003 #include <emmintrin.h>
8005 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8006 c = _mm_xor_si128 (a, b);
8010 [can_compile_sse2=yes],
8011 [can_compile_sse2=no])
8013 CXXFLAGS=$save_CXXFLAGS
8014 AC_MSG_RESULT([${can_compile_sse2}])
8015 if test "${can_compile_sse2}" = "yes" ; then
8016 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8019 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8021 save_CXXFLAGS=$CXXFLAGS
8022 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8023 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8024 #include <tmmintrin.h>
8026 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8027 c = _mm_maddubs_epi16 (a, b);
8031 [can_compile_ssse3=yes],
8032 [can_compile_ssse3=no])
8034 CXXFLAGS=$save_CXXFLAGS
8035 AC_MSG_RESULT([${can_compile_ssse3}])
8036 if test "${can_compile_ssse3}" = "yes" ; then
8037 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8040 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8042 save_CXXFLAGS=$CXXFLAGS
8043 CXXFLAGS="$CXXFLAGS $flag_sse41"
8044 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8045 #include <smmintrin.h>
8047 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8048 c = _mm_cmpeq_epi64 (a, b);
8052 [can_compile_sse41=yes],
8053 [can_compile_sse41=no])
8055 CXXFLAGS=$save_CXXFLAGS
8056 AC_MSG_RESULT([${can_compile_sse41}])
8057 if test "${can_compile_sse41}" = "yes" ; then
8058 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8061 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8063 save_CXXFLAGS=$CXXFLAGS
8064 CXXFLAGS="$CXXFLAGS $flag_sse42"
8065 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8066 #include <nmmintrin.h>
8068 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8069 c = _mm_cmpgt_epi64 (a, b);
8073 [can_compile_sse42=yes],
8074 [can_compile_sse42=no])
8076 CXXFLAGS=$save_CXXFLAGS
8077 AC_MSG_RESULT([${can_compile_sse42}])
8078 if test "${can_compile_sse42}" = "yes" ; then
8079 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8082 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8084 save_CXXFLAGS=$CXXFLAGS
8085 CXXFLAGS="$CXXFLAGS $flag_avx"
8086 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8087 #include <immintrin.h>
8089 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8090 c = _mm256_xor_ps(a, b);
8094 [can_compile_avx=yes],
8095 [can_compile_avx=no])
8097 CXXFLAGS=$save_CXXFLAGS
8098 AC_MSG_RESULT([${can_compile_avx}])
8099 if test "${can_compile_avx}" = "yes" ; then
8100 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8103 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8105 save_CXXFLAGS=$CXXFLAGS
8106 CXXFLAGS="$CXXFLAGS $flag_avx2"
8107 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8108 #include <immintrin.h>
8110 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8111 c = _mm256_maddubs_epi16(a, b);
8115 [can_compile_avx2=yes],
8116 [can_compile_avx2=no])
8118 CXXFLAGS=$save_CXXFLAGS
8119 AC_MSG_RESULT([${can_compile_avx2}])
8120 if test "${can_compile_avx2}" = "yes" ; then
8121 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8124 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8126 save_CXXFLAGS=$CXXFLAGS
8127 CXXFLAGS="$CXXFLAGS $flag_avx512"
8128 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8129 #include <immintrin.h>
8131 __m512i a = _mm512_loadu_si512(0);
8132 __m512d v1 = _mm512_load_pd(0);
8133 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8134 __m512d v2 = _mm512_abs_pd(v1);
8138 [can_compile_avx512=yes],
8139 [can_compile_avx512=no])
8141 CXXFLAGS=$save_CXXFLAGS
8142 AC_MSG_RESULT([${can_compile_avx512}])
8143 if test "${can_compile_avx512}" = "yes" ; then
8144 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8145 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8148 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8150 save_CXXFLAGS=$CXXFLAGS
8151 CXXFLAGS="$CXXFLAGS $flag_f16c"
8152 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8153 #include <immintrin.h>
8155 __m128i a = _mm_set1_epi32 (0);
8157 c = _mm_cvtph_ps(a);
8161 [can_compile_f16c=yes],
8162 [can_compile_f16c=no])
8164 CXXFLAGS=$save_CXXFLAGS
8165 AC_MSG_RESULT([${can_compile_f16c}])
8166 if test "${can_compile_f16c}" = "yes" ; then
8167 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8170 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8172 save_CXXFLAGS=$CXXFLAGS
8173 CXXFLAGS="$CXXFLAGS $flag_fma"
8174 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8175 #include <immintrin.h>
8177 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8178 d = _mm256_fmadd_ps(a, b, c);
8182 [can_compile_fma=yes],
8183 [can_compile_fma=no])
8185 CXXFLAGS=$save_CXXFLAGS
8186 AC_MSG_RESULT([${can_compile_fma}])
8187 if test "${can_compile_fma}" = "yes" ; then
8188 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8191 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8192 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8193 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8194 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8195 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8196 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8197 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8198 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8199 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8200 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8202 dnl ===================================================================
8203 dnl system stl sanity tests
8204 dnl ===================================================================
8205 if test "$_os" != "WINNT"; then
8209 save_CPPFLAGS="$CPPFLAGS"
8210 if test -n "$MACOSX_SDK_PATH"; then
8211 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8214 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8216 if test "$CPP_LIBRARY" = GLIBCXX; then
8217 dnl gcc#19664, gcc#22482, rhbz#162935
8218 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8219 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8220 AC_MSG_RESULT([$stlvisok])
8221 if test "$stlvisok" = "no"; then
8222 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8226 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8227 # when we don't make any dynamic libraries?
8228 if test "$DISABLE_DYNLOADING" = ""; then
8229 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8230 cat > conftestlib1.cc <<_ACEOF
8231 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8232 struct S2: S1<int> { virtual ~S2(); };
8235 cat > conftestlib2.cc <<_ACEOF
8236 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8237 struct S2: S1<int> { virtual ~S2(); };
8238 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8240 gccvisinlineshiddenok=yes
8241 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8242 gccvisinlineshiddenok=no
8244 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8245 dnl known to not work with -z defs (unsetting which makes the test
8247 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8248 if test "$COM_IS_CLANG" = TRUE; then
8249 for i in $CXX $CXXFLAGS; do
8252 my_linkflagsnoundefs=
8258 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8259 gccvisinlineshiddenok=no
8264 AC_MSG_RESULT([$gccvisinlineshiddenok])
8265 if test "$gccvisinlineshiddenok" = "no"; then
8266 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8270 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8271 cat >visibility.cxx <<_ACEOF
8272 #pragma GCC visibility push(hidden)
8273 struct __attribute__ ((visibility ("default"))) TestStruct {
8276 __attribute__ ((visibility ("default"))) void TestFunc() {
8280 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8285 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8288 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8300 rm -f visibility.s visibility.cxx
8302 AC_MSG_RESULT([$gccvisbroken])
8303 if test "$gccvisbroken" = "yes"; then
8304 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8307 CPPFLAGS="$save_CPPFLAGS"
8309 AC_MSG_CHECKING([if CET endbranch is recognized])
8310 cat > endbr.s <<_ACEOF
8313 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8314 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8315 AC_MSG_RESULT([yes])
8316 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8320 rm -f endbr.s endbr.o
8321 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8326 dnl ===================================================================
8328 dnl ===================================================================
8330 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8331 if test "$GCC" = "yes"; then
8332 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8334 save_CXXFLAGS=$CXXFLAGS
8335 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8336 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8337 CXXFLAGS=$save_CXXFLAGS
8339 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8340 AC_MSG_RESULT([yes])
8345 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8347 dnl ===================================================================
8348 dnl Compiler plugins
8349 dnl ===================================================================
8352 # currently only Clang
8354 if test "$COM_IS_CLANG" != "TRUE"; then
8355 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8356 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8357 enable_compiler_plugins=no
8361 COMPILER_PLUGINS_COM_IS_CLANG=
8362 if test "$COM_IS_CLANG" = "TRUE"; then
8363 if test -n "$enable_compiler_plugins"; then
8364 compiler_plugins="$enable_compiler_plugins"
8365 elif test -n "$ENABLE_DBGUTIL"; then
8366 compiler_plugins=test
8370 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8371 if test "$CLANGVER" -lt 120001; then
8372 if test "$compiler_plugins" = yes; then
8374 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8380 if test "$compiler_plugins" != "no"; then
8381 dnl The prefix where Clang resides, override to where Clang resides if
8382 dnl using a source build:
8383 if test -z "$CLANGDIR"; then
8384 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8386 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8387 if test -z "$COMPILER_PLUGINS_CXX"; then
8388 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8390 clangbindir=$CLANGDIR/bin
8391 if test "$build_os" = "cygwin"; then
8392 clangbindir=$(cygpath -u "$clangbindir")
8394 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8395 if test -n "$LLVM_CONFIG"; then
8396 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8397 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8398 if test -z "$CLANGLIBDIR"; then
8399 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8401 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8402 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8403 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8404 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8405 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8406 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8409 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8410 clangobjdir=$($LLVM_CONFIG --obj-root)
8411 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8412 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8415 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8419 save_CPPFLAGS=$CPPFLAGS
8420 save_CXXFLAGS=$CXXFLAGS
8421 save_LDFLAGS=$LDFLAGS
8423 CXX=$COMPILER_PLUGINS_CXX
8424 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8425 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8426 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8427 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8428 [COMPILER_PLUGINS=TRUE],
8430 if test "$compiler_plugins" = "yes"; then
8431 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8433 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8434 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8437 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8438 dnl comment in compilerplugins/Makefile-clang.mk:
8439 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8441 AC_MSG_CHECKING([for clang libraries to use])
8442 if test -z "$CLANGTOOLLIBS"; then
8443 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8445 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8446 [[ clang::FullSourceLoc().dump(); ]])
8447 ],[CLANGTOOLLIBS="$LIBS"],[])
8449 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8450 dnl list of individual -lclang* (but note that that list can become outdated over time,
8451 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8452 dnl needs to include -lclangSupport now"):
8453 if test -z "$CLANGTOOLLIBS"; then
8454 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8455 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8457 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8458 [[ clang::FullSourceLoc().dump(); ]])
8459 ],[CLANGTOOLLIBS="$LIBS"],[])
8461 AC_MSG_RESULT([$CLANGTOOLLIBS])
8462 if test -z "$CLANGTOOLLIBS"; then
8463 if test "$compiler_plugins" = "yes"; then
8464 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8466 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8467 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8471 if test -n "$COMPILER_PLUGINS"; then
8472 if test -z "$CLANGSYSINCLUDE"; then
8473 if test -n "$LLVM_CONFIG"; then
8474 # Path to the clang system headers (no idea if there's a better way to get it).
8475 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8482 CPPFLAGS=$save_CPPFLAGS
8483 CXXFLAGS=$save_CXXFLAGS
8484 LDFLAGS=$save_LDFLAGS
8488 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8489 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8495 [AC_MSG_RESULT([yes])
8496 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8497 [AC_MSG_RESULT([no])])
8498 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8501 if test "$enable_compiler_plugins" = "yes"; then
8502 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8505 COMPILER_PLUGINS_ANALYZER_PCH=
8506 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8507 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8509 AC_SUBST(COMPILER_PLUGINS)
8510 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8511 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8512 AC_SUBST(COMPILER_PLUGINS_CXX)
8513 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8514 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8515 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8516 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8518 AC_SUBST(CLANGLIBDIR)
8519 AC_SUBST(CLANGTOOLLIBS)
8520 AC_SUBST(CLANGSYSINCLUDE)
8522 # Plugin to help linker.
8523 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8524 # This makes --enable-lto build with clang work.
8527 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8528 AC_SUBST(HAVE_POSIX_FALLOCATE)
8530 JITC_PROCESSOR_TYPE=""
8531 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8532 # IBMs JDK needs this...
8533 JITC_PROCESSOR_TYPE=6
8534 export JITC_PROCESSOR_TYPE
8536 AC_SUBST([JITC_PROCESSOR_TYPE])
8538 # Misc Windows Stuff
8539 AC_ARG_WITH(ucrt-dir,
8540 AS_HELP_STRING([--with-ucrt-dir],
8541 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8542 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8543 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8544 Windows6.1-KB2999226-x64.msu
8545 Windows6.1-KB2999226-x86.msu
8546 Windows8.1-KB2999226-x64.msu
8547 Windows8.1-KB2999226-x86.msu
8548 Windows8-RT-KB2999226-x64.msu
8549 Windows8-RT-KB2999226-x86.msu
8550 A zip archive including those files is available from Microsoft site:
8551 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8554 UCRT_REDISTDIR="$with_ucrt_dir"
8555 if test $_os = "WINNT"; then
8557 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8558 MSVC_DLLS="$msvcdlls"
8559 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8561 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8563 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8566 for i in $PKGFORMAT; do
8567 if test "$i" = msi; then
8568 find_msms "$with_redist"
8569 if test -n "$msmdir"; then
8570 MSM_PATH=`win_short_path_for_make "$msmdir"`
8571 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8577 if test "$UCRT_REDISTDIR" = "no"; then
8578 dnl explicitly disabled
8581 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8582 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8583 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8584 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8585 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8586 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8588 if test -n "$PKGFORMAT"; then
8589 for i in $PKGFORMAT; do
8592 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8593 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8602 AC_SUBST(UCRT_REDISTDIR)
8603 AC_SUBST(MSVC_DLL_PATH)
8608 dnl ===================================================================
8610 dnl ===================================================================
8611 if test "$ENABLE_JAVA" != ""; then
8613 # Windows-specific tests
8614 if test "$build_os" = "cygwin"; then
8615 if test -z "$with_jdk_home"; then
8616 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8617 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8618 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8619 if test -n "$regvalue"; then
8621 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8622 with_jdk_home=$regvalue
8624 howfound="found automatically"
8626 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8627 howfound="you passed"
8630 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8631 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8635 # 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.
8636 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8637 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8638 with_jdk_home=`/usr/libexec/java_home`
8641 JAVA_HOME=; export JAVA_HOME
8642 if test -z "$with_jdk_home"; then
8643 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8645 _java_path="$with_jdk_home/bin/$with_java"
8646 dnl Check if there is a Java interpreter at all.
8647 if test -x "$_java_path"; then
8648 JAVAINTERPRETER=$_java_path
8650 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8654 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8655 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8656 dnl loaded by java to run JunitTests:
8657 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8658 shortjdkhome=`cygpath -d "$with_jdk_home"`
8659 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
8660 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8661 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8662 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
8663 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8664 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8667 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8668 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8670 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8671 elif test "$cross_compiling" != "yes"; then
8673 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64)
8674 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8675 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8676 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8679 *) # assumption: everything else 32-bit
8680 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8681 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8682 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8689 dnl ===================================================================
8691 dnl ===================================================================
8693 # Whether all the complexity here actually is needed any more or not, no idea.
8695 JDK_SECURITYMANAGER_DISALLOWED=
8696 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8698 AC_MSG_CHECKING([the installed JDK])
8699 if test -n "$JAVAINTERPRETER"; then
8700 dnl java -version sends output to stderr!
8701 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8702 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8703 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8704 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8705 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8706 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8707 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8708 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8712 dnl Sun JDK specific tests
8713 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8714 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8716 if test "$_jdk_ver" -lt 10900; then
8717 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8719 if test "$_jdk_ver" -gt 10900; then
8720 JAVA_CLASSPATH_NOT_SET=TRUE
8722 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8723 dnl completely removed in some Java version > 18 (see
8724 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8725 if test "$_jdk_ver" -ge 180000; then
8726 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8729 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8730 if test "$_os" = "WINNT"; then
8731 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8733 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8735 # set to limit VM usage for JunitTests
8737 # set to limit VM usage for javac
8738 JAVACFLAGS=-J-Xmx128M
8741 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8744 if test -z "$ENABLE_JAVA"; then
8748 elif test "$cross_compiling" = "yes"; then
8749 # Just assume compatibility of build and host JDK
8751 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8755 dnl ===================================================================
8756 dnl Checks for javac
8757 dnl ===================================================================
8758 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8759 javacompiler="javac"
8760 : ${JAVA_SOURCE_VER=8}
8761 : ${JAVA_TARGET_VER=8}
8762 if test -z "$with_jdk_home"; then
8763 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8765 _javac_path="$with_jdk_home/bin/$javacompiler"
8766 dnl Check if there is a Java compiler at all.
8767 if test -x "$_javac_path"; then
8768 JAVACOMPILER=$_javac_path
8771 if test -z "$JAVACOMPILER"; then
8772 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8774 if test "$build_os" = "cygwin"; then
8775 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8776 JAVACOMPILER="${JAVACOMPILER}.exe"
8778 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8782 dnl ===================================================================
8783 dnl Checks for javadoc
8784 dnl ===================================================================
8785 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8786 if test -z "$with_jdk_home"; then
8787 AC_PATH_PROG(JAVADOC, javadoc)
8789 _javadoc_path="$with_jdk_home/bin/javadoc"
8790 dnl Check if there is a javadoc at all.
8791 if test -x "$_javadoc_path"; then
8792 JAVADOC=$_javadoc_path
8794 AC_PATH_PROG(JAVADOC, javadoc)
8797 if test -z "$JAVADOC"; then
8798 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8800 if test "$build_os" = "cygwin"; then
8801 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8802 JAVADOC="${JAVADOC}.exe"
8804 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8807 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8808 JAVADOCISGJDOC="yes"
8812 AC_SUBST(JAVADOCISGJDOC)
8814 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8815 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8816 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8817 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8818 # try to recover first by looking whether we have an alternative
8819 # system as in Debian or newer SuSEs where following /usr/bin/javac
8820 # over /etc/alternatives/javac leads to the right bindir where we
8821 # just need to strip a bit away to get a valid JAVA_HOME
8822 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8823 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8824 # maybe only one level of symlink (e.g. on Mac)
8825 JAVA_HOME=$(readlink $JAVACOMPILER)
8826 if test "$(dirname $JAVA_HOME)" = "."; then
8827 # we've got no path to trim back
8832 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8833 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8834 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8835 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8837 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8838 if test "$JAVA_HOME" != "/usr"; then
8839 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8840 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8841 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8842 dnl Tiger already returns a JDK path...
8843 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8845 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8846 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8847 dnl that checks which version to run
8848 if test -f "$JAVA_HOME"; then
8849 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8854 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8856 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8857 if test -z "$JAVA_HOME"; then
8858 if test "x$with_jdk_home" = "x"; then
8859 cat > findhome.java <<_ACEOF
8860 [import java.io.File;
8864 public static void main(String args[])
8866 String jrelocation = System.getProperty("java.home");
8867 File jre = new File(jrelocation);
8868 System.out.println(jre.getParent());
8872 AC_MSG_CHECKING([if javac works])
8873 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8874 AC_TRY_EVAL(javac_cmd)
8875 if test $? = 0 -a -f ./findhome.class; then
8876 AC_MSG_RESULT([javac works])
8878 echo "configure: javac test failed" >&5
8879 cat findhome.java >&5
8880 AC_MSG_ERROR([javac does not work - java projects will not build!])
8882 AC_MSG_CHECKING([if gij knows its java.home])
8883 JAVA_HOME=`$JAVAINTERPRETER findhome`
8884 if test $? = 0 -a "$JAVA_HOME" != ""; then
8885 AC_MSG_RESULT([$JAVA_HOME])
8887 echo "configure: java test failed" >&5
8888 cat findhome.java >&5
8889 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8891 # clean-up after ourselves
8892 rm -f ./findhome.java ./findhome.class
8894 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8898 # now check if $JAVA_HOME is really valid
8899 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8900 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8901 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8902 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8903 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8904 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8905 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8906 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8909 PathFormat "$JAVA_HOME"
8910 JAVA_HOME="$formatted_path"
8913 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8916 AC_MSG_CHECKING([for JAWT lib])
8917 if test "$_os" = WINNT; then
8918 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8923 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8924 JAVA_ARCH=$my_java_arch
8939 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8940 JAVA_ARCH=$my_java_arch
8943 my_java_arch=sparcv9
8949 my_java_arch=$host_cpu
8952 # This is where JDK9 puts the library
8953 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8954 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8956 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8958 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8960 AC_MSG_RESULT([$JAWTLIB])
8964 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8968 JAVAINC="-I$JAVA_HOME/include"
8969 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8970 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8974 JAVAINC="-I$JAVA_HOME/include/win32"
8975 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8979 if test -d "$JAVA_HOME/include/darwin"; then
8980 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8982 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8987 JAVAINC="-I$JAVA_HOME/include"
8988 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8992 JAVAINC="-I$JAVA_HOME/include"
8993 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8994 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8995 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8996 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9000 JAVAINC="-I$JAVA_HOME/include"
9001 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9002 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9006 JAVAINC="-I$JAVA_HOME/include"
9007 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9008 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9012 JAVAINC="-I$JAVA_HOME/include"
9013 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9014 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9018 JAVAINC="-I$JAVA_HOME/include"
9019 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9020 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9024 JAVAINC="-I$JAVA_HOME/include"
9025 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9026 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9030 SOLARINC="$SOLARINC $JAVAINC"
9032 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9033 JAVA_HOME_FOR_BUILD=$JAVA_HOME
9034 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9036 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9039 AC_SUBST(JAVACFLAGS)
9040 AC_SUBST(JAVACOMPILER)
9041 AC_SUBST(JAVAINTERPRETER)
9042 AC_SUBST(JAVAIFLAGS)
9043 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9044 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
9046 AC_SUBST(JAVA_HOME_FOR_BUILD)
9048 AC_SUBST(JDK_FOR_BUILD)
9049 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9050 AC_SUBST(JAVA_SOURCE_VER)
9051 AC_SUBST(JAVA_TARGET_VER)
9054 dnl ===================================================================
9055 dnl Export file validation
9056 dnl ===================================================================
9057 AC_MSG_CHECKING([whether to enable export file validation])
9058 if test "$with_export_validation" != "no"; then
9059 if test -z "$ENABLE_JAVA"; then
9060 if test "$with_export_validation" = "yes"; then
9061 AC_MSG_ERROR([requested, but Java is disabled])
9063 AC_MSG_RESULT([no, as Java is disabled])
9065 elif ! test -d "${SRC_ROOT}/schema"; then
9066 if test "$with_export_validation" = "yes"; then
9067 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9069 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9072 AC_MSG_RESULT([yes])
9073 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9075 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9076 if test -z "$ODFVALIDATOR"; then
9077 # remember to download the ODF toolkit with validator later
9078 AC_MSG_NOTICE([no odfvalidator found, will download it])
9079 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9080 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9082 # and fetch name of odfvalidator jar name from download.lst
9083 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9084 AC_SUBST(ODFVALIDATOR_JAR)
9086 if test -z "$ODFVALIDATOR_JAR"; then
9087 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9090 if test "$build_os" = "cygwin"; then
9091 # In case of Cygwin it will be executed from Windows,
9092 # so we need to run bash and absolute path to validator
9093 # so instead of "odfvalidator" it will be
9094 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9095 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9097 ODFVALIDATOR="sh $ODFVALIDATOR"
9099 AC_SUBST(ODFVALIDATOR)
9102 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9103 if test -z "$OFFICEOTRON"; then
9104 # remember to download the officeotron with validator later
9105 AC_MSG_NOTICE([no officeotron found, will download it])
9106 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9107 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9109 # and fetch name of officeotron jar name from download.lst
9110 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9111 AC_SUBST(OFFICEOTRON_JAR)
9113 if test -z "$OFFICEOTRON_JAR"; then
9114 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9117 # check version of existing officeotron
9118 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9119 if test 0"$OFFICEOTRON_VER" -lt 704; then
9120 AC_MSG_ERROR([officeotron too old])
9123 if test "$build_os" = "cygwin"; then
9124 # In case of Cygwin it will be executed from Windows,
9125 # so we need to run bash and absolute path to validator
9126 # so instead of "odfvalidator" it will be
9127 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9128 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9130 OFFICEOTRON="sh $OFFICEOTRON"
9133 AC_SUBST(OFFICEOTRON)
9138 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9139 if test "$with_bffvalidator" != "no"; then
9140 AC_DEFINE(HAVE_BFFVALIDATOR)
9142 if test "$with_export_validation" = "no"; then
9143 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9146 if test "$with_bffvalidator" = "yes"; then
9147 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9149 BFFVALIDATOR="$with_bffvalidator"
9152 if test "$build_os" = "cygwin"; then
9153 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9154 AC_MSG_RESULT($BFFVALIDATOR)
9156 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9158 elif test -n "$BFFVALIDATOR"; then
9159 # We are not in Cygwin but need to run Windows binary with wine
9160 AC_PATH_PROGS(WINE, wine)
9162 # so swap in a shell wrapper that converts paths transparently
9163 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9164 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9165 AC_SUBST(BFFVALIDATOR_EXE)
9166 AC_MSG_RESULT($BFFVALIDATOR)
9168 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9170 AC_SUBST(BFFVALIDATOR)
9175 dnl ===================================================================
9176 dnl Check for epm (not needed for Windows)
9177 dnl ===================================================================
9178 AC_MSG_CHECKING([whether to enable EPM for packing])
9179 if test "$enable_epm" = "yes"; then
9180 AC_MSG_RESULT([yes])
9181 if test "$_os" != "WINNT"; then
9182 if test $_os = Darwin; then
9184 elif test -n "$with_epm"; then
9187 AC_PATH_PROG(EPM, epm, no)
9189 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9190 AC_MSG_NOTICE([EPM will be built.])
9191 BUILD_TYPE="$BUILD_TYPE EPM"
9192 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9194 # Gentoo has some epm which is something different...
9195 AC_MSG_CHECKING([whether the found epm is the right epm])
9196 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9197 AC_MSG_RESULT([yes])
9199 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9201 AC_MSG_CHECKING([epm version])
9202 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9203 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9204 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9205 AC_MSG_RESULT([OK, >= 3.7])
9207 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9208 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9213 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9214 AC_MSG_CHECKING([for rpm])
9215 for a in "$RPM" rpmbuild rpm; do
9216 $a --usage >/dev/null 2> /dev/null
9217 if test $? -eq 0; then
9221 $a --version >/dev/null 2> /dev/null
9222 if test $? -eq 0; then
9228 if test -z "$RPM"; then
9229 AC_MSG_ERROR([not found])
9230 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9231 RPM_PATH=`which $RPM`
9232 AC_MSG_RESULT([$RPM_PATH])
9233 SCPDEFS="$SCPDEFS -DWITH_RPM"
9235 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9238 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9239 AC_PATH_PROG(DPKG, dpkg, no)
9240 if test "$DPKG" = "no"; then
9241 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9244 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9245 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9246 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9247 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9248 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9249 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9250 AC_MSG_RESULT([yes])
9253 if echo "$PKGFORMAT" | $GREP -q rpm; then
9255 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9256 add_warning "the rpms will need to be installed with --nodeps"
9260 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9261 add_warning "the ${_pt}s will not be relocatable"
9262 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9263 relocation will work, you need to patch your epm with the
9264 patch in epm/epm-3.7.patch or build with
9265 --with-epm=internal which will build a suitable epm])
9270 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9271 AC_PATH_PROG(PKGMK, pkgmk, no)
9272 if test "$PKGMK" = "no"; then
9273 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9280 for i in $PKGFORMAT; do
9282 aix | bsd | deb | pkg | rpm | native | portable)
9284 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9294 if test "$enable_lotuswordpro" = "yes"; then
9297 AC_SUBST(ENABLE_LWP)
9299 dnl ===================================================================
9300 dnl Check for building ODK
9301 dnl ===================================================================
9302 AC_MSG_CHECKING([whether to build the ODK])
9303 if test "$enable_odk" = yes; then
9304 if test "$DISABLE_DYNLOADING" = TRUE; then
9305 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9307 AC_MSG_RESULT([yes])
9308 BUILD_TYPE="$BUILD_TYPE ODK"
9313 if test "$enable_odk" != yes; then
9316 if test "$with_doxygen" = no; then
9317 AC_MSG_CHECKING([for doxygen])
9321 if test "$with_doxygen" = yes; then
9322 AC_PATH_PROG([DOXYGEN], [doxygen])
9323 if test -z "$DOXYGEN"; then
9324 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9326 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9327 if ! dot -V 2>/dev/null; then
9328 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9332 AC_MSG_CHECKING([for doxygen])
9333 DOXYGEN=$with_doxygen
9334 AC_MSG_RESULT([$DOXYGEN])
9336 if test -n "$DOXYGEN"; then
9337 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9338 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9339 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9340 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9347 dnl ==================================================================
9349 dnl ==================================================================
9350 AC_MSG_CHECKING([whether to enable fuzzers])
9351 if test "$enable_fuzzers" != yes; then
9354 if test -z $LIB_FUZZING_ENGINE; then
9355 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9357 AC_MSG_RESULT([yes])
9358 ENABLE_FUZZERS="TRUE"
9359 AC_DEFINE([ENABLE_FUZZERS],1)
9360 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9361 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9363 AC_SUBST(LIB_FUZZING_ENGINE)
9365 dnl ===================================================================
9366 dnl Check for system zlib
9367 dnl ===================================================================
9368 if test "$with_system_zlib" = "auto"; then
9371 with_system_zlib="$with_system_libs"
9374 if test "$enable_fuzzers" != "yes"; then
9375 with_system_zlib=yes
9383 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9384 dnl and has no pkg-config for it at least on some tinderboxes,
9385 dnl so leaving that out for now
9386 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9387 AC_MSG_CHECKING([which zlib to use])
9388 if test "$with_system_zlib" = "yes"; then
9389 AC_MSG_RESULT([external])
9391 AC_CHECK_HEADER(zlib.h, [],
9392 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9393 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9394 [AC_MSG_ERROR(zlib not found or functional)], [])
9396 AC_MSG_RESULT([internal])
9398 BUILD_TYPE="$BUILD_TYPE ZLIB"
9399 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9400 if test "$COM" = "MSC"; then
9401 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9403 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9406 AC_SUBST(ZLIB_CFLAGS)
9408 AC_SUBST(SYSTEM_ZLIB)
9410 dnl ===================================================================
9411 dnl Check for system jpeg
9412 dnl ===================================================================
9413 AC_MSG_CHECKING([which libjpeg to use])
9414 if test "$with_system_jpeg" = "yes"; then
9415 AC_MSG_RESULT([external])
9417 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9418 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9419 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9420 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9423 AC_MSG_RESULT([internal, libjpeg-turbo])
9424 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9427 x86_64 | amd64 | i*86 | x86 | ia32)
9428 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9429 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9430 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9431 NASM="$LODE_HOME/opt/bin/nasm"
9432 elif test -x "/opt/lo/bin/nasm"; then
9433 NASM="/opt/lo/bin/nasm"
9437 if test -n "$NASM"; then
9438 AC_MSG_CHECKING([for object file format of host system])
9440 cygwin* | mingw* | pw32* | wsl*)
9450 msdosdjgpp* | go32*)
9453 os2-emx*) # not tested
9454 objfmt='MSOMF' # obj
9456 linux*coff* | linux*oldld*)
9472 kfreebsd* | freebsd* | netbsd* | openbsd*)
9473 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9486 solaris* | sunos* | sysv* | sco*)
9496 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9511 AC_MSG_RESULT([$objfmt])
9512 if test "$objfmt" = 'ELF ?'; then
9514 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9517 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9519 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9520 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9521 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9522 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9523 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9524 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9525 ELF) NAFLAGS='-felf -DELF -DPIC';;
9526 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9527 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9528 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9529 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9531 AC_MSG_RESULT([$NAFLAGS])
9533 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9534 cat > conftest.asm << EOF
9535 [%line __oline__ "configure"
9543 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9544 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9547 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9548 cat conftest.asm >&AS_MESSAGE_LOG_FD
9551 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9557 if test -z "$NASM"; then
9559 ****************************************************************************
9560 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9564 if test "$build_os" = "cygwin"; then
9566 install a pre-compiled binary for Win32
9568 mkdir -p /opt/lo/bin
9570 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9573 or get and install one from http://www.nasm.us/
9575 Then re-run autogen.sh
9577 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9578 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9583 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9587 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9588 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9596 AC_SUBST(LIBJPEG_CFLAGS)
9597 AC_SUBST(LIBJPEG_LIBS)
9598 AC_SUBST(SYSTEM_LIBJPEG)
9600 dnl ===================================================================
9601 dnl Check for system clucene
9602 dnl ===================================================================
9603 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9604 if test "$SYSTEM_CLUCENE" = TRUE; then
9606 save_CXXFLAGS=$CXXFLAGS
9607 save_CPPFLAGS=$CPPFLAGS
9608 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9609 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9610 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9611 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9612 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9613 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9614 CXXFLAGS=$save_CXXFLAGS
9615 CPPFLAGS=$save_CPPFLAGS
9617 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9620 dnl ===================================================================
9621 dnl Check for system expat
9622 dnl ===================================================================
9623 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9625 dnl ===================================================================
9626 dnl Check for system xmlsec
9627 dnl ===================================================================
9628 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9630 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9631 if test "$enable_eot" = "yes"; then
9633 AC_DEFINE([ENABLE_EOT])
9634 AC_MSG_RESULT([yes])
9636 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9641 AC_SUBST([ENABLE_EOT])
9643 dnl ===================================================================
9644 dnl Check for DLP libs
9645 dnl ===================================================================
9646 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9647 AS_IF([test "$COM" = "MSC"],
9648 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9649 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9651 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9652 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9654 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9656 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9658 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9659 AS_IF([test "$COM" = "MSC"],
9660 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9661 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9663 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9664 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9666 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9668 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9669 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9671 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9673 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9675 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9677 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9678 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9680 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9681 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9683 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9685 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9686 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9688 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9690 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9692 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9694 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9696 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9697 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9699 dnl ===================================================================
9700 dnl Check for system lcms2
9701 dnl ===================================================================
9702 if test "$with_system_lcms2" != "yes"; then
9705 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9706 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9707 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9708 if test "$GCC" = "yes"; then
9709 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9711 if test "$COM" = "MSC"; then # override the above
9712 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9715 dnl ===================================================================
9716 dnl Check for system cppunit
9717 dnl ===================================================================
9718 if test "$_os" != "Android" ; then
9719 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9722 dnl ===================================================================
9723 dnl Check whether freetype is available
9725 dnl FreeType has 3 different kinds of versions
9726 dnl * release, like 2.4.10
9727 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9729 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9732 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9733 dnl ===================================================================
9734 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9735 if test "x$ac_config_site_64bit_host" = xYES; then
9736 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9738 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9740 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9742 # ===================================================================
9743 # Check for system libxslt
9744 # to prevent incompatibilities between internal libxml2 and external libxslt,
9745 # or vice versa, use with_system_libxml here
9746 # ===================================================================
9747 if test "$with_system_libxml" = "auto"; then
9750 with_system_libxml="$with_system_libs"
9753 with_system_libxml=no
9756 if test "$enable_fuzzers" != "yes"; then
9757 with_system_libxml=yes
9759 with_system_libxml=no
9765 AC_MSG_CHECKING([which libxslt to use])
9766 if test "$with_system_libxml" = "yes"; then
9767 AC_MSG_RESULT([external])
9769 if test "$_os" = "Darwin"; then
9770 dnl make sure to use SDK path
9771 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9772 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9774 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9775 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9777 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9778 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9779 FilterLibs "${LIBXSLT_LIBS}"
9780 LIBXSLT_LIBS="${filteredlibs}"
9781 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9782 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9783 FilterLibs "${LIBEXSLT_LIBS}"
9784 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9787 dnl Check for xsltproc
9788 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9789 if test "$XSLTPROC" = "no"; then
9790 AC_MSG_ERROR([xsltproc is required])
9793 AC_MSG_RESULT([internal])
9795 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9797 AC_SUBST(SYSTEM_LIBXSLT)
9798 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9799 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9801 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9803 AC_SUBST(LIBEXSLT_CFLAGS)
9804 AC_SUBST(LIBEXSLT_LIBS)
9805 AC_SUBST(LIBXSLT_CFLAGS)
9806 AC_SUBST(LIBXSLT_LIBS)
9809 # ===================================================================
9810 # Check for system libxml
9811 # ===================================================================
9812 AC_MSG_CHECKING([which libxml to use])
9813 if test "$with_system_libxml" = "yes"; then
9814 AC_MSG_RESULT([external])
9816 if test "$_os" = "Darwin"; then
9817 dnl make sure to use SDK path
9818 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9820 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9821 elif test $_os = iOS; then
9822 dnl make sure to use SDK path
9823 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9824 LIBXML_CFLAGS="-I$usr/include/libxml2"
9825 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9827 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9828 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9829 FilterLibs "${LIBXML_LIBS}"
9830 LIBXML_LIBS="${filteredlibs}"
9833 dnl Check for xmllint
9834 AC_PATH_PROG(XMLLINT, xmllint, no)
9835 if test "$XMLLINT" = "no"; then
9836 AC_MSG_ERROR([xmllint is required])
9839 AC_MSG_RESULT([internal])
9841 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9842 if test "$COM" = "MSC"; then
9843 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9845 if test "$COM" = "MSC"; then
9846 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9848 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9849 if test "$DISABLE_DYNLOADING" = TRUE; then
9850 LIBXML_LIBS="$LIBXML_LIBS -lm"
9853 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9855 AC_SUBST(SYSTEM_LIBXML)
9856 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9857 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9859 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9860 AC_SUBST(LIBXML_CFLAGS)
9861 AC_SUBST(LIBXML_LIBS)
9864 # =====================================================================
9865 # Checking for a Python interpreter with version >= 3.3.
9866 # Optionally user can pass an option to configure, i. e.
9867 # ./configure PYTHON=/usr/bin/python
9868 # =====================================================================
9869 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9870 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9871 # unless PYTHON is defined as above which allows 'system'
9872 enable_python=internal
9874 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9875 if test -n "$PYTHON"; then
9876 PYTHON_FOR_BUILD=$PYTHON
9878 # This allows a lack of system python with no error, we use internal one in that case.
9879 AM_PATH_PYTHON([3.3],, [:])
9880 # Clean PYTHON_VERSION checked below if cross-compiling
9882 if test "$PYTHON" != ":"; then
9883 PYTHON_FOR_BUILD=$PYTHON
9888 # Checks for Python to use for Pyuno
9889 AC_MSG_CHECKING([which Python to use for Pyuno])
9890 case "$enable_python" in
9892 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9893 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9894 # requirement from the choice whether to include Python stuff in the installer, but why
9896 AC_MSG_ERROR([Python is required at build time.])
9899 AC_MSG_RESULT([none])
9902 if test "$DISABLE_SCRIPTING" = TRUE; then
9903 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9904 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9906 AC_MSG_RESULT([none, overridden by --disable-scripting])
9908 elif test $build_os = cygwin -o $build_os = wsl; then
9909 dnl When building on Windows we don't attempt to use any installed
9910 dnl "system" Python.
9911 AC_MSG_RESULT([fully internal])
9912 enable_python=internal
9913 elif test "$cross_compiling" = yes; then
9914 AC_MSG_RESULT([system])
9915 enable_python=system
9917 # Unset variables set by the above AM_PATH_PYTHON so that
9918 # we actually do check anew.
9920 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
9921 AM_PATH_PYTHON([3.3],, [:])
9922 AC_MSG_CHECKING([which Python to use for Pyuno])
9923 if test "$PYTHON" = ":"; then
9924 if test -z "$PYTHON_FOR_BUILD"; then
9925 AC_MSG_RESULT([fully internal])
9927 AC_MSG_RESULT([internal])
9929 enable_python=internal
9931 AC_MSG_RESULT([system])
9932 enable_python=system
9937 AC_MSG_RESULT([internal])
9940 AC_MSG_RESULT([fully internal])
9941 enable_python=internal
9944 AC_MSG_RESULT([system])
9945 if test "$_os" = Darwin -a -z "$PYTHON"; then
9946 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9950 AC_MSG_ERROR([Incorrect --enable-python option])
9954 if test $enable_python != no; then
9955 BUILD_TYPE="$BUILD_TYPE PYUNO"
9958 if test $enable_python = system; then
9959 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9960 # Fallback: Accept these in the environment, or as set above
9963 elif test "$cross_compiling" != yes; then
9964 # Unset variables set by the above AM_PATH_PYTHON so that
9965 # we actually do check anew.
9966 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
9967 # This causes an error if no python command is found
9968 AM_PATH_PYTHON([3.3])
9969 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9970 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9971 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9972 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9973 if test -z "$PKG_CONFIG"; then
9974 PYTHON_CFLAGS="-I$python_include"
9975 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9976 elif $PKG_CONFIG --exists python-$python_version-embed; then
9977 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9978 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9979 elif $PKG_CONFIG --exists python-$python_version; then
9980 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9981 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9983 PYTHON_CFLAGS="-I$python_include"
9984 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9986 FilterLibs "${PYTHON_LIBS}"
9987 PYTHON_LIBS="${filteredlibs}"
9989 dnl How to find out the cross-compilation Python installation path?
9990 AC_MSG_CHECKING([for python version])
9991 AS_IF([test -n "$PYTHON_VERSION"],
9992 [AC_MSG_RESULT([$PYTHON_VERSION])],
9993 [AC_MSG_RESULT([not found])
9994 AC_MSG_ERROR([no usable python found])])
9995 test -n "$PYTHON_CFLAGS" && break
9998 dnl Check if the headers really work
9999 save_CPPFLAGS="$CPPFLAGS"
10000 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10001 AC_CHECK_HEADER(Python.h)
10002 CPPFLAGS="$save_CPPFLAGS"
10004 # let the PYTHON_FOR_BUILD match the same python installation that
10005 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10006 # better for PythonTests.
10007 PYTHON_FOR_BUILD=$PYTHON
10010 if test "$with_lxml" != no; then
10011 if test -z "$PYTHON_FOR_BUILD"; then
10014 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10017 if test "$cross_compiling" != yes ; then
10018 BUILD_TYPE="$BUILD_TYPE LXML"
10023 AC_MSG_CHECKING([for python lxml])
10024 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10025 AC_MSG_RESULT([yes])
10029 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10032 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10033 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10034 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10036 BUILD_TYPE="$BUILD_TYPE LXML"
10037 AC_MSG_RESULT([no, using internal lxml])
10040 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10048 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10050 PYTHON_VERSION_MAJOR=3
10051 PYTHON_VERSION_MINOR=8
10052 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.15
10053 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10054 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10056 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10058 # Embedded Python dies without Home set
10059 if test "$HOME" = ""; then
10064 dnl By now enable_python should be "system", "internal" or "no"
10065 case $enable_python in
10069 if test "x$ac_cv_header_Python_h" != "xyes"; then
10070 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10074 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10075 AC_MSG_CHECKING([for correct python library version])
10076 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10077 #include <Python.h>
10079 int main(int argc, char **argv) {
10080 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10083 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10086 dnl FIXME Check if the Python library can be linked with, too?
10090 BUILD_TYPE="$BUILD_TYPE PYTHON"
10091 if test "$OS" = LINUX -o "$OS" = WNT ; then
10092 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10096 DISABLE_PYTHON=TRUE
10100 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10104 AC_SUBST(DISABLE_PYTHON)
10105 AC_SUBST(SYSTEM_PYTHON)
10106 AC_SUBST(PYTHON_CFLAGS)
10107 AC_SUBST(PYTHON_FOR_BUILD)
10108 AC_SUBST(PYTHON_LIBS)
10109 AC_SUBST(PYTHON_VERSION)
10110 AC_SUBST(PYTHON_VERSION_MAJOR)
10111 AC_SUBST(PYTHON_VERSION_MINOR)
10113 AC_MSG_CHECKING([whether to build LibreLogo])
10114 case "$enable_python" in
10116 AC_MSG_RESULT([no; Python disabled])
10119 if test "${enable_librelogo}" = "no"; then
10120 AC_MSG_RESULT([no])
10122 AC_MSG_RESULT([yes])
10123 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10124 AC_DEFINE([ENABLE_LIBRELOGO],1)
10128 AC_SUBST(ENABLE_LIBRELOGO)
10134 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10135 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10136 ENABLE_MARIADBC=TRUE
10137 AC_MSG_RESULT([yes])
10138 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10140 AC_MSG_RESULT([no])
10142 AC_SUBST(ENABLE_MARIADBC)
10143 AC_SUBST(MARIADBC_MAJOR)
10144 AC_SUBST(MARIADBC_MINOR)
10145 AC_SUBST(MARIADBC_MICRO)
10147 if test "$ENABLE_MARIADBC" = "TRUE"; then
10148 dnl ===================================================================
10149 dnl Check for system MariaDB
10150 dnl ===================================================================
10151 AC_MSG_CHECKING([which MariaDB to use])
10152 if test "$with_system_mariadb" = "yes"; then
10153 AC_MSG_RESULT([external])
10154 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10155 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10156 if test -z "$MARIADBCONFIG"; then
10157 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10158 if test -z "$MARIADBCONFIG"; then
10159 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10160 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10163 AC_MSG_CHECKING([MariaDB version])
10164 MARIADB_VERSION=`$MARIADBCONFIG --version`
10165 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10166 if test "$MARIADB_MAJOR" -ge "5"; then
10167 AC_MSG_RESULT([OK])
10169 AC_MSG_ERROR([too old, use 5.0.x or later])
10171 AC_MSG_CHECKING([for MariaDB Client library])
10172 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10173 if test "$COM_IS_CLANG" = TRUE; then
10174 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10176 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10177 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10178 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10180 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10181 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10182 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10183 | sed -e 's|/lib64/|/lib/|')
10185 FilterLibs "${MARIADB_LIBS}"
10186 MARIADB_LIBS="${filteredlibs}"
10187 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10188 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10189 if test "$enable_bundle_mariadb" = "yes"; then
10190 AC_MSG_RESULT([yes])
10191 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10192 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10194 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10196 /g' | grep -E '(mysqlclient|mariadb)')
10197 if test "$_os" = "Darwin"; then
10198 LIBMARIADB=${LIBMARIADB}.dylib
10199 elif test "$_os" = "WINNT"; then
10200 LIBMARIADB=${LIBMARIADB}.dll
10202 LIBMARIADB=${LIBMARIADB}.so
10204 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10205 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10206 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10207 AC_MSG_RESULT([found.])
10208 PathFormat "$LIBMARIADB_PATH"
10209 LIBMARIADB_PATH="$formatted_path"
10211 AC_MSG_ERROR([not found.])
10214 AC_MSG_RESULT([no])
10215 BUNDLE_MARIADB_CONNECTOR_C=
10218 AC_MSG_RESULT([internal])
10219 SYSTEM_MARIADB_CONNECTOR_C=
10220 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10221 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10222 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10225 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10226 AC_SUBST(MARIADB_CFLAGS)
10227 AC_SUBST(MARIADB_LIBS)
10228 AC_SUBST(LIBMARIADB)
10229 AC_SUBST(LIBMARIADB_PATH)
10230 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10233 dnl ===================================================================
10234 dnl Check for system hsqldb
10235 dnl ===================================================================
10236 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10237 AC_MSG_CHECKING([which hsqldb to use])
10238 if test "$with_system_hsqldb" = "yes"; then
10239 AC_MSG_RESULT([external])
10241 if test -z $HSQLDB_JAR; then
10242 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10244 if ! test -f $HSQLDB_JAR; then
10245 AC_MSG_ERROR(hsqldb.jar not found.)
10247 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10251 my $file = "$ENV{'HSQLDB_JAR'}";
10252 my $zip = Archive::Zip->new( $file );
10253 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10254 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10256 push @l, split(/\n/, $mf);
10257 foreach my $line (@l)
10259 if ($line =~ m/Specification-Version:/)
10261 ($t, $version) = split (/:/,$line);
10262 $version =~ s/^\s//;
10263 ($a, $b, $c, $d) = split (/\./,$version);
10264 if ($c == "0" && $d > "8")
10279 AC_MSG_RESULT([yes])
10281 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10284 AC_MSG_RESULT([internal])
10286 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10290 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10291 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10294 AC_SUBST(SYSTEM_HSQLDB)
10295 AC_SUBST(HSQLDB_JAR)
10297 dnl ===================================================================
10298 dnl Check for PostgreSQL stuff
10299 dnl ===================================================================
10300 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10301 if test "x$enable_postgresql_sdbc" != "xno"; then
10302 AC_MSG_RESULT([yes])
10303 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10305 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10306 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10308 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10309 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10312 postgres_interface=""
10313 if test "$with_system_postgresql" = "yes"; then
10314 postgres_interface="external PostgreSQL"
10315 SYSTEM_POSTGRESQL=TRUE
10316 if test "$_os" = Darwin; then
10318 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10319 pg_supp_path="$P_SEP$d$pg_supp_path"
10322 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10323 if test -n "$PGCONFIG"; then
10324 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10325 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10327 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10328 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10329 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10331 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10334 FilterLibs "${POSTGRESQL_LIB}"
10335 POSTGRESQL_LIB="${filteredlibs}"
10337 # if/when anything else than PostgreSQL uses Kerberos,
10338 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10343 # macOS has system MIT Kerberos 5 since 10.4
10344 if test "$with_krb5" != "no"; then
10347 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10348 # that the libraries where these functions are located on macOS will change, is it?
10349 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10350 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10353 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10354 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10355 KRB5_LIBS="$KRB5_LIBS $LIBS"
10358 if test "$with_gssapi" != "no"; then
10361 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10362 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10368 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10369 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10372 Linux|GNU|*BSD|DragonFly)
10373 if test "$with_krb5" != "no"; then
10376 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10377 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10380 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10381 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10382 KRB5_LIBS="$KRB5_LIBS $LIBS"
10385 if test "$with_gssapi" != "no"; then
10388 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10389 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10395 if test "$with_krb5" = "yes"; then
10398 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10399 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10402 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10403 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10404 KRB5_LIBS="$KRB5_LIBS $LIBS"
10407 if test "$with_gssapi" = "yes"; then
10410 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10411 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10417 if test -n "$with_libpq_path"; then
10418 SYSTEM_POSTGRESQL=TRUE
10419 postgres_interface="external libpq"
10420 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10421 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10424 postgres_interface="internal"
10426 POSTGRESQL_INC="%OVERRIDE_ME%"
10427 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10431 AC_MSG_CHECKING([PostgreSQL C interface])
10432 AC_MSG_RESULT([$postgres_interface])
10434 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10435 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10436 save_CFLAGS=$CFLAGS
10437 save_CPPFLAGS=$CPPFLAGS
10439 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10440 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10441 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10442 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10443 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10444 CFLAGS=$save_CFLAGS
10445 CPPFLAGS=$save_CPPFLAGS
10448 BUILD_POSTGRESQL_SDBC=TRUE
10450 AC_MSG_RESULT([no])
10452 AC_SUBST(WITH_KRB5)
10453 AC_SUBST(WITH_GSSAPI)
10454 AC_SUBST(GSSAPI_LIBS)
10455 AC_SUBST(KRB5_LIBS)
10456 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10457 AC_SUBST(SYSTEM_POSTGRESQL)
10458 AC_SUBST(POSTGRESQL_INC)
10459 AC_SUBST(POSTGRESQL_LIB)
10461 dnl ===================================================================
10462 dnl Check for Firebird stuff
10463 dnl ===================================================================
10464 ENABLE_FIREBIRD_SDBC=
10465 if test "$enable_firebird_sdbc" = "yes" ; then
10466 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10468 dnl ===================================================================
10469 dnl Check for system Firebird
10470 dnl ===================================================================
10471 AC_MSG_CHECKING([which Firebird to use])
10472 if test "$with_system_firebird" = "yes"; then
10473 AC_MSG_RESULT([external])
10474 SYSTEM_FIREBIRD=TRUE
10475 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10476 if test -z "$FIREBIRDCONFIG"; then
10477 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10478 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10479 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10481 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10483 AC_MSG_NOTICE([fb_config found])
10484 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10485 AC_MSG_CHECKING([for Firebird Client library])
10486 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10487 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10488 FilterLibs "${FIREBIRD_LIBS}"
10489 FIREBIRD_LIBS="${filteredlibs}"
10491 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10492 AC_MSG_CHECKING([Firebird version])
10493 if test -n "${FIREBIRD_VERSION}"; then
10494 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10495 if test "$FIREBIRD_MAJOR" -ge "3"; then
10496 AC_MSG_RESULT([OK])
10498 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10501 save_CFLAGS="${CFLAGS}"
10502 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10503 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10504 #if defined(FB_API_VER) && FB_API_VER == 30
10505 int fb_api_is_30(void) { return 0; }
10507 #error "Wrong Firebird API version"
10508 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10509 CFLAGS="$save_CFLAGS"
10511 ENABLE_FIREBIRD_SDBC=TRUE
10512 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10513 elif test "$enable_database_connectivity" = no; then
10514 AC_MSG_RESULT([none])
10515 elif test "$cross_compiling" = "yes"; then
10516 AC_MSG_RESULT([none])
10518 dnl Embedded Firebird has version 3.0
10519 dnl We need libatomic_ops for any non X86/X64 system
10520 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10521 dnl ===================================================================
10522 dnl Check for system libatomic_ops
10523 dnl ===================================================================
10524 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10525 if test "$with_system_libatomic_ops" = "yes"; then
10526 SYSTEM_LIBATOMIC_OPS=TRUE
10527 AC_CHECK_HEADERS(atomic_ops.h, [],
10528 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10530 SYSTEM_LIBATOMIC_OPS=
10531 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10532 LIBATOMIC_OPS_LIBS="-latomic_ops"
10533 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10537 AC_MSG_RESULT([internal])
10539 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10540 FIREBIRD_LIBS="-lfbclient"
10542 if test "$with_system_libtommath" = "yes"; then
10543 SYSTEM_LIBTOMMATH=TRUE
10544 dnl check for tommath presence
10546 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10547 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10551 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10552 LIBTOMMATH_LIBS="-ltommath"
10553 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10556 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10557 ENABLE_FIREBIRD_SDBC=TRUE
10558 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10561 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10562 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10563 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10564 AC_SUBST(LIBATOMIC_OPS_LIBS)
10565 AC_SUBST(SYSTEM_FIREBIRD)
10566 AC_SUBST(FIREBIRD_CFLAGS)
10567 AC_SUBST(FIREBIRD_LIBS)
10568 AC_SUBST(SYSTEM_LIBTOMMATH)
10569 AC_SUBST(LIBTOMMATH_CFLAGS)
10570 AC_SUBST(LIBTOMMATH_LIBS)
10572 dnl ===================================================================
10573 dnl Check for system curl
10574 dnl ===================================================================
10575 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10577 dnl ===================================================================
10578 dnl Check for system boost
10579 dnl ===================================================================
10580 AC_MSG_CHECKING([which boost to use])
10581 if test "$with_system_boost" = "yes"; then
10582 AC_MSG_RESULT([external])
10584 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10586 AX_BOOST_FILESYSTEM
10589 AC_LANG_PUSH([C++])
10590 save_CXXFLAGS=$CXXFLAGS
10591 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10592 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10593 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10594 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10595 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10596 CXXFLAGS=$save_CXXFLAGS
10598 # this is in m4/ax_boost_base.m4
10599 FilterLibs "${BOOST_LDFLAGS}"
10600 BOOST_LDFLAGS="${filteredlibs}"
10602 AC_MSG_RESULT([internal])
10603 BUILD_TYPE="$BUILD_TYPE BOOST"
10605 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10606 # use warning-suppressing wrapper headers
10607 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10609 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10612 AC_SUBST(SYSTEM_BOOST)
10614 dnl ===================================================================
10615 dnl Check for system mdds
10616 dnl ===================================================================
10617 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10618 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10620 dnl ===================================================================
10621 dnl Check for system dragonbox
10622 dnl ===================================================================
10623 AC_MSG_CHECKING([which dragonbox to use])
10624 if test "$with_system_dragonbox" = "yes"; then
10625 AC_MSG_RESULT([external])
10626 SYSTEM_DRAGONBOX=TRUE
10627 AC_LANG_PUSH([C++])
10628 save_CPPFLAGS=$CPPFLAGS
10629 # This is where upstream installs to, unfortunately no .pc or so...
10630 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10631 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10632 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10633 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10635 CPPFLAGS=$save_CPPFLAGS
10637 AC_MSG_RESULT([internal])
10638 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10641 AC_SUBST([SYSTEM_DRAGONBOX])
10642 AC_SUBST([DRAGONBOX_CFLAGS])
10644 dnl ===================================================================
10645 dnl Check for system libfixmath
10646 dnl ===================================================================
10647 AC_MSG_CHECKING([which libfixmath to use])
10648 if test "$with_system_libfixmath" = "yes"; then
10649 AC_MSG_RESULT([external])
10650 SYSTEM_LIBFIXMATH=TRUE
10651 AC_LANG_PUSH([C++])
10652 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10653 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10654 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10657 AC_MSG_RESULT([internal])
10660 AC_SUBST([SYSTEM_LIBFIXMATH])
10662 dnl ===================================================================
10663 dnl Check for system glm
10664 dnl ===================================================================
10665 AC_MSG_CHECKING([which glm to use])
10666 if test "$with_system_glm" = "yes"; then
10667 AC_MSG_RESULT([external])
10669 AC_LANG_PUSH([C++])
10670 AC_CHECK_HEADER([glm/glm.hpp], [],
10671 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10674 AC_MSG_RESULT([internal])
10675 BUILD_TYPE="$BUILD_TYPE GLM"
10677 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10679 AC_SUBST([GLM_CFLAGS])
10680 AC_SUBST([SYSTEM_GLM])
10682 dnl ===================================================================
10683 dnl Check for system odbc
10684 dnl ===================================================================
10685 AC_MSG_CHECKING([which odbc headers to use])
10686 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
10687 AC_MSG_RESULT([external])
10688 SYSTEM_ODBC_HEADERS=TRUE
10690 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10691 save_CPPFLAGS=$CPPFLAGS
10693 PathFormat "$winsdktest"
10694 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"
10695 AC_CHECK_HEADER(sqlext.h, [],
10696 [AC_MSG_ERROR(odbc not found. install odbc)],
10697 [#include <windows.h>])
10698 CPPFLAGS=$save_CPPFLAGS
10700 AC_CHECK_HEADER(sqlext.h, [],
10701 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10703 elif test "$enable_database_connectivity" = no; then
10704 AC_MSG_RESULT([none])
10706 AC_MSG_RESULT([internal])
10707 SYSTEM_ODBC_HEADERS=
10709 AC_SUBST(SYSTEM_ODBC_HEADERS)
10711 dnl ===================================================================
10712 dnl Check for system NSS
10713 dnl ===================================================================
10714 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10715 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10716 AC_DEFINE(HAVE_FEATURE_NSS)
10718 elif test $_os != iOS ; then
10721 AC_SUBST(ENABLE_NSS)
10723 dnl ===================================================================
10724 dnl Enable LDAP support
10725 dnl ===================================================================
10727 if test "$test_openldap" = yes; then
10728 AC_MSG_CHECKING([whether to enable LDAP support])
10729 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10730 AC_MSG_RESULT([yes])
10733 if test "$enable_ldap" != "yes"; then
10734 AC_MSG_RESULT([no])
10736 AC_MSG_RESULT([no (needs NSS or system openldap)])
10740 dnl ===================================================================
10741 dnl Check for system openldap
10742 dnl ===================================================================
10744 if test "$ENABLE_LDAP" = TRUE; then
10745 AC_MSG_CHECKING([which openldap library to use])
10746 if test "$with_system_openldap" = yes; then
10747 AC_MSG_RESULT([external])
10748 SYSTEM_OPENLDAP=TRUE
10749 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10750 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10751 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10753 AC_MSG_RESULT([internal])
10754 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10759 AC_SUBST(ENABLE_LDAP)
10760 AC_SUBST(SYSTEM_OPENLDAP)
10762 dnl ===================================================================
10763 dnl Check for TLS/SSL and cryptographic implementation to use
10764 dnl ===================================================================
10765 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10766 if test -n "$with_tls"; then
10769 AC_DEFINE(USE_TLS_OPENSSL)
10771 AC_MSG_RESULT([$TLS])
10773 if test "$enable_openssl" != "yes"; then
10774 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10777 # warn that OpenSSL has been selected but not all TLS code has this option
10778 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10779 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10782 AC_DEFINE(USE_TLS_NSS)
10784 AC_MSG_RESULT([$TLS])
10787 AC_MSG_RESULT([none])
10788 AC_MSG_WARN([Skipping TLS/SSL])
10792 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10794 nss - Mozilla's Network Security Services (NSS)
10799 # default to using NSS, it results in smaller oox lib
10800 AC_DEFINE(USE_TLS_NSS)
10802 AC_MSG_RESULT([$TLS])
10806 dnl ===================================================================
10807 dnl Check for system sane
10808 dnl ===================================================================
10809 AC_MSG_CHECKING([which sane header to use])
10810 if test "$with_system_sane" = "yes"; then
10811 AC_MSG_RESULT([external])
10812 AC_CHECK_HEADER(sane/sane.h, [],
10813 [AC_MSG_ERROR(sane not found. install sane)], [])
10815 AC_MSG_RESULT([internal])
10816 BUILD_TYPE="$BUILD_TYPE SANE"
10819 dnl ===================================================================
10820 dnl Check for system icu
10821 dnl ===================================================================
10824 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10825 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10826 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10827 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10828 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10829 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10830 if test "$SYSTEM_ICU" = TRUE; then
10831 AC_LANG_PUSH([C++])
10832 AC_MSG_CHECKING([for unicode/rbbi.h])
10833 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10836 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10837 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10838 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10840 if test "$ICU_MAJOR" -ge 50; then
10841 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10845 if test "$CROSS_COMPILING" != TRUE; then
10846 # using the system icu tools can lead to version confusion, use the
10847 # ones from the build environment when cross-compiling
10848 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10849 if test -z "$SYSTEM_GENBRK"; then
10850 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10852 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10853 if test -z "$SYSTEM_GENCCODE"; then
10854 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10856 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10857 if test -z "$SYSTEM_GENCMN"; then
10858 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10860 if test "$ICU_MAJOR" -lt 49; then
10861 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10862 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10863 ICU_RECLASSIFIED_HEBREW_LETTER=
10867 if test "$ICU_MAJOR" -ge "59"; then
10868 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10869 # with -std=c++11 but not all external libraries can be built with that,
10870 # for those use a bit-compatible typedef uint16_t UChar; see
10871 # icu/source/common/unicode/umachine.h
10872 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10876 AC_SUBST(SYSTEM_GENBRK)
10877 AC_SUBST(SYSTEM_GENCCODE)
10878 AC_SUBST(SYSTEM_GENCMN)
10879 AC_SUBST(ICU_MAJOR)
10880 AC_SUBST(ICU_MINOR)
10881 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10882 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10883 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10884 AC_SUBST(ICU_UCHAR_TYPE)
10886 dnl ==================================================================
10888 dnl ==================================================================
10889 DEFAULT_CRASHDUMP_VALUE="true"
10890 AC_MSG_CHECKING([whether to enable breakpad])
10891 if test "$enable_breakpad" != yes; then
10892 AC_MSG_RESULT([no])
10894 AC_MSG_RESULT([yes])
10895 ENABLE_BREAKPAD="TRUE"
10896 AC_DEFINE(ENABLE_BREAKPAD)
10897 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10898 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10900 AC_MSG_CHECKING([for disable crash dump])
10901 if test "$enable_crashdump" = no; then
10902 DEFAULT_CRASHDUMP_VALUE="false"
10903 AC_MSG_RESULT([yes])
10905 AC_MSG_RESULT([no])
10908 AC_MSG_CHECKING([for crashreport config])
10909 if test "$with_symbol_config" = "no"; then
10910 BREAKPAD_SYMBOL_CONFIG="invalid"
10911 AC_MSG_RESULT([no])
10913 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10914 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10915 AC_MSG_RESULT([yes])
10917 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10919 AC_SUBST(ENABLE_BREAKPAD)
10920 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10922 dnl ===================================================================
10924 dnl ===================================================================
10925 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10926 if test "$with_system_orcus" != "yes"; then
10927 if test "$SYSTEM_BOOST" = "TRUE"; then
10928 dnl Link with Boost.System
10929 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10930 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10931 dnl in documentation has no effect.
10935 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10936 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10937 AC_SUBST([BOOST_SYSTEM_LIB])
10938 AC_SUBST(SYSTEM_LIBORCUS)
10940 dnl ===================================================================
10942 dnl ===================================================================
10944 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10945 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10946 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10948 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10949 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10950 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 2.6.0])
10952 if test "$COM" = "MSC"; then # override the above
10953 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10954 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10957 if test "$with_system_harfbuzz" = "yes"; then
10958 if test "$with_system_graphite" = "no"; then
10959 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10961 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10963 save_CFLAGS="$CFLAGS"
10964 LIBS="$LIBS $HARFBUZZ_LIBS"
10965 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10966 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10968 CFLAGS="$save_CFLAGS"
10970 if test "$with_system_graphite" = "yes"; then
10971 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10975 if test "$USING_X11" = TRUE; then
10978 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10980 if test -z "$x_includes"; then
10981 x_includes="default_x_includes"
10983 if test -z "$x_libraries"; then
10984 x_libraries="default_x_libraries"
10986 CFLAGS="$CFLAGS $X_CFLAGS"
10987 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10988 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10990 x_includes="no_x_includes"
10991 x_libraries="no_x_libraries"
10994 if test "$USING_X11" = TRUE; then
10995 dnl ===================================================================
10996 dnl Check for extension headers
10997 dnl ===================================================================
10998 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10999 [#include <X11/extensions/shape.h>])
11001 # vcl needs ICE and SM
11002 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11003 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11004 [AC_MSG_ERROR(ICE library not found)])
11005 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11006 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11007 [AC_MSG_ERROR(SM library not found)])
11010 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11011 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11012 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11015 dnl ===================================================================
11016 dnl Check for system Xrender
11017 dnl ===================================================================
11018 AC_MSG_CHECKING([whether to use Xrender])
11019 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
11020 AC_MSG_RESULT([yes])
11021 PKG_CHECK_MODULES(XRENDER, xrender)
11022 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11023 FilterLibs "${XRENDER_LIBS}"
11024 XRENDER_LIBS="${filteredlibs}"
11025 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11026 [AC_MSG_ERROR(libXrender not found or functional)], [])
11027 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11028 [AC_MSG_ERROR(Xrender not found. install X)], [])
11030 AC_MSG_RESULT([no])
11032 AC_SUBST(XRENDER_CFLAGS)
11033 AC_SUBST(XRENDER_LIBS)
11035 dnl ===================================================================
11036 dnl Check for XRandr
11037 dnl ===================================================================
11038 AC_MSG_CHECKING([whether to enable RandR support])
11039 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11040 AC_MSG_RESULT([yes])
11041 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11042 if test "$ENABLE_RANDR" != "TRUE"; then
11043 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11044 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11046 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11047 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11048 XRANDR_LIBS="-lXrandr "
11049 ENABLE_RANDR="TRUE"
11051 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11052 FilterLibs "${XRANDR_LIBS}"
11053 XRANDR_LIBS="${filteredlibs}"
11056 AC_MSG_RESULT([no])
11058 AC_SUBST(XRANDR_CFLAGS)
11059 AC_SUBST(XRANDR_LIBS)
11060 AC_SUBST(ENABLE_RANDR)
11062 if test -z "$with_webdav"; then
11063 with_webdav=$test_webdav
11066 AC_MSG_CHECKING([for WebDAV support])
11067 case "$with_webdav" in
11069 AC_MSG_RESULT([no])
11073 AC_MSG_RESULT([yes])
11074 # curl is already mandatory (almost) and checked elsewhere
11075 if test "$enable_curl" = "no"; then
11076 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11081 AC_SUBST(WITH_WEBDAV)
11083 dnl ===================================================================
11084 dnl Check for disabling cve_tests
11085 dnl ===================================================================
11086 AC_MSG_CHECKING([whether to execute CVE tests])
11087 # If not explicitly enabled or disabled, default
11088 if test -z "$enable_cve_tests"; then
11091 # Default cves off for Windows with its wild and wonderful
11092 # variety of AV software kicking in and panicking
11093 enable_cve_tests=no
11097 enable_cve_tests=yes
11101 if test "$enable_cve_tests" = "no"; then
11102 AC_MSG_RESULT([no])
11103 DISABLE_CVE_TESTS=TRUE
11104 AC_SUBST(DISABLE_CVE_TESTS)
11106 AC_MSG_RESULT([yes])
11109 dnl ===================================================================
11110 dnl Check for system openssl
11111 dnl ===================================================================
11113 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11114 if test "$enable_openssl" = "yes"; then
11115 AC_MSG_RESULT([no])
11116 ENABLE_OPENSSL=TRUE
11117 if test "$_os" = Darwin ; then
11118 # OpenSSL is deprecated when building for 10.7 or later.
11120 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11121 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11123 with_system_openssl=no
11124 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11125 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11126 && test "$with_system_openssl" != "no"; then
11127 with_system_openssl=yes
11128 SYSTEM_OPENSSL=TRUE
11130 OPENSSL_LIBS="-lssl -lcrypto"
11132 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11134 if test "$with_system_openssl" = "yes"; then
11135 AC_MSG_CHECKING([whether openssl supports SHA512])
11137 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11138 SHA512_CTX context;
11139 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11143 AC_MSG_RESULT([yes])
11145 # warn that although OpenSSL is disabled, system libraries may depend on it
11146 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11147 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11150 AC_SUBST([ENABLE_OPENSSL])
11152 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11153 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11154 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11155 enable_cipher_openssl_backend=no
11157 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11160 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11161 ENABLE_CIPHER_OPENSSL_BACKEND=
11162 if test "$enable_cipher_openssl_backend" = yes; then
11163 AC_MSG_RESULT([yes])
11164 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11166 AC_MSG_RESULT([no])
11168 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11170 dnl ===================================================================
11171 dnl Select the crypto backends used by LO
11172 dnl ===================================================================
11174 if test "$build_crypto" = yes; then
11175 if test "$OS" = WNT; then
11176 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11177 AC_DEFINE([USE_CRYPTO_MSCAPI])
11178 elif test "$ENABLE_NSS" = TRUE; then
11179 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11180 AC_DEFINE([USE_CRYPTO_NSS])
11184 dnl ===================================================================
11185 dnl Check for system redland
11186 dnl ===================================================================
11187 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11188 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11189 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11190 if test "$with_system_redland" = "yes"; then
11191 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11192 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11198 AC_SUBST(RAPTOR_MAJOR)
11199 AC_SUBST(RASQAL_MAJOR)
11200 AC_SUBST(REDLAND_MAJOR)
11202 dnl ===================================================================
11203 dnl Check for system hunspell
11204 dnl ===================================================================
11205 AC_MSG_CHECKING([which libhunspell to use])
11206 if test "$with_system_hunspell" = "yes"; then
11207 AC_MSG_RESULT([external])
11208 SYSTEM_HUNSPELL=TRUE
11209 AC_LANG_PUSH([C++])
11210 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11211 if test "$HUNSPELL_PC" != "TRUE"; then
11212 AC_CHECK_HEADER(hunspell.hxx, [],
11214 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11215 [AC_MSG_ERROR(hunspell headers not found.)], [])
11217 AC_CHECK_LIB([hunspell], [main], [:],
11218 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11219 HUNSPELL_LIBS=-lhunspell
11222 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11223 FilterLibs "${HUNSPELL_LIBS}"
11224 HUNSPELL_LIBS="${filteredlibs}"
11226 AC_MSG_RESULT([internal])
11228 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11229 if test "$COM" = "MSC"; then
11230 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11232 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11234 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11236 AC_SUBST(SYSTEM_HUNSPELL)
11237 AC_SUBST(HUNSPELL_CFLAGS)
11238 AC_SUBST(HUNSPELL_LIBS)
11240 dnl ===================================================================
11241 dnl Check for system zxing
11242 dnl ===================================================================
11243 AC_MSG_CHECKING([whether to use zxing])
11244 if test "$enable_zxing" = "no"; then
11245 AC_MSG_RESULT([no])
11249 AC_MSG_RESULT([yes])
11251 AC_MSG_CHECKING([which libzxing to use])
11252 if test "$with_system_zxing" = "yes"; then
11253 AC_MSG_RESULT([external])
11256 AC_LANG_PUSH([C++])
11257 save_CXXFLAGS=$CXXFLAGS
11260 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11261 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11262 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11263 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11264 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11265 dnl unsetting IFS."):
11267 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11268 dnl ignore them here:
11269 if test -z "$i"; then
11272 dnl TODO: White space in $i would cause problems:
11273 CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11274 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11275 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11277 CXXFLAGS=$save_CXXFLAGS
11278 if test -z "$ZXING_CFLAGS"; then
11279 AC_MSG_ERROR(zxing headers not found.)
11281 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11282 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11283 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11285 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11286 FilterLibs "${ZXING_LIBS}"
11287 ZXING_LIBS="${filteredlibs}"
11289 AC_MSG_RESULT([internal])
11291 BUILD_TYPE="$BUILD_TYPE ZXING"
11293 if test "$ENABLE_ZXING" = TRUE; then
11294 AC_DEFINE(ENABLE_ZXING)
11297 AC_SUBST(SYSTEM_ZXING)
11298 AC_SUBST(ENABLE_ZXING)
11299 AC_SUBST(ZXING_CFLAGS)
11300 AC_SUBST(ZXING_LIBS)
11302 dnl ===================================================================
11303 dnl Check for system box2d
11304 dnl ===================================================================
11305 AC_MSG_CHECKING([which box2d to use])
11306 if test "$with_system_box2d" = "yes"; then
11307 AC_MSG_RESULT([external])
11309 AC_LANG_PUSH([C++])
11310 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11311 [BOX2D_H_FOUND='FALSE'])
11312 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11314 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11316 # fail this. there's no other alternative to check when we are here.
11317 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11318 [AC_MSG_ERROR(box2d headers not found.)])
11320 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11322 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11323 [ AC_MSG_ERROR(box2d library not found.) ], [])
11324 BOX2D_LIBS=-l$_BOX2D_LIB
11326 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11327 FilterLibs "${BOX2D_LIBS}"
11328 BOX2D_LIBS="${filteredlibs}"
11330 AC_MSG_RESULT([internal])
11332 BUILD_TYPE="$BUILD_TYPE BOX2D"
11334 AC_SUBST(SYSTEM_BOX2D)
11335 AC_SUBST(BOX2D_CFLAGS)
11336 AC_SUBST(BOX2D_LIBS)
11338 dnl ===================================================================
11339 dnl Checking for altlinuxhyph
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([which altlinuxhyph to use])
11342 if test "$with_system_altlinuxhyph" = "yes"; then
11343 AC_MSG_RESULT([external])
11345 AC_CHECK_HEADER(hyphen.h, [],
11346 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11347 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11348 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11349 [#include <hyphen.h>])
11350 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11351 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11352 if test -z "$HYPHEN_LIB"; then
11353 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11354 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11356 if test -z "$HYPHEN_LIB"; then
11357 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11358 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11361 AC_MSG_RESULT([internal])
11363 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11364 if test "$COM" = "MSC"; then
11365 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11367 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11370 AC_SUBST(SYSTEM_HYPH)
11371 AC_SUBST(HYPHEN_LIB)
11373 dnl ===================================================================
11374 dnl Checking for mythes
11375 dnl ===================================================================
11376 AC_MSG_CHECKING([which mythes to use])
11377 if test "$with_system_mythes" = "yes"; then
11378 AC_MSG_RESULT([external])
11380 AC_LANG_PUSH([C++])
11381 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11382 if test "$MYTHES_PKGCONFIG" = "no"; then
11383 AC_CHECK_HEADER(mythes.hxx, [],
11384 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11385 AC_CHECK_LIB([mythes-1.2], [main], [:],
11386 [ MYTHES_FOUND=no], [])
11387 if test "$MYTHES_FOUND" = "no"; then
11388 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11389 [ MYTHES_FOUND=no], [])
11391 if test "$MYTHES_FOUND" = "no"; then
11392 AC_MSG_ERROR([mythes library not found!.])
11396 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11397 FilterLibs "${MYTHES_LIBS}"
11398 MYTHES_LIBS="${filteredlibs}"
11400 AC_MSG_RESULT([internal])
11402 BUILD_TYPE="$BUILD_TYPE MYTHES"
11403 if test "$COM" = "MSC"; then
11404 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11406 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11409 AC_SUBST(SYSTEM_MYTHES)
11410 AC_SUBST(MYTHES_CFLAGS)
11411 AC_SUBST(MYTHES_LIBS)
11413 dnl ===================================================================
11414 dnl How should we build the linear programming solver ?
11415 dnl ===================================================================
11418 AC_MSG_CHECKING([whether to build with CoinMP])
11419 if test "$enable_coinmp" != "no"; then
11421 AC_MSG_RESULT([yes])
11422 if test "$with_system_coinmp" = "yes"; then
11424 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11425 FilterLibs "${COINMP_LIBS}"
11426 COINMP_LIBS="${filteredlibs}"
11428 BUILD_TYPE="$BUILD_TYPE COINMP"
11431 AC_MSG_RESULT([no])
11433 AC_SUBST(ENABLE_COINMP)
11434 AC_SUBST(SYSTEM_COINMP)
11435 AC_SUBST(COINMP_CFLAGS)
11436 AC_SUBST(COINMP_LIBS)
11439 AC_MSG_CHECKING([whether to build with lpsolve])
11440 if test "$enable_lpsolve" != "no"; then
11441 ENABLE_LPSOLVE=TRUE
11442 AC_MSG_RESULT([yes])
11444 AC_MSG_RESULT([no])
11446 AC_SUBST(ENABLE_LPSOLVE)
11448 if test "$ENABLE_LPSOLVE" = TRUE; then
11449 AC_MSG_CHECKING([which lpsolve to use])
11450 if test "$with_system_lpsolve" = "yes"; then
11451 AC_MSG_RESULT([external])
11452 SYSTEM_LPSOLVE=TRUE
11453 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11454 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11456 # some systems need this. Like Ubuntu...
11457 AC_CHECK_LIB(m, floor)
11458 AC_CHECK_LIB(dl, dlopen)
11459 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11460 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11463 AC_MSG_RESULT([internal])
11465 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11468 AC_SUBST(SYSTEM_LPSOLVE)
11470 dnl ===================================================================
11471 dnl Checking for libexttextcat
11472 dnl ===================================================================
11473 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11474 if test "$with_system_libexttextcat" = "yes"; then
11475 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11477 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11479 dnl ===================================================================
11480 dnl Checking for libnumbertext
11481 dnl ===================================================================
11482 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11483 if test "$with_system_libnumbertext" = "yes"; then
11484 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11485 SYSTEM_LIBNUMBERTEXT=YES
11487 SYSTEM_LIBNUMBERTEXT=
11489 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11490 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11492 dnl ***************************************
11493 dnl testing libc version for Linux...
11494 dnl ***************************************
11495 if test "$_os" = "Linux"; then
11496 AC_MSG_CHECKING([whether the libc is recent enough])
11497 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11498 #include <features.h>
11499 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11500 #error glibc >= 2.1 is required
11502 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11505 dnl =========================================
11506 dnl Check for uuidgen
11507 dnl =========================================
11508 if test "$_os" = "WINNT"; then
11509 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11510 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11511 UUIDGEN=uuidgen.exe
11514 AC_PATH_PROG([UUIDGEN], [uuidgen])
11515 if test -z "$UUIDGEN"; then
11516 AC_MSG_WARN([uuid is needed for building installation sets])
11520 dnl ***************************************
11521 dnl Checking for bison and flex
11522 dnl ***************************************
11523 AC_PATH_PROG(BISON, bison)
11524 if test -z "$BISON"; then
11525 AC_MSG_ERROR([no bison found in \$PATH, install it])
11527 AC_MSG_CHECKING([the bison version])
11528 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11529 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11530 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11533 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]
11534 dnl typedef union YYSTYPE
11537 dnl while at least 3.4.1 is know to be good:
11538 if test "$COMPILER_PLUGINS" = TRUE; then
11539 if test "$_bison_longver" -lt 2004; then
11540 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11543 if test "$_bison_longver" -lt 2000; then
11544 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11550 AC_PATH_PROG(FLEX, flex)
11551 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11552 FLEX=`cygpath -m $FLEX`
11554 if test -z "$FLEX"; then
11555 AC_MSG_ERROR([no flex found in \$PATH, install it])
11557 AC_MSG_CHECKING([the flex version])
11558 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11559 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11560 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11565 AC_PATH_PROG(DIFF, diff)
11566 if test -z "$DIFF"; then
11567 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11571 AC_PATH_PROG(UNIQ, uniq)
11572 if test -z "$UNIQ"; then
11573 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11577 dnl ***************************************
11578 dnl Checking for patch
11579 dnl ***************************************
11580 AC_PATH_PROG(PATCH, patch)
11581 if test -z "$PATCH"; then
11582 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11585 dnl On Solaris or macOS, check if --with-gnu-patch was used
11586 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11587 if test -z "$with_gnu_patch"; then
11590 if test -x "$with_gnu_patch"; then
11591 GNUPATCH=$with_gnu_patch
11593 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11597 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11598 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11599 AC_MSG_RESULT([yes])
11601 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11607 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11608 GNUPATCH=`cygpath -m $GNUPATCH`
11611 dnl We also need to check for --with-gnu-cp
11613 if test -z "$with_gnu_cp"; then
11614 # check the place where the good stuff is hidden on Solaris...
11615 if test -x /usr/gnu/bin/cp; then
11616 GNUCP=/usr/gnu/bin/cp
11618 AC_PATH_PROGS(GNUCP, gnucp cp)
11620 if test -z $GNUCP; then
11621 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11624 if test -x "$with_gnu_cp"; then
11627 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11631 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11632 GNUCP=`cygpath -m $GNUCP`
11635 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11636 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11637 AC_MSG_RESULT([yes])
11638 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11639 AC_MSG_RESULT([yes])
11641 case "$build_os" in
11642 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11645 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11648 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11657 dnl ***************************************
11658 dnl testing assembler path
11659 dnl ***************************************
11661 if test "$_os" = "WINNT"; then
11662 case "$WIN_HOST_ARCH" in
11663 x86) assembler=ml.exe ;;
11664 x64) assembler=ml64.exe ;;
11665 arm64) assembler=armasm64.exe ;;
11668 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11669 if test -f "$MSVC_HOST_PATH/$assembler"; then
11670 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11671 AC_MSG_RESULT([$ML_EXE])
11673 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11679 dnl ===================================================================
11680 dnl We need zip and unzip
11681 dnl ===================================================================
11682 AC_PATH_PROG(ZIP, zip)
11683 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11684 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11685 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],,)
11688 AC_PATH_PROG(UNZIP, unzip)
11689 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11691 dnl ===================================================================
11692 dnl Zip must be a specific type for different build types.
11693 dnl ===================================================================
11694 if test $build_os = cygwin; then
11695 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11696 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11700 dnl ===================================================================
11701 dnl We need touch with -h option support.
11702 dnl ===================================================================
11703 AC_PATH_PROG(TOUCH, touch)
11704 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11705 touch "$WARNINGS_FILE"
11706 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11707 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],,)
11710 dnl ===================================================================
11711 dnl Check for system epoxy
11712 dnl ===================================================================
11713 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11714 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11716 dnl ===================================================================
11717 dnl Set vcl option: coordinate device in double or sal_Int32
11718 dnl ===================================================================
11720 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11721 if test "$enable_float_device_pixel" = yes; then
11722 AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11723 AC_MSG_RESULT([double])
11725 AC_MSG_RESULT([sal_Int32])
11728 dnl ===================================================================
11729 dnl Show which vclplugs will be built.
11730 dnl ===================================================================
11733 libo_ENABLE_VCLPLUG([gen])
11734 libo_ENABLE_VCLPLUG([gtk3])
11735 libo_ENABLE_VCLPLUG([gtk3_kde5])
11736 libo_ENABLE_VCLPLUG([gtk4])
11737 libo_ENABLE_VCLPLUG([kf5])
11738 libo_ENABLE_VCLPLUG([qt5])
11739 libo_ENABLE_VCLPLUG([qt6])
11741 if test "$_os" = "WINNT"; then
11743 elif test "$_os" = "Darwin"; then
11745 elif test "$_os" = "iOS"; then
11747 elif test "$_os" = Android; then
11751 build_vcl_plugins="$R"
11752 if test -z "$build_vcl_plugins"; then
11753 build_vcl_plugins=" none"
11755 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11757 AC_SUBST([VCL_PLUGIN_INFO])
11759 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11760 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11763 dnl ===================================================================
11764 dnl Check for GTK libraries
11765 dnl ===================================================================
11769 ENABLE_GTKTILEDVIEWER=""
11770 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11771 if test "$with_system_cairo" = no; then
11772 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.'
11774 : ${with_system_cairo:=yes}
11775 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)
11776 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11777 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11778 FilterLibs "${GTK3_LIBS}"
11779 GTK3_LIBS="${filteredlibs}"
11781 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11782 if test "$with_system_epoxy" != "yes"; then
11783 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11784 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11785 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11787 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11788 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11789 if test "$build_os" = "cygwin"; then
11790 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11791 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11794 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11795 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11796 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11797 FilterLibs "${GTK3_LIBS}"
11798 GTK3_LIBS="${filteredlibs}"
11799 ENABLE_GTKTILEDVIEWER="yes"
11801 AC_SUBST(GTK3_LIBS)
11802 AC_SUBST(GTK3_CFLAGS)
11803 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11807 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11808 if test "$with_system_cairo" = no; then
11809 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11811 : ${with_system_cairo:=yes}
11812 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11813 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11814 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11815 FilterLibs "${GTK4_LIBS}"
11816 GTK4_LIBS="${filteredlibs}"
11818 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11819 if test "$with_system_epoxy" != "yes"; then
11820 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11821 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11822 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11825 AC_SUBST(GTK4_LIBS)
11826 AC_SUBST(GTK4_CFLAGS)
11828 if test "$enable_introspection" = yes; then
11829 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11830 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11832 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11836 dnl ===================================================================
11837 dnl check for dbus support
11838 dnl ===================================================================
11842 DBUS_GLIB_CFLAGS=""
11846 if test "$enable_dbus" = "no"; then
11850 AC_MSG_CHECKING([whether to enable DBUS support])
11851 if test "$test_dbus" = "yes"; then
11853 AC_MSG_RESULT([yes])
11854 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11855 AC_DEFINE(ENABLE_DBUS)
11856 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11857 FilterLibs "${DBUS_LIBS}"
11858 DBUS_LIBS="${filteredlibs}"
11860 # Glib is needed for BluetoothServer
11861 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11862 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11864 DBUS_HAVE_GLIB="TRUE"
11865 AC_DEFINE(DBUS_HAVE_GLIB,1)
11867 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11870 AC_MSG_RESULT([no])
11873 AC_SUBST(ENABLE_DBUS)
11874 AC_SUBST(DBUS_CFLAGS)
11875 AC_SUBST(DBUS_LIBS)
11876 AC_SUBST(DBUS_GLIB_CFLAGS)
11877 AC_SUBST(DBUS_GLIB_LIBS)
11878 AC_SUBST(DBUS_HAVE_GLIB)
11880 AC_MSG_CHECKING([whether to enable Impress remote control])
11881 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11882 AC_MSG_RESULT([yes])
11883 ENABLE_SDREMOTE=TRUE
11884 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11886 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11888 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11889 # The Bluetooth code doesn't compile with macOS SDK 10.15
11890 if test "$enable_sdremote_bluetooth" = yes; then
11891 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11893 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11894 enable_sdremote_bluetooth=no
11896 # If not explicitly enabled or disabled, default
11897 if test -z "$enable_sdremote_bluetooth"; then
11900 # Default to yes for these
11901 enable_sdremote_bluetooth=yes
11905 enable_sdremote_bluetooth=no
11909 # $enable_sdremote_bluetooth is guaranteed non-empty now
11911 if test "$enable_sdremote_bluetooth" != "no"; then
11912 if test "$OS" = "LINUX"; then
11913 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11914 AC_MSG_RESULT([yes])
11915 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11916 dnl ===================================================================
11917 dnl Check for system bluez
11918 dnl ===================================================================
11919 AC_MSG_CHECKING([which Bluetooth header to use])
11920 if test "$with_system_bluez" = "yes"; then
11921 AC_MSG_RESULT([external])
11922 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11923 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11926 AC_MSG_RESULT([internal])
11930 AC_MSG_RESULT([no, dbus disabled])
11931 ENABLE_SDREMOTE_BLUETOOTH=
11935 AC_MSG_RESULT([yes])
11936 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11938 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11939 <key>com.apple.security.device.bluetooth</key>
11943 AC_MSG_RESULT([no])
11944 ENABLE_SDREMOTE_BLUETOOTH=
11950 AC_MSG_RESULT([no])
11952 AC_SUBST(ENABLE_SDREMOTE)
11953 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11954 AC_SUBST(SDREMOTE_ENTITLEMENT)
11955 AC_SUBST(SYSTEM_BLUEZ)
11957 dnl ===================================================================
11958 dnl Check whether to enable GIO support
11959 dnl ===================================================================
11960 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11961 AC_MSG_CHECKING([whether to enable GIO support])
11962 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11963 dnl Need at least 2.26 for the dbus support.
11964 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11965 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11966 if test "$ENABLE_GIO" = "TRUE"; then
11967 AC_DEFINE(ENABLE_GIO)
11968 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11969 FilterLibs "${GIO_LIBS}"
11970 GIO_LIBS="${filteredlibs}"
11973 AC_MSG_RESULT([no])
11976 AC_SUBST(ENABLE_GIO)
11977 AC_SUBST(GIO_CFLAGS)
11981 dnl ===================================================================
11983 SPLIT_APP_MODULES=""
11984 if test "$enable_split_app_modules" = "yes"; then
11985 SPLIT_APP_MODULES="TRUE"
11987 AC_SUBST(SPLIT_APP_MODULES)
11989 SPLIT_OPT_FEATURES=""
11990 if test "$enable_split_opt_features" = "yes"; then
11991 SPLIT_OPT_FEATURES="TRUE"
11993 AC_SUBST(SPLIT_OPT_FEATURES)
11995 dnl ===================================================================
11996 dnl Check whether the GStreamer libraries are available.
11997 dnl ===================================================================
11999 ENABLE_GSTREAMER_1_0=""
12001 if test "$test_gstreamer_1_0" = yes; then
12003 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12004 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12005 ENABLE_GSTREAMER_1_0="TRUE"
12006 AC_MSG_RESULT([yes])
12007 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12008 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12009 FilterLibs "${GSTREAMER_1_0_LIBS}"
12010 GSTREAMER_1_0_LIBS="${filteredlibs}"
12011 AC_DEFINE(ENABLE_GSTREAMER_1_0)
12013 AC_MSG_RESULT([no])
12016 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12017 AC_SUBST(GSTREAMER_1_0_LIBS)
12018 AC_SUBST(ENABLE_GSTREAMER_1_0)
12020 ENABLE_OPENGL_TRANSITIONS=
12021 ENABLE_OPENGL_CANVAS=
12022 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12024 elif test "$_os" = "Darwin"; then
12025 # We use frameworks on macOS, no need for detail checks
12026 ENABLE_OPENGL_TRANSITIONS=TRUE
12027 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12028 ENABLE_OPENGL_CANVAS=TRUE
12029 elif test $_os = WINNT; then
12030 ENABLE_OPENGL_TRANSITIONS=TRUE
12031 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12032 ENABLE_OPENGL_CANVAS=TRUE
12034 if test "$USING_X11" = TRUE; then
12035 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12036 ENABLE_OPENGL_TRANSITIONS=TRUE
12037 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12038 ENABLE_OPENGL_CANVAS=TRUE
12042 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12043 AC_SUBST(ENABLE_OPENGL_CANVAS)
12045 dnl =================================================
12046 dnl Check whether to build with OpenCL support.
12047 dnl =================================================
12049 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12050 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12051 # platform (optional at run-time, used through clew).
12052 BUILD_TYPE="$BUILD_TYPE OPENCL"
12053 AC_DEFINE(HAVE_FEATURE_OPENCL)
12056 dnl =================================================
12057 dnl Check whether to build with dconf support.
12058 dnl =================================================
12060 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12061 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
12062 if test "$enable_dconf" = yes; then
12063 AC_MSG_ERROR([dconf not found])
12068 AC_MSG_CHECKING([whether to enable dconf])
12069 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12073 AC_MSG_RESULT([no])
12076 AC_DEFINE(ENABLE_DCONF)
12077 AC_MSG_RESULT([yes])
12079 AC_SUBST([DCONF_CFLAGS])
12080 AC_SUBST([DCONF_LIBS])
12081 AC_SUBST([ENABLE_DCONF])
12084 AC_MSG_CHECKING([whether to build the PDF import feature])
12086 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12087 AC_MSG_RESULT([yes])
12088 ENABLE_PDFIMPORT=TRUE
12089 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12091 AC_MSG_RESULT([no])
12095 AC_MSG_CHECKING([whether to build PDFium])
12097 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12098 AC_MSG_RESULT([yes])
12100 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12102 AC_MSG_RESULT([no])
12104 AC_SUBST(ENABLE_PDFIUM)
12106 if test "$ENABLE_PDFIUM" = "TRUE"; then
12107 AC_MSG_CHECKING([which OpenJPEG library to use])
12108 if test "$with_system_openjpeg" = "yes"; then
12109 SYSTEM_OPENJPEG2=TRUE
12110 AC_MSG_RESULT([external])
12111 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12112 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12113 FilterLibs "${OPENJPEG2_LIBS}"
12114 OPENJPEG2_LIBS="${filteredlibs}"
12116 SYSTEM_OPENJPEG2=FALSE
12117 AC_MSG_RESULT([internal])
12120 AC_MSG_CHECKING([which Abseil library to use])
12121 if test "$with_system_abseil" = "yes"; then
12122 AC_MSG_RESULT([external])
12124 AC_LANG_PUSH([C++])
12125 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12126 [AC_MSG_ERROR(abseil headers not found.)], [])
12127 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12128 [AC_MSG_ERROR(abseil headers not found.)], [])
12129 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12130 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12131 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12132 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12133 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12135 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12136 FilterLibs "${ABSEIL_LIBS}"
12137 ABSEIL_LIBS="${filteredlibs}"
12139 AC_MSG_RESULT([internal])
12142 AC_SUBST(SYSTEM_OPENJPEG2)
12143 AC_SUBST(SYSTEM_ABSEIL)
12144 AC_SUBST(ABSEIL_CFLAGS)
12145 AC_SUBST(ABSEIL_LIBS)
12147 dnl ===================================================================
12148 dnl Check for poppler
12149 dnl ===================================================================
12151 AC_MSG_CHECKING([whether to build Poppler])
12152 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12153 AC_MSG_RESULT([yes])
12154 ENABLE_POPPLER=TRUE
12155 AC_DEFINE(HAVE_FEATURE_POPPLER)
12157 AC_MSG_RESULT([no])
12159 AC_SUBST(ENABLE_POPPLER)
12161 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12162 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12165 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12166 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12169 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12170 dnl ===================================================================
12171 dnl Check for system poppler
12172 dnl ===================================================================
12173 AC_MSG_CHECKING([which PDF import poppler to use])
12174 if test "$with_system_poppler" = "yes"; then
12175 AC_MSG_RESULT([external])
12176 SYSTEM_POPPLER=TRUE
12177 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12178 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12179 FilterLibs "${POPPLER_LIBS}"
12180 POPPLER_LIBS="${filteredlibs}"
12182 AC_MSG_RESULT([internal])
12184 BUILD_TYPE="$BUILD_TYPE POPPLER"
12186 AC_DEFINE([ENABLE_PDFIMPORT],1)
12188 AC_SUBST(ENABLE_PDFIMPORT)
12189 AC_SUBST(SYSTEM_POPPLER)
12190 AC_SUBST(POPPLER_CFLAGS)
12191 AC_SUBST(POPPLER_LIBS)
12195 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12196 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12197 if test "$SYSTEM_FREETYPE" = TRUE; then
12198 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12199 [skia_freetype_ok=yes],
12200 [skia_freetype_ok=no])
12201 else # internal is ok
12202 skia_freetype_ok=yes
12204 AC_MSG_CHECKING([whether to build Skia])
12205 if test "$skia_freetype_ok" = "yes"; then
12206 if test "$enable_skia" = "debug"; then
12207 AC_MSG_RESULT([yes (debug)])
12208 ENABLE_SKIA_DEBUG=TRUE
12210 AC_MSG_RESULT([yes])
12214 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12215 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12218 AC_DEFINE(HAVE_FEATURE_SKIA)
12219 BUILD_TYPE="$BUILD_TYPE SKIA"
12221 if test "$OS" = "MACOSX"; then
12222 AC_DEFINE(SK_SUPPORT_GPU,1)
12223 AC_DEFINE(SK_METAL,1)
12227 AC_DEFINE(SK_SUPPORT_GPU,1)
12228 AC_DEFINE(SK_VULKAN,1)
12233 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12234 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12235 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12238 AC_MSG_RESULT([no (freetype too old)])
12239 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12243 AC_MSG_CHECKING([whether to build Skia])
12244 AC_MSG_RESULT([no])
12246 AC_SUBST(ENABLE_SKIA)
12247 AC_SUBST(ENABLE_SKIA_DEBUG)
12249 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12250 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12251 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12252 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12253 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12254 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12255 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12256 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12257 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12258 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12259 HAVE_LO_CLANG_DLLEXPORTINLINES=
12261 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12262 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12263 AC_MSG_CHECKING([for Clang])
12264 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12266 if test "$_os" = "WINNT"; then
12267 AC_MSG_CHECKING([for clang-cl])
12268 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12269 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12270 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12271 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12272 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12273 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12275 if test -n "$LO_CLANG_CC"; then
12276 dnl explicitly set -m32/-m64
12277 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12278 LO_CLANG_CXX="$LO_CLANG_CC"
12279 AC_MSG_RESULT([$LO_CLANG_CC])
12281 AC_MSG_RESULT([no])
12284 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12285 echo "#include <stdlib.h>" > conftest.c
12286 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12287 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12288 rm -f conftest.c conftest.obj
12289 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12290 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12292 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12295 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12296 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12299 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12300 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12301 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12302 if test "$clang2_ver" -lt 50002; then
12303 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12308 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12310 CXX="$LO_CLANG_CXX"
12311 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12312 AC_LANG_PUSH([C++])
12313 save_CXXFLAGS=$CXXFLAGS
12314 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12315 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12316 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12317 AC_MSG_RESULT([yes])
12318 ], [AC_MSG_RESULT([no])])
12319 CXXFLAGS=$save_CXXFLAGS
12322 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12323 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.])
12326 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12327 # Skia is the default on Windows and Mac, so hard-require Clang.
12328 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12329 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12330 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12332 AC_MSG_WARN([Clang compiler not found.])
12337 CXX="$LO_CLANG_CXX"
12338 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12341 flag_sse41=-msse4.1
12342 flag_sse42=-msse4.2
12345 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12346 flag_avx512f=-mavx512f
12350 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12351 AC_LANG_PUSH([C++])
12352 save_CXXFLAGS=$CXXFLAGS
12353 CXXFLAGS="$CXXFLAGS $flag_sse2"
12354 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12355 #include <emmintrin.h>
12357 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12358 c = _mm_xor_si128 (a, b);
12362 [can_compile_sse2=yes],
12363 [can_compile_sse2=no])
12365 CXXFLAGS=$save_CXXFLAGS
12366 AC_MSG_RESULT([${can_compile_sse2}])
12367 if test "${can_compile_sse2}" = "yes" ; then
12368 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12371 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12372 AC_LANG_PUSH([C++])
12373 save_CXXFLAGS=$CXXFLAGS
12374 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12375 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12376 #include <tmmintrin.h>
12378 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12379 c = _mm_maddubs_epi16 (a, b);
12383 [can_compile_ssse3=yes],
12384 [can_compile_ssse3=no])
12386 CXXFLAGS=$save_CXXFLAGS
12387 AC_MSG_RESULT([${can_compile_ssse3}])
12388 if test "${can_compile_ssse3}" = "yes" ; then
12389 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12392 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12393 AC_LANG_PUSH([C++])
12394 save_CXXFLAGS=$CXXFLAGS
12395 CXXFLAGS="$CXXFLAGS $flag_sse41"
12396 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12397 #include <smmintrin.h>
12399 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12400 c = _mm_cmpeq_epi64 (a, b);
12404 [can_compile_sse41=yes],
12405 [can_compile_sse41=no])
12407 CXXFLAGS=$save_CXXFLAGS
12408 AC_MSG_RESULT([${can_compile_sse41}])
12409 if test "${can_compile_sse41}" = "yes" ; then
12410 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12413 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12414 AC_LANG_PUSH([C++])
12415 save_CXXFLAGS=$CXXFLAGS
12416 CXXFLAGS="$CXXFLAGS $flag_sse42"
12417 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12418 #include <nmmintrin.h>
12420 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12421 c = _mm_cmpgt_epi64 (a, b);
12425 [can_compile_sse42=yes],
12426 [can_compile_sse42=no])
12428 CXXFLAGS=$save_CXXFLAGS
12429 AC_MSG_RESULT([${can_compile_sse42}])
12430 if test "${can_compile_sse42}" = "yes" ; then
12431 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12434 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12435 AC_LANG_PUSH([C++])
12436 save_CXXFLAGS=$CXXFLAGS
12437 CXXFLAGS="$CXXFLAGS $flag_avx"
12438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12439 #include <immintrin.h>
12441 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12442 c = _mm256_xor_ps(a, b);
12446 [can_compile_avx=yes],
12447 [can_compile_avx=no])
12449 CXXFLAGS=$save_CXXFLAGS
12450 AC_MSG_RESULT([${can_compile_avx}])
12451 if test "${can_compile_avx}" = "yes" ; then
12452 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12455 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12456 AC_LANG_PUSH([C++])
12457 save_CXXFLAGS=$CXXFLAGS
12458 CXXFLAGS="$CXXFLAGS $flag_avx2"
12459 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12460 #include <immintrin.h>
12462 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12463 c = _mm256_maddubs_epi16(a, b);
12467 [can_compile_avx2=yes],
12468 [can_compile_avx2=no])
12470 CXXFLAGS=$save_CXXFLAGS
12471 AC_MSG_RESULT([${can_compile_avx2}])
12472 if test "${can_compile_avx2}" = "yes" ; then
12473 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12476 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12477 AC_LANG_PUSH([C++])
12478 save_CXXFLAGS=$CXXFLAGS
12479 CXXFLAGS="$CXXFLAGS $flag_avx512"
12480 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12481 #include <immintrin.h>
12483 __m512i a = _mm512_loadu_si512(0);
12484 __m512d v1 = _mm512_load_pd(0);
12485 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12486 __m512d v2 = _mm512_abs_pd(v1);
12490 [can_compile_avx512=yes],
12491 [can_compile_avx512=no])
12493 CXXFLAGS=$save_CXXFLAGS
12494 AC_MSG_RESULT([${can_compile_avx512}])
12495 if test "${can_compile_avx512}" = "yes" ; then
12496 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12497 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12500 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12501 AC_LANG_PUSH([C++])
12502 save_CXXFLAGS=$CXXFLAGS
12503 CXXFLAGS="$CXXFLAGS $flag_f16c"
12504 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12505 #include <immintrin.h>
12507 __m128i a = _mm_set1_epi32 (0);
12509 c = _mm_cvtph_ps(a);
12513 [can_compile_f16c=yes],
12514 [can_compile_f16c=no])
12516 CXXFLAGS=$save_CXXFLAGS
12517 AC_MSG_RESULT([${can_compile_f16c}])
12518 if test "${can_compile_f16c}" = "yes" ; then
12519 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12522 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12523 AC_LANG_PUSH([C++])
12524 save_CXXFLAGS=$CXXFLAGS
12525 CXXFLAGS="$CXXFLAGS $flag_fma"
12526 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12527 #include <immintrin.h>
12529 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12530 d = _mm256_fmadd_ps(a, b, c);
12534 [can_compile_fma=yes],
12535 [can_compile_fma=no])
12537 CXXFLAGS=$save_CXXFLAGS
12538 AC_MSG_RESULT([${can_compile_fma}])
12539 if test "${can_compile_fma}" = "yes" ; then
12540 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12547 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12549 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12550 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12554 save_CFLAGS=$CFLAGS
12555 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12556 dnl an empty program will do, we're checking the compiler flags
12557 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12558 [use_ccache=yes], [use_ccache=no])
12559 CFLAGS=$save_CFLAGS
12561 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12562 AC_MSG_RESULT([yes])
12564 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12565 AC_MSG_RESULT([no])
12569 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12570 AC_LANG_PUSH([C++])
12572 CXX="$LO_CLANG_CXX"
12573 save_CXXFLAGS=$CXXFLAGS
12574 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12575 dnl an empty program will do, we're checking the compiler flags
12576 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12577 [use_ccache=yes], [use_ccache=no])
12578 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12579 AC_MSG_RESULT([yes])
12581 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12582 AC_MSG_RESULT([no])
12584 CXXFLAGS=$save_CXXFLAGS
12589 AC_SUBST(LO_CLANG_CC)
12590 AC_SUBST(LO_CLANG_CXX)
12591 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12592 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12593 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12594 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12595 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12596 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12597 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12598 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12599 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12600 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12601 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12602 AC_SUBST(CLANG_USE_LD)
12603 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12607 AC_MSG_CHECKING([whether to enable gpgmepp])
12608 if test "$enable_gpgmepp" = no; then
12609 AC_MSG_RESULT([no])
12610 elif test "$enable_mpl_subset" = "yes"; then
12611 AC_MSG_RESULT([no (MPL only])
12612 elif test "$enable_fuzzers" = "yes"; then
12613 AC_MSG_RESULT([no (oss-fuzz)])
12614 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12615 AC_MSG_RESULT([yes])
12616 dnl ===================================================================
12617 dnl Check for system gpgme
12618 dnl ===================================================================
12619 AC_MSG_CHECKING([which gpgmepp to use])
12620 if test "$with_system_gpgmepp" = "yes"; then
12621 AC_MSG_RESULT([external])
12622 SYSTEM_GPGMEPP=TRUE
12624 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12625 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12626 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12627 AC_CHECK_HEADER(gpgme.h, [],
12628 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12629 AC_CHECK_LIB(gpgmepp, main, [],
12630 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12631 GPGMEPP_LIBS=-lgpgmepp
12633 AC_MSG_RESULT([internal])
12634 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12636 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12637 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12638 if test "$_os" != "WINNT"; then
12639 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12640 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12643 ENABLE_GPGMEPP=TRUE
12644 AC_DEFINE([HAVE_FEATURE_GPGME])
12645 AC_PATH_PROG(GPG, gpg)
12646 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12647 # so let's exclude that manually for the moment
12648 if test -n "$GPG" -a "$_os" != "WINNT"; then
12649 # make sure we not only have a working gpgme, but a full working
12650 # gpg installation to run OpenPGP signature verification
12651 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12653 if test "$_os" = "Linux"; then
12655 AC_MSG_CHECKING([for /run/user/$uid])
12656 if test -d /run/user/$uid; then
12657 AC_MSG_RESULT([yes])
12658 AC_PATH_PROG(GPGCONF, gpgconf)
12660 # Older versions of gpgconf are not working as expected, since
12661 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12662 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12663 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12664 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12665 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12666 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12667 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12668 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12669 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12670 if $GPGCONF --dump-options > /dev/null ; then
12671 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12672 AC_MSG_RESULT([yes])
12673 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12674 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12676 AC_MSG_RESULT([no])
12679 AC_MSG_RESULT([no. missing or broken gpgconf?])
12682 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12685 AC_MSG_RESULT([no])
12689 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12691 AC_SUBST(ENABLE_GPGMEPP)
12692 AC_SUBST(SYSTEM_GPGMEPP)
12693 AC_SUBST(GPG_ERROR_CFLAGS)
12694 AC_SUBST(GPG_ERROR_LIBS)
12695 AC_SUBST(LIBASSUAN_CFLAGS)
12696 AC_SUBST(LIBASSUAN_LIBS)
12697 AC_SUBST(GPGMEPP_CFLAGS)
12698 AC_SUBST(GPGMEPP_LIBS)
12700 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12701 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12702 AC_MSG_RESULT([yes])
12703 ENABLE_MEDIAWIKI=TRUE
12704 BUILD_TYPE="$BUILD_TYPE XSLTML"
12705 if test "x$with_java" = "xno"; then
12706 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12709 AC_MSG_RESULT([no])
12711 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12713 AC_SUBST(ENABLE_MEDIAWIKI)
12715 AC_MSG_CHECKING([whether to build the Report Builder])
12716 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12717 AC_MSG_RESULT([yes])
12718 ENABLE_REPORTBUILDER=TRUE
12719 AC_MSG_CHECKING([which jfreereport libs to use])
12720 if test "$with_system_jfreereport" = "yes"; then
12721 SYSTEM_JFREEREPORT=TRUE
12722 AC_MSG_RESULT([external])
12723 if test -z $SAC_JAR; then
12724 SAC_JAR=/usr/share/java/sac.jar
12726 if ! test -f $SAC_JAR; then
12727 AC_MSG_ERROR(sac.jar not found.)
12730 if test -z $LIBXML_JAR; then
12731 if test -f /usr/share/java/libxml-1.0.0.jar; then
12732 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12733 elif test -f /usr/share/java/libxml.jar; then
12734 LIBXML_JAR=/usr/share/java/libxml.jar
12736 AC_MSG_ERROR(libxml.jar replacement not found.)
12738 elif ! test -f $LIBXML_JAR; then
12739 AC_MSG_ERROR(libxml.jar not found.)
12742 if test -z $FLUTE_JAR; then
12743 if test -f /usr/share/java/flute-1.3.0.jar; then
12744 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12745 elif test -f /usr/share/java/flute.jar; then
12746 FLUTE_JAR=/usr/share/java/flute.jar
12748 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12750 elif ! test -f $FLUTE_JAR; then
12751 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12754 if test -z $JFREEREPORT_JAR; then
12755 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12756 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12757 elif test -f /usr/share/java/flow-engine.jar; then
12758 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12760 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12762 elif ! test -f $JFREEREPORT_JAR; then
12763 AC_MSG_ERROR(jfreereport.jar not found.)
12766 if test -z $LIBLAYOUT_JAR; then
12767 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12768 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12769 elif test -f /usr/share/java/liblayout.jar; then
12770 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12772 AC_MSG_ERROR(liblayout.jar replacement not found.)
12774 elif ! test -f $LIBLAYOUT_JAR; then
12775 AC_MSG_ERROR(liblayout.jar not found.)
12778 if test -z $LIBLOADER_JAR; then
12779 if test -f /usr/share/java/libloader-1.0.0.jar; then
12780 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12781 elif test -f /usr/share/java/libloader.jar; then
12782 LIBLOADER_JAR=/usr/share/java/libloader.jar
12784 AC_MSG_ERROR(libloader.jar replacement not found.)
12786 elif ! test -f $LIBLOADER_JAR; then
12787 AC_MSG_ERROR(libloader.jar not found.)
12790 if test -z $LIBFORMULA_JAR; then
12791 if test -f /usr/share/java/libformula-0.2.0.jar; then
12792 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12793 elif test -f /usr/share/java/libformula.jar; then
12794 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12796 AC_MSG_ERROR(libformula.jar replacement not found.)
12798 elif ! test -f $LIBFORMULA_JAR; then
12799 AC_MSG_ERROR(libformula.jar not found.)
12802 if test -z $LIBREPOSITORY_JAR; then
12803 if test -f /usr/share/java/librepository-1.0.0.jar; then
12804 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12805 elif test -f /usr/share/java/librepository.jar; then
12806 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12808 AC_MSG_ERROR(librepository.jar replacement not found.)
12810 elif ! test -f $LIBREPOSITORY_JAR; then
12811 AC_MSG_ERROR(librepository.jar not found.)
12814 if test -z $LIBFONTS_JAR; then
12815 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12816 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12817 elif test -f /usr/share/java/libfonts.jar; then
12818 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12820 AC_MSG_ERROR(libfonts.jar replacement not found.)
12822 elif ! test -f $LIBFONTS_JAR; then
12823 AC_MSG_ERROR(libfonts.jar not found.)
12826 if test -z $LIBSERIALIZER_JAR; then
12827 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12828 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12829 elif test -f /usr/share/java/libserializer.jar; then
12830 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12832 AC_MSG_ERROR(libserializer.jar replacement not found.)
12834 elif ! test -f $LIBSERIALIZER_JAR; then
12835 AC_MSG_ERROR(libserializer.jar not found.)
12838 if test -z $LIBBASE_JAR; then
12839 if test -f /usr/share/java/libbase-1.0.0.jar; then
12840 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12841 elif test -f /usr/share/java/libbase.jar; then
12842 LIBBASE_JAR=/usr/share/java/libbase.jar
12844 AC_MSG_ERROR(libbase.jar replacement not found.)
12846 elif ! test -f $LIBBASE_JAR; then
12847 AC_MSG_ERROR(libbase.jar not found.)
12851 AC_MSG_RESULT([internal])
12852 SYSTEM_JFREEREPORT=
12853 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12857 AC_MSG_RESULT([no])
12858 ENABLE_REPORTBUILDER=
12859 SYSTEM_JFREEREPORT=
12861 AC_SUBST(ENABLE_REPORTBUILDER)
12862 AC_SUBST(SYSTEM_JFREEREPORT)
12864 AC_SUBST(LIBXML_JAR)
12865 AC_SUBST(FLUTE_JAR)
12866 AC_SUBST(JFREEREPORT_JAR)
12867 AC_SUBST(LIBBASE_JAR)
12868 AC_SUBST(LIBLAYOUT_JAR)
12869 AC_SUBST(LIBLOADER_JAR)
12870 AC_SUBST(LIBFORMULA_JAR)
12871 AC_SUBST(LIBREPOSITORY_JAR)
12872 AC_SUBST(LIBFONTS_JAR)
12873 AC_SUBST(LIBSERIALIZER_JAR)
12875 # scripting provider for BeanShell?
12876 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12877 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12878 AC_MSG_RESULT([yes])
12879 ENABLE_SCRIPTING_BEANSHELL=TRUE
12881 dnl ===================================================================
12882 dnl Check for system beanshell
12883 dnl ===================================================================
12884 AC_MSG_CHECKING([which beanshell to use])
12885 if test "$with_system_beanshell" = "yes"; then
12886 AC_MSG_RESULT([external])
12888 if test -z $BSH_JAR; then
12889 BSH_JAR=/usr/share/java/bsh.jar
12891 if ! test -f $BSH_JAR; then
12892 AC_MSG_ERROR(bsh.jar not found.)
12895 AC_MSG_RESULT([internal])
12897 BUILD_TYPE="$BUILD_TYPE BSH"
12900 AC_MSG_RESULT([no])
12901 ENABLE_SCRIPTING_BEANSHELL=
12902 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12904 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12905 AC_SUBST(SYSTEM_BSH)
12908 # scripting provider for JavaScript?
12909 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12910 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12911 AC_MSG_RESULT([yes])
12912 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12914 dnl ===================================================================
12915 dnl Check for system rhino
12916 dnl ===================================================================
12917 AC_MSG_CHECKING([which rhino to use])
12918 if test "$with_system_rhino" = "yes"; then
12919 AC_MSG_RESULT([external])
12921 if test -z $RHINO_JAR; then
12922 RHINO_JAR=/usr/share/java/js.jar
12924 if ! test -f $RHINO_JAR; then
12925 AC_MSG_ERROR(js.jar not found.)
12928 AC_MSG_RESULT([internal])
12930 BUILD_TYPE="$BUILD_TYPE RHINO"
12934 AC_MSG_RESULT([no])
12935 ENABLE_SCRIPTING_JAVASCRIPT=
12936 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12938 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12939 AC_SUBST(SYSTEM_RHINO)
12940 AC_SUBST(RHINO_JAR)
12942 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12943 # paths should be added to library search path. So lets put all 64-bit
12946 case "$host_cpu" in
12947 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12948 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12949 supports_multilib="yes"
12956 dnl ===================================================================
12957 dnl QT5 Integration
12958 dnl ===================================================================
12964 QT5_GOBJECT_CFLAGS=""
12965 QT5_GOBJECT_LIBS=""
12966 QT5_HAVE_GOBJECT=""
12967 QT5_PLATFORMS_SRCDIR=""
12968 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12969 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12970 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12972 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12973 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12975 if test -n "$supports_multilib"; then
12976 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12979 qt5_test_include="QtWidgets/qapplication.h"
12980 if test "$_os" = "Emscripten"; then
12981 qt5_test_library="libQt5Widgets.a"
12983 qt5_test_library="libQt5Widgets.so"
12986 dnl Check for qmake5
12987 if test -n "$QT5DIR"; then
12988 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12990 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12992 if test "$QMAKE5" = "no"; then
12993 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12995 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12996 if test -z "$qmake5_test_ver"; then
12997 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12999 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13000 qt5_minimal_minor="6"
13001 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13002 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13004 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13008 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13009 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13010 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13011 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13013 AC_MSG_CHECKING([for Qt5 headers])
13015 for inc_dir in $qt5_incdirs; do
13016 if test -r "$inc_dir/$qt5_test_include"; then
13017 qt5_incdir="$inc_dir"
13021 AC_MSG_RESULT([$qt5_incdir])
13022 if test "x$qt5_incdir" = "xno"; then
13023 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13025 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13026 AC_LANG_PUSH([C++])
13027 save_CPPFLAGS=$CPPFLAGS
13028 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13029 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13030 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13031 CPPFLAGS=$save_CPPFLAGS
13034 AC_MSG_CHECKING([for Qt5 libraries])
13036 for lib_dir in $qt5_libdirs; do
13037 if test -r "$lib_dir/$qt5_test_library"; then
13038 qt5_libdir="$lib_dir"
13042 AC_MSG_RESULT([$qt5_libdir])
13043 if test "x$qt5_libdir" = "xno"; then
13044 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13047 if test "$_os" = "Emscripten"; then
13048 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13049 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13051 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13052 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13055 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13056 if ! test -x "$EMSDK_LLVM_NM"; then
13057 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13059 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13060 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13062 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13063 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13064 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13066 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13067 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13071 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13072 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13073 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13074 if test "$_os" = "Emscripten"; then
13075 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13078 if test "$USING_X11" = TRUE; then
13079 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13080 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13081 QT5_HAVE_XCB_ICCCM=1
13082 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13084 AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)])
13085 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13087 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13088 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13090 AC_DEFINE(QT5_USING_X11)
13093 dnl Check for Meta Object Compiler
13095 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13096 if test "$MOC5" = "no"; then
13097 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13098 the root of your Qt installation by exporting QT5DIR before running "configure".])
13101 if test "$test_gstreamer_1_0" = yes; then
13102 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13104 AC_DEFINE(QT5_HAVE_GOBJECT)
13106 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13110 AC_SUBST(QT5_CFLAGS)
13113 AC_SUBST(QT5_GOBJECT_CFLAGS)
13114 AC_SUBST(QT5_GOBJECT_LIBS)
13115 AC_SUBST(QT5_HAVE_GOBJECT)
13116 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13118 dnl ===================================================================
13119 dnl QT6 Integration
13120 dnl ===================================================================
13126 QT6_PLATFORMS_SRCDIR=""
13127 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13129 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13130 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13132 if test -n "$supports_multilib"; then
13133 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13136 qt6_test_include="QtWidgets/qapplication.h"
13137 if test "$_os" = "Emscripten"; then
13138 qt6_test_library="libQt6Widgets.a"
13140 qt6_test_library="libQt6Widgets.so"
13143 dnl Check for qmake6
13144 if test -n "$QT6DIR"; then
13145 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13147 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13149 if test "$QMAKE6" = "no"; then
13150 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13152 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13153 if test -z "$qmake6_test_ver"; then
13154 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13156 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13159 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13160 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13161 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13162 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13164 AC_MSG_CHECKING([for Qt6 headers])
13166 for inc_dir in $qt6_incdirs; do
13167 if test -r "$inc_dir/$qt6_test_include"; then
13168 qt6_incdir="$inc_dir"
13172 AC_MSG_RESULT([$qt6_incdir])
13173 if test "x$qt6_incdir" = "xno"; then
13174 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13176 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13177 AC_LANG_PUSH([C++])
13178 save_CPPFLAGS=$CPPFLAGS
13179 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13180 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13181 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13182 CPPFLAGS=$save_CPPFLAGS
13185 AC_MSG_CHECKING([for Qt6 libraries])
13187 for lib_dir in $qt6_libdirs; do
13188 if test -r "$lib_dir/$qt6_test_library"; then
13189 qt6_libdir="$lib_dir"
13193 AC_MSG_RESULT([$qt6_libdir])
13194 if test "x$qt6_libdir" = "xno"; then
13195 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13198 if test "$_os" = "Emscripten"; then
13199 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13200 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13202 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13203 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13207 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13208 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13209 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13210 if test "$_os" = "Emscripten"; then
13211 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13214 if test "$USING_X11" = TRUE; then
13215 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13216 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13217 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13219 AC_DEFINE(QT6_USING_X11)
13222 dnl Check for Meta Object Compiler
13224 for lib_dir in $qt6_libdirs; do
13225 if test -z "$qt6_libexec_dirs"; then
13226 qt6_libexec_dirs="$lib_dir/libexec"
13228 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13231 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13232 if test "$MOC6" = "no"; then
13233 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13234 the root of your Qt installation by exporting QT6DIR before running "configure".])
13237 AC_SUBST(QT6_CFLAGS)
13240 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13242 dnl ===================================================================
13243 dnl KF5 Integration
13244 dnl ===================================================================
13248 KF5_CONFIG="kf5-config"
13249 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13250 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13252 if test "$OS" = "HAIKU"; then
13253 haiku_arch="`echo $RTL_ARCH | tr X x`"
13254 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13255 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13258 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13259 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13260 if test -n "$supports_multilib"; then
13261 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13264 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13265 kf5_test_library="libKF5KIOFileWidgets.so"
13266 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13268 dnl kf5 KDE4 support compatibility installed
13269 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13270 if test "$KF5_CONFIG" != "no"; then
13271 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13272 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13275 dnl Check for KF5 headers
13276 AC_MSG_CHECKING([for KF5 headers])
13278 for kf5_check in $kf5_incdirs; do
13279 if test -r "$kf5_check/$kf5_test_include"; then
13280 kf5_incdir="$kf5_check/KF5"
13284 AC_MSG_RESULT([$kf5_incdir])
13285 if test "x$kf5_incdir" = "xno"; then
13286 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13289 dnl Check for KF5 libraries
13290 AC_MSG_CHECKING([for KF5 libraries])
13292 for kf5_check in $kf5_libdirs; do
13293 if test -r "$kf5_check/$kf5_test_library"; then
13294 kf5_libdir="$kf5_check"
13299 AC_MSG_RESULT([$kf5_libdir])
13300 if test "x$kf5_libdir" = "xno"; then
13301 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13304 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"
13305 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13306 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13308 if test "$USING_X11" = TRUE; then
13309 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13312 AC_LANG_PUSH([C++])
13313 save_CXXFLAGS=$CXXFLAGS
13314 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13315 AC_MSG_CHECKING([whether KDE is >= 5.0])
13316 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13317 #include <kcoreaddons_version.h>
13319 int main(int argc, char **argv) {
13320 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13323 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13324 CXXFLAGS=$save_CXXFLAGS
13327 AC_SUBST(KF5_CFLAGS)
13330 dnl ===================================================================
13331 dnl Test whether to include Evolution 2 support
13332 dnl ===================================================================
13333 AC_MSG_CHECKING([whether to enable evolution 2 support])
13334 if test "$enable_evolution2" = yes; then
13335 AC_MSG_RESULT([yes])
13336 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13337 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13338 FilterLibs "${GOBJECT_LIBS}"
13339 GOBJECT_LIBS="${filteredlibs}"
13340 ENABLE_EVOAB2="TRUE"
13342 AC_MSG_RESULT([no])
13344 AC_SUBST(ENABLE_EVOAB2)
13345 AC_SUBST(GOBJECT_CFLAGS)
13346 AC_SUBST(GOBJECT_LIBS)
13348 dnl ===================================================================
13349 dnl Test which themes to include
13350 dnl ===================================================================
13351 AC_MSG_CHECKING([which themes to include])
13352 # if none given use default subset of available themes
13353 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13354 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_svg"
13358 if test "x$with_theme" != "xno"; then
13359 for theme in $with_theme; do
13361 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_svg) real_theme="$theme" ;;
13362 default) real_theme=colibre ;;
13363 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13365 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13368 AC_MSG_RESULT([$WITH_THEMES])
13369 AC_SUBST([WITH_THEMES])
13370 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13371 for theme in $with_theme; do
13373 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13378 ###############################################################################
13379 # Extensions checking
13380 ###############################################################################
13381 AC_MSG_CHECKING([for extensions integration])
13382 if test "x$enable_extension_integration" != "xno"; then
13383 WITH_EXTENSION_INTEGRATION=TRUE
13384 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13385 AC_MSG_RESULT([yes, use integration])
13387 WITH_EXTENSION_INTEGRATION=
13388 AC_MSG_RESULT([no, do not integrate])
13390 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13392 dnl Should any extra extensions be included?
13393 dnl There are standalone tests for each of these below.
13394 WITH_EXTRA_EXTENSIONS=
13395 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13397 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13398 if test "x$with_java" != "xno"; then
13399 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13402 AC_MSG_CHECKING([whether to build opens___.ttf])
13403 if test "$enable_build_opensymbol" = "yes"; then
13404 AC_MSG_RESULT([yes])
13405 AC_PATH_PROG(FONTFORGE, fontforge)
13406 if test -z "$FONTFORGE"; then
13407 AC_MSG_ERROR([fontforge not installed])
13410 AC_MSG_RESULT([no])
13411 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13413 AC_SUBST(FONTFORGE)
13415 dnl ===================================================================
13416 dnl Test whether to include fonts
13417 dnl ===================================================================
13418 AC_MSG_CHECKING([whether to include third-party fonts])
13419 if test "$with_fonts" != "no"; then
13420 AC_MSG_RESULT([yes])
13422 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13423 AC_DEFINE(HAVE_MORE_FONTS)
13425 AC_MSG_RESULT([no])
13427 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13429 AC_SUBST(WITH_FONTS)
13432 dnl ===================================================================
13433 dnl Test whether to enable online update service
13434 dnl ===================================================================
13435 AC_MSG_CHECKING([whether to enable online update])
13436 ENABLE_ONLINE_UPDATE=
13437 ENABLE_ONLINE_UPDATE_MAR=
13439 if test "$enable_online_update" = ""; then
13440 AC_MSG_RESULT([no])
13442 if test "$enable_online_update" = "mar"; then
13443 AC_MSG_RESULT([yes - MAR-based online update])
13444 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13445 if test "$with_update_config" = ""; then
13446 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13448 UPDATE_CONFIG="$with_update_config"
13449 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13450 elif test "$enable_online_update" = "yes"; then
13451 AC_MSG_RESULT([yes])
13452 ENABLE_ONLINE_UPDATE="TRUE"
13454 AC_MSG_RESULT([no])
13457 AC_SUBST(ENABLE_ONLINE_UPDATE)
13458 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13459 AC_SUBST(UPDATE_CONFIG)
13462 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13463 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13464 if test "x$with_privacy_policy_url" = "xundefined"; then
13465 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13468 AC_SUBST(PRIVACY_POLICY_URL)
13469 dnl ===================================================================
13470 dnl Test whether we need bzip2
13471 dnl ===================================================================
13473 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13474 AC_MSG_CHECKING([whether to use system bzip2])
13475 if test "$with_system_bzip2" = yes; then
13477 AC_MSG_RESULT([yes])
13478 PKG_CHECK_MODULES(BZIP2, bzip2)
13479 FilterLibs "${BZIP2_LIBS}"
13480 BZIP2_LIBS="${filteredlibs}"
13482 AC_MSG_RESULT([no])
13483 BUILD_TYPE="$BUILD_TYPE BZIP2"
13486 AC_SUBST(SYSTEM_BZIP2)
13487 AC_SUBST(BZIP2_CFLAGS)
13488 AC_SUBST(BZIP2_LIBS)
13490 dnl ===================================================================
13491 dnl Test whether to enable extension update
13492 dnl ===================================================================
13493 AC_MSG_CHECKING([whether to enable extension update])
13494 ENABLE_EXTENSION_UPDATE=
13495 if test "x$enable_extension_update" = "xno"; then
13496 AC_MSG_RESULT([no])
13498 AC_MSG_RESULT([yes])
13499 ENABLE_EXTENSION_UPDATE="TRUE"
13500 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13501 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13503 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13506 dnl ===================================================================
13507 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13508 dnl ===================================================================
13509 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13510 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13511 AC_MSG_RESULT([no])
13514 AC_MSG_RESULT([yes])
13515 ENABLE_SILENT_MSI=TRUE
13516 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13518 AC_SUBST(ENABLE_SILENT_MSI)
13520 AC_MSG_CHECKING([whether and how to use Xinerama])
13521 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13522 if test "$x_libraries" = "default_x_libraries"; then
13523 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13524 if test "x$XINERAMALIB" = x; then
13525 XINERAMALIB="/usr/lib"
13528 XINERAMALIB="$x_libraries"
13530 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13531 # we have both versions, let the user decide but use the dynamic one
13534 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13535 XINERAMA_LINK=dynamic
13537 XINERAMA_LINK=static
13539 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13540 # we have only the dynamic version
13542 XINERAMA_LINK=dynamic
13543 elif test -e "$XINERAMALIB/libXinerama.a"; then
13545 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13547 XINERAMA_LINK=static
13557 if test "$USE_XINERAMA" = "TRUE"; then
13558 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13559 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13560 [AC_MSG_ERROR(Xinerama header not found.)], [])
13561 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13562 if test "x$XEXTLIB" = x; then
13563 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13565 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13566 if test "$_os" = "FreeBSD"; then
13567 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13569 if test "$_os" = "Linux"; then
13570 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13572 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13573 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13575 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13580 AC_MSG_RESULT([no])
13582 AC_SUBST(USE_XINERAMA)
13583 AC_SUBST(XINERAMA_LINK)
13585 dnl ===================================================================
13586 dnl Test whether to build cairo or rely on the system version
13587 dnl ===================================================================
13589 if test "$test_cairo" = "yes"; then
13590 AC_MSG_CHECKING([whether to use the system cairo])
13592 : ${with_system_cairo:=$with_system_libs}
13593 if test "$with_system_cairo" = "yes"; then
13595 AC_MSG_RESULT([yes])
13597 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13598 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13599 FilterLibs "${CAIRO_LIBS}"
13600 CAIRO_LIBS="${filteredlibs}"
13602 if test "$test_xrender" = "yes"; then
13603 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13605 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13606 #ifdef PictStandardA8
13610 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13615 AC_MSG_RESULT([no])
13616 BUILD_TYPE="$BUILD_TYPE CAIRO"
13619 if test "$enable_cairo_canvas" != no; then
13620 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13621 ENABLE_CAIRO_CANVAS=TRUE
13625 AC_SUBST(CAIRO_CFLAGS)
13626 AC_SUBST(CAIRO_LIBS)
13627 AC_SUBST(ENABLE_CAIRO_CANVAS)
13628 AC_SUBST(SYSTEM_CAIRO)
13630 dnl ===================================================================
13631 dnl Test whether to use avahi
13632 dnl ===================================================================
13633 if test "$_os" = "WINNT"; then
13634 # Windows uses bundled mDNSResponder
13635 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13636 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13637 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13638 [ENABLE_AVAHI="TRUE"])
13639 AC_DEFINE(HAVE_FEATURE_AVAHI)
13640 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13641 FilterLibs "${AVAHI_LIBS}"
13642 AVAHI_LIBS="${filteredlibs}"
13645 AC_SUBST(ENABLE_AVAHI)
13646 AC_SUBST(AVAHI_CFLAGS)
13647 AC_SUBST(AVAHI_LIBS)
13649 dnl ===================================================================
13650 dnl Test whether to use liblangtag
13651 dnl ===================================================================
13653 AC_MSG_CHECKING([whether to use system liblangtag])
13654 if test "$with_system_liblangtag" = yes; then
13655 SYSTEM_LIBLANGTAG=TRUE
13656 AC_MSG_RESULT([yes])
13657 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13658 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13659 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13660 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13661 FilterLibs "${LIBLANGTAG_LIBS}"
13662 LIBLANGTAG_LIBS="${filteredlibs}"
13665 AC_MSG_RESULT([no])
13666 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13667 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13668 if test "$COM" = "MSC"; then
13669 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13671 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13674 AC_SUBST(SYSTEM_LIBLANGTAG)
13675 AC_SUBST(LIBLANGTAG_CFLAGS)
13676 AC_SUBST(LIBLANGTAG_LIBS)
13678 dnl ===================================================================
13679 dnl Test whether to build libpng or rely on the system version
13680 dnl ===================================================================
13682 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13683 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13684 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13686 dnl ===================================================================
13687 dnl Test whether to build libtiff or rely on the system version
13688 dnl ===================================================================
13690 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13692 dnl ===================================================================
13693 dnl Test whether to build libwebp or rely on the system version
13694 dnl ===================================================================
13696 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13698 dnl ===================================================================
13699 dnl Check for runtime JVM search path
13700 dnl ===================================================================
13701 if test "$ENABLE_JAVA" != ""; then
13702 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13703 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13704 AC_MSG_RESULT([yes])
13705 if ! test -d "$with_jvm_path"; then
13706 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13708 if ! test -d "$with_jvm_path"jvm; then
13709 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13711 JVM_ONE_PATH_CHECK="$with_jvm_path"
13712 AC_SUBST(JVM_ONE_PATH_CHECK)
13714 AC_MSG_RESULT([no])
13718 dnl ===================================================================
13719 dnl Test for the presence of Ant and that it works
13720 dnl ===================================================================
13722 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13723 ANT_HOME=; export ANT_HOME
13724 WITH_ANT_HOME=; export WITH_ANT_HOME
13725 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13726 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13727 if test "$_os" = "WINNT"; then
13728 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13730 with_ant_home="$LODE_HOME/opt/ant"
13732 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13733 with_ant_home="$LODE_HOME/opt/ant"
13736 if test -z "$with_ant_home"; then
13737 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13739 if test "$_os" = "WINNT"; then
13740 # AC_PATH_PROGS needs unix path
13741 with_ant_home=`cygpath -u "$with_ant_home"`
13743 AbsolutePath "$with_ant_home"
13744 with_ant_home=$absolute_path
13745 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13746 WITH_ANT_HOME=$with_ant_home
13747 ANT_HOME=$with_ant_home
13750 if test -z "$ANT"; then
13751 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13753 # resolve relative or absolute symlink
13754 while test -h "$ANT"; do
13756 a_basename=`basename "$ANT"`
13757 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13758 cd "`dirname "$ANT"`"
13759 cd "`dirname "$a_script"`"
13760 ANT="`pwd`"/"`basename "$a_script"`"
13764 AC_MSG_CHECKING([if $ANT works])
13765 mkdir -p conftest.dir
13768 cat > conftest.java << EOF
13769 public class conftest {
13770 int testmethod(int a, int b) {
13776 cat > conftest.xml << EOF
13777 <project name="conftest" default="conftest">
13778 <target name="conftest">
13779 <javac srcdir="." includes="conftest.java">
13785 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13786 if test $? = 0 -a -f ./conftest.class; then
13787 AC_MSG_RESULT([Ant works])
13788 if test -z "$WITH_ANT_HOME"; then
13789 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13790 if test -z "$ANT_HOME"; then
13791 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13794 ANT_HOME="$WITH_ANT_HOME"
13797 echo "configure: Ant test failed" >&5
13798 cat conftest.java >&5
13799 cat conftest.xml >&5
13800 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13803 rm -fr conftest.dir
13805 if test -z "$ANT_HOME"; then
13806 ANT_HOME="NO_ANT_HOME"
13808 PathFormat "$ANT_HOME"
13809 ANT_HOME="$formatted_path"
13811 ANT="$formatted_path"
13814 dnl Checking for ant.jar
13815 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13816 AC_MSG_CHECKING([Ant lib directory])
13817 if test -f $ANT_HOME/lib/ant.jar; then
13818 ANT_LIB="$ANT_HOME/lib"
13820 if test -f $ANT_HOME/ant.jar; then
13821 ANT_LIB="$ANT_HOME"
13823 if test -f /usr/share/java/ant.jar; then
13824 ANT_LIB=/usr/share/java
13826 if test -f /usr/share/ant-core/lib/ant.jar; then
13827 ANT_LIB=/usr/share/ant-core/lib
13829 if test -f $ANT_HOME/lib/ant/ant.jar; then
13830 ANT_LIB="$ANT_HOME/lib/ant"
13832 if test -f /usr/share/lib/ant/ant.jar; then
13833 ANT_LIB=/usr/share/lib/ant
13835 AC_MSG_ERROR([Ant libraries not found!])
13842 PathFormat "$ANT_LIB"
13843 ANT_LIB="$formatted_path"
13844 AC_MSG_RESULT([Ant lib directory found.])
13848 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13850 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13851 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13852 ant_version_major=`echo $ant_version | cut -d. -f1`
13853 ant_version_minor=`echo $ant_version | cut -d. -f2`
13854 echo "configure: ant_version $ant_version " >&5
13855 echo "configure: ant_version_major $ant_version_major " >&5
13856 echo "configure: ant_version_minor $ant_version_minor " >&5
13857 if test "$ant_version_major" -ge "2"; then
13858 AC_MSG_RESULT([yes, $ant_version])
13859 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13860 AC_MSG_RESULT([yes, $ant_version])
13862 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13865 rm -f conftest* core core.* *.core
13873 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13874 AC_MSG_CHECKING([for JUnit 4])
13875 if test "$with_junit" = "yes"; then
13876 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13877 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13878 elif test -e /usr/share/java/junit4.jar; then
13879 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13881 if test -e /usr/share/lib/java/junit.jar; then
13882 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13884 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13888 OOO_JUNIT_JAR=$with_junit
13890 if test "$_os" = "WINNT"; then
13891 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13893 printf 'import org.junit.Before;' > conftest.java
13894 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13895 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13898 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13899 specify its pathname via --with-junit=..., or disable it via --without-junit])
13901 rm -f conftest.class conftest.java
13902 if test $OOO_JUNIT_JAR != ""; then
13903 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13906 AC_MSG_CHECKING([for included Hamcrest])
13907 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13908 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13909 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13911 AC_MSG_RESULT([Not included])
13912 AC_MSG_CHECKING([for standalone hamcrest jar.])
13913 if test "$with_hamcrest" = "yes"; then
13914 if test -e /usr/share/lib/java/hamcrest.jar; then
13915 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13916 elif test -e /usr/share/java/hamcrest/core.jar; then
13917 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13918 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13919 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13921 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13924 HAMCREST_JAR=$with_hamcrest
13926 if test "$_os" = "WINNT"; then
13927 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13929 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13930 AC_MSG_RESULT([$HAMCREST_JAR])
13932 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),
13933 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13936 rm -f conftest.class conftest.java
13938 AC_SUBST(OOO_JUNIT_JAR)
13939 AC_SUBST(HAMCREST_JAR)
13945 # check for wget and curl
13950 if test "$enable_fetch_external" != "no"; then
13952 CURL=`which curl 2>/dev/null`
13954 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13956 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13957 if test $? -eq 0; then
13963 if test -z "$WGET" -a -z "$CURL"; then
13964 AC_MSG_ERROR([neither wget nor curl found!])
13973 # check for sha256sum
13977 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13978 eval "$i -a 256 --version" > /dev/null 2>&1
13980 if test $ret -eq 0; then
13981 SHA256SUM="$i -a 256"
13986 if test -z "$SHA256SUM"; then
13987 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13988 eval "$i --version" > /dev/null 2>&1
13990 if test $ret -eq 0; then
13997 if test -z "$SHA256SUM"; then
13998 AC_MSG_ERROR([no sha256sum found!])
14001 AC_SUBST(SHA256SUM)
14003 dnl ===================================================================
14004 dnl Dealing with l10n options
14005 dnl ===================================================================
14006 AC_MSG_CHECKING([which languages to be built])
14007 # get list of all languages
14008 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14009 # the sed command does the following:
14010 # + if a line ends with a backslash, append the next line to it
14011 # + adds " on the beginning of the value (after =)
14012 # + adds " at the end of the value
14013 # + removes en-US; we want to put it on the beginning
14014 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14015 [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)]
14016 ALL_LANGS="en-US $completelangiso"
14017 # check the configured localizations
14018 WITH_LANG="$with_lang"
14020 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14021 # (Norwegian is "nb" and "nn".)
14022 if test "$WITH_LANG" = "no"; then
14026 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14027 AC_MSG_RESULT([en-US])
14029 AC_MSG_RESULT([$WITH_LANG])
14030 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14031 if test -z "$MSGFMT"; then
14032 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14033 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14034 elif test -x "/opt/lo/bin/msgfmt"; then
14035 MSGFMT="/opt/lo/bin/msgfmt"
14037 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14038 if test -z "$MSGFMT"; then
14039 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14043 if test -z "$MSGUNIQ"; then
14044 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14045 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14046 elif test -x "/opt/lo/bin/msguniq"; then
14047 MSGUNIQ="/opt/lo/bin/msguniq"
14049 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14050 if test -z "$MSGUNIQ"; then
14051 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14058 # check that the list is valid
14059 for lang in $WITH_LANG; do
14060 test "$lang" = "ALL" && continue
14061 # need to check for the exact string, so add space before and after the list of all languages
14062 for vl in $ALL_LANGS; do
14063 if test "$vl" = "$lang"; then
14067 if test "$vl" != "$lang"; then
14068 # if you're reading this - you prolly quoted your languages remove the quotes ...
14069 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14072 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14073 echo $WITH_LANG | grep -q en-US
14074 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14076 # list with substituted ALL
14077 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14078 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14079 test "$WITH_LANG" = "en-US" && WITH_LANG=
14080 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14081 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14082 ALL_LANGS=`echo $ALL_LANGS qtz`
14084 AC_SUBST(ALL_LANGS)
14085 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14086 AC_SUBST(WITH_LANG)
14087 AC_SUBST(WITH_LANG_LIST)
14088 AC_SUBST(GIT_NEEDED_SUBMODULES)
14090 WITH_POOR_HELP_LOCALIZATIONS=
14091 if test -d "$SRC_ROOT/translations/source"; then
14092 for l in `ls -1 $SRC_ROOT/translations/source`; do
14093 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14094 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14098 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14100 if test -n "$with_locales" -a "$with_locales" != ALL; then
14101 WITH_LOCALES="$with_locales"
14103 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14104 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14105 # config_host/config_locales.h.in
14106 for locale in $WITH_LOCALES; do
14109 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14113 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14116 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14121 AC_DEFINE(WITH_LOCALE_ALL)
14123 AC_SUBST(WITH_LOCALES)
14125 dnl git submodule update --reference
14126 dnl ===================================================================
14127 if test -n "${GIT_REFERENCE_SRC}"; then
14128 for repo in ${GIT_NEEDED_SUBMODULES}; do
14129 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14130 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14134 AC_SUBST(GIT_REFERENCE_SRC)
14136 dnl git submodules linked dirs
14137 dnl ===================================================================
14138 if test -n "${GIT_LINK_SRC}"; then
14139 for repo in ${GIT_NEEDED_SUBMODULES}; do
14140 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14141 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14145 AC_SUBST(GIT_LINK_SRC)
14148 dnl ===================================================================
14149 AC_MSG_CHECKING([for alternative branding images directory])
14150 # initialize mapped arrays
14151 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14152 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14154 if test -z "$with_branding" -o "$with_branding" = "no"; then
14155 AC_MSG_RESULT([none])
14156 DEFAULT_BRAND_IMAGES="$brand_files"
14158 if ! test -d $with_branding ; then
14159 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14161 AC_MSG_RESULT([$with_branding])
14162 CUSTOM_BRAND_DIR="$with_branding"
14163 for lfile in $brand_files
14165 if ! test -f $with_branding/$lfile ; then
14166 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14167 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14169 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14172 check_for_progress="yes"
14175 AC_SUBST([BRAND_INTRO_IMAGES])
14176 AC_SUBST([CUSTOM_BRAND_DIR])
14177 AC_SUBST([CUSTOM_BRAND_IMAGES])
14178 AC_SUBST([DEFAULT_BRAND_IMAGES])
14181 AC_MSG_CHECKING([for 'intro' progress settings])
14185 PROGRESSFRAMECOLOR=
14187 PROGRESSTEXTBASELINE=
14189 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14190 source "$with_branding/progress.conf"
14191 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14193 AC_MSG_RESULT([none])
14196 AC_SUBST(PROGRESSBARCOLOR)
14197 AC_SUBST(PROGRESSSIZE)
14198 AC_SUBST(PROGRESSPOSITION)
14199 AC_SUBST(PROGRESSFRAMECOLOR)
14200 AC_SUBST(PROGRESSTEXTCOLOR)
14201 AC_SUBST(PROGRESSTEXTBASELINE)
14204 dnl ===================================================================
14205 dnl Custom build version
14206 dnl ===================================================================
14207 AC_MSG_CHECKING([for extra build ID])
14208 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14209 EXTRA_BUILDID="$with_extra_buildid"
14211 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14212 if test -n "$EXTRA_BUILDID" ; then
14213 AC_MSG_RESULT([$EXTRA_BUILDID])
14215 AC_MSG_RESULT([not set])
14217 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14220 AC_MSG_CHECKING([for vendor])
14221 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14222 OOO_VENDOR="$USERNAME"
14224 if test -z "$OOO_VENDOR"; then
14228 if test -z "$OOO_VENDOR"; then
14229 OOO_VENDOR="`id -u -n`"
14232 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14234 OOO_VENDOR="$with_vendor"
14235 AC_MSG_RESULT([$OOO_VENDOR])
14237 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14238 AC_SUBST(OOO_VENDOR)
14240 if test "$_os" = "Android" ; then
14241 ANDROID_PACKAGE_NAME=
14242 AC_MSG_CHECKING([for Android package name])
14243 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14244 if test -n "$ENABLE_DEBUG"; then
14245 # Default to the package name that makes ndk-gdb happy.
14246 ANDROID_PACKAGE_NAME="org.libreoffice"
14248 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14251 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14253 ANDROID_PACKAGE_NAME="$with_android_package_name"
14254 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14256 AC_SUBST(ANDROID_PACKAGE_NAME)
14259 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14260 if test "$with_compat_oowrappers" = "yes"; then
14261 WITH_COMPAT_OOWRAPPERS=TRUE
14264 WITH_COMPAT_OOWRAPPERS=
14267 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14269 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14270 AC_MSG_CHECKING([for install dirname])
14271 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14272 INSTALLDIRNAME="$with_install_dirname"
14274 AC_MSG_RESULT([$INSTALLDIRNAME])
14275 AC_SUBST(INSTALLDIRNAME)
14277 AC_MSG_CHECKING([for prefix])
14278 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14279 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14280 PREFIXDIR="$prefix"
14281 AC_MSG_RESULT([$PREFIXDIR])
14282 AC_SUBST(PREFIXDIR)
14284 LIBDIR=[$(eval echo $(eval echo $libdir))]
14287 DATADIR=[$(eval echo $(eval echo $datadir))]
14290 MANDIR=[$(eval echo $(eval echo $mandir))]
14293 DOCDIR=[$(eval echo $(eval echo $docdir))]
14296 BINDIR=[$(eval echo $(eval echo $bindir))]
14299 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14300 AC_SUBST(INSTALLDIR)
14302 TESTINSTALLDIR="${BUILDDIR}/test-install"
14303 AC_SUBST(TESTINSTALLDIR)
14306 # ===================================================================
14307 # OAuth2 id and secrets
14308 # ===================================================================
14310 AC_MSG_CHECKING([for Google Drive client id and secret])
14311 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14312 AC_MSG_RESULT([not set])
14313 GDRIVE_CLIENT_ID="\"\""
14314 GDRIVE_CLIENT_SECRET="\"\""
14316 AC_MSG_RESULT([set])
14317 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14318 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14320 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14321 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14323 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14324 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14325 AC_MSG_RESULT([not set])
14326 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14327 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14329 AC_MSG_RESULT([set])
14330 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14331 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14333 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14334 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14336 AC_MSG_CHECKING([for OneDrive client id and secret])
14337 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14338 AC_MSG_RESULT([not set])
14339 ONEDRIVE_CLIENT_ID="\"\""
14340 ONEDRIVE_CLIENT_SECRET="\"\""
14342 AC_MSG_RESULT([set])
14343 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14344 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14346 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14347 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14350 dnl ===================================================================
14351 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14352 dnl --enable-dependency-tracking configure option
14353 dnl ===================================================================
14354 AC_MSG_CHECKING([whether to enable dependency tracking])
14355 if test "$enable_dependency_tracking" = "no"; then
14357 AC_MSG_RESULT([no])
14359 AC_MSG_RESULT([yes])
14363 dnl ===================================================================
14364 dnl Number of CPUs to use during the build
14365 dnl ===================================================================
14366 AC_MSG_CHECKING([for number of processors to use])
14367 # plain --with-parallelism is just the default
14368 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14369 if test "$with_parallelism" = "no"; then
14372 PARALLELISM=$with_parallelism
14375 if test "$enable_icecream" = "yes"; then
14380 Darwin|FreeBSD|NetBSD|OpenBSD)
14381 PARALLELISM=`sysctl -n hw.ncpu`
14385 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14387 # what else than above does profit here *and* has /proc?
14389 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14393 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14394 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14398 if test $PARALLELISM -eq 0; then
14399 AC_MSG_RESULT([explicit make -j option needed])
14401 AC_MSG_RESULT([$PARALLELISM])
14403 AC_SUBST(PARALLELISM)
14406 # Set up ILIB for MSVC build
14409 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14411 if test -n "$JAVA_HOME"; then
14412 ILIB="$ILIB;$JAVA_HOME/lib"
14415 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14416 ILIB="$ILIB;$formatted_path"
14417 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14418 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14419 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14420 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14421 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14422 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14424 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14425 ucrtlibpath_formatted=$formatted_path
14426 ILIB="$ILIB;$ucrtlibpath_formatted"
14427 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14428 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14429 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14430 ILIB="$ILIB;$formatted_path"
14432 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14433 ILIB="$ILIB;$formatted_path"
14436 if test "$cross_compiling" != "yes"; then
14437 ILIB_FOR_BUILD="$ILIB"
14441 AC_SUBST(ILIB_FOR_BUILD)
14443 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14444 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14445 dnl from consteval constructor initializing const variable",
14446 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14447 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14448 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14449 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14450 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14451 dnl constructor in ternary expression (/std:c++latest)", or
14452 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14453 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14454 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14455 dnl && "Ptr must be a pointer to Val type!"' failed.":
14456 AC_LANG_PUSH([C++])
14458 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14459 CXX="env LIB=$ILIB $CXX"
14461 save_CXXFLAGS=$CXXFLAGS
14462 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14463 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14465 consteval S() { i = 1; }
14470 struct S1 { consteval S1(int) {} };
14485 struct S4 { consteval S4() = default; };
14486 void f4(bool b) { b ? S4() : S4(); }
14489 consteval S5() { c = 0; }
14490 char * f() { return &c; }
14496 auto s5 = S5().f();
14498 return (s.i == 1) ? 0 : 1;
14500 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14501 AC_MSG_RESULT([yes])
14502 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14504 CXXFLAGS=$save_CXXFLAGS
14507 # ===================================================================
14508 # Creating bigger shared library to link against
14509 # ===================================================================
14510 AC_MSG_CHECKING([whether to create huge library])
14513 if test $_os = iOS -o $_os = Android; then
14514 # Never any point in mergelibs for these as we build just static
14515 # libraries anyway...
14516 enable_mergelibs=no
14519 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14520 if test $_os != Linux -a $_os != WINNT; then
14521 add_warning "--enable-mergelibs is not tested for this platform"
14524 AC_MSG_RESULT([yes])
14525 AC_DEFINE(ENABLE_MERGELIBS)
14527 AC_MSG_RESULT([no])
14529 AC_SUBST([MERGELIBS])
14531 dnl ===================================================================
14532 dnl icerun is a wrapper that stops us spawning tens of processes
14533 dnl locally - for tools that can't be executed on the compile cluster
14534 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14535 dnl ===================================================================
14536 AC_MSG_CHECKING([whether to use icerun wrapper])
14538 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14539 ICECREAM_RUN=icerun
14540 AC_MSG_RESULT([yes])
14542 AC_MSG_RESULT([no])
14544 AC_SUBST(ICECREAM_RUN)
14546 dnl ===================================================================
14547 dnl Setup the ICECC_VERSION for the build the same way it was set for
14548 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14549 dnl ===================================================================
14550 x_ICECC_VERSION=[\#]
14551 if test -n "$ICECC_VERSION" ; then
14554 AC_SUBST(x_ICECC_VERSION)
14555 AC_SUBST(ICECC_VERSION)
14557 dnl ===================================================================
14559 AC_MSG_CHECKING([MPL subset])
14562 if test "$enable_mpl_subset" = "yes"; then
14564 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14566 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14569 if test "$warn_report" = "true"; then
14570 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14572 if test "x$enable_postgresql_sdbc" != "xno"; then
14573 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14575 if test "$enable_lotuswordpro" = "yes"; then
14576 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14578 if test -n "$ENABLE_POPPLER"; then
14579 if test "x$SYSTEM_POPPLER" = "x"; then
14580 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14583 # cf. m4/libo_check_extension.m4
14584 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14585 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14587 for theme in $WITH_THEMES; do
14589 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14590 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14595 ENABLE_OPENGL_TRANSITIONS=
14597 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14598 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14602 AC_DEFINE(MPL_HAVE_SUBSET)
14603 AC_MSG_RESULT([only])
14605 AC_MSG_RESULT([no restrictions])
14607 AC_SUBST(MPL_SUBSET)
14609 dnl ===================================================================
14611 AC_MSG_CHECKING([formula logger])
14612 ENABLE_FORMULA_LOGGER=
14614 if test "x$enable_formula_logger" = "xyes"; then
14615 AC_MSG_RESULT([yes])
14616 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14617 ENABLE_FORMULA_LOGGER=TRUE
14618 elif test -n "$ENABLE_DBGUTIL" ; then
14619 AC_MSG_RESULT([yes])
14620 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14621 ENABLE_FORMULA_LOGGER=TRUE
14623 AC_MSG_RESULT([no])
14626 AC_SUBST(ENABLE_FORMULA_LOGGER)
14628 dnl ===================================================================
14629 dnl Checking for active Antivirus software.
14630 dnl ===================================================================
14632 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14633 AC_MSG_CHECKING([for active Antivirus software])
14634 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14635 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14636 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14637 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14638 AC_MSG_RESULT([found])
14639 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14640 echo $EICAR_STRING > $SRC_ROOT/eicar
14641 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14643 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14644 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14646 echo $EICAR_STRING > $BUILDDIR/eicar
14647 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14649 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14650 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14652 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"
14654 AC_MSG_RESULT([not found])
14657 AC_MSG_RESULT([n/a])
14661 dnl ===================================================================
14662 dnl Setting up the environment.
14663 dnl ===================================================================
14664 AC_MSG_NOTICE([setting up the build environment variables...])
14668 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14669 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14670 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14671 ATL_INCLUDE="$COMPATH/atlmfc/include"
14672 elif test -d "$COMPATH/atlmfc/lib"; then
14673 ATL_LIB="$COMPATH/atlmfc/lib"
14674 ATL_INCLUDE="$COMPATH/atlmfc/include"
14676 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14677 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14679 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14680 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14681 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14684 if test "$build_os" = "cygwin"; then
14685 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14686 PathFormat "/usr/bin/find.exe"
14687 FIND="$formatted_path"
14688 PathFormat "/usr/bin/sort.exe"
14689 SORT="$formatted_path"
14690 PathFormat "/usr/bin/grep.exe"
14691 WIN_GREP="$formatted_path"
14692 PathFormat "/usr/bin/ls.exe"
14693 WIN_LS="$formatted_path"
14694 PathFormat "/usr/bin/touch.exe"
14695 WIN_TOUCH="$formatted_path"
14701 AC_SUBST(ATL_INCLUDE)
14707 AC_SUBST(WIN_TOUCH)
14709 AC_SUBST(BUILD_TYPE)
14714 PERL="$formatted_path"
14717 if test -n "$TMPDIR"; then
14718 TEMP_DIRECTORY="$TMPDIR"
14720 TEMP_DIRECTORY="/tmp"
14722 if test "$build_os" = "cygwin"; then
14723 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14725 AC_SUBST(TEMP_DIRECTORY)
14727 # setup the PATH for the environment
14728 if test -n "$LO_PATH_FOR_BUILD"; then
14729 LO_PATH="$LO_PATH_FOR_BUILD"
14732 pathmunge "$MSVC_HOST_PATH" "before"
14740 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14741 if test "$ENABLE_JAVA" != ""; then
14742 pathmunge "$JAVA_HOME/bin" "after"
14747 # Win32 make needs native paths
14748 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14749 LO_PATH=`cygpath -p -m "$PATH"`
14751 if test "$WIN_BUILD_ARCH" = "x64"; then
14752 # needed for msi packaging
14753 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14755 # .NET 4.6 and higher don't have bin directory
14756 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14757 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14759 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14760 pathmunge "$CSC_PATH" "before"
14761 pathmunge "$MIDL_PATH" "before"
14762 pathmunge "$AL_PATH" "before"
14763 pathmunge "$MSVC_MULTI_PATH" "before"
14764 pathmunge "$MSVC_BUILD_PATH" "before"
14765 if test -n "$MSBUILD_PATH" ; then
14766 pathmunge "$MSBUILD_PATH" "before"
14768 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14769 if test "$ENABLE_JAVA" != ""; then
14770 if test -d "$JAVA_HOME/jre/bin/client"; then
14771 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14773 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14774 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14776 pathmunge "$JAVA_HOME/bin" "before"
14778 pathmunge "$MSVC_HOST_PATH" "before"
14782 pathmunge "/usr/css/bin" "before"
14783 if test "$ENABLE_JAVA" != ""; then
14784 pathmunge "$JAVA_HOME/bin" "after"
14792 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14793 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14794 x_LO_ELFCHECK_ALLOWLIST=
14796 x_LO_ELFCHECK_ALLOWLIST=[\#]
14798 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14799 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14803 # Generate a configuration sha256 we can use for deps
14804 if test -f config_host.mk; then
14805 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14807 if test -f config_host_lang.mk; then
14808 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14811 CFLAGS=$my_original_CFLAGS
14812 CXXFLAGS=$my_original_CXXFLAGS
14813 CPPFLAGS=$my_original_CPPFLAGS
14815 AC_CONFIG_LINKS([include:include])
14817 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14818 # BUILD platform configuration] - otherwise breaks cross building
14819 AC_CONFIG_FILES([config_host.mk
14820 config_host_lang.mk
14823 bin/bffvalidator.sh
14824 bin/odfvalidator.sh
14826 hardened_runtime.xcent
14827 instsetoo_native/util/openoffice.lst
14828 sysui/desktop/macosx/Info.plist
14829 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14831 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14832 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14833 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14834 AC_CONFIG_HEADERS([config_host/config_clang.h])
14835 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14836 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14837 AC_CONFIG_HEADERS([config_host/config_eot.h])
14838 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14839 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14840 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14841 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14842 AC_CONFIG_HEADERS([config_host/config_features.h])
14843 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14844 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14845 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14846 AC_CONFIG_HEADERS([config_host/config_folders.h])
14847 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14848 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14849 AC_CONFIG_HEADERS([config_host/config_gio.h])
14850 AC_CONFIG_HEADERS([config_host/config_global.h])
14851 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14852 AC_CONFIG_HEADERS([config_host/config_java.h])
14853 AC_CONFIG_HEADERS([config_host/config_langs.h])
14854 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14855 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14856 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14857 AC_CONFIG_HEADERS([config_host/config_locales.h])
14858 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14859 AC_CONFIG_HEADERS([config_host/config_oox.h])
14860 AC_CONFIG_HEADERS([config_host/config_options.h])
14861 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14862 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14863 AC_CONFIG_HEADERS([config_host/config_skia.h])
14864 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14865 AC_CONFIG_HEADERS([config_host/config_validation.h])
14866 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14867 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14868 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14869 AC_CONFIG_HEADERS([config_host/config_version.h])
14870 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14871 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14872 AC_CONFIG_HEADERS([config_host/config_python.h])
14873 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14874 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14875 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14878 if test "$CROSS_COMPILING" = TRUE; then
14879 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14882 # touch the config timestamp file
14883 if test ! -f config_host.mk.stamp; then
14884 echo > config_host.mk.stamp
14885 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14886 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14888 echo > config_host.mk.stamp
14891 # touch the config lang timestamp file
14892 if test ! -f config_host_lang.mk.stamp; then
14893 echo > config_host_lang.mk.stamp
14894 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14895 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14897 echo > config_host_lang.mk.stamp
14901 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14902 -a "$build_os" = "cygwin"; then
14905 ****************************************************************************
14907 Your make version is known to be horribly slow, and hard to debug
14908 problems with. To get a reasonably functional make please do:
14910 to install a pre-compiled binary make for Win32
14912 mkdir -p /opt/lo/bin
14914 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14915 cp make-4.2.1-msvc.exe make
14918 to install from source:
14919 place yourself in a working directory of you choice.
14921 git clone git://git.savannah.gnu.org/make.git
14923 [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"]
14924 set PATH=%PATH%;C:\Cygwin\bin
14925 [or Cygwin64, if that is what you have]
14926 cd path-to-make-repo-you-cloned-above
14927 build_w32.bat --without-guile
14929 should result in a WinRel/gnumake.exe.
14930 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14932 Then re-run autogen.sh
14934 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14935 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14938 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14939 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14945 ****************************************************************************
14947 To show information on various make targets and make flags, run:
14950 To just build, run:
14955 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14957 After the build has finished successfully, you can immediately run what you built using the command:
14960 if test $_os = Darwin; then
14961 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14963 echo instdir/program/soffice
14967 If you want to run the unit tests, run:
14973 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14974 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14975 cat "$WARNINGS_FILE_FOR_BUILD"
14979 if test -s "$WARNINGS_FILE"; then
14980 echo "HOST config ($WARNINGS_FILE)"
14981 cat "$WARNINGS_FILE"
14984 # Remove unneeded emconfigure artifacts
14985 rm -f a.out a.wasm a.out.js a.out.wasm
14987 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: