1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([Collabora Office],[23.05.6.1],[],[],[https://collaboraoffice.com/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
49 if test "$COM" = "MSC"; then
51 if test "x$f" != "x${f#-L}"; then
52 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53 elif test "x$f" != "x${f#-l}"; then
54 filteredlibs="$filteredlibs ${f:2}.lib"
56 filteredlibs="$filteredlibs $f"
62 # let's start with Fedora's paths for now
63 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64 # ignore it: on UNIXoids it is searched by default anyway
65 # but if it's given explicitly then it may override other paths
66 # (on macOS it would be an error to use it instead of SDK)
69 filteredlibs="$filteredlibs $f"
78 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79 # function is called also on Unix.
81 # Return value: $formatted_path and $formatted_path_unix.
83 # $formatted_path is the argument in Windows format, but using forward slashes instead of
84 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85 # or shell metacharacters).
87 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
91 # Errors out if 8.3 names are needed but aren't present for some of the path components.
95 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
97 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
99 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
101 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
103 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
105 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
107 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110 printf "PathFormat $1 ==> "
114 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115 if test "$build_os" = "wsl"; then
116 formatted_path=$(echo "$formatted_path" | tr -d '\r')
120 # spaces,parentheses,brackets,braces are problematic in pathname
122 case "$formatted_path" in
123 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
127 if test "$pf_conv_to_dos" = "yes"; then
128 if test "$build_os" = "wsl"; then
129 case "$formatted_path" in
131 formatted_path=$(wslpath -w "$formatted_path")
134 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136 formatted_path=`cygpath -sm "$formatted_path"`
138 formatted_path=`cygpath -d "$formatted_path"`
140 if test $? -ne 0; then
141 AC_MSG_ERROR([path conversion failed for "$1".])
144 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146 if test "$fp_count_slash$fp_count_colon" != "00"; then
147 if test "$fp_count_colon" = "0"; then
148 new_formatted_path=`realpath "$formatted_path"`
149 if test $? -ne 0; then
150 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
152 formatted_path="$new_formatted_path"
155 if test "$build_os" = "wsl"; then
156 if test "$fp_count_colon" != "0"; then
157 formatted_path=$(wslpath "$formatted_path")
159 case "$formatted_path" in
164 formatted_path=$(wslpath -m $formatted_path)
165 case "$formatted_path" in
169 formatted_path="$formatted_path"$final_slash
173 formatted_path=$(wslpath -m "$formatted_path")
176 formatted_path=`cygpath -m "$formatted_path"`
178 if test $? -ne 0; then
179 AC_MSG_ERROR([path conversion failed for "$1".])
182 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183 if test "$fp_count_space" != "0"; then
184 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
187 if test "$build_os" = "wsl"; then
188 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189 formatted_path_unix=$(wslpath "$formatted_path")
192 formatted_path_unix="$formatted_path"
198 # There appears to be no simple and portable method to get an absolute and
199 # canonical path, so we try creating the directory if does not exist and
200 # utilizing the shell and pwd.
202 # Args: $1: A possibly relative pathname
203 # Return value: $absolute_path
205 # Convert to unix path, mkdir would treat c:/path as a relative path.
207 local rel="$formatted_path_unix"
209 test ! -e "$rel" && mkdir -p "$rel"
210 if test -d "$rel" ; then
211 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212 absolute_path="$(pwd)"
215 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
225 if test "$have_WARNINGS" = "no"; then
226 echo "*************************************" > "$WARNINGS_FILE"
228 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
232 COLORWARN="* WARNING :"
235 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
246 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249 mac_git_path=`which git 2>/dev/null`
250 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251 mac_path="$mac_path:`dirname $mac_git_path`"
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255 mac_gpg_path=`which gpg 2>/dev/null`
256 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257 mac_path="$mac_path:`dirname $mac_gpg_path`"
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
272 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284 eval local MIN_MINOR="\$${1}_${2}_MINOR"
285 eval local MIN_TINY="\$${1}_${2}_TINY"
286 eval local CUR_MAJOR="\$${1}_MAJOR"
287 eval local CUR_MINOR="\$${1}_MINOR"
288 eval local CUR_TINY="\$${1}_TINY"
289 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
293 echo "********************************************************************"
295 echo "* Running ${PACKAGE_NAME} build configuration."
297 echo "********************************************************************"
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308 ac_cv_host="x86_64-pc-wsl"
309 ac_cv_host_cpu="x86_64"
311 ac_cv_build="$ac_cv_host"
312 ac_cv_build_cpu="$ac_cv_host_cpu"
313 ac_cv_build_os="$ac_cv_host_os"
315 # Emulation of Cygwin's cygpath command for WSL.
318 if test -n "$UNITTEST_WSL_CYGPATH"; then
319 echo -n cygpath "$@" "==> "
322 # Cygwin's real cygpath has a plethora of options but we use only a few here.
325 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
328 while getopts dmuwlsp opt; do
331 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
341 if test $# -ne 1; then
342 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
349 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352 if test -n "$opt_u"; then
353 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
358 # A Windows file in WSL format
359 input=$(wslpath -w "$input")
361 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362 # Already in Windows format
365 input=$(wslpath -w "$input")
368 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
371 if test -n "$opt_d" -o -n "$opt_s"; then
372 input=$($WSL_LO_HELPER --8.3 "$input")
374 if test -n "$opt_m"; then
375 input="${input//\\//}"
382 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
389 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
395 if test -n "$UNITTEST_WSL_CYGPATH"; then
398 # Nothing special with these file names, just arbitrary ones picked to test with
399 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403 # At least on my machine for instance this file does have an 8.3 name
404 cygpath -d /mnt/c/windows/WindowsUpdate.log
405 # But for instance this one doesn't
406 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407 cygpath -ws /mnt/c/windows/WindowsUpdate.log
408 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409 cygpath -ms /mnt/c/windows/WindowsUpdate.log
411 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
417 if test -z "$WSL_LO_HELPER"; then
418 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419 WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420 elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421 WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
424 if test -z "$WSL_LO_HELPER"; then
425 AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
436 # Use of PathFormat must be after AC_CANONICAL_BUILD above
438 printf "$formatted_path , $formatted_path_unix\n"
441 printf "$formatted_path , $formatted_path_unix\n"
443 PathFormat "$PROGRAMFILESX86"
444 printf "$formatted_path , $formatted_path_unix\n"
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452 PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455 PRODUCTNAME="${PRODUCTNAME}Dev"
456 PRODUCTNAME=AC_PACKAGE_NAME
458 AC_MSG_RESULT([$PRODUCTNAME])
459 AC_SUBST(PRODUCTNAME)
460 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
461 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
463 dnl ===================================================================
464 dnl Our version is defined by the AC_INIT() at the top of this script.
465 dnl ===================================================================
467 AC_MSG_CHECKING([for package version])
468 if test -n "$with_package_version" -a "$with_package_version" != no; then
469 PACKAGE_VERSION="$with_package_version"
471 AC_MSG_RESULT([$PACKAGE_VERSION])
473 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
475 LIBO_VERSION_MAJOR=$1
476 LIBO_VERSION_MINOR=$2
477 LIBO_VERSION_MICRO=$3
478 LIBO_VERSION_PATCH=$4
480 LIBO_VERSION_SUFFIX=$5
482 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
483 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
484 # they get undoubled before actually passed to sed.
485 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
486 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
487 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
488 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
490 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
491 # three non-negative integers. Please find more information about CFBundleVersion at
492 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
494 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
495 # of at most three non-negative integers. Please find more information about
496 # CFBundleShortVersionString at
497 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
499 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
500 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
502 AC_SUBST(LIBO_VERSION_MAJOR)
503 AC_SUBST(LIBO_VERSION_MINOR)
504 AC_SUBST(LIBO_VERSION_MICRO)
505 AC_SUBST(LIBO_VERSION_PATCH)
506 AC_SUBST(LIBO_VERSION_SUFFIX)
507 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
508 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
509 AC_SUBST(MACOSX_BUNDLE_VERSION)
511 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
512 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
513 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
514 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
516 LIBO_THIS_YEAR=`date +%Y`
517 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
519 # replace backslashes, to get a valid c++ string
520 config_args=$(echo $ac_configure_args | tr '\\' '/')
521 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
523 dnl ===================================================================
525 dnl ===================================================================
526 AC_MSG_CHECKING([for product version])
527 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
528 AC_MSG_RESULT([$PRODUCTVERSION])
529 AC_SUBST(PRODUCTVERSION)
532 # AC_PROG_EGREP doesn't set GREP on all systems as well
533 AC_PATH_PROG(GREP, grep)
541 dnl ======================================
542 dnl Required GObject introspection version
543 dnl ======================================
544 INTROSPECTION_REQUIRED_VERSION=1.32.0
546 dnl ===================================================================
547 dnl Search all the common names for GNU Make
548 dnl ===================================================================
549 AC_MSG_CHECKING([for GNU Make])
551 # try to use our own make if it is available and GNUMAKE was not already defined
552 if test -z "$GNUMAKE"; then
553 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
554 GNUMAKE="$LODE_HOME/opt/bin/make"
555 elif test -x "/opt/lo/bin/make"; then
556 GNUMAKE="/opt/lo/bin/make"
561 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
562 if test -n "$a"; then
563 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
564 if test $? -eq 0; then
565 if test "$build_os" = "cygwin"; then
566 if test -n "$($a -v | grep 'Built for Windows')" ; then
567 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
568 GNUMAKE_WIN_NATIVE="TRUE"
579 AC_MSG_RESULT($GNUMAKE)
580 if test -z "$GNUMAKE"; then
581 AC_MSG_ERROR([not found. install GNU Make.])
583 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
584 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
588 win_short_path_for_make()
590 local short_path="$1"
591 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
592 cygpath -sm "$short_path"
594 cygpath -u "$(cygpath -d "$short_path")"
599 if test "$build_os" = "cygwin"; then
600 PathFormat "$SRC_ROOT"
601 SRC_ROOT="$formatted_path"
602 PathFormat "$BUILDDIR"
603 BUILDDIR="$formatted_path"
605 AC_MSG_CHECKING(for explicit COMSPEC)
606 if test -z "$COMSPEC"; then
607 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
609 AC_MSG_RESULT([found: $COMSPEC])
616 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
617 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
618 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
620 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
621 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
624 # need sed in os checks...
625 AC_PATH_PROGS(SED, sed)
626 if test -z "$SED"; then
627 AC_MSG_ERROR([install sed to run this script])
630 # Set the ENABLE_LTO variable
631 # ===================================================================
632 AC_MSG_CHECKING([whether to use link-time optimization])
633 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
642 AC_ARG_ENABLE(fuzz-options,
643 AS_HELP_STRING([--enable-fuzz-options],
644 [Randomly enable or disable each of those configurable options
645 that are supposed to be freely selectable without interdependencies,
646 or where bad interaction from interdependencies is automatically avoided.])
649 dnl ===================================================================
650 dnl When building for Android, --with-android-ndk,
651 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
653 dnl ===================================================================
655 AC_ARG_WITH(android-ndk,
656 AS_HELP_STRING([--with-android-ndk],
657 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
660 AC_ARG_WITH(android-ndk-toolchain-version,
661 AS_HELP_STRING([--with-android-ndk-toolchain-version],
662 [Specify which toolchain version to use, of those present in the
663 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
664 with_android_ndk_toolchain_version=clang5.0)
666 AC_ARG_WITH(android-sdk,
667 AS_HELP_STRING([--with-android-sdk],
668 [Specify location of the Android SDK. Mandatory when building for Android.]),
671 AC_ARG_WITH(android-api-level,
672 AS_HELP_STRING([--with-android-api-level],
673 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
677 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
678 with_android_ndk="$SRC_ROOT/external/android-ndk"
680 if test -n "$with_android_ndk"; then
681 eval ANDROID_NDK_DIR=$with_android_ndk
683 # Set up a lot of pre-canned defaults
685 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
686 if test ! -f $ANDROID_NDK_DIR/source.properties; then
687 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
689 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
691 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
693 if test -z "$ANDROID_NDK_VERSION"; then
694 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
696 case $ANDROID_NDK_VERSION in
698 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
700 11.1.*|12.1.*|13.1.*|14.1.*)
701 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
703 16.*|17.*|18.*|19.*|20.*)
706 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
707 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
712 if test -n "$with_android_api_level" ; then
713 ANDROID_API_LEVEL="$with_android_api_level"
716 android_cpu=$host_cpu
717 if test $host_cpu = arm; then
718 android_platform_prefix=arm-linux-androideabi
719 android_gnu_prefix=$android_platform_prefix
720 LLVM_TRIPLE=armv7a-linux-androideabi
721 ANDROID_APP_ABI=armeabi-v7a
722 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
723 elif test $host_cpu = aarch64; then
724 android_platform_prefix=aarch64-linux-android
725 android_gnu_prefix=$android_platform_prefix
726 LLVM_TRIPLE=$android_platform_prefix
727 # minimum android version that supports aarch64
728 if test "$ANDROID_API_LEVEL" -lt "21" ; then
731 ANDROID_APP_ABI=arm64-v8a
732 elif test $host_cpu = x86_64; then
733 android_platform_prefix=x86_64-linux-android
734 android_gnu_prefix=$android_platform_prefix
735 LLVM_TRIPLE=$android_platform_prefix
736 # minimum android version that supports x86_64
738 ANDROID_APP_ABI=x86_64
740 # host_cpu is something like "i386" or "i686" I guess, NDK uses
741 # "x86" in some contexts
743 android_platform_prefix=$android_cpu
744 android_gnu_prefix=i686-linux-android
745 LLVM_TRIPLE=$android_gnu_prefix
749 case "$with_android_ndk_toolchain_version" in
751 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
754 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
757 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
759 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
760 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
761 # manage to link the (app-specific) single huge .so that is built for the app in
762 # android/source/ if there is debug information in a significant part of the object files.
763 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
764 # all objects have been built with debug information.)
767 android_HOST_TAG=linux-x86_64
770 android_HOST_TAG=darwin-x86_64
773 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
774 # ndk would also support windows and windows-x86_64
777 android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
778 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
779 dnl TODO: NSS build uses it...
780 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
781 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
783 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
784 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
785 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
786 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
787 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
789 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
790 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
791 if test "$ENABLE_LTO" = TRUE; then
792 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
793 # $CC and $CXX when building external libraries
794 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
797 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
799 if test -z "$CC"; then
800 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
803 if test -z "$CXX"; then
804 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
808 AC_SUBST(ANDROID_NDK_DIR)
809 AC_SUBST(ANDROID_APP_ABI)
810 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
812 dnl ===================================================================
813 dnl --with-android-sdk
814 dnl ===================================================================
816 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
817 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
819 if test -n "$with_android_sdk"; then
820 eval ANDROID_SDK_DIR=$with_android_sdk
821 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
823 AC_SUBST(ANDROID_SDK_DIR)
825 AC_ARG_ENABLE([android-lok],
826 AS_HELP_STRING([--enable-android-lok],
827 [The Android app from the android/ subdir needs several tweaks all
828 over the place that break the LOK when used in the Online-based
829 Android app. This switch indicates that the intent of this build is
830 actually the Online-based, non-modified LOK.])
833 if test -n "$ANDROID_NDK_DIR" ; then
834 if test "$enable_android_lok" = yes; then
835 ENABLE_ANDROID_LOK=TRUE
836 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
837 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
839 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
842 AC_SUBST([ENABLE_ANDROID_LOK])
844 libo_FUZZ_ARG_ENABLE([android-editing],
845 AS_HELP_STRING([--enable-android-editing],
846 [Enable the experimental editing feature on Android.])
848 ENABLE_ANDROID_EDITING=
849 if test "$enable_android_editing" = yes; then
850 ENABLE_ANDROID_EDITING=TRUE
852 AC_SUBST([ENABLE_ANDROID_EDITING])
854 disable_database_connectivity_dependencies()
857 enable_firebird_sdbc=no
858 enable_mariadb_sdbc=no
859 enable_postgresql_sdbc=no
860 enable_report_builder=no
863 # ===================================================================
865 # Start initial platform setup
867 # The using_* variables reflect platform support and should not be
868 # changed after the "End initial platform setup" block.
869 # This is also true for most test_* variables.
870 # ===================================================================
879 # There is currently just iOS not using salplug, so this explicitly enables it.
880 # must: using_freetype_fontconfig
881 # may: using_headless_plugin defaults to $using_freetype_fontconfig
884 # Default values, as such probably valid just for Linux, set
885 # differently below just for Mac OSX, but at least better than
886 # hardcoding these as we used to do. Much of this is duplicated also
887 # in solenv for old build system and for gbuild, ideally we should
888 # perhaps define stuff like this only here in configure.ac?
890 LINKFLAGSSHL="-shared"
894 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
897 INSTROOTCONTENTSUFFIX=
900 HOST_PLATFORM="$host"
902 host_cpu_for_clang="$host_cpu"
907 using_freetype_fontconfig=yes
912 dnl ===========================================================
913 dnl Check whether we're using Solaris 10 - SPARC or Intel.
914 dnl ===========================================================
915 AC_MSG_CHECKING([the Solaris operating system release])
916 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
917 if test "$_os_release" -lt "10"; then
918 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
920 AC_MSG_RESULT([ok ($_os_release)])
923 dnl Check whether we're using a SPARC or i386 processor
924 AC_MSG_CHECKING([the processor type])
925 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
926 AC_MSG_RESULT([ok ($host_cpu)])
928 AC_MSG_ERROR([only SPARC and i386 processors are supported])
932 linux-gnu*|k*bsd*-gnu*|linux-musl*)
933 using_freetype_fontconfig=yes
938 if test "$enable_fuzzers" = yes; then
939 test_system_freetype=no
945 using_freetype_fontconfig=yes
951 # When building on Windows normally with MSVC under Cygwin,
952 # configure thinks that the host platform (the platform the
953 # built code will run on) is Cygwin, even if it obviously is
954 # Windows, which in Autoconf terminology is called
955 # "mingw32". (Which is misleading as MinGW is the name of the
956 # tool-chain, not an operating system.)
958 # Somewhat confusing, yes. But this configure script doesn't
959 # look at $host etc that much, it mostly uses its own $_os
960 # variable, set here in this case statement.
962 using_freetype_fontconfig=no
973 if test "$host_cpu" = "aarch64"; then
977 enable_firebird_sdbc=no
982 using_freetype_fontconfig=no
986 if test -n "$LODE_HOME" ; then
988 AC_MSG_NOTICE([sanitized the PATH to $PATH])
991 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
992 INSTROOTCONTENTSUFFIX=/Contents
993 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
994 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
995 LINKFLAGSSHL="-dynamiclib"
1002 # -undefined error is the default
1003 LINKFLAGSNOUNDEFS=""
1006 # Apple's Clang uses "arm64"
1007 host_cpu_for_clang=arm64
1012 using_freetype_fontconfig=no
1018 if test -n "$LODE_HOME" ; then
1020 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1024 enable_mpl_subset=yes
1025 enable_lotuswordpro=no
1026 disable_database_connectivity_dependencies
1029 enable_extension_integration=no
1032 if test "$enable_ios_simulator" = "yes"; then
1033 host=x86_64-apple-darwin
1035 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1036 LINKFLAGSSHL="-dynamiclib"
1043 # -undefined error is the default
1044 LINKFLAGSNOUNDEFS=""
1046 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1047 # part, so use aarch64-apple-darwin for now.
1048 HOST_PLATFORM=aarch64-apple-darwin
1050 # Apple's Clang uses "arm64"
1051 host_cpu_for_clang=arm64
1055 using_freetype_fontconfig=yes
1058 AC_MSG_CHECKING([the FreeBSD operating system release])
1059 if test -n "$with_os_version"; then
1060 OSVERSION="$with_os_version"
1062 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1064 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1065 AC_MSG_CHECKING([which thread library to use])
1066 if test "$OSVERSION" -lt "500016"; then
1067 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1068 PTHREAD_LIBS="-pthread"
1069 elif test "$OSVERSION" -lt "502102"; then
1070 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1071 PTHREAD_LIBS="-lc_r"
1074 PTHREAD_LIBS="-pthread"
1076 AC_MSG_RESULT([$PTHREAD_LIBS])
1081 using_freetype_fontconfig=yes
1085 PTHREAD_LIBS="-pthread -lpthread"
1090 using_freetype_fontconfig=yes
1093 test_gstreamer_1_0=no
1094 PTHREAD_LIBS=-pthread
1099 using_freetype_fontconfig=yes
1101 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1102 PTHREAD_LIBS="-pthread"
1107 using_freetype_fontconfig=yes
1110 PTHREAD_LIBS="-pthread"
1115 # API exists, but seems not really usable since Android 7 AFAIK
1117 using_freetype_fontconfig=yes
1118 using_headless_plugin=no
1122 test_system_freetype=no
1124 disable_database_connectivity_dependencies
1125 enable_lotuswordpro=no
1126 enable_mpl_subset=yes
1127 enable_cairo_canvas=no
1137 using_freetype_fontconfig=yes
1146 enable_postgresql_sdbc=no
1147 enable_firebird_sdbc=no
1152 # API currently just exists in headers, not code
1154 using_freetype_fontconfig=yes
1158 test_split_debug=yes
1159 test_system_freetype=no
1160 enable_compiler_plugins=no
1161 enable_customtarget_components=yes
1162 enable_split_debug=yes
1163 enable_wasm_strip=yes
1165 with_theme="colibre"
1170 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1174 AC_SUBST(HOST_PLATFORM)
1176 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1177 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1180 # Set defaults, if not set by platform
1181 test "${test_cups+set}" = set || test_cups="$using_x11"
1182 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1183 test "${test_gen+set}" = set || test_gen="$using_x11"
1184 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1185 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1186 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1187 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1188 # don't handle test_qt5, so it can disable test_kf5 later
1189 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1190 test "${test_randr+set}" = set || test_randr="$using_x11"
1191 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1192 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1194 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1195 # Make sure fontconfig and freetype test both either system or not
1196 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1197 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1199 # convenience / platform overriding "fixes"
1201 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1202 test "$test_kf5" = yes && test_qt5=yes
1203 test "$test_gtk3" != yes && enable_gtk3=no
1204 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1205 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1206 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1208 # Keep in sync with the above $using_x11 depending test default list
1214 test_gstreamer_1_0=no
1225 test "$using_x11" = yes && USING_X11=TRUE
1227 if test "$using_freetype_fontconfig" = yes; then
1228 USE_HEADLESS_CODE=TRUE
1229 if test "$using_headless_plugin" = yes; then
1230 AC_DEFINE(ENABLE_HEADLESS)
1231 ENABLE_HEADLESS=TRUE
1238 AC_SUBST(ENABLE_HEADLESS)
1239 AC_SUBST(USE_HEADLESS_CODE)
1241 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1242 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1243 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1244 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1246 # ===================================================================
1248 # End initial platform setup
1250 # ===================================================================
1252 if test "$_os" = "Android" ; then
1253 # Verify that the NDK and SDK options are proper
1254 if test -z "$with_android_ndk"; then
1255 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1256 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1257 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1260 if test -z "$ANDROID_SDK_DIR"; then
1261 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1262 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1263 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1267 if test "$_os" = "AIX"; then
1268 AC_PATH_PROG(GAWK, gawk)
1269 if test -z "$GAWK"; then
1270 AC_MSG_ERROR([gawk not found in \$PATH])
1274 AC_SUBST(SDKDIRNAME)
1276 AC_SUBST(PTHREAD_CFLAGS)
1277 AC_SUBST(PTHREAD_LIBS)
1279 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1280 # By default use the ones specified by our build system,
1281 # but explicit override is possible.
1282 AC_MSG_CHECKING(for explicit AFLAGS)
1283 if test -n "$AFLAGS"; then
1284 AC_MSG_RESULT([$AFLAGS])
1290 AC_MSG_CHECKING(for explicit CFLAGS)
1291 if test -n "$CFLAGS"; then
1292 AC_MSG_RESULT([$CFLAGS])
1298 AC_MSG_CHECKING(for explicit CXXFLAGS)
1299 if test -n "$CXXFLAGS"; then
1300 AC_MSG_RESULT([$CXXFLAGS])
1306 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1307 if test -n "$OBJCFLAGS"; then
1308 AC_MSG_RESULT([$OBJCFLAGS])
1314 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1315 if test -n "$OBJCXXFLAGS"; then
1316 AC_MSG_RESULT([$OBJCXXFLAGS])
1322 AC_MSG_CHECKING(for explicit LDFLAGS)
1323 if test -n "$LDFLAGS"; then
1324 AC_MSG_RESULT([$LDFLAGS])
1334 AC_SUBST(OBJCXXFLAGS)
1338 AC_SUBST(x_CXXFLAGS)
1339 AC_SUBST(x_OBJCFLAGS)
1340 AC_SUBST(x_OBJCXXFLAGS)
1343 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1344 my_original_CFLAGS=$CFLAGS
1345 my_original_CXXFLAGS=$CXXFLAGS
1346 my_original_CPPFLAGS=$CPPFLAGS
1348 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1349 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1350 dnl AC_PROG_CC internally.
1351 if test "$_os" != "WINNT"; then
1352 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1356 if test -z "$CC_BASE"; then
1357 CC_BASE=`first_arg_basename "$CC"`
1361 if test "$_os" != "WINNT"; then
1362 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1366 AC_SUBST(ENDIANNESS)
1368 if test "$usable_dlapi" != no; then
1369 AC_DEFINE([HAVE_DLAPI])
1370 if test "$test_unix_dlapi" != no; then
1372 AC_SEARCH_LIBS([dlsym], [dl],
1373 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1374 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1376 AC_DEFINE([HAVE_UNIX_DLAPI])
1379 AC_SUBST(UNIX_DLAPI_LIBS)
1381 # Check for a (GNU) backtrace implementation
1382 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1383 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1384 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1386 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1387 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1388 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1391 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1392 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1395 dnl ===================================================================
1396 dnl Sanity checks for Emscripten SDK setup
1397 dnl ===================================================================
1399 EMSCRIPTEN_MIN_MAJOR=2
1400 EMSCRIPTEN_MIN_MINOR=0
1401 EMSCRIPTEN_MIN_TINY=31
1402 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1404 if test "$_os" = "Emscripten"; then
1405 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1406 AS_IF([test -z "$EMSDK"],
1407 [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1408 EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1409 if test -f "$EMSCRIPTEN_VERSION_H"; then
1410 EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1411 EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1412 EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1414 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1415 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1416 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1417 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1420 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1422 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1423 if test $? -eq 0; then
1424 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1426 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1430 if ! which emconfigure >/dev/null 2>&1; then
1431 AC_MSG_WARN([emconfigure must be in your \$PATH])
1434 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1435 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1438 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1439 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1440 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1443 if test $EMSCRIPTEN_ERROR -ne 0; then
1444 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1447 AC_SUBST(EMSDK_FILE_PACKAGER)
1449 ###############################################################################
1450 # Extensions switches --enable/--disable
1451 ###############################################################################
1452 # By default these should be enabled unless having extra dependencies.
1453 # If there is extra dependency over configure options then the enable should
1454 # be automagic based on whether the requiring feature is enabled or not.
1455 # All this options change anything only with --enable-extension-integration.
1457 # The name of this option and its help string makes it sound as if
1458 # extensions are built anyway, just not integrated in the installer,
1459 # if you use --disable-extension-integration. Is that really the
1462 AC_ARG_ENABLE(ios-simulator,
1463 AS_HELP_STRING([--enable-ios-simulator],
1464 [build for iOS simulator])
1467 libo_FUZZ_ARG_ENABLE(extension-integration,
1468 AS_HELP_STRING([--disable-extension-integration],
1469 [Disable integration of the built extensions in the installer of the
1470 product. Use this switch to disable the integration.])
1473 AC_ARG_ENABLE(avmedia,
1474 AS_HELP_STRING([--disable-avmedia],
1475 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1476 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1478 AC_ARG_ENABLE(database-connectivity,
1479 AS_HELP_STRING([--disable-database-connectivity],
1480 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1483 # This doesn't mean not building (or "integrating") extensions
1484 # (although it probably should; i.e. it should imply
1485 # --disable-extension-integration I guess), it means not supporting
1486 # any extension mechanism at all
1487 libo_FUZZ_ARG_ENABLE(extensions,
1488 AS_HELP_STRING([--disable-extensions],
1489 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1492 AC_ARG_ENABLE(scripting,
1493 AS_HELP_STRING([--disable-scripting],
1494 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1495 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1497 # This is mainly for Android and iOS, but could potentially be used in some
1498 # special case otherwise, too, so factored out as a separate setting
1500 AC_ARG_ENABLE(dynamic-loading,
1501 AS_HELP_STRING([--disable-dynamic-loading],
1502 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1505 libo_FUZZ_ARG_ENABLE(report-builder,
1506 AS_HELP_STRING([--disable-report-builder],
1507 [Disable the Report Builder.])
1510 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1511 AS_HELP_STRING([--enable-ext-wiki-publisher],
1512 [Enable the Wiki Publisher extension.])
1515 libo_FUZZ_ARG_ENABLE(lpsolve,
1516 AS_HELP_STRING([--disable-lpsolve],
1517 [Disable compilation of the lp solve solver ])
1519 libo_FUZZ_ARG_ENABLE(coinmp,
1520 AS_HELP_STRING([--disable-coinmp],
1521 [Disable compilation of the CoinMP solver ])
1524 libo_FUZZ_ARG_ENABLE(pdfimport,
1525 AS_HELP_STRING([--disable-pdfimport],
1526 [Disable building the PDF import feature.])
1529 libo_FUZZ_ARG_ENABLE(pdfium,
1530 AS_HELP_STRING([--disable-pdfium],
1531 [Disable building PDFium. Results in unsecure PDF signature verification.])
1534 libo_FUZZ_ARG_ENABLE(skia,
1535 AS_HELP_STRING([--disable-skia],
1536 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1539 ###############################################################################
1541 dnl ---------- *** ----------
1543 libo_FUZZ_ARG_ENABLE(mergelibs,
1544 AS_HELP_STRING([--enable-mergelibs],
1545 [Merge several of the smaller libraries into one big, "merged", one.])
1548 libo_FUZZ_ARG_ENABLE(breakpad,
1549 AS_HELP_STRING([--enable-breakpad],
1550 [Enables breakpad for crash reporting.])
1553 libo_FUZZ_ARG_ENABLE(crashdump,
1554 AS_HELP_STRING([--disable-crashdump],
1555 [Disable dump.ini and dump-file, when --enable-breakpad])
1558 AC_ARG_ENABLE(fetch-external,
1559 AS_HELP_STRING([--disable-fetch-external],
1560 [Disables fetching external tarballs from web sources.])
1563 AC_ARG_ENABLE(fuzzers,
1564 AS_HELP_STRING([--enable-fuzzers],
1565 [Enables building libfuzzer targets for fuzz testing.])
1568 libo_FUZZ_ARG_ENABLE(pch,
1569 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1570 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1571 Using 'system' will include only external headers, 'base' will add also headers
1572 from base modules, 'normal' will also add all headers except from the module built,
1573 'full' will use all suitable headers even from a module itself.])
1576 libo_FUZZ_ARG_ENABLE(epm,
1577 AS_HELP_STRING([--enable-epm],
1578 [LibreOffice includes self-packaging code, that requires epm, however epm is
1579 useless for large scale package building.])
1582 libo_FUZZ_ARG_ENABLE(odk,
1583 AS_HELP_STRING([--enable-odk],
1584 [Enable building the Office Development Kit, the part that extensions need to build against])
1587 AC_ARG_ENABLE(mpl-subset,
1588 AS_HELP_STRING([--enable-mpl-subset],
1589 [Don't compile any pieces which are not MPL or more liberally licensed])
1592 libo_FUZZ_ARG_ENABLE(evolution2,
1593 AS_HELP_STRING([--enable-evolution2],
1594 [Allows the built-in evolution 2 addressbook connectivity build to be
1598 AC_ARG_ENABLE(avahi,
1599 AS_HELP_STRING([--enable-avahi],
1600 [Determines whether to use Avahi to advertise Impress to remote controls.])
1603 libo_FUZZ_ARG_ENABLE(werror,
1604 AS_HELP_STRING([--enable-werror],
1605 [Turn warnings to errors. (Has no effect in modules where the treating
1606 of warnings as errors is disabled explicitly.)]),
1609 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1610 AS_HELP_STRING([--enable-assert-always-abort],
1611 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1614 libo_FUZZ_ARG_ENABLE(dbgutil,
1615 AS_HELP_STRING([--enable-dbgutil],
1616 [Provide debugging support from --enable-debug and include additional debugging
1617 utilities such as object counting or more expensive checks.
1618 This is the recommended option for developers.
1619 Note that this makes the build ABI incompatible, it is not possible to mix object
1620 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1622 libo_FUZZ_ARG_ENABLE(debug,
1623 AS_HELP_STRING([--enable-debug],
1624 [Include debugging information, disable compiler optimization and inlining plus
1625 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1627 libo_FUZZ_ARG_ENABLE(split-debug,
1628 AS_HELP_STRING([--disable-split-debug],
1629 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1630 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1632 libo_FUZZ_ARG_ENABLE(gdb-index,
1633 AS_HELP_STRING([--disable-gdb-index],
1634 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1635 The feature requires a linker that supports the --gdb-index option.]))
1637 libo_FUZZ_ARG_ENABLE(sal-log,
1638 AS_HELP_STRING([--enable-sal-log],
1639 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1641 libo_FUZZ_ARG_ENABLE(symbols,
1642 AS_HELP_STRING([--enable-symbols],
1643 [Generate debug information.
1644 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1645 otherwise. It is possible to explicitly specify gbuild build targets
1646 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1647 everything in the directory; there is no ordering, more specific overrides
1648 more general, and disabling takes precedence).
1649 Example: --enable-symbols="all -sw/ -Library_sc".]))
1651 libo_FUZZ_ARG_ENABLE(optimized,
1652 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1653 [Whether to compile with optimization flags.
1654 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1655 otherwise. Using 'debug' will try to use only optimizations that should
1656 not interfere with debugging. For Emscripten we default to optimized (-O1)
1657 debug build, as otherwise binaries become too large.]))
1659 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1660 AS_HELP_STRING([--disable-runtime-optimizations],
1661 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1662 JVM JIT) that are known to interact badly with certain dynamic analysis
1663 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1664 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1665 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1667 AC_ARG_WITH(valgrind,
1668 AS_HELP_STRING([--with-valgrind],
1669 [Make availability of Valgrind headers a hard requirement.]))
1671 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1672 AS_HELP_STRING([--enable-compiler-plugins],
1673 [Enable compiler plugins that will perform additional checks during
1674 building. Enabled automatically by --enable-dbgutil.
1675 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1676 COMPILER_PLUGINS_DEBUG=
1677 if test "$enable_compiler_plugins" = debug; then
1678 enable_compiler_plugins=yes
1679 COMPILER_PLUGINS_DEBUG=TRUE
1682 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1683 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1684 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1685 relevant in the --disable-compiler-plugins case.]))
1687 libo_FUZZ_ARG_ENABLE(ooenv,
1688 AS_HELP_STRING([--enable-ooenv],
1689 [Enable ooenv for the instdir installation.]))
1692 AS_HELP_STRING([--enable-lto],
1693 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1694 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1697 AC_ARG_ENABLE(python,
1698 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1699 [Enables or disables Python support at run-time.
1700 Also specifies what Python to use at build-time.
1701 'fully-internal' even forces the internal version for uses of Python
1703 On macOS the only choices are
1704 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1707 libo_FUZZ_ARG_ENABLE(gtk3,
1708 AS_HELP_STRING([--disable-gtk3],
1709 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1710 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1713 AS_HELP_STRING([--enable-gtk4],
1714 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1716 AC_ARG_ENABLE(introspection,
1717 AS_HELP_STRING([--enable-introspection],
1718 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1719 Linux distributions.)]))
1721 AC_ARG_ENABLE(split-app-modules,
1722 AS_HELP_STRING([--enable-split-app-modules],
1723 [Split file lists for app modules, e.g. base, calc.
1724 Has effect only with make distro-pack-install]),
1727 AC_ARG_ENABLE(split-opt-features,
1728 AS_HELP_STRING([--enable-split-opt-features],
1729 [Split file lists for some optional features, e.g. pyuno, testtool.
1730 Has effect only with make distro-pack-install]),
1733 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1734 AS_HELP_STRING([--disable-cairo-canvas],
1735 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1738 libo_FUZZ_ARG_ENABLE(dbus,
1739 AS_HELP_STRING([--disable-dbus],
1740 [Determines whether to enable features that depend on dbus.
1741 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1742 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1744 libo_FUZZ_ARG_ENABLE(sdremote,
1745 AS_HELP_STRING([--disable-sdremote],
1746 [Determines whether to enable Impress remote control (i.e. the server component).]),
1747 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1749 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1750 AS_HELP_STRING([--disable-sdremote-bluetooth],
1751 [Determines whether to build sdremote with bluetooth support.
1752 Requires dbus on Linux.]))
1754 libo_FUZZ_ARG_ENABLE(gio,
1755 AS_HELP_STRING([--disable-gio],
1756 [Determines whether to use the GIO support.]),
1757 ,test "${enable_gio+set}" = set || enable_gio=yes)
1760 AS_HELP_STRING([--enable-qt5],
1761 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1766 AS_HELP_STRING([--enable-qt6],
1767 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1772 AS_HELP_STRING([--enable-kf5],
1773 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1774 KF5 are available.]),
1777 AC_ARG_ENABLE(gtk3_kde5,
1778 AS_HELP_STRING([--enable-gtk3-kde5],
1779 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1780 platforms where Gtk3, Qt5 and Plasma is available.]),
1784 AS_HELP_STRING([--enable-gen],
1785 [To select the gen backend in case of --disable-dynamic-loading.
1786 Per default auto-enabled when X11 is used.]),
1787 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1790 AS_HELP_STRING([--disable-gui],
1791 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1794 libo_FUZZ_ARG_ENABLE(randr,
1795 AS_HELP_STRING([--disable-randr],
1796 [Disable RandR support in the vcl project.]),
1797 ,test "${enable_randr+set}" = set || enable_randr=yes)
1799 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1800 AS_HELP_STRING([--disable-gstreamer-1-0],
1801 [Disable building with the gstreamer 1.0 avmedia backend.]),
1802 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1804 libo_FUZZ_ARG_ENABLE([eot],
1805 [AS_HELP_STRING([--enable-eot],
1806 [Enable support for Embedded OpenType fonts.])],
1807 ,test "${enable_eot+set}" = set || enable_eot=no)
1809 libo_FUZZ_ARG_ENABLE(cve-tests,
1810 AS_HELP_STRING([--disable-cve-tests],
1811 [Prevent CVE tests to be executed]),
1814 AC_ARG_ENABLE(build-opensymbol,
1815 AS_HELP_STRING([--enable-build-opensymbol],
1816 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1817 fontforge installed.]),
1820 AC_ARG_ENABLE(dependency-tracking,
1821 AS_HELP_STRING([--enable-dependency-tracking],
1822 [Do not reject slow dependency extractors.])[
1823 --disable-dependency-tracking
1824 Disables generation of dependency information.
1825 Speed up one-time builds.],
1828 AC_ARG_ENABLE(icecream,
1829 AS_HELP_STRING([--enable-icecream],
1830 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1831 It defaults to /opt/icecream for the location of the icecream gcc/g++
1832 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1836 AS_HELP_STRING([--enable-ld=<linker>],
1837 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1838 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1839 If <linker> contains any ':', the part before the first ':' is used as the value of
1840 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1841 needed for Clang 12).]),
1844 libo_FUZZ_ARG_ENABLE(cups,
1845 AS_HELP_STRING([--disable-cups],
1846 [Do not build cups support.])
1849 AC_ARG_ENABLE(ccache,
1850 AS_HELP_STRING([--disable-ccache],
1851 [Do not try to use ccache automatically.
1852 By default we will try to detect if ccache is available; in that case if
1853 CC/CXX are not yet set, and --enable-icecream is not given, we
1854 attempt to use ccache. --disable-ccache disables ccache completely.
1855 Additionally ccache's depend mode is enabled if possible,
1856 use --enable-ccache=nodepend to enable ccache without depend mode.
1860 AC_ARG_ENABLE(z7-debug,
1861 AS_HELP_STRING([--enable-z7-debug],
1862 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1863 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1864 Enabled by default if ccache is detected.]))
1866 libo_FUZZ_ARG_ENABLE(online-update,
1867 AS_HELP_STRING([--enable-online-update],
1868 [Enable the online update service that will check for new versions of
1869 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1870 If the value is "mar", the experimental Mozilla-like update will be
1871 enabled instead of the traditional update mechanism.]),
1874 AC_ARG_WITH(update-config,
1875 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1876 [Path to the update config ini file]))
1878 libo_FUZZ_ARG_ENABLE(extension-update,
1879 AS_HELP_STRING([--disable-extension-update],
1880 [Disable possibility to update installed extensions.]),
1883 libo_FUZZ_ARG_ENABLE(release-build,
1884 AS_HELP_STRING([--enable-release-build],
1885 [Enable release build. Note that the "release build" choice is orthogonal to
1886 whether symbols are present, debug info is generated, or optimization
1888 See http://wiki.documentfoundation.org/Development/DevBuild]),
1891 AC_ARG_ENABLE(windows-build-signing,
1892 AS_HELP_STRING([--enable-windows-build-signing],
1893 [Enable signing of windows binaries (*.exe, *.dll)]),
1896 AC_ARG_ENABLE(silent-msi,
1897 AS_HELP_STRING([--enable-silent-msi],
1898 [Enable MSI with LIMITUI=1 (silent install).]),
1901 AC_ARG_ENABLE(macosx-code-signing,
1902 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1903 [Sign executables, dylibs, frameworks and the app bundle. If you
1904 don't provide an identity the first suitable certificate
1905 in your keychain is used.]),
1908 AC_ARG_ENABLE(macosx-package-signing,
1909 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1910 [Create a .pkg suitable for uploading to the Mac App Store and sign
1911 it. If you don't provide an identity the first suitable certificate
1912 in your keychain is used.]),
1915 AC_ARG_ENABLE(macosx-sandbox,
1916 AS_HELP_STRING([--enable-macosx-sandbox],
1917 [Make the app bundle run in a sandbox. Requires code signing.
1918 Is required by apps distributed in the Mac App Store, and implies
1919 adherence to App Store rules.]),
1922 AC_ARG_WITH(macosx-bundle-identifier,
1923 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1924 [Define the macOS bundle identifier. Default is the somewhat weird
1925 org.libreoffice.script ("script", huh?).]),
1926 ,with_macosx_bundle_identifier=org.libreoffice.script)
1928 AC_ARG_WITH(macosx-provisioning-profile,
1929 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1930 [Specify the path to a provisioning profile to use]),
1933 AC_ARG_WITH(product-name,
1934 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1935 [Define the product name. Default is AC_PACKAGE_NAME.]),
1936 ,with_product_name=$PRODUCTNAME)
1938 libo_FUZZ_ARG_ENABLE(community-flavor,
1939 AS_HELP_STRING([--disable-community-flavor],
1940 [Disable the Community branding.]),
1943 AC_ARG_WITH(package-version,
1944 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1945 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1948 libo_FUZZ_ARG_ENABLE(readonly-installset,
1949 AS_HELP_STRING([--enable-readonly-installset],
1950 [Prevents any attempts by LibreOffice to write into its installation. That means
1951 at least that no "system-wide" extensions can be added. Partly experimental work in
1952 progress, probably not fully implemented. Always enabled for macOS.]),
1955 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1956 AS_HELP_STRING([--disable-mariadb-sdbc],
1957 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1960 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1961 AS_HELP_STRING([--disable-postgresql-sdbc],
1962 [Disable the build of the PostgreSQL-SDBC driver.])
1965 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1966 AS_HELP_STRING([--disable-lotuswordpro],
1967 [Disable the build of the Lotus Word Pro filter.]),
1968 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1970 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1971 AS_HELP_STRING([--disable-firebird-sdbc],
1972 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1973 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1975 AC_ARG_ENABLE(bogus-pkg-config,
1976 AS_HELP_STRING([--enable-bogus-pkg-config],
1977 [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.]),
1980 AC_ARG_ENABLE(openssl,
1981 AS_HELP_STRING([--disable-openssl],
1982 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1983 components will use NSS. Work in progress,
1984 use only if you are hacking on it.]),
1985 ,enable_openssl=yes)
1987 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1988 AS_HELP_STRING([--enable-cipher-openssl-backend],
1989 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1990 Requires --enable-openssl.]))
1993 AS_HELP_STRING([--disable-nss],
1994 [Disable using NSS. If disabled,
1995 components will use openssl. Work in progress,
1996 use only if you are hacking on it.]),
1999 AC_ARG_ENABLE(library-bin-tar,
2000 AS_HELP_STRING([--enable-library-bin-tar],
2001 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2002 Some libraries can save their build result in a tarball
2003 stored in TARFILE_LOCATION. That binary tarball is
2004 uniquely identified by the source tarball,
2005 the content of the config_host.mk file and the content
2006 of the top-level directory in core for that library
2007 If this option is enabled, then if such a tarfile exist, it will be untarred
2008 instead of the source tarfile, and the build step will be skipped for that
2010 If a proper tarfile does not exist, then the normal source-based
2011 build is done for that library and a proper binary tarfile is created
2012 for the next time.]),
2015 AC_ARG_ENABLE(dconf,
2016 AS_HELP_STRING([--disable-dconf],
2017 [Disable the dconf configuration backend (enabled by default where
2020 libo_FUZZ_ARG_ENABLE(formula-logger,
2022 [--enable-formula-logger],
2023 [Enable formula logger for logging formula calculation flow in Calc.]
2028 AS_HELP_STRING([--disable-ldap],
2029 [Disable LDAP support.]),
2032 AC_ARG_ENABLE(opencl,
2033 AS_HELP_STRING([--disable-opencl],
2034 [Disable OpenCL support.]),
2037 libo_FUZZ_ARG_ENABLE(librelogo,
2038 AS_HELP_STRING([--disable-librelogo],
2039 [Do not build LibreLogo.]),
2040 ,enable_librelogo=yes)
2042 AC_ARG_ENABLE(wasm-strip,
2043 AS_HELP_STRING([--enable-wasm-strip],
2044 [Strip the static build like for WASM/emscripten platform.]),
2047 AC_ARG_WITH(main-module,
2048 AS_HELP_STRING([--with-main-module=<writer/calc>],
2049 [Specify which main module to build for wasm.
2050 Default value is 'writer'.]),
2053 AC_ARG_ENABLE(wasm-exceptions,
2054 AS_HELP_STRING([--enable-wasm-exceptions],
2055 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2056 matter of fact, this is currently not finished by any implementation)
2057 (see https://webassembly.org/roadmap/ for the current state]),
2060 AC_ARG_ENABLE(xmlhelp,
2061 AS_HELP_STRING([--disable-xmlhelp],
2062 [Disable XML help support]),
2063 ,enable_xmlhelp=yes)
2065 AC_ARG_ENABLE(customtarget-components,
2066 AS_HELP_STRING([--enable-customtarget-components],
2067 [Generates the static UNO object constructor mapping from the build.]))
2069 AC_ARG_ENABLE(float_device_pixel,
2070 AS_HELP_STRING([--enable-float-device-pixel],
2071 [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2074 dnl ===================================================================
2075 dnl Optional Packages (--with/without-)
2076 dnl ===================================================================
2078 AC_ARG_WITH(gcc-home,
2079 AS_HELP_STRING([--with-gcc-home],
2080 [Specify the location of gcc/g++ manually. This can be used in conjunction
2081 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2082 non-default path.]),
2085 AC_ARG_WITH(gnu-patch,
2086 AS_HELP_STRING([--with-gnu-patch],
2087 [Specify location of GNU patch on Solaris or FreeBSD.]),
2090 AC_ARG_WITH(build-platform-configure-options,
2091 AS_HELP_STRING([--with-build-platform-configure-options],
2092 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2096 AS_HELP_STRING([--with-gnu-cp],
2097 [Specify location of GNU cp on Solaris or FreeBSD.]),
2100 AC_ARG_WITH(external-tar,
2101 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2102 [Specify an absolute path of where to find (and store) tarfiles.]),
2103 TARFILE_LOCATION=$withval ,
2106 AC_ARG_WITH(referenced-git,
2107 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2108 [Specify another checkout directory to reference. This makes use of
2109 git submodule update --reference, and saves a lot of diskspace
2110 when having multiple trees side-by-side.]),
2111 GIT_REFERENCE_SRC=$withval ,
2114 AC_ARG_WITH(linked-git,
2115 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2116 [Specify a directory where the repositories of submodules are located.
2117 This uses a method similar to git-new-workdir to get submodules.]),
2118 GIT_LINK_SRC=$withval ,
2121 AC_ARG_WITH(galleries,
2122 AS_HELP_STRING([--with-galleries],
2123 [Specify how galleries should be built. It is possible either to
2124 build these internally from source ("build"),
2125 or to disable them ("no")]),
2128 AC_ARG_WITH(templates,
2129 AS_HELP_STRING([--with-templates],
2130 [Specify we build with or without template files. It is possible either to
2131 build with templates ("yes"),
2132 or to disable them ("no")]),
2136 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2137 [Choose which themes to include. By default those themes with an '*' are included.
2138 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2139 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2140 *elementary, *elementary_svg,
2141 *karasa_jaga, *karasa_jaga_svg,
2142 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2143 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2146 libo_FUZZ_ARG_WITH(helppack-integration,
2147 AS_HELP_STRING([--without-helppack-integration],
2148 [It will not integrate the helppacks to the installer
2149 of the product. Please use this switch to use the online help
2150 or separate help packages.]),
2153 libo_FUZZ_ARG_WITH(fonts,
2154 AS_HELP_STRING([--without-fonts],
2155 [LibreOffice includes some third-party fonts to provide a reliable basis for
2156 help content, templates, samples, etc. When these fonts are already
2157 known to be available on the system then you should use this option.]),
2160 AC_ARG_ENABLE(noto-font,
2161 AS_HELP_STRING([--enable-noto-font],
2162 [Add more Google Noto fonts.]),
2166 AS_HELP_STRING([--with-epm],
2167 [Decides which epm to use. Default is to use the one from the system if
2168 one is built. When either this is not there or you say =internal epm
2172 AC_ARG_WITH(package-format,
2173 AS_HELP_STRING([--with-package-format],
2174 [Specify package format(s) for LibreOffice installation sets. The
2175 implicit --without-package-format leads to no installation sets being
2176 generated. Possible values: aix, archive, bsd, deb, dmg,
2177 installed, msi, pkg, and rpm.
2178 Example: --with-package-format='deb rpm']),
2182 AS_HELP_STRING([--with-tls],
2183 [Decides which TLS/SSL and cryptographic implementations to use for
2184 LibreOffice's code. Default is to use NSS although OpenSSL is also
2185 possible. Notice that selecting NSS restricts the usage of OpenSSL
2186 in LO's code but selecting OpenSSL doesn't restrict by now the
2187 usage of NSS in LO's code. Possible values: openssl, nss.
2188 Example: --with-tls="nss"]),
2191 AC_ARG_WITH(system-libs,
2192 AS_HELP_STRING([--with-system-libs],
2193 [Use libraries already on system -- enables all --with-system-* flags.]),
2196 AC_ARG_WITH(system-bzip2,
2197 AS_HELP_STRING([--with-system-bzip2],
2198 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2199 [with_system_bzip2="$with_system_libs"])
2201 AC_ARG_WITH(system-headers,
2202 AS_HELP_STRING([--with-system-headers],
2203 [Use headers already on system -- enables all --with-system-* flags for
2204 external packages whose headers are the only entities used i.e.
2205 boost/odbc/sane-header(s).]),,
2206 [with_system_headers="$with_system_libs"])
2208 AC_ARG_WITH(system-jars,
2209 AS_HELP_STRING([--without-system-jars],
2210 [When building with --with-system-libs, also the needed jars are expected
2211 on the system. Use this to disable that]),,
2212 [with_system_jars="$with_system_libs"])
2214 AC_ARG_WITH(system-cairo,
2215 AS_HELP_STRING([--with-system-cairo],
2216 [Use cairo libraries already on system. Happens automatically for
2217 (implicit) --enable-gtk3.]))
2219 AC_ARG_WITH(system-epoxy,
2220 AS_HELP_STRING([--with-system-epoxy],
2221 [Use epoxy libraries already on system. Happens automatically for
2222 (implicit) --enable-gtk3.]),,
2223 [with_system_epoxy="$with_system_libs"])
2225 AC_ARG_WITH(myspell-dicts,
2226 AS_HELP_STRING([--with-myspell-dicts],
2227 [Adds myspell dictionaries to the LibreOffice installation set]),
2230 AC_ARG_WITH(system-dicts,
2231 AS_HELP_STRING([--without-system-dicts],
2232 [Do not use dictionaries from system paths.]),
2235 AC_ARG_WITH(external-dict-dir,
2236 AS_HELP_STRING([--with-external-dict-dir],
2237 [Specify external dictionary dir.]),
2240 AC_ARG_WITH(external-hyph-dir,
2241 AS_HELP_STRING([--with-external-hyph-dir],
2242 [Specify external hyphenation pattern dir.]),
2245 AC_ARG_WITH(external-thes-dir,
2246 AS_HELP_STRING([--with-external-thes-dir],
2247 [Specify external thesaurus dir.]),
2250 AC_ARG_WITH(system-zlib,
2251 AS_HELP_STRING([--with-system-zlib],
2252 [Use zlib already on system.]),,
2253 [with_system_zlib=auto])
2255 AC_ARG_WITH(system-jpeg,
2256 AS_HELP_STRING([--with-system-jpeg],
2257 [Use jpeg already on system.]),,
2258 [with_system_jpeg="$with_system_libs"])
2260 AC_ARG_WITH(system-expat,
2261 AS_HELP_STRING([--with-system-expat],
2262 [Use expat already on system.]),,
2263 [with_system_expat="$with_system_libs"])
2265 AC_ARG_WITH(system-libxml,
2266 AS_HELP_STRING([--with-system-libxml],
2267 [Use libxml/libxslt already on system.]),,
2268 [with_system_libxml=auto])
2270 AC_ARG_WITH(system-openldap,
2271 AS_HELP_STRING([--with-system-openldap],
2272 [Use the OpenLDAP LDAP SDK already on system.]),,
2273 [with_system_openldap="$with_system_libs"])
2275 libo_FUZZ_ARG_ENABLE(poppler,
2276 AS_HELP_STRING([--disable-poppler],
2277 [Disable building Poppler.])
2280 AC_ARG_WITH(system-poppler,
2281 AS_HELP_STRING([--with-system-poppler],
2282 [Use system poppler (only needed for PDF import).]),,
2283 [with_system_poppler="$with_system_libs"])
2285 AC_ARG_WITH(system-abseil,
2286 AS_HELP_STRING([--with-system-abseil],
2287 [Use the abseil libraries already on system.]),,
2288 [with_system_abseil="$with_system_libs"])
2290 AC_ARG_WITH(system-openjpeg,
2291 AS_HELP_STRING([--with-system-openjpeg],
2292 [Use the OpenJPEG library already on system.]),,
2293 [with_system_openjpeg="$with_system_libs"])
2295 libo_FUZZ_ARG_ENABLE(gpgmepp,
2296 AS_HELP_STRING([--disable-gpgmepp],
2297 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2300 AC_ARG_WITH(system-gpgmepp,
2301 AS_HELP_STRING([--with-system-gpgmepp],
2302 [Use gpgmepp already on system]),,
2303 [with_system_gpgmepp="$with_system_libs"])
2305 AC_ARG_WITH(system-mariadb,
2306 AS_HELP_STRING([--with-system-mariadb],
2307 [Use MariaDB/MySQL libraries already on system.]),,
2308 [with_system_mariadb="$with_system_libs"])
2310 AC_ARG_ENABLE(bundle-mariadb,
2311 AS_HELP_STRING([--enable-bundle-mariadb],
2312 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2315 AC_ARG_WITH(system-postgresql,
2316 AS_HELP_STRING([--with-system-postgresql],
2317 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2318 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2319 [with_system_postgresql="$with_system_libs"])
2321 AC_ARG_WITH(libpq-path,
2322 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2323 [Use this PostgreSQL C interface (libpq) installation for building
2324 the PostgreSQL-SDBC extension.]),
2327 AC_ARG_WITH(system-firebird,
2328 AS_HELP_STRING([--with-system-firebird],
2329 [Use Firebird libraries already on system, for building the Firebird-SDBC
2330 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2331 [with_system_firebird="$with_system_libs"])
2333 AC_ARG_WITH(system-libtommath,
2334 AS_HELP_STRING([--with-system-libtommath],
2335 [Use libtommath already on system]),,
2336 [with_system_libtommath="$with_system_libs"])
2338 AC_ARG_WITH(system-hsqldb,
2339 AS_HELP_STRING([--with-system-hsqldb],
2340 [Use hsqldb already on system.]))
2342 AC_ARG_WITH(hsqldb-jar,
2343 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2344 [Specify path to jarfile manually.]),
2345 HSQLDB_JAR=$withval)
2347 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2348 AS_HELP_STRING([--disable-scripting-beanshell],
2349 [Disable support for scripts in BeanShell.]),
2353 AC_ARG_WITH(system-beanshell,
2354 AS_HELP_STRING([--with-system-beanshell],
2355 [Use beanshell already on system.]),,
2356 [with_system_beanshell="$with_system_jars"])
2358 AC_ARG_WITH(beanshell-jar,
2359 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2360 [Specify path to jarfile manually.]),
2363 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2364 AS_HELP_STRING([--disable-scripting-javascript],
2365 [Disable support for scripts in JavaScript.]),
2369 AC_ARG_WITH(system-rhino,
2370 AS_HELP_STRING([--with-system-rhino],
2371 [Use rhino already on system.]),,)
2372 # [with_system_rhino="$with_system_jars"])
2373 # Above is not used as we have different debug interface
2374 # patched into internal rhino. This code needs to be fixed
2375 # before we can enable it by default.
2377 AC_ARG_WITH(rhino-jar,
2378 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2379 [Specify path to jarfile manually.]),
2382 AC_ARG_WITH(system-jfreereport,
2383 AS_HELP_STRING([--with-system-jfreereport],
2384 [Use JFreeReport already on system.]),,
2385 [with_system_jfreereport="$with_system_jars"])
2387 AC_ARG_WITH(sac-jar,
2388 AS_HELP_STRING([--with-sac-jar=JARFILE],
2389 [Specify path to jarfile manually.]),
2392 AC_ARG_WITH(libxml-jar,
2393 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2394 [Specify path to jarfile manually.]),
2395 LIBXML_JAR=$withval)
2397 AC_ARG_WITH(flute-jar,
2398 AS_HELP_STRING([--with-flute-jar=JARFILE],
2399 [Specify path to jarfile manually.]),
2402 AC_ARG_WITH(jfreereport-jar,
2403 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2404 [Specify path to jarfile manually.]),
2405 JFREEREPORT_JAR=$withval)
2407 AC_ARG_WITH(liblayout-jar,
2408 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2409 [Specify path to jarfile manually.]),
2410 LIBLAYOUT_JAR=$withval)
2412 AC_ARG_WITH(libloader-jar,
2413 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2414 [Specify path to jarfile manually.]),
2415 LIBLOADER_JAR=$withval)
2417 AC_ARG_WITH(libformula-jar,
2418 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2419 [Specify path to jarfile manually.]),
2420 LIBFORMULA_JAR=$withval)
2422 AC_ARG_WITH(librepository-jar,
2423 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2424 [Specify path to jarfile manually.]),
2425 LIBREPOSITORY_JAR=$withval)
2427 AC_ARG_WITH(libfonts-jar,
2428 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2429 [Specify path to jarfile manually.]),
2430 LIBFONTS_JAR=$withval)
2432 AC_ARG_WITH(libserializer-jar,
2433 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2434 [Specify path to jarfile manually.]),
2435 LIBSERIALIZER_JAR=$withval)
2437 AC_ARG_WITH(libbase-jar,
2438 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2439 [Specify path to jarfile manually.]),
2440 LIBBASE_JAR=$withval)
2442 AC_ARG_WITH(system-odbc,
2443 AS_HELP_STRING([--with-system-odbc],
2444 [Use the odbc headers already on system.]),,
2445 [with_system_odbc="auto"])
2447 AC_ARG_WITH(system-sane,
2448 AS_HELP_STRING([--with-system-sane],
2449 [Use sane.h already on system.]),,
2450 [with_system_sane="$with_system_headers"])
2452 AC_ARG_WITH(system-bluez,
2453 AS_HELP_STRING([--with-system-bluez],
2454 [Use bluetooth.h already on system.]),,
2455 [with_system_bluez="$with_system_headers"])
2457 AC_ARG_WITH(system-boost,
2458 AS_HELP_STRING([--with-system-boost],
2459 [Use boost already on system.]),,
2460 [with_system_boost="$with_system_headers"])
2462 AC_ARG_WITH(system-dragonbox,
2463 AS_HELP_STRING([--with-system-dragonbox],
2464 [Use dragonbox already on system.]),,
2465 [with_system_dragonbox="$with_system_headers"])
2467 AC_ARG_WITH(system-libfixmath,
2468 AS_HELP_STRING([--with-system-libfixmath],
2469 [Use libfixmath already on system.]),,
2470 [with_system_libfixmath="$with_system_libs"])
2472 AC_ARG_WITH(system-glm,
2473 AS_HELP_STRING([--with-system-glm],
2474 [Use glm already on system.]),,
2475 [with_system_glm="$with_system_headers"])
2477 AC_ARG_WITH(system-hunspell,
2478 AS_HELP_STRING([--with-system-hunspell],
2479 [Use libhunspell already on system.]),,
2480 [with_system_hunspell="$with_system_libs"])
2482 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2483 AS_HELP_STRING([--enable-cairo-rgba],
2484 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2486 libo_FUZZ_ARG_ENABLE(zxing,
2487 AS_HELP_STRING([--disable-zxing],
2488 [Disable use of zxing external library.]))
2490 AC_ARG_WITH(system-zxing,
2491 AS_HELP_STRING([--with-system-zxing],
2492 [Use libzxing already on system.]),,
2493 [with_system_zxing="$with_system_libs"])
2495 AC_ARG_WITH(system-box2d,
2496 AS_HELP_STRING([--with-system-box2d],
2497 [Use box2d already on system.]),,
2498 [with_system_box2d="$with_system_libs"])
2500 AC_ARG_WITH(system-mythes,
2501 AS_HELP_STRING([--with-system-mythes],
2502 [Use mythes already on system.]),,
2503 [with_system_mythes="$with_system_libs"])
2505 AC_ARG_WITH(system-altlinuxhyph,
2506 AS_HELP_STRING([--with-system-altlinuxhyph],
2507 [Use ALTLinuxhyph already on system.]),,
2508 [with_system_altlinuxhyph="$with_system_libs"])
2510 AC_ARG_WITH(system-lpsolve,
2511 AS_HELP_STRING([--with-system-lpsolve],
2512 [Use lpsolve already on system.]),,
2513 [with_system_lpsolve="$with_system_libs"])
2515 AC_ARG_WITH(system-coinmp,
2516 AS_HELP_STRING([--with-system-coinmp],
2517 [Use CoinMP already on system.]),,
2518 [with_system_coinmp="$with_system_libs"])
2520 AC_ARG_WITH(system-liblangtag,
2521 AS_HELP_STRING([--with-system-liblangtag],
2522 [Use liblangtag library already on system.]),,
2523 [with_system_liblangtag="$with_system_libs"])
2525 AC_ARG_WITH(system-lockfile,
2526 AS_HELP_STRING([--with-system-lockfile[=file]],
2527 [Detect a system lockfile program or use the \$file argument.]))
2530 AS_HELP_STRING([--without-webdav],
2531 [Disable WebDAV support in the UCB.]))
2533 AC_ARG_WITH(linker-hash-style,
2534 AS_HELP_STRING([--with-linker-hash-style],
2535 [Use linker with --hash-style=<style> when linking shared objects.
2536 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2537 if supported on the build system, and "sysv" otherwise.]))
2539 AC_ARG_WITH(jdk-home,
2540 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2541 [If you have installed JDK 9 or later on your system please supply the
2542 path here. Note that this is not the location of the java command but the
2543 location of the entire distribution. In case of cross-compiling, this
2544 is the JDK of the host os. Use --with-build-platform-configure-options
2545 to point to a different build platform JDK.]),
2549 AS_HELP_STRING([--with-help],
2550 [Enable the build of help. There is a special parameter "common" that
2551 can be used to bundle only the common part, .e.g help-specific icons.
2552 This is useful when you build the helpcontent separately.])
2554 Usage: --with-help build the old local help
2555 --without-help no local help (default)
2556 --with-help=html build the new HTML local help
2557 --with-help=online build the new HTML online help
2561 AC_ARG_WITH(omindex,
2562 AS_HELP_STRING([--with-omindex],
2563 [Enable the support of xapian-omega index for online help.])
2565 Usage: --with-omindex=server prepare the pages for omindex
2566 but let xapian-omega be built in server.
2567 --with-omindex=noxap do not prepare online pages
2572 libo_FUZZ_ARG_WITH(java,
2573 AS_HELP_STRING([--with-java=<java command>],
2574 [Specify the name of the Java interpreter command. Typically "java"
2575 which is the default.
2577 To build without support for Java components, applets, accessibility
2578 or the XML filters written in Java, use --without-java or --with-java=no.]),
2579 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2580 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2583 AC_ARG_WITH(jvm-path,
2584 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2585 [Use a specific JVM search path at runtime.
2586 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2589 AC_ARG_WITH(ant-home,
2590 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2591 [If you have installed Apache Ant on your system, please supply the path here.
2592 Note that this is not the location of the Ant binary but the location
2593 of the entire distribution.]),
2596 AC_ARG_WITH(symbol-config,
2597 AS_HELP_STRING([--with-symbol-config],
2598 [Configuration for the crashreport symbol upload]),
2600 [with_symbol_config=no])
2602 AC_ARG_WITH(export-validation,
2603 AS_HELP_STRING([--without-export-validation],
2604 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2605 ,with_export_validation=auto)
2607 AC_ARG_WITH(bffvalidator,
2608 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2609 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2610 Requires installed Microsoft Office Binary File Format Validator.
2611 Note: export-validation (--with-export-validation) is required to be turned on.
2612 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2613 ,with_bffvalidator=no)
2615 libo_FUZZ_ARG_WITH(junit,
2616 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2617 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2618 --without-junit disables those tests. Not relevant in the --without-java case.]),
2621 AC_ARG_WITH(hamcrest,
2622 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2623 [Specifies the hamcrest jar file to use for JUnit-based tests.
2624 --without-junit disables those tests. Not relevant in the --without-java case.]),
2627 AC_ARG_WITH(perl-home,
2628 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2629 [If you have installed Perl 5 Distribution, on your system, please
2630 supply the path here. Note that this is not the location of the Perl
2631 binary but the location of the entire distribution.]),
2634 libo_FUZZ_ARG_WITH(doxygen,
2636 [--with-doxygen=<absolute path to doxygen executable>],
2637 [Specifies the doxygen executable to use when generating ODK C/C++
2638 documentation. --without-doxygen disables generation of ODK C/C++
2639 documentation. Not relevant in the --disable-odk case.]),
2642 AC_ARG_WITH(visual-studio,
2643 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2644 [Specify which Visual Studio version to use in case several are
2645 installed. Currently 2019 (default) and 2022 are supported.]),
2648 AC_ARG_WITH(windows-sdk,
2649 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2650 [Specify which Windows SDK, or "Windows Kit", version to use
2651 in case the one that came with the selected Visual Studio
2652 is not what you want for some reason. Note that not all compiler/SDK
2653 combinations are supported. The intent is that this option should not
2658 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2659 [Use this option to build LibreOffice with additional UI language support.
2660 English (US) is always included by default.
2661 Separate multiple languages with space.
2662 For all languages, use --with-lang=ALL.]),
2665 AC_ARG_WITH(locales,
2666 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2667 [Use this option to limit the locale information built in.
2668 Separate multiple locales with space.
2669 Very experimental and might well break stuff.
2670 Just a desperate measure to shrink code and data size.
2671 By default all the locales available is included.
2672 Just works with --disable-dynloading. Defaults to "ALL".
2673 This option is completely unrelated to --with-lang.])
2675 Affects also our character encoding conversion
2676 tables for encodings mainly targeted for a
2677 particular locale, like EUC-CN and EUC-TW for
2678 zh, ISO-2022-JP for ja.
2680 Affects also our add-on break iterator data for
2683 For the default, all locales, don't use this switch at all.
2684 Specifying just the language part of a locale means all matching
2685 locales will be included.
2689 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2690 libo_FUZZ_ARG_WITH(krb5,
2691 AS_HELP_STRING([--with-krb5],
2692 [Enable MIT Kerberos 5 support in modules that support it.
2693 By default automatically enabled on platforms
2694 where a good system Kerberos 5 is available.]),
2697 libo_FUZZ_ARG_WITH(gssapi,
2698 AS_HELP_STRING([--with-gssapi],
2699 [Enable GSSAPI support in modules that support it.
2700 By default automatically enabled on platforms
2701 where a good system GSSAPI is available.]),
2704 libo_FUZZ_ARG_WITH(lxml,
2705 AS_HELP_STRING([--without-lxml],
2706 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2707 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2708 report widget classes and ids.]),
2711 libo_FUZZ_ARG_WITH(latest-c++,
2712 AS_HELP_STRING([--with-latest-c++],
2713 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2714 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2715 [with_latest_c__=no])
2717 AC_ARG_WITH(gtk3-build,
2718 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2719 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2720 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2722 dnl ===================================================================
2724 dnl ===================================================================
2726 AC_ARG_WITH(branding,
2727 AS_HELP_STRING([--with-branding=/path/to/images],
2728 [Use given path to retrieve branding images set.])
2730 Search for intro.png about.svg and logo.svg.
2731 If any is missing, default ones will be used instead.
2733 Search also progress.conf for progress
2734 settings on intro screen :
2736 PROGRESSBARCOLOR="255,255,255" Set color of
2737 progress bar. Comma separated RGB decimal values.
2738 PROGRESSSIZE="407,6" Set size of progress bar.
2739 Comma separated decimal values (width, height).
2740 PROGRESSPOSITION="61,317" Set position of progress
2741 bar from left,top. Comma separated decimal values.
2742 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2743 bar frame. Comma separated RGB decimal values.
2744 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2745 bar text. Comma separated RGB decimal values.
2746 PROGRESSTEXTBASELINE="287" Set vertical position of
2747 progress bar text from top. Decimal value.
2749 Default values will be used if not found.
2754 AC_ARG_WITH(extra-buildid,
2755 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2756 [Show addition build identification in about dialog.]),
2761 AS_HELP_STRING([--with-vendor="John the Builder"],
2762 [Set vendor of the build.]),
2765 AC_ARG_WITH(privacy-policy-url,
2766 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2767 [The URL to your privacy policy (needed when
2768 enabling online-update or crashreporting via breakpad)]),
2769 [if test "x$with_privacy_policy_url" = "xyes"; then
2770 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2771 elif test "x$with_privacy_policy_url" = "xno"; then
2772 with_privacy_policy_url="undefined"
2774 ,[with_privacy_policy_url="undefined"])
2776 AC_ARG_WITH(android-package-name,
2777 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2778 [Set Android package name of the build.]),
2781 AC_ARG_WITH(compat-oowrappers,
2782 AS_HELP_STRING([--with-compat-oowrappers],
2783 [Install oo* wrappers in parallel with
2784 lo* ones to keep backward compatibility.
2785 Has effect only with make distro-pack-install]),
2788 AC_ARG_WITH(os-version,
2789 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2790 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2793 AC_ARG_WITH(parallelism,
2794 AS_HELP_STRING([--with-parallelism],
2795 [Number of jobs to run simultaneously during build. Parallel builds can
2796 save a lot of time on multi-cpu machines. Defaults to the number of
2797 CPUs on the machine, unless you configure --enable-icecream - then to
2801 AC_ARG_WITH(all-tarballs,
2802 AS_HELP_STRING([--with-all-tarballs],
2803 [Download all external tarballs unconditionally]))
2805 AC_ARG_WITH(gdrive-client-id,
2806 AS_HELP_STRING([--with-gdrive-client-id],
2807 [Provides the client id of the application for OAuth2 authentication
2808 on Google Drive. If either this or --with-gdrive-client-secret is
2809 empty, the feature will be disabled]),
2812 AC_ARG_WITH(gdrive-client-secret,
2813 AS_HELP_STRING([--with-gdrive-client-secret],
2814 [Provides the client secret of the application for OAuth2
2815 authentication on Google Drive. If either this or
2816 --with-gdrive-client-id is empty, the feature will be disabled]),
2819 AC_ARG_WITH(alfresco-cloud-client-id,
2820 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2821 [Provides the client id of the application for OAuth2 authentication
2822 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2823 empty, the feature will be disabled]),
2826 AC_ARG_WITH(alfresco-cloud-client-secret,
2827 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2828 [Provides the client secret of the application for OAuth2
2829 authentication on Alfresco Cloud. If either this or
2830 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2833 AC_ARG_WITH(onedrive-client-id,
2834 AS_HELP_STRING([--with-onedrive-client-id],
2835 [Provides the client id of the application for OAuth2 authentication
2836 on OneDrive. If either this or --with-onedrive-client-secret is
2837 empty, the feature will be disabled]),
2840 AC_ARG_WITH(onedrive-client-secret,
2841 AS_HELP_STRING([--with-onedrive-client-secret],
2842 [Provides the client secret of the application for OAuth2
2843 authentication on OneDrive. If either this or
2844 --with-onedrive-client-id is empty, the feature will be disabled]),
2846 dnl ===================================================================
2847 dnl Do we want to use pre-build binary tarball for recompile
2848 dnl ===================================================================
2850 if test "$enable_library_bin_tar" = "yes" ; then
2851 USE_LIBRARY_BIN_TAR=TRUE
2853 USE_LIBRARY_BIN_TAR=
2855 AC_SUBST(USE_LIBRARY_BIN_TAR)
2857 dnl ===================================================================
2858 dnl Test whether build target is Release Build
2859 dnl ===================================================================
2860 AC_MSG_CHECKING([whether build target is Release Build])
2861 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2863 ENABLE_RELEASE_BUILD=
2864 GET_TASK_ALLOW_ENTITLEMENT='
2865 <!-- We want to be able to debug a hardened process when not building for release -->
2866 <key>com.apple.security.get-task-allow</key>
2869 AC_MSG_RESULT([yes])
2870 ENABLE_RELEASE_BUILD=TRUE
2871 GET_TASK_ALLOW_ENTITLEMENT=''
2873 AC_SUBST(ENABLE_RELEASE_BUILD)
2874 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2876 AC_MSG_CHECKING([whether to build a Community flavor])
2877 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2878 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2879 AC_MSG_RESULT([yes])
2884 dnl ===================================================================
2885 dnl Test whether to sign Windows Build
2886 dnl ===================================================================
2887 AC_MSG_CHECKING([whether to sign windows build])
2888 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2889 AC_MSG_RESULT([yes])
2890 WINDOWS_BUILD_SIGNING="TRUE"
2893 WINDOWS_BUILD_SIGNING="FALSE"
2895 AC_SUBST(WINDOWS_BUILD_SIGNING)
2897 dnl ===================================================================
2898 dnl MacOSX build and runtime environment options
2899 dnl ===================================================================
2901 AC_ARG_WITH(macosx-version-min-required,
2902 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2903 [set the minimum OS version needed to run the built LibreOffice])
2905 e. g.: --with-macosx-version-min-required=10.14
2909 dnl ===================================================================
2910 dnl Check for incompatible options set by fuzzing, and reset those
2911 dnl automatically to working combinations
2912 dnl ===================================================================
2914 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2915 "$enable_dbus" != "$enable_avahi"; then
2916 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2917 enable_avahi=$enable_dbus
2922 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2923 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2927 add_lopath_before ()
2932 for dir in $LO_PATH ; do
2933 if test "$dir" != "$1" ; then
2934 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2937 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2940 dnl ===================================================================
2941 dnl check for required programs (grep, awk, sed, bash)
2942 dnl ===================================================================
2947 if test -n "$1"; then
2948 if test "$build_os" = "cygwin"; then
2949 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2951 new_path=`cygpath -sm "$formatted_path"`
2954 new_path=`cygpath -u "$formatted_path"`
2959 if test "$2" = "after"; then
2960 add_lopath_after "$new_path"
2962 add_lopath_before "$new_path"
2968 AC_PATH_PROG( AWK, $AWK)
2969 if test -z "$AWK"; then
2970 AC_MSG_ERROR([install awk to run this script])
2973 AC_PATH_PROG(BASH, bash)
2974 if test -z "$BASH"; then
2975 AC_MSG_ERROR([bash not found in \$PATH])
2979 # prefer parallel compression tools, if available
2980 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2981 if test -z "$COMPRESSIONTOOL"; then
2982 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2983 if test -z "$COMPRESSIONTOOL"; then
2984 AC_MSG_ERROR([gzip not found in \$PATH])
2987 AC_SUBST(COMPRESSIONTOOL)
2989 AC_MSG_CHECKING([for GNU or BSD tar])
2990 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2991 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
2992 if test $? -eq 0; then
2997 AC_MSG_RESULT($GNUTAR)
2998 if test -z "$GNUTAR"; then
2999 AC_MSG_ERROR([not found. install GNU or BSD tar.])
3003 AC_MSG_CHECKING([for tar's option to strip components])
3004 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3005 if test $? -eq 0; then
3006 STRIP_COMPONENTS="--strip-components"
3008 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3009 if test $? -eq 0; then
3010 STRIP_COMPONENTS="--strip-path"
3012 STRIP_COMPONENTS="unsupported"
3015 AC_MSG_RESULT($STRIP_COMPONENTS)
3016 if test x$STRIP_COMPONENTS = xunsupported; then
3017 AC_MSG_ERROR([you need a tar that is able to strip components.])
3019 AC_SUBST(STRIP_COMPONENTS)
3021 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3022 dnl desktop OSes from "mobile" ones.
3024 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3025 dnl In other words, that when building for an OS that is not a
3026 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3028 dnl Note the direction of the implication; there is no assumption that
3029 dnl cross-compiling would imply a non-desktop OS.
3031 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3032 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3033 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3034 if test "$_os" != Emscripten; then
3035 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3039 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3040 # also work with the default gtk3 plugin.
3041 if test "$enable_wasm_strip" = "yes"; then
3046 test "$_os" = Emscripten && enable_curl=no
3047 enable_database_connectivity=no
3050 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3051 enable_extension_integration=no
3052 enable_extensions=no
3053 enable_extension_update=no
3057 enable_lotuswordpro=no
3061 enable_online_update=no
3065 enable_report_builder=no
3067 enable_sdremote_bluetooth=no
3077 test_libpagemaker=no
3087 test "${with_fonts+set}" = set || with_fonts=yes
3088 test "${with_locales+set}" = set || with_locales=en
3090 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3091 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3092 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3093 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3094 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3095 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3096 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3097 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3098 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3099 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3100 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3101 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3102 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3103 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3104 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3105 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3106 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3107 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3110 EMSCRIPTEN_NEH_MAJOR=3
3111 EMSCRIPTEN_NEH_MINOR=1
3112 EMSCRIPTEN_NEH_TINY=3
3113 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3115 if test "$enable_wasm_exceptions" = yes; then
3116 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3117 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3118 if test $? -ne 0; then
3119 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3121 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3123 ENABLE_WASM_EXCEPTIONS=TRUE
3125 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3127 # Whether to build "avmedia" functionality or not.
3129 if test "$enable_avmedia" = yes; then
3130 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3131 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3133 test_gstreamer_1_0=no
3136 # Decide whether to build database connectivity stuff (including Base) or not.
3137 if test "$enable_database_connectivity" != no; then
3138 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3139 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3141 if test "$_os" = iOS; then
3142 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3144 disable_database_connectivity_dependencies
3147 if test -z "$enable_extensions"; then
3148 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3149 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3150 enable_extensions=yes
3154 DISABLE_SCRIPTING=''
3155 if test "$enable_scripting" = yes; then
3156 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3157 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3159 DISABLE_SCRIPTING='TRUE'
3160 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3163 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3164 # Disable dynamic_loading always for iOS and Android
3165 enable_dynamic_loading=no
3166 elif test -z "$enable_dynamic_loading"; then
3167 # Otherwise enable it unless specifically disabled
3168 enable_dynamic_loading=yes
3171 DISABLE_DYNLOADING=''
3172 if test "$enable_dynamic_loading" = yes; then
3173 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3175 DISABLE_DYNLOADING='TRUE'
3176 if test $_os != iOS -a $_os != Android; then
3177 enable_database_connectivity=no
3185 AC_SUBST(DISABLE_DYNLOADING)
3187 ENABLE_CUSTOMTARGET_COMPONENTS=
3188 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3189 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3190 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3191 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3194 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3196 if test "$enable_extensions" = yes; then
3197 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3198 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3200 enable_extension_integration=no
3201 enable_extension_update=no
3204 # remember SYSBASE value
3207 dnl ===================================================================
3208 dnl Sort out various gallery compilation options
3209 dnl ===================================================================
3210 WITH_GALLERY_BUILD=TRUE
3211 AC_MSG_CHECKING([how to build and package galleries])
3212 if test -n "${with_galleries}"; then
3213 if test "$with_galleries" = "build"; then
3214 if test "$enable_database_connectivity" = no; then
3215 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3217 AC_MSG_RESULT([build from source images internally])
3218 elif test "$with_galleries" = "no"; then
3220 AC_MSG_RESULT([disable non-internal gallery build])
3222 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3225 if test $_os != iOS -a $_os != Android; then
3226 AC_MSG_RESULT([internal src images for desktop])
3229 AC_MSG_RESULT([disable src image build])
3232 AC_SUBST(WITH_GALLERY_BUILD)
3234 dnl ===================================================================
3235 dnl Sort out various templates compilation options
3236 dnl ===================================================================
3238 AC_MSG_CHECKING([build with or without template files])
3239 if test -n "${with_templates}"; then
3240 if test "$with_templates" = "yes"; then
3241 AC_MSG_RESULT([enable all templates])
3242 elif test "$with_templates" = "no"; then
3244 AC_MSG_RESULT([disable non-internal templates])
3246 AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3249 if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3250 AC_MSG_RESULT([enable all templates])
3253 AC_MSG_RESULT([disable non-internal templates])
3256 AC_SUBST(WITH_TEMPLATES)
3258 dnl ===================================================================
3259 dnl Checks if ccache is available
3260 dnl ===================================================================
3262 if test "$enable_ccache" = "no"; then
3264 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3265 case "%$CC%$CXX%" in
3266 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3267 # assume that's good then
3268 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3269 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3270 CCACHE_DEPEND_MODE=1
3273 # try to use our own ccache if it is available and CCACHE was not already defined
3274 if test -z "$CCACHE"; then
3275 if test "$_os" = "WINNT"; then
3276 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3278 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3279 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3280 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3281 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3284 AC_PATH_PROG([CCACHE],[ccache],[not found])
3285 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3286 CCACHE=`win_short_path_for_make "$CCACHE"`
3287 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3289 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3290 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3291 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3299 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3300 # on windows/VC perhaps sccache is around?
3301 case "%$CC%$CXX%" in
3302 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3303 # assume that's good then
3304 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3305 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3306 CCACHE_DEPEND_MODE=1
3310 # for sharing code below, reuse CCACHE env var
3311 AC_PATH_PROG([CCACHE],[sccache],[not found])
3312 if test "$CCACHE" != "not found"; then
3313 CCACHE=`win_short_path_for_make "$CCACHE"`
3315 CCACHE_DEPEND_MODE=1
3320 if test "$CCACHE" = "not found"; then
3323 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3324 CCACHE_DEPEND_MODE=1
3325 # Need to check for ccache version: otherwise prevents
3326 # caching of the results (like "-x objective-c++" for Mac)
3327 if test $_os = Darwin -o $_os = iOS; then
3328 # Check ccache version
3329 AC_MSG_CHECKING([whether version of ccache is suitable])
3330 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3331 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3332 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3333 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3335 AC_MSG_RESULT([no, $CCACHE_VERSION])
3346 if test "$enable_ccache" = "nodepend"; then
3347 CCACHE_DEPEND_MODE=""
3349 AC_SUBST(CCACHE_DEPEND_MODE)
3351 # sccache defaults are good enough
3352 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3353 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3354 # or (...) max_size = 20.0 G
3355 # -p works with both 4.2 and 4.4
3356 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3357 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3358 if test "$ccache_size" = ""; then
3359 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3360 if test "$ccache_size" = ""; then
3363 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3364 if test $ccache_size -lt 1024; then
3366 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3367 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3369 # warn that ccache may be too small for debug build
3370 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3371 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3374 if test $ccache_size -lt 5; then
3375 #warn that ccache may be too small for debug build
3376 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3377 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3383 if test "$enable_z7_debug" != no; then
3384 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3385 ENABLE_Z7_DEBUG=TRUE
3388 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3389 add_warning "ccache will not work with --disable-z7-debug"
3391 AC_SUBST(ENABLE_Z7_DEBUG)
3393 dnl ===================================================================
3394 dnl Checks for C compiler,
3395 dnl The check for the C++ compiler is later on.
3396 dnl ===================================================================
3397 if test "$_os" != "WINNT"; then
3399 AC_MSG_CHECKING([gcc home])
3400 if test -z "$with_gcc_home"; then
3401 if test "$enable_icecream" = "yes"; then
3402 if test -d "/usr/lib/icecc/bin"; then
3403 GCC_HOME="/usr/lib/icecc/"
3404 elif test -d "/usr/libexec/icecc/bin"; then
3405 GCC_HOME="/usr/libexec/icecc/"
3406 elif test -d "/opt/icecream/bin"; then
3407 GCC_HOME="/opt/icecream/"
3409 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3413 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3414 GCC_HOME_SET="false"
3417 GCC_HOME="$with_gcc_home"
3419 AC_MSG_RESULT($GCC_HOME)
3422 if test "$GCC_HOME_SET" = "true"; then
3423 if test -z "$CC"; then
3424 CC="$GCC_HOME/bin/gcc"
3427 if test -z "$CXX"; then
3428 CXX="$GCC_HOME/bin/g++"
3434 COMPATH=`dirname "$CC"`
3435 if test "$COMPATH" = "."; then
3436 AC_PATH_PROGS(COMPATH, $CC)
3437 dnl double square bracket to get single because of M4 quote...
3438 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3440 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3442 dnl ===================================================================
3444 dnl ===================================================================
3445 AC_MSG_CHECKING([whether to build with Java support])
3446 if test "$with_java" != "no"; then
3447 if test "$DISABLE_SCRIPTING" = TRUE; then
3448 AC_MSG_RESULT([no, overridden by --disable-scripting])
3452 AC_MSG_RESULT([yes])
3454 AC_DEFINE(HAVE_FEATURE_JAVA)
3461 AC_SUBST(ENABLE_JAVA)
3463 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3465 dnl ENABLE_JAVA="" indicate no Java support at all
3467 dnl ===================================================================
3468 dnl Check macOS SDK and compiler
3469 dnl ===================================================================
3471 if test $_os = Darwin; then
3473 # The SDK in the currently selected Xcode should be found.
3475 AC_MSG_CHECKING([what macOS SDK to use])
3476 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3477 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3478 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3479 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3480 # problems that existed in the PPC days with target versions not being respected or random
3481 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3482 # SDK version is enough, no need to do both...
3483 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3484 if test ! -d "$MACOSX_SDK_PATH"; then
3485 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3487 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3488 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3489 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3490 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3492 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3493 # correct version in case such an old SDK is specified, it will be rejected later anyway
3494 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3495 if test $MACOSX_SDK_VERSION -lt 101400; then
3496 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.14])
3498 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3499 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3501 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3503 AC_MSG_CHECKING([what minimum version of macOS to require])
3504 if test "$with_macosx_version_min_required" = "" ; then
3505 if test "$host_cpu" = x86_64; then
3506 with_macosx_version_min_required="10.14";
3508 with_macosx_version_min_required="11.0";
3511 # see same notes about MACOSX_SDK_VERSION above
3512 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3513 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101400; then
3514 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.14])
3516 AC_MSG_RESULT([$with_macosx_version_min_required])
3518 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3519 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3520 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3522 AC_MSG_RESULT([yes])
3525 # export this so that "xcrun" invocations later return matching values
3526 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3527 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3528 export DEVELOPER_DIR
3529 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3530 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3532 AC_MSG_CHECKING([whether Xcode is new enough])
3533 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3534 my_xcode_ver2=${my_xcode_ver1#Xcode }
3535 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3536 if test "$my_xcode_ver3" -ge 1205; then
3537 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3538 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3539 if test "$my_xcode_ver3" -ge 1600; then
3540 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3541 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3542 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3544 if test "$my_xcode_ver3" -ge 1500; then
3545 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3546 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3547 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3548 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3549 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3554 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3557 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3558 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3560 LIBTOOL=/usr/bin/libtool
3561 INSTALL_NAME_TOOL=install_name_tool
3562 if test -z "$save_CC"; then
3563 stdlib=-stdlib=libc++
3565 AC_MSG_CHECKING([what C compiler to use])
3566 CC="`xcrun -find clang`"
3567 CC_BASE=`first_arg_basename "$CC"`
3568 if test "$host_cpu" = x86_64; then
3569 CC+=" -target x86_64-apple-macos"
3571 CC+=" -target arm64-apple-macos"
3573 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3574 AC_MSG_RESULT([$CC])
3576 AC_MSG_CHECKING([what C++ compiler to use])
3577 CXX="`xcrun -find clang++`"
3578 CXX_BASE=`first_arg_basename "$CXX"`
3579 if test "$host_cpu" = x86_64; then
3580 CXX+=" -target x86_64-apple-macos"
3582 CXX+=" -target arm64-apple-macos"
3584 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3585 AC_MSG_RESULT([$CXX])
3587 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3590 STRIP=`xcrun -find strip`
3591 LIBTOOL=`xcrun -find libtool`
3592 RANLIB=`xcrun -find ranlib`
3595 AC_MSG_CHECKING([whether to do code signing])
3597 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3600 if test "$enable_macosx_code_signing" = yes; then
3601 # By default use the first suitable certificate (?).
3603 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3604 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3605 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3606 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3607 # "Developer ID Application" one.
3608 identity="Developer ID Application:"
3610 identity=$enable_macosx_code_signing
3612 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3613 if test -n "$identity"; then
3614 MACOSX_CODESIGNING_IDENTITY=$identity
3615 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3616 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3618 AC_MSG_ERROR([cannot determine identity to use])
3622 AC_MSG_CHECKING([whether to create a Mac App Store package])
3624 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3626 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3627 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3629 if test "$enable_macosx_package_signing" = yes; then
3630 # By default use the first suitable certificate.
3631 # It should be a "3rd Party Mac Developer Installer" one
3632 identity="3rd Party Mac Developer Installer:"
3634 identity=$enable_macosx_package_signing
3636 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3637 if test -n "$identity"; then
3638 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3639 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3640 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3642 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3646 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3647 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3650 AC_MSG_CHECKING([whether to sandbox the application])
3652 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3653 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3654 elif test "$enable_macosx_sandbox" = yes; then
3655 ENABLE_MACOSX_SANDBOX=TRUE
3656 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3657 AC_MSG_RESULT([yes])
3662 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3663 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3664 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3666 if test -n "$with_macosx_provisioning_profile" ; then
3667 if test ! -f "$with_macosx_provisioning_profile"; then
3668 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3670 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3671 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3672 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3673 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3674 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3678 AC_SUBST(MACOSX_SDK_PATH)
3679 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3680 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3681 AC_SUBST(INSTALL_NAME_TOOL)
3682 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3683 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3684 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3685 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3686 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3687 AC_SUBST(MACOSX_PROVISIONING_INFO)
3688 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3689 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3690 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3692 dnl ===================================================================
3693 dnl Check iOS SDK and compiler
3694 dnl ===================================================================
3696 if test $_os = iOS; then
3697 AC_MSG_CHECKING([what iOS SDK to use])
3699 if test "$enable_ios_simulator" = "yes"; then
3700 platformlc=iphonesimulator
3701 versionmin=-mios-simulator-version-min=14.5
3704 versionmin=-miphoneos-version-min=14.5
3707 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3709 if ! test -d "$sysroot"; then
3710 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3713 AC_MSG_RESULT($sysroot)
3715 stdlib="-stdlib=libc++"
3717 AC_MSG_CHECKING([what C compiler to use])
3718 CC="`xcrun -find clang`"
3719 CC_BASE=`first_arg_basename "$CC"`
3720 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3721 AC_MSG_RESULT([$CC])
3723 AC_MSG_CHECKING([what C++ compiler to use])
3724 CXX="`xcrun -find clang++`"
3725 CXX_BASE=`first_arg_basename "$CXX"`
3726 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3727 AC_MSG_RESULT([$CXX])
3729 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3732 STRIP=`xcrun -find strip`
3733 LIBTOOL=`xcrun -find libtool`
3734 RANLIB=`xcrun -find ranlib`
3737 AC_MSG_CHECKING([whether to treat the installation as read-only])
3739 if test $_os = Darwin; then
3740 enable_readonly_installset=yes
3741 elif test "$enable_extensions" != yes; then
3742 enable_readonly_installset=yes
3744 if test "$enable_readonly_installset" = yes; then
3745 AC_MSG_RESULT([yes])
3746 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3751 dnl ===================================================================
3752 dnl Structure of install set
3753 dnl ===================================================================
3755 if test $_os = Darwin; then
3756 LIBO_BIN_FOLDER=MacOS
3757 LIBO_ETC_FOLDER=Resources
3758 LIBO_LIBEXEC_FOLDER=MacOS
3759 LIBO_LIB_FOLDER=Frameworks
3760 LIBO_LIB_PYUNO_FOLDER=Resources
3761 LIBO_SHARE_FOLDER=Resources
3762 LIBO_SHARE_HELP_FOLDER=Resources/help
3763 LIBO_SHARE_JAVA_FOLDER=Resources/java
3764 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3765 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3766 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3767 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3768 LIBO_URE_BIN_FOLDER=MacOS
3769 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3770 LIBO_URE_LIB_FOLDER=Frameworks
3771 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3772 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3773 elif test $_os = WINNT; then
3774 LIBO_BIN_FOLDER=program
3775 LIBO_ETC_FOLDER=program
3776 LIBO_LIBEXEC_FOLDER=program
3777 LIBO_LIB_FOLDER=program
3778 LIBO_LIB_PYUNO_FOLDER=program
3779 LIBO_SHARE_FOLDER=share
3780 LIBO_SHARE_HELP_FOLDER=help
3781 LIBO_SHARE_JAVA_FOLDER=program/classes
3782 LIBO_SHARE_PRESETS_FOLDER=presets
3783 LIBO_SHARE_READMES_FOLDER=readmes
3784 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3785 LIBO_SHARE_SHELL_FOLDER=program/shell
3786 LIBO_URE_BIN_FOLDER=program
3787 LIBO_URE_ETC_FOLDER=program
3788 LIBO_URE_LIB_FOLDER=program
3789 LIBO_URE_MISC_FOLDER=program
3790 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3792 LIBO_BIN_FOLDER=program
3793 LIBO_ETC_FOLDER=program
3794 LIBO_LIBEXEC_FOLDER=program
3795 LIBO_LIB_FOLDER=program
3796 LIBO_LIB_PYUNO_FOLDER=program
3797 LIBO_SHARE_FOLDER=share
3798 LIBO_SHARE_HELP_FOLDER=help
3799 LIBO_SHARE_JAVA_FOLDER=program/classes
3800 LIBO_SHARE_PRESETS_FOLDER=presets
3801 LIBO_SHARE_READMES_FOLDER=readmes
3802 if test "$enable_fuzzers" != yes; then
3803 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3805 LIBO_SHARE_RESOURCE_FOLDER=resource
3807 LIBO_SHARE_SHELL_FOLDER=program/shell
3808 LIBO_URE_BIN_FOLDER=program
3809 LIBO_URE_ETC_FOLDER=program
3810 LIBO_URE_LIB_FOLDER=program
3811 LIBO_URE_MISC_FOLDER=program
3812 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3814 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3815 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3816 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3817 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3818 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3819 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3820 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3821 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3822 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3823 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3824 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3825 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3826 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3827 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3828 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3829 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3831 # Not all of them needed in config_host.mk, add more if need arises
3832 AC_SUBST(LIBO_BIN_FOLDER)
3833 AC_SUBST(LIBO_ETC_FOLDER)
3834 AC_SUBST(LIBO_LIB_FOLDER)
3835 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3836 AC_SUBST(LIBO_SHARE_FOLDER)
3837 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3838 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3839 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3840 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3841 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3842 AC_SUBST(LIBO_URE_BIN_FOLDER)
3843 AC_SUBST(LIBO_URE_ETC_FOLDER)
3844 AC_SUBST(LIBO_URE_LIB_FOLDER)
3845 AC_SUBST(LIBO_URE_MISC_FOLDER)
3846 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3848 dnl ===================================================================
3849 dnl Windows specific tests and stuff
3850 dnl ===================================================================
3854 # Return value: $regvalue
3857 if test "$build_os" = "wsl"; then
3858 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3862 local _regentry="/proc/registry${1}/${2}"
3863 if test -f "$_regentry"; then
3864 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3865 # Registry keys read via /proc/registry* are always \0 terminated!
3866 local _regvalue=$(tr -d '\0' < "$_regentry")
3867 if test $? -eq 0; then
3873 # Get a value from the 32-bit side of the Registry
3876 reg_get_value "32" "$1"
3879 # Get a value from the 64-bit side of the Registry
3882 reg_get_value "64" "$1"
3887 # Return value: $reglist
3890 if test "$build_os" = "wsl"; then
3891 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3895 reglist=$(ls "/proc/registry${1}/${2}")
3898 # List values from the 32-bit side of the Registry
3899 reg_list_values_32()
3901 reg_list_values "32" "$1"
3904 # List values from the 64-bit side of the Registry
3905 reg_list_values_64()
3907 reg_list_values "64" "$1"
3915 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3924 PLATFORMID=windows_x86_64
3926 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3928 WIN_MULTI_ARCH="x86"
3934 PLATFORMID=windows_x86
3937 WIN_OTHER_ARCH="x64"
3942 PLATFORMID=windows_aarch64
3944 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3945 WIN_HOST_ARCH="arm64"
3950 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3954 case "$build_cpu" in
3955 x86_64) WIN_BUILD_ARCH="x64" ;;
3956 i*86) WIN_BUILD_ARCH="x86" ;;
3957 aarch64) WIN_BUILD_ARCH="arm64" ;;
3959 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3963 SCPDEFS="$SCPDEFS -D_MSC_VER"
3967 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3968 # other-arch won't, but wouldn't break the build (x64 on x86).
3969 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3970 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3974 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3975 # To allow building Windows multi-arch releases without cross-tooling
3976 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3977 cross_compiling="yes"
3981 if test "$cross_compiling" = "yes"; then
3982 export CROSS_COMPILING=TRUE
3983 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3984 ENABLE_WASM_STRIP=TRUE
3986 if test "$_os" = "Emscripten"; then
3987 if test "$with_main_module" = "calc"; then
3988 ENABLE_WASM_STRIP_WRITER=TRUE
3989 elif test "$with_main_module" = "writer"; then
3990 ENABLE_WASM_STRIP_CALC=TRUE
3995 BUILD_TYPE="$BUILD_TYPE NATIVE"
3997 AC_SUBST(CROSS_COMPILING)
3998 AC_SUBST(ENABLE_WASM_STRIP)
3999 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4000 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4002 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4003 # NOTE: must _not_ be used for bundled external libraries!
4005 if test "$GCC" = "yes"; then
4006 AC_MSG_CHECKING( for -isystem )
4008 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4009 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4011 if test -n "$ISYSTEM"; then
4017 if test -z "$ISYSTEM"; then
4018 # fall back to using -I
4023 dnl ===================================================================
4024 dnl Check which Visual Studio compiler is used
4025 dnl ===================================================================
4027 map_vs_year_to_version()
4029 # Return value: $vsversion
4041 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4045 vs_versions_to_check()
4047 # Args: $1 (optional) : versions to check, in the order of preference
4048 # Return value: $vsversions
4052 if test -n "$1"; then
4053 map_vs_year_to_version "$1"
4054 vsversions=$vsversion
4056 # Default version is 2019
4061 win_get_env_from_vsvars32bat()
4063 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4064 # Also seems to be located in another directory under the same name: vsvars32.bat
4065 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4066 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4067 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4068 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4070 if test "$build_os" = "wsl"; then
4071 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4073 chmod +x $WRAPPERBATCHFILEPATH
4074 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4076 rm -f $WRAPPERBATCHFILEPATH
4077 printf '%s' "$result"
4082 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4083 if test -n "$regvalue"; then
4084 PathFormat "$regvalue"
4085 UCRTSDKDIR=$formatted_path_unix
4086 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4087 UCRTVERSION=$regvalue
4089 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4093 if test -z "$UCRTSDKDIR"; then
4094 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4095 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4096 if test -f "$ide_env_file"; then
4097 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4098 UCRTSDKDIR=$formatted_path
4099 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4100 dnl Hack needed at least by tml:
4101 if test "$UCRTVERSION" = 10.0.15063.0 \
4102 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4103 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4105 UCRTVERSION=10.0.14393.0
4108 AC_MSG_ERROR([No UCRT found])
4116 # Args: $1 (optional) : The VS version year
4117 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4119 unset vctest vctoolset vcnumwithdot vcbuildnumber
4121 vs_versions_to_check "$1"
4122 if test "$build_os" = wsl; then
4123 vswhere="$PROGRAMFILESX86"
4124 if test -z "$vswhere"; then
4125 vswhere="c:\\Program Files (x86)"
4128 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4130 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4131 PathFormat "$vswhere"
4132 vswhere=$formatted_path_unix
4133 for ver in $vsversions; do
4134 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4135 if test -z "$vswhereoutput"; then
4136 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4138 # Fall back to all MS products (this includes VC++ Build Tools)
4139 if ! test -n "$vswhereoutput"; then
4140 AC_MSG_CHECKING([VC++ Build Tools and similar])
4141 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4143 if test -n "$vswhereoutput"; then
4144 PathFormat "$vswhereoutput"
4145 vctest=$formatted_path_unix
4150 if test -n "$vctest"; then
4152 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4153 vcnumwithdot=$vcnumwithdot.0
4155 case "$vcnumwithdot" in
4165 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4172 AC_MSG_CHECKING([$1 compiler])
4174 CL_EXE_PATH="$2/cl.exe"
4176 if test ! -f "$CL_EXE_PATH"; then
4177 if test "$1" = "multi-arch"; then
4178 AC_MSG_WARN([no compiler (cl.exe) in $2])
4181 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4185 dnl ===========================================================
4186 dnl Check for the corresponding mspdb*.dll
4187 dnl ===========================================================
4189 # MSVC 15.0 has libraries from 14.0?
4192 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4193 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4196 # The compiles has to find its shared libraries
4198 TEMP_PATH=`cygpath -d "$2"`
4199 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4201 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4202 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4207 AC_MSG_RESULT([$CL_EXE_PATH])
4213 if test "$_os" = "WINNT"; then
4214 AC_MSG_CHECKING([Visual C++])
4215 find_msvc "$with_visual_studio"
4216 if test -z "$vctest"; then
4217 if test -n "$with_visual_studio"; then
4218 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4220 AC_MSG_ERROR([no Visual Studio installation found])
4225 VC_PRODUCT_DIR="$vctest/VC"
4226 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4228 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4229 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4230 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4231 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4232 if test $? -ne 0; then
4238 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4239 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4240 test_cl_exe "build" "$MSVC_BUILD_PATH"
4243 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4244 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4245 test_cl_exe "host" "$MSVC_HOST_PATH"
4247 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4250 AC_MSG_CHECKING([for short pathname of VC product directory])
4251 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4252 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4257 AC_MSG_CHECKING([for UCRT location])
4259 # find_ucrt errors out if it doesn't find it
4260 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4261 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4262 ucrtincpath_formatted=$formatted_path
4263 # SOLARINC is used for external modules and must be set too.
4264 # And no, it's not sufficient to set SOLARINC only, as configure
4265 # itself doesn't honour it.
4266 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4267 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4268 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4269 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4271 AC_SUBST(UCRTSDKDIR)
4272 AC_SUBST(UCRTVERSION)
4274 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4275 # Find the proper version of MSBuild.exe to use based on the VS version
4276 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4277 if test -z "$regvalue" ; then
4278 if test "$WIN_BUILD_ARCH" != "x64"; then
4279 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4281 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4284 if test -d "$regvalue" ; then
4285 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4286 AC_MSG_RESULT([$regvalue])
4288 AC_MSG_ERROR([MSBuild.exe location not found])
4291 # Find the version of devenv.exe
4292 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4293 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4294 DEVENV_unix=$(cygpath -u "$DEVENV")
4295 if test ! -e "$DEVENV_unix"; then
4296 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4299 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4300 dnl needed when building CLR code:
4301 if test -z "$MSVC_CXX"; then
4302 # This gives us a posix path with 8.3 filename restrictions
4303 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4306 if test -z "$CC"; then
4308 CC_BASE=`first_arg_basename "$CC"`
4310 if test -z "$CXX"; then
4312 CXX_BASE=`first_arg_basename "$CXX"`
4315 if test -n "$CC"; then
4316 # Remove /cl.exe from CC case insensitive
4317 AC_MSG_NOTICE([found Visual C++ $vcyear])
4319 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4320 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4322 PathFormat "$COMPATH"
4323 COMPATH=`win_short_path_for_make "$formatted_path"`
4326 VCTOOLSET=$vctoolset
4328 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4329 # are always "better", we list them in reverse chronological order.
4331 case "$vcnumwithdot" in
4333 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4337 # The expectation is that --with-windows-sdk should not need to be used
4338 if test -n "$with_windows_sdk"; then
4339 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4340 *" "$with_windows_sdk" "*)
4341 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4344 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4349 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4354 AC_MSG_ERROR([Visual C++ not found after all, huh])
4357 # ERROR if VS version < 16.5
4358 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4359 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4360 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4361 // between Visual Studio versions and _MSC_VER:
4365 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4367 # WARN if VS version < 16.10
4368 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4369 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4373 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4375 if test $vs2019_recommended_version = yes; then
4376 AC_MSG_RESULT([yes])
4379 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."
4382 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4383 # version of the Explorer extension (and maybe other small
4384 # bits, too) needed when installing a 32-bit LibreOffice on a
4385 # 64-bit OS. The 64-bit Explorer extension is a feature that
4386 # has been present since long in OOo. Don't confuse it with
4387 # building LibreOffice itself as 64-bit code.
4392 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4393 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4394 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4395 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4398 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4399 AC_MSG_RESULT([found])
4401 AC_MSG_RESULT([not found])
4402 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4404 elif test "$WIN_HOST_ARCH" = "x64"; then
4409 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4410 AC_SUBST(CXX_X64_BINARY)
4412 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4413 # needed to support TWAIN scan on both 32- and 64-bit systems
4415 case "$WIN_HOST_ARCH" in
4417 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4418 if test -n "$CXX_X86_BINARY"; then
4420 AC_MSG_RESULT([preset])
4421 elif test -n "$WIN_MULTI_ARCH"; then
4423 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4424 AC_MSG_RESULT([found])
4426 AC_MSG_RESULT([not found])
4427 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4432 CXX_X86_BINARY=$MSVC_CXX
4436 AC_SUBST(CXX_X86_BINARY)
4444 AC_MSG_CHECKING([whether the compiler is actually Clang])
4445 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4451 [AC_MSG_RESULT([yes])
4453 [AC_MSG_RESULT([no])])
4454 AC_SUBST(COM_IS_CLANG)
4457 if test "$COM_IS_CLANG" = TRUE; then
4458 AC_MSG_CHECKING([whether Clang is new enough])
4459 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4460 #if !defined __apple_build_version__
4464 [my_apple_clang=yes],[my_apple_clang=])
4465 if test "$my_apple_clang" = yes; then
4466 AC_MSG_RESULT([assumed yes (Apple Clang)])
4467 elif test "$_os" = Emscripten; then
4468 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4470 if test "$_os" = WINNT; then
4471 dnl In which case, assume clang-cl:
4476 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4477 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4478 CLANGVER=`echo $clang_version \
4479 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4480 if test "$CLANGVER" -ge 80001; then
4481 AC_MSG_RESULT([yes ($clang_version)])
4483 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4485 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4486 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4490 SHOWINCLUDES_PREFIX=
4491 if test "$_os" = WINNT; then
4492 dnl We need to guess the prefix of the -showIncludes output, it can be
4494 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4495 echo "#include <stdlib.h>" > conftest.c
4496 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4497 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4498 rm -f conftest.c conftest.obj
4499 if test -z "$SHOWINCLUDES_PREFIX"; then
4500 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4502 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4505 AC_SUBST(SHOWINCLUDES_PREFIX)
4508 # prefix C with ccache if needed
4510 if test "$CCACHE" != ""; then
4511 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4515 CFLAGS="$CFLAGS --ccache-skip -O2"
4516 # msvc does not fail on unknown options, check stdout
4517 if test "$COM" = MSC; then
4518 CFLAGS="$CFLAGS -nologo"
4520 save_ac_c_werror_flag=$ac_c_werror_flag
4521 ac_c_werror_flag=yes
4522 dnl an empty program will do, we're checking the compiler flags
4523 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4524 [use_ccache=yes], [use_ccache=no])
4526 ac_c_werror_flag=$save_ac_c_werror_flag
4527 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4528 AC_MSG_RESULT([yes])
4531 CC_BASE="ccache $CC_BASE"
4537 # ===================================================================
4538 # check various GCC options that Clang does not support now but maybe
4539 # will somewhen in the future, check them even for GCC, so that the
4541 # ===================================================================
4544 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4545 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4547 CFLAGS="$CFLAGS -Werror -ggdb2"
4548 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4550 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4551 AC_MSG_RESULT([yes])
4556 if test "$host_cpu" = "m68k"; then
4557 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4559 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4560 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4562 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4563 AC_MSG_RESULT([yes])
4569 AC_SUBST(HAVE_GCC_GGDB2)
4571 dnl ===================================================================
4572 dnl Test the gcc version
4573 dnl ===================================================================
4574 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4575 AC_MSG_CHECKING([the GCC version])
4576 _gcc_version=`$CC -dumpfullversion`
4577 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4578 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4579 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4581 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4583 if test "$gcc_full_version" -lt 70000; then
4584 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4587 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4588 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4589 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4590 # (which reports itself as GCC 4.2.1).
4593 AC_SUBST(GCC_VERSION)
4595 dnl Set the ENABLE_DBGUTIL variable
4596 dnl ===================================================================
4597 AC_MSG_CHECKING([whether to build with additional debug utilities])
4598 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4599 ENABLE_DBGUTIL="TRUE"
4600 # this is an extra var so it can have different default on different MSVC
4601 # versions (in case there are version specific problems with it)
4602 MSVC_USE_DEBUG_RUNTIME="TRUE"
4604 AC_MSG_RESULT([yes])
4605 # cppunit and graphite expose STL in public headers
4606 if test "$with_system_cppunit" = "yes"; then
4607 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4609 with_system_cppunit=no
4611 if test "$with_system_graphite" = "yes"; then
4612 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4614 with_system_graphite=no
4616 if test "$with_system_orcus" = "yes"; then
4617 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4619 with_system_orcus=no
4621 if test "$with_system_libcmis" = "yes"; then
4622 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4624 with_system_libcmis=no
4626 if test "$with_system_hunspell" = "yes"; then
4627 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4629 with_system_hunspell=no
4631 if test "$with_system_gpgmepp" = "yes"; then
4632 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4634 with_system_gpgmepp=no
4636 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4637 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4638 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4639 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4640 # of those two is using the system variant:
4641 if test "$with_system_libnumbertext" = "yes"; then
4642 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4644 with_system_libnumbertext=no
4646 if test "$with_system_libwps" = "yes"; then
4647 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4649 with_system_libwps=no
4653 MSVC_USE_DEBUG_RUNTIME=""
4656 AC_SUBST(ENABLE_DBGUTIL)
4657 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4659 dnl Set the ENABLE_DEBUG variable.
4660 dnl ===================================================================
4661 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4662 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4664 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4665 if test -z "$libo_fuzzed_enable_debug"; then
4666 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4668 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4673 AC_MSG_CHECKING([whether to do a debug build])
4674 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4676 if test -n "$ENABLE_DBGUTIL" ; then
4677 AC_MSG_RESULT([yes (dbgutil)])
4679 AC_MSG_RESULT([yes])
4685 AC_SUBST(ENABLE_DEBUG)
4687 dnl ===================================================================
4688 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4689 dnl This is done only after compiler checks (need to know if Clang is
4690 dnl used, for different defaults) and after checking if a debug build
4691 dnl is wanted (non-debug builds get the default linker if not explicitly
4692 dnl specified otherwise).
4693 dnl All checks for linker features/options should come after this.
4694 dnl ===================================================================
4697 use_ld=-fuse-ld=${1%%:*}
4699 if test "$use_ld_path" != "$1"; then
4700 if test "$COM_IS_CLANG" = TRUE; then
4701 if test "$CLANGVER" -ge 120000; then
4702 use_ld="${use_ld} --ld-path=${use_ld_path}"
4704 use_ld="-fuse-ld=${use_ld_path}"
4707 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4708 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4709 # pickup the alternative linker, when called by libtool for linking.
4710 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4711 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4714 use_ld_fail_if_error=$2
4716 AC_MSG_CHECKING([for $use_ld linker support])
4717 use_ld_ldflags_save="$LDFLAGS"
4718 LDFLAGS="$LDFLAGS $use_ld"
4719 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4722 printf ("hello world\n");
4723 ])], USE_LD=$use_ld, [])
4724 if test -n "$USE_LD"; then
4725 AC_MSG_RESULT( yes )
4728 if test -n "$use_ld_fail_if_error"; then
4734 if test -n "$use_ld_ok"; then
4735 dnl keep the value of LDFLAGS
4738 LDFLAGS="$use_ld_ldflags_save"
4742 if test "$enable_ld" != "no"; then
4743 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4744 if test -n "$enable_ld"; then
4745 check_use_ld "$enable_ld" fail_if_error
4746 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4747 dnl non-debug builds default to the default linker
4749 elif test -n "$COM_IS_CLANG"; then
4751 if test $? -ne 0; then
4753 if test $? -ne 0; then
4758 # For gcc first try gold, new versions also support lld/mold.
4760 if test $? -ne 0; then
4762 if test $? -ne 0; then
4767 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4769 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4770 if test -z "$ld_used"; then
4773 AC_MSG_CHECKING([for linker that is used])
4774 AC_MSG_RESULT([$ld_used])
4775 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4776 if echo "$ld_used" | grep -q "^GNU ld"; then
4777 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4778 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4782 if test "$enable_ld" = "yes"; then
4783 AC_MSG_ERROR([--enable-ld not supported])
4790 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4791 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4792 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4793 bsymbolic_functions_ldflags_save=$LDFLAGS
4794 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4795 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4798 printf ("hello world\n");
4799 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4800 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4801 AC_MSG_RESULT( found )
4803 AC_MSG_RESULT( not found )
4805 LDFLAGS=$bsymbolic_functions_ldflags_save
4807 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4810 if test "$GCC" = "yes"; then
4811 for flag in "--gc-sections" "-dead_strip"; do
4812 AC_MSG_CHECKING([for $flag linker support])
4813 ldflags_save=$LDFLAGS
4814 LDFLAGS="$LDFLAGS -Wl,$flag"
4815 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4818 printf ("hello world\n");
4820 LD_GC_SECTIONS="-Wl,$flag"
4821 AC_MSG_RESULT( found )
4823 AC_MSG_RESULT( not found )
4825 LDFLAGS=$ldflags_save
4826 if test -n "$LD_GC_SECTIONS"; then
4831 AC_SUBST(LD_GC_SECTIONS)
4833 HAVE_EXTERNAL_DWARF=
4834 if test "$enable_split_debug" != no; then
4836 if test -n "$ENABLE_LTO"; then
4837 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4838 elif test "$enable_split_debug" = yes; then
4840 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4841 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4844 if test -n "$use_split_debug"; then
4845 if test "$_os" = "Emscripten"; then
4846 TEST_CC_FLAG=-gseparate-dwarf
4848 TEST_CC_FLAG=-gsplit-dwarf
4850 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4852 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4853 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4855 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4856 AC_MSG_RESULT([yes])
4858 if test "$enable_split_debug" = yes; then
4865 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4866 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4867 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4870 AC_SUBST(HAVE_EXTERNAL_DWARF)
4872 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4873 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4875 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4876 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4878 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4879 AC_MSG_RESULT([yes])
4883 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4886 if test "$enable_gdb_index" != "no"; then
4887 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4888 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4889 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4891 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4893 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4894 if test "$have_ggnu_pubnames" != "TRUE"; then
4895 if test "$enable_gdb_index" = "yes"; then
4896 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4901 AC_MSG_RESULT( yes )
4902 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4903 ldflags_save=$LDFLAGS
4904 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4905 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4908 printf ("hello world\n");
4909 ])], ENABLE_GDB_INDEX=TRUE, [])
4910 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4911 AC_MSG_RESULT( yes )
4913 if test "$enable_gdb_index" = "yes"; then
4919 LDFLAGS=$ldflags_save
4923 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4924 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4925 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4928 AC_SUBST(ENABLE_GDB_INDEX)
4930 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4933 if test "$enable_sal_log" = yes; then
4936 AC_SUBST(ENABLE_SAL_LOG)
4938 dnl Check for enable symbols option
4939 dnl ===================================================================
4940 AC_MSG_CHECKING([whether to generate debug information])
4941 if test -z "$enable_symbols"; then
4942 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4948 if test "$enable_symbols" = yes; then
4949 ENABLE_SYMBOLS_FOR=all
4950 AC_MSG_RESULT([yes])
4951 elif test "$enable_symbols" = no; then
4955 # Selective debuginfo.
4956 ENABLE_SYMBOLS_FOR="$enable_symbols"
4957 AC_MSG_RESULT([for "$enable_symbols"])
4959 AC_SUBST(ENABLE_SYMBOLS_FOR)
4960 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4961 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4962 AC_MSG_CHECKING([whether enough memory is available for linking])
4963 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4964 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4965 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4966 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4968 AC_MSG_RESULT([yes])
4973 ENABLE_OPTIMIZED_DEBUG=
4974 AC_MSG_CHECKING([whether to compile with optimization flags])
4975 if test -z "$enable_optimized"; then
4976 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4979 enable_optimized=yes
4982 if test "$enable_optimized" = yes; then
4983 ENABLE_OPTIMIZED=TRUE
4984 AC_MSG_RESULT([yes])
4985 elif test "$enable_optimized" = debug; then
4986 ENABLE_OPTIMIZED_DEBUG=TRUE
4987 AC_MSG_RESULT([yes (debug)])
4989 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4990 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4992 CFLAGS="$CFLAGS -Werror -Og"
4993 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4995 if test "$HAVE_GCC_OG" = "TRUE"; then
4996 AC_MSG_RESULT([yes])
5001 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5002 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5007 AC_SUBST(ENABLE_OPTIMIZED)
5008 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5011 # determine CPUNAME, OS, ...
5021 PLATFORMID=aix_powerpc
5037 if test "$enable_ios_simulator" = "yes"; then
5042 PLATFORMID=macosx_aarch64
5046 if test "$enable_ios_simulator" = "yes"; then
5051 PLATFORMID=macosx_x86_64
5054 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5067 if test "$enable_ios_simulator" = "yes"; then
5068 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5072 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5077 PLATFORMID=ios_arm64
5090 PLATFORMID=dragonfly_x86
5095 PLATFORMID=dragonfly_x86_64
5098 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5112 PLATFORMID=freebsd_aarch64
5118 PLATFORMID=freebsd_x86
5123 PLATFORMID=freebsd_x86_64
5128 PLATFORMID=freebsd_powerpc64
5133 PLATFORMID=freebsd_powerpc
5136 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5152 PLATFORMID=haiku_x86
5157 PLATFORMID=haiku_x86_64
5160 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5176 PLATFORMID=kfreebsd_x86
5181 PLATFORMID=kfreebsd_x86_64
5184 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5189 linux-gnu*|linux-musl*)
5199 PLATFORMID=linux_aarch64
5201 EPM_FLAGS="-a arm64"
5206 PLATFORMID=linux_alpha
5212 PLATFORMID=linux_arm_eabi
5216 PLATFORMID=linux_arm_oabi
5224 PLATFORMID=linux_hppa
5229 PLATFORMID=linux_x86
5234 PLATFORMID=linux_ia64
5240 PLATFORMID=linux_mips_eb
5245 EPM_FLAGS="-a mips64"
5246 PLATFORMID=linux_mips64_eb
5251 EPM_FLAGS="-a mips64el"
5252 PLATFORMID=linux_mips64_el
5257 EPM_FLAGS="-a mipsel"
5258 PLATFORMID=linux_mips_el
5263 EPM_FLAGS="-a riscv64"
5264 PLATFORMID=linux_riscv64
5269 PLATFORMID=linux_m68k
5274 PLATFORMID=linux_powerpc
5279 PLATFORMID=linux_powerpc64
5283 RTL_ARCH=PowerPC_64_LE
5284 PLATFORMID=linux_powerpc64_le
5289 PLATFORMID=linux_sparc
5294 PLATFORMID=linux_sparc64
5299 PLATFORMID=linux_s390
5304 PLATFORMID=linux_s390x
5309 PLATFORMID=linux_x86_64
5313 RTL_ARCH=LOONGARCH64
5314 PLATFORMID=linux_loongarch64
5317 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5333 PLATFORMID=android_arm_eabi
5338 PLATFORMID=android_aarch64
5343 PLATFORMID=android_x86
5348 PLATFORMID=android_x86_64
5351 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5366 PLATFORMID=netbsd_x86
5371 PLATFORMID=netbsd_powerpc
5376 PLATFORMID=netbsd_sparc
5381 PLATFORMID=netbsd_x86_64
5384 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5399 PLATFORMID=openbsd_x86
5404 PLATFORMID=openbsd_x86_64
5407 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5410 SOLARINC="$SOLARINC -I/usr/local/include"
5423 PLATFORMID=solaris_x86
5428 PLATFORMID=solaris_sparc
5433 PLATFORMID=solaris_sparc64
5436 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5439 SOLARINC="$SOLARINC -I/usr/local/include"
5452 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5457 PLATFORMID=linux_x86
5461 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5466 if test "$enable_gui" = "no"; then
5467 if test "$using_x11" != yes; then
5468 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5474 AC_DEFINE(HAVE_FEATURE_UI)
5476 AC_SUBST(DISABLE_GUI)
5478 if test "$with_x" = "no"; then
5482 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5483 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5486 if test "$using_x11" = yes; then
5487 if test "$USING_X11" = TRUE; then
5488 AC_DEFINE(USING_X11)
5491 if test "$DISABLE_DYNLOADING" = TRUE; then
5496 if test "$USING_X11" = TRUE; then
5497 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5501 WORKDIR="${BUILDDIR}/workdir"
5502 INSTDIR="${BUILDDIR}/instdir"
5503 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5504 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5512 AC_SUBST([INSTROOT])
5513 AC_SUBST([INSTROOTBASE])
5517 AC_SUBST(PLATFORMID)
5518 AC_SUBST(WINDOWS_X64)
5519 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5520 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5522 if test "$OS" = WNT -a "$COM" = MSC; then
5524 INTEL) CPPU_ENV=msci ;;
5525 X86_64) CPPU_ENV=mscx ;;
5526 AARCH64) CPPU_ENV=msca ;;
5528 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5536 dnl ===================================================================
5537 dnl Test which package format to use
5538 dnl ===================================================================
5539 AC_MSG_CHECKING([which package format to use])
5540 if test -n "$with_package_format" -a "$with_package_format" != no; then
5541 for i in $with_package_format; do
5543 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5546 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5547 aix - AIX software distribution
5548 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5549 deb - Debian software distribution
5550 pkg - Solaris software distribution
5551 rpm - RedHat software distribution
5553 LibreOffice additionally supports:
5554 archive - .tar.gz or .zip
5556 installed - installation tree
5562 # fakeroot is needed to ensure correct file ownerships/permissions
5563 # inside deb packages and tar archives created on Linux and Solaris.
5564 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5565 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5566 if test "$FAKEROOT" = "no"; then
5568 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5571 PKGFORMAT="$with_package_format"
5572 AC_MSG_RESULT([$PKGFORMAT])
5575 AC_MSG_RESULT([none])
5579 dnl ===================================================================
5580 dnl handle help related options
5582 dnl If you change help related options, please update README.help
5583 dnl ===================================================================
5590 AC_MSG_CHECKING([which help to build])
5591 if test -n "$with_help" -a "$with_help" != "no"; then
5592 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5593 BUILD_TYPE="$BUILD_TYPE HELP"
5594 case "$with_help" in
5596 ENABLE_HTMLHELP=TRUE
5598 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5599 AC_MSG_RESULT([HTML (local)])
5602 ENABLE_HTMLHELP=TRUE
5604 AC_MSG_RESULT([HTML (online)])
5608 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5609 AC_MSG_RESULT([XML (local)])
5612 AC_MSG_ERROR([Unknown --with-help=$with_help])
5619 AC_MSG_CHECKING([if we need to build the help index tooling])
5620 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5621 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5623 AC_MSG_RESULT([yes])
5628 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5629 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5630 if test "$HELP_ONLINE" != TRUE; then
5631 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5633 case "$with_omindex" in
5635 HELP_OMINDEX_PAGE=TRUE
5636 AC_MSG_RESULT([SERVER])
5639 AC_MSG_RESULT([NOXAP])
5642 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5649 AC_MSG_CHECKING([whether to include the XML-help support])
5650 if test "$enable_xmlhelp" = yes; then
5651 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5653 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5654 AC_MSG_RESULT([yes])
5656 if test "$with_help" = yes; then
5657 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5662 dnl Test whether to integrate helppacks into the product's installer
5663 AC_MSG_CHECKING([for helppack integration])
5664 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5665 AC_MSG_RESULT([no integration])
5667 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5668 AC_MSG_RESULT([integration])
5671 AC_SUBST([ENABLE_HTMLHELP])
5672 AC_SUBST([HELP_OMINDEX_PAGE])
5673 AC_SUBST([HELP_ONLINE])
5674 # WITH_HELPPACKS is used only in configure
5676 dnl ===================================================================
5677 dnl Set up a different compiler to produce tools to run on the build
5678 dnl machine when doing cross-compilation
5679 dnl ===================================================================
5681 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5682 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5683 if test "$cross_compiling" = "yes"; then
5684 AC_MSG_CHECKING([for BUILD platform configuration])
5686 rm -rf CONF-FOR-BUILD config_build.mk
5687 mkdir CONF-FOR-BUILD
5688 # Here must be listed all files needed when running the configure script. In particular, also
5689 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5690 # keep them in the same order as there.
5691 (cd $SRC_ROOT && tar cf - \
5693 bin/get_config_variables \
5694 solenv/bin/getcompver.awk \
5695 solenv/inc/langlist.mk \
5698 config_host_lang.mk.in \
5701 bin/bffvalidator.sh.in \
5702 bin/odfvalidator.sh.in \
5703 bin/officeotron.sh.in \
5704 hardened_runtime.xcent.in \
5705 instsetoo_native/util/openoffice.lst.in \
5707 sysui/desktop/macosx/Info.plist.in \
5708 .vscode/vs-code-template.code-workspace.in \
5709 solenv/lockfile/autoconf.h.in \
5711 | (cd CONF-FOR-BUILD && tar xf -)
5712 cp configure CONF-FOR-BUILD
5713 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5715 unset COM USING_X11 OS CPUNAME
5716 unset CC CXX SYSBASE CFLAGS
5717 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5718 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5719 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5720 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5721 if test -n "$CC_FOR_BUILD"; then
5722 export CC="$CC_FOR_BUILD"
5723 CC_BASE=`first_arg_basename "$CC"`
5725 if test -n "$CXX_FOR_BUILD"; then
5726 export CXX="$CXX_FOR_BUILD"
5727 CXX_BASE=`first_arg_basename "$CXX"`
5729 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5732 # Handle host configuration, which affects the cross-toolset too
5734 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5735 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5736 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5737 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5738 if test -n "$ENABLE_JAVA"; then
5741 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5742 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5745 if test -z "$with_jdk_home"; then
5746 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.])
5751 sub_conf_opts="$sub_conf_opts --without-java"
5753 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5754 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5755 test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5756 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5757 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5758 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5759 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5760 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5761 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5762 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5763 if test "$_os" = "Emscripten"; then
5764 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5765 if test "${with_main_module+set}" = set; then
5766 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5768 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5772 # Don't bother having configure look for stuff not needed for the build platform anyway
5773 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5774 sub_conf_defaults=" \
5775 --build="$build_alias" \
5776 --disable-cairo-canvas \
5778 --disable-customtarget-components \
5779 --disable-firebird-sdbc \
5781 --disable-gstreamer-1-0 \
5785 --disable-mariadb-sdbc \
5787 --disable-online-update \
5789 --disable-pdfimport \
5790 --disable-postgresql-sdbc \
5793 --enable-dynamic-loading \
5794 --enable-icecream="$enable_icecream" \
5798 --with-tls=openssl \
5800 # single quotes added for better readability in case of spaces
5801 echo " Running CONF-FOR-BUILD/configure" \
5802 $sub_conf_defaults \
5803 --with-parallelism="'$with_parallelism'" \
5804 --with-theme="'$with_theme'" \
5805 --with-vendor="'$with_vendor'" \
5807 $with_build_platform_configure_options \
5811 $sub_conf_defaults \
5812 --with-parallelism="$with_parallelism" \
5813 --with-theme="$with_theme" \
5814 "--with-vendor=$with_vendor" \
5816 $with_build_platform_configure_options \
5818 2>&1 | sed -e 's/^/ /'
5819 if test [${PIPESTATUS[0]}] -ne 0; then
5820 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5823 # filter permitted build targets
5824 PERMITTED_BUILD_TARGETS="
5859 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5860 # newlined lists, to use grep as a filter
5861 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5862 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5863 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5864 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5866 cp config_host.mk ../config_build.mk
5867 cp config_host_lang.mk ../config_build_lang.mk
5868 mv config.log ../config.Build.log
5869 mkdir -p ../config_build
5870 mv config_host/*.h ../config_build
5871 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5873 # all these will get a _FOR_BUILD postfix
5874 DIRECT_FOR_BUILD_SETTINGS="
5882 JDK_SECURITYMANAGER_DISALLOWED
5886 LIBO_URE_MISC_FOLDER
5892 # these overwrite host config with build config
5893 OVERWRITING_SETTINGS="
5897 JAVA_CLASSPATH_NOT_SET
5909 # these need some special handling
5910 EXTRA_HANDLED_SETTINGS="
5917 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5921 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5922 echo "$line" >>build-config
5924 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5926 VV=`eval "echo $VV"`
5927 if test -n "$VV"; then
5928 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5929 echo "$line" >>build-config
5933 for V in $OVERWRITING_SETTINGS; do
5935 VV=`eval "echo $VV"`
5936 if test -n "$VV"; then
5937 line=${V}='${'${V}:-$VV'}'
5938 echo "$line" >>build-config
5942 for V in INSTDIR INSTROOT WORKDIR; do
5944 VV=`eval "echo $VV"`
5945 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5946 if test -n "$VV"; then
5947 line="${V}_FOR_BUILD='$VV'"
5948 echo "$line" >>build-config
5953 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5954 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])
5955 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5956 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5958 eval `cat CONF-FOR-BUILD/build-config`
5960 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5962 rm -rf CONF-FOR-BUILD
5966 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5967 CXX_FOR_BUILD="$CXX"
5968 INSTDIR_FOR_BUILD="$INSTDIR"
5969 INSTROOT_FOR_BUILD="$INSTROOT"
5970 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5971 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5972 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5973 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5974 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5975 WORKDIR_FOR_BUILD="$WORKDIR"
5977 AC_SUBST(OS_FOR_BUILD)
5978 AC_SUBST(INSTDIR_FOR_BUILD)
5979 AC_SUBST(INSTROOT_FOR_BUILD)
5980 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5981 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5982 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5983 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5984 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5985 AC_SUBST(WORKDIR_FOR_BUILD)
5986 AC_SUBST(CC_FOR_BUILD)
5987 AC_SUBST(CXX_FOR_BUILD)
5988 AC_SUBST(CPPU_ENV_FOR_BUILD)
5990 dnl ===================================================================
5991 dnl Check for lockfile deps
5992 dnl ===================================================================
5993 if test -z "$CROSS_COMPILING"; then
5994 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5995 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5996 AC_MSG_CHECKING([which lockfile binary to use])
5997 case "$with_system_lockfile" in
5999 AC_MSG_RESULT([external])
6000 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6003 AC_MSG_RESULT([internal])
6006 if test -x "$with_system_lockfile"; then
6007 LOCKFILE="$with_system_lockfile"
6009 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6011 AC_MSG_RESULT([$with_system_lockfile])
6016 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6017 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6020 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6021 AC_CHECK_FUNCS([utime utimes])
6024 dnl ===================================================================
6025 dnl Check for syslog header
6026 dnl ===================================================================
6027 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6029 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6030 dnl ===================================================================
6031 AC_MSG_CHECKING([whether to turn warnings to errors])
6032 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6033 ENABLE_WERROR="TRUE"
6034 PYTHONWARNINGS="error"
6035 AC_MSG_RESULT([yes])
6037 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6038 ENABLE_WERROR="TRUE"
6039 PYTHONWARNINGS="error"
6040 AC_MSG_RESULT([yes])
6045 AC_SUBST(ENABLE_WERROR)
6046 AC_SUBST(PYTHONWARNINGS)
6048 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6049 dnl ===================================================================
6050 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6051 if test -z "$enable_assert_always_abort"; then
6052 if test "$ENABLE_DEBUG" = TRUE; then
6053 enable_assert_always_abort=yes
6055 enable_assert_always_abort=no
6058 if test "$enable_assert_always_abort" = "yes"; then
6059 ASSERT_ALWAYS_ABORT="TRUE"
6060 AC_MSG_RESULT([yes])
6062 ASSERT_ALWAYS_ABORT="FALSE"
6065 AC_SUBST(ASSERT_ALWAYS_ABORT)
6067 # Determine whether to use ooenv for the instdir installation
6068 # ===================================================================
6069 if test $_os != "WINNT" -a $_os != "Darwin"; then
6070 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6071 if test -z "$enable_ooenv"; then
6072 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6078 if test "$enable_ooenv" = "no"; then
6082 AC_MSG_RESULT([yes])
6085 AC_SUBST(ENABLE_OOENV)
6087 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6088 if test "$enable_qt5" = "no"; then
6089 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6095 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6096 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6097 AC_MSG_RESULT([yes])
6099 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6103 AC_SUBST(ENABLE_PAGEIN)
6105 dnl ===================================================================
6106 dnl check for cups support
6107 dnl ===================================================================
6109 AC_MSG_CHECKING([whether to enable CUPS support])
6110 if test "$test_cups" = yes -a "$enable_cups" != no; then
6112 AC_MSG_RESULT([yes])
6114 AC_MSG_CHECKING([whether cups support is present])
6115 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6116 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6117 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6118 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6124 AC_SUBST(ENABLE_CUPS)
6126 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6128 dnl whether to find & fetch external tarballs?
6129 dnl ===================================================================
6130 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6131 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6132 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6134 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6137 if test -z "$TARFILE_LOCATION"; then
6138 if test -d "$SRC_ROOT/src" ; then
6139 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6140 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6142 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6144 AbsolutePath "$TARFILE_LOCATION"
6145 PathFormat "${absolute_path}"
6146 TARFILE_LOCATION="${formatted_path_unix}"
6148 AC_SUBST(TARFILE_LOCATION)
6150 AC_MSG_CHECKING([whether we want to fetch tarballs])
6151 if test "$enable_fetch_external" != "no"; then
6152 if test "$with_all_tarballs" = "yes"; then
6153 AC_MSG_RESULT([yes, all of them])
6154 DO_FETCH_TARBALLS="ALL"
6156 AC_MSG_RESULT([yes, if we use them])
6157 DO_FETCH_TARBALLS="TRUE"
6163 AC_SUBST(DO_FETCH_TARBALLS)
6165 dnl Test whether to include MySpell dictionaries
6166 dnl ===================================================================
6167 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6168 if test "$with_myspell_dicts" = "yes"; then
6169 AC_MSG_RESULT([yes])
6170 WITH_MYSPELL_DICTS=TRUE
6171 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6172 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6177 AC_SUBST(WITH_MYSPELL_DICTS)
6179 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6180 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6181 if test "$with_system_dicts" = yes; then
6182 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6184 with_system_dicts=no
6187 AC_MSG_CHECKING([whether to use dicts from external paths])
6188 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6189 AC_MSG_RESULT([yes])
6191 AC_MSG_CHECKING([for spelling dictionary directory])
6192 if test -n "$with_external_dict_dir"; then
6193 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6195 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6196 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6197 DICT_SYSTEM_DIR=file:///usr/share/myspell
6200 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6201 AC_MSG_CHECKING([for hyphenation patterns directory])
6202 if test -n "$with_external_hyph_dir"; then
6203 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6205 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6207 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6208 AC_MSG_CHECKING([for thesaurus directory])
6209 if test -n "$with_external_thes_dir"; then
6210 THES_SYSTEM_DIR=file://$with_external_thes_dir
6212 THES_SYSTEM_DIR=file:///usr/share/mythes
6214 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6219 AC_SUBST(SYSTEM_DICTS)
6220 AC_SUBST(DICT_SYSTEM_DIR)
6221 AC_SUBST(HYPH_SYSTEM_DIR)
6222 AC_SUBST(THES_SYSTEM_DIR)
6224 dnl ===================================================================
6225 dnl Precompiled headers.
6227 AC_MSG_CHECKING([whether to enable pch feature])
6228 if test -z "$enable_pch"; then
6229 if test "$_os" = "WINNT"; then
6230 # Enabled by default on Windows.
6232 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6233 if test -z "$enable_ccache" -a "$SCCACHE"; then
6240 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6241 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6243 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6244 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6246 if test "$enable_pch" = "system"; then
6248 AC_MSG_RESULT([yes (system headers)])
6249 elif test "$enable_pch" = "base"; then
6251 AC_MSG_RESULT([yes (system and base headers)])
6252 elif test "$enable_pch" = "normal"; then
6254 AC_MSG_RESULT([yes (normal)])
6255 elif test "$enable_pch" = "full"; then
6257 AC_MSG_RESULT([yes (full)])
6258 elif test "$enable_pch" = "yes"; then
6259 # Pick a suitable default.
6260 if test "$GCC" = "yes"; then
6261 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6262 # while making the PCHs larger and rebuilds more likely.
6264 AC_MSG_RESULT([yes (system and base headers)])
6266 # With MSVC the highest level makes a significant difference,
6267 # and it was the default when there used to be no PCH levels.
6269 AC_MSG_RESULT([yes (full)])
6271 elif test "$enable_pch" = "no"; then
6274 AC_MSG_ERROR([Unknown value for --enable-pch])
6276 AC_SUBST(ENABLE_PCH)
6277 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6278 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6279 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6280 if test "$CCACHE_BIN" != "not found"; then
6281 AC_MSG_CHECKING([ccache version])
6282 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6283 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6284 AC_MSG_RESULT([$CCACHE_VERSION])
6285 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6286 if test "$CCACHE_NUMVER" -gt "030701"; then
6287 AC_MSG_RESULT([yes])
6289 AC_MSG_RESULT([no (not newer than 3.7.1)])
6295 PCH_INSTANTIATE_TEMPLATES=
6296 if test -n "$ENABLE_PCH"; then
6297 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6299 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6300 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6302 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6308 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6310 BUILDING_PCH_WITH_OBJ=
6311 if test -n "$ENABLE_PCH"; then
6312 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6314 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6315 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6317 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6323 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6328 if test "$COM" = MSC; then
6329 fpch_prefix="-Xclang "
6331 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6332 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6334 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6335 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6336 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6338 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6339 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6340 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6342 if test -n "$PCH_CODEGEN"; then
6348 AC_SUBST(PCH_CODEGEN)
6349 AC_SUBST(PCH_NO_CODEGEN)
6351 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6352 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6354 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6355 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6357 if test -n "$PCH_DEBUGINFO"; then
6363 AC_SUBST(PCH_DEBUGINFO)
6367 AC_MSG_CHECKING([the GNU Make version])
6368 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6369 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6370 if test "$_make_longver" -ge "040000"; then
6371 AC_MSG_RESULT([$GNUMAKE $_make_version])
6373 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6376 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6378 if test "$_make_ver_check" = ""; then
6382 HAVE_LD_HASH_STYLE=FALSE
6383 WITH_LINKER_HASH_STYLE=
6384 AC_MSG_CHECKING([for --hash-style gcc linker support])
6385 if test "$GCC" = "yes"; then
6386 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6387 hash_styles="gnu sysv"
6388 elif test "$with_linker_hash_style" = "no"; then
6391 hash_styles="$with_linker_hash_style"
6394 for hash_style in $hash_styles; do
6395 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6396 hash_style_ldflags_save=$LDFLAGS
6397 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6399 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6406 HAVE_LD_HASH_STYLE=TRUE
6407 WITH_LINKER_HASH_STYLE=$hash_style
6409 [HAVE_LD_HASH_STYLE=FALSE],
6410 [HAVE_LD_HASH_STYLE=FALSE])
6411 LDFLAGS=$hash_style_ldflags_save
6414 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6415 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6419 LDFLAGS=$hash_style_ldflags_save
6423 AC_SUBST(HAVE_LD_HASH_STYLE)
6424 AC_SUBST(WITH_LINKER_HASH_STYLE)
6426 dnl ===================================================================
6427 dnl Check whether there's a Perl version available.
6428 dnl ===================================================================
6429 if test -z "$with_perl_home"; then
6430 AC_PATH_PROG(PERL, perl)
6432 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6433 _perl_path="$with_perl_home/bin/perl"
6434 if test -x "$_perl_path"; then
6437 AC_MSG_ERROR([$_perl_path not found])
6441 dnl ===================================================================
6442 dnl Testing for Perl version 5 or greater.
6443 dnl $] is the Perl version variable, it is returned as an integer
6444 dnl ===================================================================
6445 if test "$PERL"; then
6446 AC_MSG_CHECKING([the Perl version])
6447 ${PERL} -e "exit($]);"
6449 if test "$_perl_version" -lt 5; then
6450 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6452 AC_MSG_RESULT([Perl $_perl_version])
6454 AC_MSG_ERROR([Perl not found, install Perl 5])
6457 dnl ===================================================================
6458 dnl Testing for required Perl modules
6459 dnl ===================================================================
6461 AC_MSG_CHECKING([for required Perl modules])
6462 perl_use_string="use Cwd ; use Digest::MD5"
6463 if test "$_os" = "WINNT"; then
6464 if test -n "$PKGFORMAT"; then
6465 for i in $PKGFORMAT; do
6468 # for getting fonts versions to use in MSI
6469 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6475 if test "$with_system_hsqldb" = "yes"; then
6476 perl_use_string="$perl_use_string ; use Archive::Zip"
6478 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6479 # OpenSSL needs that to build
6480 perl_use_string="$perl_use_string ; use FindBin"
6482 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6483 AC_MSG_RESULT([all modules found])
6485 AC_MSG_RESULT([failed to find some modules])
6486 # Find out which modules are missing.
6487 for i in $perl_use_string; do
6488 if test "$i" != "use" -a "$i" != ";"; then
6489 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6490 missing_perl_modules="$missing_perl_modules $i"
6495 The missing Perl modules are: $missing_perl_modules
6496 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6499 dnl ===================================================================
6500 dnl Check for pkg-config
6501 dnl ===================================================================
6502 if test "$_os" != "WINNT"; then
6505 AC_SUBST(PKG_CONFIG)
6506 AC_SUBST(PKG_CONFIG_PATH)
6507 AC_SUBST(PKG_CONFIG_LIBDIR)
6509 if test "$_os" != "WINNT"; then
6511 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6512 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6513 # explicitly. Or put /path/to/compiler in PATH yourself.
6516 if test "$COM_IS_CLANG" = "TRUE"; then
6519 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6520 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6521 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6522 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6523 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6524 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6533 dnl ===================================================================
6534 dnl pkg-config checks on macOS
6535 dnl ===================================================================
6537 if test $_os = Darwin; then
6538 AC_MSG_CHECKING([for bogus pkg-config])
6539 if test -n "$PKG_CONFIG"; then
6540 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6541 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6543 if test "$enable_bogus_pkg_config" = "yes"; then
6544 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6546 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.])
6550 AC_MSG_RESULT([no, good])
6556 # Return value: $csctest
6560 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6561 if test -n "$regvalue"; then
6569 # Return value: $altest
6573 # We need this check to detect 4.6.1 or above.
6574 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6575 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6576 PathFormat "$regvalue"
6577 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6583 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6584 for x in $reglist; do
6585 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6586 PathFormat "$regvalue"
6587 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6598 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
6599 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6600 if test -n "$regvalue"; then
6607 find_winsdk_version()
6609 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6610 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6612 unset winsdktest winsdkbinsubdir winsdklibsubdir
6616 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6617 if test -n "$regvalue"; then
6618 winsdktest=$regvalue
6619 winsdklibsubdir=win8
6624 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6625 if test -n "$regvalue"; then
6626 winsdktest=$regvalue
6627 winsdklibsubdir=winv6.3
6632 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6633 if test -n "$regvalue"; then
6634 winsdktest=$regvalue
6635 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6636 if test -n "$regvalue"; then
6637 winsdkbinsubdir="$regvalue".0
6638 winsdklibsubdir=$winsdkbinsubdir
6639 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6640 local tmppath_unix=$(cygpath -u "$tmppath")
6641 # test exist the SDK path
6642 if test -d "$tmppath_unix"; then
6643 # when path is convertible to a short path then path is okay
6644 cygpath -d "$tmppath" >/dev/null 2>&1
6645 if test $? -ne 0; then
6646 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6649 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6660 # Return value: From find_winsdk_version
6664 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6665 find_winsdk_version $ver
6666 if test -n "$winsdktest"; then
6674 # Return value: $msmdir
6677 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6678 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6681 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6686 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6687 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6688 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6689 if test -e "$my_msm_dir${my_msm_file}"; then
6696 if test -n "$msmdir"; then
6697 msmdir=`cygpath -m "$msmdir"`
6698 AC_MSG_RESULT([$msmdir])
6700 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6701 AC_MSG_FAILURE([not found])
6703 AC_MSG_WARN([not found (check config.log)])
6704 add_warning "MSM ${my_msm_file} not found"
6709 find_msvc_x64_dlls()
6711 # Return value: $msvcdllpath, $msvcdlls
6713 AC_MSG_CHECKING([for MSVC x64 DLL path])
6715 dnl Order crtver in increasing order. Then check the directories returned by
6716 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6717 dnl the result will be the highest CRT version found in the highest directory.
6719 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6722 for crtver in 141 142 143; do
6723 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6724 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6725 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6726 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6732 AC_MSG_RESULT([$msvcdllpath])
6733 AC_MSG_CHECKING([for MSVC x64 DLLs])
6734 msvcdlls="msvcp140.dll vcruntime140.dll"
6735 for dll in $msvcdlls; do
6736 if ! test -f "$msvcdllpath/$dll"; then
6737 AC_MSG_FAILURE([missing $dll])
6740 AC_MSG_RESULT([found all ($msvcdlls)])
6743 dnl =========================================
6744 dnl Check for the Windows SDK.
6745 dnl =========================================
6746 if test "$_os" = "WINNT"; then
6747 AC_MSG_CHECKING([for Windows SDK])
6748 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6750 WINDOWS_SDK_HOME=$winsdktest
6752 # normalize if found
6753 if test -n "$WINDOWS_SDK_HOME"; then
6754 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6755 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6758 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6761 if test -n "$WINDOWS_SDK_HOME"; then
6762 # Remove a possible trailing backslash
6763 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6765 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6766 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6767 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6768 have_windows_sdk_headers=yes
6769 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6770 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6771 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6772 have_windows_sdk_headers=yes
6773 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6774 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6775 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6776 have_windows_sdk_headers=yes
6778 have_windows_sdk_headers=no
6781 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6782 have_windows_sdk_libs=yes
6783 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6784 have_windows_sdk_libs=yes
6786 have_windows_sdk_libs=no
6789 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6790 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6791 the Windows SDK are installed.])
6795 if test -z "$WINDOWS_SDK_HOME"; then
6796 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6797 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6798 WINDOWS_SDK_VERSION=80
6799 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6800 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6801 WINDOWS_SDK_VERSION=81
6802 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6803 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6804 WINDOWS_SDK_VERSION=10
6805 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6807 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6809 PathFormat "$WINDOWS_SDK_HOME"
6810 WINDOWS_SDK_HOME="$formatted_path"
6811 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6812 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6813 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6814 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6815 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6816 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6817 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6821 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6822 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6823 dnl but not in v8.0), so allow this to be overridden with a
6824 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6825 dnl and configuration error if no WiLangId.vbs is found would arguably be
6826 dnl better, but I do not know under which conditions exactly it is needed by
6828 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6829 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6830 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6831 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6832 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6833 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6835 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6836 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6837 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6839 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6840 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6841 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6844 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6845 if test -n "$with_package_format" -a "$with_package_format" != no; then
6846 for i in "$with_package_format"; do
6847 if test "$i" = "msi"; then
6848 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6849 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6856 AC_SUBST(WINDOWS_SDK_HOME)
6857 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6858 AC_SUBST(WINDOWS_SDK_VERSION)
6859 AC_SUBST(WINDOWS_SDK_WILANGID)
6861 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6862 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6863 dnl dir, it also determines that dir's path w/o an arch segment if any,
6864 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6865 AC_MSG_CHECKING([for midl.exe])
6868 PathFormat "$winsdktest"
6869 winsdktest_unix="$formatted_path_unix"
6871 if test -n "$winsdkbinsubdir" \
6872 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6874 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6875 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6876 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6877 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6878 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6879 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6880 MIDL_PATH=$winsdktest/Bin
6881 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6883 PathFormat "$MIDL_PATH"
6884 if test ! -f "$formatted_path_unix/midl.exe"; then
6885 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6887 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6890 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6891 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6893 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6894 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6895 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6896 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6897 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6898 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6899 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6900 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6901 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6902 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6903 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6904 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6906 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6910 AC_MSG_CHECKING([for csc.exe])
6912 PathFormat "$csctest"
6913 csctest_unix="$formatted_path_unix"
6914 if test -f "$csctest_unix/csc.exe"; then
6917 if test ! -f "$csctest_unix/csc.exe"; then
6918 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6920 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6923 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6926 AC_MSG_CHECKING([for al.exe])
6927 if test -n "$winsdkbinsubdir" \
6928 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6930 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6931 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6932 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6933 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6934 AL_PATH="$winsdktest/Bin"
6937 if test -z "$AL_PATH"; then
6939 PathFormat "$altest"
6940 altest_unix="$formatted_path_unix"
6941 if test -f "$altest_unix/bin/al.exe"; then
6942 AL_PATH="$altest/bin"
6943 elif test -f "$altest_unix/al.exe"; then
6947 PathFormat "$AL_PATH"
6948 if test ! -f "$formatted_path_unix/al.exe"; then
6949 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6951 AC_MSG_RESULT([$AL_PATH/al.exe])
6954 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6956 dnl Check mscoree.lib / .NET Framework dir
6957 AC_MSG_CHECKING(.NET Framework)
6959 PathFormat "$frametest"
6960 frametest="$formatted_path_unix"
6961 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6962 DOTNET_FRAMEWORK_HOME="$frametest"
6964 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6965 DOTNET_FRAMEWORK_HOME="$winsdktest"
6968 PathFormat "$DOTNET_FRAMEWORK_HOME"
6969 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
6970 AC_MSG_ERROR([mscoree.lib not found])
6972 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6974 PathFormat "$MIDL_PATH"
6975 MIDL_PATH="$formatted_path"
6977 PathFormat "$AL_PATH"
6978 AL_PATH="$formatted_path"
6980 PathFormat "$DOTNET_FRAMEWORK_HOME"
6981 DOTNET_FRAMEWORK_HOME="$formatted_path"
6983 PathFormat "$CSC_PATH"
6984 CSC_PATH="$formatted_path"
6987 dnl ===================================================================
6988 dnl Testing for C++ compiler and version...
6989 dnl ===================================================================
6991 if test "$_os" != "WINNT"; then
6992 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6993 save_CXXFLAGS=$CXXFLAGS
6995 CXXFLAGS=$save_CXXFLAGS
6996 if test -z "$CXX_BASE"; then
6997 CXX_BASE=`first_arg_basename "$CXX"`
7001 dnl check for GNU C++ compiler version
7002 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7003 AC_MSG_CHECKING([the GNU C++ compiler version])
7005 _gpp_version=`$CXX -dumpversion`
7006 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7008 if test "$_gpp_majmin" -lt "700"; then
7009 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7011 AC_MSG_RESULT([ok (g++ $_gpp_version)])
7014 dnl see https://code.google.com/p/android/issues/detail?id=41770
7018 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7019 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7020 #include <bits/c++config.h>]],[[
7021 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7022 && !defined(_GLIBCXX__PTHREADS) \
7023 && !defined(_GLIBCXX_HAS_GTHREADS)
7026 ]])],[AC_MSG_RESULT([yes])
7027 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7029 if test $glibcxx_threads = yes; then
7030 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7033 AC_SUBST(BOOST_CXXFLAGS)
7036 # prefx CXX with ccache if needed
7038 if test "$CCACHE" != ""; then
7039 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7041 save_CXXFLAGS=$CXXFLAGS
7042 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7043 # msvc does not fail on unknown options, check stdout
7044 if test "$COM" = MSC; then
7045 CXXFLAGS="$CXXFLAGS -nologo"
7047 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7048 ac_cxx_werror_flag=yes
7049 dnl an empty program will do, we're checking the compiler flags
7050 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7051 [use_ccache=yes], [use_ccache=no])
7052 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7053 AC_MSG_RESULT([yes])
7056 CXX_BASE="ccache $CXX_BASE"
7059 CXXFLAGS=$save_CXXFLAGS
7060 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7064 dnl ===================================================================
7065 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7066 dnl ===================================================================
7068 if test "$_os" != "WINNT"; then
7071 dnl Check whether there's a C pre-processor.
7076 dnl ===================================================================
7077 dnl Find integral type sizes and alignments
7078 dnl ===================================================================
7080 if test "$_os" != "WINNT"; then
7082 AC_CHECK_SIZEOF(long)
7083 AC_CHECK_SIZEOF(short)
7084 AC_CHECK_SIZEOF(int)
7085 AC_CHECK_SIZEOF(long long)
7086 AC_CHECK_SIZEOF(double)
7087 AC_CHECK_SIZEOF(void*)
7088 AC_CHECK_SIZEOF(size_t)
7090 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7091 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7092 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7093 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7094 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7095 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7097 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7098 m4_pattern_allow([AC_CHECK_ALIGNOF])
7099 m4_ifdef([AC_CHECK_ALIGNOF],
7101 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7102 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7103 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7104 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7107 case "$_os-$host_cpu" in
7109 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7110 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7111 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7112 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7115 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7116 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7117 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7118 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7121 if test -z "$ac_cv_alignof_short" -o \
7122 -z "$ac_cv_alignof_int" -o \
7123 -z "$ac_cv_alignof_long" -o \
7124 -z "$ac_cv_alignof_double"; then
7125 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.])
7131 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7132 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7133 if test $ac_cv_sizeof_long -eq 8; then
7134 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7135 elif test $ac_cv_sizeof_double -eq 8; then
7136 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7138 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7141 dnl Check for large file support
7143 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7144 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7146 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7147 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7151 SAL_TYPES_SIZEOFSHORT=2
7152 SAL_TYPES_SIZEOFINT=4
7153 SAL_TYPES_SIZEOFLONG=4
7154 SAL_TYPES_SIZEOFLONGLONG=8
7155 if test $WIN_HOST_BITS -eq 32; then
7156 SAL_TYPES_SIZEOFPOINTER=4
7159 SAL_TYPES_SIZEOFPOINTER=8
7162 SAL_TYPES_ALIGNMENT2=2
7163 SAL_TYPES_ALIGNMENT4=4
7164 SAL_TYPES_ALIGNMENT8=8
7167 AC_SUBST(LFS_CFLAGS)
7168 AC_SUBST(SIZEOF_SIZE_T)
7170 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7171 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7172 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7173 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7174 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7175 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7176 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7177 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7179 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7180 AC_MSG_CHECKING([whether jumbo sheets are supported])
7181 if test "$_os" != "WINNT"; then
7182 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7183 AC_MSG_RESULT([yes])
7184 ENABLE_JUMBO_SHEETS=TRUE
7185 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7190 if test $WIN_HOST_BITS -gt 32; then
7191 # 64bit windows is special-cased for tools::Long because long is 32bit
7192 AC_MSG_RESULT([yes])
7193 ENABLE_JUMBO_SHEETS=TRUE
7194 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7199 AC_SUBST(ENABLE_JUMBO_SHEETS)
7201 dnl ===================================================================
7202 dnl Check whether to enable runtime optimizations
7203 dnl ===================================================================
7204 ENABLE_RUNTIME_OPTIMIZATIONS=
7205 AC_MSG_CHECKING([whether to enable runtime optimizations])
7206 if test -z "$enable_runtime_optimizations"; then
7210 enable_runtime_optimizations=no
7216 if test "$enable_runtime_optimizations" != no; then
7217 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7218 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7219 AC_MSG_RESULT([yes])
7223 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7225 dnl ===================================================================
7226 dnl Check if valgrind headers are available
7227 dnl ===================================================================
7229 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7230 prev_cppflags=$CPPFLAGS
7231 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7232 # or where does it come from?
7233 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7234 AC_CHECK_HEADER([valgrind/valgrind.h],
7235 [ENABLE_VALGRIND=TRUE])
7236 CPPFLAGS=$prev_cppflags
7238 AC_SUBST([ENABLE_VALGRIND])
7239 if test -z "$ENABLE_VALGRIND"; then
7240 if test "$with_valgrind" = yes; then
7241 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7245 AC_SUBST([VALGRIND_CFLAGS])
7248 dnl ===================================================================
7249 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7250 dnl ===================================================================
7252 # We need at least the sys/sdt.h include header.
7253 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7254 if test "$SDT_H_FOUND" = "TRUE"; then
7255 # Found sys/sdt.h header, now make sure the c++ compiler works.
7256 # Old g++ versions had problems with probes in constructors/destructors.
7257 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7259 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7260 #include <sys/sdt.h>
7268 ProbeClass(int& v, const char *n) : ref(v), name(n)
7270 DTRACE_PROBE2(_test_, cons, name, ref);
7273 void method(int min)
7275 DTRACE_PROBE3(_test_, meth, name, ref, min);
7281 DTRACE_PROBE2(_test_, dest, name, ref);
7286 DTRACE_PROBE1(_test_, call, i);
7287 ProbeClass inst = ProbeClass(i, "call");
7289 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7290 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7293 AC_CONFIG_HEADERS([config_host/config_probes.h])
7295 dnl ===================================================================
7297 dnl ===================================================================
7298 HAVE_GCC_STACK_CLASH_PROTECTION=
7299 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7300 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7302 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7304 [AC_LANG_PROGRAM(, [[return 0;]])],
7305 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7306 [AC_MSG_RESULT([no])])
7309 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7311 CFLAGS="$CFLAGS -Werror -mno-avx"
7312 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7314 if test "$HAVE_GCC_AVX" = "TRUE"; then
7315 AC_MSG_RESULT([yes])
7320 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7321 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7323 if (__sync_add_and_fetch(&v, 1) != 1 ||
7324 __sync_sub_and_fetch(&v, 1) != 0)
7326 __sync_synchronize();
7327 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7331 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7332 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7333 AC_MSG_RESULT([yes])
7334 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7339 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7341 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7344 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7346 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7347 AC_MSG_RESULT([yes])
7348 ], [AC_MSG_RESULT([no])])
7351 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7353 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7356 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7358 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7359 AC_MSG_RESULT([yes])
7360 ], [AC_MSG_RESULT([no])])
7363 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7365 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7367 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7369 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7370 AC_MSG_RESULT([yes])
7371 ], [AC_MSG_RESULT([no])])
7374 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7376 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7379 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7381 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7382 AC_MSG_RESULT([yes])
7383 ], [AC_MSG_RESULT([no])])
7386 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7388 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7391 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7393 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7394 AC_MSG_RESULT([yes])
7395 ], [AC_MSG_RESULT([no])])
7398 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7402 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7404 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7405 AC_MSG_RESULT([yes])
7406 ], [AC_MSG_RESULT([no])])
7409 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7411 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7413 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7415 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7416 AC_MSG_RESULT([yes])
7417 ], [AC_MSG_RESULT([no])])
7420 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7422 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7424 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7426 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7427 AC_MSG_RESULT([yes])
7428 ], [AC_MSG_RESULT([no])])
7431 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7433 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7436 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7438 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7439 AC_MSG_RESULT([yes])
7440 ], [AC_MSG_RESULT([no])])
7443 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7445 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7448 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7450 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7451 AC_MSG_RESULT([yes])
7452 ], [AC_MSG_RESULT([no])])
7456 AC_SUBST(HAVE_GCC_AVX)
7457 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7458 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7460 dnl ===================================================================
7461 dnl Identify the C++ library
7462 dnl ===================================================================
7464 AC_MSG_CHECKING([what the C++ library is])
7468 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7474 [CPP_LIBRARY=GLIBCXX
7475 cpp_library_name="GNU libstdc++"
7478 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7480 #ifndef _LIBCPP_VERSION
7485 cpp_library_name="LLVM libc++"
7486 AC_DEFINE([HAVE_LIBCPP])
7489 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7496 cpp_library_name="Microsoft"
7498 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7499 AC_MSG_RESULT([$cpp_library_name])
7501 AC_SUBST([HAVE_LIBSTDCPP])
7502 AC_SUBST([HAVE_LIBCPP])
7504 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7506 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7507 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7508 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7509 # although there will be backwards compatibility).
7510 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7511 # and there would be undefined references to debug functions.
7512 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7513 # So check if debug mode can be used and disable or downgrade it to assertions
7515 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7518 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7519 #define _LIBCPP_DEBUG 0 // only assertions
7527 ]])], [libcpp_debug_links=1])
7528 if test -n "$libcpp_debug_links"; then
7529 # we can use at least assertions, check if debug mode works
7530 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7531 #define _LIBCPP_DEBUG 1 // debug mode
7534 int foo(const std::vector<int>& v) { return *v.begin(); }
7539 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7540 return (foo(v) + s.size()) != 0 ? 0 : 1;
7544 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7546 [AC_MSG_RESULT(no, using only assertions)
7547 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7555 AC_SUBST([LIBCPP_DEBUG])
7557 dnl ===================================================================
7559 dnl ===================================================================
7560 AC_PATH_PROG(GPERF, gperf)
7561 if test -z "$GPERF"; then
7562 AC_MSG_ERROR([gperf not found but needed. Install it.])
7564 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7565 GPERF=`cygpath -m $GPERF`
7567 AC_MSG_CHECKING([whether gperf is new enough])
7568 my_gperf_ver1=$($GPERF --version | head -n 1)
7569 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7570 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7571 if test "$my_gperf_ver3" -ge 301; then
7572 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7574 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7578 dnl ===================================================================
7579 dnl Check for system libcmis
7580 dnl ===================================================================
7581 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7583 dnl ===================================================================
7585 dnl ===================================================================
7587 if test -z "${CXXFLAGS_CXX11+x}"; then
7588 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7589 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7590 if test "$with_latest_c__" = yes; then
7591 CXXFLAGS_CXX11=-std:c++latest
7593 CXXFLAGS_CXX11=-std:c++17
7595 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7596 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7597 my_flags='-std=c++17 -std=c++1z'
7598 if test "$with_latest_c__" = yes; then
7599 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7601 for flag in $my_flags; do
7602 if test "$COM" = MSC; then
7603 flag="-Xclang $flag"
7605 save_CXXFLAGS=$CXXFLAGS
7606 CXXFLAGS="$CXXFLAGS $flag -Werror"
7608 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7609 #include <algorithm>
7610 #include <functional>
7613 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7614 std::sort(v.begin(), v.end(), fn);
7616 ]])],[CXXFLAGS_CXX11=$flag])
7618 CXXFLAGS=$save_CXXFLAGS
7619 if test -n "$CXXFLAGS_CXX11"; then
7624 if test -n "$CXXFLAGS_CXX11"; then
7625 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7630 AC_SUBST(CXXFLAGS_CXX11)
7632 if test "$GCC" = "yes"; then
7633 save_CXXFLAGS=$CXXFLAGS
7634 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7636 CXXFLAGS=$save_CXXFLAGS
7637 AC_SUBST(ATOMIC_LIB)
7640 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7641 save_CXXFLAGS=$CXXFLAGS
7642 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7645 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7648 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7664 a thinga[]={{0,0}, {1,1}};
7665 b thingb[]={{0,0}, {1,1}};
7666 size_t i = sizeof(sal_n_array_size(thinga));
7667 size_t j = sizeof(sal_n_array_size(thingb));
7668 return !(i != 0 && j != 0);
7670 ], [ AC_MSG_RESULT(yes) ],
7671 [ AC_MSG_ERROR(no)])
7673 CXXFLAGS=$save_CXXFLAGS
7675 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7676 if test "$GCC" = yes; then
7677 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7679 save_CXXFLAGS=$CXXFLAGS
7680 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7681 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7682 CXXFLAGS=$save_CXXFLAGS
7684 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7685 AC_MSG_RESULT([yes])
7690 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7692 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7694 save_CXXFLAGS=$CXXFLAGS
7695 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7696 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7697 #include <algorithm>
7698 #include <initializer_list>
7700 template<typename T> class S {
7704 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7706 constinit S<int> s{3, 2, 1};
7708 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7709 AC_MSG_RESULT([yes])
7710 ], [AC_MSG_RESULT([no])])
7711 CXXFLAGS=$save_CXXFLAGS
7714 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7716 save_CXXFLAGS=$CXXFLAGS
7717 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7718 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7720 #include <type_traits>
7721 // Don't check size_type directly, as it was called index_type before P1872R0:
7722 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7724 AC_DEFINE([HAVE_CPP_SPAN],[1])
7725 AC_MSG_RESULT([yes])
7726 ], [AC_MSG_RESULT([no])])
7727 CXXFLAGS=$save_CXXFLAGS
7730 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7732 save_CXXFLAGS=$CXXFLAGS
7733 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7734 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7735 struct S1 { S1(S1 &&); };
7737 S1 f(S2 s) { return s; }
7739 AC_DEFINE([HAVE_P1155R3],[1])
7740 AC_MSG_RESULT([yes])
7741 ], [AC_MSG_RESULT([no])])
7742 CXXFLAGS=$save_CXXFLAGS
7745 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7746 HAVE_CXX20_ATOMIC_REF=
7748 save_CXXFLAGS=$CXXFLAGS
7749 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7753 std::atomic_ref<int> y(x);
7755 HAVE_CXX20_ATOMIC_REF=TRUE
7756 AC_MSG_RESULT([yes])
7757 ], [AC_MSG_RESULT([no])])
7758 CXXFLAGS=$save_CXXFLAGS
7760 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7762 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7763 dnl which is included in -Wextra anyway):
7764 HAVE_WDEPRECATED_COPY_DTOR=
7765 if test "$GCC" = yes; then
7766 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7768 save_CXXFLAGS=$CXXFLAGS
7769 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7770 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7771 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7772 AC_MSG_RESULT([yes])
7773 ], [AC_MSG_RESULT([no])])
7774 CXXFLAGS=$save_CXXFLAGS
7777 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7779 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7780 dnl uninitialized warning for code like
7783 dnl boost::optional<OString> * g(bool b) {
7784 dnl boost::optional<OString> o;
7786 dnl return new boost::optional<OString>(o);
7789 dnl (as is e.g. present, in a slightly more elaborate form, in
7790 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7791 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7792 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7793 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7794 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7796 save_CXXFLAGS=$CXXFLAGS
7797 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7798 if test "$ENABLE_OPTIMIZED" = TRUE; then
7799 CXXFLAGS="$CXXFLAGS -O2"
7801 CXXFLAGS="$CXXFLAGS -O0"
7803 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7812 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7813 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7819 char stg[sizeof (S1)];
7827 ]])], [AC_MSG_RESULT([no])], [
7828 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7829 AC_MSG_RESULT([yes])
7831 CXXFLAGS=$save_CXXFLAGS
7834 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7836 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7837 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7838 dnl hits us e.g. with GCC 10 and --enable-optimized at
7840 dnl In file included from include/rtl/string.hxx:49,
7841 dnl from include/rtl/ustring.hxx:43,
7842 dnl from include/osl/file.hxx:35,
7843 dnl from include/codemaker/global.hxx:28,
7844 dnl from include/codemaker/options.hxx:23,
7845 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7846 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7847 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,
7848 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,
7849 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,
7850 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7851 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7852 dnl 78 | memcpy( buffer, data, length );
7853 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7854 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7855 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7856 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7858 save_CXXFLAGS=$CXXFLAGS
7859 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7860 if test "$ENABLE_OPTIMIZED" = TRUE; then
7861 CXXFLAGS="$CXXFLAGS -O2"
7863 CXXFLAGS="$CXXFLAGS -O0"
7865 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7866 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7867 void fill(char const * begin, char const * end, char c);
7873 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7874 __builtin_strncpy(c.username, "root", sizeof(c.username));
7876 ]])], [AC_MSG_RESULT([no])], [
7877 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7878 AC_MSG_RESULT([yes])
7880 CXXFLAGS=$save_CXXFLAGS
7883 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7885 HAVE_DLLEXPORTINLINES=
7886 if test "$_os" = "WINNT"; then
7887 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7889 save_CXXFLAGS=$CXXFLAGS
7890 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7891 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7892 HAVE_DLLEXPORTINLINES=TRUE
7893 AC_MSG_RESULT([yes])
7894 ], [AC_MSG_RESULT([no])])
7895 CXXFLAGS=$save_CXXFLAGS
7898 AC_SUBST([HAVE_DLLEXPORTINLINES])
7900 dnl ===================================================================
7901 dnl CPU Intrinsics support - SSE, AVX
7902 dnl ===================================================================
7904 CXXFLAGS_INTRINSICS_SSE2=
7905 CXXFLAGS_INTRINSICS_SSSE3=
7906 CXXFLAGS_INTRINSICS_SSE41=
7907 CXXFLAGS_INTRINSICS_SSE42=
7908 CXXFLAGS_INTRINSICS_AVX=
7909 CXXFLAGS_INTRINSICS_AVX2=
7910 CXXFLAGS_INTRINSICS_AVX512=
7911 CXXFLAGS_INTRINSICS_AVX512F=
7912 CXXFLAGS_INTRINSICS_F16C=
7913 CXXFLAGS_INTRINSICS_FMA=
7915 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7916 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7923 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7924 flag_avx512f=-mavx512f
7928 # With MSVC using -arch is in fact not necessary for being able
7929 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7930 # even if compiled with -arch:AVX, the -arch option really only affects
7931 # instructions generated for C/C++ code.
7932 # So use the matching same (or lower) -arch options, but only in order
7933 # to generate the best matching instructions for the C++ code surrounding
7935 # SSE2 is the default for x86/x64, so no need to specify the option.
7937 # No specific options for these, use the next lower.
7938 flag_ssse3="$flag_sse2"
7939 flag_sse41="$flag_sse2"
7940 flag_sse42="$flag_sse2"
7942 flag_avx2=-arch:AVX2
7943 flag_avx512=-arch:AVX512
7944 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7945 flag_avx512f=-arch:AVX2
7946 # No MSVC options for these.
7947 flag_f16c="$flag_sse2"
7948 flag_fma="$flag_sse2"
7951 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7953 save_CXXFLAGS=$CXXFLAGS
7954 CXXFLAGS="$CXXFLAGS $flag_sse2"
7955 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7956 #include <emmintrin.h>
7958 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7959 c = _mm_xor_si128 (a, b);
7963 [can_compile_sse2=yes],
7964 [can_compile_sse2=no])
7966 CXXFLAGS=$save_CXXFLAGS
7967 AC_MSG_RESULT([${can_compile_sse2}])
7968 if test "${can_compile_sse2}" = "yes" ; then
7969 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7972 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7974 save_CXXFLAGS=$CXXFLAGS
7975 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7976 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7977 #include <tmmintrin.h>
7979 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7980 c = _mm_maddubs_epi16 (a, b);
7984 [can_compile_ssse3=yes],
7985 [can_compile_ssse3=no])
7987 CXXFLAGS=$save_CXXFLAGS
7988 AC_MSG_RESULT([${can_compile_ssse3}])
7989 if test "${can_compile_ssse3}" = "yes" ; then
7990 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7993 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7995 save_CXXFLAGS=$CXXFLAGS
7996 CXXFLAGS="$CXXFLAGS $flag_sse41"
7997 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7998 #include <smmintrin.h>
8000 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8001 c = _mm_cmpeq_epi64 (a, b);
8005 [can_compile_sse41=yes],
8006 [can_compile_sse41=no])
8008 CXXFLAGS=$save_CXXFLAGS
8009 AC_MSG_RESULT([${can_compile_sse41}])
8010 if test "${can_compile_sse41}" = "yes" ; then
8011 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8014 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8016 save_CXXFLAGS=$CXXFLAGS
8017 CXXFLAGS="$CXXFLAGS $flag_sse42"
8018 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8019 #include <nmmintrin.h>
8021 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8022 c = _mm_cmpgt_epi64 (a, b);
8026 [can_compile_sse42=yes],
8027 [can_compile_sse42=no])
8029 CXXFLAGS=$save_CXXFLAGS
8030 AC_MSG_RESULT([${can_compile_sse42}])
8031 if test "${can_compile_sse42}" = "yes" ; then
8032 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8035 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8037 save_CXXFLAGS=$CXXFLAGS
8038 CXXFLAGS="$CXXFLAGS $flag_avx"
8039 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8040 #include <immintrin.h>
8042 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8043 c = _mm256_xor_ps(a, b);
8047 [can_compile_avx=yes],
8048 [can_compile_avx=no])
8050 CXXFLAGS=$save_CXXFLAGS
8051 AC_MSG_RESULT([${can_compile_avx}])
8052 if test "${can_compile_avx}" = "yes" ; then
8053 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8056 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8058 save_CXXFLAGS=$CXXFLAGS
8059 CXXFLAGS="$CXXFLAGS $flag_avx2"
8060 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8061 #include <immintrin.h>
8063 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8064 c = _mm256_maddubs_epi16(a, b);
8068 [can_compile_avx2=yes],
8069 [can_compile_avx2=no])
8071 CXXFLAGS=$save_CXXFLAGS
8072 AC_MSG_RESULT([${can_compile_avx2}])
8073 if test "${can_compile_avx2}" = "yes" ; then
8074 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8077 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8079 save_CXXFLAGS=$CXXFLAGS
8080 CXXFLAGS="$CXXFLAGS $flag_avx512"
8081 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8082 #include <immintrin.h>
8084 __m512i a = _mm512_loadu_si512(0);
8085 __m512d v1 = _mm512_load_pd(0);
8086 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8087 __m512d v2 = _mm512_abs_pd(v1);
8091 [can_compile_avx512=yes],
8092 [can_compile_avx512=no])
8094 CXXFLAGS=$save_CXXFLAGS
8095 AC_MSG_RESULT([${can_compile_avx512}])
8096 if test "${can_compile_avx512}" = "yes" ; then
8097 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8098 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8101 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8103 save_CXXFLAGS=$CXXFLAGS
8104 CXXFLAGS="$CXXFLAGS $flag_f16c"
8105 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8106 #include <immintrin.h>
8108 __m128i a = _mm_set1_epi32 (0);
8110 c = _mm_cvtph_ps(a);
8114 [can_compile_f16c=yes],
8115 [can_compile_f16c=no])
8117 CXXFLAGS=$save_CXXFLAGS
8118 AC_MSG_RESULT([${can_compile_f16c}])
8119 if test "${can_compile_f16c}" = "yes" ; then
8120 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8123 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8125 save_CXXFLAGS=$CXXFLAGS
8126 CXXFLAGS="$CXXFLAGS $flag_fma"
8127 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8128 #include <immintrin.h>
8130 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8131 d = _mm256_fmadd_ps(a, b, c);
8135 [can_compile_fma=yes],
8136 [can_compile_fma=no])
8138 CXXFLAGS=$save_CXXFLAGS
8139 AC_MSG_RESULT([${can_compile_fma}])
8140 if test "${can_compile_fma}" = "yes" ; then
8141 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8144 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8145 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8146 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8147 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8148 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8149 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8150 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8151 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8152 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8153 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8155 dnl ===================================================================
8156 dnl system stl sanity tests
8157 dnl ===================================================================
8158 if test "$_os" != "WINNT"; then
8162 save_CPPFLAGS="$CPPFLAGS"
8163 if test -n "$MACOSX_SDK_PATH"; then
8164 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8167 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8169 if test "$CPP_LIBRARY" = GLIBCXX; then
8170 dnl gcc#19664, gcc#22482, rhbz#162935
8171 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8172 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8173 AC_MSG_RESULT([$stlvisok])
8174 if test "$stlvisok" = "no"; then
8175 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8179 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8180 # when we don't make any dynamic libraries?
8181 if test "$DISABLE_DYNLOADING" = ""; then
8182 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8183 cat > conftestlib1.cc <<_ACEOF
8184 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8185 struct S2: S1<int> { virtual ~S2(); };
8188 cat > conftestlib2.cc <<_ACEOF
8189 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8190 struct S2: S1<int> { virtual ~S2(); };
8191 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8193 gccvisinlineshiddenok=yes
8194 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8195 gccvisinlineshiddenok=no
8197 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8198 dnl known to not work with -z defs (unsetting which makes the test
8200 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8201 if test "$COM_IS_CLANG" = TRUE; then
8202 for i in $CXX $CXXFLAGS; do
8205 my_linkflagsnoundefs=
8211 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8212 gccvisinlineshiddenok=no
8217 AC_MSG_RESULT([$gccvisinlineshiddenok])
8218 if test "$gccvisinlineshiddenok" = "no"; then
8219 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8223 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8224 cat >visibility.cxx <<_ACEOF
8225 #pragma GCC visibility push(hidden)
8226 struct __attribute__ ((visibility ("default"))) TestStruct {
8229 __attribute__ ((visibility ("default"))) void TestFunc() {
8233 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8238 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8241 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8253 rm -f visibility.s visibility.cxx
8255 AC_MSG_RESULT([$gccvisbroken])
8256 if test "$gccvisbroken" = "yes"; then
8257 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8260 CPPFLAGS="$save_CPPFLAGS"
8262 AC_MSG_CHECKING([if CET endbranch is recognized])
8263 cat > endbr.s <<_ACEOF
8266 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8267 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8268 AC_MSG_RESULT([yes])
8269 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8273 rm -f endbr.s endbr.o
8274 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8279 dnl ===================================================================
8281 dnl ===================================================================
8283 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8284 if test "$GCC" = "yes"; then
8285 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8287 save_CXXFLAGS=$CXXFLAGS
8288 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8289 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8290 CXXFLAGS=$save_CXXFLAGS
8292 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8293 AC_MSG_RESULT([yes])
8298 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8300 dnl ===================================================================
8301 dnl Compiler plugins
8302 dnl ===================================================================
8305 # currently only Clang
8307 if test "$COM_IS_CLANG" != "TRUE"; then
8308 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8309 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8310 enable_compiler_plugins=no
8314 COMPILER_PLUGINS_COM_IS_CLANG=
8315 if test "$COM_IS_CLANG" = "TRUE"; then
8316 if test -n "$enable_compiler_plugins"; then
8317 compiler_plugins="$enable_compiler_plugins"
8318 elif test -n "$ENABLE_DBGUTIL"; then
8319 compiler_plugins=test
8323 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8324 if test "$CLANGVER" -lt 120001; then
8325 if test "$compiler_plugins" = yes; then
8327 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8333 if test "$compiler_plugins" != "no"; then
8334 dnl The prefix where Clang resides, override to where Clang resides if
8335 dnl using a source build:
8336 if test -z "$CLANGDIR"; then
8337 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8339 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8340 if test -z "$COMPILER_PLUGINS_CXX"; then
8341 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8343 clangbindir=$CLANGDIR/bin
8344 if test "$build_os" = "cygwin"; then
8345 clangbindir=$(cygpath -u "$clangbindir")
8347 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8348 if test -n "$LLVM_CONFIG"; then
8349 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8350 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8351 if test -z "$CLANGLIBDIR"; then
8352 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8354 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8355 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8356 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8357 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8358 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8359 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8362 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8363 clangobjdir=$($LLVM_CONFIG --obj-root)
8364 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8365 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8368 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8372 save_CPPFLAGS=$CPPFLAGS
8373 save_CXXFLAGS=$CXXFLAGS
8374 save_LDFLAGS=$LDFLAGS
8376 CXX=$COMPILER_PLUGINS_CXX
8377 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8378 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8379 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8380 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8381 [COMPILER_PLUGINS=TRUE],
8383 if test "$compiler_plugins" = "yes"; then
8384 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8386 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8387 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8390 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8391 dnl comment in compilerplugins/Makefile-clang.mk:
8392 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8394 AC_MSG_CHECKING([for clang libraries to use])
8395 if test -z "$CLANGTOOLLIBS"; then
8396 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8398 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8399 [[ clang::FullSourceLoc().dump(); ]])
8400 ],[CLANGTOOLLIBS="$LIBS"],[])
8402 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8403 dnl list of individual -lclang* (but note that that list can become outdated over time,
8404 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8405 dnl needs to include -lclangSupport now"):
8406 if test -z "$CLANGTOOLLIBS"; then
8407 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8408 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8410 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8411 [[ clang::FullSourceLoc().dump(); ]])
8412 ],[CLANGTOOLLIBS="$LIBS"],[])
8414 AC_MSG_RESULT([$CLANGTOOLLIBS])
8415 if test -z "$CLANGTOOLLIBS"; then
8416 if test "$compiler_plugins" = "yes"; then
8417 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8419 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8420 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8424 if test -n "$COMPILER_PLUGINS"; then
8425 if test -z "$CLANGSYSINCLUDE"; then
8426 if test -n "$LLVM_CONFIG"; then
8427 # Path to the clang system headers (no idea if there's a better way to get it).
8428 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8435 CPPFLAGS=$save_CPPFLAGS
8436 CXXFLAGS=$save_CXXFLAGS
8437 LDFLAGS=$save_LDFLAGS
8441 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8442 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8448 [AC_MSG_RESULT([yes])
8449 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8450 [AC_MSG_RESULT([no])])
8451 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8454 if test "$enable_compiler_plugins" = "yes"; then
8455 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8458 COMPILER_PLUGINS_ANALYZER_PCH=
8459 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8460 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8462 AC_SUBST(COMPILER_PLUGINS)
8463 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8464 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8465 AC_SUBST(COMPILER_PLUGINS_CXX)
8466 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8467 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8468 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8469 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8471 AC_SUBST(CLANGLIBDIR)
8472 AC_SUBST(CLANGTOOLLIBS)
8473 AC_SUBST(CLANGSYSINCLUDE)
8475 # Plugin to help linker.
8476 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8477 # This makes --enable-lto build with clang work.
8480 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8481 AC_SUBST(HAVE_POSIX_FALLOCATE)
8483 JITC_PROCESSOR_TYPE=""
8484 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8485 # IBMs JDK needs this...
8486 JITC_PROCESSOR_TYPE=6
8487 export JITC_PROCESSOR_TYPE
8489 AC_SUBST([JITC_PROCESSOR_TYPE])
8491 # Misc Windows Stuff
8492 AC_ARG_WITH(ucrt-dir,
8493 AS_HELP_STRING([--with-ucrt-dir],
8494 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8495 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8496 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8497 Windows6.1-KB2999226-x64.msu
8498 Windows6.1-KB2999226-x86.msu
8499 Windows8.1-KB2999226-x64.msu
8500 Windows8.1-KB2999226-x86.msu
8501 Windows8-RT-KB2999226-x64.msu
8502 Windows8-RT-KB2999226-x86.msu
8503 A zip archive including those files is available from Microsoft site:
8504 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8507 UCRT_REDISTDIR="$with_ucrt_dir"
8508 if test $_os = "WINNT"; then
8510 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8511 MSVC_DLLS="$msvcdlls"
8512 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8514 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8516 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8519 for i in $PKGFORMAT; do
8520 if test "$i" = msi; then
8521 find_msms "$with_redist"
8522 if test -n "$msmdir"; then
8523 MSM_PATH=`win_short_path_for_make "$msmdir"`
8524 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8530 if test "$UCRT_REDISTDIR" = "no"; then
8531 dnl explicitly disabled
8534 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8535 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8536 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8537 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8538 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8539 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8541 if test -n "$PKGFORMAT"; then
8542 for i in $PKGFORMAT; do
8545 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8546 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8555 AC_SUBST(UCRT_REDISTDIR)
8556 AC_SUBST(MSVC_DLL_PATH)
8561 dnl ===================================================================
8563 dnl ===================================================================
8564 if test "$ENABLE_JAVA" != ""; then
8566 # Windows-specific tests
8567 if test "$build_os" = "cygwin"; then
8568 if test -z "$with_jdk_home"; then
8569 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8570 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8571 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8572 if test -n "$regvalue"; then
8574 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8575 with_jdk_home=$regvalue
8577 howfound="found automatically"
8579 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8580 howfound="you passed"
8583 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8584 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])
8588 # 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.
8589 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8590 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8591 with_jdk_home=`/usr/libexec/java_home`
8594 JAVA_HOME=; export JAVA_HOME
8595 if test -z "$with_jdk_home"; then
8596 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8598 _java_path="$with_jdk_home/bin/$with_java"
8599 dnl Check if there is a Java interpreter at all.
8600 if test -x "$_java_path"; then
8601 JAVAINTERPRETER=$_java_path
8603 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8607 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8608 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8609 dnl loaded by java to run JunitTests:
8610 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8611 shortjdkhome=`cygpath -d "$with_jdk_home"`
8612 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
8613 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8614 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8615 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
8616 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8617 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8620 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8621 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8623 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8624 elif test "$cross_compiling" != "yes"; then
8626 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64)
8627 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8628 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8629 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8632 *) # assumption: everything else 32-bit
8633 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8634 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8635 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8642 dnl ===================================================================
8644 dnl ===================================================================
8646 # Whether all the complexity here actually is needed any more or not, no idea.
8648 JDK_SECURITYMANAGER_DISALLOWED=
8649 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8651 AC_MSG_CHECKING([the installed JDK])
8652 if test -n "$JAVAINTERPRETER"; then
8653 dnl java -version sends output to stderr!
8654 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8655 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8656 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8657 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8658 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8659 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8660 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8661 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8665 dnl Sun JDK specific tests
8666 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8667 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8669 if test "$_jdk_ver" -lt 10900; then
8670 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8672 if test "$_jdk_ver" -gt 10900; then
8673 JAVA_CLASSPATH_NOT_SET=TRUE
8675 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8676 dnl completely removed in some Java version > 18 (see
8677 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8678 if test "$_jdk_ver" -ge 180000; then
8679 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8682 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8683 if test "$_os" = "WINNT"; then
8684 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8686 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8688 # set to limit VM usage for JunitTests
8690 # set to limit VM usage for javac
8691 JAVACFLAGS=-J-Xmx128M
8694 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8697 if test -z "$ENABLE_JAVA"; then
8701 elif test "$cross_compiling" = "yes"; then
8702 # Just assume compatibility of build and host JDK
8704 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8708 dnl ===================================================================
8709 dnl Checks for javac
8710 dnl ===================================================================
8711 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8712 javacompiler="javac"
8713 : ${JAVA_SOURCE_VER=8}
8714 : ${JAVA_TARGET_VER=8}
8715 if test -z "$with_jdk_home"; then
8716 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8718 _javac_path="$with_jdk_home/bin/$javacompiler"
8719 dnl Check if there is a Java compiler at all.
8720 if test -x "$_javac_path"; then
8721 JAVACOMPILER=$_javac_path
8724 if test -z "$JAVACOMPILER"; then
8725 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8727 if test "$build_os" = "cygwin"; then
8728 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8729 JAVACOMPILER="${JAVACOMPILER}.exe"
8731 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8735 dnl ===================================================================
8736 dnl Checks for javadoc
8737 dnl ===================================================================
8738 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8739 if test -z "$with_jdk_home"; then
8740 AC_PATH_PROG(JAVADOC, javadoc)
8742 _javadoc_path="$with_jdk_home/bin/javadoc"
8743 dnl Check if there is a javadoc at all.
8744 if test -x "$_javadoc_path"; then
8745 JAVADOC=$_javadoc_path
8747 AC_PATH_PROG(JAVADOC, javadoc)
8750 if test -z "$JAVADOC"; then
8751 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8753 if test "$build_os" = "cygwin"; then
8754 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8755 JAVADOC="${JAVADOC}.exe"
8757 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8760 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8761 JAVADOCISGJDOC="yes"
8765 AC_SUBST(JAVADOCISGJDOC)
8767 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8768 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8769 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8770 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8771 # try to recover first by looking whether we have an alternative
8772 # system as in Debian or newer SuSEs where following /usr/bin/javac
8773 # over /etc/alternatives/javac leads to the right bindir where we
8774 # just need to strip a bit away to get a valid JAVA_HOME
8775 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8776 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8777 # maybe only one level of symlink (e.g. on Mac)
8778 JAVA_HOME=$(readlink $JAVACOMPILER)
8779 if test "$(dirname $JAVA_HOME)" = "."; then
8780 # we've got no path to trim back
8785 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8786 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8787 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8788 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8790 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8791 if test "$JAVA_HOME" != "/usr"; then
8792 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8793 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8794 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8795 dnl Tiger already returns a JDK path...
8796 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8798 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8799 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8800 dnl that checks which version to run
8801 if test -f "$JAVA_HOME"; then
8802 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8807 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8809 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8810 if test -z "$JAVA_HOME"; then
8811 if test "x$with_jdk_home" = "x"; then
8812 cat > findhome.java <<_ACEOF
8813 [import java.io.File;
8817 public static void main(String args[])
8819 String jrelocation = System.getProperty("java.home");
8820 File jre = new File(jrelocation);
8821 System.out.println(jre.getParent());
8825 AC_MSG_CHECKING([if javac works])
8826 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8827 AC_TRY_EVAL(javac_cmd)
8828 if test $? = 0 -a -f ./findhome.class; then
8829 AC_MSG_RESULT([javac works])
8831 echo "configure: javac test failed" >&5
8832 cat findhome.java >&5
8833 AC_MSG_ERROR([javac does not work - java projects will not build!])
8835 AC_MSG_CHECKING([if gij knows its java.home])
8836 JAVA_HOME=`$JAVAINTERPRETER findhome`
8837 if test $? = 0 -a "$JAVA_HOME" != ""; then
8838 AC_MSG_RESULT([$JAVA_HOME])
8840 echo "configure: java test failed" >&5
8841 cat findhome.java >&5
8842 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8844 # clean-up after ourselves
8845 rm -f ./findhome.java ./findhome.class
8847 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8851 # now check if $JAVA_HOME is really valid
8852 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8853 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8854 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8855 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8856 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8857 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8858 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8859 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8862 PathFormat "$JAVA_HOME"
8863 JAVA_HOME="$formatted_path"
8866 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8869 AC_MSG_CHECKING([for JAWT lib])
8870 if test "$_os" = WINNT; then
8871 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8876 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8877 JAVA_ARCH=$my_java_arch
8892 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8893 JAVA_ARCH=$my_java_arch
8896 my_java_arch=sparcv9
8902 my_java_arch=$host_cpu
8905 # This is where JDK9 puts the library
8906 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8907 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8909 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8911 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8913 AC_MSG_RESULT([$JAWTLIB])
8917 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8921 JAVAINC="-I$JAVA_HOME/include"
8922 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8923 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8927 JAVAINC="-I$JAVA_HOME/include/win32"
8928 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8932 if test -d "$JAVA_HOME/include/darwin"; then
8933 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8935 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8940 JAVAINC="-I$JAVA_HOME/include"
8941 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8945 JAVAINC="-I$JAVA_HOME/include"
8946 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8947 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8948 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8949 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8953 JAVAINC="-I$JAVA_HOME/include"
8954 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8955 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8959 JAVAINC="-I$JAVA_HOME/include"
8960 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8961 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8965 JAVAINC="-I$JAVA_HOME/include"
8966 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8967 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8971 JAVAINC="-I$JAVA_HOME/include"
8972 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8973 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8977 JAVAINC="-I$JAVA_HOME/include"
8978 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8979 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8983 SOLARINC="$SOLARINC $JAVAINC"
8985 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8986 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8987 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8989 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8992 AC_SUBST(JAVACFLAGS)
8993 AC_SUBST(JAVACOMPILER)
8994 AC_SUBST(JAVAINTERPRETER)
8995 AC_SUBST(JAVAIFLAGS)
8996 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8997 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8999 AC_SUBST(JAVA_HOME_FOR_BUILD)
9001 AC_SUBST(JDK_FOR_BUILD)
9002 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9003 AC_SUBST(JAVA_SOURCE_VER)
9004 AC_SUBST(JAVA_TARGET_VER)
9007 dnl ===================================================================
9008 dnl Export file validation
9009 dnl ===================================================================
9010 AC_MSG_CHECKING([whether to enable export file validation])
9011 if test "$with_export_validation" != "no"; then
9012 if test -z "$ENABLE_JAVA"; then
9013 if test "$with_export_validation" = "yes"; then
9014 AC_MSG_ERROR([requested, but Java is disabled])
9016 AC_MSG_RESULT([no, as Java is disabled])
9018 elif ! test -d "${SRC_ROOT}/schema"; then
9019 if test "$with_export_validation" = "yes"; then
9020 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9022 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9025 AC_MSG_RESULT([yes])
9026 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9028 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9029 if test -z "$ODFVALIDATOR"; then
9030 # remember to download the ODF toolkit with validator later
9031 AC_MSG_NOTICE([no odfvalidator found, will download it])
9032 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9033 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9035 # and fetch name of odfvalidator jar name from download.lst
9036 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9037 AC_SUBST(ODFVALIDATOR_JAR)
9039 if test -z "$ODFVALIDATOR_JAR"; then
9040 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9043 if test "$build_os" = "cygwin"; then
9044 # In case of Cygwin it will be executed from Windows,
9045 # so we need to run bash and absolute path to validator
9046 # so instead of "odfvalidator" it will be
9047 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9048 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9050 ODFVALIDATOR="sh $ODFVALIDATOR"
9052 AC_SUBST(ODFVALIDATOR)
9055 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9056 if test -z "$OFFICEOTRON"; then
9057 # remember to download the officeotron with validator later
9058 AC_MSG_NOTICE([no officeotron found, will download it])
9059 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9060 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9062 # and fetch name of officeotron jar name from download.lst
9063 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9064 AC_SUBST(OFFICEOTRON_JAR)
9066 if test -z "$OFFICEOTRON_JAR"; then
9067 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9070 # check version of existing officeotron
9071 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9072 if test 0"$OFFICEOTRON_VER" -lt 704; then
9073 AC_MSG_ERROR([officeotron too old])
9076 if test "$build_os" = "cygwin"; then
9077 # In case of Cygwin it will be executed from Windows,
9078 # so we need to run bash and absolute path to validator
9079 # so instead of "odfvalidator" it will be
9080 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9081 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9083 OFFICEOTRON="sh $OFFICEOTRON"
9086 AC_SUBST(OFFICEOTRON)
9091 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9092 if test "$with_bffvalidator" != "no"; then
9093 AC_DEFINE(HAVE_BFFVALIDATOR)
9095 if test "$with_export_validation" = "no"; then
9096 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9099 if test "$with_bffvalidator" = "yes"; then
9100 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9102 BFFVALIDATOR="$with_bffvalidator"
9105 if test "$build_os" = "cygwin"; then
9106 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9107 AC_MSG_RESULT($BFFVALIDATOR)
9109 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9111 elif test -n "$BFFVALIDATOR"; then
9112 # We are not in Cygwin but need to run Windows binary with wine
9113 AC_PATH_PROGS(WINE, wine)
9115 # so swap in a shell wrapper that converts paths transparently
9116 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9117 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9118 AC_SUBST(BFFVALIDATOR_EXE)
9119 AC_MSG_RESULT($BFFVALIDATOR)
9121 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9123 AC_SUBST(BFFVALIDATOR)
9128 dnl ===================================================================
9129 dnl Check for epm (not needed for Windows)
9130 dnl ===================================================================
9131 AC_MSG_CHECKING([whether to enable EPM for packing])
9132 if test "$enable_epm" = "yes"; then
9133 AC_MSG_RESULT([yes])
9134 if test "$_os" != "WINNT"; then
9135 if test $_os = Darwin; then
9137 elif test -n "$with_epm"; then
9140 AC_PATH_PROG(EPM, epm, no)
9142 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9143 AC_MSG_NOTICE([EPM will be built.])
9144 BUILD_TYPE="$BUILD_TYPE EPM"
9145 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9147 # Gentoo has some epm which is something different...
9148 AC_MSG_CHECKING([whether the found epm is the right epm])
9149 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9150 AC_MSG_RESULT([yes])
9152 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9154 AC_MSG_CHECKING([epm version])
9155 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9156 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9157 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9158 AC_MSG_RESULT([OK, >= 3.7])
9160 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9161 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9166 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9167 AC_MSG_CHECKING([for rpm])
9168 for a in "$RPM" rpmbuild rpm; do
9169 $a --usage >/dev/null 2> /dev/null
9170 if test $? -eq 0; then
9174 $a --version >/dev/null 2> /dev/null
9175 if test $? -eq 0; then
9181 if test -z "$RPM"; then
9182 AC_MSG_ERROR([not found])
9183 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9184 RPM_PATH=`which $RPM`
9185 AC_MSG_RESULT([$RPM_PATH])
9186 SCPDEFS="$SCPDEFS -DWITH_RPM"
9188 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9191 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9192 AC_PATH_PROG(DPKG, dpkg, no)
9193 if test "$DPKG" = "no"; then
9194 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9197 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9198 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9199 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9200 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9201 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9202 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9203 AC_MSG_RESULT([yes])
9206 if echo "$PKGFORMAT" | $GREP -q rpm; then
9208 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9209 add_warning "the rpms will need to be installed with --nodeps"
9213 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9214 add_warning "the ${_pt}s will not be relocatable"
9215 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9216 relocation will work, you need to patch your epm with the
9217 patch in epm/epm-3.7.patch or build with
9218 --with-epm=internal which will build a suitable epm])
9223 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9224 AC_PATH_PROG(PKGMK, pkgmk, no)
9225 if test "$PKGMK" = "no"; then
9226 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9233 for i in $PKGFORMAT; do
9235 aix | bsd | deb | pkg | rpm | native | portable)
9237 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9247 if test "$enable_lotuswordpro" = "yes"; then
9250 AC_SUBST(ENABLE_LWP)
9252 dnl ===================================================================
9253 dnl Check for building ODK
9254 dnl ===================================================================
9255 AC_MSG_CHECKING([whether to build the ODK])
9256 if test "$enable_odk" = yes; then
9257 if test "$DISABLE_DYNLOADING" = TRUE; then
9258 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9260 AC_MSG_RESULT([yes])
9261 BUILD_TYPE="$BUILD_TYPE ODK"
9266 if test "$enable_odk" != yes; then
9269 if test "$with_doxygen" = no; then
9270 AC_MSG_CHECKING([for doxygen])
9274 if test "$with_doxygen" = yes; then
9275 AC_PATH_PROG([DOXYGEN], [doxygen])
9276 if test -z "$DOXYGEN"; then
9277 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9279 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9280 if ! dot -V 2>/dev/null; then
9281 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9285 AC_MSG_CHECKING([for doxygen])
9286 DOXYGEN=$with_doxygen
9287 AC_MSG_RESULT([$DOXYGEN])
9289 if test -n "$DOXYGEN"; then
9290 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9291 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9292 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9293 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9300 dnl ==================================================================
9302 dnl ==================================================================
9303 AC_MSG_CHECKING([whether to enable fuzzers])
9304 if test "$enable_fuzzers" != yes; then
9307 if test -z $LIB_FUZZING_ENGINE; then
9308 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9310 AC_MSG_RESULT([yes])
9311 ENABLE_FUZZERS="TRUE"
9312 AC_DEFINE([ENABLE_FUZZERS],1)
9313 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9314 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9316 AC_SUBST(LIB_FUZZING_ENGINE)
9318 dnl ===================================================================
9319 dnl Check for system zlib
9320 dnl ===================================================================
9321 if test "$with_system_zlib" = "auto"; then
9324 with_system_zlib="$with_system_libs"
9327 if test "$enable_fuzzers" != "yes"; then
9328 with_system_zlib=yes
9336 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9337 dnl and has no pkg-config for it at least on some tinderboxes,
9338 dnl so leaving that out for now
9339 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9340 AC_MSG_CHECKING([which zlib to use])
9341 if test "$with_system_zlib" = "yes"; then
9342 AC_MSG_RESULT([external])
9344 AC_CHECK_HEADER(zlib.h, [],
9345 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9346 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9347 [AC_MSG_ERROR(zlib not found or functional)], [])
9349 AC_MSG_RESULT([internal])
9351 BUILD_TYPE="$BUILD_TYPE ZLIB"
9352 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9353 if test "$COM" = "MSC"; then
9354 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9356 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9359 AC_SUBST(ZLIB_CFLAGS)
9361 AC_SUBST(SYSTEM_ZLIB)
9363 dnl ===================================================================
9364 dnl Check for system jpeg
9365 dnl ===================================================================
9366 AC_MSG_CHECKING([which libjpeg to use])
9367 if test "$with_system_jpeg" = "yes"; then
9368 AC_MSG_RESULT([external])
9370 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9371 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9372 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9373 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9376 AC_MSG_RESULT([internal, libjpeg-turbo])
9377 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9380 x86_64 | amd64 | i*86 | x86 | ia32)
9381 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9382 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9383 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9384 NASM="$LODE_HOME/opt/bin/nasm"
9385 elif test -x "/opt/lo/bin/nasm"; then
9386 NASM="/opt/lo/bin/nasm"
9390 if test -n "$NASM"; then
9391 AC_MSG_CHECKING([for object file format of host system])
9393 cygwin* | mingw* | pw32* | wsl*)
9403 msdosdjgpp* | go32*)
9406 os2-emx*) # not tested
9407 objfmt='MSOMF' # obj
9409 linux*coff* | linux*oldld*)
9425 kfreebsd* | freebsd* | netbsd* | openbsd*)
9426 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9439 solaris* | sunos* | sysv* | sco*)
9449 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9464 AC_MSG_RESULT([$objfmt])
9465 if test "$objfmt" = 'ELF ?'; then
9467 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9470 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9472 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9473 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9474 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9475 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9476 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9477 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9478 ELF) NAFLAGS='-felf -DELF -DPIC';;
9479 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9480 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9481 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9482 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9484 AC_MSG_RESULT([$NAFLAGS])
9486 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9487 cat > conftest.asm << EOF
9488 [%line __oline__ "configure"
9496 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9497 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9500 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9501 cat conftest.asm >&AS_MESSAGE_LOG_FD
9504 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9510 if test -z "$NASM"; then
9512 ****************************************************************************
9513 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9517 if test "$build_os" = "cygwin"; then
9519 install a pre-compiled binary for Win32
9521 mkdir -p /opt/lo/bin
9523 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9526 or get and install one from http://www.nasm.us/
9528 Then re-run autogen.sh
9530 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9531 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9536 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9540 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9541 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9549 AC_SUBST(LIBJPEG_CFLAGS)
9550 AC_SUBST(LIBJPEG_LIBS)
9551 AC_SUBST(SYSTEM_LIBJPEG)
9553 dnl ===================================================================
9554 dnl Check for system clucene
9555 dnl ===================================================================
9556 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9557 if test "$SYSTEM_CLUCENE" = TRUE; then
9559 save_CXXFLAGS=$CXXFLAGS
9560 save_CPPFLAGS=$CPPFLAGS
9561 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9562 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9563 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9564 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9565 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9566 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9567 CXXFLAGS=$save_CXXFLAGS
9568 CPPFLAGS=$save_CPPFLAGS
9570 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9573 dnl ===================================================================
9574 dnl Check for system expat
9575 dnl ===================================================================
9576 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9578 dnl ===================================================================
9579 dnl Check for system xmlsec
9580 dnl ===================================================================
9581 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9583 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9584 if test "$enable_eot" = "yes"; then
9586 AC_DEFINE([ENABLE_EOT])
9587 AC_MSG_RESULT([yes])
9589 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9594 AC_SUBST([ENABLE_EOT])
9596 dnl ===================================================================
9597 dnl Check for DLP libs
9598 dnl ===================================================================
9599 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9600 AS_IF([test "$COM" = "MSC"],
9601 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9602 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9604 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9605 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9607 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9609 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9611 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9612 AS_IF([test "$COM" = "MSC"],
9613 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9614 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9616 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9617 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9619 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9621 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9622 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9624 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9626 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9628 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9630 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9631 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9633 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9634 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9636 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9638 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9639 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9641 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9643 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9645 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9647 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9649 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9650 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9652 dnl ===================================================================
9653 dnl Check for system lcms2
9654 dnl ===================================================================
9655 if test "$with_system_lcms2" != "yes"; then
9658 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9659 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9660 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9661 if test "$GCC" = "yes"; then
9662 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9664 if test "$COM" = "MSC"; then # override the above
9665 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9668 dnl ===================================================================
9669 dnl Check for system cppunit
9670 dnl ===================================================================
9671 if test "$_os" != "Android" ; then
9672 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9675 dnl ===================================================================
9676 dnl Check whether freetype is available
9678 dnl FreeType has 3 different kinds of versions
9679 dnl * release, like 2.4.10
9680 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9682 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9685 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9686 dnl ===================================================================
9687 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9688 if test "x$ac_config_site_64bit_host" = xYES; then
9689 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9691 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9693 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9695 # ===================================================================
9696 # Check for system libxslt
9697 # to prevent incompatibilities between internal libxml2 and external libxslt,
9698 # or vice versa, use with_system_libxml here
9699 # ===================================================================
9700 if test "$with_system_libxml" = "auto"; then
9703 with_system_libxml="$with_system_libs"
9706 with_system_libxml=no
9709 if test "$enable_fuzzers" != "yes"; then
9710 with_system_libxml=yes
9712 with_system_libxml=no
9718 AC_MSG_CHECKING([which libxslt to use])
9719 if test "$with_system_libxml" = "yes"; then
9720 AC_MSG_RESULT([external])
9722 if test "$_os" = "Darwin"; then
9723 dnl make sure to use SDK path
9724 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9725 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9727 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9728 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9730 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9731 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9732 FilterLibs "${LIBXSLT_LIBS}"
9733 LIBXSLT_LIBS="${filteredlibs}"
9734 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9735 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9736 FilterLibs "${LIBEXSLT_LIBS}"
9737 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9740 dnl Check for xsltproc
9741 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9742 if test "$XSLTPROC" = "no"; then
9743 AC_MSG_ERROR([xsltproc is required])
9746 AC_MSG_RESULT([internal])
9748 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9750 AC_SUBST(SYSTEM_LIBXSLT)
9751 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9752 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9754 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9756 AC_SUBST(LIBEXSLT_CFLAGS)
9757 AC_SUBST(LIBEXSLT_LIBS)
9758 AC_SUBST(LIBXSLT_CFLAGS)
9759 AC_SUBST(LIBXSLT_LIBS)
9762 # ===================================================================
9763 # Check for system libxml
9764 # ===================================================================
9765 AC_MSG_CHECKING([which libxml 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 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9773 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9774 elif test $_os = iOS; then
9775 dnl make sure to use SDK path
9776 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9777 LIBXML_CFLAGS="-I$usr/include/libxml2"
9778 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9780 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9781 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9782 FilterLibs "${LIBXML_LIBS}"
9783 LIBXML_LIBS="${filteredlibs}"
9786 dnl Check for xmllint
9787 AC_PATH_PROG(XMLLINT, xmllint, no)
9788 if test "$XMLLINT" = "no"; then
9789 AC_MSG_ERROR([xmllint is required])
9792 AC_MSG_RESULT([internal])
9794 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9795 if test "$COM" = "MSC"; then
9796 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9798 if test "$COM" = "MSC"; then
9799 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9801 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9802 if test "$DISABLE_DYNLOADING" = TRUE; then
9803 LIBXML_LIBS="$LIBXML_LIBS -lm"
9806 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9808 AC_SUBST(SYSTEM_LIBXML)
9809 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9810 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9812 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9813 AC_SUBST(LIBXML_CFLAGS)
9814 AC_SUBST(LIBXML_LIBS)
9817 # =====================================================================
9818 # Checking for a Python interpreter with version >= 3.3.
9819 # Optionally user can pass an option to configure, i. e.
9820 # ./configure PYTHON=/usr/bin/python
9821 # =====================================================================
9822 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9823 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9824 # unless PYTHON is defined as above which allows 'system'
9825 enable_python=internal
9827 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9828 if test -n "$PYTHON"; then
9829 PYTHON_FOR_BUILD=$PYTHON
9831 # This allows a lack of system python with no error, we use internal one in that case.
9832 AM_PATH_PYTHON([3.3],, [:])
9833 # Clean PYTHON_VERSION checked below if cross-compiling
9835 if test "$PYTHON" != ":"; then
9836 PYTHON_FOR_BUILD=$PYTHON
9841 # Checks for Python to use for Pyuno
9842 AC_MSG_CHECKING([which Python to use for Pyuno])
9843 case "$enable_python" in
9845 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9846 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9847 # requirement from the choice whether to include Python stuff in the installer, but why
9849 AC_MSG_ERROR([Python is required at build time.])
9852 AC_MSG_RESULT([none])
9855 if test "$DISABLE_SCRIPTING" = TRUE; then
9856 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9857 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9859 AC_MSG_RESULT([none, overridden by --disable-scripting])
9861 elif test $build_os = cygwin -o $build_os = wsl; then
9862 dnl When building on Windows we don't attempt to use any installed
9863 dnl "system" Python.
9864 AC_MSG_RESULT([fully internal])
9865 enable_python=internal
9866 elif test "$cross_compiling" = yes; then
9867 AC_MSG_RESULT([system])
9868 enable_python=system
9870 # Unset variables set by the above AM_PATH_PYTHON so that
9871 # we actually do check anew.
9873 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
9874 AM_PATH_PYTHON([3.3],, [:])
9875 AC_MSG_CHECKING([which Python to use for Pyuno])
9876 if test "$PYTHON" = ":"; then
9877 if test -z "$PYTHON_FOR_BUILD"; then
9878 AC_MSG_RESULT([fully internal])
9880 AC_MSG_RESULT([internal])
9882 enable_python=internal
9884 AC_MSG_RESULT([system])
9885 enable_python=system
9890 AC_MSG_RESULT([internal])
9893 AC_MSG_RESULT([fully internal])
9894 enable_python=internal
9897 AC_MSG_RESULT([system])
9898 if test "$_os" = Darwin -a -z "$PYTHON"; then
9899 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9903 AC_MSG_ERROR([Incorrect --enable-python option])
9907 if test $enable_python != no; then
9908 BUILD_TYPE="$BUILD_TYPE PYUNO"
9911 if test $enable_python = system; then
9912 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9913 # Fallback: Accept these in the environment, or as set above
9916 elif test "$cross_compiling" != yes; then
9917 # Unset variables set by the above AM_PATH_PYTHON so that
9918 # we actually do check anew.
9919 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
9920 # This causes an error if no python command is found
9921 AM_PATH_PYTHON([3.3])
9922 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9923 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9924 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9925 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9926 if test -z "$PKG_CONFIG"; then
9927 PYTHON_CFLAGS="-I$python_include"
9928 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9929 elif $PKG_CONFIG --exists python-$python_version-embed; then
9930 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9931 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9932 elif $PKG_CONFIG --exists python-$python_version; then
9933 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9934 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9936 PYTHON_CFLAGS="-I$python_include"
9937 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9939 FilterLibs "${PYTHON_LIBS}"
9940 PYTHON_LIBS="${filteredlibs}"
9942 dnl How to find out the cross-compilation Python installation path?
9943 AC_MSG_CHECKING([for python version])
9944 AS_IF([test -n "$PYTHON_VERSION"],
9945 [AC_MSG_RESULT([$PYTHON_VERSION])],
9946 [AC_MSG_RESULT([not found])
9947 AC_MSG_ERROR([no usable python found])])
9948 test -n "$PYTHON_CFLAGS" && break
9951 dnl Check if the headers really work
9952 save_CPPFLAGS="$CPPFLAGS"
9953 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9954 AC_CHECK_HEADER(Python.h)
9955 CPPFLAGS="$save_CPPFLAGS"
9957 # let the PYTHON_FOR_BUILD match the same python installation that
9958 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9959 # better for PythonTests.
9960 PYTHON_FOR_BUILD=$PYTHON
9963 if test "$with_lxml" != no; then
9964 if test -z "$PYTHON_FOR_BUILD"; then
9967 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9970 if test "$cross_compiling" != yes ; then
9971 BUILD_TYPE="$BUILD_TYPE LXML"
9976 AC_MSG_CHECKING([for python lxml])
9977 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9978 AC_MSG_RESULT([yes])
9982 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9985 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9986 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9987 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9989 BUILD_TYPE="$BUILD_TYPE LXML"
9990 AC_MSG_RESULT([no, using internal lxml])
9993 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10001 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10003 PYTHON_VERSION_MAJOR=3
10004 PYTHON_VERSION_MINOR=8
10005 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10006 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10007 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10009 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10011 # Embedded Python dies without Home set
10012 if test "$HOME" = ""; then
10017 dnl By now enable_python should be "system", "internal" or "no"
10018 case $enable_python in
10022 if test "x$ac_cv_header_Python_h" != "xyes"; then
10023 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10027 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10028 AC_MSG_CHECKING([for correct python library version])
10029 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10030 #include <Python.h>
10032 int main(int argc, char **argv) {
10033 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10036 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10039 dnl FIXME Check if the Python library can be linked with, too?
10043 BUILD_TYPE="$BUILD_TYPE PYTHON"
10044 if test "$OS" = LINUX -o "$OS" = WNT ; then
10045 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10049 DISABLE_PYTHON=TRUE
10053 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10057 AC_SUBST(DISABLE_PYTHON)
10058 AC_SUBST(SYSTEM_PYTHON)
10059 AC_SUBST(PYTHON_CFLAGS)
10060 AC_SUBST(PYTHON_FOR_BUILD)
10061 AC_SUBST(PYTHON_LIBS)
10062 AC_SUBST(PYTHON_VERSION)
10063 AC_SUBST(PYTHON_VERSION_MAJOR)
10064 AC_SUBST(PYTHON_VERSION_MINOR)
10066 AC_MSG_CHECKING([whether to build LibreLogo])
10067 case "$enable_python" in
10069 AC_MSG_RESULT([no; Python disabled])
10072 if test "${enable_librelogo}" = "no"; then
10073 AC_MSG_RESULT([no])
10075 AC_MSG_RESULT([yes])
10076 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10077 AC_DEFINE([ENABLE_LIBRELOGO],1)
10081 AC_SUBST(ENABLE_LIBRELOGO)
10087 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10088 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10089 ENABLE_MARIADBC=TRUE
10090 AC_MSG_RESULT([yes])
10091 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10093 AC_MSG_RESULT([no])
10095 AC_SUBST(ENABLE_MARIADBC)
10096 AC_SUBST(MARIADBC_MAJOR)
10097 AC_SUBST(MARIADBC_MINOR)
10098 AC_SUBST(MARIADBC_MICRO)
10100 if test "$ENABLE_MARIADBC" = "TRUE"; then
10101 dnl ===================================================================
10102 dnl Check for system MariaDB
10103 dnl ===================================================================
10104 AC_MSG_CHECKING([which MariaDB to use])
10105 if test "$with_system_mariadb" = "yes"; then
10106 AC_MSG_RESULT([external])
10107 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10108 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10109 if test -z "$MARIADBCONFIG"; then
10110 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10111 if test -z "$MARIADBCONFIG"; then
10112 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10113 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10116 AC_MSG_CHECKING([MariaDB version])
10117 MARIADB_VERSION=`$MARIADBCONFIG --version`
10118 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10119 if test "$MARIADB_MAJOR" -ge "5"; then
10120 AC_MSG_RESULT([OK])
10122 AC_MSG_ERROR([too old, use 5.0.x or later])
10124 AC_MSG_CHECKING([for MariaDB Client library])
10125 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10126 if test "$COM_IS_CLANG" = TRUE; then
10127 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10129 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10130 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10131 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10133 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10134 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10135 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10136 | sed -e 's|/lib64/|/lib/|')
10138 FilterLibs "${MARIADB_LIBS}"
10139 MARIADB_LIBS="${filteredlibs}"
10140 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10141 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10142 if test "$enable_bundle_mariadb" = "yes"; then
10143 AC_MSG_RESULT([yes])
10144 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10145 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10147 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10149 /g' | grep -E '(mysqlclient|mariadb)')
10150 if test "$_os" = "Darwin"; then
10151 LIBMARIADB=${LIBMARIADB}.dylib
10152 elif test "$_os" = "WINNT"; then
10153 LIBMARIADB=${LIBMARIADB}.dll
10155 LIBMARIADB=${LIBMARIADB}.so
10157 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10158 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10159 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10160 AC_MSG_RESULT([found.])
10161 PathFormat "$LIBMARIADB_PATH"
10162 LIBMARIADB_PATH="$formatted_path"
10164 AC_MSG_ERROR([not found.])
10167 AC_MSG_RESULT([no])
10168 BUNDLE_MARIADB_CONNECTOR_C=
10171 AC_MSG_RESULT([internal])
10172 SYSTEM_MARIADB_CONNECTOR_C=
10173 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10174 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10175 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10178 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10179 AC_SUBST(MARIADB_CFLAGS)
10180 AC_SUBST(MARIADB_LIBS)
10181 AC_SUBST(LIBMARIADB)
10182 AC_SUBST(LIBMARIADB_PATH)
10183 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10186 dnl ===================================================================
10187 dnl Check for system hsqldb
10188 dnl ===================================================================
10189 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10190 AC_MSG_CHECKING([which hsqldb to use])
10191 if test "$with_system_hsqldb" = "yes"; then
10192 AC_MSG_RESULT([external])
10194 if test -z $HSQLDB_JAR; then
10195 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10197 if ! test -f $HSQLDB_JAR; then
10198 AC_MSG_ERROR(hsqldb.jar not found.)
10200 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10204 my $file = "$ENV{'HSQLDB_JAR'}";
10205 my $zip = Archive::Zip->new( $file );
10206 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10207 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10209 push @l, split(/\n/, $mf);
10210 foreach my $line (@l)
10212 if ($line =~ m/Specification-Version:/)
10214 ($t, $version) = split (/:/,$line);
10215 $version =~ s/^\s//;
10216 ($a, $b, $c, $d) = split (/\./,$version);
10217 if ($c == "0" && $d > "8")
10232 AC_MSG_RESULT([yes])
10234 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10237 AC_MSG_RESULT([internal])
10239 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10243 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10244 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10247 AC_SUBST(SYSTEM_HSQLDB)
10248 AC_SUBST(HSQLDB_JAR)
10250 dnl ===================================================================
10251 dnl Check for PostgreSQL stuff
10252 dnl ===================================================================
10253 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10254 if test "x$enable_postgresql_sdbc" != "xno"; then
10255 AC_MSG_RESULT([yes])
10256 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10258 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10259 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10261 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10262 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10265 postgres_interface=""
10266 if test "$with_system_postgresql" = "yes"; then
10267 postgres_interface="external PostgreSQL"
10268 SYSTEM_POSTGRESQL=TRUE
10269 if test "$_os" = Darwin; then
10271 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10272 pg_supp_path="$P_SEP$d$pg_supp_path"
10275 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10276 if test -n "$PGCONFIG"; then
10277 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10278 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10280 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10281 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10282 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10284 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10287 FilterLibs "${POSTGRESQL_LIB}"
10288 POSTGRESQL_LIB="${filteredlibs}"
10290 # if/when anything else than PostgreSQL uses Kerberos,
10291 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10296 # macOS has system MIT Kerberos 5 since 10.4
10297 if test "$with_krb5" != "no"; then
10300 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10301 # that the libraries where these functions are located on macOS will change, is it?
10302 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10303 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10306 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10307 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10308 KRB5_LIBS="$KRB5_LIBS $LIBS"
10311 if test "$with_gssapi" != "no"; then
10314 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10315 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10321 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10322 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10325 Linux|GNU|*BSD|DragonFly)
10326 if test "$with_krb5" != "no"; then
10329 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10330 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10333 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10334 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10335 KRB5_LIBS="$KRB5_LIBS $LIBS"
10338 if test "$with_gssapi" != "no"; then
10341 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10342 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10348 if test "$with_krb5" = "yes"; then
10351 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10352 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10355 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10356 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10357 KRB5_LIBS="$KRB5_LIBS $LIBS"
10360 if test "$with_gssapi" = "yes"; then
10363 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10364 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10370 if test -n "$with_libpq_path"; then
10371 SYSTEM_POSTGRESQL=TRUE
10372 postgres_interface="external libpq"
10373 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10374 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10377 postgres_interface="internal"
10379 POSTGRESQL_INC="%OVERRIDE_ME%"
10380 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10384 AC_MSG_CHECKING([PostgreSQL C interface])
10385 AC_MSG_RESULT([$postgres_interface])
10387 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10388 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10389 save_CFLAGS=$CFLAGS
10390 save_CPPFLAGS=$CPPFLAGS
10392 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10393 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10394 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10395 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10396 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10397 CFLAGS=$save_CFLAGS
10398 CPPFLAGS=$save_CPPFLAGS
10401 BUILD_POSTGRESQL_SDBC=TRUE
10403 AC_MSG_RESULT([no])
10405 AC_SUBST(WITH_KRB5)
10406 AC_SUBST(WITH_GSSAPI)
10407 AC_SUBST(GSSAPI_LIBS)
10408 AC_SUBST(KRB5_LIBS)
10409 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10410 AC_SUBST(SYSTEM_POSTGRESQL)
10411 AC_SUBST(POSTGRESQL_INC)
10412 AC_SUBST(POSTGRESQL_LIB)
10414 dnl ===================================================================
10415 dnl Check for Firebird stuff
10416 dnl ===================================================================
10417 ENABLE_FIREBIRD_SDBC=
10418 if test "$enable_firebird_sdbc" = "yes" ; then
10419 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10421 dnl ===================================================================
10422 dnl Check for system Firebird
10423 dnl ===================================================================
10424 AC_MSG_CHECKING([which Firebird to use])
10425 if test "$with_system_firebird" = "yes"; then
10426 AC_MSG_RESULT([external])
10427 SYSTEM_FIREBIRD=TRUE
10428 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10429 if test -z "$FIREBIRDCONFIG"; then
10430 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10431 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10432 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10434 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10436 AC_MSG_NOTICE([fb_config found])
10437 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10438 AC_MSG_CHECKING([for Firebird Client library])
10439 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10440 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10441 FilterLibs "${FIREBIRD_LIBS}"
10442 FIREBIRD_LIBS="${filteredlibs}"
10444 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10445 AC_MSG_CHECKING([Firebird version])
10446 if test -n "${FIREBIRD_VERSION}"; then
10447 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10448 if test "$FIREBIRD_MAJOR" -ge "3"; then
10449 AC_MSG_RESULT([OK])
10451 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10454 save_CFLAGS="${CFLAGS}"
10455 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10456 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10457 #if defined(FB_API_VER) && FB_API_VER == 30
10458 int fb_api_is_30(void) { return 0; }
10460 #error "Wrong Firebird API version"
10461 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10462 CFLAGS="$save_CFLAGS"
10464 ENABLE_FIREBIRD_SDBC=TRUE
10465 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10466 elif test "$enable_database_connectivity" = no; then
10467 AC_MSG_RESULT([none])
10468 elif test "$cross_compiling" = "yes"; then
10469 AC_MSG_RESULT([none])
10471 dnl Embedded Firebird has version 3.0
10472 dnl We need libatomic_ops for any non X86/X64 system
10473 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10474 dnl ===================================================================
10475 dnl Check for system libatomic_ops
10476 dnl ===================================================================
10477 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10478 if test "$with_system_libatomic_ops" = "yes"; then
10479 SYSTEM_LIBATOMIC_OPS=TRUE
10480 AC_CHECK_HEADERS(atomic_ops.h, [],
10481 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10483 SYSTEM_LIBATOMIC_OPS=
10484 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10485 LIBATOMIC_OPS_LIBS="-latomic_ops"
10486 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10490 AC_MSG_RESULT([internal])
10492 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10493 FIREBIRD_LIBS="-lfbclient"
10495 if test "$with_system_libtommath" = "yes"; then
10496 SYSTEM_LIBTOMMATH=TRUE
10497 dnl check for tommath presence
10499 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10500 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10504 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10505 LIBTOMMATH_LIBS="-ltommath"
10506 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10509 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10510 ENABLE_FIREBIRD_SDBC=TRUE
10511 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10514 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10515 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10516 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10517 AC_SUBST(LIBATOMIC_OPS_LIBS)
10518 AC_SUBST(SYSTEM_FIREBIRD)
10519 AC_SUBST(FIREBIRD_CFLAGS)
10520 AC_SUBST(FIREBIRD_LIBS)
10521 AC_SUBST(SYSTEM_LIBTOMMATH)
10522 AC_SUBST(LIBTOMMATH_CFLAGS)
10523 AC_SUBST(LIBTOMMATH_LIBS)
10525 dnl ===================================================================
10526 dnl Check for system curl
10527 dnl ===================================================================
10528 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10530 dnl ===================================================================
10531 dnl Check for system boost
10532 dnl ===================================================================
10533 AC_MSG_CHECKING([which boost to use])
10534 if test "$with_system_boost" = "yes"; then
10535 AC_MSG_RESULT([external])
10537 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10539 AX_BOOST_FILESYSTEM
10542 AC_LANG_PUSH([C++])
10543 save_CXXFLAGS=$CXXFLAGS
10544 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10545 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10546 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10547 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10548 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10549 CXXFLAGS=$save_CXXFLAGS
10551 # this is in m4/ax_boost_base.m4
10552 FilterLibs "${BOOST_LDFLAGS}"
10553 BOOST_LDFLAGS="${filteredlibs}"
10555 AC_MSG_RESULT([internal])
10556 BUILD_TYPE="$BUILD_TYPE BOOST"
10558 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10559 # use warning-suppressing wrapper headers
10560 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10562 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10565 AC_SUBST(SYSTEM_BOOST)
10567 dnl ===================================================================
10568 dnl Check for system mdds
10569 dnl ===================================================================
10570 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10571 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10573 dnl ===================================================================
10574 dnl Check for system dragonbox
10575 dnl ===================================================================
10576 AC_MSG_CHECKING([which dragonbox to use])
10577 if test "$with_system_dragonbox" = "yes"; then
10578 AC_MSG_RESULT([external])
10579 SYSTEM_DRAGONBOX=TRUE
10580 AC_LANG_PUSH([C++])
10581 save_CPPFLAGS=$CPPFLAGS
10582 # This is where upstream installs to, unfortunately no .pc or so...
10583 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10584 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10585 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10586 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10588 CPPFLAGS=$save_CPPFLAGS
10590 AC_MSG_RESULT([internal])
10591 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10594 AC_SUBST([SYSTEM_DRAGONBOX])
10595 AC_SUBST([DRAGONBOX_CFLAGS])
10597 dnl ===================================================================
10598 dnl Check for system libfixmath
10599 dnl ===================================================================
10600 AC_MSG_CHECKING([which libfixmath to use])
10601 if test "$with_system_libfixmath" = "yes"; then
10602 AC_MSG_RESULT([external])
10603 SYSTEM_LIBFIXMATH=TRUE
10604 AC_LANG_PUSH([C++])
10605 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10606 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10607 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10610 AC_MSG_RESULT([internal])
10613 AC_SUBST([SYSTEM_LIBFIXMATH])
10615 dnl ===================================================================
10616 dnl Check for system glm
10617 dnl ===================================================================
10618 AC_MSG_CHECKING([which glm to use])
10619 if test "$with_system_glm" = "yes"; then
10620 AC_MSG_RESULT([external])
10622 AC_LANG_PUSH([C++])
10623 AC_CHECK_HEADER([glm/glm.hpp], [],
10624 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10627 AC_MSG_RESULT([internal])
10628 BUILD_TYPE="$BUILD_TYPE GLM"
10630 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10632 AC_SUBST([GLM_CFLAGS])
10633 AC_SUBST([SYSTEM_GLM])
10635 dnl ===================================================================
10636 dnl Check for system odbc
10637 dnl ===================================================================
10638 AC_MSG_CHECKING([which odbc headers to use])
10639 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
10640 AC_MSG_RESULT([external])
10641 SYSTEM_ODBC_HEADERS=TRUE
10643 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10644 save_CPPFLAGS=$CPPFLAGS
10646 PathFormat "$winsdktest"
10647 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"
10648 AC_CHECK_HEADER(sqlext.h, [],
10649 [AC_MSG_ERROR(odbc not found. install odbc)],
10650 [#include <windows.h>])
10651 CPPFLAGS=$save_CPPFLAGS
10653 AC_CHECK_HEADER(sqlext.h, [],
10654 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10656 elif test "$enable_database_connectivity" = no; then
10657 AC_MSG_RESULT([none])
10659 AC_MSG_RESULT([internal])
10660 SYSTEM_ODBC_HEADERS=
10661 BUILD_TYPE="$BUILD_TYPE IODBC"
10663 AC_SUBST(SYSTEM_ODBC_HEADERS)
10665 dnl ===================================================================
10666 dnl Check for system NSS
10667 dnl ===================================================================
10668 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10669 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10670 AC_DEFINE(HAVE_FEATURE_NSS)
10672 elif test $_os != iOS ; then
10675 AC_SUBST(ENABLE_NSS)
10677 dnl ===================================================================
10678 dnl Enable LDAP support
10679 dnl ===================================================================
10681 if test "$test_openldap" = yes; then
10682 AC_MSG_CHECKING([whether to enable LDAP support])
10683 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10684 AC_MSG_RESULT([yes])
10687 if test "$enable_ldap" != "yes"; then
10688 AC_MSG_RESULT([no])
10690 AC_MSG_RESULT([no (needs NSS or system openldap)])
10694 dnl ===================================================================
10695 dnl Check for system openldap
10696 dnl ===================================================================
10698 if test "$ENABLE_LDAP" = TRUE; then
10699 AC_MSG_CHECKING([which openldap library to use])
10700 if test "$with_system_openldap" = yes; then
10701 AC_MSG_RESULT([external])
10702 SYSTEM_OPENLDAP=TRUE
10703 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10704 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10705 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10707 AC_MSG_RESULT([internal])
10708 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10713 AC_SUBST(ENABLE_LDAP)
10714 AC_SUBST(SYSTEM_OPENLDAP)
10716 dnl ===================================================================
10717 dnl Check for TLS/SSL and cryptographic implementation to use
10718 dnl ===================================================================
10719 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10720 if test -n "$with_tls"; then
10723 AC_DEFINE(USE_TLS_OPENSSL)
10725 AC_MSG_RESULT([$TLS])
10727 if test "$enable_openssl" != "yes"; then
10728 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10731 # warn that OpenSSL has been selected but not all TLS code has this option
10732 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10733 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10736 AC_DEFINE(USE_TLS_NSS)
10738 AC_MSG_RESULT([$TLS])
10741 AC_MSG_RESULT([none])
10742 AC_MSG_WARN([Skipping TLS/SSL])
10746 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10748 nss - Mozilla's Network Security Services (NSS)
10753 # default to using NSS, it results in smaller oox lib
10754 AC_DEFINE(USE_TLS_NSS)
10756 AC_MSG_RESULT([$TLS])
10760 dnl ===================================================================
10761 dnl Check for system sane
10762 dnl ===================================================================
10763 AC_MSG_CHECKING([which sane header to use])
10764 if test "$with_system_sane" = "yes"; then
10765 AC_MSG_RESULT([external])
10766 AC_CHECK_HEADER(sane/sane.h, [],
10767 [AC_MSG_ERROR(sane not found. install sane)], [])
10769 AC_MSG_RESULT([internal])
10770 BUILD_TYPE="$BUILD_TYPE SANE"
10773 dnl ===================================================================
10774 dnl Check for system icu
10775 dnl ===================================================================
10778 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10779 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10780 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10781 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10782 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10783 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10784 if test "$SYSTEM_ICU" = TRUE; then
10785 AC_LANG_PUSH([C++])
10786 AC_MSG_CHECKING([for unicode/rbbi.h])
10787 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10790 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10791 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10792 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10794 if test "$ICU_MAJOR" -ge 50; then
10795 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10799 if test "$CROSS_COMPILING" != TRUE; then
10800 # using the system icu tools can lead to version confusion, use the
10801 # ones from the build environment when cross-compiling
10802 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10803 if test -z "$SYSTEM_GENBRK"; then
10804 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10806 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10807 if test -z "$SYSTEM_GENCCODE"; then
10808 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10810 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10811 if test -z "$SYSTEM_GENCMN"; then
10812 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10814 if test "$ICU_MAJOR" -lt 49; then
10815 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10816 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10817 ICU_RECLASSIFIED_HEBREW_LETTER=
10821 if test "$ICU_MAJOR" -ge "59"; then
10822 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10823 # with -std=c++11 but not all external libraries can be built with that,
10824 # for those use a bit-compatible typedef uint16_t UChar; see
10825 # icu/source/common/unicode/umachine.h
10826 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10830 AC_SUBST(SYSTEM_GENBRK)
10831 AC_SUBST(SYSTEM_GENCCODE)
10832 AC_SUBST(SYSTEM_GENCMN)
10833 AC_SUBST(ICU_MAJOR)
10834 AC_SUBST(ICU_MINOR)
10835 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10836 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10837 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10838 AC_SUBST(ICU_UCHAR_TYPE)
10840 dnl ==================================================================
10842 dnl ==================================================================
10843 DEFAULT_CRASHDUMP_VALUE="true"
10844 AC_MSG_CHECKING([whether to enable breakpad])
10845 if test "$enable_breakpad" != yes; then
10846 AC_MSG_RESULT([no])
10848 AC_MSG_RESULT([yes])
10849 ENABLE_BREAKPAD="TRUE"
10850 AC_DEFINE(ENABLE_BREAKPAD)
10851 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10852 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10854 AC_MSG_CHECKING([for disable crash dump])
10855 if test "$enable_crashdump" = no; then
10856 DEFAULT_CRASHDUMP_VALUE="false"
10857 AC_MSG_RESULT([yes])
10859 AC_MSG_RESULT([no])
10862 AC_MSG_CHECKING([for crashreport config])
10863 if test "$with_symbol_config" = "no"; then
10864 BREAKPAD_SYMBOL_CONFIG="invalid"
10865 AC_MSG_RESULT([no])
10867 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10868 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10869 AC_MSG_RESULT([yes])
10871 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10873 AC_SUBST(ENABLE_BREAKPAD)
10874 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10876 dnl ===================================================================
10878 dnl ===================================================================
10879 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10880 if test "$with_system_orcus" != "yes"; then
10881 if test "$SYSTEM_BOOST" = "TRUE"; then
10882 dnl Link with Boost.System
10883 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10884 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10885 dnl in documentation has no effect.
10889 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10890 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10891 AC_SUBST([BOOST_SYSTEM_LIB])
10892 AC_SUBST(SYSTEM_LIBORCUS)
10894 dnl ===================================================================
10896 dnl ===================================================================
10897 harfbuzz_required_version=5.1.0
10899 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10900 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10901 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10902 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10905 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],,,TRUE)
10906 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],,,TRUE)
10909 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10910 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10914 if test "$COM" = "MSC"; then # override the above
10915 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10916 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10919 if test "$with_system_harfbuzz" = "yes"; then
10920 if test "$with_system_graphite" = "no"; then
10921 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10923 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10925 save_CFLAGS="$CFLAGS"
10926 LIBS="$LIBS $HARFBUZZ_LIBS"
10927 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10928 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10930 CFLAGS="$save_CFLAGS"
10932 if test "$with_system_graphite" = "yes"; then
10933 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10937 if test "$USING_X11" = TRUE; then
10940 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10942 if test -z "$x_includes"; then
10943 x_includes="default_x_includes"
10945 if test -z "$x_libraries"; then
10946 x_libraries="default_x_libraries"
10948 CFLAGS="$CFLAGS $X_CFLAGS"
10949 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10950 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10952 x_includes="no_x_includes"
10953 x_libraries="no_x_libraries"
10956 if test "$USING_X11" = TRUE; then
10957 dnl ===================================================================
10958 dnl Check for extension headers
10959 dnl ===================================================================
10960 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10961 [#include <X11/extensions/shape.h>])
10963 # vcl needs ICE and SM
10964 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10965 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10966 [AC_MSG_ERROR(ICE library not found)])
10967 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10968 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10969 [AC_MSG_ERROR(SM library not found)])
10972 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10973 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10974 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10977 dnl ===================================================================
10978 dnl Check for system Xrender
10979 dnl ===================================================================
10980 AC_MSG_CHECKING([whether to use Xrender])
10981 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10982 AC_MSG_RESULT([yes])
10983 PKG_CHECK_MODULES(XRENDER, xrender)
10984 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10985 FilterLibs "${XRENDER_LIBS}"
10986 XRENDER_LIBS="${filteredlibs}"
10987 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10988 [AC_MSG_ERROR(libXrender not found or functional)], [])
10989 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10990 [AC_MSG_ERROR(Xrender not found. install X)], [])
10992 AC_MSG_RESULT([no])
10994 AC_SUBST(XRENDER_CFLAGS)
10995 AC_SUBST(XRENDER_LIBS)
10997 dnl ===================================================================
10998 dnl Check for XRandr
10999 dnl ===================================================================
11000 AC_MSG_CHECKING([whether to enable RandR support])
11001 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11002 AC_MSG_RESULT([yes])
11003 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11004 if test "$ENABLE_RANDR" != "TRUE"; then
11005 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11006 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11008 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11009 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11010 XRANDR_LIBS="-lXrandr "
11011 ENABLE_RANDR="TRUE"
11013 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11014 FilterLibs "${XRANDR_LIBS}"
11015 XRANDR_LIBS="${filteredlibs}"
11018 AC_MSG_RESULT([no])
11020 AC_SUBST(XRANDR_CFLAGS)
11021 AC_SUBST(XRANDR_LIBS)
11022 AC_SUBST(ENABLE_RANDR)
11024 if test -z "$with_webdav"; then
11025 with_webdav=$test_webdav
11028 AC_MSG_CHECKING([for WebDAV support])
11029 case "$with_webdav" in
11031 AC_MSG_RESULT([no])
11035 AC_MSG_RESULT([yes])
11036 # curl is already mandatory (almost) and checked elsewhere
11037 if test "$enable_curl" = "no"; then
11038 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11043 AC_SUBST(WITH_WEBDAV)
11045 dnl ===================================================================
11046 dnl Check for disabling cve_tests
11047 dnl ===================================================================
11048 AC_MSG_CHECKING([whether to execute CVE tests])
11049 # If not explicitly enabled or disabled, default
11050 if test -z "$enable_cve_tests"; then
11053 # Default cves off for Windows with its wild and wonderful
11054 # variety of AV software kicking in and panicking
11055 enable_cve_tests=no
11059 enable_cve_tests=yes
11063 if test "$enable_cve_tests" = "no"; then
11064 AC_MSG_RESULT([no])
11065 DISABLE_CVE_TESTS=TRUE
11066 AC_SUBST(DISABLE_CVE_TESTS)
11068 AC_MSG_RESULT([yes])
11071 dnl ===================================================================
11072 dnl Check for system openssl
11073 dnl ===================================================================
11075 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11076 if test "$enable_openssl" = "yes"; then
11077 AC_MSG_RESULT([no])
11078 ENABLE_OPENSSL=TRUE
11079 if test "$_os" = Darwin ; then
11080 # OpenSSL is deprecated when building for 10.7 or later.
11082 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11083 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11085 with_system_openssl=no
11086 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11087 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11088 && test "$with_system_openssl" != "no"; then
11089 with_system_openssl=yes
11090 SYSTEM_OPENSSL=TRUE
11092 OPENSSL_LIBS="-lssl -lcrypto"
11094 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11095 if test -n "${SYSTEM_OPENSSL}"; then
11096 AC_DEFINE([SYSTEM_OPENSSL])
11099 if test "$with_system_openssl" = "yes"; then
11100 AC_MSG_CHECKING([whether openssl supports SHA512])
11102 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11103 SHA512_CTX context;
11104 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11108 AC_MSG_RESULT([yes])
11110 # warn that although OpenSSL is disabled, system libraries may depend on it
11111 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11112 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11115 AC_SUBST([ENABLE_OPENSSL])
11117 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11118 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11119 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11120 enable_cipher_openssl_backend=no
11122 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11125 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11126 ENABLE_CIPHER_OPENSSL_BACKEND=
11127 if test "$enable_cipher_openssl_backend" = yes; then
11128 AC_MSG_RESULT([yes])
11129 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11131 AC_MSG_RESULT([no])
11133 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11135 dnl ===================================================================
11136 dnl Select the crypto backends used by LO
11137 dnl ===================================================================
11139 if test "$build_crypto" = yes; then
11140 if test "$OS" = WNT; then
11141 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11142 AC_DEFINE([USE_CRYPTO_MSCAPI])
11143 elif test "$ENABLE_NSS" = TRUE; then
11144 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11145 AC_DEFINE([USE_CRYPTO_NSS])
11149 dnl ===================================================================
11150 dnl Check for system redland
11151 dnl ===================================================================
11152 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11153 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11154 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11155 if test "$with_system_redland" = "yes"; then
11156 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11157 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11163 AC_SUBST(RAPTOR_MAJOR)
11164 AC_SUBST(RASQAL_MAJOR)
11165 AC_SUBST(REDLAND_MAJOR)
11167 dnl ===================================================================
11168 dnl Check for system hunspell
11169 dnl ===================================================================
11170 AC_MSG_CHECKING([which libhunspell to use])
11171 if test "$with_system_hunspell" = "yes"; then
11172 AC_MSG_RESULT([external])
11173 SYSTEM_HUNSPELL=TRUE
11174 AC_LANG_PUSH([C++])
11175 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11176 if test "$HUNSPELL_PC" != "TRUE"; then
11177 AC_CHECK_HEADER(hunspell.hxx, [],
11179 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11180 [AC_MSG_ERROR(hunspell headers not found.)], [])
11182 AC_CHECK_LIB([hunspell], [main], [:],
11183 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11184 HUNSPELL_LIBS=-lhunspell
11187 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11188 FilterLibs "${HUNSPELL_LIBS}"
11189 HUNSPELL_LIBS="${filteredlibs}"
11191 AC_MSG_RESULT([internal])
11193 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11194 if test "$COM" = "MSC"; then
11195 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11197 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11199 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11201 AC_SUBST(SYSTEM_HUNSPELL)
11202 AC_SUBST(HUNSPELL_CFLAGS)
11203 AC_SUBST(HUNSPELL_LIBS)
11205 dnl ===================================================================
11206 dnl Check for system zxing
11207 dnl ===================================================================
11208 AC_MSG_CHECKING([whether to use zxing])
11209 if test "$enable_zxing" = "no"; then
11210 AC_MSG_RESULT([no])
11214 AC_MSG_RESULT([yes])
11216 AC_MSG_CHECKING([which libzxing to use])
11217 if test "$with_system_zxing" = "yes"; then
11218 AC_MSG_RESULT([external])
11221 AC_LANG_PUSH([C++])
11222 save_CXXFLAGS=$CXXFLAGS
11225 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11226 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11227 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11228 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11229 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11230 dnl unsetting IFS."):
11232 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11233 dnl ignore them here:
11234 if test -z "$i"; then
11237 dnl TODO: White space in $i would cause problems:
11238 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11239 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11240 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11242 CXXFLAGS=$save_CXXFLAGS
11243 if test -z "$ZXING_CFLAGS"; then
11244 AC_MSG_ERROR(zxing headers not found.)
11246 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11247 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11248 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11250 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11251 FilterLibs "${ZXING_LIBS}"
11252 ZXING_LIBS="${filteredlibs}"
11254 AC_MSG_RESULT([internal])
11256 BUILD_TYPE="$BUILD_TYPE ZXING"
11258 if test "$ENABLE_ZXING" = TRUE; then
11259 AC_DEFINE(ENABLE_ZXING)
11262 AC_SUBST(SYSTEM_ZXING)
11263 AC_SUBST(ENABLE_ZXING)
11264 AC_SUBST(ZXING_CFLAGS)
11265 AC_SUBST(ZXING_LIBS)
11267 dnl ===================================================================
11268 dnl Check for system box2d
11269 dnl ===================================================================
11270 AC_MSG_CHECKING([which box2d to use])
11271 if test "$with_system_box2d" = "yes"; then
11272 AC_MSG_RESULT([external])
11274 AC_LANG_PUSH([C++])
11275 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11276 [BOX2D_H_FOUND='FALSE'])
11277 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11279 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11281 # fail this. there's no other alternative to check when we are here.
11282 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11283 [AC_MSG_ERROR(box2d headers not found.)])
11285 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11287 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11288 [ AC_MSG_ERROR(box2d library not found.) ], [])
11289 BOX2D_LIBS=-l$_BOX2D_LIB
11291 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11292 FilterLibs "${BOX2D_LIBS}"
11293 BOX2D_LIBS="${filteredlibs}"
11295 AC_MSG_RESULT([internal])
11297 BUILD_TYPE="$BUILD_TYPE BOX2D"
11299 AC_SUBST(SYSTEM_BOX2D)
11300 AC_SUBST(BOX2D_CFLAGS)
11301 AC_SUBST(BOX2D_LIBS)
11303 dnl ===================================================================
11304 dnl Checking for altlinuxhyph
11305 dnl ===================================================================
11306 AC_MSG_CHECKING([which altlinuxhyph to use])
11307 if test "$with_system_altlinuxhyph" = "yes"; then
11308 AC_MSG_RESULT([external])
11310 AC_CHECK_HEADER(hyphen.h, [],
11311 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11312 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11313 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11314 [#include <hyphen.h>])
11315 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11316 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11317 if test -z "$HYPHEN_LIB"; then
11318 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11319 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11321 if test -z "$HYPHEN_LIB"; then
11322 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11323 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11326 AC_MSG_RESULT([internal])
11328 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11329 if test "$COM" = "MSC"; then
11330 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11332 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11335 AC_SUBST(SYSTEM_HYPH)
11336 AC_SUBST(HYPHEN_LIB)
11338 dnl ===================================================================
11339 dnl Checking for mythes
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([which mythes to use])
11342 if test "$with_system_mythes" = "yes"; then
11343 AC_MSG_RESULT([external])
11345 AC_LANG_PUSH([C++])
11346 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11347 if test "$MYTHES_PKGCONFIG" = "no"; then
11348 AC_CHECK_HEADER(mythes.hxx, [],
11349 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11350 AC_CHECK_LIB([mythes-1.2], [main], [:],
11351 [ MYTHES_FOUND=no], [])
11352 if test "$MYTHES_FOUND" = "no"; then
11353 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11354 [ MYTHES_FOUND=no], [])
11356 if test "$MYTHES_FOUND" = "no"; then
11357 AC_MSG_ERROR([mythes library not found!.])
11361 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11362 FilterLibs "${MYTHES_LIBS}"
11363 MYTHES_LIBS="${filteredlibs}"
11365 AC_MSG_RESULT([internal])
11367 BUILD_TYPE="$BUILD_TYPE MYTHES"
11368 if test "$COM" = "MSC"; then
11369 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11371 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11374 AC_SUBST(SYSTEM_MYTHES)
11375 AC_SUBST(MYTHES_CFLAGS)
11376 AC_SUBST(MYTHES_LIBS)
11378 dnl ===================================================================
11379 dnl How should we build the linear programming solver ?
11380 dnl ===================================================================
11383 AC_MSG_CHECKING([whether to build with CoinMP])
11384 if test "$enable_coinmp" != "no"; then
11386 AC_MSG_RESULT([yes])
11387 if test "$with_system_coinmp" = "yes"; then
11389 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11390 FilterLibs "${COINMP_LIBS}"
11391 COINMP_LIBS="${filteredlibs}"
11393 BUILD_TYPE="$BUILD_TYPE COINMP"
11396 AC_MSG_RESULT([no])
11398 AC_SUBST(ENABLE_COINMP)
11399 AC_SUBST(SYSTEM_COINMP)
11400 AC_SUBST(COINMP_CFLAGS)
11401 AC_SUBST(COINMP_LIBS)
11404 AC_MSG_CHECKING([whether to build with lpsolve])
11405 if test "$enable_lpsolve" != "no"; then
11406 ENABLE_LPSOLVE=TRUE
11407 AC_MSG_RESULT([yes])
11409 AC_MSG_RESULT([no])
11411 AC_SUBST(ENABLE_LPSOLVE)
11413 if test "$ENABLE_LPSOLVE" = TRUE; then
11414 AC_MSG_CHECKING([which lpsolve to use])
11415 if test "$with_system_lpsolve" = "yes"; then
11416 AC_MSG_RESULT([external])
11417 SYSTEM_LPSOLVE=TRUE
11418 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11419 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11421 # some systems need this. Like Ubuntu...
11422 AC_CHECK_LIB(m, floor)
11423 AC_CHECK_LIB(dl, dlopen)
11424 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11425 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11428 AC_MSG_RESULT([internal])
11430 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11433 AC_SUBST(SYSTEM_LPSOLVE)
11435 dnl ===================================================================
11436 dnl Checking for libexttextcat
11437 dnl ===================================================================
11438 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11439 if test "$with_system_libexttextcat" = "yes"; then
11440 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11442 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11444 dnl ===================================================================
11445 dnl Checking for libnumbertext
11446 dnl ===================================================================
11447 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11448 if test "$with_system_libnumbertext" = "yes"; then
11449 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11450 SYSTEM_LIBNUMBERTEXT=YES
11452 SYSTEM_LIBNUMBERTEXT=
11454 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11455 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11457 dnl ***************************************
11458 dnl testing libc version for Linux...
11459 dnl ***************************************
11460 if test "$_os" = "Linux"; then
11461 AC_MSG_CHECKING([whether the libc is recent enough])
11462 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11463 #include <features.h>
11464 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11465 #error glibc >= 2.1 is required
11467 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11470 dnl =========================================
11471 dnl Check for uuidgen
11472 dnl =========================================
11473 if test "$_os" = "WINNT"; then
11474 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11475 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11476 UUIDGEN=uuidgen.exe
11479 AC_PATH_PROG([UUIDGEN], [uuidgen])
11480 if test -z "$UUIDGEN"; then
11481 AC_MSG_WARN([uuid is needed for building installation sets])
11485 dnl ***************************************
11486 dnl Checking for bison and flex
11487 dnl ***************************************
11488 AC_PATH_PROG(BISON, bison)
11489 if test -z "$BISON"; then
11490 AC_MSG_ERROR([no bison found in \$PATH, install it])
11492 AC_MSG_CHECKING([the bison version])
11493 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11494 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11495 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11498 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]
11499 dnl typedef union YYSTYPE
11502 dnl while at least 3.4.1 is know to be good:
11503 if test "$COMPILER_PLUGINS" = TRUE; then
11504 if test "$_bison_longver" -lt 2004; then
11505 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11508 if test "$_bison_longver" -lt 2000; then
11509 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11515 AC_PATH_PROG(FLEX, flex)
11516 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11517 FLEX=`cygpath -m $FLEX`
11519 if test -z "$FLEX"; then
11520 AC_MSG_ERROR([no flex found in \$PATH, install it])
11522 AC_MSG_CHECKING([the flex version])
11523 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11524 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11525 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11530 AC_PATH_PROG(DIFF, diff)
11531 if test -z "$DIFF"; then
11532 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11536 AC_PATH_PROG(UNIQ, uniq)
11537 if test -z "$UNIQ"; then
11538 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11542 dnl ***************************************
11543 dnl Checking for patch
11544 dnl ***************************************
11545 AC_PATH_PROG(PATCH, patch)
11546 if test -z "$PATCH"; then
11547 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11550 dnl On Solaris or macOS, check if --with-gnu-patch was used
11551 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11552 if test -z "$with_gnu_patch"; then
11555 if test -x "$with_gnu_patch"; then
11556 GNUPATCH=$with_gnu_patch
11558 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11562 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11563 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11564 AC_MSG_RESULT([yes])
11566 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11567 AC_MSG_RESULT([no, but accepted (Apple patch)])
11568 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11570 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11577 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11578 GNUPATCH=`cygpath -m $GNUPATCH`
11581 dnl We also need to check for --with-gnu-cp
11583 if test -z "$with_gnu_cp"; then
11584 # check the place where the good stuff is hidden on Solaris...
11585 if test -x /usr/gnu/bin/cp; then
11586 GNUCP=/usr/gnu/bin/cp
11588 AC_PATH_PROGS(GNUCP, gnucp cp)
11590 if test -z $GNUCP; then
11591 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11594 if test -x "$with_gnu_cp"; then
11597 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11601 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11602 GNUCP=`cygpath -m $GNUCP`
11605 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11606 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11607 AC_MSG_RESULT([yes])
11608 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11609 AC_MSG_RESULT([yes])
11611 case "$build_os" in
11612 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11615 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11618 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11627 dnl ***************************************
11628 dnl testing assembler path
11629 dnl ***************************************
11631 if test "$_os" = "WINNT"; then
11632 case "$WIN_HOST_ARCH" in
11633 x86) assembler=ml.exe ;;
11634 x64) assembler=ml64.exe ;;
11635 arm64) assembler=armasm64.exe ;;
11638 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11639 if test -f "$MSVC_HOST_PATH/$assembler"; then
11640 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11641 AC_MSG_RESULT([$ML_EXE])
11643 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11649 dnl ===================================================================
11650 dnl We need zip and unzip
11651 dnl ===================================================================
11652 AC_PATH_PROG(ZIP, zip)
11653 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11654 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11655 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],,)
11658 AC_PATH_PROG(UNZIP, unzip)
11659 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11661 dnl ===================================================================
11662 dnl Zip must be a specific type for different build types.
11663 dnl ===================================================================
11664 if test $build_os = cygwin; then
11665 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11666 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11670 dnl ===================================================================
11671 dnl We need touch with -h option support.
11672 dnl ===================================================================
11673 AC_PATH_PROG(TOUCH, touch)
11674 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11675 touch "$WARNINGS_FILE"
11676 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11677 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],,)
11680 dnl ===================================================================
11681 dnl Check for system epoxy
11682 dnl ===================================================================
11683 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11684 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11686 dnl ===================================================================
11687 dnl Set vcl option: coordinate device in double or sal_Int32
11688 dnl ===================================================================
11690 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11691 if test "$enable_float_device_pixel" = yes; then
11692 AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11693 AC_MSG_RESULT([double])
11695 AC_MSG_RESULT([sal_Int32])
11698 dnl ===================================================================
11699 dnl Show which vclplugs will be built.
11700 dnl ===================================================================
11703 libo_ENABLE_VCLPLUG([gen])
11704 libo_ENABLE_VCLPLUG([gtk3])
11705 libo_ENABLE_VCLPLUG([gtk3_kde5])
11706 libo_ENABLE_VCLPLUG([gtk4])
11707 libo_ENABLE_VCLPLUG([kf5])
11708 libo_ENABLE_VCLPLUG([qt5])
11709 libo_ENABLE_VCLPLUG([qt6])
11711 if test "$_os" = "WINNT"; then
11713 elif test "$_os" = "Darwin"; then
11715 elif test "$_os" = "iOS"; then
11717 elif test "$_os" = Android; then
11721 build_vcl_plugins="$R"
11722 if test -z "$build_vcl_plugins"; then
11723 build_vcl_plugins=" none"
11725 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11727 AC_SUBST([VCL_PLUGIN_INFO])
11729 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11730 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11733 dnl ===================================================================
11734 dnl Check for GTK libraries
11735 dnl ===================================================================
11739 ENABLE_GTKTILEDVIEWER=""
11740 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11741 if test "$with_system_cairo" = no; then
11742 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.'
11744 : ${with_system_cairo:=yes}
11745 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)
11746 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11747 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11748 FilterLibs "${GTK3_LIBS}"
11749 GTK3_LIBS="${filteredlibs}"
11751 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11752 if test "$with_system_epoxy" != "yes"; then
11753 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11754 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11755 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11757 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11758 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11759 if test "$build_os" = "cygwin"; then
11760 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11761 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11764 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11765 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11766 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11767 FilterLibs "${GTK3_LIBS}"
11768 GTK3_LIBS="${filteredlibs}"
11769 ENABLE_GTKTILEDVIEWER="yes"
11771 AC_SUBST(GTK3_LIBS)
11772 AC_SUBST(GTK3_CFLAGS)
11773 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11777 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11778 if test "$with_system_cairo" = no; then
11779 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11781 : ${with_system_cairo:=yes}
11782 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11783 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11784 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11785 FilterLibs "${GTK4_LIBS}"
11786 GTK4_LIBS="${filteredlibs}"
11788 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11789 if test "$with_system_epoxy" != "yes"; then
11790 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11791 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11792 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11795 AC_SUBST(GTK4_LIBS)
11796 AC_SUBST(GTK4_CFLAGS)
11798 if test "$enable_introspection" = yes; then
11799 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11800 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11802 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11806 dnl ===================================================================
11807 dnl check for dbus support
11808 dnl ===================================================================
11812 DBUS_GLIB_CFLAGS=""
11816 if test "$enable_dbus" = "no"; then
11820 AC_MSG_CHECKING([whether to enable DBUS support])
11821 if test "$test_dbus" = "yes"; then
11823 AC_MSG_RESULT([yes])
11824 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11825 AC_DEFINE(ENABLE_DBUS)
11826 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11827 FilterLibs "${DBUS_LIBS}"
11828 DBUS_LIBS="${filteredlibs}"
11830 # Glib is needed for BluetoothServer
11831 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11832 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11834 DBUS_HAVE_GLIB="TRUE"
11835 AC_DEFINE(DBUS_HAVE_GLIB,1)
11837 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11840 AC_MSG_RESULT([no])
11843 AC_SUBST(ENABLE_DBUS)
11844 AC_SUBST(DBUS_CFLAGS)
11845 AC_SUBST(DBUS_LIBS)
11846 AC_SUBST(DBUS_GLIB_CFLAGS)
11847 AC_SUBST(DBUS_GLIB_LIBS)
11848 AC_SUBST(DBUS_HAVE_GLIB)
11850 AC_MSG_CHECKING([whether to enable Impress remote control])
11851 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11852 AC_MSG_RESULT([yes])
11853 ENABLE_SDREMOTE=TRUE
11854 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11856 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11858 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11859 # The Bluetooth code doesn't compile with macOS SDK 10.15
11860 if test "$enable_sdremote_bluetooth" = yes; then
11861 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11863 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11864 enable_sdremote_bluetooth=no
11866 # If not explicitly enabled or disabled, default
11867 if test -z "$enable_sdremote_bluetooth"; then
11870 # Default to yes for these
11871 enable_sdremote_bluetooth=yes
11875 enable_sdremote_bluetooth=no
11879 # $enable_sdremote_bluetooth is guaranteed non-empty now
11881 if test "$enable_sdremote_bluetooth" != "no"; then
11882 if test "$OS" = "LINUX"; then
11883 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11884 AC_MSG_RESULT([yes])
11885 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11886 dnl ===================================================================
11887 dnl Check for system bluez
11888 dnl ===================================================================
11889 AC_MSG_CHECKING([which Bluetooth header to use])
11890 if test "$with_system_bluez" = "yes"; then
11891 AC_MSG_RESULT([external])
11892 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11893 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11896 AC_MSG_RESULT([internal])
11900 AC_MSG_RESULT([no, dbus disabled])
11901 ENABLE_SDREMOTE_BLUETOOTH=
11905 AC_MSG_RESULT([yes])
11906 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11908 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11909 <key>com.apple.security.device.bluetooth</key>
11913 AC_MSG_RESULT([no])
11914 ENABLE_SDREMOTE_BLUETOOTH=
11920 AC_MSG_RESULT([no])
11922 AC_SUBST(ENABLE_SDREMOTE)
11923 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11924 AC_SUBST(SDREMOTE_ENTITLEMENT)
11925 AC_SUBST(SYSTEM_BLUEZ)
11927 dnl ===================================================================
11928 dnl Check whether to enable GIO support
11929 dnl ===================================================================
11930 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11931 AC_MSG_CHECKING([whether to enable GIO support])
11932 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11933 dnl Need at least 2.26 for the dbus support.
11934 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11935 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11936 if test "$ENABLE_GIO" = "TRUE"; then
11937 AC_DEFINE(ENABLE_GIO)
11938 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11939 FilterLibs "${GIO_LIBS}"
11940 GIO_LIBS="${filteredlibs}"
11943 AC_MSG_RESULT([no])
11946 AC_SUBST(ENABLE_GIO)
11947 AC_SUBST(GIO_CFLAGS)
11951 dnl ===================================================================
11953 SPLIT_APP_MODULES=""
11954 if test "$enable_split_app_modules" = "yes"; then
11955 SPLIT_APP_MODULES="TRUE"
11957 AC_SUBST(SPLIT_APP_MODULES)
11959 SPLIT_OPT_FEATURES=""
11960 if test "$enable_split_opt_features" = "yes"; then
11961 SPLIT_OPT_FEATURES="TRUE"
11963 AC_SUBST(SPLIT_OPT_FEATURES)
11965 dnl ===================================================================
11966 dnl Check whether the GStreamer libraries are available.
11967 dnl ===================================================================
11969 ENABLE_GSTREAMER_1_0=""
11971 if test "$test_gstreamer_1_0" = yes; then
11973 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11974 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11975 ENABLE_GSTREAMER_1_0="TRUE"
11976 AC_MSG_RESULT([yes])
11977 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11978 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11979 FilterLibs "${GSTREAMER_1_0_LIBS}"
11980 GSTREAMER_1_0_LIBS="${filteredlibs}"
11981 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11983 AC_MSG_RESULT([no])
11986 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11987 AC_SUBST(GSTREAMER_1_0_LIBS)
11988 AC_SUBST(ENABLE_GSTREAMER_1_0)
11990 ENABLE_OPENGL_TRANSITIONS=
11991 ENABLE_OPENGL_CANVAS=
11992 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11994 elif test "$_os" = "Darwin"; then
11995 # We use frameworks on macOS, no need for detail checks
11996 ENABLE_OPENGL_TRANSITIONS=TRUE
11997 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11998 ENABLE_OPENGL_CANVAS=TRUE
11999 elif test $_os = WINNT; then
12000 ENABLE_OPENGL_TRANSITIONS=TRUE
12001 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12002 ENABLE_OPENGL_CANVAS=TRUE
12004 if test "$USING_X11" = TRUE; then
12005 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12006 ENABLE_OPENGL_TRANSITIONS=TRUE
12007 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12008 ENABLE_OPENGL_CANVAS=TRUE
12012 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12013 AC_SUBST(ENABLE_OPENGL_CANVAS)
12015 dnl =================================================
12016 dnl Check whether to build with OpenCL support.
12017 dnl =================================================
12019 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12020 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12021 # platform (optional at run-time, used through clew).
12022 BUILD_TYPE="$BUILD_TYPE OPENCL"
12023 AC_DEFINE(HAVE_FEATURE_OPENCL)
12026 dnl =================================================
12027 dnl Check whether to build with dconf support.
12028 dnl =================================================
12030 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12031 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
12032 if test "$enable_dconf" = yes; then
12033 AC_MSG_ERROR([dconf not found])
12038 AC_MSG_CHECKING([whether to enable dconf])
12039 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12043 AC_MSG_RESULT([no])
12046 AC_DEFINE(ENABLE_DCONF)
12047 AC_MSG_RESULT([yes])
12049 AC_SUBST([DCONF_CFLAGS])
12050 AC_SUBST([DCONF_LIBS])
12051 AC_SUBST([ENABLE_DCONF])
12054 AC_MSG_CHECKING([whether to build the PDF import feature])
12056 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12057 AC_MSG_RESULT([yes])
12058 ENABLE_PDFIMPORT=TRUE
12059 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12061 AC_MSG_RESULT([no])
12065 AC_MSG_CHECKING([whether to build PDFium])
12067 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12068 AC_MSG_RESULT([yes])
12070 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12072 AC_MSG_RESULT([no])
12074 AC_SUBST(ENABLE_PDFIUM)
12076 if test "$ENABLE_PDFIUM" = "TRUE"; then
12077 AC_MSG_CHECKING([which OpenJPEG library to use])
12078 if test "$with_system_openjpeg" = "yes"; then
12079 SYSTEM_OPENJPEG2=TRUE
12080 AC_MSG_RESULT([external])
12081 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12082 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12083 FilterLibs "${OPENJPEG2_LIBS}"
12084 OPENJPEG2_LIBS="${filteredlibs}"
12086 SYSTEM_OPENJPEG2=FALSE
12087 AC_MSG_RESULT([internal])
12090 AC_MSG_CHECKING([which Abseil library to use])
12091 if test "$with_system_abseil" = "yes"; then
12092 AC_MSG_RESULT([external])
12094 AC_LANG_PUSH([C++])
12095 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12096 [AC_MSG_ERROR(abseil headers not found.)], [])
12097 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12098 [AC_MSG_ERROR(abseil headers not found.)], [])
12099 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12100 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12101 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12102 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12103 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12105 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12106 FilterLibs "${ABSEIL_LIBS}"
12107 ABSEIL_LIBS="${filteredlibs}"
12109 AC_MSG_RESULT([internal])
12112 AC_SUBST(SYSTEM_OPENJPEG2)
12113 AC_SUBST(SYSTEM_ABSEIL)
12114 AC_SUBST(ABSEIL_CFLAGS)
12115 AC_SUBST(ABSEIL_LIBS)
12117 dnl ===================================================================
12118 dnl Check for poppler
12119 dnl ===================================================================
12121 AC_MSG_CHECKING([whether to build Poppler])
12122 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12123 AC_MSG_RESULT([yes])
12124 ENABLE_POPPLER=TRUE
12125 AC_DEFINE(HAVE_FEATURE_POPPLER)
12127 AC_MSG_RESULT([no])
12129 AC_SUBST(ENABLE_POPPLER)
12131 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12132 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12135 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12136 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12139 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12140 dnl ===================================================================
12141 dnl Check for system poppler
12142 dnl ===================================================================
12143 AC_MSG_CHECKING([which PDF import poppler to use])
12144 if test "$with_system_poppler" = "yes"; then
12145 AC_MSG_RESULT([external])
12146 SYSTEM_POPPLER=TRUE
12147 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12148 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12149 FilterLibs "${POPPLER_LIBS}"
12150 POPPLER_LIBS="${filteredlibs}"
12152 AC_MSG_RESULT([internal])
12154 BUILD_TYPE="$BUILD_TYPE POPPLER"
12156 AC_DEFINE([ENABLE_PDFIMPORT],1)
12158 AC_SUBST(ENABLE_PDFIMPORT)
12159 AC_SUBST(SYSTEM_POPPLER)
12160 AC_SUBST(POPPLER_CFLAGS)
12161 AC_SUBST(POPPLER_LIBS)
12165 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12166 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12167 if test "$SYSTEM_FREETYPE" = TRUE; then
12168 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12169 [skia_freetype_ok=yes],
12170 [skia_freetype_ok=no])
12171 else # internal is ok
12172 skia_freetype_ok=yes
12174 AC_MSG_CHECKING([whether to build Skia])
12175 if test "$skia_freetype_ok" = "yes"; then
12176 if test "$enable_skia" = "debug"; then
12177 AC_MSG_RESULT([yes (debug)])
12178 ENABLE_SKIA_DEBUG=TRUE
12180 AC_MSG_RESULT([yes])
12184 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12185 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12188 AC_DEFINE(HAVE_FEATURE_SKIA)
12189 BUILD_TYPE="$BUILD_TYPE SKIA"
12191 if test "$OS" = "MACOSX"; then
12192 AC_DEFINE(SK_SUPPORT_GPU,1)
12193 AC_DEFINE(SK_METAL,1)
12197 AC_DEFINE(SK_SUPPORT_GPU,1)
12198 AC_DEFINE(SK_VULKAN,1)
12203 AC_MSG_RESULT([no (freetype too old)])
12204 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12208 AC_MSG_CHECKING([whether to build Skia])
12209 AC_MSG_RESULT([no])
12211 AC_SUBST(ENABLE_SKIA)
12212 AC_SUBST(ENABLE_SKIA_DEBUG)
12214 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12215 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12216 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12217 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12218 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12219 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12220 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12221 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12222 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12223 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12224 HAVE_LO_CLANG_DLLEXPORTINLINES=
12226 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12227 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12228 AC_MSG_CHECKING([for Clang])
12229 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12231 if test "$_os" = "WINNT"; then
12232 AC_MSG_CHECKING([for clang-cl])
12233 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12234 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12235 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12236 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12237 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12238 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12240 if test -n "$LO_CLANG_CC"; then
12241 dnl explicitly set -m32/-m64
12242 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12243 LO_CLANG_CXX="$LO_CLANG_CC"
12244 AC_MSG_RESULT([$LO_CLANG_CC])
12246 AC_MSG_RESULT([no])
12249 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12250 echo "#include <stdlib.h>" > conftest.c
12251 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12252 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12253 rm -f conftest.c conftest.obj
12254 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12255 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12257 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12260 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12261 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12264 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12265 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12266 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12267 if test "$clang2_ver" -lt 50002; then
12268 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12273 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12275 CXX="$LO_CLANG_CXX"
12276 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12277 AC_LANG_PUSH([C++])
12278 save_CXXFLAGS=$CXXFLAGS
12279 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12280 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12281 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12282 AC_MSG_RESULT([yes])
12283 ], [AC_MSG_RESULT([no])])
12284 CXXFLAGS=$save_CXXFLAGS
12287 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12288 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.])
12291 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12292 # Skia is the default on Windows and Mac, so hard-require Clang.
12293 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12294 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12295 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12297 AC_MSG_WARN([Clang compiler not found.])
12302 CXX="$LO_CLANG_CXX"
12303 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12306 flag_sse41=-msse4.1
12307 flag_sse42=-msse4.2
12310 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12311 flag_avx512f=-mavx512f
12315 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12316 AC_LANG_PUSH([C++])
12317 save_CXXFLAGS=$CXXFLAGS
12318 CXXFLAGS="$CXXFLAGS $flag_sse2"
12319 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12320 #include <emmintrin.h>
12322 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12323 c = _mm_xor_si128 (a, b);
12327 [can_compile_sse2=yes],
12328 [can_compile_sse2=no])
12330 CXXFLAGS=$save_CXXFLAGS
12331 AC_MSG_RESULT([${can_compile_sse2}])
12332 if test "${can_compile_sse2}" = "yes" ; then
12333 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12336 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12337 AC_LANG_PUSH([C++])
12338 save_CXXFLAGS=$CXXFLAGS
12339 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12340 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12341 #include <tmmintrin.h>
12343 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12344 c = _mm_maddubs_epi16 (a, b);
12348 [can_compile_ssse3=yes],
12349 [can_compile_ssse3=no])
12351 CXXFLAGS=$save_CXXFLAGS
12352 AC_MSG_RESULT([${can_compile_ssse3}])
12353 if test "${can_compile_ssse3}" = "yes" ; then
12354 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12357 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12358 AC_LANG_PUSH([C++])
12359 save_CXXFLAGS=$CXXFLAGS
12360 CXXFLAGS="$CXXFLAGS $flag_sse41"
12361 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12362 #include <smmintrin.h>
12364 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12365 c = _mm_cmpeq_epi64 (a, b);
12369 [can_compile_sse41=yes],
12370 [can_compile_sse41=no])
12372 CXXFLAGS=$save_CXXFLAGS
12373 AC_MSG_RESULT([${can_compile_sse41}])
12374 if test "${can_compile_sse41}" = "yes" ; then
12375 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12378 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12379 AC_LANG_PUSH([C++])
12380 save_CXXFLAGS=$CXXFLAGS
12381 CXXFLAGS="$CXXFLAGS $flag_sse42"
12382 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12383 #include <nmmintrin.h>
12385 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12386 c = _mm_cmpgt_epi64 (a, b);
12390 [can_compile_sse42=yes],
12391 [can_compile_sse42=no])
12393 CXXFLAGS=$save_CXXFLAGS
12394 AC_MSG_RESULT([${can_compile_sse42}])
12395 if test "${can_compile_sse42}" = "yes" ; then
12396 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12399 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12400 AC_LANG_PUSH([C++])
12401 save_CXXFLAGS=$CXXFLAGS
12402 CXXFLAGS="$CXXFLAGS $flag_avx"
12403 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12404 #include <immintrin.h>
12406 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12407 c = _mm256_xor_ps(a, b);
12411 [can_compile_avx=yes],
12412 [can_compile_avx=no])
12414 CXXFLAGS=$save_CXXFLAGS
12415 AC_MSG_RESULT([${can_compile_avx}])
12416 if test "${can_compile_avx}" = "yes" ; then
12417 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12420 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12421 AC_LANG_PUSH([C++])
12422 save_CXXFLAGS=$CXXFLAGS
12423 CXXFLAGS="$CXXFLAGS $flag_avx2"
12424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12425 #include <immintrin.h>
12427 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12428 c = _mm256_maddubs_epi16(a, b);
12432 [can_compile_avx2=yes],
12433 [can_compile_avx2=no])
12435 CXXFLAGS=$save_CXXFLAGS
12436 AC_MSG_RESULT([${can_compile_avx2}])
12437 if test "${can_compile_avx2}" = "yes" ; then
12438 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12441 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12442 AC_LANG_PUSH([C++])
12443 save_CXXFLAGS=$CXXFLAGS
12444 CXXFLAGS="$CXXFLAGS $flag_avx512"
12445 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12446 #include <immintrin.h>
12448 __m512i a = _mm512_loadu_si512(0);
12449 __m512d v1 = _mm512_load_pd(0);
12450 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12451 __m512d v2 = _mm512_abs_pd(v1);
12455 [can_compile_avx512=yes],
12456 [can_compile_avx512=no])
12458 CXXFLAGS=$save_CXXFLAGS
12459 AC_MSG_RESULT([${can_compile_avx512}])
12460 if test "${can_compile_avx512}" = "yes" ; then
12461 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12462 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12465 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12466 AC_LANG_PUSH([C++])
12467 save_CXXFLAGS=$CXXFLAGS
12468 CXXFLAGS="$CXXFLAGS $flag_f16c"
12469 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12470 #include <immintrin.h>
12472 __m128i a = _mm_set1_epi32 (0);
12474 c = _mm_cvtph_ps(a);
12478 [can_compile_f16c=yes],
12479 [can_compile_f16c=no])
12481 CXXFLAGS=$save_CXXFLAGS
12482 AC_MSG_RESULT([${can_compile_f16c}])
12483 if test "${can_compile_f16c}" = "yes" ; then
12484 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12487 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12488 AC_LANG_PUSH([C++])
12489 save_CXXFLAGS=$CXXFLAGS
12490 CXXFLAGS="$CXXFLAGS $flag_fma"
12491 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12492 #include <immintrin.h>
12494 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12495 d = _mm256_fmadd_ps(a, b, c);
12499 [can_compile_fma=yes],
12500 [can_compile_fma=no])
12502 CXXFLAGS=$save_CXXFLAGS
12503 AC_MSG_RESULT([${can_compile_fma}])
12504 if test "${can_compile_fma}" = "yes" ; then
12505 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12512 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12514 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12515 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12519 save_CFLAGS=$CFLAGS
12520 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12521 dnl an empty program will do, we're checking the compiler flags
12522 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12523 [use_ccache=yes], [use_ccache=no])
12524 CFLAGS=$save_CFLAGS
12526 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12527 AC_MSG_RESULT([yes])
12529 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12530 AC_MSG_RESULT([no])
12534 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12535 AC_LANG_PUSH([C++])
12537 CXX="$LO_CLANG_CXX"
12538 save_CXXFLAGS=$CXXFLAGS
12539 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12540 dnl an empty program will do, we're checking the compiler flags
12541 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12542 [use_ccache=yes], [use_ccache=no])
12543 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12544 AC_MSG_RESULT([yes])
12546 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12547 AC_MSG_RESULT([no])
12549 CXXFLAGS=$save_CXXFLAGS
12554 AC_SUBST(LO_CLANG_CC)
12555 AC_SUBST(LO_CLANG_CXX)
12556 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12557 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12558 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12559 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12560 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12561 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12562 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12563 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12564 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12565 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12566 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12567 AC_SUBST(CLANG_USE_LD)
12568 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12572 AC_MSG_CHECKING([whether to enable gpgmepp])
12573 if test "$enable_gpgmepp" = no; then
12574 AC_MSG_RESULT([no])
12575 elif test "$enable_mpl_subset" = "yes"; then
12576 AC_MSG_RESULT([no (MPL only])
12577 elif test "$enable_fuzzers" = "yes"; then
12578 AC_MSG_RESULT([no (oss-fuzz)])
12579 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12580 AC_MSG_RESULT([yes])
12581 dnl ===================================================================
12582 dnl Check for system gpgme
12583 dnl ===================================================================
12584 AC_MSG_CHECKING([which gpgmepp to use])
12585 if test "$with_system_gpgmepp" = "yes"; then
12586 AC_MSG_RESULT([external])
12587 SYSTEM_GPGMEPP=TRUE
12589 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12590 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12591 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12592 AC_CHECK_HEADER(gpgme.h, [],
12593 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12594 AC_CHECK_LIB(gpgmepp, main, [],
12595 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12596 GPGMEPP_LIBS=-lgpgmepp
12598 AC_MSG_RESULT([internal])
12599 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12601 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12602 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12603 if test "$_os" != "WINNT"; then
12604 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12605 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12608 ENABLE_GPGMEPP=TRUE
12609 AC_DEFINE([HAVE_FEATURE_GPGME])
12610 AC_PATH_PROG(GPG, gpg)
12611 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12612 # so let's exclude that manually for the moment
12613 if test -n "$GPG" -a "$_os" != "WINNT"; then
12614 # make sure we not only have a working gpgme, but a full working
12615 # gpg installation to run OpenPGP signature verification
12616 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12618 if test "$_os" = "Linux"; then
12620 AC_MSG_CHECKING([for /run/user/$uid])
12621 if test -d /run/user/$uid; then
12622 AC_MSG_RESULT([yes])
12623 AC_PATH_PROG(GPGCONF, gpgconf)
12625 # Older versions of gpgconf are not working as expected, since
12626 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12627 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12628 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12629 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12630 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12631 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12632 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12633 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12634 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12635 if $GPGCONF --dump-options > /dev/null ; then
12636 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12637 AC_MSG_RESULT([yes])
12638 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12639 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12641 AC_MSG_RESULT([no])
12644 AC_MSG_RESULT([no. missing or broken gpgconf?])
12647 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12650 AC_MSG_RESULT([no])
12654 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12656 AC_SUBST(ENABLE_GPGMEPP)
12657 AC_SUBST(SYSTEM_GPGMEPP)
12658 AC_SUBST(GPG_ERROR_CFLAGS)
12659 AC_SUBST(GPG_ERROR_LIBS)
12660 AC_SUBST(LIBASSUAN_CFLAGS)
12661 AC_SUBST(LIBASSUAN_LIBS)
12662 AC_SUBST(GPGMEPP_CFLAGS)
12663 AC_SUBST(GPGMEPP_LIBS)
12665 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12666 if test "$with_java" != "no"; then
12667 AC_MSG_RESULT([yes])
12668 ENABLE_JAVA_WEBSOCKET=TRUE
12669 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12672 AC_MSG_RESULT([no])
12673 ENABLE_JAVA_WEBSOCKET=
12675 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12677 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12678 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12679 AC_MSG_RESULT([yes])
12680 ENABLE_MEDIAWIKI=TRUE
12681 BUILD_TYPE="$BUILD_TYPE XSLTML"
12682 if test "x$with_java" = "xno"; then
12683 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12686 AC_MSG_RESULT([no])
12688 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12690 AC_SUBST(ENABLE_MEDIAWIKI)
12692 AC_MSG_CHECKING([whether to build the Report Builder])
12693 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12694 AC_MSG_RESULT([yes])
12695 ENABLE_REPORTBUILDER=TRUE
12696 AC_MSG_CHECKING([which jfreereport libs to use])
12697 if test "$with_system_jfreereport" = "yes"; then
12698 SYSTEM_JFREEREPORT=TRUE
12699 AC_MSG_RESULT([external])
12700 if test -z $SAC_JAR; then
12701 SAC_JAR=/usr/share/java/sac.jar
12703 if ! test -f $SAC_JAR; then
12704 AC_MSG_ERROR(sac.jar not found.)
12707 if test -z $LIBXML_JAR; then
12708 if test -f /usr/share/java/libxml-1.0.0.jar; then
12709 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12710 elif test -f /usr/share/java/libxml.jar; then
12711 LIBXML_JAR=/usr/share/java/libxml.jar
12713 AC_MSG_ERROR(libxml.jar replacement not found.)
12715 elif ! test -f $LIBXML_JAR; then
12716 AC_MSG_ERROR(libxml.jar not found.)
12719 if test -z $FLUTE_JAR; then
12720 if test -f /usr/share/java/flute-1.3.0.jar; then
12721 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12722 elif test -f /usr/share/java/flute.jar; then
12723 FLUTE_JAR=/usr/share/java/flute.jar
12725 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12727 elif ! test -f $FLUTE_JAR; then
12728 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12731 if test -z $JFREEREPORT_JAR; then
12732 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12733 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12734 elif test -f /usr/share/java/flow-engine.jar; then
12735 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12737 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12739 elif ! test -f $JFREEREPORT_JAR; then
12740 AC_MSG_ERROR(jfreereport.jar not found.)
12743 if test -z $LIBLAYOUT_JAR; then
12744 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12745 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12746 elif test -f /usr/share/java/liblayout.jar; then
12747 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12749 AC_MSG_ERROR(liblayout.jar replacement not found.)
12751 elif ! test -f $LIBLAYOUT_JAR; then
12752 AC_MSG_ERROR(liblayout.jar not found.)
12755 if test -z $LIBLOADER_JAR; then
12756 if test -f /usr/share/java/libloader-1.0.0.jar; then
12757 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12758 elif test -f /usr/share/java/libloader.jar; then
12759 LIBLOADER_JAR=/usr/share/java/libloader.jar
12761 AC_MSG_ERROR(libloader.jar replacement not found.)
12763 elif ! test -f $LIBLOADER_JAR; then
12764 AC_MSG_ERROR(libloader.jar not found.)
12767 if test -z $LIBFORMULA_JAR; then
12768 if test -f /usr/share/java/libformula-0.2.0.jar; then
12769 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12770 elif test -f /usr/share/java/libformula.jar; then
12771 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12773 AC_MSG_ERROR(libformula.jar replacement not found.)
12775 elif ! test -f $LIBFORMULA_JAR; then
12776 AC_MSG_ERROR(libformula.jar not found.)
12779 if test -z $LIBREPOSITORY_JAR; then
12780 if test -f /usr/share/java/librepository-1.0.0.jar; then
12781 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12782 elif test -f /usr/share/java/librepository.jar; then
12783 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12785 AC_MSG_ERROR(librepository.jar replacement not found.)
12787 elif ! test -f $LIBREPOSITORY_JAR; then
12788 AC_MSG_ERROR(librepository.jar not found.)
12791 if test -z $LIBFONTS_JAR; then
12792 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12793 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12794 elif test -f /usr/share/java/libfonts.jar; then
12795 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12797 AC_MSG_ERROR(libfonts.jar replacement not found.)
12799 elif ! test -f $LIBFONTS_JAR; then
12800 AC_MSG_ERROR(libfonts.jar not found.)
12803 if test -z $LIBSERIALIZER_JAR; then
12804 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12805 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12806 elif test -f /usr/share/java/libserializer.jar; then
12807 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12809 AC_MSG_ERROR(libserializer.jar replacement not found.)
12811 elif ! test -f $LIBSERIALIZER_JAR; then
12812 AC_MSG_ERROR(libserializer.jar not found.)
12815 if test -z $LIBBASE_JAR; then
12816 if test -f /usr/share/java/libbase-1.0.0.jar; then
12817 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12818 elif test -f /usr/share/java/libbase.jar; then
12819 LIBBASE_JAR=/usr/share/java/libbase.jar
12821 AC_MSG_ERROR(libbase.jar replacement not found.)
12823 elif ! test -f $LIBBASE_JAR; then
12824 AC_MSG_ERROR(libbase.jar not found.)
12828 AC_MSG_RESULT([internal])
12829 SYSTEM_JFREEREPORT=
12830 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12834 AC_MSG_RESULT([no])
12835 ENABLE_REPORTBUILDER=
12836 SYSTEM_JFREEREPORT=
12838 AC_SUBST(ENABLE_REPORTBUILDER)
12839 AC_SUBST(SYSTEM_JFREEREPORT)
12841 AC_SUBST(LIBXML_JAR)
12842 AC_SUBST(FLUTE_JAR)
12843 AC_SUBST(JFREEREPORT_JAR)
12844 AC_SUBST(LIBBASE_JAR)
12845 AC_SUBST(LIBLAYOUT_JAR)
12846 AC_SUBST(LIBLOADER_JAR)
12847 AC_SUBST(LIBFORMULA_JAR)
12848 AC_SUBST(LIBREPOSITORY_JAR)
12849 AC_SUBST(LIBFONTS_JAR)
12850 AC_SUBST(LIBSERIALIZER_JAR)
12852 # scripting provider for BeanShell?
12853 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12854 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12855 AC_MSG_RESULT([yes])
12856 ENABLE_SCRIPTING_BEANSHELL=TRUE
12858 dnl ===================================================================
12859 dnl Check for system beanshell
12860 dnl ===================================================================
12861 AC_MSG_CHECKING([which beanshell to use])
12862 if test "$with_system_beanshell" = "yes"; then
12863 AC_MSG_RESULT([external])
12865 if test -z $BSH_JAR; then
12866 BSH_JAR=/usr/share/java/bsh.jar
12868 if ! test -f $BSH_JAR; then
12869 AC_MSG_ERROR(bsh.jar not found.)
12872 AC_MSG_RESULT([internal])
12874 BUILD_TYPE="$BUILD_TYPE BSH"
12877 AC_MSG_RESULT([no])
12878 ENABLE_SCRIPTING_BEANSHELL=
12879 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12881 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12882 AC_SUBST(SYSTEM_BSH)
12885 # scripting provider for JavaScript?
12886 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12887 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12888 AC_MSG_RESULT([yes])
12889 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12891 dnl ===================================================================
12892 dnl Check for system rhino
12893 dnl ===================================================================
12894 AC_MSG_CHECKING([which rhino to use])
12895 if test "$with_system_rhino" = "yes"; then
12896 AC_MSG_RESULT([external])
12898 if test -z $RHINO_JAR; then
12899 RHINO_JAR=/usr/share/java/js.jar
12901 if ! test -f $RHINO_JAR; then
12902 AC_MSG_ERROR(js.jar not found.)
12905 AC_MSG_RESULT([internal])
12907 BUILD_TYPE="$BUILD_TYPE RHINO"
12911 AC_MSG_RESULT([no])
12912 ENABLE_SCRIPTING_JAVASCRIPT=
12913 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12915 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12916 AC_SUBST(SYSTEM_RHINO)
12917 AC_SUBST(RHINO_JAR)
12919 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12920 # paths should be added to library search path. So lets put all 64-bit
12923 case "$host_cpu" in
12924 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12925 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12926 supports_multilib="yes"
12933 dnl ===================================================================
12934 dnl QT5 Integration
12935 dnl ===================================================================
12941 QT5_GOBJECT_CFLAGS=""
12942 QT5_GOBJECT_LIBS=""
12943 QT5_HAVE_GOBJECT=""
12944 QT5_PLATFORMS_SRCDIR=""
12945 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12946 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12947 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12949 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12950 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12952 if test -n "$supports_multilib"; then
12953 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12956 qt5_test_include="QtWidgets/qapplication.h"
12957 if test "$_os" = "Emscripten"; then
12958 qt5_test_library="libQt5Widgets.a"
12960 qt5_test_library="libQt5Widgets.so"
12963 dnl Check for qmake5
12964 if test -n "$QT5DIR"; then
12965 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12967 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12969 if test "$QMAKE5" = "no"; then
12970 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12972 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12973 if test -z "$qmake5_test_ver"; then
12974 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12976 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12977 qt5_minimal_minor="6"
12978 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12979 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12981 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12985 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12986 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12987 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12988 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12990 AC_MSG_CHECKING([for Qt5 headers])
12992 for inc_dir in $qt5_incdirs; do
12993 if test -r "$inc_dir/$qt5_test_include"; then
12994 qt5_incdir="$inc_dir"
12998 AC_MSG_RESULT([$qt5_incdir])
12999 if test "x$qt5_incdir" = "xno"; then
13000 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13002 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13003 AC_LANG_PUSH([C++])
13004 save_CPPFLAGS=$CPPFLAGS
13005 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13006 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13007 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13008 CPPFLAGS=$save_CPPFLAGS
13011 AC_MSG_CHECKING([for Qt5 libraries])
13013 for lib_dir in $qt5_libdirs; do
13014 if test -r "$lib_dir/$qt5_test_library"; then
13015 qt5_libdir="$lib_dir"
13019 AC_MSG_RESULT([$qt5_libdir])
13020 if test "x$qt5_libdir" = "xno"; then
13021 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13024 if test "$_os" = "Emscripten"; then
13025 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13026 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13028 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13029 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13032 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13033 if ! test -x "$EMSDK_LLVM_NM"; then
13034 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13036 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13037 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13039 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13040 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13041 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13043 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13044 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13048 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13049 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13050 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13051 if test "$_os" = "Emscripten"; then
13052 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13055 if test "$USING_X11" = TRUE; then
13056 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13057 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13058 QT5_HAVE_XCB_ICCCM=1
13059 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13061 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)])
13062 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13064 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13065 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13067 AC_DEFINE(QT5_USING_X11)
13070 dnl Check for Meta Object Compiler
13072 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13073 if test "$MOC5" = "no"; then
13074 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13075 the root of your Qt installation by exporting QT5DIR before running "configure".])
13078 if test "$test_gstreamer_1_0" = yes; then
13079 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13081 AC_DEFINE(QT5_HAVE_GOBJECT)
13083 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13087 AC_SUBST(QT5_CFLAGS)
13090 AC_SUBST(QT5_GOBJECT_CFLAGS)
13091 AC_SUBST(QT5_GOBJECT_LIBS)
13092 AC_SUBST(QT5_HAVE_GOBJECT)
13093 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13095 dnl ===================================================================
13096 dnl QT6 Integration
13097 dnl ===================================================================
13103 QT6_PLATFORMS_SRCDIR=""
13104 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13106 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13107 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13109 if test -n "$supports_multilib"; then
13110 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13113 qt6_test_include="QtWidgets/qapplication.h"
13114 if test "$_os" = "Emscripten"; then
13115 qt6_test_library="libQt6Widgets.a"
13117 qt6_test_library="libQt6Widgets.so"
13120 dnl Check for qmake6
13121 if test -n "$QT6DIR"; then
13122 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13124 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13126 if test "$QMAKE6" = "no"; then
13127 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13129 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13130 if test -z "$qmake6_test_ver"; then
13131 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13133 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13136 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13137 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13138 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13139 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13141 AC_MSG_CHECKING([for Qt6 headers])
13143 for inc_dir in $qt6_incdirs; do
13144 if test -r "$inc_dir/$qt6_test_include"; then
13145 qt6_incdir="$inc_dir"
13149 AC_MSG_RESULT([$qt6_incdir])
13150 if test "x$qt6_incdir" = "xno"; then
13151 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13153 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13154 AC_LANG_PUSH([C++])
13155 save_CPPFLAGS=$CPPFLAGS
13156 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13157 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13158 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13159 CPPFLAGS=$save_CPPFLAGS
13162 AC_MSG_CHECKING([for Qt6 libraries])
13164 for lib_dir in $qt6_libdirs; do
13165 if test -r "$lib_dir/$qt6_test_library"; then
13166 qt6_libdir="$lib_dir"
13170 AC_MSG_RESULT([$qt6_libdir])
13171 if test "x$qt6_libdir" = "xno"; then
13172 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13175 if test "$_os" = "Emscripten"; then
13176 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13177 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13179 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13180 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13184 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13185 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13186 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13187 if test "$_os" = "Emscripten"; then
13188 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13191 if test "$USING_X11" = TRUE; then
13192 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13193 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13194 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13196 AC_DEFINE(QT6_USING_X11)
13199 dnl Check for Meta Object Compiler
13201 for lib_dir in $qt6_libdirs; do
13202 if test -z "$qt6_libexec_dirs"; then
13203 qt6_libexec_dirs="$lib_dir/libexec"
13205 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13208 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13209 if test "$MOC6" = "no"; then
13210 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13211 the root of your Qt installation by exporting QT6DIR before running "configure".])
13214 AC_SUBST(QT6_CFLAGS)
13217 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13219 dnl ===================================================================
13220 dnl KF5 Integration
13221 dnl ===================================================================
13225 KF5_CONFIG="kf5-config"
13226 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13227 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13229 if test "$OS" = "HAIKU"; then
13230 haiku_arch="`echo $RTL_ARCH | tr X x`"
13231 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13232 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13235 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13236 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13237 if test -n "$supports_multilib"; then
13238 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13241 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13242 kf5_test_library="libKF5KIOFileWidgets.so"
13243 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13245 dnl kf5 KDE4 support compatibility installed
13246 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13247 if test "$KF5_CONFIG" != "no"; then
13248 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13249 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13252 dnl Check for KF5 headers
13253 AC_MSG_CHECKING([for KF5 headers])
13255 for kf5_check in $kf5_incdirs; do
13256 if test -r "$kf5_check/$kf5_test_include"; then
13257 kf5_incdir="$kf5_check/KF5"
13261 AC_MSG_RESULT([$kf5_incdir])
13262 if test "x$kf5_incdir" = "xno"; then
13263 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13266 dnl Check for KF5 libraries
13267 AC_MSG_CHECKING([for KF5 libraries])
13269 for kf5_check in $kf5_libdirs; do
13270 if test -r "$kf5_check/$kf5_test_library"; then
13271 kf5_libdir="$kf5_check"
13276 AC_MSG_RESULT([$kf5_libdir])
13277 if test "x$kf5_libdir" = "xno"; then
13278 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13281 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"
13282 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13283 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13285 if test "$USING_X11" = TRUE; then
13286 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13289 AC_LANG_PUSH([C++])
13290 save_CXXFLAGS=$CXXFLAGS
13291 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13292 AC_MSG_CHECKING([whether KDE is >= 5.0])
13293 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13294 #include <kcoreaddons_version.h>
13296 int main(int argc, char **argv) {
13297 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13300 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13301 CXXFLAGS=$save_CXXFLAGS
13304 AC_SUBST(KF5_CFLAGS)
13307 dnl ===================================================================
13308 dnl Test whether to include Evolution 2 support
13309 dnl ===================================================================
13310 AC_MSG_CHECKING([whether to enable evolution 2 support])
13311 if test "$enable_evolution2" = yes; then
13312 AC_MSG_RESULT([yes])
13313 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13314 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13315 FilterLibs "${GOBJECT_LIBS}"
13316 GOBJECT_LIBS="${filteredlibs}"
13317 ENABLE_EVOAB2="TRUE"
13319 AC_MSG_RESULT([no])
13321 AC_SUBST(ENABLE_EVOAB2)
13322 AC_SUBST(GOBJECT_CFLAGS)
13323 AC_SUBST(GOBJECT_LIBS)
13325 dnl ===================================================================
13326 dnl Test which themes to include
13327 dnl ===================================================================
13328 AC_MSG_CHECKING([which themes to include])
13329 # if none given use default subset of available themes
13330 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13331 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_dark sukapura_dark_svg sukapura_svg"
13335 if test "x$with_theme" != "xno"; then
13336 for theme in $with_theme; do
13338 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_dark|sukapura_dark_svg|sukapura_svg) real_theme="$theme" ;;
13339 default) real_theme=colibre ;;
13340 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13342 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13345 AC_MSG_RESULT([$WITH_THEMES])
13346 AC_SUBST([WITH_THEMES])
13347 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13348 for theme in $with_theme; do
13350 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13355 ###############################################################################
13356 # Extensions checking
13357 ###############################################################################
13358 AC_MSG_CHECKING([for extensions integration])
13359 if test "x$enable_extension_integration" != "xno"; then
13360 WITH_EXTENSION_INTEGRATION=TRUE
13361 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13362 AC_MSG_RESULT([yes, use integration])
13364 WITH_EXTENSION_INTEGRATION=
13365 AC_MSG_RESULT([no, do not integrate])
13367 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13369 dnl Should any extra extensions be included?
13370 dnl There are standalone tests for each of these below.
13371 WITH_EXTRA_EXTENSIONS=
13372 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13374 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13375 if test "x$with_java" != "xno"; then
13376 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13379 AC_MSG_CHECKING([whether to build opens___.ttf])
13380 if test "$enable_build_opensymbol" = "yes"; then
13381 AC_MSG_RESULT([yes])
13382 AC_PATH_PROG(FONTFORGE, fontforge)
13383 if test -z "$FONTFORGE"; then
13384 AC_MSG_ERROR([fontforge not installed])
13387 AC_MSG_RESULT([no])
13388 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13390 AC_SUBST(FONTFORGE)
13392 dnl ===================================================================
13393 dnl Test whether to include fonts
13394 dnl ===================================================================
13395 AC_MSG_CHECKING([whether to include third-party fonts])
13396 if test "$with_fonts" != "no"; then
13397 AC_MSG_RESULT([yes])
13399 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13400 AC_DEFINE(HAVE_MORE_FONTS)
13402 AC_MSG_RESULT([no])
13404 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13406 AC_SUBST(WITH_FONTS)
13408 dnl Test whether to include more Google Noto fonts
13409 dnl ===================================================================
13410 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13411 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13412 AC_MSG_RESULT([no])
13415 AC_MSG_RESULT([yes])
13416 WITH_NOTO_FONT=TRUE
13417 BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13418 SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13420 AC_SUBST(WITH_NOTO_FONT)
13422 dnl ===================================================================
13423 dnl Test whether to enable online update service
13424 dnl ===================================================================
13425 AC_MSG_CHECKING([whether to enable online update])
13426 ENABLE_ONLINE_UPDATE=
13427 ENABLE_ONLINE_UPDATE_MAR=
13429 if test "$enable_online_update" = ""; then
13430 AC_MSG_RESULT([no])
13432 if test "$enable_online_update" = "mar"; then
13433 AC_MSG_RESULT([yes - MAR-based online update])
13434 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13435 if test "$with_update_config" = ""; then
13436 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13438 UPDATE_CONFIG="$with_update_config"
13439 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13440 elif test "$enable_online_update" = "yes"; then
13441 AC_MSG_RESULT([yes])
13442 ENABLE_ONLINE_UPDATE="TRUE"
13444 AC_MSG_RESULT([no])
13447 AC_SUBST(ENABLE_ONLINE_UPDATE)
13448 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13449 AC_SUBST(UPDATE_CONFIG)
13452 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13453 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13454 if test "x$with_privacy_policy_url" = "xundefined"; then
13455 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13458 AC_SUBST(PRIVACY_POLICY_URL)
13459 dnl ===================================================================
13460 dnl Test whether we need bzip2
13461 dnl ===================================================================
13463 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13464 AC_MSG_CHECKING([whether to use system bzip2])
13465 if test "$with_system_bzip2" = yes; then
13467 AC_MSG_RESULT([yes])
13468 PKG_CHECK_MODULES(BZIP2, bzip2)
13469 FilterLibs "${BZIP2_LIBS}"
13470 BZIP2_LIBS="${filteredlibs}"
13472 AC_MSG_RESULT([no])
13473 BUILD_TYPE="$BUILD_TYPE BZIP2"
13476 AC_SUBST(SYSTEM_BZIP2)
13477 AC_SUBST(BZIP2_CFLAGS)
13478 AC_SUBST(BZIP2_LIBS)
13480 dnl ===================================================================
13481 dnl Test whether to enable extension update
13482 dnl ===================================================================
13483 AC_MSG_CHECKING([whether to enable extension update])
13484 ENABLE_EXTENSION_UPDATE=
13485 if test "x$enable_extension_update" = "xno"; then
13486 AC_MSG_RESULT([no])
13488 AC_MSG_RESULT([yes])
13489 ENABLE_EXTENSION_UPDATE="TRUE"
13490 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13491 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13493 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13496 dnl ===================================================================
13497 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13498 dnl ===================================================================
13499 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13500 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13501 AC_MSG_RESULT([no])
13504 AC_MSG_RESULT([yes])
13505 ENABLE_SILENT_MSI=TRUE
13506 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13508 AC_SUBST(ENABLE_SILENT_MSI)
13510 AC_MSG_CHECKING([whether and how to use Xinerama])
13511 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13512 if test "$x_libraries" = "default_x_libraries"; then
13513 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13514 if test "x$XINERAMALIB" = x; then
13515 XINERAMALIB="/usr/lib"
13518 XINERAMALIB="$x_libraries"
13520 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13521 # we have both versions, let the user decide but use the dynamic one
13524 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13525 XINERAMA_LINK=dynamic
13527 XINERAMA_LINK=static
13529 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13530 # we have only the dynamic version
13532 XINERAMA_LINK=dynamic
13533 elif test -e "$XINERAMALIB/libXinerama.a"; then
13535 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13537 XINERAMA_LINK=static
13547 if test "$USE_XINERAMA" = "TRUE"; then
13548 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13549 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13550 [AC_MSG_ERROR(Xinerama header not found.)], [])
13551 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13552 if test "x$XEXTLIB" = x; then
13553 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13555 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13556 if test "$_os" = "FreeBSD"; then
13557 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13559 if test "$_os" = "Linux"; then
13560 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13562 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13563 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13565 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13570 AC_MSG_RESULT([no])
13572 AC_SUBST(USE_XINERAMA)
13573 AC_SUBST(XINERAMA_LINK)
13575 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13576 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13577 enable_cairo_rgba=yes
13579 if test "$enable_cairo_rgba" = yes; then
13580 AC_DEFINE(ENABLE_CAIRO_RGBA)
13581 ENABLE_CAIRO_RGBA=TRUE
13582 AC_MSG_RESULT([yes])
13585 AC_MSG_RESULT([no])
13587 AC_SUBST(ENABLE_CAIRO_RGBA)
13589 dnl ===================================================================
13590 dnl Test whether to build cairo or rely on the system version
13591 dnl ===================================================================
13593 if test "$test_cairo" = "yes"; then
13594 AC_MSG_CHECKING([whether to use the system cairo])
13596 : ${with_system_cairo:=$with_system_libs}
13597 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13599 AC_MSG_RESULT([yes])
13601 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13602 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13603 FilterLibs "${CAIRO_LIBS}"
13604 CAIRO_LIBS="${filteredlibs}"
13606 if test "$test_xrender" = "yes"; then
13607 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13609 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13610 #ifdef PictStandardA8
13614 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13619 AC_MSG_RESULT([no])
13620 BUILD_TYPE="$BUILD_TYPE CAIRO"
13623 if test "$enable_cairo_canvas" != no; then
13624 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13625 ENABLE_CAIRO_CANVAS=TRUE
13629 AC_SUBST(CAIRO_CFLAGS)
13630 AC_SUBST(CAIRO_LIBS)
13631 AC_SUBST(ENABLE_CAIRO_CANVAS)
13632 AC_SUBST(SYSTEM_CAIRO)
13634 dnl ===================================================================
13635 dnl Test whether to use avahi
13636 dnl ===================================================================
13637 if test "$_os" = "WINNT"; then
13638 # Windows uses bundled mDNSResponder
13639 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13640 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13641 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13642 [ENABLE_AVAHI="TRUE"])
13643 AC_DEFINE(HAVE_FEATURE_AVAHI)
13644 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13645 FilterLibs "${AVAHI_LIBS}"
13646 AVAHI_LIBS="${filteredlibs}"
13649 AC_SUBST(ENABLE_AVAHI)
13650 AC_SUBST(AVAHI_CFLAGS)
13651 AC_SUBST(AVAHI_LIBS)
13653 dnl ===================================================================
13654 dnl Test whether to use liblangtag
13655 dnl ===================================================================
13657 AC_MSG_CHECKING([whether to use system liblangtag])
13658 if test "$with_system_liblangtag" = yes; then
13659 SYSTEM_LIBLANGTAG=TRUE
13660 AC_MSG_RESULT([yes])
13661 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13662 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13663 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13664 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13665 FilterLibs "${LIBLANGTAG_LIBS}"
13666 LIBLANGTAG_LIBS="${filteredlibs}"
13669 AC_MSG_RESULT([no])
13670 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13671 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13672 if test "$COM" = "MSC"; then
13673 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13675 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13678 AC_SUBST(SYSTEM_LIBLANGTAG)
13679 AC_SUBST(LIBLANGTAG_CFLAGS)
13680 AC_SUBST(LIBLANGTAG_LIBS)
13682 dnl ===================================================================
13683 dnl Test whether to build libpng or rely on the system version
13684 dnl ===================================================================
13686 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13687 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13688 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13690 dnl ===================================================================
13691 dnl Test whether to build libtiff or rely on the system version
13692 dnl ===================================================================
13694 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13696 dnl ===================================================================
13697 dnl Test whether to build libwebp or rely on the system version
13698 dnl ===================================================================
13700 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13702 dnl ===================================================================
13703 dnl Check for runtime JVM search path
13704 dnl ===================================================================
13705 if test "$ENABLE_JAVA" != ""; then
13706 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13707 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13708 AC_MSG_RESULT([yes])
13709 if ! test -d "$with_jvm_path"; then
13710 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13712 if ! test -d "$with_jvm_path"jvm; then
13713 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13715 JVM_ONE_PATH_CHECK="$with_jvm_path"
13716 AC_SUBST(JVM_ONE_PATH_CHECK)
13718 AC_MSG_RESULT([no])
13722 dnl ===================================================================
13723 dnl Test for the presence of Ant and that it works
13724 dnl ===================================================================
13726 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13727 ANT_HOME=; export ANT_HOME
13728 WITH_ANT_HOME=; export WITH_ANT_HOME
13729 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13730 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13731 if test "$_os" = "WINNT"; then
13732 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13734 with_ant_home="$LODE_HOME/opt/ant"
13736 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13737 with_ant_home="$LODE_HOME/opt/ant"
13740 if test -z "$with_ant_home"; then
13741 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13743 if test "$_os" = "WINNT"; then
13744 # AC_PATH_PROGS needs unix path
13745 with_ant_home=`cygpath -u "$with_ant_home"`
13747 AbsolutePath "$with_ant_home"
13748 with_ant_home=$absolute_path
13749 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13750 WITH_ANT_HOME=$with_ant_home
13751 ANT_HOME=$with_ant_home
13754 if test -z "$ANT"; then
13755 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13757 # resolve relative or absolute symlink
13758 while test -h "$ANT"; do
13760 a_basename=`basename "$ANT"`
13761 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13762 cd "`dirname "$ANT"`"
13763 cd "`dirname "$a_script"`"
13764 ANT="`pwd`"/"`basename "$a_script"`"
13768 AC_MSG_CHECKING([if $ANT works])
13769 mkdir -p conftest.dir
13772 cat > conftest.java << EOF
13773 public class conftest {
13774 int testmethod(int a, int b) {
13780 cat > conftest.xml << EOF
13781 <project name="conftest" default="conftest">
13782 <target name="conftest">
13783 <javac srcdir="." includes="conftest.java">
13789 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13790 if test $? = 0 -a -f ./conftest.class; then
13791 AC_MSG_RESULT([Ant works])
13792 if test -z "$WITH_ANT_HOME"; then
13793 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13794 if test -z "$ANT_HOME"; then
13795 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13798 ANT_HOME="$WITH_ANT_HOME"
13801 echo "configure: Ant test failed" >&5
13802 cat conftest.java >&5
13803 cat conftest.xml >&5
13804 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13807 rm -fr conftest.dir
13809 if test -z "$ANT_HOME"; then
13810 ANT_HOME="NO_ANT_HOME"
13812 PathFormat "$ANT_HOME"
13813 ANT_HOME="$formatted_path"
13815 ANT="$formatted_path"
13818 dnl Checking for ant.jar
13819 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13820 AC_MSG_CHECKING([Ant lib directory])
13821 if test -f $ANT_HOME/lib/ant.jar; then
13822 ANT_LIB="$ANT_HOME/lib"
13824 if test -f $ANT_HOME/ant.jar; then
13825 ANT_LIB="$ANT_HOME"
13827 if test -f /usr/share/java/ant.jar; then
13828 ANT_LIB=/usr/share/java
13830 if test -f /usr/share/ant-core/lib/ant.jar; then
13831 ANT_LIB=/usr/share/ant-core/lib
13833 if test -f $ANT_HOME/lib/ant/ant.jar; then
13834 ANT_LIB="$ANT_HOME/lib/ant"
13836 if test -f /usr/share/lib/ant/ant.jar; then
13837 ANT_LIB=/usr/share/lib/ant
13839 AC_MSG_ERROR([Ant libraries not found!])
13846 PathFormat "$ANT_LIB"
13847 ANT_LIB="$formatted_path"
13848 AC_MSG_RESULT([Ant lib directory found.])
13852 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13854 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13855 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13856 ant_version_major=`echo $ant_version | cut -d. -f1`
13857 ant_version_minor=`echo $ant_version | cut -d. -f2`
13858 echo "configure: ant_version $ant_version " >&5
13859 echo "configure: ant_version_major $ant_version_major " >&5
13860 echo "configure: ant_version_minor $ant_version_minor " >&5
13861 if test "$ant_version_major" -ge "2"; then
13862 AC_MSG_RESULT([yes, $ant_version])
13863 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13864 AC_MSG_RESULT([yes, $ant_version])
13866 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13869 rm -f conftest* core core.* *.core
13877 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13878 AC_MSG_CHECKING([for JUnit 4])
13879 if test "$with_junit" = "yes"; then
13880 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13881 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13882 elif test -e /usr/share/java/junit4.jar; then
13883 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13885 if test -e /usr/share/lib/java/junit.jar; then
13886 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13888 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13892 OOO_JUNIT_JAR=$with_junit
13894 if test "$_os" = "WINNT"; then
13895 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13897 printf 'import org.junit.Before;' > conftest.java
13898 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13899 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13902 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13903 specify its pathname via --with-junit=..., or disable it via --without-junit])
13905 rm -f conftest.class conftest.java
13906 if test $OOO_JUNIT_JAR != ""; then
13907 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13910 AC_MSG_CHECKING([for included Hamcrest])
13911 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13912 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13913 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13915 AC_MSG_RESULT([Not included])
13916 AC_MSG_CHECKING([for standalone hamcrest jar.])
13917 if test "$with_hamcrest" = "yes"; then
13918 if test -e /usr/share/lib/java/hamcrest.jar; then
13919 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13920 elif test -e /usr/share/java/hamcrest/core.jar; then
13921 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13922 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13923 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13925 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13928 HAMCREST_JAR=$with_hamcrest
13930 if test "$_os" = "WINNT"; then
13931 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13933 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13934 AC_MSG_RESULT([$HAMCREST_JAR])
13936 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),
13937 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13940 rm -f conftest.class conftest.java
13942 AC_SUBST(OOO_JUNIT_JAR)
13943 AC_SUBST(HAMCREST_JAR)
13949 # check for wget and curl
13954 if test "$enable_fetch_external" != "no"; then
13956 CURL=`which curl 2>/dev/null`
13958 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13960 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13961 if test $? -eq 0; then
13967 if test -z "$WGET" -a -z "$CURL"; then
13968 AC_MSG_ERROR([neither wget nor curl found!])
13977 # check for sha256sum
13981 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13982 eval "$i -a 256 --version" > /dev/null 2>&1
13984 if test $ret -eq 0; then
13985 SHA256SUM="$i -a 256"
13990 if test -z "$SHA256SUM"; then
13991 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13992 eval "$i --version" > /dev/null 2>&1
13994 if test $ret -eq 0; then
14001 if test -z "$SHA256SUM"; then
14002 AC_MSG_ERROR([no sha256sum found!])
14005 AC_SUBST(SHA256SUM)
14007 dnl ===================================================================
14008 dnl Dealing with l10n options
14009 dnl ===================================================================
14010 AC_MSG_CHECKING([which languages to be built])
14011 # get list of all languages
14012 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14013 # the sed command does the following:
14014 # + if a line ends with a backslash, append the next line to it
14015 # + adds " on the beginning of the value (after =)
14016 # + adds " at the end of the value
14017 # + removes en-US; we want to put it on the beginning
14018 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14019 [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)]
14020 ALL_LANGS="en-US $completelangiso"
14021 # check the configured localizations
14022 WITH_LANG="$with_lang"
14024 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14025 # (Norwegian is "nb" and "nn".)
14026 if test "$WITH_LANG" = "no"; then
14030 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14031 AC_MSG_RESULT([en-US])
14033 AC_MSG_RESULT([$WITH_LANG])
14034 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14035 if test -z "$MSGFMT"; then
14036 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14037 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14038 elif test -x "/opt/lo/bin/msgfmt"; then
14039 MSGFMT="/opt/lo/bin/msgfmt"
14041 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14042 if test -z "$MSGFMT"; then
14043 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14047 if test -z "$MSGUNIQ"; then
14048 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14049 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14050 elif test -x "/opt/lo/bin/msguniq"; then
14051 MSGUNIQ="/opt/lo/bin/msguniq"
14053 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14054 if test -z "$MSGUNIQ"; then
14055 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14062 # check that the list is valid
14063 for lang in $WITH_LANG; do
14064 test "$lang" = "ALL" && continue
14065 # need to check for the exact string, so add space before and after the list of all languages
14066 for vl in $ALL_LANGS; do
14067 if test "$vl" = "$lang"; then
14071 if test "$vl" != "$lang"; then
14072 # if you're reading this - you prolly quoted your languages remove the quotes ...
14073 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14076 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14077 echo $WITH_LANG | grep -q en-US
14078 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14080 # list with substituted ALL
14081 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14082 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14083 test "$WITH_LANG" = "en-US" && WITH_LANG=
14084 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14085 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14086 ALL_LANGS=`echo $ALL_LANGS qtz`
14088 AC_SUBST(ALL_LANGS)
14089 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14090 AC_SUBST(WITH_LANG)
14091 AC_SUBST(WITH_LANG_LIST)
14092 AC_SUBST(GIT_NEEDED_SUBMODULES)
14094 WITH_POOR_HELP_LOCALIZATIONS=
14095 if test -d "$SRC_ROOT/translations/source"; then
14096 for l in `ls -1 $SRC_ROOT/translations/source`; do
14097 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14098 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14102 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14104 if test -n "$with_locales" -a "$with_locales" != ALL; then
14105 WITH_LOCALES="$with_locales"
14107 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14108 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14109 # config_host/config_locales.h.in
14110 for locale in $WITH_LOCALES; do
14113 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14117 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14120 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14125 AC_DEFINE(WITH_LOCALE_ALL)
14127 AC_SUBST(WITH_LOCALES)
14129 dnl git submodule update --reference
14130 dnl ===================================================================
14131 if test -n "${GIT_REFERENCE_SRC}"; then
14132 for repo in ${GIT_NEEDED_SUBMODULES}; do
14133 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14134 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14138 AC_SUBST(GIT_REFERENCE_SRC)
14140 dnl git submodules linked dirs
14141 dnl ===================================================================
14142 if test -n "${GIT_LINK_SRC}"; then
14143 for repo in ${GIT_NEEDED_SUBMODULES}; do
14144 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14145 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14149 AC_SUBST(GIT_LINK_SRC)
14152 dnl ===================================================================
14153 AC_MSG_CHECKING([for alternative branding images directory])
14154 # initialize mapped arrays
14155 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14156 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14158 if test -z "$with_branding" -o "$with_branding" = "no"; then
14159 AC_MSG_RESULT([none])
14160 DEFAULT_BRAND_IMAGES="$brand_files"
14162 if ! test -d $with_branding ; then
14163 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14165 AC_MSG_RESULT([$with_branding])
14166 CUSTOM_BRAND_DIR="$with_branding"
14167 for lfile in $brand_files
14169 if ! test -f $with_branding/$lfile ; then
14170 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14171 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14173 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14176 check_for_progress="yes"
14179 AC_SUBST([BRAND_INTRO_IMAGES])
14180 AC_SUBST([CUSTOM_BRAND_DIR])
14181 AC_SUBST([CUSTOM_BRAND_IMAGES])
14182 AC_SUBST([DEFAULT_BRAND_IMAGES])
14185 AC_MSG_CHECKING([for 'intro' progress settings])
14189 PROGRESSFRAMECOLOR=
14191 PROGRESSTEXTBASELINE=
14193 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14194 source "$with_branding/progress.conf"
14195 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14197 AC_MSG_RESULT([none])
14200 AC_SUBST(PROGRESSBARCOLOR)
14201 AC_SUBST(PROGRESSSIZE)
14202 AC_SUBST(PROGRESSPOSITION)
14203 AC_SUBST(PROGRESSFRAMECOLOR)
14204 AC_SUBST(PROGRESSTEXTCOLOR)
14205 AC_SUBST(PROGRESSTEXTBASELINE)
14208 dnl ===================================================================
14209 dnl Custom build version
14210 dnl ===================================================================
14211 AC_MSG_CHECKING([for extra build ID])
14212 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14213 EXTRA_BUILDID="$with_extra_buildid"
14215 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14216 if test -n "$EXTRA_BUILDID" ; then
14217 AC_MSG_RESULT([$EXTRA_BUILDID])
14219 AC_MSG_RESULT([not set])
14221 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14224 AC_MSG_CHECKING([for vendor])
14225 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14226 OOO_VENDOR="$USERNAME"
14228 if test -z "$OOO_VENDOR"; then
14232 if test -z "$OOO_VENDOR"; then
14233 OOO_VENDOR="`id -u -n`"
14236 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14238 OOO_VENDOR="$with_vendor"
14239 AC_MSG_RESULT([$OOO_VENDOR])
14241 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14242 AC_SUBST(OOO_VENDOR)
14244 if test "$_os" = "Android" ; then
14245 ANDROID_PACKAGE_NAME=
14246 AC_MSG_CHECKING([for Android package name])
14247 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14248 if test -n "$ENABLE_DEBUG"; then
14249 # Default to the package name that makes ndk-gdb happy.
14250 ANDROID_PACKAGE_NAME="org.libreoffice"
14252 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14255 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14257 ANDROID_PACKAGE_NAME="$with_android_package_name"
14258 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14260 AC_SUBST(ANDROID_PACKAGE_NAME)
14263 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14264 if test "$with_compat_oowrappers" = "yes"; then
14265 WITH_COMPAT_OOWRAPPERS=TRUE
14268 WITH_COMPAT_OOWRAPPERS=
14271 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14273 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14274 AC_MSG_CHECKING([for install dirname])
14275 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14276 INSTALLDIRNAME="$with_install_dirname"
14278 AC_MSG_RESULT([$INSTALLDIRNAME])
14279 AC_SUBST(INSTALLDIRNAME)
14281 AC_MSG_CHECKING([for prefix])
14282 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14283 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14284 PREFIXDIR="$prefix"
14285 AC_MSG_RESULT([$PREFIXDIR])
14286 AC_SUBST(PREFIXDIR)
14288 LIBDIR=[$(eval echo $(eval echo $libdir))]
14291 DATADIR=[$(eval echo $(eval echo $datadir))]
14294 MANDIR=[$(eval echo $(eval echo $mandir))]
14297 DOCDIR=[$(eval echo $(eval echo $docdir))]
14300 BINDIR=[$(eval echo $(eval echo $bindir))]
14303 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14304 AC_SUBST(INSTALLDIR)
14306 TESTINSTALLDIR="${BUILDDIR}/test-install"
14307 AC_SUBST(TESTINSTALLDIR)
14310 # ===================================================================
14311 # OAuth2 id and secrets
14312 # ===================================================================
14314 AC_MSG_CHECKING([for Google Drive client id and secret])
14315 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14316 AC_MSG_RESULT([not set])
14317 GDRIVE_CLIENT_ID="\"\""
14318 GDRIVE_CLIENT_SECRET="\"\""
14320 AC_MSG_RESULT([set])
14321 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14322 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14324 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14325 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14327 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14328 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14329 AC_MSG_RESULT([not set])
14330 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14331 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14333 AC_MSG_RESULT([set])
14334 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14335 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14337 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14338 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14340 AC_MSG_CHECKING([for OneDrive client id and secret])
14341 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14342 AC_MSG_RESULT([not set])
14343 ONEDRIVE_CLIENT_ID="\"\""
14344 ONEDRIVE_CLIENT_SECRET="\"\""
14346 AC_MSG_RESULT([set])
14347 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14348 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14350 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14351 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14354 dnl ===================================================================
14355 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14356 dnl --enable-dependency-tracking configure option
14357 dnl ===================================================================
14358 AC_MSG_CHECKING([whether to enable dependency tracking])
14359 if test "$enable_dependency_tracking" = "no"; then
14361 AC_MSG_RESULT([no])
14363 AC_MSG_RESULT([yes])
14367 dnl ===================================================================
14368 dnl Number of CPUs to use during the build
14369 dnl ===================================================================
14370 AC_MSG_CHECKING([for number of processors to use])
14371 # plain --with-parallelism is just the default
14372 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14373 if test "$with_parallelism" = "no"; then
14376 PARALLELISM=$with_parallelism
14379 if test "$enable_icecream" = "yes"; then
14384 Darwin|FreeBSD|NetBSD|OpenBSD)
14385 PARALLELISM=`sysctl -n hw.ncpu`
14389 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14391 # what else than above does profit here *and* has /proc?
14393 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14397 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14398 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14402 if test $PARALLELISM -eq 0; then
14403 AC_MSG_RESULT([explicit make -j option needed])
14405 AC_MSG_RESULT([$PARALLELISM])
14407 AC_SUBST(PARALLELISM)
14410 # Set up ILIB for MSVC build
14413 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14415 if test -n "$JAVA_HOME"; then
14416 ILIB="$ILIB;$JAVA_HOME/lib"
14419 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14420 ILIB="$ILIB;$formatted_path"
14421 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14422 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14423 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14424 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14425 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14426 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14428 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14429 ucrtlibpath_formatted=$formatted_path
14430 ILIB="$ILIB;$ucrtlibpath_formatted"
14431 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14432 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14433 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14434 ILIB="$ILIB;$formatted_path"
14436 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14437 ILIB="$ILIB;$formatted_path"
14440 if test "$cross_compiling" != "yes"; then
14441 ILIB_FOR_BUILD="$ILIB"
14445 AC_SUBST(ILIB_FOR_BUILD)
14447 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14448 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14449 dnl from consteval constructor initializing const variable",
14450 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14451 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14452 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14453 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14454 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14455 dnl constructor in ternary expression (/std:c++latest)", or
14456 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14457 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14458 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14459 dnl && "Ptr must be a pointer to Val type!"' failed.":
14460 AC_LANG_PUSH([C++])
14462 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14463 CXX="env LIB=$ILIB $CXX"
14465 save_CXXFLAGS=$CXXFLAGS
14466 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14467 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14469 consteval S() { i = 1; }
14474 struct S1 { consteval S1(int) {} };
14489 struct S4 { consteval S4() = default; };
14490 void f4(bool b) { b ? S4() : S4(); }
14493 consteval S5() { c = 0; }
14494 char * f() { return &c; }
14500 auto s5 = S5().f();
14502 return (s.i == 1) ? 0 : 1;
14504 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14505 AC_MSG_RESULT([yes])
14506 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14508 CXXFLAGS=$save_CXXFLAGS
14511 # ===================================================================
14512 # Creating bigger shared library to link against
14513 # ===================================================================
14514 AC_MSG_CHECKING([whether to create huge library])
14517 if test $_os = iOS -o $_os = Android; then
14518 # Never any point in mergelibs for these as we build just static
14519 # libraries anyway...
14520 enable_mergelibs=no
14523 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14524 if test $_os != Linux -a $_os != WINNT; then
14525 add_warning "--enable-mergelibs is not tested for this platform"
14528 AC_MSG_RESULT([yes])
14529 AC_DEFINE(ENABLE_MERGELIBS)
14531 AC_MSG_RESULT([no])
14533 AC_SUBST([MERGELIBS])
14535 dnl ===================================================================
14536 dnl icerun is a wrapper that stops us spawning tens of processes
14537 dnl locally - for tools that can't be executed on the compile cluster
14538 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14539 dnl ===================================================================
14540 AC_MSG_CHECKING([whether to use icerun wrapper])
14542 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14543 ICECREAM_RUN=icerun
14544 AC_MSG_RESULT([yes])
14546 AC_MSG_RESULT([no])
14548 AC_SUBST(ICECREAM_RUN)
14550 dnl ===================================================================
14551 dnl Setup the ICECC_VERSION for the build the same way it was set for
14552 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14553 dnl ===================================================================
14554 x_ICECC_VERSION=[\#]
14555 if test -n "$ICECC_VERSION" ; then
14558 AC_SUBST(x_ICECC_VERSION)
14559 AC_SUBST(ICECC_VERSION)
14561 dnl ===================================================================
14563 AC_MSG_CHECKING([MPL subset])
14567 if test "$enable_mpl_subset" = "yes"; then
14569 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14571 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14574 if test "$warn_report" = "true"; then
14575 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14577 if test "x$enable_postgresql_sdbc" != "xno"; then
14578 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14580 if test "$enable_lotuswordpro" = "yes"; then
14581 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14583 if test -n "$ENABLE_POPPLER"; then
14584 if test "x$SYSTEM_POPPLER" = "x"; then
14585 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14588 # cf. m4/libo_check_extension.m4
14589 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14590 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14592 for theme in $WITH_THEMES; do
14594 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14595 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14600 ENABLE_OPENGL_TRANSITIONS=
14602 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14603 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14608 AC_DEFINE(MPL_HAVE_SUBSET)
14609 AC_MSG_RESULT([only])
14611 AC_MSG_RESULT([no restrictions])
14613 AC_SUBST(MPL_SUBSET)
14616 dnl ===================================================================
14618 AC_MSG_CHECKING([formula logger])
14619 ENABLE_FORMULA_LOGGER=
14621 if test "x$enable_formula_logger" = "xyes"; then
14622 AC_MSG_RESULT([yes])
14623 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14624 ENABLE_FORMULA_LOGGER=TRUE
14625 elif test -n "$ENABLE_DBGUTIL" ; then
14626 AC_MSG_RESULT([yes])
14627 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14628 ENABLE_FORMULA_LOGGER=TRUE
14630 AC_MSG_RESULT([no])
14633 AC_SUBST(ENABLE_FORMULA_LOGGER)
14635 dnl ===================================================================
14636 dnl Checking for active Antivirus software.
14637 dnl ===================================================================
14639 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14640 AC_MSG_CHECKING([for active Antivirus software])
14641 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14642 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14643 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14644 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14645 AC_MSG_RESULT([found])
14646 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14647 echo $EICAR_STRING > $SRC_ROOT/eicar
14648 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14650 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14651 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14653 echo $EICAR_STRING > $BUILDDIR/eicar
14654 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14656 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14657 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14659 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"
14661 AC_MSG_RESULT([not found])
14664 AC_MSG_RESULT([n/a])
14668 dnl ===================================================================
14669 dnl Setting up the environment.
14670 dnl ===================================================================
14671 AC_MSG_NOTICE([setting up the build environment variables...])
14675 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14676 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14677 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14678 ATL_INCLUDE="$COMPATH/atlmfc/include"
14679 elif test -d "$COMPATH/atlmfc/lib"; then
14680 ATL_LIB="$COMPATH/atlmfc/lib"
14681 ATL_INCLUDE="$COMPATH/atlmfc/include"
14683 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14684 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14686 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14687 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14688 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14691 if test "$build_os" = "cygwin"; then
14692 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14693 PathFormat "/usr/bin/find.exe"
14694 FIND="$formatted_path"
14695 PathFormat "/usr/bin/sort.exe"
14696 SORT="$formatted_path"
14697 PathFormat "/usr/bin/grep.exe"
14698 WIN_GREP="$formatted_path"
14699 PathFormat "/usr/bin/ls.exe"
14700 WIN_LS="$formatted_path"
14701 PathFormat "/usr/bin/touch.exe"
14702 WIN_TOUCH="$formatted_path"
14708 AC_SUBST(ATL_INCLUDE)
14714 AC_SUBST(WIN_TOUCH)
14716 AC_SUBST(BUILD_TYPE)
14721 PERL="$formatted_path"
14724 if test -n "$TMPDIR"; then
14725 TEMP_DIRECTORY="$TMPDIR"
14727 TEMP_DIRECTORY="/tmp"
14729 if test "$build_os" = "cygwin"; then
14730 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14732 AC_SUBST(TEMP_DIRECTORY)
14734 # setup the PATH for the environment
14735 if test -n "$LO_PATH_FOR_BUILD"; then
14736 LO_PATH="$LO_PATH_FOR_BUILD"
14739 pathmunge "$MSVC_HOST_PATH" "before"
14747 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14748 if test "$ENABLE_JAVA" != ""; then
14749 pathmunge "$JAVA_HOME/bin" "after"
14754 # Win32 make needs native paths
14755 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14756 LO_PATH=`cygpath -p -m "$PATH"`
14758 if test "$WIN_BUILD_ARCH" = "x64"; then
14759 # needed for msi packaging
14760 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14762 # .NET 4.6 and higher don't have bin directory
14763 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14764 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14766 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14767 pathmunge "$CSC_PATH" "before"
14768 pathmunge "$MIDL_PATH" "before"
14769 pathmunge "$AL_PATH" "before"
14770 pathmunge "$MSVC_MULTI_PATH" "before"
14771 pathmunge "$MSVC_BUILD_PATH" "before"
14772 if test -n "$MSBUILD_PATH" ; then
14773 pathmunge "$MSBUILD_PATH" "before"
14775 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14776 if test "$ENABLE_JAVA" != ""; then
14777 if test -d "$JAVA_HOME/jre/bin/client"; then
14778 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14780 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14781 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14783 pathmunge "$JAVA_HOME/bin" "before"
14785 pathmunge "$MSVC_HOST_PATH" "before"
14789 pathmunge "/usr/css/bin" "before"
14790 if test "$ENABLE_JAVA" != ""; then
14791 pathmunge "$JAVA_HOME/bin" "after"
14799 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14800 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14801 x_LO_ELFCHECK_ALLOWLIST=
14803 x_LO_ELFCHECK_ALLOWLIST=[\#]
14805 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14806 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14810 # Generate a configuration sha256 we can use for deps
14811 if test -f config_host.mk; then
14812 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14814 if test -f config_host_lang.mk; then
14815 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14818 CFLAGS=$my_original_CFLAGS
14819 CXXFLAGS=$my_original_CXXFLAGS
14820 CPPFLAGS=$my_original_CPPFLAGS
14822 AC_CONFIG_LINKS([include:include])
14824 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14825 # BUILD platform configuration] - otherwise breaks cross building
14826 AC_CONFIG_FILES([config_host.mk
14827 config_host_lang.mk
14830 bin/bffvalidator.sh
14831 bin/odfvalidator.sh
14833 hardened_runtime.xcent
14834 instsetoo_native/util/openoffice.lst
14835 sysui/desktop/macosx/Info.plist
14836 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14838 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14839 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14840 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14841 AC_CONFIG_HEADERS([config_host/config_clang.h])
14842 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14843 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14844 AC_CONFIG_HEADERS([config_host/config_eot.h])
14845 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14846 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14847 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
14848 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14849 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14850 AC_CONFIG_HEADERS([config_host/config_features.h])
14851 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14852 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14853 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14854 AC_CONFIG_HEADERS([config_host/config_folders.h])
14855 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14856 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14857 AC_CONFIG_HEADERS([config_host/config_gio.h])
14858 AC_CONFIG_HEADERS([config_host/config_global.h])
14859 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14860 AC_CONFIG_HEADERS([config_host/config_java.h])
14861 AC_CONFIG_HEADERS([config_host/config_langs.h])
14862 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14863 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14864 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14865 AC_CONFIG_HEADERS([config_host/config_locales.h])
14866 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14867 AC_CONFIG_HEADERS([config_host/config_oox.h])
14868 AC_CONFIG_HEADERS([config_host/config_options.h])
14869 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14870 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14871 AC_CONFIG_HEADERS([config_host/config_skia.h])
14872 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14873 AC_CONFIG_HEADERS([config_host/config_validation.h])
14874 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14875 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14876 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14877 AC_CONFIG_HEADERS([config_host/config_version.h])
14878 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14879 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14880 AC_CONFIG_HEADERS([config_host/config_python.h])
14881 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14882 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14883 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14886 if test "$CROSS_COMPILING" = TRUE; then
14887 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14890 # touch the config timestamp file
14891 if test ! -f config_host.mk.stamp; then
14892 echo > config_host.mk.stamp
14893 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14894 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14896 echo > config_host.mk.stamp
14899 # touch the config lang timestamp file
14900 if test ! -f config_host_lang.mk.stamp; then
14901 echo > config_host_lang.mk.stamp
14902 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14903 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14905 echo > config_host_lang.mk.stamp
14909 if test \( "$STALE_MAKE" = "TRUE" \) \
14910 -a "$build_os" = "cygwin"; then
14913 ****************************************************************************
14915 Your make version is known to be horribly slow, and hard to debug
14916 problems with. To get a reasonably functional make please do:
14918 to install a pre-compiled binary make for Win32
14920 mkdir -p /opt/lo/bin
14922 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14923 cp make-4.2.1-msvc.exe make
14926 to install from source:
14927 place yourself in a working directory of you choice.
14929 git clone git://git.savannah.gnu.org/make.git
14931 [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"]
14932 set PATH=%PATH%;C:\Cygwin\bin
14933 [or Cygwin64, if that is what you have]
14934 cd path-to-make-repo-you-cloned-above
14935 build_w32.bat --without-guile
14937 should result in a WinRel/gnumake.exe.
14938 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14940 Then re-run autogen.sh
14942 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14943 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14950 ****************************************************************************
14952 To show information on various make targets and make flags, run:
14955 To just build, run:
14960 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14962 After the build has finished successfully, you can immediately run what you built using the command:
14965 if test $_os = Darwin; then
14966 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14968 echo instdir/program/soffice
14972 If you want to run the unit tests, run:
14978 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14979 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14980 cat "$WARNINGS_FILE_FOR_BUILD"
14984 if test -s "$WARNINGS_FILE"; then
14985 echo "HOST config ($WARNINGS_FILE)"
14986 cat "$WARNINGS_FILE"
14989 # Remove unneeded emconfigure artifacts
14990 rm -f a.out a.wasm a.out.js a.out.wasm
14992 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: