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.4.2],[],[],[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 -single_module"
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 -single_module"
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")]),
2129 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2130 [Choose which themes to include. By default those themes with an '*' are included.
2131 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2132 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2133 *elementary, *elementary_svg,
2134 *karasa_jaga, *karasa_jaga_svg,
2135 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2136 *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2139 libo_FUZZ_ARG_WITH(helppack-integration,
2140 AS_HELP_STRING([--without-helppack-integration],
2141 [It will not integrate the helppacks to the installer
2142 of the product. Please use this switch to use the online help
2143 or separate help packages.]),
2146 libo_FUZZ_ARG_WITH(fonts,
2147 AS_HELP_STRING([--without-fonts],
2148 [LibreOffice includes some third-party fonts to provide a reliable basis for
2149 help content, templates, samples, etc. When these fonts are already
2150 known to be available on the system then you should use this option.]),
2153 AC_ARG_ENABLE(noto-font,
2154 AS_HELP_STRING([--enable-noto-font],
2155 [Add more Google Noto fonts.]),
2159 AS_HELP_STRING([--with-epm],
2160 [Decides which epm to use. Default is to use the one from the system if
2161 one is built. When either this is not there or you say =internal epm
2165 AC_ARG_WITH(package-format,
2166 AS_HELP_STRING([--with-package-format],
2167 [Specify package format(s) for LibreOffice installation sets. The
2168 implicit --without-package-format leads to no installation sets being
2169 generated. Possible values: aix, archive, bsd, deb, dmg,
2170 installed, msi, pkg, and rpm.
2171 Example: --with-package-format='deb rpm']),
2175 AS_HELP_STRING([--with-tls],
2176 [Decides which TLS/SSL and cryptographic implementations to use for
2177 LibreOffice's code. Default is to use NSS although OpenSSL is also
2178 possible. Notice that selecting NSS restricts the usage of OpenSSL
2179 in LO's code but selecting OpenSSL doesn't restrict by now the
2180 usage of NSS in LO's code. Possible values: openssl, nss.
2181 Example: --with-tls="nss"]),
2184 AC_ARG_WITH(system-libs,
2185 AS_HELP_STRING([--with-system-libs],
2186 [Use libraries already on system -- enables all --with-system-* flags.]),
2189 AC_ARG_WITH(system-bzip2,
2190 AS_HELP_STRING([--with-system-bzip2],
2191 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2192 [with_system_bzip2="$with_system_libs"])
2194 AC_ARG_WITH(system-headers,
2195 AS_HELP_STRING([--with-system-headers],
2196 [Use headers already on system -- enables all --with-system-* flags for
2197 external packages whose headers are the only entities used i.e.
2198 boost/odbc/sane-header(s).]),,
2199 [with_system_headers="$with_system_libs"])
2201 AC_ARG_WITH(system-jars,
2202 AS_HELP_STRING([--without-system-jars],
2203 [When building with --with-system-libs, also the needed jars are expected
2204 on the system. Use this to disable that]),,
2205 [with_system_jars="$with_system_libs"])
2207 AC_ARG_WITH(system-cairo,
2208 AS_HELP_STRING([--with-system-cairo],
2209 [Use cairo libraries already on system. Happens automatically for
2210 (implicit) --enable-gtk3.]))
2212 AC_ARG_WITH(system-epoxy,
2213 AS_HELP_STRING([--with-system-epoxy],
2214 [Use epoxy libraries already on system. Happens automatically for
2215 (implicit) --enable-gtk3.]),,
2216 [with_system_epoxy="$with_system_libs"])
2218 AC_ARG_WITH(myspell-dicts,
2219 AS_HELP_STRING([--with-myspell-dicts],
2220 [Adds myspell dictionaries to the LibreOffice installation set]),
2223 AC_ARG_WITH(system-dicts,
2224 AS_HELP_STRING([--without-system-dicts],
2225 [Do not use dictionaries from system paths.]),
2228 AC_ARG_WITH(external-dict-dir,
2229 AS_HELP_STRING([--with-external-dict-dir],
2230 [Specify external dictionary dir.]),
2233 AC_ARG_WITH(external-hyph-dir,
2234 AS_HELP_STRING([--with-external-hyph-dir],
2235 [Specify external hyphenation pattern dir.]),
2238 AC_ARG_WITH(external-thes-dir,
2239 AS_HELP_STRING([--with-external-thes-dir],
2240 [Specify external thesaurus dir.]),
2243 AC_ARG_WITH(system-zlib,
2244 AS_HELP_STRING([--with-system-zlib],
2245 [Use zlib already on system.]),,
2246 [with_system_zlib=auto])
2248 AC_ARG_WITH(system-jpeg,
2249 AS_HELP_STRING([--with-system-jpeg],
2250 [Use jpeg already on system.]),,
2251 [with_system_jpeg="$with_system_libs"])
2253 AC_ARG_WITH(system-expat,
2254 AS_HELP_STRING([--with-system-expat],
2255 [Use expat already on system.]),,
2256 [with_system_expat="$with_system_libs"])
2258 AC_ARG_WITH(system-libxml,
2259 AS_HELP_STRING([--with-system-libxml],
2260 [Use libxml/libxslt already on system.]),,
2261 [with_system_libxml=auto])
2263 AC_ARG_WITH(system-openldap,
2264 AS_HELP_STRING([--with-system-openldap],
2265 [Use the OpenLDAP LDAP SDK already on system.]),,
2266 [with_system_openldap="$with_system_libs"])
2268 libo_FUZZ_ARG_ENABLE(poppler,
2269 AS_HELP_STRING([--disable-poppler],
2270 [Disable building Poppler.])
2273 AC_ARG_WITH(system-poppler,
2274 AS_HELP_STRING([--with-system-poppler],
2275 [Use system poppler (only needed for PDF import).]),,
2276 [with_system_poppler="$with_system_libs"])
2278 AC_ARG_WITH(system-abseil,
2279 AS_HELP_STRING([--with-system-abseil],
2280 [Use the abseil libraries already on system.]),,
2281 [with_system_abseil="$with_system_libs"])
2283 AC_ARG_WITH(system-openjpeg,
2284 AS_HELP_STRING([--with-system-openjpeg],
2285 [Use the OpenJPEG library already on system.]),,
2286 [with_system_openjpeg="$with_system_libs"])
2288 libo_FUZZ_ARG_ENABLE(gpgmepp,
2289 AS_HELP_STRING([--disable-gpgmepp],
2290 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2293 AC_ARG_WITH(system-gpgmepp,
2294 AS_HELP_STRING([--with-system-gpgmepp],
2295 [Use gpgmepp already on system]),,
2296 [with_system_gpgmepp="$with_system_libs"])
2298 AC_ARG_WITH(system-mariadb,
2299 AS_HELP_STRING([--with-system-mariadb],
2300 [Use MariaDB/MySQL libraries already on system.]),,
2301 [with_system_mariadb="$with_system_libs"])
2303 AC_ARG_ENABLE(bundle-mariadb,
2304 AS_HELP_STRING([--enable-bundle-mariadb],
2305 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2308 AC_ARG_WITH(system-postgresql,
2309 AS_HELP_STRING([--with-system-postgresql],
2310 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2311 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2312 [with_system_postgresql="$with_system_libs"])
2314 AC_ARG_WITH(libpq-path,
2315 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2316 [Use this PostgreSQL C interface (libpq) installation for building
2317 the PostgreSQL-SDBC extension.]),
2320 AC_ARG_WITH(system-firebird,
2321 AS_HELP_STRING([--with-system-firebird],
2322 [Use Firebird libraries already on system, for building the Firebird-SDBC
2323 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2324 [with_system_firebird="$with_system_libs"])
2326 AC_ARG_WITH(system-libtommath,
2327 AS_HELP_STRING([--with-system-libtommath],
2328 [Use libtommath already on system]),,
2329 [with_system_libtommath="$with_system_libs"])
2331 AC_ARG_WITH(system-hsqldb,
2332 AS_HELP_STRING([--with-system-hsqldb],
2333 [Use hsqldb already on system.]))
2335 AC_ARG_WITH(hsqldb-jar,
2336 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2337 [Specify path to jarfile manually.]),
2338 HSQLDB_JAR=$withval)
2340 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2341 AS_HELP_STRING([--disable-scripting-beanshell],
2342 [Disable support for scripts in BeanShell.]),
2346 AC_ARG_WITH(system-beanshell,
2347 AS_HELP_STRING([--with-system-beanshell],
2348 [Use beanshell already on system.]),,
2349 [with_system_beanshell="$with_system_jars"])
2351 AC_ARG_WITH(beanshell-jar,
2352 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2353 [Specify path to jarfile manually.]),
2356 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2357 AS_HELP_STRING([--disable-scripting-javascript],
2358 [Disable support for scripts in JavaScript.]),
2362 AC_ARG_WITH(system-rhino,
2363 AS_HELP_STRING([--with-system-rhino],
2364 [Use rhino already on system.]),,)
2365 # [with_system_rhino="$with_system_jars"])
2366 # Above is not used as we have different debug interface
2367 # patched into internal rhino. This code needs to be fixed
2368 # before we can enable it by default.
2370 AC_ARG_WITH(rhino-jar,
2371 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2372 [Specify path to jarfile manually.]),
2375 AC_ARG_WITH(system-jfreereport,
2376 AS_HELP_STRING([--with-system-jfreereport],
2377 [Use JFreeReport already on system.]),,
2378 [with_system_jfreereport="$with_system_jars"])
2380 AC_ARG_WITH(sac-jar,
2381 AS_HELP_STRING([--with-sac-jar=JARFILE],
2382 [Specify path to jarfile manually.]),
2385 AC_ARG_WITH(libxml-jar,
2386 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2387 [Specify path to jarfile manually.]),
2388 LIBXML_JAR=$withval)
2390 AC_ARG_WITH(flute-jar,
2391 AS_HELP_STRING([--with-flute-jar=JARFILE],
2392 [Specify path to jarfile manually.]),
2395 AC_ARG_WITH(jfreereport-jar,
2396 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2397 [Specify path to jarfile manually.]),
2398 JFREEREPORT_JAR=$withval)
2400 AC_ARG_WITH(liblayout-jar,
2401 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2402 [Specify path to jarfile manually.]),
2403 LIBLAYOUT_JAR=$withval)
2405 AC_ARG_WITH(libloader-jar,
2406 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2407 [Specify path to jarfile manually.]),
2408 LIBLOADER_JAR=$withval)
2410 AC_ARG_WITH(libformula-jar,
2411 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2412 [Specify path to jarfile manually.]),
2413 LIBFORMULA_JAR=$withval)
2415 AC_ARG_WITH(librepository-jar,
2416 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2417 [Specify path to jarfile manually.]),
2418 LIBREPOSITORY_JAR=$withval)
2420 AC_ARG_WITH(libfonts-jar,
2421 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2422 [Specify path to jarfile manually.]),
2423 LIBFONTS_JAR=$withval)
2425 AC_ARG_WITH(libserializer-jar,
2426 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2427 [Specify path to jarfile manually.]),
2428 LIBSERIALIZER_JAR=$withval)
2430 AC_ARG_WITH(libbase-jar,
2431 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2432 [Specify path to jarfile manually.]),
2433 LIBBASE_JAR=$withval)
2435 AC_ARG_WITH(system-odbc,
2436 AS_HELP_STRING([--with-system-odbc],
2437 [Use the odbc headers already on system.]),,
2438 [with_system_odbc="auto"])
2440 AC_ARG_WITH(system-sane,
2441 AS_HELP_STRING([--with-system-sane],
2442 [Use sane.h already on system.]),,
2443 [with_system_sane="$with_system_headers"])
2445 AC_ARG_WITH(system-bluez,
2446 AS_HELP_STRING([--with-system-bluez],
2447 [Use bluetooth.h already on system.]),,
2448 [with_system_bluez="$with_system_headers"])
2450 AC_ARG_WITH(system-boost,
2451 AS_HELP_STRING([--with-system-boost],
2452 [Use boost already on system.]),,
2453 [with_system_boost="$with_system_headers"])
2455 AC_ARG_WITH(system-dragonbox,
2456 AS_HELP_STRING([--with-system-dragonbox],
2457 [Use dragonbox already on system.]),,
2458 [with_system_dragonbox="$with_system_headers"])
2460 AC_ARG_WITH(system-libfixmath,
2461 AS_HELP_STRING([--with-system-libfixmath],
2462 [Use libfixmath already on system.]),,
2463 [with_system_libfixmath="$with_system_libs"])
2465 AC_ARG_WITH(system-glm,
2466 AS_HELP_STRING([--with-system-glm],
2467 [Use glm already on system.]),,
2468 [with_system_glm="$with_system_headers"])
2470 AC_ARG_WITH(system-hunspell,
2471 AS_HELP_STRING([--with-system-hunspell],
2472 [Use libhunspell already on system.]),,
2473 [with_system_hunspell="$with_system_libs"])
2475 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2476 AS_HELP_STRING([--enable-cairo-rgba],
2477 [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2479 libo_FUZZ_ARG_ENABLE(zxing,
2480 AS_HELP_STRING([--disable-zxing],
2481 [Disable use of zxing external library.]))
2483 AC_ARG_WITH(system-zxing,
2484 AS_HELP_STRING([--with-system-zxing],
2485 [Use libzxing already on system.]),,
2486 [with_system_zxing="$with_system_libs"])
2488 AC_ARG_WITH(system-box2d,
2489 AS_HELP_STRING([--with-system-box2d],
2490 [Use box2d already on system.]),,
2491 [with_system_box2d="$with_system_libs"])
2493 AC_ARG_WITH(system-mythes,
2494 AS_HELP_STRING([--with-system-mythes],
2495 [Use mythes already on system.]),,
2496 [with_system_mythes="$with_system_libs"])
2498 AC_ARG_WITH(system-altlinuxhyph,
2499 AS_HELP_STRING([--with-system-altlinuxhyph],
2500 [Use ALTLinuxhyph already on system.]),,
2501 [with_system_altlinuxhyph="$with_system_libs"])
2503 AC_ARG_WITH(system-lpsolve,
2504 AS_HELP_STRING([--with-system-lpsolve],
2505 [Use lpsolve already on system.]),,
2506 [with_system_lpsolve="$with_system_libs"])
2508 AC_ARG_WITH(system-coinmp,
2509 AS_HELP_STRING([--with-system-coinmp],
2510 [Use CoinMP already on system.]),,
2511 [with_system_coinmp="$with_system_libs"])
2513 AC_ARG_WITH(system-liblangtag,
2514 AS_HELP_STRING([--with-system-liblangtag],
2515 [Use liblangtag library already on system.]),,
2516 [with_system_liblangtag="$with_system_libs"])
2518 AC_ARG_WITH(system-lockfile,
2519 AS_HELP_STRING([--with-system-lockfile[=file]],
2520 [Detect a system lockfile program or use the \$file argument.]))
2523 AS_HELP_STRING([--without-webdav],
2524 [Disable WebDAV support in the UCB.]))
2526 AC_ARG_WITH(linker-hash-style,
2527 AS_HELP_STRING([--with-linker-hash-style],
2528 [Use linker with --hash-style=<style> when linking shared objects.
2529 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2530 if supported on the build system, and "sysv" otherwise.]))
2532 AC_ARG_WITH(jdk-home,
2533 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2534 [If you have installed JDK 9 or later on your system please supply the
2535 path here. Note that this is not the location of the java command but the
2536 location of the entire distribution. In case of cross-compiling, this
2537 is the JDK of the host os. Use --with-build-platform-configure-options
2538 to point to a different build platform JDK.]),
2542 AS_HELP_STRING([--with-help],
2543 [Enable the build of help. There is a special parameter "common" that
2544 can be used to bundle only the common part, .e.g help-specific icons.
2545 This is useful when you build the helpcontent separately.])
2547 Usage: --with-help build the old local help
2548 --without-help no local help (default)
2549 --with-help=html build the new HTML local help
2550 --with-help=online build the new HTML online help
2554 AC_ARG_WITH(omindex,
2555 AS_HELP_STRING([--with-omindex],
2556 [Enable the support of xapian-omega index for online help.])
2558 Usage: --with-omindex=server prepare the pages for omindex
2559 but let xapian-omega be built in server.
2560 --with-omindex=noxap do not prepare online pages
2565 libo_FUZZ_ARG_WITH(java,
2566 AS_HELP_STRING([--with-java=<java command>],
2567 [Specify the name of the Java interpreter command. Typically "java"
2568 which is the default.
2570 To build without support for Java components, applets, accessibility
2571 or the XML filters written in Java, use --without-java or --with-java=no.]),
2572 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2573 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2576 AC_ARG_WITH(jvm-path,
2577 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2578 [Use a specific JVM search path at runtime.
2579 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2582 AC_ARG_WITH(ant-home,
2583 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2584 [If you have installed Apache Ant on your system, please supply the path here.
2585 Note that this is not the location of the Ant binary but the location
2586 of the entire distribution.]),
2589 AC_ARG_WITH(symbol-config,
2590 AS_HELP_STRING([--with-symbol-config],
2591 [Configuration for the crashreport symbol upload]),
2593 [with_symbol_config=no])
2595 AC_ARG_WITH(export-validation,
2596 AS_HELP_STRING([--without-export-validation],
2597 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2598 ,with_export_validation=auto)
2600 AC_ARG_WITH(bffvalidator,
2601 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2602 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2603 Requires installed Microsoft Office Binary File Format Validator.
2604 Note: export-validation (--with-export-validation) is required to be turned on.
2605 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2606 ,with_bffvalidator=no)
2608 libo_FUZZ_ARG_WITH(junit,
2609 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2610 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2611 --without-junit disables those tests. Not relevant in the --without-java case.]),
2614 AC_ARG_WITH(hamcrest,
2615 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2616 [Specifies the hamcrest jar file to use for JUnit-based tests.
2617 --without-junit disables those tests. Not relevant in the --without-java case.]),
2620 AC_ARG_WITH(perl-home,
2621 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2622 [If you have installed Perl 5 Distribution, on your system, please
2623 supply the path here. Note that this is not the location of the Perl
2624 binary but the location of the entire distribution.]),
2627 libo_FUZZ_ARG_WITH(doxygen,
2629 [--with-doxygen=<absolute path to doxygen executable>],
2630 [Specifies the doxygen executable to use when generating ODK C/C++
2631 documentation. --without-doxygen disables generation of ODK C/C++
2632 documentation. Not relevant in the --disable-odk case.]),
2635 AC_ARG_WITH(visual-studio,
2636 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2637 [Specify which Visual Studio version to use in case several are
2638 installed. Currently 2019 (default) and 2022 are supported.]),
2641 AC_ARG_WITH(windows-sdk,
2642 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2643 [Specify which Windows SDK, or "Windows Kit", version to use
2644 in case the one that came with the selected Visual Studio
2645 is not what you want for some reason. Note that not all compiler/SDK
2646 combinations are supported. The intent is that this option should not
2651 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2652 [Use this option to build LibreOffice with additional UI language support.
2653 English (US) is always included by default.
2654 Separate multiple languages with space.
2655 For all languages, use --with-lang=ALL.]),
2658 AC_ARG_WITH(locales,
2659 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2660 [Use this option to limit the locale information built in.
2661 Separate multiple locales with space.
2662 Very experimental and might well break stuff.
2663 Just a desperate measure to shrink code and data size.
2664 By default all the locales available is included.
2665 Just works with --disable-dynloading. Defaults to "ALL".
2666 This option is completely unrelated to --with-lang.])
2668 Affects also our character encoding conversion
2669 tables for encodings mainly targeted for a
2670 particular locale, like EUC-CN and EUC-TW for
2671 zh, ISO-2022-JP for ja.
2673 Affects also our add-on break iterator data for
2676 For the default, all locales, don't use this switch at all.
2677 Specifying just the language part of a locale means all matching
2678 locales will be included.
2682 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2683 libo_FUZZ_ARG_WITH(krb5,
2684 AS_HELP_STRING([--with-krb5],
2685 [Enable MIT Kerberos 5 support in modules that support it.
2686 By default automatically enabled on platforms
2687 where a good system Kerberos 5 is available.]),
2690 libo_FUZZ_ARG_WITH(gssapi,
2691 AS_HELP_STRING([--with-gssapi],
2692 [Enable GSSAPI support in modules that support it.
2693 By default automatically enabled on platforms
2694 where a good system GSSAPI is available.]),
2697 libo_FUZZ_ARG_WITH(lxml,
2698 AS_HELP_STRING([--without-lxml],
2699 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2700 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2701 report widget classes and ids.]),
2704 libo_FUZZ_ARG_WITH(latest-c++,
2705 AS_HELP_STRING([--with-latest-c++],
2706 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2707 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2708 [with_latest_c__=no])
2710 AC_ARG_WITH(gtk3-build,
2711 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2712 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2713 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2715 dnl ===================================================================
2717 dnl ===================================================================
2719 AC_ARG_WITH(branding,
2720 AS_HELP_STRING([--with-branding=/path/to/images],
2721 [Use given path to retrieve branding images set.])
2723 Search for intro.png about.svg and logo.svg.
2724 If any is missing, default ones will be used instead.
2726 Search also progress.conf for progress
2727 settings on intro screen :
2729 PROGRESSBARCOLOR="255,255,255" Set color of
2730 progress bar. Comma separated RGB decimal values.
2731 PROGRESSSIZE="407,6" Set size of progress bar.
2732 Comma separated decimal values (width, height).
2733 PROGRESSPOSITION="61,317" Set position of progress
2734 bar from left,top. Comma separated decimal values.
2735 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2736 bar frame. Comma separated RGB decimal values.
2737 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2738 bar text. Comma separated RGB decimal values.
2739 PROGRESSTEXTBASELINE="287" Set vertical position of
2740 progress bar text from top. Decimal value.
2742 Default values will be used if not found.
2747 AC_ARG_WITH(extra-buildid,
2748 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2749 [Show addition build identification in about dialog.]),
2754 AS_HELP_STRING([--with-vendor="John the Builder"],
2755 [Set vendor of the build.]),
2758 AC_ARG_WITH(privacy-policy-url,
2759 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2760 [The URL to your privacy policy (needed when
2761 enabling online-update or crashreporting via breakpad)]),
2762 [if test "x$with_privacy_policy_url" = "xyes"; then
2763 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2764 elif test "x$with_privacy_policy_url" = "xno"; then
2765 with_privacy_policy_url="undefined"
2767 ,[with_privacy_policy_url="undefined"])
2769 AC_ARG_WITH(android-package-name,
2770 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2771 [Set Android package name of the build.]),
2774 AC_ARG_WITH(compat-oowrappers,
2775 AS_HELP_STRING([--with-compat-oowrappers],
2776 [Install oo* wrappers in parallel with
2777 lo* ones to keep backward compatibility.
2778 Has effect only with make distro-pack-install]),
2781 AC_ARG_WITH(os-version,
2782 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2783 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2786 AC_ARG_WITH(parallelism,
2787 AS_HELP_STRING([--with-parallelism],
2788 [Number of jobs to run simultaneously during build. Parallel builds can
2789 save a lot of time on multi-cpu machines. Defaults to the number of
2790 CPUs on the machine, unless you configure --enable-icecream - then to
2794 AC_ARG_WITH(all-tarballs,
2795 AS_HELP_STRING([--with-all-tarballs],
2796 [Download all external tarballs unconditionally]))
2798 AC_ARG_WITH(gdrive-client-id,
2799 AS_HELP_STRING([--with-gdrive-client-id],
2800 [Provides the client id of the application for OAuth2 authentication
2801 on Google Drive. If either this or --with-gdrive-client-secret is
2802 empty, the feature will be disabled]),
2805 AC_ARG_WITH(gdrive-client-secret,
2806 AS_HELP_STRING([--with-gdrive-client-secret],
2807 [Provides the client secret of the application for OAuth2
2808 authentication on Google Drive. If either this or
2809 --with-gdrive-client-id is empty, the feature will be disabled]),
2812 AC_ARG_WITH(alfresco-cloud-client-id,
2813 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2814 [Provides the client id of the application for OAuth2 authentication
2815 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2816 empty, the feature will be disabled]),
2819 AC_ARG_WITH(alfresco-cloud-client-secret,
2820 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2821 [Provides the client secret of the application for OAuth2
2822 authentication on Alfresco Cloud. If either this or
2823 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2826 AC_ARG_WITH(onedrive-client-id,
2827 AS_HELP_STRING([--with-onedrive-client-id],
2828 [Provides the client id of the application for OAuth2 authentication
2829 on OneDrive. If either this or --with-onedrive-client-secret is
2830 empty, the feature will be disabled]),
2833 AC_ARG_WITH(onedrive-client-secret,
2834 AS_HELP_STRING([--with-onedrive-client-secret],
2835 [Provides the client secret of the application for OAuth2
2836 authentication on OneDrive. If either this or
2837 --with-onedrive-client-id is empty, the feature will be disabled]),
2839 dnl ===================================================================
2840 dnl Do we want to use pre-build binary tarball for recompile
2841 dnl ===================================================================
2843 if test "$enable_library_bin_tar" = "yes" ; then
2844 USE_LIBRARY_BIN_TAR=TRUE
2846 USE_LIBRARY_BIN_TAR=
2848 AC_SUBST(USE_LIBRARY_BIN_TAR)
2850 dnl ===================================================================
2851 dnl Test whether build target is Release Build
2852 dnl ===================================================================
2853 AC_MSG_CHECKING([whether build target is Release Build])
2854 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2856 ENABLE_RELEASE_BUILD=
2857 GET_TASK_ALLOW_ENTITLEMENT='
2858 <!-- We want to be able to debug a hardened process when not building for release -->
2859 <key>com.apple.security.get-task-allow</key>
2862 AC_MSG_RESULT([yes])
2863 ENABLE_RELEASE_BUILD=TRUE
2864 GET_TASK_ALLOW_ENTITLEMENT=''
2866 AC_SUBST(ENABLE_RELEASE_BUILD)
2867 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2869 AC_MSG_CHECKING([whether to build a Community flavor])
2870 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2871 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2872 AC_MSG_RESULT([yes])
2877 dnl ===================================================================
2878 dnl Test whether to sign Windows Build
2879 dnl ===================================================================
2880 AC_MSG_CHECKING([whether to sign windows build])
2881 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2882 AC_MSG_RESULT([yes])
2883 WINDOWS_BUILD_SIGNING="TRUE"
2886 WINDOWS_BUILD_SIGNING="FALSE"
2888 AC_SUBST(WINDOWS_BUILD_SIGNING)
2890 dnl ===================================================================
2891 dnl MacOSX build and runtime environment options
2892 dnl ===================================================================
2894 AC_ARG_WITH(macosx-version-min-required,
2895 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2896 [set the minimum OS version needed to run the built LibreOffice])
2898 e. g.: --with-macosx-version-min-required=10.14
2902 dnl ===================================================================
2903 dnl Check for incompatible options set by fuzzing, and reset those
2904 dnl automatically to working combinations
2905 dnl ===================================================================
2907 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2908 "$enable_dbus" != "$enable_avahi"; then
2909 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2910 enable_avahi=$enable_dbus
2915 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2916 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2920 add_lopath_before ()
2925 for dir in $LO_PATH ; do
2926 if test "$dir" != "$1" ; then
2927 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2930 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2933 dnl ===================================================================
2934 dnl check for required programs (grep, awk, sed, bash)
2935 dnl ===================================================================
2940 if test -n "$1"; then
2941 if test "$build_os" = "cygwin"; then
2942 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2944 new_path=`cygpath -sm "$formatted_path"`
2947 new_path=`cygpath -u "$formatted_path"`
2952 if test "$2" = "after"; then
2953 add_lopath_after "$new_path"
2955 add_lopath_before "$new_path"
2961 AC_PATH_PROG( AWK, $AWK)
2962 if test -z "$AWK"; then
2963 AC_MSG_ERROR([install awk to run this script])
2966 AC_PATH_PROG(BASH, bash)
2967 if test -z "$BASH"; then
2968 AC_MSG_ERROR([bash not found in \$PATH])
2972 # prefer parallel compression tools, if available
2973 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2974 if test -z "$COMPRESSIONTOOL"; then
2975 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2976 if test -z "$COMPRESSIONTOOL"; then
2977 AC_MSG_ERROR([gzip not found in \$PATH])
2980 AC_SUBST(COMPRESSIONTOOL)
2982 AC_MSG_CHECKING([for GNU or BSD tar])
2983 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2984 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
2985 if test $? -eq 0; then
2990 AC_MSG_RESULT($GNUTAR)
2991 if test -z "$GNUTAR"; then
2992 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2996 AC_MSG_CHECKING([for tar's option to strip components])
2997 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2998 if test $? -eq 0; then
2999 STRIP_COMPONENTS="--strip-components"
3001 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3002 if test $? -eq 0; then
3003 STRIP_COMPONENTS="--strip-path"
3005 STRIP_COMPONENTS="unsupported"
3008 AC_MSG_RESULT($STRIP_COMPONENTS)
3009 if test x$STRIP_COMPONENTS = xunsupported; then
3010 AC_MSG_ERROR([you need a tar that is able to strip components.])
3012 AC_SUBST(STRIP_COMPONENTS)
3014 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3015 dnl desktop OSes from "mobile" ones.
3017 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3018 dnl In other words, that when building for an OS that is not a
3019 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3021 dnl Note the direction of the implication; there is no assumption that
3022 dnl cross-compiling would imply a non-desktop OS.
3024 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3025 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3026 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3027 if test "$_os" != Emscripten; then
3028 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3032 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3033 # also work with the default gtk3 plugin.
3034 if test "$enable_wasm_strip" = "yes"; then
3039 test "$_os" = Emscripten && enable_curl=no
3040 enable_database_connectivity=no
3043 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3044 enable_extension_integration=no
3045 enable_extensions=no
3046 enable_extension_update=no
3050 enable_lotuswordpro=no
3054 enable_online_update=no
3058 enable_report_builder=no
3060 enable_sdremote_bluetooth=no
3070 test_libpagemaker=no
3079 test "${with_fonts+set}" = set || with_fonts=yes
3080 test "${with_locales+set}" = set || with_locales=en
3082 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3083 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3084 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3085 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3086 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3087 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3088 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3089 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3090 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3091 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3092 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3093 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3094 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3095 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3096 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3097 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3098 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3099 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3102 EMSCRIPTEN_NEH_MAJOR=3
3103 EMSCRIPTEN_NEH_MINOR=1
3104 EMSCRIPTEN_NEH_TINY=3
3105 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3107 if test "$enable_wasm_exceptions" = yes; then
3108 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3109 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3110 if test $? -ne 0; then
3111 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3113 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3115 ENABLE_WASM_EXCEPTIONS=TRUE
3117 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3119 # Whether to build "avmedia" functionality or not.
3121 if test "$enable_avmedia" = yes; then
3122 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3123 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3125 test_gstreamer_1_0=no
3128 # Decide whether to build database connectivity stuff (including Base) or not.
3129 if test "$enable_database_connectivity" != no; then
3130 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3131 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3133 if test "$_os" = iOS; then
3134 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3136 disable_database_connectivity_dependencies
3139 if test -z "$enable_extensions"; then
3140 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3141 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3142 enable_extensions=yes
3146 DISABLE_SCRIPTING=''
3147 if test "$enable_scripting" = yes; then
3148 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3149 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3151 DISABLE_SCRIPTING='TRUE'
3152 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3155 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3156 # Disable dynamic_loading always for iOS and Android
3157 enable_dynamic_loading=no
3158 elif test -z "$enable_dynamic_loading"; then
3159 # Otherwise enable it unless specifically disabled
3160 enable_dynamic_loading=yes
3163 DISABLE_DYNLOADING=''
3164 if test "$enable_dynamic_loading" = yes; then
3165 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3167 DISABLE_DYNLOADING='TRUE'
3168 if test $_os != iOS -a $_os != Android; then
3169 enable_database_connectivity=no
3177 AC_SUBST(DISABLE_DYNLOADING)
3179 ENABLE_CUSTOMTARGET_COMPONENTS=
3180 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3181 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3182 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3183 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3186 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3188 if test "$enable_extensions" = yes; then
3189 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3190 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3192 enable_extension_integration=no
3193 enable_extension_update=no
3196 # remember SYSBASE value
3199 dnl ===================================================================
3200 dnl Sort out various gallery compilation options
3201 dnl ===================================================================
3202 WITH_GALLERY_BUILD=TRUE
3203 AC_MSG_CHECKING([how to build and package galleries])
3204 if test -n "${with_galleries}"; then
3205 if test "$with_galleries" = "build"; then
3206 if test "$enable_database_connectivity" = no; then
3207 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3209 AC_MSG_RESULT([build from source images internally])
3210 elif test "$with_galleries" = "no"; then
3212 AC_MSG_RESULT([disable non-internal gallery build])
3214 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3217 if test $_os != iOS -a $_os != Android; then
3218 AC_MSG_RESULT([internal src images for desktop])
3221 AC_MSG_RESULT([disable src image build])
3224 AC_SUBST(WITH_GALLERY_BUILD)
3226 dnl ===================================================================
3227 dnl Checks if ccache is available
3228 dnl ===================================================================
3230 if test "$enable_ccache" = "no"; then
3232 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3233 case "%$CC%$CXX%" in
3234 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3235 # assume that's good then
3236 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3237 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3238 CCACHE_DEPEND_MODE=1
3241 # try to use our own ccache if it is available and CCACHE was not already defined
3242 if test -z "$CCACHE"; then
3243 if test "$_os" = "WINNT"; then
3244 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3246 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3247 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3248 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3249 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3252 AC_PATH_PROG([CCACHE],[ccache],[not found])
3253 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3254 CCACHE=`win_short_path_for_make "$CCACHE"`
3255 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3257 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3258 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3259 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3267 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3268 # on windows/VC perhaps sccache is around?
3269 case "%$CC%$CXX%" in
3270 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3271 # assume that's good then
3272 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3273 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3274 CCACHE_DEPEND_MODE=1
3278 # for sharing code below, reuse CCACHE env var
3279 AC_PATH_PROG([CCACHE],[sccache],[not found])
3280 if test "$CCACHE" != "not found"; then
3281 CCACHE=`win_short_path_for_make "$CCACHE"`
3283 CCACHE_DEPEND_MODE=1
3288 if test "$CCACHE" = "not found"; then
3291 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3292 CCACHE_DEPEND_MODE=1
3293 # Need to check for ccache version: otherwise prevents
3294 # caching of the results (like "-x objective-c++" for Mac)
3295 if test $_os = Darwin -o $_os = iOS; then
3296 # Check ccache version
3297 AC_MSG_CHECKING([whether version of ccache is suitable])
3298 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3299 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3300 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3301 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3303 AC_MSG_RESULT([no, $CCACHE_VERSION])
3314 if test "$enable_ccache" = "nodepend"; then
3315 CCACHE_DEPEND_MODE=""
3317 AC_SUBST(CCACHE_DEPEND_MODE)
3319 # sccache defaults are good enough
3320 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3321 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3322 # or (...) max_size = 20.0 G
3323 # -p works with both 4.2 and 4.4
3324 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3325 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3326 if test "$ccache_size" = ""; then
3327 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3328 if test "$ccache_size" = ""; then
3331 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3332 if test $ccache_size -lt 1024; then
3334 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3335 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3337 # warn that ccache may be too small for debug build
3338 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3339 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3342 if test $ccache_size -lt 5; then
3343 #warn that ccache may be too small for debug build
3344 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3345 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3351 if test "$enable_z7_debug" != no; then
3352 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3353 ENABLE_Z7_DEBUG=TRUE
3356 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3357 add_warning "ccache will not work with --disable-z7-debug"
3359 AC_SUBST(ENABLE_Z7_DEBUG)
3361 dnl ===================================================================
3362 dnl Checks for C compiler,
3363 dnl The check for the C++ compiler is later on.
3364 dnl ===================================================================
3365 if test "$_os" != "WINNT"; then
3367 AC_MSG_CHECKING([gcc home])
3368 if test -z "$with_gcc_home"; then
3369 if test "$enable_icecream" = "yes"; then
3370 if test -d "/usr/lib/icecc/bin"; then
3371 GCC_HOME="/usr/lib/icecc/"
3372 elif test -d "/usr/libexec/icecc/bin"; then
3373 GCC_HOME="/usr/libexec/icecc/"
3374 elif test -d "/opt/icecream/bin"; then
3375 GCC_HOME="/opt/icecream/"
3377 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3381 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3382 GCC_HOME_SET="false"
3385 GCC_HOME="$with_gcc_home"
3387 AC_MSG_RESULT($GCC_HOME)
3390 if test "$GCC_HOME_SET" = "true"; then
3391 if test -z "$CC"; then
3392 CC="$GCC_HOME/bin/gcc"
3395 if test -z "$CXX"; then
3396 CXX="$GCC_HOME/bin/g++"
3402 COMPATH=`dirname "$CC"`
3403 if test "$COMPATH" = "."; then
3404 AC_PATH_PROGS(COMPATH, $CC)
3405 dnl double square bracket to get single because of M4 quote...
3406 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3408 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3410 dnl ===================================================================
3412 dnl ===================================================================
3413 AC_MSG_CHECKING([whether to build with Java support])
3414 if test "$with_java" != "no"; then
3415 if test "$DISABLE_SCRIPTING" = TRUE; then
3416 AC_MSG_RESULT([no, overridden by --disable-scripting])
3420 AC_MSG_RESULT([yes])
3422 AC_DEFINE(HAVE_FEATURE_JAVA)
3429 AC_SUBST(ENABLE_JAVA)
3431 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3433 dnl ENABLE_JAVA="" indicate no Java support at all
3435 dnl ===================================================================
3436 dnl Check macOS SDK and compiler
3437 dnl ===================================================================
3439 if test $_os = Darwin; then
3441 # The SDK in the currently selected Xcode should be found.
3443 AC_MSG_CHECKING([what macOS SDK to use])
3444 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3445 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3446 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3447 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3448 # problems that existed in the PPC days with target versions not being respected or random
3449 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3450 # SDK version is enough, no need to do both...
3451 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3452 if test ! -d "$MACOSX_SDK_PATH"; then
3453 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3455 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3456 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3457 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3458 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3460 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3461 # correct version in case such an old SDK is specified, it will be rejected later anyway
3462 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3463 if test $MACOSX_SDK_VERSION -lt 101400; then
3464 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.14])
3466 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3467 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3469 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3471 AC_MSG_CHECKING([what minimum version of macOS to require])
3472 if test "$with_macosx_version_min_required" = "" ; then
3473 if test "$host_cpu" = x86_64; then
3474 with_macosx_version_min_required="10.14";
3476 with_macosx_version_min_required="11.0";
3479 # see same notes about MACOSX_SDK_VERSION above
3480 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3481 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101400; then
3482 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.14])
3484 AC_MSG_RESULT([$with_macosx_version_min_required])
3486 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3487 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3488 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3490 AC_MSG_RESULT([yes])
3493 # export this so that "xcrun" invocations later return matching values
3494 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3495 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3496 export DEVELOPER_DIR
3497 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3498 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3500 AC_MSG_CHECKING([whether Xcode is new enough])
3501 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3502 my_xcode_ver2=${my_xcode_ver1#Xcode }
3503 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3504 if test "$my_xcode_ver3" -ge 1205; then
3505 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3507 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3510 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3511 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3513 LIBTOOL=/usr/bin/libtool
3514 INSTALL_NAME_TOOL=install_name_tool
3515 if test -z "$save_CC"; then
3516 stdlib=-stdlib=libc++
3518 AC_MSG_CHECKING([what C compiler to use])
3519 CC="`xcrun -find clang`"
3520 CC_BASE=`first_arg_basename "$CC"`
3521 if test "$host_cpu" = x86_64; then
3522 CC+=" -target x86_64-apple-macos"
3524 CC+=" -target arm64-apple-macos"
3526 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3527 AC_MSG_RESULT([$CC])
3529 AC_MSG_CHECKING([what C++ compiler to use])
3530 CXX="`xcrun -find clang++`"
3531 CXX_BASE=`first_arg_basename "$CXX"`
3532 if test "$host_cpu" = x86_64; then
3533 CXX+=" -target x86_64-apple-macos"
3535 CXX+=" -target arm64-apple-macos"
3537 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3538 AC_MSG_RESULT([$CXX])
3540 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3543 STRIP=`xcrun -find strip`
3544 LIBTOOL=`xcrun -find libtool`
3545 RANLIB=`xcrun -find ranlib`
3548 AC_MSG_CHECKING([whether to do code signing])
3550 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3553 if test "$enable_macosx_code_signing" = yes; then
3554 # By default use the first suitable certificate (?).
3556 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3557 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3558 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3559 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3560 # "Developer ID Application" one.
3561 identity="Developer ID Application:"
3563 identity=$enable_macosx_code_signing
3565 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3566 if test -n "$identity"; then
3567 MACOSX_CODESIGNING_IDENTITY=$identity
3568 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3569 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3571 AC_MSG_ERROR([cannot determine identity to use])
3575 AC_MSG_CHECKING([whether to create a Mac App Store package])
3577 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3579 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3580 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3582 if test "$enable_macosx_package_signing" = yes; then
3583 # By default use the first suitable certificate.
3584 # It should be a "3rd Party Mac Developer Installer" one
3585 identity="3rd Party Mac Developer Installer:"
3587 identity=$enable_macosx_package_signing
3589 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3590 if test -n "$identity"; then
3591 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3592 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3593 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3595 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3599 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3600 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3603 AC_MSG_CHECKING([whether to sandbox the application])
3605 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3606 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3607 elif test "$enable_macosx_sandbox" = yes; then
3608 ENABLE_MACOSX_SANDBOX=TRUE
3609 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3610 AC_MSG_RESULT([yes])
3615 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3616 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3617 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3619 if test -n "$with_macosx_provisioning_profile" ; then
3620 if test ! -f "$with_macosx_provisioning_profile"; then
3621 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3623 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3624 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3625 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3626 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3627 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3631 AC_SUBST(MACOSX_SDK_PATH)
3632 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3633 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3634 AC_SUBST(INSTALL_NAME_TOOL)
3635 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3636 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3637 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3638 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3639 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3640 AC_SUBST(MACOSX_PROVISIONING_INFO)
3641 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3642 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3643 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3645 dnl ===================================================================
3646 dnl Check iOS SDK and compiler
3647 dnl ===================================================================
3649 if test $_os = iOS; then
3650 AC_MSG_CHECKING([what iOS SDK to use])
3652 if test "$enable_ios_simulator" = "yes"; then
3653 platformlc=iphonesimulator
3654 versionmin=-mios-simulator-version-min=14.5
3657 versionmin=-miphoneos-version-min=14.5
3660 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3662 if ! test -d "$sysroot"; then
3663 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3666 AC_MSG_RESULT($sysroot)
3668 stdlib="-stdlib=libc++"
3670 AC_MSG_CHECKING([what C compiler to use])
3671 CC="`xcrun -find clang`"
3672 CC_BASE=`first_arg_basename "$CC"`
3673 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3674 AC_MSG_RESULT([$CC])
3676 AC_MSG_CHECKING([what C++ compiler to use])
3677 CXX="`xcrun -find clang++`"
3678 CXX_BASE=`first_arg_basename "$CXX"`
3679 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3680 AC_MSG_RESULT([$CXX])
3682 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3685 STRIP=`xcrun -find strip`
3686 LIBTOOL=`xcrun -find libtool`
3687 RANLIB=`xcrun -find ranlib`
3690 AC_MSG_CHECKING([whether to treat the installation as read-only])
3692 if test $_os = Darwin; then
3693 enable_readonly_installset=yes
3694 elif test "$enable_extensions" != yes; then
3695 enable_readonly_installset=yes
3697 if test "$enable_readonly_installset" = yes; then
3698 AC_MSG_RESULT([yes])
3699 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3704 dnl ===================================================================
3705 dnl Structure of install set
3706 dnl ===================================================================
3708 if test $_os = Darwin; then
3709 LIBO_BIN_FOLDER=MacOS
3710 LIBO_ETC_FOLDER=Resources
3711 LIBO_LIBEXEC_FOLDER=MacOS
3712 LIBO_LIB_FOLDER=Frameworks
3713 LIBO_LIB_PYUNO_FOLDER=Resources
3714 LIBO_SHARE_FOLDER=Resources
3715 LIBO_SHARE_HELP_FOLDER=Resources/help
3716 LIBO_SHARE_JAVA_FOLDER=Resources/java
3717 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3718 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3719 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3720 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3721 LIBO_URE_BIN_FOLDER=MacOS
3722 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3723 LIBO_URE_LIB_FOLDER=Frameworks
3724 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3725 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3726 elif test $_os = WINNT; then
3727 LIBO_BIN_FOLDER=program
3728 LIBO_ETC_FOLDER=program
3729 LIBO_LIBEXEC_FOLDER=program
3730 LIBO_LIB_FOLDER=program
3731 LIBO_LIB_PYUNO_FOLDER=program
3732 LIBO_SHARE_FOLDER=share
3733 LIBO_SHARE_HELP_FOLDER=help
3734 LIBO_SHARE_JAVA_FOLDER=program/classes
3735 LIBO_SHARE_PRESETS_FOLDER=presets
3736 LIBO_SHARE_READMES_FOLDER=readmes
3737 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3738 LIBO_SHARE_SHELL_FOLDER=program/shell
3739 LIBO_URE_BIN_FOLDER=program
3740 LIBO_URE_ETC_FOLDER=program
3741 LIBO_URE_LIB_FOLDER=program
3742 LIBO_URE_MISC_FOLDER=program
3743 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3745 LIBO_BIN_FOLDER=program
3746 LIBO_ETC_FOLDER=program
3747 LIBO_LIBEXEC_FOLDER=program
3748 LIBO_LIB_FOLDER=program
3749 LIBO_LIB_PYUNO_FOLDER=program
3750 LIBO_SHARE_FOLDER=share
3751 LIBO_SHARE_HELP_FOLDER=help
3752 LIBO_SHARE_JAVA_FOLDER=program/classes
3753 LIBO_SHARE_PRESETS_FOLDER=presets
3754 LIBO_SHARE_READMES_FOLDER=readmes
3755 if test "$enable_fuzzers" != yes; then
3756 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3758 LIBO_SHARE_RESOURCE_FOLDER=resource
3760 LIBO_SHARE_SHELL_FOLDER=program/shell
3761 LIBO_URE_BIN_FOLDER=program
3762 LIBO_URE_ETC_FOLDER=program
3763 LIBO_URE_LIB_FOLDER=program
3764 LIBO_URE_MISC_FOLDER=program
3765 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3767 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3768 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3769 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3770 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3771 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3772 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3773 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3774 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3775 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3776 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3777 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3778 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3779 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3780 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3781 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3782 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3784 # Not all of them needed in config_host.mk, add more if need arises
3785 AC_SUBST(LIBO_BIN_FOLDER)
3786 AC_SUBST(LIBO_ETC_FOLDER)
3787 AC_SUBST(LIBO_LIB_FOLDER)
3788 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3789 AC_SUBST(LIBO_SHARE_FOLDER)
3790 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3791 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3792 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3793 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3794 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3795 AC_SUBST(LIBO_URE_BIN_FOLDER)
3796 AC_SUBST(LIBO_URE_ETC_FOLDER)
3797 AC_SUBST(LIBO_URE_LIB_FOLDER)
3798 AC_SUBST(LIBO_URE_MISC_FOLDER)
3799 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3801 dnl ===================================================================
3802 dnl Windows specific tests and stuff
3803 dnl ===================================================================
3807 # Return value: $regvalue
3810 if test "$build_os" = "wsl"; then
3811 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3815 local _regentry="/proc/registry${1}/${2}"
3816 if test -f "$_regentry"; then
3817 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3818 # Registry keys read via /proc/registry* are always \0 terminated!
3819 local _regvalue=$(tr -d '\0' < "$_regentry")
3820 if test $? -eq 0; then
3826 # Get a value from the 32-bit side of the Registry
3829 reg_get_value "32" "$1"
3832 # Get a value from the 64-bit side of the Registry
3835 reg_get_value "64" "$1"
3840 # Return value: $reglist
3843 if test "$build_os" = "wsl"; then
3844 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3848 reglist=$(ls "/proc/registry${1}/${2}")
3851 # List values from the 32-bit side of the Registry
3852 reg_list_values_32()
3854 reg_list_values "32" "$1"
3857 # List values from the 64-bit side of the Registry
3858 reg_list_values_64()
3860 reg_list_values "64" "$1"
3868 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3877 PLATFORMID=windows_x86_64
3879 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3881 WIN_MULTI_ARCH="x86"
3887 PLATFORMID=windows_x86
3890 WIN_OTHER_ARCH="x64"
3895 PLATFORMID=windows_aarch64
3897 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3898 WIN_HOST_ARCH="arm64"
3903 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3907 case "$build_cpu" in
3908 x86_64) WIN_BUILD_ARCH="x64" ;;
3909 i*86) WIN_BUILD_ARCH="x86" ;;
3910 aarch64) WIN_BUILD_ARCH="arm64" ;;
3912 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3916 SCPDEFS="$SCPDEFS -D_MSC_VER"
3920 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3921 # other-arch won't, but wouldn't break the build (x64 on x86).
3922 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3923 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3927 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3928 # To allow building Windows multi-arch releases without cross-tooling
3929 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3930 cross_compiling="yes"
3934 if test "$cross_compiling" = "yes"; then
3935 export CROSS_COMPILING=TRUE
3936 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3937 ENABLE_WASM_STRIP=TRUE
3939 if test "$_os" = "Emscripten"; then
3940 if test "$with_main_module" = "calc"; then
3941 ENABLE_WASM_STRIP_WRITER=TRUE
3942 elif test "$with_main_module" = "writer"; then
3943 ENABLE_WASM_STRIP_CALC=TRUE
3948 BUILD_TYPE="$BUILD_TYPE NATIVE"
3950 AC_SUBST(CROSS_COMPILING)
3951 AC_SUBST(ENABLE_WASM_STRIP)
3952 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3953 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3955 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3956 # NOTE: must _not_ be used for bundled external libraries!
3958 if test "$GCC" = "yes"; then
3959 AC_MSG_CHECKING( for -isystem )
3961 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3962 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3964 if test -n "$ISYSTEM"; then
3970 if test -z "$ISYSTEM"; then
3971 # fall back to using -I
3976 dnl ===================================================================
3977 dnl Check which Visual Studio compiler is used
3978 dnl ===================================================================
3980 map_vs_year_to_version()
3982 # Return value: $vsversion
3994 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3998 vs_versions_to_check()
4000 # Args: $1 (optional) : versions to check, in the order of preference
4001 # Return value: $vsversions
4005 if test -n "$1"; then
4006 map_vs_year_to_version "$1"
4007 vsversions=$vsversion
4009 # Default version is 2019
4014 win_get_env_from_vsvars32bat()
4016 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4017 # Also seems to be located in another directory under the same name: vsvars32.bat
4018 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4019 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4020 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4021 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4023 if test "$build_os" = "wsl"; then
4024 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4026 chmod +x $WRAPPERBATCHFILEPATH
4027 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4029 rm -f $WRAPPERBATCHFILEPATH
4030 printf '%s' "$result"
4035 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4036 if test -n "$regvalue"; then
4037 PathFormat "$regvalue"
4038 UCRTSDKDIR=$formatted_path_unix
4039 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4040 UCRTVERSION=$regvalue
4042 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4046 if test -z "$UCRTSDKDIR"; then
4047 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4048 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4049 if test -f "$ide_env_file"; then
4050 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4051 UCRTSDKDIR=$formatted_path
4052 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4053 dnl Hack needed at least by tml:
4054 if test "$UCRTVERSION" = 10.0.15063.0 \
4055 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4056 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4058 UCRTVERSION=10.0.14393.0
4061 AC_MSG_ERROR([No UCRT found])
4069 # Args: $1 (optional) : The VS version year
4070 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4072 unset vctest vctoolset vcnumwithdot vcbuildnumber
4074 vs_versions_to_check "$1"
4075 if test "$build_os" = wsl; then
4076 vswhere="$PROGRAMFILESX86"
4077 if test -z "$vswhere"; then
4078 vswhere="c:\\Program Files (x86)"
4081 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4083 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4084 PathFormat "$vswhere"
4085 vswhere=$formatted_path_unix
4086 for ver in $vsversions; do
4087 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4088 if test -z "$vswhereoutput"; then
4089 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4091 # Fall back to all MS products (this includes VC++ Build Tools)
4092 if ! test -n "$vswhereoutput"; then
4093 AC_MSG_CHECKING([VC++ Build Tools and similar])
4094 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4096 if test -n "$vswhereoutput"; then
4097 PathFormat "$vswhereoutput"
4098 vctest=$formatted_path_unix
4103 if test -n "$vctest"; then
4105 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4106 vcnumwithdot=$vcnumwithdot.0
4108 case "$vcnumwithdot" in
4118 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4125 AC_MSG_CHECKING([$1 compiler])
4127 CL_EXE_PATH="$2/cl.exe"
4129 if test ! -f "$CL_EXE_PATH"; then
4130 if test "$1" = "multi-arch"; then
4131 AC_MSG_WARN([no compiler (cl.exe) in $2])
4134 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4138 dnl ===========================================================
4139 dnl Check for the corresponding mspdb*.dll
4140 dnl ===========================================================
4142 # MSVC 15.0 has libraries from 14.0?
4145 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4146 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4149 # The compiles has to find its shared libraries
4151 TEMP_PATH=`cygpath -d "$2"`
4152 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4154 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4155 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4160 AC_MSG_RESULT([$CL_EXE_PATH])
4166 if test "$_os" = "WINNT"; then
4167 AC_MSG_CHECKING([Visual C++])
4168 find_msvc "$with_visual_studio"
4169 if test -z "$vctest"; then
4170 if test -n "$with_visual_studio"; then
4171 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4173 AC_MSG_ERROR([no Visual Studio installation found])
4178 VC_PRODUCT_DIR="$vctest/VC"
4179 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4181 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4182 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4183 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4184 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4185 if test $? -ne 0; then
4191 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4192 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4193 test_cl_exe "build" "$MSVC_BUILD_PATH"
4196 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4197 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4198 test_cl_exe "host" "$MSVC_HOST_PATH"
4200 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4203 AC_MSG_CHECKING([for short pathname of VC product directory])
4204 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4205 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4210 AC_MSG_CHECKING([for UCRT location])
4212 # find_ucrt errors out if it doesn't find it
4213 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4214 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4215 ucrtincpath_formatted=$formatted_path
4216 # SOLARINC is used for external modules and must be set too.
4217 # And no, it's not sufficient to set SOLARINC only, as configure
4218 # itself doesn't honour it.
4219 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4220 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4221 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4222 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4224 AC_SUBST(UCRTSDKDIR)
4225 AC_SUBST(UCRTVERSION)
4227 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4228 # Find the proper version of MSBuild.exe to use based on the VS version
4229 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4230 if test -z "$regvalue" ; then
4231 if test "$WIN_BUILD_ARCH" != "x64"; then
4232 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4234 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4237 if test -d "$regvalue" ; then
4238 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4239 AC_MSG_RESULT([$regvalue])
4241 AC_MSG_ERROR([MSBuild.exe location not found])
4244 # Find the version of devenv.exe
4245 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4246 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4247 DEVENV_unix=$(cygpath -u "$DEVENV")
4248 if test ! -e "$DEVENV_unix"; then
4249 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4252 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4253 dnl needed when building CLR code:
4254 if test -z "$MSVC_CXX"; then
4255 # This gives us a posix path with 8.3 filename restrictions
4256 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4259 if test -z "$CC"; then
4261 CC_BASE=`first_arg_basename "$CC"`
4263 if test -z "$CXX"; then
4265 CXX_BASE=`first_arg_basename "$CXX"`
4268 if test -n "$CC"; then
4269 # Remove /cl.exe from CC case insensitive
4270 AC_MSG_NOTICE([found Visual C++ $vcyear])
4272 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4273 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4275 PathFormat "$COMPATH"
4276 COMPATH=`win_short_path_for_make "$formatted_path"`
4279 VCTOOLSET=$vctoolset
4281 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4282 # are always "better", we list them in reverse chronological order.
4284 case "$vcnumwithdot" in
4286 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4290 # The expectation is that --with-windows-sdk should not need to be used
4291 if test -n "$with_windows_sdk"; then
4292 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4293 *" "$with_windows_sdk" "*)
4294 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4297 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4302 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4307 AC_MSG_ERROR([Visual C++ not found after all, huh])
4310 # ERROR if VS version < 16.5
4311 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4312 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4313 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4314 // between Visual Studio versions and _MSC_VER:
4318 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4320 # WARN if VS version < 16.10
4321 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4322 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4326 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4328 if test $vs2019_recommended_version = yes; then
4329 AC_MSG_RESULT([yes])
4332 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."
4335 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4336 # version of the Explorer extension (and maybe other small
4337 # bits, too) needed when installing a 32-bit LibreOffice on a
4338 # 64-bit OS. The 64-bit Explorer extension is a feature that
4339 # has been present since long in OOo. Don't confuse it with
4340 # building LibreOffice itself as 64-bit code.
4345 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4346 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4347 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4348 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4351 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4352 AC_MSG_RESULT([found])
4354 AC_MSG_RESULT([not found])
4355 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4357 elif test "$WIN_HOST_ARCH" = "x64"; then
4362 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4363 AC_SUBST(CXX_X64_BINARY)
4365 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4366 # needed to support TWAIN scan on both 32- and 64-bit systems
4368 case "$WIN_HOST_ARCH" in
4370 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4371 if test -n "$CXX_X86_BINARY"; then
4373 AC_MSG_RESULT([preset])
4374 elif test -n "$WIN_MULTI_ARCH"; then
4376 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4377 AC_MSG_RESULT([found])
4379 AC_MSG_RESULT([not found])
4380 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4385 CXX_X86_BINARY=$MSVC_CXX
4389 AC_SUBST(CXX_X86_BINARY)
4397 AC_MSG_CHECKING([whether the compiler is actually Clang])
4398 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4404 [AC_MSG_RESULT([yes])
4406 [AC_MSG_RESULT([no])])
4407 AC_SUBST(COM_IS_CLANG)
4410 if test "$COM_IS_CLANG" = TRUE; then
4411 AC_MSG_CHECKING([whether Clang is new enough])
4412 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4413 #if !defined __apple_build_version__
4417 [my_apple_clang=yes],[my_apple_clang=])
4418 if test "$my_apple_clang" = yes; then
4419 AC_MSG_RESULT([assumed yes (Apple Clang)])
4420 elif test "$_os" = Emscripten; then
4421 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4423 if test "$_os" = WINNT; then
4424 dnl In which case, assume clang-cl:
4429 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4430 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4431 CLANGVER=`echo $clang_version \
4432 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4433 if test "$CLANGVER" -ge 80001; then
4434 AC_MSG_RESULT([yes ($clang_version)])
4436 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4438 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4439 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4443 SHOWINCLUDES_PREFIX=
4444 if test "$_os" = WINNT; then
4445 dnl We need to guess the prefix of the -showIncludes output, it can be
4447 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4448 echo "#include <stdlib.h>" > conftest.c
4449 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4450 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4451 rm -f conftest.c conftest.obj
4452 if test -z "$SHOWINCLUDES_PREFIX"; then
4453 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4455 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4458 AC_SUBST(SHOWINCLUDES_PREFIX)
4461 # prefix C with ccache if needed
4463 if test "$CCACHE" != ""; then
4464 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4468 CFLAGS="$CFLAGS --ccache-skip -O2"
4469 # msvc does not fail on unknown options, check stdout
4470 if test "$COM" = MSC; then
4471 CFLAGS="$CFLAGS -nologo"
4473 save_ac_c_werror_flag=$ac_c_werror_flag
4474 ac_c_werror_flag=yes
4475 dnl an empty program will do, we're checking the compiler flags
4476 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4477 [use_ccache=yes], [use_ccache=no])
4479 ac_c_werror_flag=$save_ac_c_werror_flag
4480 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4481 AC_MSG_RESULT([yes])
4484 CC_BASE="ccache $CC_BASE"
4490 # ===================================================================
4491 # check various GCC options that Clang does not support now but maybe
4492 # will somewhen in the future, check them even for GCC, so that the
4494 # ===================================================================
4497 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4498 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4500 CFLAGS="$CFLAGS -Werror -ggdb2"
4501 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4503 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4504 AC_MSG_RESULT([yes])
4509 if test "$host_cpu" = "m68k"; then
4510 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4512 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4513 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4515 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4516 AC_MSG_RESULT([yes])
4522 AC_SUBST(HAVE_GCC_GGDB2)
4524 dnl ===================================================================
4525 dnl Test the gcc version
4526 dnl ===================================================================
4527 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4528 AC_MSG_CHECKING([the GCC version])
4529 _gcc_version=`$CC -dumpfullversion`
4530 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4531 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4532 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4534 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4536 if test "$gcc_full_version" -lt 70000; then
4537 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4540 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4541 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4542 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4543 # (which reports itself as GCC 4.2.1).
4546 AC_SUBST(GCC_VERSION)
4548 dnl Set the ENABLE_DBGUTIL variable
4549 dnl ===================================================================
4550 AC_MSG_CHECKING([whether to build with additional debug utilities])
4551 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4552 ENABLE_DBGUTIL="TRUE"
4553 # this is an extra var so it can have different default on different MSVC
4554 # versions (in case there are version specific problems with it)
4555 MSVC_USE_DEBUG_RUNTIME="TRUE"
4557 AC_MSG_RESULT([yes])
4558 # cppunit and graphite expose STL in public headers
4559 if test "$with_system_cppunit" = "yes"; then
4560 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4562 with_system_cppunit=no
4564 if test "$with_system_graphite" = "yes"; then
4565 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4567 with_system_graphite=no
4569 if test "$with_system_orcus" = "yes"; then
4570 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4572 with_system_orcus=no
4574 if test "$with_system_libcmis" = "yes"; then
4575 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4577 with_system_libcmis=no
4579 if test "$with_system_hunspell" = "yes"; then
4580 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4582 with_system_hunspell=no
4584 if test "$with_system_gpgmepp" = "yes"; then
4585 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4587 with_system_gpgmepp=no
4589 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4590 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4591 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4592 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4593 # of those two is using the system variant:
4594 if test "$with_system_libnumbertext" = "yes"; then
4595 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4597 with_system_libnumbertext=no
4599 if test "$with_system_libwps" = "yes"; then
4600 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4602 with_system_libwps=no
4606 MSVC_USE_DEBUG_RUNTIME=""
4609 AC_SUBST(ENABLE_DBGUTIL)
4610 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4612 dnl Set the ENABLE_DEBUG variable.
4613 dnl ===================================================================
4614 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4615 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4617 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4618 if test -z "$libo_fuzzed_enable_debug"; then
4619 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4621 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4626 AC_MSG_CHECKING([whether to do a debug build])
4627 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4629 if test -n "$ENABLE_DBGUTIL" ; then
4630 AC_MSG_RESULT([yes (dbgutil)])
4632 AC_MSG_RESULT([yes])
4638 AC_SUBST(ENABLE_DEBUG)
4640 dnl ===================================================================
4641 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4642 dnl This is done only after compiler checks (need to know if Clang is
4643 dnl used, for different defaults) and after checking if a debug build
4644 dnl is wanted (non-debug builds get the default linker if not explicitly
4645 dnl specified otherwise).
4646 dnl All checks for linker features/options should come after this.
4647 dnl ===================================================================
4650 use_ld=-fuse-ld=${1%%:*}
4652 if test "$use_ld_path" != "$1"; then
4653 if test "$COM_IS_CLANG" = TRUE; then
4654 if test "$CLANGVER" -ge 120000; then
4655 use_ld="${use_ld} --ld-path=${use_ld_path}"
4657 use_ld="-fuse-ld=${use_ld_path}"
4660 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4661 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4662 # pickup the alternative linker, when called by libtool for linking.
4663 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4664 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4667 use_ld_fail_if_error=$2
4669 AC_MSG_CHECKING([for $use_ld linker support])
4670 use_ld_ldflags_save="$LDFLAGS"
4671 LDFLAGS="$LDFLAGS $use_ld"
4672 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4675 printf ("hello world\n");
4676 ])], USE_LD=$use_ld, [])
4677 if test -n "$USE_LD"; then
4678 AC_MSG_RESULT( yes )
4681 if test -n "$use_ld_fail_if_error"; then
4687 if test -n "$use_ld_ok"; then
4688 dnl keep the value of LDFLAGS
4691 LDFLAGS="$use_ld_ldflags_save"
4695 if test "$enable_ld" != "no"; then
4696 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4697 if test -n "$enable_ld"; then
4698 check_use_ld "$enable_ld" fail_if_error
4699 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4700 dnl non-debug builds default to the default linker
4702 elif test -n "$COM_IS_CLANG"; then
4704 if test $? -ne 0; then
4706 if test $? -ne 0; then
4711 # For gcc first try gold, new versions also support lld/mold.
4713 if test $? -ne 0; then
4715 if test $? -ne 0; then
4720 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4722 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4723 if test -z "$ld_used"; then
4726 AC_MSG_CHECKING([for linker that is used])
4727 AC_MSG_RESULT([$ld_used])
4728 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4729 if echo "$ld_used" | grep -q "^GNU ld"; then
4730 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4731 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4735 if test "$enable_ld" = "yes"; then
4736 AC_MSG_ERROR([--enable-ld not supported])
4743 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4744 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4745 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4746 bsymbolic_functions_ldflags_save=$LDFLAGS
4747 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4748 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4751 printf ("hello world\n");
4752 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4753 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4754 AC_MSG_RESULT( found )
4756 AC_MSG_RESULT( not found )
4758 LDFLAGS=$bsymbolic_functions_ldflags_save
4760 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4763 if test "$GCC" = "yes"; then
4764 for flag in "--gc-sections" "-dead_strip"; do
4765 AC_MSG_CHECKING([for $flag linker support])
4766 ldflags_save=$LDFLAGS
4767 LDFLAGS="$LDFLAGS -Wl,$flag"
4768 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4771 printf ("hello world\n");
4773 LD_GC_SECTIONS="-Wl,$flag"
4774 AC_MSG_RESULT( found )
4776 AC_MSG_RESULT( not found )
4778 LDFLAGS=$ldflags_save
4779 if test -n "$LD_GC_SECTIONS"; then
4784 AC_SUBST(LD_GC_SECTIONS)
4786 HAVE_EXTERNAL_DWARF=
4787 if test "$enable_split_debug" != no; then
4789 if test -n "$ENABLE_LTO"; then
4790 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4791 elif test "$enable_split_debug" = yes; then
4793 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4794 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4797 if test -n "$use_split_debug"; then
4798 if test "$_os" = "Emscripten"; then
4799 TEST_CC_FLAG=-gseparate-dwarf
4801 TEST_CC_FLAG=-gsplit-dwarf
4803 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4805 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4806 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4808 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4809 AC_MSG_RESULT([yes])
4811 if test "$enable_split_debug" = yes; then
4818 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4819 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4820 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4823 AC_SUBST(HAVE_EXTERNAL_DWARF)
4825 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4826 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4828 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4829 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4831 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4832 AC_MSG_RESULT([yes])
4836 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4839 if test "$enable_gdb_index" != "no"; then
4840 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4841 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4842 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4844 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4846 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4847 if test "$have_ggnu_pubnames" != "TRUE"; then
4848 if test "$enable_gdb_index" = "yes"; then
4849 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4854 AC_MSG_RESULT( yes )
4855 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4856 ldflags_save=$LDFLAGS
4857 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4858 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4861 printf ("hello world\n");
4862 ])], ENABLE_GDB_INDEX=TRUE, [])
4863 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4864 AC_MSG_RESULT( yes )
4866 if test "$enable_gdb_index" = "yes"; then
4872 LDFLAGS=$ldflags_save
4876 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4877 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4878 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4881 AC_SUBST(ENABLE_GDB_INDEX)
4883 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4886 if test "$enable_sal_log" = yes; then
4889 AC_SUBST(ENABLE_SAL_LOG)
4891 dnl Check for enable symbols option
4892 dnl ===================================================================
4893 AC_MSG_CHECKING([whether to generate debug information])
4894 if test -z "$enable_symbols"; then
4895 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4901 if test "$enable_symbols" = yes; then
4902 ENABLE_SYMBOLS_FOR=all
4903 AC_MSG_RESULT([yes])
4904 elif test "$enable_symbols" = no; then
4908 # Selective debuginfo.
4909 ENABLE_SYMBOLS_FOR="$enable_symbols"
4910 AC_MSG_RESULT([for "$enable_symbols"])
4912 AC_SUBST(ENABLE_SYMBOLS_FOR)
4913 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4914 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4915 AC_MSG_CHECKING([whether enough memory is available for linking])
4916 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4917 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4918 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4919 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4921 AC_MSG_RESULT([yes])
4926 ENABLE_OPTIMIZED_DEBUG=
4927 AC_MSG_CHECKING([whether to compile with optimization flags])
4928 if test -z "$enable_optimized"; then
4929 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4932 enable_optimized=yes
4935 if test "$enable_optimized" = yes; then
4936 ENABLE_OPTIMIZED=TRUE
4937 AC_MSG_RESULT([yes])
4938 elif test "$enable_optimized" = debug; then
4939 ENABLE_OPTIMIZED_DEBUG=TRUE
4940 AC_MSG_RESULT([yes (debug)])
4942 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4943 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4945 CFLAGS="$CFLAGS -Werror -Og"
4946 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4948 if test "$HAVE_GCC_OG" = "TRUE"; then
4949 AC_MSG_RESULT([yes])
4954 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4955 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4960 AC_SUBST(ENABLE_OPTIMIZED)
4961 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4964 # determine CPUNAME, OS, ...
4974 PLATFORMID=aix_powerpc
4990 if test "$enable_ios_simulator" = "yes"; then
4995 PLATFORMID=macosx_aarch64
4999 if test "$enable_ios_simulator" = "yes"; then
5004 PLATFORMID=macosx_x86_64
5007 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5020 if test "$enable_ios_simulator" = "yes"; then
5021 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5025 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5030 PLATFORMID=ios_arm64
5043 PLATFORMID=dragonfly_x86
5048 PLATFORMID=dragonfly_x86_64
5051 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5065 PLATFORMID=freebsd_aarch64
5071 PLATFORMID=freebsd_x86
5076 PLATFORMID=freebsd_x86_64
5081 PLATFORMID=freebsd_powerpc64
5086 PLATFORMID=freebsd_powerpc
5089 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5105 PLATFORMID=haiku_x86
5110 PLATFORMID=haiku_x86_64
5113 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5129 PLATFORMID=kfreebsd_x86
5134 PLATFORMID=kfreebsd_x86_64
5137 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5142 linux-gnu*|linux-musl*)
5152 PLATFORMID=linux_aarch64
5154 EPM_FLAGS="-a arm64"
5159 PLATFORMID=linux_alpha
5165 PLATFORMID=linux_arm_eabi
5169 PLATFORMID=linux_arm_oabi
5177 PLATFORMID=linux_hppa
5182 PLATFORMID=linux_x86
5187 PLATFORMID=linux_ia64
5193 PLATFORMID=linux_mips_eb
5198 EPM_FLAGS="-a mips64"
5199 PLATFORMID=linux_mips64_eb
5204 EPM_FLAGS="-a mips64el"
5205 PLATFORMID=linux_mips64_el
5210 EPM_FLAGS="-a mipsel"
5211 PLATFORMID=linux_mips_el
5216 EPM_FLAGS="-a riscv64"
5217 PLATFORMID=linux_riscv64
5222 PLATFORMID=linux_m68k
5227 PLATFORMID=linux_powerpc
5232 PLATFORMID=linux_powerpc64
5236 RTL_ARCH=PowerPC_64_LE
5237 PLATFORMID=linux_powerpc64_le
5242 PLATFORMID=linux_sparc
5247 PLATFORMID=linux_sparc64
5252 PLATFORMID=linux_s390
5257 PLATFORMID=linux_s390x
5262 PLATFORMID=linux_x86_64
5266 RTL_ARCH=LOONGARCH64
5267 PLATFORMID=linux_loongarch64
5270 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5286 PLATFORMID=android_arm_eabi
5291 PLATFORMID=android_aarch64
5296 PLATFORMID=android_x86
5301 PLATFORMID=android_x86_64
5304 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5319 PLATFORMID=netbsd_x86
5324 PLATFORMID=netbsd_powerpc
5329 PLATFORMID=netbsd_sparc
5334 PLATFORMID=netbsd_x86_64
5337 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5352 PLATFORMID=openbsd_x86
5357 PLATFORMID=openbsd_x86_64
5360 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5363 SOLARINC="$SOLARINC -I/usr/local/include"
5376 PLATFORMID=solaris_x86
5381 PLATFORMID=solaris_sparc
5386 PLATFORMID=solaris_sparc64
5389 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5392 SOLARINC="$SOLARINC -I/usr/local/include"
5405 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5410 PLATFORMID=linux_x86
5414 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5419 if test "$enable_gui" = "no"; then
5420 if test "$using_x11" != yes; then
5421 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5427 AC_DEFINE(HAVE_FEATURE_UI)
5429 AC_SUBST(DISABLE_GUI)
5431 if test "$with_x" = "no"; then
5435 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5436 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5439 if test "$using_x11" = yes; then
5440 if test "$USING_X11" = TRUE; then
5441 AC_DEFINE(USING_X11)
5444 if test "$DISABLE_DYNLOADING" = TRUE; then
5449 if test "$USING_X11" = TRUE; then
5450 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5454 WORKDIR="${BUILDDIR}/workdir"
5455 INSTDIR="${BUILDDIR}/instdir"
5456 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5457 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5465 AC_SUBST([INSTROOT])
5466 AC_SUBST([INSTROOTBASE])
5470 AC_SUBST(PLATFORMID)
5471 AC_SUBST(WINDOWS_X64)
5472 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5473 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5475 if test "$OS" = WNT -a "$COM" = MSC; then
5477 INTEL) CPPU_ENV=msci ;;
5478 X86_64) CPPU_ENV=mscx ;;
5479 AARCH64) CPPU_ENV=msca ;;
5481 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5489 dnl ===================================================================
5490 dnl Test which package format to use
5491 dnl ===================================================================
5492 AC_MSG_CHECKING([which package format to use])
5493 if test -n "$with_package_format" -a "$with_package_format" != no; then
5494 for i in $with_package_format; do
5496 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5499 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5500 aix - AIX software distribution
5501 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5502 deb - Debian software distribution
5503 pkg - Solaris software distribution
5504 rpm - RedHat software distribution
5506 LibreOffice additionally supports:
5507 archive - .tar.gz or .zip
5509 installed - installation tree
5515 # fakeroot is needed to ensure correct file ownerships/permissions
5516 # inside deb packages and tar archives created on Linux and Solaris.
5517 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5518 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5519 if test "$FAKEROOT" = "no"; then
5521 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5524 PKGFORMAT="$with_package_format"
5525 AC_MSG_RESULT([$PKGFORMAT])
5528 AC_MSG_RESULT([none])
5532 dnl ===================================================================
5533 dnl handle help related options
5535 dnl If you change help related options, please update README.help
5536 dnl ===================================================================
5543 AC_MSG_CHECKING([which help to build])
5544 if test -n "$with_help" -a "$with_help" != "no"; then
5545 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5546 BUILD_TYPE="$BUILD_TYPE HELP"
5547 case "$with_help" in
5549 ENABLE_HTMLHELP=TRUE
5551 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5552 AC_MSG_RESULT([HTML (local)])
5555 ENABLE_HTMLHELP=TRUE
5557 AC_MSG_RESULT([HTML (online)])
5561 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5562 AC_MSG_RESULT([XML (local)])
5565 AC_MSG_ERROR([Unknown --with-help=$with_help])
5572 AC_MSG_CHECKING([if we need to build the help index tooling])
5573 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5574 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5576 AC_MSG_RESULT([yes])
5581 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5582 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5583 if test "$HELP_ONLINE" != TRUE; then
5584 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5586 case "$with_omindex" in
5588 HELP_OMINDEX_PAGE=TRUE
5589 AC_MSG_RESULT([SERVER])
5592 AC_MSG_RESULT([NOXAP])
5595 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5602 AC_MSG_CHECKING([whether to include the XML-help support])
5603 if test "$enable_xmlhelp" = yes; then
5604 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5606 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5607 AC_MSG_RESULT([yes])
5609 if test "$with_help" = yes; then
5610 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5615 dnl Test whether to integrate helppacks into the product's installer
5616 AC_MSG_CHECKING([for helppack integration])
5617 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5618 AC_MSG_RESULT([no integration])
5620 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5621 AC_MSG_RESULT([integration])
5624 AC_SUBST([ENABLE_HTMLHELP])
5625 AC_SUBST([HELP_OMINDEX_PAGE])
5626 AC_SUBST([HELP_ONLINE])
5627 # WITH_HELPPACKS is used only in configure
5629 dnl ===================================================================
5630 dnl Set up a different compiler to produce tools to run on the build
5631 dnl machine when doing cross-compilation
5632 dnl ===================================================================
5634 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5635 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5636 if test "$cross_compiling" = "yes"; then
5637 AC_MSG_CHECKING([for BUILD platform configuration])
5639 rm -rf CONF-FOR-BUILD config_build.mk
5640 mkdir CONF-FOR-BUILD
5641 # Here must be listed all files needed when running the configure script. In particular, also
5642 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5643 # keep them in the same order as there.
5644 (cd $SRC_ROOT && tar cf - \
5646 bin/get_config_variables \
5647 solenv/bin/getcompver.awk \
5648 solenv/inc/langlist.mk \
5651 config_host_lang.mk.in \
5654 bin/bffvalidator.sh.in \
5655 bin/odfvalidator.sh.in \
5656 bin/officeotron.sh.in \
5657 hardened_runtime.xcent.in \
5658 instsetoo_native/util/openoffice.lst.in \
5660 sysui/desktop/macosx/Info.plist.in \
5661 .vscode/vs-code-template.code-workspace.in \
5662 solenv/lockfile/autoconf.h.in \
5664 | (cd CONF-FOR-BUILD && tar xf -)
5665 cp configure CONF-FOR-BUILD
5666 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5668 unset COM USING_X11 OS CPUNAME
5669 unset CC CXX SYSBASE CFLAGS
5670 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5671 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5672 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5673 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5674 if test -n "$CC_FOR_BUILD"; then
5675 export CC="$CC_FOR_BUILD"
5676 CC_BASE=`first_arg_basename "$CC"`
5678 if test -n "$CXX_FOR_BUILD"; then
5679 export CXX="$CXX_FOR_BUILD"
5680 CXX_BASE=`first_arg_basename "$CXX"`
5682 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5685 # Handle host configuration, which affects the cross-toolset too
5687 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5688 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5689 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5690 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5691 if test -n "$ENABLE_JAVA"; then
5694 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5695 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5698 if test -z "$with_jdk_home"; then
5699 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.])
5704 sub_conf_opts="$sub_conf_opts --without-java"
5706 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5707 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5708 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5709 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5710 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5711 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5712 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5713 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5714 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5715 if test "$_os" = "Emscripten"; then
5716 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5717 if test "${with_main_module+set}" = set; then
5718 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5720 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5724 # Don't bother having configure look for stuff not needed for the build platform anyway
5725 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5726 sub_conf_defaults=" \
5727 --build="$build_alias" \
5728 --disable-cairo-canvas \
5730 --disable-customtarget-components \
5731 --disable-firebird-sdbc \
5733 --disable-gstreamer-1-0 \
5737 --disable-mariadb-sdbc \
5739 --disable-online-update \
5741 --disable-pdfimport \
5742 --disable-postgresql-sdbc \
5745 --enable-dynamic-loading \
5746 --enable-icecream="$enable_icecream" \
5750 --with-tls=openssl \
5752 # single quotes added for better readability in case of spaces
5753 echo " Running CONF-FOR-BUILD/configure" \
5754 $sub_conf_defaults \
5755 --with-parallelism="'$with_parallelism'" \
5756 --with-theme="'$with_theme'" \
5757 --with-vendor="'$with_vendor'" \
5759 $with_build_platform_configure_options \
5763 $sub_conf_defaults \
5764 --with-parallelism="$with_parallelism" \
5765 --with-theme="$with_theme" \
5766 "--with-vendor=$with_vendor" \
5768 $with_build_platform_configure_options \
5770 2>&1 | sed -e 's/^/ /'
5771 if test [${PIPESTATUS[0]}] -ne 0; then
5772 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5775 # filter permitted build targets
5776 PERMITTED_BUILD_TARGETS="
5811 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5812 # newlined lists, to use grep as a filter
5813 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5814 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5815 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5816 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5818 cp config_host.mk ../config_build.mk
5819 cp config_host_lang.mk ../config_build_lang.mk
5820 mv config.log ../config.Build.log
5821 mkdir -p ../config_build
5822 mv config_host/*.h ../config_build
5823 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5825 # all these will get a _FOR_BUILD postfix
5826 DIRECT_FOR_BUILD_SETTINGS="
5834 JDK_SECURITYMANAGER_DISALLOWED
5838 LIBO_URE_MISC_FOLDER
5844 # these overwrite host config with build config
5845 OVERWRITING_SETTINGS="
5849 JAVA_CLASSPATH_NOT_SET
5861 # these need some special handling
5862 EXTRA_HANDLED_SETTINGS="
5869 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5873 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5874 echo "$line" >>build-config
5876 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5878 VV=`eval "echo $VV"`
5879 if test -n "$VV"; then
5880 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5881 echo "$line" >>build-config
5885 for V in $OVERWRITING_SETTINGS; do
5887 VV=`eval "echo $VV"`
5888 if test -n "$VV"; then
5889 line=${V}='${'${V}:-$VV'}'
5890 echo "$line" >>build-config
5894 for V in INSTDIR INSTROOT WORKDIR; do
5896 VV=`eval "echo $VV"`
5897 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5898 if test -n "$VV"; then
5899 line="${V}_FOR_BUILD='$VV'"
5900 echo "$line" >>build-config
5905 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5906 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])
5907 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5908 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5910 eval `cat CONF-FOR-BUILD/build-config`
5912 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5914 rm -rf CONF-FOR-BUILD
5918 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5919 CXX_FOR_BUILD="$CXX"
5920 INSTDIR_FOR_BUILD="$INSTDIR"
5921 INSTROOT_FOR_BUILD="$INSTROOT"
5922 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5923 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5924 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5925 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5926 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5927 WORKDIR_FOR_BUILD="$WORKDIR"
5929 AC_SUBST(OS_FOR_BUILD)
5930 AC_SUBST(INSTDIR_FOR_BUILD)
5931 AC_SUBST(INSTROOT_FOR_BUILD)
5932 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5933 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5934 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5935 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5936 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5937 AC_SUBST(WORKDIR_FOR_BUILD)
5938 AC_SUBST(CC_FOR_BUILD)
5939 AC_SUBST(CXX_FOR_BUILD)
5940 AC_SUBST(CPPU_ENV_FOR_BUILD)
5942 dnl ===================================================================
5943 dnl Check for lockfile deps
5944 dnl ===================================================================
5945 if test -z "$CROSS_COMPILING"; then
5946 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5947 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5948 AC_MSG_CHECKING([which lockfile binary to use])
5949 case "$with_system_lockfile" in
5951 AC_MSG_RESULT([external])
5952 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5955 AC_MSG_RESULT([internal])
5958 if test -x "$with_system_lockfile"; then
5959 LOCKFILE="$with_system_lockfile"
5961 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5963 AC_MSG_RESULT([$with_system_lockfile])
5968 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5969 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5972 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5973 AC_CHECK_FUNCS([utime utimes])
5976 dnl ===================================================================
5977 dnl Check for syslog header
5978 dnl ===================================================================
5979 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5981 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5982 dnl ===================================================================
5983 AC_MSG_CHECKING([whether to turn warnings to errors])
5984 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5985 ENABLE_WERROR="TRUE"
5986 PYTHONWARNINGS="error"
5987 AC_MSG_RESULT([yes])
5989 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5990 ENABLE_WERROR="TRUE"
5991 PYTHONWARNINGS="error"
5992 AC_MSG_RESULT([yes])
5997 AC_SUBST(ENABLE_WERROR)
5998 AC_SUBST(PYTHONWARNINGS)
6000 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6001 dnl ===================================================================
6002 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6003 if test -z "$enable_assert_always_abort"; then
6004 if test "$ENABLE_DEBUG" = TRUE; then
6005 enable_assert_always_abort=yes
6007 enable_assert_always_abort=no
6010 if test "$enable_assert_always_abort" = "yes"; then
6011 ASSERT_ALWAYS_ABORT="TRUE"
6012 AC_MSG_RESULT([yes])
6014 ASSERT_ALWAYS_ABORT="FALSE"
6017 AC_SUBST(ASSERT_ALWAYS_ABORT)
6019 # Determine whether to use ooenv for the instdir installation
6020 # ===================================================================
6021 if test $_os != "WINNT" -a $_os != "Darwin"; then
6022 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6023 if test -z "$enable_ooenv"; then
6024 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6030 if test "$enable_ooenv" = "no"; then
6034 AC_MSG_RESULT([yes])
6037 AC_SUBST(ENABLE_OOENV)
6039 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6040 if test "$enable_qt5" = "no"; then
6041 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6047 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6048 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6049 AC_MSG_RESULT([yes])
6051 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6055 AC_SUBST(ENABLE_PAGEIN)
6057 dnl ===================================================================
6058 dnl check for cups support
6059 dnl ===================================================================
6061 AC_MSG_CHECKING([whether to enable CUPS support])
6062 if test "$test_cups" = yes -a "$enable_cups" != no; then
6064 AC_MSG_RESULT([yes])
6066 AC_MSG_CHECKING([whether cups support is present])
6067 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6068 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6069 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6070 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6076 AC_SUBST(ENABLE_CUPS)
6078 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6080 dnl whether to find & fetch external tarballs?
6081 dnl ===================================================================
6082 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6083 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6084 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6086 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6089 if test -z "$TARFILE_LOCATION"; then
6090 if test -d "$SRC_ROOT/src" ; then
6091 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6092 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6094 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6096 AbsolutePath "$TARFILE_LOCATION"
6097 PathFormat "${absolute_path}"
6098 TARFILE_LOCATION="${formatted_path_unix}"
6100 AC_SUBST(TARFILE_LOCATION)
6102 AC_MSG_CHECKING([whether we want to fetch tarballs])
6103 if test "$enable_fetch_external" != "no"; then
6104 if test "$with_all_tarballs" = "yes"; then
6105 AC_MSG_RESULT([yes, all of them])
6106 DO_FETCH_TARBALLS="ALL"
6108 AC_MSG_RESULT([yes, if we use them])
6109 DO_FETCH_TARBALLS="TRUE"
6115 AC_SUBST(DO_FETCH_TARBALLS)
6117 dnl Test whether to include MySpell dictionaries
6118 dnl ===================================================================
6119 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6120 if test "$with_myspell_dicts" = "yes"; then
6121 AC_MSG_RESULT([yes])
6122 WITH_MYSPELL_DICTS=TRUE
6123 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6124 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6129 AC_SUBST(WITH_MYSPELL_DICTS)
6131 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6132 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6133 if test "$with_system_dicts" = yes; then
6134 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6136 with_system_dicts=no
6139 AC_MSG_CHECKING([whether to use dicts from external paths])
6140 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6141 AC_MSG_RESULT([yes])
6143 AC_MSG_CHECKING([for spelling dictionary directory])
6144 if test -n "$with_external_dict_dir"; then
6145 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6147 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6148 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6149 DICT_SYSTEM_DIR=file:///usr/share/myspell
6152 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6153 AC_MSG_CHECKING([for hyphenation patterns directory])
6154 if test -n "$with_external_hyph_dir"; then
6155 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6157 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6159 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6160 AC_MSG_CHECKING([for thesaurus directory])
6161 if test -n "$with_external_thes_dir"; then
6162 THES_SYSTEM_DIR=file://$with_external_thes_dir
6164 THES_SYSTEM_DIR=file:///usr/share/mythes
6166 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6171 AC_SUBST(SYSTEM_DICTS)
6172 AC_SUBST(DICT_SYSTEM_DIR)
6173 AC_SUBST(HYPH_SYSTEM_DIR)
6174 AC_SUBST(THES_SYSTEM_DIR)
6176 dnl ===================================================================
6177 dnl Precompiled headers.
6179 AC_MSG_CHECKING([whether to enable pch feature])
6180 if test -z "$enable_pch"; then
6181 if test "$_os" = "WINNT"; then
6182 # Enabled by default on Windows.
6184 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6185 if test -z "$enable_ccache" -a "$SCCACHE"; then
6192 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6193 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6195 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6196 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6198 if test "$enable_pch" = "system"; then
6200 AC_MSG_RESULT([yes (system headers)])
6201 elif test "$enable_pch" = "base"; then
6203 AC_MSG_RESULT([yes (system and base headers)])
6204 elif test "$enable_pch" = "normal"; then
6206 AC_MSG_RESULT([yes (normal)])
6207 elif test "$enable_pch" = "full"; then
6209 AC_MSG_RESULT([yes (full)])
6210 elif test "$enable_pch" = "yes"; then
6211 # Pick a suitable default.
6212 if test "$GCC" = "yes"; then
6213 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6214 # while making the PCHs larger and rebuilds more likely.
6216 AC_MSG_RESULT([yes (system and base headers)])
6218 # With MSVC the highest level makes a significant difference,
6219 # and it was the default when there used to be no PCH levels.
6221 AC_MSG_RESULT([yes (full)])
6223 elif test "$enable_pch" = "no"; then
6226 AC_MSG_ERROR([Unknown value for --enable-pch])
6228 AC_SUBST(ENABLE_PCH)
6229 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6230 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6231 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6232 if test "$CCACHE_BIN" != "not found"; then
6233 AC_MSG_CHECKING([ccache version])
6234 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6235 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6236 AC_MSG_RESULT([$CCACHE_VERSION])
6237 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6238 if test "$CCACHE_NUMVER" -gt "030701"; then
6239 AC_MSG_RESULT([yes])
6241 AC_MSG_RESULT([no (not newer than 3.7.1)])
6247 PCH_INSTANTIATE_TEMPLATES=
6248 if test -n "$ENABLE_PCH"; then
6249 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6251 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6252 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6254 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6260 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6262 BUILDING_PCH_WITH_OBJ=
6263 if test -n "$ENABLE_PCH"; then
6264 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6266 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6267 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6269 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6275 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6280 if test "$COM" = MSC; then
6281 fpch_prefix="-Xclang "
6283 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6284 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6286 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6287 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6288 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6290 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6291 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6292 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6294 if test -n "$PCH_CODEGEN"; then
6300 AC_SUBST(PCH_CODEGEN)
6301 AC_SUBST(PCH_NO_CODEGEN)
6303 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6304 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6306 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6307 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6309 if test -n "$PCH_DEBUGINFO"; then
6315 AC_SUBST(PCH_DEBUGINFO)
6319 AC_MSG_CHECKING([the GNU Make version])
6320 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6321 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6322 if test "$_make_longver" -ge "040000"; then
6323 AC_MSG_RESULT([$GNUMAKE $_make_version])
6325 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6328 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6330 if test "$_make_ver_check" = ""; then
6334 HAVE_LD_HASH_STYLE=FALSE
6335 WITH_LINKER_HASH_STYLE=
6336 AC_MSG_CHECKING([for --hash-style gcc linker support])
6337 if test "$GCC" = "yes"; then
6338 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6339 hash_styles="gnu sysv"
6340 elif test "$with_linker_hash_style" = "no"; then
6343 hash_styles="$with_linker_hash_style"
6346 for hash_style in $hash_styles; do
6347 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6348 hash_style_ldflags_save=$LDFLAGS
6349 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6351 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6358 HAVE_LD_HASH_STYLE=TRUE
6359 WITH_LINKER_HASH_STYLE=$hash_style
6361 [HAVE_LD_HASH_STYLE=FALSE],
6362 [HAVE_LD_HASH_STYLE=FALSE])
6363 LDFLAGS=$hash_style_ldflags_save
6366 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6367 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6371 LDFLAGS=$hash_style_ldflags_save
6375 AC_SUBST(HAVE_LD_HASH_STYLE)
6376 AC_SUBST(WITH_LINKER_HASH_STYLE)
6378 dnl ===================================================================
6379 dnl Check whether there's a Perl version available.
6380 dnl ===================================================================
6381 if test -z "$with_perl_home"; then
6382 AC_PATH_PROG(PERL, perl)
6384 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6385 _perl_path="$with_perl_home/bin/perl"
6386 if test -x "$_perl_path"; then
6389 AC_MSG_ERROR([$_perl_path not found])
6393 dnl ===================================================================
6394 dnl Testing for Perl version 5 or greater.
6395 dnl $] is the Perl version variable, it is returned as an integer
6396 dnl ===================================================================
6397 if test "$PERL"; then
6398 AC_MSG_CHECKING([the Perl version])
6399 ${PERL} -e "exit($]);"
6401 if test "$_perl_version" -lt 5; then
6402 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6404 AC_MSG_RESULT([Perl $_perl_version])
6406 AC_MSG_ERROR([Perl not found, install Perl 5])
6409 dnl ===================================================================
6410 dnl Testing for required Perl modules
6411 dnl ===================================================================
6413 AC_MSG_CHECKING([for required Perl modules])
6414 perl_use_string="use Cwd ; use Digest::MD5"
6415 if test "$_os" = "WINNT"; then
6416 if test -n "$PKGFORMAT"; then
6417 for i in $PKGFORMAT; do
6420 # for getting fonts versions to use in MSI
6421 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6427 if test "$with_system_hsqldb" = "yes"; then
6428 perl_use_string="$perl_use_string ; use Archive::Zip"
6430 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6431 # OpenSSL needs that to build
6432 perl_use_string="$perl_use_string ; use FindBin"
6434 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6435 AC_MSG_RESULT([all modules found])
6437 AC_MSG_RESULT([failed to find some modules])
6438 # Find out which modules are missing.
6439 for i in $perl_use_string; do
6440 if test "$i" != "use" -a "$i" != ";"; then
6441 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6442 missing_perl_modules="$missing_perl_modules $i"
6447 The missing Perl modules are: $missing_perl_modules
6448 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6451 dnl ===================================================================
6452 dnl Check for pkg-config
6453 dnl ===================================================================
6454 if test "$_os" != "WINNT"; then
6457 AC_SUBST(PKG_CONFIG)
6458 AC_SUBST(PKG_CONFIG_PATH)
6459 AC_SUBST(PKG_CONFIG_LIBDIR)
6461 if test "$_os" != "WINNT"; then
6463 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6464 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6465 # explicitly. Or put /path/to/compiler in PATH yourself.
6468 if test "$COM_IS_CLANG" = "TRUE"; then
6471 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6472 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6473 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6474 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6475 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6476 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6485 dnl ===================================================================
6486 dnl pkg-config checks on macOS
6487 dnl ===================================================================
6489 if test $_os = Darwin; then
6490 AC_MSG_CHECKING([for bogus pkg-config])
6491 if test -n "$PKG_CONFIG"; then
6492 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6493 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6495 if test "$enable_bogus_pkg_config" = "yes"; then
6496 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6498 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.])
6502 AC_MSG_RESULT([no, good])
6508 # Return value: $csctest
6512 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6513 if test -n "$regvalue"; then
6521 # Return value: $altest
6525 # We need this check to detect 4.6.1 or above.
6526 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6527 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6528 PathFormat "$regvalue"
6529 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6535 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6536 for x in $reglist; do
6537 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6538 PathFormat "$regvalue"
6539 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6550 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
6551 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6552 if test -n "$regvalue"; then
6559 find_winsdk_version()
6561 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6562 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6564 unset winsdktest winsdkbinsubdir winsdklibsubdir
6568 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6569 if test -n "$regvalue"; then
6570 winsdktest=$regvalue
6571 winsdklibsubdir=win8
6576 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6577 if test -n "$regvalue"; then
6578 winsdktest=$regvalue
6579 winsdklibsubdir=winv6.3
6584 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6585 if test -n "$regvalue"; then
6586 winsdktest=$regvalue
6587 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6588 if test -n "$regvalue"; then
6589 winsdkbinsubdir="$regvalue".0
6590 winsdklibsubdir=$winsdkbinsubdir
6591 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6592 local tmppath_unix=$(cygpath -u "$tmppath")
6593 # test exist the SDK path
6594 if test -d "$tmppath_unix"; then
6595 # when path is convertible to a short path then path is okay
6596 cygpath -d "$tmppath" >/dev/null 2>&1
6597 if test $? -ne 0; then
6598 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6601 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6612 # Return value: From find_winsdk_version
6616 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6617 find_winsdk_version $ver
6618 if test -n "$winsdktest"; then
6626 # Return value: $msmdir
6629 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6630 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6633 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6638 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6639 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6640 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6641 if test -e "$my_msm_dir${my_msm_file}"; then
6648 if test -n "$msmdir"; then
6649 msmdir=`cygpath -m "$msmdir"`
6650 AC_MSG_RESULT([$msmdir])
6652 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6653 AC_MSG_FAILURE([not found])
6655 AC_MSG_WARN([not found (check config.log)])
6656 add_warning "MSM ${my_msm_file} not found"
6661 find_msvc_x64_dlls()
6663 # Return value: $msvcdllpath, $msvcdlls
6665 AC_MSG_CHECKING([for MSVC x64 DLL path])
6667 dnl Order crtver in increasing order. Then check the directories returned by
6668 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6669 dnl the result will be the highest CRT version found in the highest directory.
6671 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6674 for crtver in 141 142 143; do
6675 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6676 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6677 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6678 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6684 AC_MSG_RESULT([$msvcdllpath])
6685 AC_MSG_CHECKING([for MSVC x64 DLLs])
6686 msvcdlls="msvcp140.dll vcruntime140.dll"
6687 for dll in $msvcdlls; do
6688 if ! test -f "$msvcdllpath/$dll"; then
6689 AC_MSG_FAILURE([missing $dll])
6692 AC_MSG_RESULT([found all ($msvcdlls)])
6695 dnl =========================================
6696 dnl Check for the Windows SDK.
6697 dnl =========================================
6698 if test "$_os" = "WINNT"; then
6699 AC_MSG_CHECKING([for Windows SDK])
6700 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6702 WINDOWS_SDK_HOME=$winsdktest
6704 # normalize if found
6705 if test -n "$WINDOWS_SDK_HOME"; then
6706 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6707 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6710 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6713 if test -n "$WINDOWS_SDK_HOME"; then
6714 # Remove a possible trailing backslash
6715 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6717 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6718 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6719 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6720 have_windows_sdk_headers=yes
6721 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6722 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6723 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6724 have_windows_sdk_headers=yes
6725 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6726 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6727 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6728 have_windows_sdk_headers=yes
6730 have_windows_sdk_headers=no
6733 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6734 have_windows_sdk_libs=yes
6735 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6736 have_windows_sdk_libs=yes
6738 have_windows_sdk_libs=no
6741 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6742 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6743 the Windows SDK are installed.])
6747 if test -z "$WINDOWS_SDK_HOME"; then
6748 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6749 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6750 WINDOWS_SDK_VERSION=80
6751 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6752 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6753 WINDOWS_SDK_VERSION=81
6754 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6755 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6756 WINDOWS_SDK_VERSION=10
6757 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6759 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6761 PathFormat "$WINDOWS_SDK_HOME"
6762 WINDOWS_SDK_HOME="$formatted_path"
6763 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6764 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6765 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6766 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6767 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6768 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6769 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6773 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6774 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6775 dnl but not in v8.0), so allow this to be overridden with a
6776 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6777 dnl and configuration error if no WiLangId.vbs is found would arguably be
6778 dnl better, but I do not know under which conditions exactly it is needed by
6780 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6781 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6782 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6783 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6784 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6785 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6787 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6788 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6789 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6791 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6792 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6793 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6796 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6797 if test -n "$with_package_format" -a "$with_package_format" != no; then
6798 for i in "$with_package_format"; do
6799 if test "$i" = "msi"; then
6800 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6801 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6808 AC_SUBST(WINDOWS_SDK_HOME)
6809 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6810 AC_SUBST(WINDOWS_SDK_VERSION)
6811 AC_SUBST(WINDOWS_SDK_WILANGID)
6813 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6814 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6815 dnl dir, it also determines that dir's path w/o an arch segment if any,
6816 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6817 AC_MSG_CHECKING([for midl.exe])
6820 PathFormat "$winsdktest"
6821 winsdktest_unix="$formatted_path_unix"
6823 if test -n "$winsdkbinsubdir" \
6824 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6826 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6827 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6828 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6829 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6830 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6831 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6832 MIDL_PATH=$winsdktest/Bin
6833 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6835 PathFormat "$MIDL_PATH"
6836 if test ! -f "$formatted_path_unix/midl.exe"; then
6837 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6839 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6842 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6843 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6845 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6846 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6847 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6848 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6849 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6850 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6851 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6852 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6853 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6854 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6855 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6856 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6858 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6862 AC_MSG_CHECKING([for csc.exe])
6864 PathFormat "$csctest"
6865 csctest_unix="$formatted_path_unix"
6866 if test -f "$csctest_unix/csc.exe"; then
6869 if test ! -f "$csctest_unix/csc.exe"; then
6870 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6872 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6875 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6878 AC_MSG_CHECKING([for al.exe])
6879 if test -n "$winsdkbinsubdir" \
6880 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6882 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6883 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6884 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6885 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6886 AL_PATH="$winsdktest/Bin"
6889 if test -z "$AL_PATH"; then
6891 PathFormat "$altest"
6892 altest_unix="$formatted_path_unix"
6893 if test -f "$altest_unix/bin/al.exe"; then
6894 AL_PATH="$altest/bin"
6895 elif test -f "$altest_unix/al.exe"; then
6899 PathFormat "$AL_PATH"
6900 if test ! -f "$formatted_path_unix/al.exe"; then
6901 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6903 AC_MSG_RESULT([$AL_PATH/al.exe])
6906 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6908 dnl Check mscoree.lib / .NET Framework dir
6909 AC_MSG_CHECKING(.NET Framework)
6911 PathFormat "$frametest"
6912 frametest="$formatted_path_unix"
6913 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6914 DOTNET_FRAMEWORK_HOME="$frametest"
6916 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6917 DOTNET_FRAMEWORK_HOME="$winsdktest"
6920 PathFormat "$DOTNET_FRAMEWORK_HOME"
6921 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
6922 AC_MSG_ERROR([mscoree.lib not found])
6924 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6926 PathFormat "$MIDL_PATH"
6927 MIDL_PATH="$formatted_path"
6929 PathFormat "$AL_PATH"
6930 AL_PATH="$formatted_path"
6932 PathFormat "$DOTNET_FRAMEWORK_HOME"
6933 DOTNET_FRAMEWORK_HOME="$formatted_path"
6935 PathFormat "$CSC_PATH"
6936 CSC_PATH="$formatted_path"
6939 dnl ===================================================================
6940 dnl Testing for C++ compiler and version...
6941 dnl ===================================================================
6943 if test "$_os" != "WINNT"; then
6944 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6945 save_CXXFLAGS=$CXXFLAGS
6947 CXXFLAGS=$save_CXXFLAGS
6948 if test -z "$CXX_BASE"; then
6949 CXX_BASE=`first_arg_basename "$CXX"`
6953 dnl check for GNU C++ compiler version
6954 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6955 AC_MSG_CHECKING([the GNU C++ compiler version])
6957 _gpp_version=`$CXX -dumpversion`
6958 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6960 if test "$_gpp_majmin" -lt "700"; then
6961 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6963 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6966 dnl see https://code.google.com/p/android/issues/detail?id=41770
6970 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6971 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6972 #include <bits/c++config.h>]],[[
6973 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6974 && !defined(_GLIBCXX__PTHREADS) \
6975 && !defined(_GLIBCXX_HAS_GTHREADS)
6978 ]])],[AC_MSG_RESULT([yes])
6979 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6981 if test $glibcxx_threads = yes; then
6982 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6985 AC_SUBST(BOOST_CXXFLAGS)
6988 # prefx CXX with ccache if needed
6990 if test "$CCACHE" != ""; then
6991 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6993 save_CXXFLAGS=$CXXFLAGS
6994 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6995 # msvc does not fail on unknown options, check stdout
6996 if test "$COM" = MSC; then
6997 CXXFLAGS="$CXXFLAGS -nologo"
6999 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7000 ac_cxx_werror_flag=yes
7001 dnl an empty program will do, we're checking the compiler flags
7002 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7003 [use_ccache=yes], [use_ccache=no])
7004 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7005 AC_MSG_RESULT([yes])
7008 CXX_BASE="ccache $CXX_BASE"
7011 CXXFLAGS=$save_CXXFLAGS
7012 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7016 dnl ===================================================================
7017 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7018 dnl ===================================================================
7020 if test "$_os" != "WINNT"; then
7023 dnl Check whether there's a C pre-processor.
7028 dnl ===================================================================
7029 dnl Find integral type sizes and alignments
7030 dnl ===================================================================
7032 if test "$_os" != "WINNT"; then
7034 AC_CHECK_SIZEOF(long)
7035 AC_CHECK_SIZEOF(short)
7036 AC_CHECK_SIZEOF(int)
7037 AC_CHECK_SIZEOF(long long)
7038 AC_CHECK_SIZEOF(double)
7039 AC_CHECK_SIZEOF(void*)
7040 AC_CHECK_SIZEOF(size_t)
7042 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7043 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7044 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7045 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7046 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7047 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7049 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7050 m4_pattern_allow([AC_CHECK_ALIGNOF])
7051 m4_ifdef([AC_CHECK_ALIGNOF],
7053 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7054 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7055 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7056 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7059 case "$_os-$host_cpu" in
7061 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7062 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7063 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7064 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7067 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7068 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7069 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7070 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7073 if test -z "$ac_cv_alignof_short" -o \
7074 -z "$ac_cv_alignof_int" -o \
7075 -z "$ac_cv_alignof_long" -o \
7076 -z "$ac_cv_alignof_double"; then
7077 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.])
7083 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7084 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7085 if test $ac_cv_sizeof_long -eq 8; then
7086 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7087 elif test $ac_cv_sizeof_double -eq 8; then
7088 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7090 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7093 dnl Check for large file support
7095 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7096 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7098 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7099 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7103 SAL_TYPES_SIZEOFSHORT=2
7104 SAL_TYPES_SIZEOFINT=4
7105 SAL_TYPES_SIZEOFLONG=4
7106 SAL_TYPES_SIZEOFLONGLONG=8
7107 if test $WIN_HOST_BITS -eq 32; then
7108 SAL_TYPES_SIZEOFPOINTER=4
7111 SAL_TYPES_SIZEOFPOINTER=8
7114 SAL_TYPES_ALIGNMENT2=2
7115 SAL_TYPES_ALIGNMENT4=4
7116 SAL_TYPES_ALIGNMENT8=8
7119 AC_SUBST(LFS_CFLAGS)
7120 AC_SUBST(SIZEOF_SIZE_T)
7122 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7123 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7124 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7125 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7126 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7127 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7128 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7129 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7131 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7132 AC_MSG_CHECKING([whether jumbo sheets are supported])
7133 if test "$_os" != "WINNT"; then
7134 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7135 AC_MSG_RESULT([yes])
7136 ENABLE_JUMBO_SHEETS=TRUE
7137 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7142 if test $WIN_HOST_BITS -gt 32; then
7143 # 64bit windows is special-cased for tools::Long because long is 32bit
7144 AC_MSG_RESULT([yes])
7145 ENABLE_JUMBO_SHEETS=TRUE
7146 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7151 AC_SUBST(ENABLE_JUMBO_SHEETS)
7153 dnl ===================================================================
7154 dnl Check whether to enable runtime optimizations
7155 dnl ===================================================================
7156 ENABLE_RUNTIME_OPTIMIZATIONS=
7157 AC_MSG_CHECKING([whether to enable runtime optimizations])
7158 if test -z "$enable_runtime_optimizations"; then
7162 enable_runtime_optimizations=no
7168 if test "$enable_runtime_optimizations" != no; then
7169 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7170 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7171 AC_MSG_RESULT([yes])
7175 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7177 dnl ===================================================================
7178 dnl Check if valgrind headers are available
7179 dnl ===================================================================
7181 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7182 prev_cppflags=$CPPFLAGS
7183 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7184 # or where does it come from?
7185 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7186 AC_CHECK_HEADER([valgrind/valgrind.h],
7187 [ENABLE_VALGRIND=TRUE])
7188 CPPFLAGS=$prev_cppflags
7190 AC_SUBST([ENABLE_VALGRIND])
7191 if test -z "$ENABLE_VALGRIND"; then
7192 if test "$with_valgrind" = yes; then
7193 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7197 AC_SUBST([VALGRIND_CFLAGS])
7200 dnl ===================================================================
7201 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7202 dnl ===================================================================
7204 # We need at least the sys/sdt.h include header.
7205 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7206 if test "$SDT_H_FOUND" = "TRUE"; then
7207 # Found sys/sdt.h header, now make sure the c++ compiler works.
7208 # Old g++ versions had problems with probes in constructors/destructors.
7209 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7211 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7212 #include <sys/sdt.h>
7220 ProbeClass(int& v, const char *n) : ref(v), name(n)
7222 DTRACE_PROBE2(_test_, cons, name, ref);
7225 void method(int min)
7227 DTRACE_PROBE3(_test_, meth, name, ref, min);
7233 DTRACE_PROBE2(_test_, dest, name, ref);
7238 DTRACE_PROBE1(_test_, call, i);
7239 ProbeClass inst = ProbeClass(i, "call");
7241 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7242 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7245 AC_CONFIG_HEADERS([config_host/config_probes.h])
7247 dnl ===================================================================
7249 dnl ===================================================================
7250 HAVE_GCC_STACK_CLASH_PROTECTION=
7251 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7252 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7254 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7256 [AC_LANG_PROGRAM(, [[return 0;]])],
7257 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7258 [AC_MSG_RESULT([no])])
7261 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7263 CFLAGS="$CFLAGS -Werror -mno-avx"
7264 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7266 if test "$HAVE_GCC_AVX" = "TRUE"; then
7267 AC_MSG_RESULT([yes])
7272 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7273 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7275 if (__sync_add_and_fetch(&v, 1) != 1 ||
7276 __sync_sub_and_fetch(&v, 1) != 0)
7278 __sync_synchronize();
7279 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7283 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7284 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7285 AC_MSG_RESULT([yes])
7286 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7291 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7293 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7296 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7298 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7299 AC_MSG_RESULT([yes])
7300 ], [AC_MSG_RESULT([no])])
7303 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7305 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7308 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7310 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7311 AC_MSG_RESULT([yes])
7312 ], [AC_MSG_RESULT([no])])
7315 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7317 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7319 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7321 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7322 AC_MSG_RESULT([yes])
7323 ], [AC_MSG_RESULT([no])])
7326 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7328 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7331 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7333 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7334 AC_MSG_RESULT([yes])
7335 ], [AC_MSG_RESULT([no])])
7338 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7340 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7343 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7345 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7346 AC_MSG_RESULT([yes])
7347 ], [AC_MSG_RESULT([no])])
7350 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7352 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7354 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7356 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7357 AC_MSG_RESULT([yes])
7358 ], [AC_MSG_RESULT([no])])
7361 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7363 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7365 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7367 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7368 AC_MSG_RESULT([yes])
7369 ], [AC_MSG_RESULT([no])])
7372 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7374 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7376 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7378 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7379 AC_MSG_RESULT([yes])
7380 ], [AC_MSG_RESULT([no])])
7383 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7385 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7388 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7390 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7391 AC_MSG_RESULT([yes])
7392 ], [AC_MSG_RESULT([no])])
7395 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7397 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7400 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7402 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7403 AC_MSG_RESULT([yes])
7404 ], [AC_MSG_RESULT([no])])
7408 AC_SUBST(HAVE_GCC_AVX)
7409 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7410 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7412 dnl ===================================================================
7413 dnl Identify the C++ library
7414 dnl ===================================================================
7416 AC_MSG_CHECKING([what the C++ library is])
7420 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7426 [CPP_LIBRARY=GLIBCXX
7427 cpp_library_name="GNU libstdc++"
7430 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7432 #ifndef _LIBCPP_VERSION
7437 cpp_library_name="LLVM libc++"
7438 AC_DEFINE([HAVE_LIBCPP])
7441 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7448 cpp_library_name="Microsoft"
7450 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7451 AC_MSG_RESULT([$cpp_library_name])
7453 AC_SUBST([HAVE_LIBSTDCPP])
7454 AC_SUBST([HAVE_LIBCPP])
7456 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7458 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7459 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7460 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7461 # although there will be backwards compatibility).
7462 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7463 # and there would be undefined references to debug functions.
7464 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7465 # So check if debug mode can be used and disable or downgrade it to assertions
7467 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7470 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7471 #define _LIBCPP_DEBUG 0 // only assertions
7479 ]])], [libcpp_debug_links=1])
7480 if test -n "$libcpp_debug_links"; then
7481 # we can use at least assertions, check if debug mode works
7482 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7483 #define _LIBCPP_DEBUG 1 // debug mode
7486 int foo(const std::vector<int>& v) { return *v.begin(); }
7491 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7492 return (foo(v) + s.size()) != 0 ? 0 : 1;
7496 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7498 [AC_MSG_RESULT(no, using only assertions)
7499 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7507 AC_SUBST([LIBCPP_DEBUG])
7509 dnl ===================================================================
7511 dnl ===================================================================
7512 AC_PATH_PROG(GPERF, gperf)
7513 if test -z "$GPERF"; then
7514 AC_MSG_ERROR([gperf not found but needed. Install it.])
7516 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7517 GPERF=`cygpath -m $GPERF`
7519 AC_MSG_CHECKING([whether gperf is new enough])
7520 my_gperf_ver1=$($GPERF --version | head -n 1)
7521 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7522 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7523 if test "$my_gperf_ver3" -ge 301; then
7524 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7526 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7530 dnl ===================================================================
7531 dnl Check for system libcmis
7532 dnl ===================================================================
7533 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7535 dnl ===================================================================
7537 dnl ===================================================================
7539 if test -z "${CXXFLAGS_CXX11+x}"; then
7540 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7541 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7542 if test "$with_latest_c__" = yes; then
7543 CXXFLAGS_CXX11=-std:c++latest
7545 CXXFLAGS_CXX11=-std:c++17
7547 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7548 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7549 my_flags='-std=c++17 -std=c++1z'
7550 if test "$with_latest_c__" = yes; then
7551 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7553 for flag in $my_flags; do
7554 if test "$COM" = MSC; then
7555 flag="-Xclang $flag"
7557 save_CXXFLAGS=$CXXFLAGS
7558 CXXFLAGS="$CXXFLAGS $flag -Werror"
7559 if test "$SYSTEM_LIBCMIS" = TRUE; then
7560 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7563 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7564 #include <algorithm>
7565 #include <functional>
7568 #if defined SYSTEM_LIBCMIS
7569 // See ucb/source/ucp/cmis/auth_provider.hxx:
7570 #if !defined __clang__
7571 #pragma GCC diagnostic push
7572 #pragma GCC diagnostic ignored "-Wdeprecated"
7573 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7575 #include <libcmis/libcmis.hxx>
7576 #if !defined __clang__
7577 #pragma GCC diagnostic pop
7581 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7582 std::sort(v.begin(), v.end(), fn);
7584 ]])],[CXXFLAGS_CXX11=$flag])
7586 CXXFLAGS=$save_CXXFLAGS
7587 if test -n "$CXXFLAGS_CXX11"; then
7592 if test -n "$CXXFLAGS_CXX11"; then
7593 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7598 AC_SUBST(CXXFLAGS_CXX11)
7600 if test "$GCC" = "yes"; then
7601 save_CXXFLAGS=$CXXFLAGS
7602 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7604 CXXFLAGS=$save_CXXFLAGS
7605 AC_SUBST(ATOMIC_LIB)
7608 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7609 save_CXXFLAGS=$CXXFLAGS
7610 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7613 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7616 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7632 a thinga[]={{0,0}, {1,1}};
7633 b thingb[]={{0,0}, {1,1}};
7634 size_t i = sizeof(sal_n_array_size(thinga));
7635 size_t j = sizeof(sal_n_array_size(thingb));
7636 return !(i != 0 && j != 0);
7638 ], [ AC_MSG_RESULT(yes) ],
7639 [ AC_MSG_ERROR(no)])
7641 CXXFLAGS=$save_CXXFLAGS
7643 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7644 if test "$GCC" = yes; then
7645 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7647 save_CXXFLAGS=$CXXFLAGS
7648 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7649 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7650 CXXFLAGS=$save_CXXFLAGS
7652 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7653 AC_MSG_RESULT([yes])
7658 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7660 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7662 save_CXXFLAGS=$CXXFLAGS
7663 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7664 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7665 #include <algorithm>
7666 #include <initializer_list>
7668 template<typename T> class S {
7672 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7674 constinit S<int> s{3, 2, 1};
7676 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7677 AC_MSG_RESULT([yes])
7678 ], [AC_MSG_RESULT([no])])
7679 CXXFLAGS=$save_CXXFLAGS
7682 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7684 save_CXXFLAGS=$CXXFLAGS
7685 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7686 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7688 #include <type_traits>
7689 // Don't check size_type directly, as it was called index_type before P1872R0:
7690 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7692 AC_DEFINE([HAVE_CPP_SPAN],[1])
7693 AC_MSG_RESULT([yes])
7694 ], [AC_MSG_RESULT([no])])
7695 CXXFLAGS=$save_CXXFLAGS
7698 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7700 save_CXXFLAGS=$CXXFLAGS
7701 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7702 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7703 struct S1 { S1(S1 &&); };
7705 S1 f(S2 s) { return s; }
7707 AC_DEFINE([HAVE_P1155R3],[1])
7708 AC_MSG_RESULT([yes])
7709 ], [AC_MSG_RESULT([no])])
7710 CXXFLAGS=$save_CXXFLAGS
7713 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7714 HAVE_CXX20_ATOMIC_REF=
7716 save_CXXFLAGS=$CXXFLAGS
7717 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7718 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7721 std::atomic_ref<int> y(x);
7723 HAVE_CXX20_ATOMIC_REF=TRUE
7724 AC_MSG_RESULT([yes])
7725 ], [AC_MSG_RESULT([no])])
7726 CXXFLAGS=$save_CXXFLAGS
7728 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7730 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7731 dnl which is included in -Wextra anyway):
7732 HAVE_WDEPRECATED_COPY_DTOR=
7733 if test "$GCC" = yes; then
7734 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7736 save_CXXFLAGS=$CXXFLAGS
7737 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7738 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7739 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7740 AC_MSG_RESULT([yes])
7741 ], [AC_MSG_RESULT([no])])
7742 CXXFLAGS=$save_CXXFLAGS
7745 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7747 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7748 dnl uninitialized warning for code like
7751 dnl boost::optional<OString> * g(bool b) {
7752 dnl boost::optional<OString> o;
7754 dnl return new boost::optional<OString>(o);
7757 dnl (as is e.g. present, in a slightly more elaborate form, in
7758 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7759 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7760 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7761 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7762 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7764 save_CXXFLAGS=$CXXFLAGS
7765 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7766 if test "$ENABLE_OPTIMIZED" = TRUE; then
7767 CXXFLAGS="$CXXFLAGS -O2"
7769 CXXFLAGS="$CXXFLAGS -O0"
7771 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7780 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7781 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7787 char stg[sizeof (S1)];
7795 ]])], [AC_MSG_RESULT([no])], [
7796 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7797 AC_MSG_RESULT([yes])
7799 CXXFLAGS=$save_CXXFLAGS
7802 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7804 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7805 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7806 dnl hits us e.g. with GCC 10 and --enable-optimized at
7808 dnl In file included from include/rtl/string.hxx:49,
7809 dnl from include/rtl/ustring.hxx:43,
7810 dnl from include/osl/file.hxx:35,
7811 dnl from include/codemaker/global.hxx:28,
7812 dnl from include/codemaker/options.hxx:23,
7813 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7814 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7815 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,
7816 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,
7817 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,
7818 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7819 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7820 dnl 78 | memcpy( buffer, data, length );
7821 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7822 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7823 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7824 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7826 save_CXXFLAGS=$CXXFLAGS
7827 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7828 if test "$ENABLE_OPTIMIZED" = TRUE; then
7829 CXXFLAGS="$CXXFLAGS -O2"
7831 CXXFLAGS="$CXXFLAGS -O0"
7833 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7834 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7835 void fill(char const * begin, char const * end, char c);
7841 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7842 __builtin_strncpy(c.username, "root", sizeof(c.username));
7844 ]])], [AC_MSG_RESULT([no])], [
7845 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7846 AC_MSG_RESULT([yes])
7848 CXXFLAGS=$save_CXXFLAGS
7851 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7853 HAVE_DLLEXPORTINLINES=
7854 if test "$_os" = "WINNT"; then
7855 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7857 save_CXXFLAGS=$CXXFLAGS
7858 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7859 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7860 HAVE_DLLEXPORTINLINES=TRUE
7861 AC_MSG_RESULT([yes])
7862 ], [AC_MSG_RESULT([no])])
7863 CXXFLAGS=$save_CXXFLAGS
7866 AC_SUBST([HAVE_DLLEXPORTINLINES])
7868 dnl ===================================================================
7869 dnl CPU Intrinsics support - SSE, AVX
7870 dnl ===================================================================
7872 CXXFLAGS_INTRINSICS_SSE2=
7873 CXXFLAGS_INTRINSICS_SSSE3=
7874 CXXFLAGS_INTRINSICS_SSE41=
7875 CXXFLAGS_INTRINSICS_SSE42=
7876 CXXFLAGS_INTRINSICS_AVX=
7877 CXXFLAGS_INTRINSICS_AVX2=
7878 CXXFLAGS_INTRINSICS_AVX512=
7879 CXXFLAGS_INTRINSICS_AVX512F=
7880 CXXFLAGS_INTRINSICS_F16C=
7881 CXXFLAGS_INTRINSICS_FMA=
7883 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7884 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7891 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7892 flag_avx512f=-mavx512f
7896 # With MSVC using -arch is in fact not necessary for being able
7897 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7898 # even if compiled with -arch:AVX, the -arch option really only affects
7899 # instructions generated for C/C++ code.
7900 # So use the matching same (or lower) -arch options, but only in order
7901 # to generate the best matching instructions for the C++ code surrounding
7903 # SSE2 is the default for x86/x64, so no need to specify the option.
7905 # No specific options for these, use the next lower.
7906 flag_ssse3="$flag_sse2"
7907 flag_sse41="$flag_sse2"
7908 flag_sse42="$flag_sse2"
7910 flag_avx2=-arch:AVX2
7911 flag_avx512=-arch:AVX512
7912 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7913 flag_avx512f=-arch:AVX2
7914 # No MSVC options for these.
7915 flag_f16c="$flag_sse2"
7916 flag_fma="$flag_sse2"
7919 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7921 save_CXXFLAGS=$CXXFLAGS
7922 CXXFLAGS="$CXXFLAGS $flag_sse2"
7923 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7924 #include <emmintrin.h>
7926 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7927 c = _mm_xor_si128 (a, b);
7931 [can_compile_sse2=yes],
7932 [can_compile_sse2=no])
7934 CXXFLAGS=$save_CXXFLAGS
7935 AC_MSG_RESULT([${can_compile_sse2}])
7936 if test "${can_compile_sse2}" = "yes" ; then
7937 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7940 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7942 save_CXXFLAGS=$CXXFLAGS
7943 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7944 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7945 #include <tmmintrin.h>
7947 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7948 c = _mm_maddubs_epi16 (a, b);
7952 [can_compile_ssse3=yes],
7953 [can_compile_ssse3=no])
7955 CXXFLAGS=$save_CXXFLAGS
7956 AC_MSG_RESULT([${can_compile_ssse3}])
7957 if test "${can_compile_ssse3}" = "yes" ; then
7958 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7961 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7963 save_CXXFLAGS=$CXXFLAGS
7964 CXXFLAGS="$CXXFLAGS $flag_sse41"
7965 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7966 #include <smmintrin.h>
7968 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7969 c = _mm_cmpeq_epi64 (a, b);
7973 [can_compile_sse41=yes],
7974 [can_compile_sse41=no])
7976 CXXFLAGS=$save_CXXFLAGS
7977 AC_MSG_RESULT([${can_compile_sse41}])
7978 if test "${can_compile_sse41}" = "yes" ; then
7979 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7982 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7984 save_CXXFLAGS=$CXXFLAGS
7985 CXXFLAGS="$CXXFLAGS $flag_sse42"
7986 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7987 #include <nmmintrin.h>
7989 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7990 c = _mm_cmpgt_epi64 (a, b);
7994 [can_compile_sse42=yes],
7995 [can_compile_sse42=no])
7997 CXXFLAGS=$save_CXXFLAGS
7998 AC_MSG_RESULT([${can_compile_sse42}])
7999 if test "${can_compile_sse42}" = "yes" ; then
8000 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8003 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8005 save_CXXFLAGS=$CXXFLAGS
8006 CXXFLAGS="$CXXFLAGS $flag_avx"
8007 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8008 #include <immintrin.h>
8010 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8011 c = _mm256_xor_ps(a, b);
8015 [can_compile_avx=yes],
8016 [can_compile_avx=no])
8018 CXXFLAGS=$save_CXXFLAGS
8019 AC_MSG_RESULT([${can_compile_avx}])
8020 if test "${can_compile_avx}" = "yes" ; then
8021 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8024 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8026 save_CXXFLAGS=$CXXFLAGS
8027 CXXFLAGS="$CXXFLAGS $flag_avx2"
8028 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8029 #include <immintrin.h>
8031 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8032 c = _mm256_maddubs_epi16(a, b);
8036 [can_compile_avx2=yes],
8037 [can_compile_avx2=no])
8039 CXXFLAGS=$save_CXXFLAGS
8040 AC_MSG_RESULT([${can_compile_avx2}])
8041 if test "${can_compile_avx2}" = "yes" ; then
8042 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8045 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8047 save_CXXFLAGS=$CXXFLAGS
8048 CXXFLAGS="$CXXFLAGS $flag_avx512"
8049 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8050 #include <immintrin.h>
8052 __m512i a = _mm512_loadu_si512(0);
8053 __m512d v1 = _mm512_load_pd(0);
8054 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8055 __m512d v2 = _mm512_abs_pd(v1);
8059 [can_compile_avx512=yes],
8060 [can_compile_avx512=no])
8062 CXXFLAGS=$save_CXXFLAGS
8063 AC_MSG_RESULT([${can_compile_avx512}])
8064 if test "${can_compile_avx512}" = "yes" ; then
8065 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8066 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8069 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8071 save_CXXFLAGS=$CXXFLAGS
8072 CXXFLAGS="$CXXFLAGS $flag_f16c"
8073 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8074 #include <immintrin.h>
8076 __m128i a = _mm_set1_epi32 (0);
8078 c = _mm_cvtph_ps(a);
8082 [can_compile_f16c=yes],
8083 [can_compile_f16c=no])
8085 CXXFLAGS=$save_CXXFLAGS
8086 AC_MSG_RESULT([${can_compile_f16c}])
8087 if test "${can_compile_f16c}" = "yes" ; then
8088 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8091 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8093 save_CXXFLAGS=$CXXFLAGS
8094 CXXFLAGS="$CXXFLAGS $flag_fma"
8095 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8096 #include <immintrin.h>
8098 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8099 d = _mm256_fmadd_ps(a, b, c);
8103 [can_compile_fma=yes],
8104 [can_compile_fma=no])
8106 CXXFLAGS=$save_CXXFLAGS
8107 AC_MSG_RESULT([${can_compile_fma}])
8108 if test "${can_compile_fma}" = "yes" ; then
8109 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8112 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8113 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8114 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8115 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8116 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8117 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8118 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8119 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8120 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8121 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8123 dnl ===================================================================
8124 dnl system stl sanity tests
8125 dnl ===================================================================
8126 if test "$_os" != "WINNT"; then
8130 save_CPPFLAGS="$CPPFLAGS"
8131 if test -n "$MACOSX_SDK_PATH"; then
8132 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8135 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8137 if test "$CPP_LIBRARY" = GLIBCXX; then
8138 dnl gcc#19664, gcc#22482, rhbz#162935
8139 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8140 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8141 AC_MSG_RESULT([$stlvisok])
8142 if test "$stlvisok" = "no"; then
8143 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8147 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8148 # when we don't make any dynamic libraries?
8149 if test "$DISABLE_DYNLOADING" = ""; then
8150 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8151 cat > conftestlib1.cc <<_ACEOF
8152 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8153 struct S2: S1<int> { virtual ~S2(); };
8156 cat > conftestlib2.cc <<_ACEOF
8157 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8158 struct S2: S1<int> { virtual ~S2(); };
8159 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8161 gccvisinlineshiddenok=yes
8162 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8163 gccvisinlineshiddenok=no
8165 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8166 dnl known to not work with -z defs (unsetting which makes the test
8168 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8169 if test "$COM_IS_CLANG" = TRUE; then
8170 for i in $CXX $CXXFLAGS; do
8173 my_linkflagsnoundefs=
8179 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8180 gccvisinlineshiddenok=no
8185 AC_MSG_RESULT([$gccvisinlineshiddenok])
8186 if test "$gccvisinlineshiddenok" = "no"; then
8187 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8191 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8192 cat >visibility.cxx <<_ACEOF
8193 #pragma GCC visibility push(hidden)
8194 struct __attribute__ ((visibility ("default"))) TestStruct {
8197 __attribute__ ((visibility ("default"))) void TestFunc() {
8201 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8206 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8209 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8221 rm -f visibility.s visibility.cxx
8223 AC_MSG_RESULT([$gccvisbroken])
8224 if test "$gccvisbroken" = "yes"; then
8225 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8228 CPPFLAGS="$save_CPPFLAGS"
8230 AC_MSG_CHECKING([if CET endbranch is recognized])
8231 cat > endbr.s <<_ACEOF
8234 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8235 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8236 AC_MSG_RESULT([yes])
8237 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8241 rm -f endbr.s endbr.o
8242 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8247 dnl ===================================================================
8249 dnl ===================================================================
8251 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8252 if test "$GCC" = "yes"; then
8253 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8255 save_CXXFLAGS=$CXXFLAGS
8256 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8257 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8258 CXXFLAGS=$save_CXXFLAGS
8260 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8261 AC_MSG_RESULT([yes])
8266 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8268 dnl ===================================================================
8269 dnl Compiler plugins
8270 dnl ===================================================================
8273 # currently only Clang
8275 if test "$COM_IS_CLANG" != "TRUE"; then
8276 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8277 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8278 enable_compiler_plugins=no
8282 COMPILER_PLUGINS_COM_IS_CLANG=
8283 if test "$COM_IS_CLANG" = "TRUE"; then
8284 if test -n "$enable_compiler_plugins"; then
8285 compiler_plugins="$enable_compiler_plugins"
8286 elif test -n "$ENABLE_DBGUTIL"; then
8287 compiler_plugins=test
8291 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8292 if test "$CLANGVER" -lt 120001; then
8293 if test "$compiler_plugins" = yes; then
8295 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8301 if test "$compiler_plugins" != "no"; then
8302 dnl The prefix where Clang resides, override to where Clang resides if
8303 dnl using a source build:
8304 if test -z "$CLANGDIR"; then
8305 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8307 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8308 if test -z "$COMPILER_PLUGINS_CXX"; then
8309 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8311 clangbindir=$CLANGDIR/bin
8312 if test "$build_os" = "cygwin"; then
8313 clangbindir=$(cygpath -u "$clangbindir")
8315 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8316 if test -n "$LLVM_CONFIG"; then
8317 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8318 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8319 if test -z "$CLANGLIBDIR"; then
8320 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8322 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8323 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8324 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8325 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8326 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8327 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8330 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8331 clangobjdir=$($LLVM_CONFIG --obj-root)
8332 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8333 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8336 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8340 save_CPPFLAGS=$CPPFLAGS
8341 save_CXXFLAGS=$CXXFLAGS
8342 save_LDFLAGS=$LDFLAGS
8344 CXX=$COMPILER_PLUGINS_CXX
8345 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8346 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8347 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8348 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8349 [COMPILER_PLUGINS=TRUE],
8351 if test "$compiler_plugins" = "yes"; then
8352 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8354 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8355 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8358 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8359 dnl comment in compilerplugins/Makefile-clang.mk:
8360 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8362 AC_MSG_CHECKING([for clang libraries to use])
8363 if test -z "$CLANGTOOLLIBS"; then
8364 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8366 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8367 [[ clang::FullSourceLoc().dump(); ]])
8368 ],[CLANGTOOLLIBS="$LIBS"],[])
8370 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8371 dnl list of individual -lclang* (but note that that list can become outdated over time,
8372 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8373 dnl needs to include -lclangSupport now"):
8374 if test -z "$CLANGTOOLLIBS"; then
8375 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8376 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8378 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8379 [[ clang::FullSourceLoc().dump(); ]])
8380 ],[CLANGTOOLLIBS="$LIBS"],[])
8382 AC_MSG_RESULT([$CLANGTOOLLIBS])
8383 if test -z "$CLANGTOOLLIBS"; then
8384 if test "$compiler_plugins" = "yes"; then
8385 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8387 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8388 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8392 if test -n "$COMPILER_PLUGINS"; then
8393 if test -z "$CLANGSYSINCLUDE"; then
8394 if test -n "$LLVM_CONFIG"; then
8395 # Path to the clang system headers (no idea if there's a better way to get it).
8396 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8403 CPPFLAGS=$save_CPPFLAGS
8404 CXXFLAGS=$save_CXXFLAGS
8405 LDFLAGS=$save_LDFLAGS
8409 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8410 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8416 [AC_MSG_RESULT([yes])
8417 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8418 [AC_MSG_RESULT([no])])
8419 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8422 if test "$enable_compiler_plugins" = "yes"; then
8423 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8426 COMPILER_PLUGINS_ANALYZER_PCH=
8427 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8428 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8430 AC_SUBST(COMPILER_PLUGINS)
8431 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8432 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8433 AC_SUBST(COMPILER_PLUGINS_CXX)
8434 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8435 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8436 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8437 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8439 AC_SUBST(CLANGLIBDIR)
8440 AC_SUBST(CLANGTOOLLIBS)
8441 AC_SUBST(CLANGSYSINCLUDE)
8443 # Plugin to help linker.
8444 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8445 # This makes --enable-lto build with clang work.
8448 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8449 AC_SUBST(HAVE_POSIX_FALLOCATE)
8451 JITC_PROCESSOR_TYPE=""
8452 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8453 # IBMs JDK needs this...
8454 JITC_PROCESSOR_TYPE=6
8455 export JITC_PROCESSOR_TYPE
8457 AC_SUBST([JITC_PROCESSOR_TYPE])
8459 # Misc Windows Stuff
8460 AC_ARG_WITH(ucrt-dir,
8461 AS_HELP_STRING([--with-ucrt-dir],
8462 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8463 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8464 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8465 Windows6.1-KB2999226-x64.msu
8466 Windows6.1-KB2999226-x86.msu
8467 Windows8.1-KB2999226-x64.msu
8468 Windows8.1-KB2999226-x86.msu
8469 Windows8-RT-KB2999226-x64.msu
8470 Windows8-RT-KB2999226-x86.msu
8471 A zip archive including those files is available from Microsoft site:
8472 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8475 UCRT_REDISTDIR="$with_ucrt_dir"
8476 if test $_os = "WINNT"; then
8478 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8479 MSVC_DLLS="$msvcdlls"
8480 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8482 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8484 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8487 for i in $PKGFORMAT; do
8488 if test "$i" = msi; then
8489 find_msms "$with_redist"
8490 if test -n "$msmdir"; then
8491 MSM_PATH=`win_short_path_for_make "$msmdir"`
8492 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8498 if test "$UCRT_REDISTDIR" = "no"; then
8499 dnl explicitly disabled
8502 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8503 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8504 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8505 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8506 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8507 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8509 if test -n "$PKGFORMAT"; then
8510 for i in $PKGFORMAT; do
8513 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8514 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8523 AC_SUBST(UCRT_REDISTDIR)
8524 AC_SUBST(MSVC_DLL_PATH)
8529 dnl ===================================================================
8531 dnl ===================================================================
8532 if test "$ENABLE_JAVA" != ""; then
8534 # Windows-specific tests
8535 if test "$build_os" = "cygwin"; then
8536 if test -z "$with_jdk_home"; then
8537 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8538 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8539 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8540 if test -n "$regvalue"; then
8542 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8543 with_jdk_home=$regvalue
8545 howfound="found automatically"
8547 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8548 howfound="you passed"
8551 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8552 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])
8556 # 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.
8557 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8558 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8559 with_jdk_home=`/usr/libexec/java_home`
8562 JAVA_HOME=; export JAVA_HOME
8563 if test -z "$with_jdk_home"; then
8564 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8566 _java_path="$with_jdk_home/bin/$with_java"
8567 dnl Check if there is a Java interpreter at all.
8568 if test -x "$_java_path"; then
8569 JAVAINTERPRETER=$_java_path
8571 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8575 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8576 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8577 dnl loaded by java to run JunitTests:
8578 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8579 shortjdkhome=`cygpath -d "$with_jdk_home"`
8580 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
8581 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8582 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8583 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
8584 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8585 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8588 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8589 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8591 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8592 elif test "$cross_compiling" != "yes"; then
8594 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64)
8595 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8596 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8597 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8600 *) # assumption: everything else 32-bit
8601 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8602 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8603 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8610 dnl ===================================================================
8612 dnl ===================================================================
8614 # Whether all the complexity here actually is needed any more or not, no idea.
8616 JDK_SECURITYMANAGER_DISALLOWED=
8617 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8619 AC_MSG_CHECKING([the installed JDK])
8620 if test -n "$JAVAINTERPRETER"; then
8621 dnl java -version sends output to stderr!
8622 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8623 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8624 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8625 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8626 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8627 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8628 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8629 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8633 dnl Sun JDK specific tests
8634 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8635 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8637 if test "$_jdk_ver" -lt 10900; then
8638 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8640 if test "$_jdk_ver" -gt 10900; then
8641 JAVA_CLASSPATH_NOT_SET=TRUE
8643 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8644 dnl completely removed in some Java version > 18 (see
8645 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8646 if test "$_jdk_ver" -ge 180000; then
8647 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8650 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8651 if test "$_os" = "WINNT"; then
8652 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8654 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8656 # set to limit VM usage for JunitTests
8658 # set to limit VM usage for javac
8659 JAVACFLAGS=-J-Xmx128M
8662 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8665 if test -z "$ENABLE_JAVA"; then
8669 elif test "$cross_compiling" = "yes"; then
8670 # Just assume compatibility of build and host JDK
8672 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8676 dnl ===================================================================
8677 dnl Checks for javac
8678 dnl ===================================================================
8679 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8680 javacompiler="javac"
8681 : ${JAVA_SOURCE_VER=8}
8682 : ${JAVA_TARGET_VER=8}
8683 if test -z "$with_jdk_home"; then
8684 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8686 _javac_path="$with_jdk_home/bin/$javacompiler"
8687 dnl Check if there is a Java compiler at all.
8688 if test -x "$_javac_path"; then
8689 JAVACOMPILER=$_javac_path
8692 if test -z "$JAVACOMPILER"; then
8693 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8695 if test "$build_os" = "cygwin"; then
8696 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8697 JAVACOMPILER="${JAVACOMPILER}.exe"
8699 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8703 dnl ===================================================================
8704 dnl Checks for javadoc
8705 dnl ===================================================================
8706 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8707 if test -z "$with_jdk_home"; then
8708 AC_PATH_PROG(JAVADOC, javadoc)
8710 _javadoc_path="$with_jdk_home/bin/javadoc"
8711 dnl Check if there is a javadoc at all.
8712 if test -x "$_javadoc_path"; then
8713 JAVADOC=$_javadoc_path
8715 AC_PATH_PROG(JAVADOC, javadoc)
8718 if test -z "$JAVADOC"; then
8719 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8721 if test "$build_os" = "cygwin"; then
8722 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8723 JAVADOC="${JAVADOC}.exe"
8725 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8728 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8729 JAVADOCISGJDOC="yes"
8733 AC_SUBST(JAVADOCISGJDOC)
8735 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8736 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8737 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8738 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8739 # try to recover first by looking whether we have an alternative
8740 # system as in Debian or newer SuSEs where following /usr/bin/javac
8741 # over /etc/alternatives/javac leads to the right bindir where we
8742 # just need to strip a bit away to get a valid JAVA_HOME
8743 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8744 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8745 # maybe only one level of symlink (e.g. on Mac)
8746 JAVA_HOME=$(readlink $JAVACOMPILER)
8747 if test "$(dirname $JAVA_HOME)" = "."; then
8748 # we've got no path to trim back
8753 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8754 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8755 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8756 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8758 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8759 if test "$JAVA_HOME" != "/usr"; then
8760 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8761 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8762 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8763 dnl Tiger already returns a JDK path...
8764 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8766 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8767 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8768 dnl that checks which version to run
8769 if test -f "$JAVA_HOME"; then
8770 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8775 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8777 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8778 if test -z "$JAVA_HOME"; then
8779 if test "x$with_jdk_home" = "x"; then
8780 cat > findhome.java <<_ACEOF
8781 [import java.io.File;
8785 public static void main(String args[])
8787 String jrelocation = System.getProperty("java.home");
8788 File jre = new File(jrelocation);
8789 System.out.println(jre.getParent());
8793 AC_MSG_CHECKING([if javac works])
8794 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8795 AC_TRY_EVAL(javac_cmd)
8796 if test $? = 0 -a -f ./findhome.class; then
8797 AC_MSG_RESULT([javac works])
8799 echo "configure: javac test failed" >&5
8800 cat findhome.java >&5
8801 AC_MSG_ERROR([javac does not work - java projects will not build!])
8803 AC_MSG_CHECKING([if gij knows its java.home])
8804 JAVA_HOME=`$JAVAINTERPRETER findhome`
8805 if test $? = 0 -a "$JAVA_HOME" != ""; then
8806 AC_MSG_RESULT([$JAVA_HOME])
8808 echo "configure: java test failed" >&5
8809 cat findhome.java >&5
8810 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8812 # clean-up after ourselves
8813 rm -f ./findhome.java ./findhome.class
8815 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8819 # now check if $JAVA_HOME is really valid
8820 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8821 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8822 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8823 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8824 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8825 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8826 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8827 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8830 PathFormat "$JAVA_HOME"
8831 JAVA_HOME="$formatted_path"
8834 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8837 AC_MSG_CHECKING([for JAWT lib])
8838 if test "$_os" = WINNT; then
8839 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8844 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8845 JAVA_ARCH=$my_java_arch
8860 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8861 JAVA_ARCH=$my_java_arch
8864 my_java_arch=sparcv9
8870 my_java_arch=$host_cpu
8873 # This is where JDK9 puts the library
8874 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8875 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8877 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8879 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8881 AC_MSG_RESULT([$JAWTLIB])
8885 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8889 JAVAINC="-I$JAVA_HOME/include"
8890 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8891 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8895 JAVAINC="-I$JAVA_HOME/include/win32"
8896 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8900 if test -d "$JAVA_HOME/include/darwin"; then
8901 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8903 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8908 JAVAINC="-I$JAVA_HOME/include"
8909 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8913 JAVAINC="-I$JAVA_HOME/include"
8914 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8915 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8916 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8917 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8921 JAVAINC="-I$JAVA_HOME/include"
8922 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8923 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8927 JAVAINC="-I$JAVA_HOME/include"
8928 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8929 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8933 JAVAINC="-I$JAVA_HOME/include"
8934 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8935 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8939 JAVAINC="-I$JAVA_HOME/include"
8940 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
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/solaris"
8947 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8951 SOLARINC="$SOLARINC $JAVAINC"
8953 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8954 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8955 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8957 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8960 AC_SUBST(JAVACFLAGS)
8961 AC_SUBST(JAVACOMPILER)
8962 AC_SUBST(JAVAINTERPRETER)
8963 AC_SUBST(JAVAIFLAGS)
8964 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8965 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8967 AC_SUBST(JAVA_HOME_FOR_BUILD)
8969 AC_SUBST(JDK_FOR_BUILD)
8970 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8971 AC_SUBST(JAVA_SOURCE_VER)
8972 AC_SUBST(JAVA_TARGET_VER)
8975 dnl ===================================================================
8976 dnl Export file validation
8977 dnl ===================================================================
8978 AC_MSG_CHECKING([whether to enable export file validation])
8979 if test "$with_export_validation" != "no"; then
8980 if test -z "$ENABLE_JAVA"; then
8981 if test "$with_export_validation" = "yes"; then
8982 AC_MSG_ERROR([requested, but Java is disabled])
8984 AC_MSG_RESULT([no, as Java is disabled])
8986 elif ! test -d "${SRC_ROOT}/schema"; then
8987 if test "$with_export_validation" = "yes"; then
8988 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8990 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8993 AC_MSG_RESULT([yes])
8994 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8996 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8997 if test -z "$ODFVALIDATOR"; then
8998 # remember to download the ODF toolkit with validator later
8999 AC_MSG_NOTICE([no odfvalidator found, will download it])
9000 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9001 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9003 # and fetch name of odfvalidator jar name from download.lst
9004 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9005 AC_SUBST(ODFVALIDATOR_JAR)
9007 if test -z "$ODFVALIDATOR_JAR"; then
9008 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9011 if test "$build_os" = "cygwin"; then
9012 # In case of Cygwin it will be executed from Windows,
9013 # so we need to run bash and absolute path to validator
9014 # so instead of "odfvalidator" it will be
9015 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9016 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9018 ODFVALIDATOR="sh $ODFVALIDATOR"
9020 AC_SUBST(ODFVALIDATOR)
9023 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9024 if test -z "$OFFICEOTRON"; then
9025 # remember to download the officeotron with validator later
9026 AC_MSG_NOTICE([no officeotron found, will download it])
9027 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9028 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9030 # and fetch name of officeotron jar name from download.lst
9031 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9032 AC_SUBST(OFFICEOTRON_JAR)
9034 if test -z "$OFFICEOTRON_JAR"; then
9035 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9038 # check version of existing officeotron
9039 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9040 if test 0"$OFFICEOTRON_VER" -lt 704; then
9041 AC_MSG_ERROR([officeotron too old])
9044 if test "$build_os" = "cygwin"; then
9045 # In case of Cygwin it will be executed from Windows,
9046 # so we need to run bash and absolute path to validator
9047 # so instead of "odfvalidator" it will be
9048 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9049 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9051 OFFICEOTRON="sh $OFFICEOTRON"
9054 AC_SUBST(OFFICEOTRON)
9059 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9060 if test "$with_bffvalidator" != "no"; then
9061 AC_DEFINE(HAVE_BFFVALIDATOR)
9063 if test "$with_export_validation" = "no"; then
9064 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9067 if test "$with_bffvalidator" = "yes"; then
9068 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9070 BFFVALIDATOR="$with_bffvalidator"
9073 if test "$build_os" = "cygwin"; then
9074 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9075 AC_MSG_RESULT($BFFVALIDATOR)
9077 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9079 elif test -n "$BFFVALIDATOR"; then
9080 # We are not in Cygwin but need to run Windows binary with wine
9081 AC_PATH_PROGS(WINE, wine)
9083 # so swap in a shell wrapper that converts paths transparently
9084 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9085 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9086 AC_SUBST(BFFVALIDATOR_EXE)
9087 AC_MSG_RESULT($BFFVALIDATOR)
9089 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9091 AC_SUBST(BFFVALIDATOR)
9096 dnl ===================================================================
9097 dnl Check for epm (not needed for Windows)
9098 dnl ===================================================================
9099 AC_MSG_CHECKING([whether to enable EPM for packing])
9100 if test "$enable_epm" = "yes"; then
9101 AC_MSG_RESULT([yes])
9102 if test "$_os" != "WINNT"; then
9103 if test $_os = Darwin; then
9105 elif test -n "$with_epm"; then
9108 AC_PATH_PROG(EPM, epm, no)
9110 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9111 AC_MSG_NOTICE([EPM will be built.])
9112 BUILD_TYPE="$BUILD_TYPE EPM"
9113 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9115 # Gentoo has some epm which is something different...
9116 AC_MSG_CHECKING([whether the found epm is the right epm])
9117 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9118 AC_MSG_RESULT([yes])
9120 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9122 AC_MSG_CHECKING([epm version])
9123 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9124 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9125 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9126 AC_MSG_RESULT([OK, >= 3.7])
9128 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9129 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9134 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9135 AC_MSG_CHECKING([for rpm])
9136 for a in "$RPM" rpmbuild rpm; do
9137 $a --usage >/dev/null 2> /dev/null
9138 if test $? -eq 0; then
9142 $a --version >/dev/null 2> /dev/null
9143 if test $? -eq 0; then
9149 if test -z "$RPM"; then
9150 AC_MSG_ERROR([not found])
9151 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9152 RPM_PATH=`which $RPM`
9153 AC_MSG_RESULT([$RPM_PATH])
9154 SCPDEFS="$SCPDEFS -DWITH_RPM"
9156 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9159 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9160 AC_PATH_PROG(DPKG, dpkg, no)
9161 if test "$DPKG" = "no"; then
9162 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9165 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9166 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9167 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9168 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9169 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9170 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9171 AC_MSG_RESULT([yes])
9174 if echo "$PKGFORMAT" | $GREP -q rpm; then
9176 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9177 add_warning "the rpms will need to be installed with --nodeps"
9181 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9182 add_warning "the ${_pt}s will not be relocatable"
9183 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9184 relocation will work, you need to patch your epm with the
9185 patch in epm/epm-3.7.patch or build with
9186 --with-epm=internal which will build a suitable epm])
9191 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9192 AC_PATH_PROG(PKGMK, pkgmk, no)
9193 if test "$PKGMK" = "no"; then
9194 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9201 for i in $PKGFORMAT; do
9203 aix | bsd | deb | pkg | rpm | native | portable)
9205 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9215 if test "$enable_lotuswordpro" = "yes"; then
9218 AC_SUBST(ENABLE_LWP)
9220 dnl ===================================================================
9221 dnl Check for building ODK
9222 dnl ===================================================================
9223 AC_MSG_CHECKING([whether to build the ODK])
9224 if test "$enable_odk" = yes; then
9225 if test "$DISABLE_DYNLOADING" = TRUE; then
9226 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9228 AC_MSG_RESULT([yes])
9229 BUILD_TYPE="$BUILD_TYPE ODK"
9234 if test "$enable_odk" != yes; then
9237 if test "$with_doxygen" = no; then
9238 AC_MSG_CHECKING([for doxygen])
9242 if test "$with_doxygen" = yes; then
9243 AC_PATH_PROG([DOXYGEN], [doxygen])
9244 if test -z "$DOXYGEN"; then
9245 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9247 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9248 if ! dot -V 2>/dev/null; then
9249 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9253 AC_MSG_CHECKING([for doxygen])
9254 DOXYGEN=$with_doxygen
9255 AC_MSG_RESULT([$DOXYGEN])
9257 if test -n "$DOXYGEN"; then
9258 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9259 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9260 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9261 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9268 dnl ==================================================================
9270 dnl ==================================================================
9271 AC_MSG_CHECKING([whether to enable fuzzers])
9272 if test "$enable_fuzzers" != yes; then
9275 if test -z $LIB_FUZZING_ENGINE; then
9276 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9278 AC_MSG_RESULT([yes])
9279 ENABLE_FUZZERS="TRUE"
9280 AC_DEFINE([ENABLE_FUZZERS],1)
9281 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9282 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9284 AC_SUBST(LIB_FUZZING_ENGINE)
9286 dnl ===================================================================
9287 dnl Check for system zlib
9288 dnl ===================================================================
9289 if test "$with_system_zlib" = "auto"; then
9292 with_system_zlib="$with_system_libs"
9295 if test "$enable_fuzzers" != "yes"; then
9296 with_system_zlib=yes
9304 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9305 dnl and has no pkg-config for it at least on some tinderboxes,
9306 dnl so leaving that out for now
9307 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9308 AC_MSG_CHECKING([which zlib to use])
9309 if test "$with_system_zlib" = "yes"; then
9310 AC_MSG_RESULT([external])
9312 AC_CHECK_HEADER(zlib.h, [],
9313 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9314 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9315 [AC_MSG_ERROR(zlib not found or functional)], [])
9317 AC_MSG_RESULT([internal])
9319 BUILD_TYPE="$BUILD_TYPE ZLIB"
9320 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9321 if test "$COM" = "MSC"; then
9322 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9324 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9327 AC_SUBST(ZLIB_CFLAGS)
9329 AC_SUBST(SYSTEM_ZLIB)
9331 dnl ===================================================================
9332 dnl Check for system jpeg
9333 dnl ===================================================================
9334 AC_MSG_CHECKING([which libjpeg to use])
9335 if test "$with_system_jpeg" = "yes"; then
9336 AC_MSG_RESULT([external])
9338 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9339 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9340 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9341 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9344 AC_MSG_RESULT([internal, libjpeg-turbo])
9345 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9348 x86_64 | amd64 | i*86 | x86 | ia32)
9349 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9350 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9351 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9352 NASM="$LODE_HOME/opt/bin/nasm"
9353 elif test -x "/opt/lo/bin/nasm"; then
9354 NASM="/opt/lo/bin/nasm"
9358 if test -n "$NASM"; then
9359 AC_MSG_CHECKING([for object file format of host system])
9361 cygwin* | mingw* | pw32* | wsl*)
9371 msdosdjgpp* | go32*)
9374 os2-emx*) # not tested
9375 objfmt='MSOMF' # obj
9377 linux*coff* | linux*oldld*)
9393 kfreebsd* | freebsd* | netbsd* | openbsd*)
9394 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9407 solaris* | sunos* | sysv* | sco*)
9417 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9432 AC_MSG_RESULT([$objfmt])
9433 if test "$objfmt" = 'ELF ?'; then
9435 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9438 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9440 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9441 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9442 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9443 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9444 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9445 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9446 ELF) NAFLAGS='-felf -DELF -DPIC';;
9447 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9448 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9449 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9450 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9452 AC_MSG_RESULT([$NAFLAGS])
9454 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9455 cat > conftest.asm << EOF
9456 [%line __oline__ "configure"
9464 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9465 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9468 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9469 cat conftest.asm >&AS_MESSAGE_LOG_FD
9472 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9478 if test -z "$NASM"; then
9480 ****************************************************************************
9481 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9485 if test "$build_os" = "cygwin"; then
9487 install a pre-compiled binary for Win32
9489 mkdir -p /opt/lo/bin
9491 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9494 or get and install one from http://www.nasm.us/
9496 Then re-run autogen.sh
9498 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9499 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9504 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9508 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9509 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9517 AC_SUBST(LIBJPEG_CFLAGS)
9518 AC_SUBST(LIBJPEG_LIBS)
9519 AC_SUBST(SYSTEM_LIBJPEG)
9521 dnl ===================================================================
9522 dnl Check for system clucene
9523 dnl ===================================================================
9524 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9525 if test "$SYSTEM_CLUCENE" = TRUE; then
9527 save_CXXFLAGS=$CXXFLAGS
9528 save_CPPFLAGS=$CPPFLAGS
9529 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9530 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9531 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9532 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9533 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9534 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9535 CXXFLAGS=$save_CXXFLAGS
9536 CPPFLAGS=$save_CPPFLAGS
9538 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9541 dnl ===================================================================
9542 dnl Check for system expat
9543 dnl ===================================================================
9544 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9546 dnl ===================================================================
9547 dnl Check for system xmlsec
9548 dnl ===================================================================
9549 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9551 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9552 if test "$enable_eot" = "yes"; then
9554 AC_DEFINE([ENABLE_EOT])
9555 AC_MSG_RESULT([yes])
9557 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9562 AC_SUBST([ENABLE_EOT])
9564 dnl ===================================================================
9565 dnl Check for DLP libs
9566 dnl ===================================================================
9567 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9568 AS_IF([test "$COM" = "MSC"],
9569 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9570 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9572 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9573 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9575 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9577 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9579 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9580 AS_IF([test "$COM" = "MSC"],
9581 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9582 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9584 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9585 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9587 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9589 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9590 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9592 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9594 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9596 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9598 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9599 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9601 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9602 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9604 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9606 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9607 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9609 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9611 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9613 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9615 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9617 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9618 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9620 dnl ===================================================================
9621 dnl Check for system lcms2
9622 dnl ===================================================================
9623 if test "$with_system_lcms2" != "yes"; then
9626 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9627 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9628 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9629 if test "$GCC" = "yes"; then
9630 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9632 if test "$COM" = "MSC"; then # override the above
9633 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9636 dnl ===================================================================
9637 dnl Check for system cppunit
9638 dnl ===================================================================
9639 if test "$_os" != "Android" ; then
9640 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9643 dnl ===================================================================
9644 dnl Check whether freetype is available
9646 dnl FreeType has 3 different kinds of versions
9647 dnl * release, like 2.4.10
9648 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9650 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9653 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9654 dnl ===================================================================
9655 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9656 if test "x$ac_config_site_64bit_host" = xYES; then
9657 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9659 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9661 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9663 # ===================================================================
9664 # Check for system libxslt
9665 # to prevent incompatibilities between internal libxml2 and external libxslt,
9666 # or vice versa, use with_system_libxml here
9667 # ===================================================================
9668 if test "$with_system_libxml" = "auto"; then
9671 with_system_libxml="$with_system_libs"
9674 with_system_libxml=no
9677 if test "$enable_fuzzers" != "yes"; then
9678 with_system_libxml=yes
9680 with_system_libxml=no
9686 AC_MSG_CHECKING([which libxslt to use])
9687 if test "$with_system_libxml" = "yes"; then
9688 AC_MSG_RESULT([external])
9690 if test "$_os" = "Darwin"; then
9691 dnl make sure to use SDK path
9692 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9693 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9695 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9696 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9698 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9699 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9700 FilterLibs "${LIBXSLT_LIBS}"
9701 LIBXSLT_LIBS="${filteredlibs}"
9702 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9703 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9704 FilterLibs "${LIBEXSLT_LIBS}"
9705 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9708 dnl Check for xsltproc
9709 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9710 if test "$XSLTPROC" = "no"; then
9711 AC_MSG_ERROR([xsltproc is required])
9714 AC_MSG_RESULT([internal])
9716 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9718 AC_SUBST(SYSTEM_LIBXSLT)
9719 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9720 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9722 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9724 AC_SUBST(LIBEXSLT_CFLAGS)
9725 AC_SUBST(LIBEXSLT_LIBS)
9726 AC_SUBST(LIBXSLT_CFLAGS)
9727 AC_SUBST(LIBXSLT_LIBS)
9730 # ===================================================================
9731 # Check for system libxml
9732 # ===================================================================
9733 AC_MSG_CHECKING([which libxml to use])
9734 if test "$with_system_libxml" = "yes"; then
9735 AC_MSG_RESULT([external])
9737 if test "$_os" = "Darwin"; then
9738 dnl make sure to use SDK path
9739 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9741 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9742 elif test $_os = iOS; then
9743 dnl make sure to use SDK path
9744 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9745 LIBXML_CFLAGS="-I$usr/include/libxml2"
9746 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9748 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9749 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9750 FilterLibs "${LIBXML_LIBS}"
9751 LIBXML_LIBS="${filteredlibs}"
9754 dnl Check for xmllint
9755 AC_PATH_PROG(XMLLINT, xmllint, no)
9756 if test "$XMLLINT" = "no"; then
9757 AC_MSG_ERROR([xmllint is required])
9760 AC_MSG_RESULT([internal])
9762 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9763 if test "$COM" = "MSC"; then
9764 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9766 if test "$COM" = "MSC"; then
9767 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9769 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9770 if test "$DISABLE_DYNLOADING" = TRUE; then
9771 LIBXML_LIBS="$LIBXML_LIBS -lm"
9774 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9776 AC_SUBST(SYSTEM_LIBXML)
9777 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9778 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9780 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9781 AC_SUBST(LIBXML_CFLAGS)
9782 AC_SUBST(LIBXML_LIBS)
9785 # =====================================================================
9786 # Checking for a Python interpreter with version >= 3.3.
9787 # Optionally user can pass an option to configure, i. e.
9788 # ./configure PYTHON=/usr/bin/python
9789 # =====================================================================
9790 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9791 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9792 # unless PYTHON is defined as above which allows 'system'
9793 enable_python=internal
9795 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9796 if test -n "$PYTHON"; then
9797 PYTHON_FOR_BUILD=$PYTHON
9799 # This allows a lack of system python with no error, we use internal one in that case.
9800 AM_PATH_PYTHON([3.3],, [:])
9801 # Clean PYTHON_VERSION checked below if cross-compiling
9803 if test "$PYTHON" != ":"; then
9804 PYTHON_FOR_BUILD=$PYTHON
9809 # Checks for Python to use for Pyuno
9810 AC_MSG_CHECKING([which Python to use for Pyuno])
9811 case "$enable_python" in
9813 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9814 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9815 # requirement from the choice whether to include Python stuff in the installer, but why
9817 AC_MSG_ERROR([Python is required at build time.])
9820 AC_MSG_RESULT([none])
9823 if test "$DISABLE_SCRIPTING" = TRUE; then
9824 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9825 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9827 AC_MSG_RESULT([none, overridden by --disable-scripting])
9829 elif test $build_os = cygwin -o $build_os = wsl; then
9830 dnl When building on Windows we don't attempt to use any installed
9831 dnl "system" Python.
9832 AC_MSG_RESULT([fully internal])
9833 enable_python=internal
9834 elif test "$cross_compiling" = yes; then
9835 AC_MSG_RESULT([system])
9836 enable_python=system
9838 # Unset variables set by the above AM_PATH_PYTHON so that
9839 # we actually do check anew.
9841 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
9842 AM_PATH_PYTHON([3.3],, [:])
9843 AC_MSG_CHECKING([which Python to use for Pyuno])
9844 if test "$PYTHON" = ":"; then
9845 if test -z "$PYTHON_FOR_BUILD"; then
9846 AC_MSG_RESULT([fully internal])
9848 AC_MSG_RESULT([internal])
9850 enable_python=internal
9852 AC_MSG_RESULT([system])
9853 enable_python=system
9858 AC_MSG_RESULT([internal])
9861 AC_MSG_RESULT([fully internal])
9862 enable_python=internal
9865 AC_MSG_RESULT([system])
9866 if test "$_os" = Darwin -a -z "$PYTHON"; then
9867 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9871 AC_MSG_ERROR([Incorrect --enable-python option])
9875 if test $enable_python != no; then
9876 BUILD_TYPE="$BUILD_TYPE PYUNO"
9879 if test $enable_python = system; then
9880 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9881 # Fallback: Accept these in the environment, or as set above
9884 elif test "$cross_compiling" != yes; then
9885 # Unset variables set by the above AM_PATH_PYTHON so that
9886 # we actually do check anew.
9887 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
9888 # This causes an error if no python command is found
9889 AM_PATH_PYTHON([3.3])
9890 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9891 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9892 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9893 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9894 if test -z "$PKG_CONFIG"; then
9895 PYTHON_CFLAGS="-I$python_include"
9896 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9897 elif $PKG_CONFIG --exists python-$python_version-embed; then
9898 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9899 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9900 elif $PKG_CONFIG --exists python-$python_version; then
9901 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9902 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9904 PYTHON_CFLAGS="-I$python_include"
9905 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9907 FilterLibs "${PYTHON_LIBS}"
9908 PYTHON_LIBS="${filteredlibs}"
9910 dnl How to find out the cross-compilation Python installation path?
9911 AC_MSG_CHECKING([for python version])
9912 AS_IF([test -n "$PYTHON_VERSION"],
9913 [AC_MSG_RESULT([$PYTHON_VERSION])],
9914 [AC_MSG_RESULT([not found])
9915 AC_MSG_ERROR([no usable python found])])
9916 test -n "$PYTHON_CFLAGS" && break
9919 dnl Check if the headers really work
9920 save_CPPFLAGS="$CPPFLAGS"
9921 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9922 AC_CHECK_HEADER(Python.h)
9923 CPPFLAGS="$save_CPPFLAGS"
9925 # let the PYTHON_FOR_BUILD match the same python installation that
9926 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9927 # better for PythonTests.
9928 PYTHON_FOR_BUILD=$PYTHON
9931 if test "$with_lxml" != no; then
9932 if test -z "$PYTHON_FOR_BUILD"; then
9935 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9938 if test "$cross_compiling" != yes ; then
9939 BUILD_TYPE="$BUILD_TYPE LXML"
9944 AC_MSG_CHECKING([for python lxml])
9945 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9946 AC_MSG_RESULT([yes])
9950 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9953 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9954 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9955 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9957 BUILD_TYPE="$BUILD_TYPE LXML"
9958 AC_MSG_RESULT([no, using internal lxml])
9961 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9969 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9971 PYTHON_VERSION_MAJOR=3
9972 PYTHON_VERSION_MINOR=8
9973 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
9974 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9975 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9977 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9979 # Embedded Python dies without Home set
9980 if test "$HOME" = ""; then
9985 dnl By now enable_python should be "system", "internal" or "no"
9986 case $enable_python in
9990 if test "x$ac_cv_header_Python_h" != "xyes"; then
9991 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9995 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9996 AC_MSG_CHECKING([for correct python library version])
9997 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10000 int main(int argc, char **argv) {
10001 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10004 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10007 dnl FIXME Check if the Python library can be linked with, too?
10011 BUILD_TYPE="$BUILD_TYPE PYTHON"
10012 if test "$OS" = LINUX -o "$OS" = WNT ; then
10013 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10017 DISABLE_PYTHON=TRUE
10021 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10025 AC_SUBST(DISABLE_PYTHON)
10026 AC_SUBST(SYSTEM_PYTHON)
10027 AC_SUBST(PYTHON_CFLAGS)
10028 AC_SUBST(PYTHON_FOR_BUILD)
10029 AC_SUBST(PYTHON_LIBS)
10030 AC_SUBST(PYTHON_VERSION)
10031 AC_SUBST(PYTHON_VERSION_MAJOR)
10032 AC_SUBST(PYTHON_VERSION_MINOR)
10034 AC_MSG_CHECKING([whether to build LibreLogo])
10035 case "$enable_python" in
10037 AC_MSG_RESULT([no; Python disabled])
10040 if test "${enable_librelogo}" = "no"; then
10041 AC_MSG_RESULT([no])
10043 AC_MSG_RESULT([yes])
10044 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10045 AC_DEFINE([ENABLE_LIBRELOGO],1)
10049 AC_SUBST(ENABLE_LIBRELOGO)
10055 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10056 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10057 ENABLE_MARIADBC=TRUE
10058 AC_MSG_RESULT([yes])
10059 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10061 AC_MSG_RESULT([no])
10063 AC_SUBST(ENABLE_MARIADBC)
10064 AC_SUBST(MARIADBC_MAJOR)
10065 AC_SUBST(MARIADBC_MINOR)
10066 AC_SUBST(MARIADBC_MICRO)
10068 if test "$ENABLE_MARIADBC" = "TRUE"; then
10069 dnl ===================================================================
10070 dnl Check for system MariaDB
10071 dnl ===================================================================
10072 AC_MSG_CHECKING([which MariaDB to use])
10073 if test "$with_system_mariadb" = "yes"; then
10074 AC_MSG_RESULT([external])
10075 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10076 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10077 if test -z "$MARIADBCONFIG"; then
10078 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10079 if test -z "$MARIADBCONFIG"; then
10080 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10081 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10084 AC_MSG_CHECKING([MariaDB version])
10085 MARIADB_VERSION=`$MARIADBCONFIG --version`
10086 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10087 if test "$MARIADB_MAJOR" -ge "5"; then
10088 AC_MSG_RESULT([OK])
10090 AC_MSG_ERROR([too old, use 5.0.x or later])
10092 AC_MSG_CHECKING([for MariaDB Client library])
10093 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10094 if test "$COM_IS_CLANG" = TRUE; then
10095 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10097 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10098 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10099 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10101 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10102 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10103 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10104 | sed -e 's|/lib64/|/lib/|')
10106 FilterLibs "${MARIADB_LIBS}"
10107 MARIADB_LIBS="${filteredlibs}"
10108 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10109 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10110 if test "$enable_bundle_mariadb" = "yes"; then
10111 AC_MSG_RESULT([yes])
10112 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10113 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10115 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10117 /g' | grep -E '(mysqlclient|mariadb)')
10118 if test "$_os" = "Darwin"; then
10119 LIBMARIADB=${LIBMARIADB}.dylib
10120 elif test "$_os" = "WINNT"; then
10121 LIBMARIADB=${LIBMARIADB}.dll
10123 LIBMARIADB=${LIBMARIADB}.so
10125 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10126 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10127 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10128 AC_MSG_RESULT([found.])
10129 PathFormat "$LIBMARIADB_PATH"
10130 LIBMARIADB_PATH="$formatted_path"
10132 AC_MSG_ERROR([not found.])
10135 AC_MSG_RESULT([no])
10136 BUNDLE_MARIADB_CONNECTOR_C=
10139 AC_MSG_RESULT([internal])
10140 SYSTEM_MARIADB_CONNECTOR_C=
10141 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10142 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10143 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10146 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10147 AC_SUBST(MARIADB_CFLAGS)
10148 AC_SUBST(MARIADB_LIBS)
10149 AC_SUBST(LIBMARIADB)
10150 AC_SUBST(LIBMARIADB_PATH)
10151 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10154 dnl ===================================================================
10155 dnl Check for system hsqldb
10156 dnl ===================================================================
10157 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10158 AC_MSG_CHECKING([which hsqldb to use])
10159 if test "$with_system_hsqldb" = "yes"; then
10160 AC_MSG_RESULT([external])
10162 if test -z $HSQLDB_JAR; then
10163 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10165 if ! test -f $HSQLDB_JAR; then
10166 AC_MSG_ERROR(hsqldb.jar not found.)
10168 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10172 my $file = "$ENV{'HSQLDB_JAR'}";
10173 my $zip = Archive::Zip->new( $file );
10174 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10175 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10177 push @l, split(/\n/, $mf);
10178 foreach my $line (@l)
10180 if ($line =~ m/Specification-Version:/)
10182 ($t, $version) = split (/:/,$line);
10183 $version =~ s/^\s//;
10184 ($a, $b, $c, $d) = split (/\./,$version);
10185 if ($c == "0" && $d > "8")
10200 AC_MSG_RESULT([yes])
10202 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10205 AC_MSG_RESULT([internal])
10207 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10211 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10212 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10215 AC_SUBST(SYSTEM_HSQLDB)
10216 AC_SUBST(HSQLDB_JAR)
10218 dnl ===================================================================
10219 dnl Check for PostgreSQL stuff
10220 dnl ===================================================================
10221 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10222 if test "x$enable_postgresql_sdbc" != "xno"; then
10223 AC_MSG_RESULT([yes])
10224 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10226 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10227 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10229 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10230 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10233 postgres_interface=""
10234 if test "$with_system_postgresql" = "yes"; then
10235 postgres_interface="external PostgreSQL"
10236 SYSTEM_POSTGRESQL=TRUE
10237 if test "$_os" = Darwin; then
10239 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10240 pg_supp_path="$P_SEP$d$pg_supp_path"
10243 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10244 if test -n "$PGCONFIG"; then
10245 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10246 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10248 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10249 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10250 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10252 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10255 FilterLibs "${POSTGRESQL_LIB}"
10256 POSTGRESQL_LIB="${filteredlibs}"
10258 # if/when anything else than PostgreSQL uses Kerberos,
10259 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10264 # macOS has system MIT Kerberos 5 since 10.4
10265 if test "$with_krb5" != "no"; then
10268 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10269 # that the libraries where these functions are located on macOS will change, is it?
10270 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10271 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10274 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10275 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10276 KRB5_LIBS="$KRB5_LIBS $LIBS"
10279 if test "$with_gssapi" != "no"; then
10282 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10283 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10289 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10290 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10293 Linux|GNU|*BSD|DragonFly)
10294 if test "$with_krb5" != "no"; then
10297 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10298 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10301 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10302 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10303 KRB5_LIBS="$KRB5_LIBS $LIBS"
10306 if test "$with_gssapi" != "no"; then
10309 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10310 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10316 if test "$with_krb5" = "yes"; then
10319 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10320 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10323 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10324 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10325 KRB5_LIBS="$KRB5_LIBS $LIBS"
10328 if test "$with_gssapi" = "yes"; then
10331 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10332 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10338 if test -n "$with_libpq_path"; then
10339 SYSTEM_POSTGRESQL=TRUE
10340 postgres_interface="external libpq"
10341 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10342 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10345 postgres_interface="internal"
10347 POSTGRESQL_INC="%OVERRIDE_ME%"
10348 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10352 AC_MSG_CHECKING([PostgreSQL C interface])
10353 AC_MSG_RESULT([$postgres_interface])
10355 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10356 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10357 save_CFLAGS=$CFLAGS
10358 save_CPPFLAGS=$CPPFLAGS
10360 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10361 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10362 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10363 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10364 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10365 CFLAGS=$save_CFLAGS
10366 CPPFLAGS=$save_CPPFLAGS
10369 BUILD_POSTGRESQL_SDBC=TRUE
10371 AC_MSG_RESULT([no])
10373 AC_SUBST(WITH_KRB5)
10374 AC_SUBST(WITH_GSSAPI)
10375 AC_SUBST(GSSAPI_LIBS)
10376 AC_SUBST(KRB5_LIBS)
10377 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10378 AC_SUBST(SYSTEM_POSTGRESQL)
10379 AC_SUBST(POSTGRESQL_INC)
10380 AC_SUBST(POSTGRESQL_LIB)
10382 dnl ===================================================================
10383 dnl Check for Firebird stuff
10384 dnl ===================================================================
10385 ENABLE_FIREBIRD_SDBC=
10386 if test "$enable_firebird_sdbc" = "yes" ; then
10387 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10389 dnl ===================================================================
10390 dnl Check for system Firebird
10391 dnl ===================================================================
10392 AC_MSG_CHECKING([which Firebird to use])
10393 if test "$with_system_firebird" = "yes"; then
10394 AC_MSG_RESULT([external])
10395 SYSTEM_FIREBIRD=TRUE
10396 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10397 if test -z "$FIREBIRDCONFIG"; then
10398 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10399 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10400 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10402 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10404 AC_MSG_NOTICE([fb_config found])
10405 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10406 AC_MSG_CHECKING([for Firebird Client library])
10407 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10408 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10409 FilterLibs "${FIREBIRD_LIBS}"
10410 FIREBIRD_LIBS="${filteredlibs}"
10412 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10413 AC_MSG_CHECKING([Firebird version])
10414 if test -n "${FIREBIRD_VERSION}"; then
10415 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10416 if test "$FIREBIRD_MAJOR" -ge "3"; then
10417 AC_MSG_RESULT([OK])
10419 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10422 save_CFLAGS="${CFLAGS}"
10423 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10425 #if defined(FB_API_VER) && FB_API_VER == 30
10426 int fb_api_is_30(void) { return 0; }
10428 #error "Wrong Firebird API version"
10429 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10430 CFLAGS="$save_CFLAGS"
10432 ENABLE_FIREBIRD_SDBC=TRUE
10433 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10434 elif test "$enable_database_connectivity" = no; then
10435 AC_MSG_RESULT([none])
10436 elif test "$cross_compiling" = "yes"; then
10437 AC_MSG_RESULT([none])
10439 dnl Embedded Firebird has version 3.0
10440 dnl We need libatomic_ops for any non X86/X64 system
10441 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10442 dnl ===================================================================
10443 dnl Check for system libatomic_ops
10444 dnl ===================================================================
10445 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10446 if test "$with_system_libatomic_ops" = "yes"; then
10447 SYSTEM_LIBATOMIC_OPS=TRUE
10448 AC_CHECK_HEADERS(atomic_ops.h, [],
10449 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10451 SYSTEM_LIBATOMIC_OPS=
10452 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10453 LIBATOMIC_OPS_LIBS="-latomic_ops"
10454 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10458 AC_MSG_RESULT([internal])
10460 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10461 FIREBIRD_LIBS="-lfbclient"
10463 if test "$with_system_libtommath" = "yes"; then
10464 SYSTEM_LIBTOMMATH=TRUE
10465 dnl check for tommath presence
10467 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10468 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10472 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10473 LIBTOMMATH_LIBS="-ltommath"
10474 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10477 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10478 ENABLE_FIREBIRD_SDBC=TRUE
10479 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10482 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10483 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10484 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10485 AC_SUBST(LIBATOMIC_OPS_LIBS)
10486 AC_SUBST(SYSTEM_FIREBIRD)
10487 AC_SUBST(FIREBIRD_CFLAGS)
10488 AC_SUBST(FIREBIRD_LIBS)
10489 AC_SUBST(SYSTEM_LIBTOMMATH)
10490 AC_SUBST(LIBTOMMATH_CFLAGS)
10491 AC_SUBST(LIBTOMMATH_LIBS)
10493 dnl ===================================================================
10494 dnl Check for system curl
10495 dnl ===================================================================
10496 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10498 dnl ===================================================================
10499 dnl Check for system boost
10500 dnl ===================================================================
10501 AC_MSG_CHECKING([which boost to use])
10502 if test "$with_system_boost" = "yes"; then
10503 AC_MSG_RESULT([external])
10505 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10507 AX_BOOST_FILESYSTEM
10510 AC_LANG_PUSH([C++])
10511 save_CXXFLAGS=$CXXFLAGS
10512 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10513 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10514 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10515 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10516 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10517 CXXFLAGS=$save_CXXFLAGS
10519 # this is in m4/ax_boost_base.m4
10520 FilterLibs "${BOOST_LDFLAGS}"
10521 BOOST_LDFLAGS="${filteredlibs}"
10523 AC_MSG_RESULT([internal])
10524 BUILD_TYPE="$BUILD_TYPE BOOST"
10526 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10527 # use warning-suppressing wrapper headers
10528 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10530 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10533 AC_SUBST(SYSTEM_BOOST)
10535 dnl ===================================================================
10536 dnl Check for system mdds
10537 dnl ===================================================================
10538 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10539 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10541 dnl ===================================================================
10542 dnl Check for system dragonbox
10543 dnl ===================================================================
10544 AC_MSG_CHECKING([which dragonbox to use])
10545 if test "$with_system_dragonbox" = "yes"; then
10546 AC_MSG_RESULT([external])
10547 SYSTEM_DRAGONBOX=TRUE
10548 AC_LANG_PUSH([C++])
10549 save_CPPFLAGS=$CPPFLAGS
10550 # This is where upstream installs to, unfortunately no .pc or so...
10551 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10552 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10553 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10554 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10556 CPPFLAGS=$save_CPPFLAGS
10558 AC_MSG_RESULT([internal])
10559 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10562 AC_SUBST([SYSTEM_DRAGONBOX])
10563 AC_SUBST([DRAGONBOX_CFLAGS])
10565 dnl ===================================================================
10566 dnl Check for system libfixmath
10567 dnl ===================================================================
10568 AC_MSG_CHECKING([which libfixmath to use])
10569 if test "$with_system_libfixmath" = "yes"; then
10570 AC_MSG_RESULT([external])
10571 SYSTEM_LIBFIXMATH=TRUE
10572 AC_LANG_PUSH([C++])
10573 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10574 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10575 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10578 AC_MSG_RESULT([internal])
10581 AC_SUBST([SYSTEM_LIBFIXMATH])
10583 dnl ===================================================================
10584 dnl Check for system glm
10585 dnl ===================================================================
10586 AC_MSG_CHECKING([which glm to use])
10587 if test "$with_system_glm" = "yes"; then
10588 AC_MSG_RESULT([external])
10590 AC_LANG_PUSH([C++])
10591 AC_CHECK_HEADER([glm/glm.hpp], [],
10592 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10595 AC_MSG_RESULT([internal])
10596 BUILD_TYPE="$BUILD_TYPE GLM"
10598 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10600 AC_SUBST([GLM_CFLAGS])
10601 AC_SUBST([SYSTEM_GLM])
10603 dnl ===================================================================
10604 dnl Check for system odbc
10605 dnl ===================================================================
10606 AC_MSG_CHECKING([which odbc headers to use])
10607 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
10608 AC_MSG_RESULT([external])
10609 SYSTEM_ODBC_HEADERS=TRUE
10611 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10612 save_CPPFLAGS=$CPPFLAGS
10614 PathFormat "$winsdktest"
10615 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"
10616 AC_CHECK_HEADER(sqlext.h, [],
10617 [AC_MSG_ERROR(odbc not found. install odbc)],
10618 [#include <windows.h>])
10619 CPPFLAGS=$save_CPPFLAGS
10621 AC_CHECK_HEADER(sqlext.h, [],
10622 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10624 elif test "$enable_database_connectivity" = no; then
10625 AC_MSG_RESULT([none])
10627 AC_MSG_RESULT([internal])
10628 SYSTEM_ODBC_HEADERS=
10629 BUILD_TYPE="$BUILD_TYPE IODBC"
10631 AC_SUBST(SYSTEM_ODBC_HEADERS)
10633 dnl ===================================================================
10634 dnl Check for system NSS
10635 dnl ===================================================================
10636 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10637 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10638 AC_DEFINE(HAVE_FEATURE_NSS)
10640 elif test $_os != iOS ; then
10643 AC_SUBST(ENABLE_NSS)
10645 dnl ===================================================================
10646 dnl Enable LDAP support
10647 dnl ===================================================================
10649 if test "$test_openldap" = yes; then
10650 AC_MSG_CHECKING([whether to enable LDAP support])
10651 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10652 AC_MSG_RESULT([yes])
10655 if test "$enable_ldap" != "yes"; then
10656 AC_MSG_RESULT([no])
10658 AC_MSG_RESULT([no (needs NSS or system openldap)])
10662 dnl ===================================================================
10663 dnl Check for system openldap
10664 dnl ===================================================================
10666 if test "$ENABLE_LDAP" = TRUE; then
10667 AC_MSG_CHECKING([which openldap library to use])
10668 if test "$with_system_openldap" = yes; then
10669 AC_MSG_RESULT([external])
10670 SYSTEM_OPENLDAP=TRUE
10671 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10672 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10673 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10675 AC_MSG_RESULT([internal])
10676 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10681 AC_SUBST(ENABLE_LDAP)
10682 AC_SUBST(SYSTEM_OPENLDAP)
10684 dnl ===================================================================
10685 dnl Check for TLS/SSL and cryptographic implementation to use
10686 dnl ===================================================================
10687 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10688 if test -n "$with_tls"; then
10691 AC_DEFINE(USE_TLS_OPENSSL)
10693 AC_MSG_RESULT([$TLS])
10695 if test "$enable_openssl" != "yes"; then
10696 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10699 # warn that OpenSSL has been selected but not all TLS code has this option
10700 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10701 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10704 AC_DEFINE(USE_TLS_NSS)
10706 AC_MSG_RESULT([$TLS])
10709 AC_MSG_RESULT([none])
10710 AC_MSG_WARN([Skipping TLS/SSL])
10714 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10716 nss - Mozilla's Network Security Services (NSS)
10721 # default to using NSS, it results in smaller oox lib
10722 AC_DEFINE(USE_TLS_NSS)
10724 AC_MSG_RESULT([$TLS])
10728 dnl ===================================================================
10729 dnl Check for system sane
10730 dnl ===================================================================
10731 AC_MSG_CHECKING([which sane header to use])
10732 if test "$with_system_sane" = "yes"; then
10733 AC_MSG_RESULT([external])
10734 AC_CHECK_HEADER(sane/sane.h, [],
10735 [AC_MSG_ERROR(sane not found. install sane)], [])
10737 AC_MSG_RESULT([internal])
10738 BUILD_TYPE="$BUILD_TYPE SANE"
10741 dnl ===================================================================
10742 dnl Check for system icu
10743 dnl ===================================================================
10746 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10747 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10748 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10749 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10750 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10751 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10752 if test "$SYSTEM_ICU" = TRUE; then
10753 AC_LANG_PUSH([C++])
10754 AC_MSG_CHECKING([for unicode/rbbi.h])
10755 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10758 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10759 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10760 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10762 if test "$ICU_MAJOR" -ge 50; then
10763 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10767 if test "$CROSS_COMPILING" != TRUE; then
10768 # using the system icu tools can lead to version confusion, use the
10769 # ones from the build environment when cross-compiling
10770 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10771 if test -z "$SYSTEM_GENBRK"; then
10772 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10774 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10775 if test -z "$SYSTEM_GENCCODE"; then
10776 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10778 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10779 if test -z "$SYSTEM_GENCMN"; then
10780 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10782 if test "$ICU_MAJOR" -lt 49; then
10783 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10784 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10785 ICU_RECLASSIFIED_HEBREW_LETTER=
10789 if test "$ICU_MAJOR" -ge "59"; then
10790 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10791 # with -std=c++11 but not all external libraries can be built with that,
10792 # for those use a bit-compatible typedef uint16_t UChar; see
10793 # icu/source/common/unicode/umachine.h
10794 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10798 AC_SUBST(SYSTEM_GENBRK)
10799 AC_SUBST(SYSTEM_GENCCODE)
10800 AC_SUBST(SYSTEM_GENCMN)
10801 AC_SUBST(ICU_MAJOR)
10802 AC_SUBST(ICU_MINOR)
10803 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10804 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10805 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10806 AC_SUBST(ICU_UCHAR_TYPE)
10808 dnl ==================================================================
10810 dnl ==================================================================
10811 DEFAULT_CRASHDUMP_VALUE="true"
10812 AC_MSG_CHECKING([whether to enable breakpad])
10813 if test "$enable_breakpad" != yes; then
10814 AC_MSG_RESULT([no])
10816 AC_MSG_RESULT([yes])
10817 ENABLE_BREAKPAD="TRUE"
10818 AC_DEFINE(ENABLE_BREAKPAD)
10819 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10820 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10822 AC_MSG_CHECKING([for disable crash dump])
10823 if test "$enable_crashdump" = no; then
10824 DEFAULT_CRASHDUMP_VALUE="false"
10825 AC_MSG_RESULT([yes])
10827 AC_MSG_RESULT([no])
10830 AC_MSG_CHECKING([for crashreport config])
10831 if test "$with_symbol_config" = "no"; then
10832 BREAKPAD_SYMBOL_CONFIG="invalid"
10833 AC_MSG_RESULT([no])
10835 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10836 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10837 AC_MSG_RESULT([yes])
10839 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10841 AC_SUBST(ENABLE_BREAKPAD)
10842 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10844 dnl ===================================================================
10846 dnl ===================================================================
10847 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10848 if test "$with_system_orcus" != "yes"; then
10849 if test "$SYSTEM_BOOST" = "TRUE"; then
10850 dnl Link with Boost.System
10851 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10852 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10853 dnl in documentation has no effect.
10857 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10858 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10859 AC_SUBST([BOOST_SYSTEM_LIB])
10860 AC_SUBST(SYSTEM_LIBORCUS)
10862 dnl ===================================================================
10864 dnl ===================================================================
10865 harfbuzz_required_version=5.1.0
10867 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10868 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10869 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10870 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10873 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],,,TRUE)
10874 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],,,TRUE)
10877 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10878 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10882 if test "$COM" = "MSC"; then # override the above
10883 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10884 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10887 if test "$with_system_harfbuzz" = "yes"; then
10888 if test "$with_system_graphite" = "no"; then
10889 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10891 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10893 save_CFLAGS="$CFLAGS"
10894 LIBS="$LIBS $HARFBUZZ_LIBS"
10895 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10896 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10898 CFLAGS="$save_CFLAGS"
10900 if test "$with_system_graphite" = "yes"; then
10901 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10905 if test "$USING_X11" = TRUE; then
10908 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10910 if test -z "$x_includes"; then
10911 x_includes="default_x_includes"
10913 if test -z "$x_libraries"; then
10914 x_libraries="default_x_libraries"
10916 CFLAGS="$CFLAGS $X_CFLAGS"
10917 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10918 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10920 x_includes="no_x_includes"
10921 x_libraries="no_x_libraries"
10924 if test "$USING_X11" = TRUE; then
10925 dnl ===================================================================
10926 dnl Check for extension headers
10927 dnl ===================================================================
10928 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10929 [#include <X11/extensions/shape.h>])
10931 # vcl needs ICE and SM
10932 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10933 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10934 [AC_MSG_ERROR(ICE library not found)])
10935 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10936 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10937 [AC_MSG_ERROR(SM library not found)])
10940 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10941 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10942 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10945 dnl ===================================================================
10946 dnl Check for system Xrender
10947 dnl ===================================================================
10948 AC_MSG_CHECKING([whether to use Xrender])
10949 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10950 AC_MSG_RESULT([yes])
10951 PKG_CHECK_MODULES(XRENDER, xrender)
10952 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10953 FilterLibs "${XRENDER_LIBS}"
10954 XRENDER_LIBS="${filteredlibs}"
10955 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10956 [AC_MSG_ERROR(libXrender not found or functional)], [])
10957 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10958 [AC_MSG_ERROR(Xrender not found. install X)], [])
10960 AC_MSG_RESULT([no])
10962 AC_SUBST(XRENDER_CFLAGS)
10963 AC_SUBST(XRENDER_LIBS)
10965 dnl ===================================================================
10966 dnl Check for XRandr
10967 dnl ===================================================================
10968 AC_MSG_CHECKING([whether to enable RandR support])
10969 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10970 AC_MSG_RESULT([yes])
10971 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10972 if test "$ENABLE_RANDR" != "TRUE"; then
10973 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10974 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10976 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10977 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10978 XRANDR_LIBS="-lXrandr "
10979 ENABLE_RANDR="TRUE"
10981 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10982 FilterLibs "${XRANDR_LIBS}"
10983 XRANDR_LIBS="${filteredlibs}"
10986 AC_MSG_RESULT([no])
10988 AC_SUBST(XRANDR_CFLAGS)
10989 AC_SUBST(XRANDR_LIBS)
10990 AC_SUBST(ENABLE_RANDR)
10992 if test -z "$with_webdav"; then
10993 with_webdav=$test_webdav
10996 AC_MSG_CHECKING([for WebDAV support])
10997 case "$with_webdav" in
10999 AC_MSG_RESULT([no])
11003 AC_MSG_RESULT([yes])
11004 # curl is already mandatory (almost) and checked elsewhere
11005 if test "$enable_curl" = "no"; then
11006 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11011 AC_SUBST(WITH_WEBDAV)
11013 dnl ===================================================================
11014 dnl Check for disabling cve_tests
11015 dnl ===================================================================
11016 AC_MSG_CHECKING([whether to execute CVE tests])
11017 # If not explicitly enabled or disabled, default
11018 if test -z "$enable_cve_tests"; then
11021 # Default cves off for Windows with its wild and wonderful
11022 # variety of AV software kicking in and panicking
11023 enable_cve_tests=no
11027 enable_cve_tests=yes
11031 if test "$enable_cve_tests" = "no"; then
11032 AC_MSG_RESULT([no])
11033 DISABLE_CVE_TESTS=TRUE
11034 AC_SUBST(DISABLE_CVE_TESTS)
11036 AC_MSG_RESULT([yes])
11039 dnl ===================================================================
11040 dnl Check for system openssl
11041 dnl ===================================================================
11043 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11044 if test "$enable_openssl" = "yes"; then
11045 AC_MSG_RESULT([no])
11046 ENABLE_OPENSSL=TRUE
11047 if test "$_os" = Darwin ; then
11048 # OpenSSL is deprecated when building for 10.7 or later.
11050 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11051 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11053 with_system_openssl=no
11054 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11055 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11056 && test "$with_system_openssl" != "no"; then
11057 with_system_openssl=yes
11058 SYSTEM_OPENSSL=TRUE
11060 OPENSSL_LIBS="-lssl -lcrypto"
11062 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11064 if test "$with_system_openssl" = "yes"; then
11065 AC_MSG_CHECKING([whether openssl supports SHA512])
11067 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11068 SHA512_CTX context;
11069 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11073 AC_MSG_RESULT([yes])
11075 # warn that although OpenSSL is disabled, system libraries may depend on it
11076 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11077 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11080 AC_SUBST([ENABLE_OPENSSL])
11082 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11083 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11084 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11085 enable_cipher_openssl_backend=no
11087 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11090 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11091 ENABLE_CIPHER_OPENSSL_BACKEND=
11092 if test "$enable_cipher_openssl_backend" = yes; then
11093 AC_MSG_RESULT([yes])
11094 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11096 AC_MSG_RESULT([no])
11098 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11100 dnl ===================================================================
11101 dnl Select the crypto backends used by LO
11102 dnl ===================================================================
11104 if test "$build_crypto" = yes; then
11105 if test "$OS" = WNT; then
11106 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11107 AC_DEFINE([USE_CRYPTO_MSCAPI])
11108 elif test "$ENABLE_NSS" = TRUE; then
11109 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11110 AC_DEFINE([USE_CRYPTO_NSS])
11114 dnl ===================================================================
11115 dnl Check for system redland
11116 dnl ===================================================================
11117 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11118 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11119 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11120 if test "$with_system_redland" = "yes"; then
11121 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11122 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11128 AC_SUBST(RAPTOR_MAJOR)
11129 AC_SUBST(RASQAL_MAJOR)
11130 AC_SUBST(REDLAND_MAJOR)
11132 dnl ===================================================================
11133 dnl Check for system hunspell
11134 dnl ===================================================================
11135 AC_MSG_CHECKING([which libhunspell to use])
11136 if test "$with_system_hunspell" = "yes"; then
11137 AC_MSG_RESULT([external])
11138 SYSTEM_HUNSPELL=TRUE
11139 AC_LANG_PUSH([C++])
11140 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11141 if test "$HUNSPELL_PC" != "TRUE"; then
11142 AC_CHECK_HEADER(hunspell.hxx, [],
11144 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11145 [AC_MSG_ERROR(hunspell headers not found.)], [])
11147 AC_CHECK_LIB([hunspell], [main], [:],
11148 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11149 HUNSPELL_LIBS=-lhunspell
11152 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11153 FilterLibs "${HUNSPELL_LIBS}"
11154 HUNSPELL_LIBS="${filteredlibs}"
11156 AC_MSG_RESULT([internal])
11158 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11159 if test "$COM" = "MSC"; then
11160 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11162 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11164 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11166 AC_SUBST(SYSTEM_HUNSPELL)
11167 AC_SUBST(HUNSPELL_CFLAGS)
11168 AC_SUBST(HUNSPELL_LIBS)
11170 dnl ===================================================================
11171 dnl Check for system zxing
11172 dnl ===================================================================
11173 AC_MSG_CHECKING([whether to use zxing])
11174 if test "$enable_zxing" = "no"; then
11175 AC_MSG_RESULT([no])
11179 AC_MSG_RESULT([yes])
11181 AC_MSG_CHECKING([which libzxing to use])
11182 if test "$with_system_zxing" = "yes"; then
11183 AC_MSG_RESULT([external])
11186 AC_LANG_PUSH([C++])
11187 save_CXXFLAGS=$CXXFLAGS
11190 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11191 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11192 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11193 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11194 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11195 dnl unsetting IFS."):
11197 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11198 dnl ignore them here:
11199 if test -z "$i"; then
11202 dnl TODO: White space in $i would cause problems:
11203 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11204 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11205 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11207 CXXFLAGS=$save_CXXFLAGS
11208 if test -z "$ZXING_CFLAGS"; then
11209 AC_MSG_ERROR(zxing headers not found.)
11211 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11212 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11213 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11215 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11216 FilterLibs "${ZXING_LIBS}"
11217 ZXING_LIBS="${filteredlibs}"
11219 AC_MSG_RESULT([internal])
11221 BUILD_TYPE="$BUILD_TYPE ZXING"
11223 if test "$ENABLE_ZXING" = TRUE; then
11224 AC_DEFINE(ENABLE_ZXING)
11227 AC_SUBST(SYSTEM_ZXING)
11228 AC_SUBST(ENABLE_ZXING)
11229 AC_SUBST(ZXING_CFLAGS)
11230 AC_SUBST(ZXING_LIBS)
11232 dnl ===================================================================
11233 dnl Check for system box2d
11234 dnl ===================================================================
11235 AC_MSG_CHECKING([which box2d to use])
11236 if test "$with_system_box2d" = "yes"; then
11237 AC_MSG_RESULT([external])
11239 AC_LANG_PUSH([C++])
11240 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11241 [BOX2D_H_FOUND='FALSE'])
11242 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11244 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11246 # fail this. there's no other alternative to check when we are here.
11247 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11248 [AC_MSG_ERROR(box2d headers not found.)])
11250 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11252 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11253 [ AC_MSG_ERROR(box2d library not found.) ], [])
11254 BOX2D_LIBS=-l$_BOX2D_LIB
11256 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11257 FilterLibs "${BOX2D_LIBS}"
11258 BOX2D_LIBS="${filteredlibs}"
11260 AC_MSG_RESULT([internal])
11262 BUILD_TYPE="$BUILD_TYPE BOX2D"
11264 AC_SUBST(SYSTEM_BOX2D)
11265 AC_SUBST(BOX2D_CFLAGS)
11266 AC_SUBST(BOX2D_LIBS)
11268 dnl ===================================================================
11269 dnl Checking for altlinuxhyph
11270 dnl ===================================================================
11271 AC_MSG_CHECKING([which altlinuxhyph to use])
11272 if test "$with_system_altlinuxhyph" = "yes"; then
11273 AC_MSG_RESULT([external])
11275 AC_CHECK_HEADER(hyphen.h, [],
11276 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11277 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11278 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11279 [#include <hyphen.h>])
11280 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11281 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11282 if test -z "$HYPHEN_LIB"; then
11283 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11284 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11286 if test -z "$HYPHEN_LIB"; then
11287 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11288 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11291 AC_MSG_RESULT([internal])
11293 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11294 if test "$COM" = "MSC"; then
11295 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11297 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11300 AC_SUBST(SYSTEM_HYPH)
11301 AC_SUBST(HYPHEN_LIB)
11303 dnl ===================================================================
11304 dnl Checking for mythes
11305 dnl ===================================================================
11306 AC_MSG_CHECKING([which mythes to use])
11307 if test "$with_system_mythes" = "yes"; then
11308 AC_MSG_RESULT([external])
11310 AC_LANG_PUSH([C++])
11311 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11312 if test "$MYTHES_PKGCONFIG" = "no"; then
11313 AC_CHECK_HEADER(mythes.hxx, [],
11314 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11315 AC_CHECK_LIB([mythes-1.2], [main], [:],
11316 [ MYTHES_FOUND=no], [])
11317 if test "$MYTHES_FOUND" = "no"; then
11318 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11319 [ MYTHES_FOUND=no], [])
11321 if test "$MYTHES_FOUND" = "no"; then
11322 AC_MSG_ERROR([mythes library not found!.])
11326 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11327 FilterLibs "${MYTHES_LIBS}"
11328 MYTHES_LIBS="${filteredlibs}"
11330 AC_MSG_RESULT([internal])
11332 BUILD_TYPE="$BUILD_TYPE MYTHES"
11333 if test "$COM" = "MSC"; then
11334 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11336 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11339 AC_SUBST(SYSTEM_MYTHES)
11340 AC_SUBST(MYTHES_CFLAGS)
11341 AC_SUBST(MYTHES_LIBS)
11343 dnl ===================================================================
11344 dnl How should we build the linear programming solver ?
11345 dnl ===================================================================
11348 AC_MSG_CHECKING([whether to build with CoinMP])
11349 if test "$enable_coinmp" != "no"; then
11351 AC_MSG_RESULT([yes])
11352 if test "$with_system_coinmp" = "yes"; then
11354 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11355 FilterLibs "${COINMP_LIBS}"
11356 COINMP_LIBS="${filteredlibs}"
11358 BUILD_TYPE="$BUILD_TYPE COINMP"
11361 AC_MSG_RESULT([no])
11363 AC_SUBST(ENABLE_COINMP)
11364 AC_SUBST(SYSTEM_COINMP)
11365 AC_SUBST(COINMP_CFLAGS)
11366 AC_SUBST(COINMP_LIBS)
11369 AC_MSG_CHECKING([whether to build with lpsolve])
11370 if test "$enable_lpsolve" != "no"; then
11371 ENABLE_LPSOLVE=TRUE
11372 AC_MSG_RESULT([yes])
11374 AC_MSG_RESULT([no])
11376 AC_SUBST(ENABLE_LPSOLVE)
11378 if test "$ENABLE_LPSOLVE" = TRUE; then
11379 AC_MSG_CHECKING([which lpsolve to use])
11380 if test "$with_system_lpsolve" = "yes"; then
11381 AC_MSG_RESULT([external])
11382 SYSTEM_LPSOLVE=TRUE
11383 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11384 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11386 # some systems need this. Like Ubuntu...
11387 AC_CHECK_LIB(m, floor)
11388 AC_CHECK_LIB(dl, dlopen)
11389 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11390 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11393 AC_MSG_RESULT([internal])
11395 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11398 AC_SUBST(SYSTEM_LPSOLVE)
11400 dnl ===================================================================
11401 dnl Checking for libexttextcat
11402 dnl ===================================================================
11403 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11404 if test "$with_system_libexttextcat" = "yes"; then
11405 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11407 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11409 dnl ===================================================================
11410 dnl Checking for libnumbertext
11411 dnl ===================================================================
11412 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11413 if test "$with_system_libnumbertext" = "yes"; then
11414 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11415 SYSTEM_LIBNUMBERTEXT=YES
11417 SYSTEM_LIBNUMBERTEXT=
11419 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11420 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11422 dnl ***************************************
11423 dnl testing libc version for Linux...
11424 dnl ***************************************
11425 if test "$_os" = "Linux"; then
11426 AC_MSG_CHECKING([whether the libc is recent enough])
11427 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11428 #include <features.h>
11429 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11430 #error glibc >= 2.1 is required
11432 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11435 dnl =========================================
11436 dnl Check for uuidgen
11437 dnl =========================================
11438 if test "$_os" = "WINNT"; then
11439 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11440 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11441 UUIDGEN=uuidgen.exe
11444 AC_PATH_PROG([UUIDGEN], [uuidgen])
11445 if test -z "$UUIDGEN"; then
11446 AC_MSG_WARN([uuid is needed for building installation sets])
11450 dnl ***************************************
11451 dnl Checking for bison and flex
11452 dnl ***************************************
11453 AC_PATH_PROG(BISON, bison)
11454 if test -z "$BISON"; then
11455 AC_MSG_ERROR([no bison found in \$PATH, install it])
11457 AC_MSG_CHECKING([the bison version])
11458 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11459 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11460 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11463 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]
11464 dnl typedef union YYSTYPE
11467 dnl while at least 3.4.1 is know to be good:
11468 if test "$COMPILER_PLUGINS" = TRUE; then
11469 if test "$_bison_longver" -lt 2004; then
11470 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11473 if test "$_bison_longver" -lt 2000; then
11474 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11480 AC_PATH_PROG(FLEX, flex)
11481 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11482 FLEX=`cygpath -m $FLEX`
11484 if test -z "$FLEX"; then
11485 AC_MSG_ERROR([no flex found in \$PATH, install it])
11487 AC_MSG_CHECKING([the flex version])
11488 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11489 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11490 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11495 AC_PATH_PROG(DIFF, diff)
11496 if test -z "$DIFF"; then
11497 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11501 AC_PATH_PROG(UNIQ, uniq)
11502 if test -z "$UNIQ"; then
11503 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11507 dnl ***************************************
11508 dnl Checking for patch
11509 dnl ***************************************
11510 AC_PATH_PROG(PATCH, patch)
11511 if test -z "$PATCH"; then
11512 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11515 dnl On Solaris or macOS, check if --with-gnu-patch was used
11516 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11517 if test -z "$with_gnu_patch"; then
11520 if test -x "$with_gnu_patch"; then
11521 GNUPATCH=$with_gnu_patch
11523 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11527 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11528 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11529 AC_MSG_RESULT([yes])
11531 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11532 AC_MSG_RESULT([no, but accepted (Apple patch)])
11533 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11535 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11542 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11543 GNUPATCH=`cygpath -m $GNUPATCH`
11546 dnl We also need to check for --with-gnu-cp
11548 if test -z "$with_gnu_cp"; then
11549 # check the place where the good stuff is hidden on Solaris...
11550 if test -x /usr/gnu/bin/cp; then
11551 GNUCP=/usr/gnu/bin/cp
11553 AC_PATH_PROGS(GNUCP, gnucp cp)
11555 if test -z $GNUCP; then
11556 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11559 if test -x "$with_gnu_cp"; then
11562 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11566 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11567 GNUCP=`cygpath -m $GNUCP`
11570 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11571 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11572 AC_MSG_RESULT([yes])
11573 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11574 AC_MSG_RESULT([yes])
11576 case "$build_os" in
11577 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11580 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11583 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11592 dnl ***************************************
11593 dnl testing assembler path
11594 dnl ***************************************
11596 if test "$_os" = "WINNT"; then
11597 case "$WIN_HOST_ARCH" in
11598 x86) assembler=ml.exe ;;
11599 x64) assembler=ml64.exe ;;
11600 arm64) assembler=armasm64.exe ;;
11603 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11604 if test -f "$MSVC_HOST_PATH/$assembler"; then
11605 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11606 AC_MSG_RESULT([$ML_EXE])
11608 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11614 dnl ===================================================================
11615 dnl We need zip and unzip
11616 dnl ===================================================================
11617 AC_PATH_PROG(ZIP, zip)
11618 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11619 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11620 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],,)
11623 AC_PATH_PROG(UNZIP, unzip)
11624 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11626 dnl ===================================================================
11627 dnl Zip must be a specific type for different build types.
11628 dnl ===================================================================
11629 if test $build_os = cygwin; then
11630 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11631 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11635 dnl ===================================================================
11636 dnl We need touch with -h option support.
11637 dnl ===================================================================
11638 AC_PATH_PROG(TOUCH, touch)
11639 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11640 touch "$WARNINGS_FILE"
11641 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11642 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],,)
11645 dnl ===================================================================
11646 dnl Check for system epoxy
11647 dnl ===================================================================
11648 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11649 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11651 dnl ===================================================================
11652 dnl Set vcl option: coordinate device in double or sal_Int32
11653 dnl ===================================================================
11655 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11656 if test "$enable_float_device_pixel" = yes; then
11657 AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11658 AC_MSG_RESULT([double])
11660 AC_MSG_RESULT([sal_Int32])
11663 dnl ===================================================================
11664 dnl Show which vclplugs will be built.
11665 dnl ===================================================================
11668 libo_ENABLE_VCLPLUG([gen])
11669 libo_ENABLE_VCLPLUG([gtk3])
11670 libo_ENABLE_VCLPLUG([gtk3_kde5])
11671 libo_ENABLE_VCLPLUG([gtk4])
11672 libo_ENABLE_VCLPLUG([kf5])
11673 libo_ENABLE_VCLPLUG([qt5])
11674 libo_ENABLE_VCLPLUG([qt6])
11676 if test "$_os" = "WINNT"; then
11678 elif test "$_os" = "Darwin"; then
11680 elif test "$_os" = "iOS"; then
11682 elif test "$_os" = Android; then
11686 build_vcl_plugins="$R"
11687 if test -z "$build_vcl_plugins"; then
11688 build_vcl_plugins=" none"
11690 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11692 AC_SUBST([VCL_PLUGIN_INFO])
11694 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11695 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11698 dnl ===================================================================
11699 dnl Check for GTK libraries
11700 dnl ===================================================================
11704 ENABLE_GTKTILEDVIEWER=""
11705 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11706 if test "$with_system_cairo" = no; then
11707 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.'
11709 : ${with_system_cairo:=yes}
11710 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)
11711 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11712 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11713 FilterLibs "${GTK3_LIBS}"
11714 GTK3_LIBS="${filteredlibs}"
11716 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11717 if test "$with_system_epoxy" != "yes"; then
11718 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11719 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11720 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11722 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11723 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11724 if test "$build_os" = "cygwin"; then
11725 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11726 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11729 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11730 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11731 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11732 FilterLibs "${GTK3_LIBS}"
11733 GTK3_LIBS="${filteredlibs}"
11734 ENABLE_GTKTILEDVIEWER="yes"
11736 AC_SUBST(GTK3_LIBS)
11737 AC_SUBST(GTK3_CFLAGS)
11738 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11742 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11743 if test "$with_system_cairo" = no; then
11744 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11746 : ${with_system_cairo:=yes}
11747 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11748 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11749 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11750 FilterLibs "${GTK4_LIBS}"
11751 GTK4_LIBS="${filteredlibs}"
11753 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11754 if test "$with_system_epoxy" != "yes"; then
11755 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11756 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11757 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11760 AC_SUBST(GTK4_LIBS)
11761 AC_SUBST(GTK4_CFLAGS)
11763 if test "$enable_introspection" = yes; then
11764 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11765 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11767 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11771 dnl ===================================================================
11772 dnl check for dbus support
11773 dnl ===================================================================
11777 DBUS_GLIB_CFLAGS=""
11781 if test "$enable_dbus" = "no"; then
11785 AC_MSG_CHECKING([whether to enable DBUS support])
11786 if test "$test_dbus" = "yes"; then
11788 AC_MSG_RESULT([yes])
11789 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11790 AC_DEFINE(ENABLE_DBUS)
11791 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11792 FilterLibs "${DBUS_LIBS}"
11793 DBUS_LIBS="${filteredlibs}"
11795 # Glib is needed for BluetoothServer
11796 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11797 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11799 DBUS_HAVE_GLIB="TRUE"
11800 AC_DEFINE(DBUS_HAVE_GLIB,1)
11802 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11805 AC_MSG_RESULT([no])
11808 AC_SUBST(ENABLE_DBUS)
11809 AC_SUBST(DBUS_CFLAGS)
11810 AC_SUBST(DBUS_LIBS)
11811 AC_SUBST(DBUS_GLIB_CFLAGS)
11812 AC_SUBST(DBUS_GLIB_LIBS)
11813 AC_SUBST(DBUS_HAVE_GLIB)
11815 AC_MSG_CHECKING([whether to enable Impress remote control])
11816 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11817 AC_MSG_RESULT([yes])
11818 ENABLE_SDREMOTE=TRUE
11819 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11821 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11823 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11824 # The Bluetooth code doesn't compile with macOS SDK 10.15
11825 if test "$enable_sdremote_bluetooth" = yes; then
11826 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11828 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11829 enable_sdremote_bluetooth=no
11831 # If not explicitly enabled or disabled, default
11832 if test -z "$enable_sdremote_bluetooth"; then
11835 # Default to yes for these
11836 enable_sdremote_bluetooth=yes
11840 enable_sdremote_bluetooth=no
11844 # $enable_sdremote_bluetooth is guaranteed non-empty now
11846 if test "$enable_sdremote_bluetooth" != "no"; then
11847 if test "$OS" = "LINUX"; then
11848 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11849 AC_MSG_RESULT([yes])
11850 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11851 dnl ===================================================================
11852 dnl Check for system bluez
11853 dnl ===================================================================
11854 AC_MSG_CHECKING([which Bluetooth header to use])
11855 if test "$with_system_bluez" = "yes"; then
11856 AC_MSG_RESULT([external])
11857 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11858 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11861 AC_MSG_RESULT([internal])
11865 AC_MSG_RESULT([no, dbus disabled])
11866 ENABLE_SDREMOTE_BLUETOOTH=
11870 AC_MSG_RESULT([yes])
11871 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11873 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11874 <key>com.apple.security.device.bluetooth</key>
11878 AC_MSG_RESULT([no])
11879 ENABLE_SDREMOTE_BLUETOOTH=
11885 AC_MSG_RESULT([no])
11887 AC_SUBST(ENABLE_SDREMOTE)
11888 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11889 AC_SUBST(SDREMOTE_ENTITLEMENT)
11890 AC_SUBST(SYSTEM_BLUEZ)
11892 dnl ===================================================================
11893 dnl Check whether to enable GIO support
11894 dnl ===================================================================
11895 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11896 AC_MSG_CHECKING([whether to enable GIO support])
11897 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11898 dnl Need at least 2.26 for the dbus support.
11899 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11900 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11901 if test "$ENABLE_GIO" = "TRUE"; then
11902 AC_DEFINE(ENABLE_GIO)
11903 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11904 FilterLibs "${GIO_LIBS}"
11905 GIO_LIBS="${filteredlibs}"
11908 AC_MSG_RESULT([no])
11911 AC_SUBST(ENABLE_GIO)
11912 AC_SUBST(GIO_CFLAGS)
11916 dnl ===================================================================
11918 SPLIT_APP_MODULES=""
11919 if test "$enable_split_app_modules" = "yes"; then
11920 SPLIT_APP_MODULES="TRUE"
11922 AC_SUBST(SPLIT_APP_MODULES)
11924 SPLIT_OPT_FEATURES=""
11925 if test "$enable_split_opt_features" = "yes"; then
11926 SPLIT_OPT_FEATURES="TRUE"
11928 AC_SUBST(SPLIT_OPT_FEATURES)
11930 dnl ===================================================================
11931 dnl Check whether the GStreamer libraries are available.
11932 dnl ===================================================================
11934 ENABLE_GSTREAMER_1_0=""
11936 if test "$test_gstreamer_1_0" = yes; then
11938 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11939 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11940 ENABLE_GSTREAMER_1_0="TRUE"
11941 AC_MSG_RESULT([yes])
11942 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11943 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11944 FilterLibs "${GSTREAMER_1_0_LIBS}"
11945 GSTREAMER_1_0_LIBS="${filteredlibs}"
11946 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11948 AC_MSG_RESULT([no])
11951 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11952 AC_SUBST(GSTREAMER_1_0_LIBS)
11953 AC_SUBST(ENABLE_GSTREAMER_1_0)
11955 ENABLE_OPENGL_TRANSITIONS=
11956 ENABLE_OPENGL_CANVAS=
11957 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11959 elif test "$_os" = "Darwin"; then
11960 # We use frameworks on macOS, no need for detail checks
11961 ENABLE_OPENGL_TRANSITIONS=TRUE
11962 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11963 ENABLE_OPENGL_CANVAS=TRUE
11964 elif test $_os = WINNT; then
11965 ENABLE_OPENGL_TRANSITIONS=TRUE
11966 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11967 ENABLE_OPENGL_CANVAS=TRUE
11969 if test "$USING_X11" = TRUE; then
11970 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11971 ENABLE_OPENGL_TRANSITIONS=TRUE
11972 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11973 ENABLE_OPENGL_CANVAS=TRUE
11977 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11978 AC_SUBST(ENABLE_OPENGL_CANVAS)
11980 dnl =================================================
11981 dnl Check whether to build with OpenCL support.
11982 dnl =================================================
11984 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11985 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11986 # platform (optional at run-time, used through clew).
11987 BUILD_TYPE="$BUILD_TYPE OPENCL"
11988 AC_DEFINE(HAVE_FEATURE_OPENCL)
11991 dnl =================================================
11992 dnl Check whether to build with dconf support.
11993 dnl =================================================
11995 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11996 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11997 if test "$enable_dconf" = yes; then
11998 AC_MSG_ERROR([dconf not found])
12003 AC_MSG_CHECKING([whether to enable dconf])
12004 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12008 AC_MSG_RESULT([no])
12011 AC_DEFINE(ENABLE_DCONF)
12012 AC_MSG_RESULT([yes])
12014 AC_SUBST([DCONF_CFLAGS])
12015 AC_SUBST([DCONF_LIBS])
12016 AC_SUBST([ENABLE_DCONF])
12019 AC_MSG_CHECKING([whether to build the PDF import feature])
12021 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12022 AC_MSG_RESULT([yes])
12023 ENABLE_PDFIMPORT=TRUE
12024 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12026 AC_MSG_RESULT([no])
12030 AC_MSG_CHECKING([whether to build PDFium])
12032 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12033 AC_MSG_RESULT([yes])
12035 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12037 AC_MSG_RESULT([no])
12039 AC_SUBST(ENABLE_PDFIUM)
12041 if test "$ENABLE_PDFIUM" = "TRUE"; then
12042 AC_MSG_CHECKING([which OpenJPEG library to use])
12043 if test "$with_system_openjpeg" = "yes"; then
12044 SYSTEM_OPENJPEG2=TRUE
12045 AC_MSG_RESULT([external])
12046 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12047 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12048 FilterLibs "${OPENJPEG2_LIBS}"
12049 OPENJPEG2_LIBS="${filteredlibs}"
12051 SYSTEM_OPENJPEG2=FALSE
12052 AC_MSG_RESULT([internal])
12055 AC_MSG_CHECKING([which Abseil library to use])
12056 if test "$with_system_abseil" = "yes"; then
12057 AC_MSG_RESULT([external])
12059 AC_LANG_PUSH([C++])
12060 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12061 [AC_MSG_ERROR(abseil headers not found.)], [])
12062 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12063 [AC_MSG_ERROR(abseil headers not found.)], [])
12064 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12065 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12066 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12067 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12068 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12070 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12071 FilterLibs "${ABSEIL_LIBS}"
12072 ABSEIL_LIBS="${filteredlibs}"
12074 AC_MSG_RESULT([internal])
12077 AC_SUBST(SYSTEM_OPENJPEG2)
12078 AC_SUBST(SYSTEM_ABSEIL)
12079 AC_SUBST(ABSEIL_CFLAGS)
12080 AC_SUBST(ABSEIL_LIBS)
12082 dnl ===================================================================
12083 dnl Check for poppler
12084 dnl ===================================================================
12086 AC_MSG_CHECKING([whether to build Poppler])
12087 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12088 AC_MSG_RESULT([yes])
12089 ENABLE_POPPLER=TRUE
12090 AC_DEFINE(HAVE_FEATURE_POPPLER)
12092 AC_MSG_RESULT([no])
12094 AC_SUBST(ENABLE_POPPLER)
12096 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12097 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12100 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12101 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12104 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12105 dnl ===================================================================
12106 dnl Check for system poppler
12107 dnl ===================================================================
12108 AC_MSG_CHECKING([which PDF import poppler to use])
12109 if test "$with_system_poppler" = "yes"; then
12110 AC_MSG_RESULT([external])
12111 SYSTEM_POPPLER=TRUE
12112 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12113 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12114 FilterLibs "${POPPLER_LIBS}"
12115 POPPLER_LIBS="${filteredlibs}"
12117 AC_MSG_RESULT([internal])
12119 BUILD_TYPE="$BUILD_TYPE POPPLER"
12121 AC_DEFINE([ENABLE_PDFIMPORT],1)
12123 AC_SUBST(ENABLE_PDFIMPORT)
12124 AC_SUBST(SYSTEM_POPPLER)
12125 AC_SUBST(POPPLER_CFLAGS)
12126 AC_SUBST(POPPLER_LIBS)
12130 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12131 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12132 if test "$SYSTEM_FREETYPE" = TRUE; then
12133 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12134 [skia_freetype_ok=yes],
12135 [skia_freetype_ok=no])
12136 else # internal is ok
12137 skia_freetype_ok=yes
12139 AC_MSG_CHECKING([whether to build Skia])
12140 if test "$skia_freetype_ok" = "yes"; then
12141 if test "$enable_skia" = "debug"; then
12142 AC_MSG_RESULT([yes (debug)])
12143 ENABLE_SKIA_DEBUG=TRUE
12145 AC_MSG_RESULT([yes])
12149 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12150 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12153 AC_DEFINE(HAVE_FEATURE_SKIA)
12154 BUILD_TYPE="$BUILD_TYPE SKIA"
12156 if test "$OS" = "MACOSX"; then
12157 AC_DEFINE(SK_SUPPORT_GPU,1)
12158 AC_DEFINE(SK_METAL,1)
12162 AC_DEFINE(SK_SUPPORT_GPU,1)
12163 AC_DEFINE(SK_VULKAN,1)
12168 AC_MSG_RESULT([no (freetype too old)])
12169 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12173 AC_MSG_CHECKING([whether to build Skia])
12174 AC_MSG_RESULT([no])
12176 AC_SUBST(ENABLE_SKIA)
12177 AC_SUBST(ENABLE_SKIA_DEBUG)
12179 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12180 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12181 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12182 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12183 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12184 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12185 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12186 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12187 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12188 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12189 HAVE_LO_CLANG_DLLEXPORTINLINES=
12191 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12192 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12193 AC_MSG_CHECKING([for Clang])
12194 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12196 if test "$_os" = "WINNT"; then
12197 AC_MSG_CHECKING([for clang-cl])
12198 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12199 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12200 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12201 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12202 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12203 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12205 if test -n "$LO_CLANG_CC"; then
12206 dnl explicitly set -m32/-m64
12207 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12208 LO_CLANG_CXX="$LO_CLANG_CC"
12209 AC_MSG_RESULT([$LO_CLANG_CC])
12211 AC_MSG_RESULT([no])
12214 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12215 echo "#include <stdlib.h>" > conftest.c
12216 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12217 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12218 rm -f conftest.c conftest.obj
12219 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12220 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12222 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12225 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12226 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12229 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12230 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12231 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12232 if test "$clang2_ver" -lt 50002; then
12233 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12238 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12240 CXX="$LO_CLANG_CXX"
12241 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12242 AC_LANG_PUSH([C++])
12243 save_CXXFLAGS=$CXXFLAGS
12244 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12245 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12246 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12247 AC_MSG_RESULT([yes])
12248 ], [AC_MSG_RESULT([no])])
12249 CXXFLAGS=$save_CXXFLAGS
12252 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12253 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.])
12256 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12257 # Skia is the default on Windows and Mac, so hard-require Clang.
12258 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12259 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12260 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12262 AC_MSG_WARN([Clang compiler not found.])
12267 CXX="$LO_CLANG_CXX"
12268 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12271 flag_sse41=-msse4.1
12272 flag_sse42=-msse4.2
12275 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12276 flag_avx512f=-mavx512f
12280 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12281 AC_LANG_PUSH([C++])
12282 save_CXXFLAGS=$CXXFLAGS
12283 CXXFLAGS="$CXXFLAGS $flag_sse2"
12284 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12285 #include <emmintrin.h>
12287 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12288 c = _mm_xor_si128 (a, b);
12292 [can_compile_sse2=yes],
12293 [can_compile_sse2=no])
12295 CXXFLAGS=$save_CXXFLAGS
12296 AC_MSG_RESULT([${can_compile_sse2}])
12297 if test "${can_compile_sse2}" = "yes" ; then
12298 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12301 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12302 AC_LANG_PUSH([C++])
12303 save_CXXFLAGS=$CXXFLAGS
12304 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12305 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12306 #include <tmmintrin.h>
12308 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12309 c = _mm_maddubs_epi16 (a, b);
12313 [can_compile_ssse3=yes],
12314 [can_compile_ssse3=no])
12316 CXXFLAGS=$save_CXXFLAGS
12317 AC_MSG_RESULT([${can_compile_ssse3}])
12318 if test "${can_compile_ssse3}" = "yes" ; then
12319 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12322 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12323 AC_LANG_PUSH([C++])
12324 save_CXXFLAGS=$CXXFLAGS
12325 CXXFLAGS="$CXXFLAGS $flag_sse41"
12326 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12327 #include <smmintrin.h>
12329 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12330 c = _mm_cmpeq_epi64 (a, b);
12334 [can_compile_sse41=yes],
12335 [can_compile_sse41=no])
12337 CXXFLAGS=$save_CXXFLAGS
12338 AC_MSG_RESULT([${can_compile_sse41}])
12339 if test "${can_compile_sse41}" = "yes" ; then
12340 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12343 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12344 AC_LANG_PUSH([C++])
12345 save_CXXFLAGS=$CXXFLAGS
12346 CXXFLAGS="$CXXFLAGS $flag_sse42"
12347 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12348 #include <nmmintrin.h>
12350 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12351 c = _mm_cmpgt_epi64 (a, b);
12355 [can_compile_sse42=yes],
12356 [can_compile_sse42=no])
12358 CXXFLAGS=$save_CXXFLAGS
12359 AC_MSG_RESULT([${can_compile_sse42}])
12360 if test "${can_compile_sse42}" = "yes" ; then
12361 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12364 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12365 AC_LANG_PUSH([C++])
12366 save_CXXFLAGS=$CXXFLAGS
12367 CXXFLAGS="$CXXFLAGS $flag_avx"
12368 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12369 #include <immintrin.h>
12371 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12372 c = _mm256_xor_ps(a, b);
12376 [can_compile_avx=yes],
12377 [can_compile_avx=no])
12379 CXXFLAGS=$save_CXXFLAGS
12380 AC_MSG_RESULT([${can_compile_avx}])
12381 if test "${can_compile_avx}" = "yes" ; then
12382 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12385 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12386 AC_LANG_PUSH([C++])
12387 save_CXXFLAGS=$CXXFLAGS
12388 CXXFLAGS="$CXXFLAGS $flag_avx2"
12389 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12390 #include <immintrin.h>
12392 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12393 c = _mm256_maddubs_epi16(a, b);
12397 [can_compile_avx2=yes],
12398 [can_compile_avx2=no])
12400 CXXFLAGS=$save_CXXFLAGS
12401 AC_MSG_RESULT([${can_compile_avx2}])
12402 if test "${can_compile_avx2}" = "yes" ; then
12403 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12406 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12407 AC_LANG_PUSH([C++])
12408 save_CXXFLAGS=$CXXFLAGS
12409 CXXFLAGS="$CXXFLAGS $flag_avx512"
12410 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12411 #include <immintrin.h>
12413 __m512i a = _mm512_loadu_si512(0);
12414 __m512d v1 = _mm512_load_pd(0);
12415 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12416 __m512d v2 = _mm512_abs_pd(v1);
12420 [can_compile_avx512=yes],
12421 [can_compile_avx512=no])
12423 CXXFLAGS=$save_CXXFLAGS
12424 AC_MSG_RESULT([${can_compile_avx512}])
12425 if test "${can_compile_avx512}" = "yes" ; then
12426 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12427 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12430 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12431 AC_LANG_PUSH([C++])
12432 save_CXXFLAGS=$CXXFLAGS
12433 CXXFLAGS="$CXXFLAGS $flag_f16c"
12434 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12435 #include <immintrin.h>
12437 __m128i a = _mm_set1_epi32 (0);
12439 c = _mm_cvtph_ps(a);
12443 [can_compile_f16c=yes],
12444 [can_compile_f16c=no])
12446 CXXFLAGS=$save_CXXFLAGS
12447 AC_MSG_RESULT([${can_compile_f16c}])
12448 if test "${can_compile_f16c}" = "yes" ; then
12449 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12452 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12453 AC_LANG_PUSH([C++])
12454 save_CXXFLAGS=$CXXFLAGS
12455 CXXFLAGS="$CXXFLAGS $flag_fma"
12456 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12457 #include <immintrin.h>
12459 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12460 d = _mm256_fmadd_ps(a, b, c);
12464 [can_compile_fma=yes],
12465 [can_compile_fma=no])
12467 CXXFLAGS=$save_CXXFLAGS
12468 AC_MSG_RESULT([${can_compile_fma}])
12469 if test "${can_compile_fma}" = "yes" ; then
12470 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12477 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12479 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12480 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12484 save_CFLAGS=$CFLAGS
12485 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12486 dnl an empty program will do, we're checking the compiler flags
12487 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12488 [use_ccache=yes], [use_ccache=no])
12489 CFLAGS=$save_CFLAGS
12491 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12492 AC_MSG_RESULT([yes])
12494 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12495 AC_MSG_RESULT([no])
12499 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12500 AC_LANG_PUSH([C++])
12502 CXX="$LO_CLANG_CXX"
12503 save_CXXFLAGS=$CXXFLAGS
12504 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12505 dnl an empty program will do, we're checking the compiler flags
12506 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12507 [use_ccache=yes], [use_ccache=no])
12508 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12509 AC_MSG_RESULT([yes])
12511 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12512 AC_MSG_RESULT([no])
12514 CXXFLAGS=$save_CXXFLAGS
12519 AC_SUBST(LO_CLANG_CC)
12520 AC_SUBST(LO_CLANG_CXX)
12521 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12522 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12523 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12524 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12525 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12526 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12527 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12528 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12529 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12530 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12531 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12532 AC_SUBST(CLANG_USE_LD)
12533 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12537 AC_MSG_CHECKING([whether to enable gpgmepp])
12538 if test "$enable_gpgmepp" = no; then
12539 AC_MSG_RESULT([no])
12540 elif test "$enable_mpl_subset" = "yes"; then
12541 AC_MSG_RESULT([no (MPL only])
12542 elif test "$enable_fuzzers" = "yes"; then
12543 AC_MSG_RESULT([no (oss-fuzz)])
12544 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12545 AC_MSG_RESULT([yes])
12546 dnl ===================================================================
12547 dnl Check for system gpgme
12548 dnl ===================================================================
12549 AC_MSG_CHECKING([which gpgmepp to use])
12550 if test "$with_system_gpgmepp" = "yes"; then
12551 AC_MSG_RESULT([external])
12552 SYSTEM_GPGMEPP=TRUE
12554 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12555 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12556 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12557 AC_CHECK_HEADER(gpgme.h, [],
12558 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12559 AC_CHECK_LIB(gpgmepp, main, [],
12560 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12561 GPGMEPP_LIBS=-lgpgmepp
12563 AC_MSG_RESULT([internal])
12564 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12566 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12567 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12568 if test "$_os" != "WINNT"; then
12569 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12570 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12573 ENABLE_GPGMEPP=TRUE
12574 AC_DEFINE([HAVE_FEATURE_GPGME])
12575 AC_PATH_PROG(GPG, gpg)
12576 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12577 # so let's exclude that manually for the moment
12578 if test -n "$GPG" -a "$_os" != "WINNT"; then
12579 # make sure we not only have a working gpgme, but a full working
12580 # gpg installation to run OpenPGP signature verification
12581 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12583 if test "$_os" = "Linux"; then
12585 AC_MSG_CHECKING([for /run/user/$uid])
12586 if test -d /run/user/$uid; then
12587 AC_MSG_RESULT([yes])
12588 AC_PATH_PROG(GPGCONF, gpgconf)
12590 # Older versions of gpgconf are not working as expected, since
12591 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12592 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12593 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12594 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12595 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12596 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12597 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12598 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12599 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12600 if $GPGCONF --dump-options > /dev/null ; then
12601 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12602 AC_MSG_RESULT([yes])
12603 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12604 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12606 AC_MSG_RESULT([no])
12609 AC_MSG_RESULT([no. missing or broken gpgconf?])
12612 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12615 AC_MSG_RESULT([no])
12619 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12621 AC_SUBST(ENABLE_GPGMEPP)
12622 AC_SUBST(SYSTEM_GPGMEPP)
12623 AC_SUBST(GPG_ERROR_CFLAGS)
12624 AC_SUBST(GPG_ERROR_LIBS)
12625 AC_SUBST(LIBASSUAN_CFLAGS)
12626 AC_SUBST(LIBASSUAN_LIBS)
12627 AC_SUBST(GPGMEPP_CFLAGS)
12628 AC_SUBST(GPGMEPP_LIBS)
12630 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12631 if test "$with_java" != "no"; then
12632 AC_MSG_RESULT([yes])
12633 ENABLE_JAVA_WEBSOCKET=TRUE
12634 BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12636 AC_MSG_RESULT([no])
12637 ENABLE_JAVA_WEBSOCKET=
12639 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12641 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12642 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12643 AC_MSG_RESULT([yes])
12644 ENABLE_MEDIAWIKI=TRUE
12645 BUILD_TYPE="$BUILD_TYPE XSLTML"
12646 if test "x$with_java" = "xno"; then
12647 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12650 AC_MSG_RESULT([no])
12652 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12654 AC_SUBST(ENABLE_MEDIAWIKI)
12656 AC_MSG_CHECKING([whether to build the Report Builder])
12657 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12658 AC_MSG_RESULT([yes])
12659 ENABLE_REPORTBUILDER=TRUE
12660 AC_MSG_CHECKING([which jfreereport libs to use])
12661 if test "$with_system_jfreereport" = "yes"; then
12662 SYSTEM_JFREEREPORT=TRUE
12663 AC_MSG_RESULT([external])
12664 if test -z $SAC_JAR; then
12665 SAC_JAR=/usr/share/java/sac.jar
12667 if ! test -f $SAC_JAR; then
12668 AC_MSG_ERROR(sac.jar not found.)
12671 if test -z $LIBXML_JAR; then
12672 if test -f /usr/share/java/libxml-1.0.0.jar; then
12673 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12674 elif test -f /usr/share/java/libxml.jar; then
12675 LIBXML_JAR=/usr/share/java/libxml.jar
12677 AC_MSG_ERROR(libxml.jar replacement not found.)
12679 elif ! test -f $LIBXML_JAR; then
12680 AC_MSG_ERROR(libxml.jar not found.)
12683 if test -z $FLUTE_JAR; then
12684 if test -f /usr/share/java/flute-1.3.0.jar; then
12685 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12686 elif test -f /usr/share/java/flute.jar; then
12687 FLUTE_JAR=/usr/share/java/flute.jar
12689 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12691 elif ! test -f $FLUTE_JAR; then
12692 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12695 if test -z $JFREEREPORT_JAR; then
12696 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12697 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12698 elif test -f /usr/share/java/flow-engine.jar; then
12699 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12701 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12703 elif ! test -f $JFREEREPORT_JAR; then
12704 AC_MSG_ERROR(jfreereport.jar not found.)
12707 if test -z $LIBLAYOUT_JAR; then
12708 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12709 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12710 elif test -f /usr/share/java/liblayout.jar; then
12711 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12713 AC_MSG_ERROR(liblayout.jar replacement not found.)
12715 elif ! test -f $LIBLAYOUT_JAR; then
12716 AC_MSG_ERROR(liblayout.jar not found.)
12719 if test -z $LIBLOADER_JAR; then
12720 if test -f /usr/share/java/libloader-1.0.0.jar; then
12721 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12722 elif test -f /usr/share/java/libloader.jar; then
12723 LIBLOADER_JAR=/usr/share/java/libloader.jar
12725 AC_MSG_ERROR(libloader.jar replacement not found.)
12727 elif ! test -f $LIBLOADER_JAR; then
12728 AC_MSG_ERROR(libloader.jar not found.)
12731 if test -z $LIBFORMULA_JAR; then
12732 if test -f /usr/share/java/libformula-0.2.0.jar; then
12733 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12734 elif test -f /usr/share/java/libformula.jar; then
12735 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12737 AC_MSG_ERROR(libformula.jar replacement not found.)
12739 elif ! test -f $LIBFORMULA_JAR; then
12740 AC_MSG_ERROR(libformula.jar not found.)
12743 if test -z $LIBREPOSITORY_JAR; then
12744 if test -f /usr/share/java/librepository-1.0.0.jar; then
12745 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12746 elif test -f /usr/share/java/librepository.jar; then
12747 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12749 AC_MSG_ERROR(librepository.jar replacement not found.)
12751 elif ! test -f $LIBREPOSITORY_JAR; then
12752 AC_MSG_ERROR(librepository.jar not found.)
12755 if test -z $LIBFONTS_JAR; then
12756 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12757 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12758 elif test -f /usr/share/java/libfonts.jar; then
12759 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12761 AC_MSG_ERROR(libfonts.jar replacement not found.)
12763 elif ! test -f $LIBFONTS_JAR; then
12764 AC_MSG_ERROR(libfonts.jar not found.)
12767 if test -z $LIBSERIALIZER_JAR; then
12768 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12769 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12770 elif test -f /usr/share/java/libserializer.jar; then
12771 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12773 AC_MSG_ERROR(libserializer.jar replacement not found.)
12775 elif ! test -f $LIBSERIALIZER_JAR; then
12776 AC_MSG_ERROR(libserializer.jar not found.)
12779 if test -z $LIBBASE_JAR; then
12780 if test -f /usr/share/java/libbase-1.0.0.jar; then
12781 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12782 elif test -f /usr/share/java/libbase.jar; then
12783 LIBBASE_JAR=/usr/share/java/libbase.jar
12785 AC_MSG_ERROR(libbase.jar replacement not found.)
12787 elif ! test -f $LIBBASE_JAR; then
12788 AC_MSG_ERROR(libbase.jar not found.)
12792 AC_MSG_RESULT([internal])
12793 SYSTEM_JFREEREPORT=
12794 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12798 AC_MSG_RESULT([no])
12799 ENABLE_REPORTBUILDER=
12800 SYSTEM_JFREEREPORT=
12802 AC_SUBST(ENABLE_REPORTBUILDER)
12803 AC_SUBST(SYSTEM_JFREEREPORT)
12805 AC_SUBST(LIBXML_JAR)
12806 AC_SUBST(FLUTE_JAR)
12807 AC_SUBST(JFREEREPORT_JAR)
12808 AC_SUBST(LIBBASE_JAR)
12809 AC_SUBST(LIBLAYOUT_JAR)
12810 AC_SUBST(LIBLOADER_JAR)
12811 AC_SUBST(LIBFORMULA_JAR)
12812 AC_SUBST(LIBREPOSITORY_JAR)
12813 AC_SUBST(LIBFONTS_JAR)
12814 AC_SUBST(LIBSERIALIZER_JAR)
12816 # scripting provider for BeanShell?
12817 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12818 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12819 AC_MSG_RESULT([yes])
12820 ENABLE_SCRIPTING_BEANSHELL=TRUE
12822 dnl ===================================================================
12823 dnl Check for system beanshell
12824 dnl ===================================================================
12825 AC_MSG_CHECKING([which beanshell to use])
12826 if test "$with_system_beanshell" = "yes"; then
12827 AC_MSG_RESULT([external])
12829 if test -z $BSH_JAR; then
12830 BSH_JAR=/usr/share/java/bsh.jar
12832 if ! test -f $BSH_JAR; then
12833 AC_MSG_ERROR(bsh.jar not found.)
12836 AC_MSG_RESULT([internal])
12838 BUILD_TYPE="$BUILD_TYPE BSH"
12841 AC_MSG_RESULT([no])
12842 ENABLE_SCRIPTING_BEANSHELL=
12843 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12845 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12846 AC_SUBST(SYSTEM_BSH)
12849 # scripting provider for JavaScript?
12850 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12851 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12852 AC_MSG_RESULT([yes])
12853 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12855 dnl ===================================================================
12856 dnl Check for system rhino
12857 dnl ===================================================================
12858 AC_MSG_CHECKING([which rhino to use])
12859 if test "$with_system_rhino" = "yes"; then
12860 AC_MSG_RESULT([external])
12862 if test -z $RHINO_JAR; then
12863 RHINO_JAR=/usr/share/java/js.jar
12865 if ! test -f $RHINO_JAR; then
12866 AC_MSG_ERROR(js.jar not found.)
12869 AC_MSG_RESULT([internal])
12871 BUILD_TYPE="$BUILD_TYPE RHINO"
12875 AC_MSG_RESULT([no])
12876 ENABLE_SCRIPTING_JAVASCRIPT=
12877 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12879 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12880 AC_SUBST(SYSTEM_RHINO)
12881 AC_SUBST(RHINO_JAR)
12883 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12884 # paths should be added to library search path. So lets put all 64-bit
12887 case "$host_cpu" in
12888 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12889 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12890 supports_multilib="yes"
12897 dnl ===================================================================
12898 dnl QT5 Integration
12899 dnl ===================================================================
12905 QT5_GOBJECT_CFLAGS=""
12906 QT5_GOBJECT_LIBS=""
12907 QT5_HAVE_GOBJECT=""
12908 QT5_PLATFORMS_SRCDIR=""
12909 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12910 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12911 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12913 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12914 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12916 if test -n "$supports_multilib"; then
12917 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12920 qt5_test_include="QtWidgets/qapplication.h"
12921 if test "$_os" = "Emscripten"; then
12922 qt5_test_library="libQt5Widgets.a"
12924 qt5_test_library="libQt5Widgets.so"
12927 dnl Check for qmake5
12928 if test -n "$QT5DIR"; then
12929 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12931 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12933 if test "$QMAKE5" = "no"; then
12934 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12936 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12937 if test -z "$qmake5_test_ver"; then
12938 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12940 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12941 qt5_minimal_minor="6"
12942 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12943 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12945 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12949 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12950 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12951 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12952 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12954 AC_MSG_CHECKING([for Qt5 headers])
12956 for inc_dir in $qt5_incdirs; do
12957 if test -r "$inc_dir/$qt5_test_include"; then
12958 qt5_incdir="$inc_dir"
12962 AC_MSG_RESULT([$qt5_incdir])
12963 if test "x$qt5_incdir" = "xno"; then
12964 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12966 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12967 AC_LANG_PUSH([C++])
12968 save_CPPFLAGS=$CPPFLAGS
12969 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12970 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12971 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12972 CPPFLAGS=$save_CPPFLAGS
12975 AC_MSG_CHECKING([for Qt5 libraries])
12977 for lib_dir in $qt5_libdirs; do
12978 if test -r "$lib_dir/$qt5_test_library"; then
12979 qt5_libdir="$lib_dir"
12983 AC_MSG_RESULT([$qt5_libdir])
12984 if test "x$qt5_libdir" = "xno"; then
12985 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12988 if test "$_os" = "Emscripten"; then
12989 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12990 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12992 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12993 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12996 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12997 if ! test -x "$EMSDK_LLVM_NM"; then
12998 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13000 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13001 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13003 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13004 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13005 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13007 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13008 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13012 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13013 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13014 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13015 if test "$_os" = "Emscripten"; then
13016 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13019 if test "$USING_X11" = TRUE; then
13020 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13021 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13022 QT5_HAVE_XCB_ICCCM=1
13023 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13025 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)])
13026 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13028 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13029 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13031 AC_DEFINE(QT5_USING_X11)
13034 dnl Check for Meta Object Compiler
13036 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13037 if test "$MOC5" = "no"; then
13038 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13039 the root of your Qt installation by exporting QT5DIR before running "configure".])
13042 if test "$test_gstreamer_1_0" = yes; then
13043 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13045 AC_DEFINE(QT5_HAVE_GOBJECT)
13047 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13051 AC_SUBST(QT5_CFLAGS)
13054 AC_SUBST(QT5_GOBJECT_CFLAGS)
13055 AC_SUBST(QT5_GOBJECT_LIBS)
13056 AC_SUBST(QT5_HAVE_GOBJECT)
13057 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13059 dnl ===================================================================
13060 dnl QT6 Integration
13061 dnl ===================================================================
13067 QT6_PLATFORMS_SRCDIR=""
13068 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13070 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13071 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13073 if test -n "$supports_multilib"; then
13074 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13077 qt6_test_include="QtWidgets/qapplication.h"
13078 if test "$_os" = "Emscripten"; then
13079 qt6_test_library="libQt6Widgets.a"
13081 qt6_test_library="libQt6Widgets.so"
13084 dnl Check for qmake6
13085 if test -n "$QT6DIR"; then
13086 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13088 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13090 if test "$QMAKE6" = "no"; then
13091 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13093 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13094 if test -z "$qmake6_test_ver"; then
13095 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13097 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13100 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13101 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13102 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13103 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13105 AC_MSG_CHECKING([for Qt6 headers])
13107 for inc_dir in $qt6_incdirs; do
13108 if test -r "$inc_dir/$qt6_test_include"; then
13109 qt6_incdir="$inc_dir"
13113 AC_MSG_RESULT([$qt6_incdir])
13114 if test "x$qt6_incdir" = "xno"; then
13115 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13117 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13118 AC_LANG_PUSH([C++])
13119 save_CPPFLAGS=$CPPFLAGS
13120 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13121 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13122 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13123 CPPFLAGS=$save_CPPFLAGS
13126 AC_MSG_CHECKING([for Qt6 libraries])
13128 for lib_dir in $qt6_libdirs; do
13129 if test -r "$lib_dir/$qt6_test_library"; then
13130 qt6_libdir="$lib_dir"
13134 AC_MSG_RESULT([$qt6_libdir])
13135 if test "x$qt6_libdir" = "xno"; then
13136 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13139 if test "$_os" = "Emscripten"; then
13140 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13141 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13143 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13144 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13148 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13149 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13150 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13151 if test "$_os" = "Emscripten"; then
13152 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13155 if test "$USING_X11" = TRUE; then
13156 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13157 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13158 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13160 AC_DEFINE(QT6_USING_X11)
13163 dnl Check for Meta Object Compiler
13165 for lib_dir in $qt6_libdirs; do
13166 if test -z "$qt6_libexec_dirs"; then
13167 qt6_libexec_dirs="$lib_dir/libexec"
13169 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13172 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13173 if test "$MOC6" = "no"; then
13174 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13175 the root of your Qt installation by exporting QT6DIR before running "configure".])
13178 AC_SUBST(QT6_CFLAGS)
13181 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13183 dnl ===================================================================
13184 dnl KF5 Integration
13185 dnl ===================================================================
13189 KF5_CONFIG="kf5-config"
13190 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13191 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13193 if test "$OS" = "HAIKU"; then
13194 haiku_arch="`echo $RTL_ARCH | tr X x`"
13195 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13196 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13199 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13200 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13201 if test -n "$supports_multilib"; then
13202 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13205 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13206 kf5_test_library="libKF5KIOFileWidgets.so"
13207 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13209 dnl kf5 KDE4 support compatibility installed
13210 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13211 if test "$KF5_CONFIG" != "no"; then
13212 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13213 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13216 dnl Check for KF5 headers
13217 AC_MSG_CHECKING([for KF5 headers])
13219 for kf5_check in $kf5_incdirs; do
13220 if test -r "$kf5_check/$kf5_test_include"; then
13221 kf5_incdir="$kf5_check/KF5"
13225 AC_MSG_RESULT([$kf5_incdir])
13226 if test "x$kf5_incdir" = "xno"; then
13227 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13230 dnl Check for KF5 libraries
13231 AC_MSG_CHECKING([for KF5 libraries])
13233 for kf5_check in $kf5_libdirs; do
13234 if test -r "$kf5_check/$kf5_test_library"; then
13235 kf5_libdir="$kf5_check"
13240 AC_MSG_RESULT([$kf5_libdir])
13241 if test "x$kf5_libdir" = "xno"; then
13242 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13245 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"
13246 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13247 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13249 if test "$USING_X11" = TRUE; then
13250 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13253 AC_LANG_PUSH([C++])
13254 save_CXXFLAGS=$CXXFLAGS
13255 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13256 AC_MSG_CHECKING([whether KDE is >= 5.0])
13257 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13258 #include <kcoreaddons_version.h>
13260 int main(int argc, char **argv) {
13261 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13264 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13265 CXXFLAGS=$save_CXXFLAGS
13268 AC_SUBST(KF5_CFLAGS)
13271 dnl ===================================================================
13272 dnl Test whether to include Evolution 2 support
13273 dnl ===================================================================
13274 AC_MSG_CHECKING([whether to enable evolution 2 support])
13275 if test "$enable_evolution2" = yes; then
13276 AC_MSG_RESULT([yes])
13277 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13278 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13279 FilterLibs "${GOBJECT_LIBS}"
13280 GOBJECT_LIBS="${filteredlibs}"
13281 ENABLE_EVOAB2="TRUE"
13283 AC_MSG_RESULT([no])
13285 AC_SUBST(ENABLE_EVOAB2)
13286 AC_SUBST(GOBJECT_CFLAGS)
13287 AC_SUBST(GOBJECT_LIBS)
13289 dnl ===================================================================
13290 dnl Test which themes to include
13291 dnl ===================================================================
13292 AC_MSG_CHECKING([which themes to include])
13293 # if none given use default subset of available themes
13294 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13295 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"
13299 if test "x$with_theme" != "xno"; then
13300 for theme in $with_theme; do
13302 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" ;;
13303 default) real_theme=colibre ;;
13304 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13306 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13309 AC_MSG_RESULT([$WITH_THEMES])
13310 AC_SUBST([WITH_THEMES])
13311 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13312 for theme in $with_theme; do
13314 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13319 ###############################################################################
13320 # Extensions checking
13321 ###############################################################################
13322 AC_MSG_CHECKING([for extensions integration])
13323 if test "x$enable_extension_integration" != "xno"; then
13324 WITH_EXTENSION_INTEGRATION=TRUE
13325 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13326 AC_MSG_RESULT([yes, use integration])
13328 WITH_EXTENSION_INTEGRATION=
13329 AC_MSG_RESULT([no, do not integrate])
13331 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13333 dnl Should any extra extensions be included?
13334 dnl There are standalone tests for each of these below.
13335 WITH_EXTRA_EXTENSIONS=
13336 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13338 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13339 if test "x$with_java" != "xno"; then
13340 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13343 AC_MSG_CHECKING([whether to build opens___.ttf])
13344 if test "$enable_build_opensymbol" = "yes"; then
13345 AC_MSG_RESULT([yes])
13346 AC_PATH_PROG(FONTFORGE, fontforge)
13347 if test -z "$FONTFORGE"; then
13348 AC_MSG_ERROR([fontforge not installed])
13351 AC_MSG_RESULT([no])
13352 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13354 AC_SUBST(FONTFORGE)
13356 dnl ===================================================================
13357 dnl Test whether to include fonts
13358 dnl ===================================================================
13359 AC_MSG_CHECKING([whether to include third-party fonts])
13360 if test "$with_fonts" != "no"; then
13361 AC_MSG_RESULT([yes])
13363 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13364 AC_DEFINE(HAVE_MORE_FONTS)
13366 AC_MSG_RESULT([no])
13368 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13370 AC_SUBST(WITH_FONTS)
13372 dnl Test whether to include more Google Noto fonts
13373 dnl ===================================================================
13374 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13375 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13376 AC_MSG_RESULT([no])
13379 AC_MSG_RESULT([yes])
13380 WITH_NOTO_FONT=TRUE
13381 BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13382 SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13384 AC_SUBST(WITH_NOTO_FONT)
13386 dnl ===================================================================
13387 dnl Test whether to enable online update service
13388 dnl ===================================================================
13389 AC_MSG_CHECKING([whether to enable online update])
13390 ENABLE_ONLINE_UPDATE=
13391 ENABLE_ONLINE_UPDATE_MAR=
13393 if test "$enable_online_update" = ""; then
13394 AC_MSG_RESULT([no])
13396 if test "$enable_online_update" = "mar"; then
13397 AC_MSG_RESULT([yes - MAR-based online update])
13398 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13399 if test "$with_update_config" = ""; then
13400 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13402 UPDATE_CONFIG="$with_update_config"
13403 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13404 elif test "$enable_online_update" = "yes"; then
13405 AC_MSG_RESULT([yes])
13406 ENABLE_ONLINE_UPDATE="TRUE"
13408 AC_MSG_RESULT([no])
13411 AC_SUBST(ENABLE_ONLINE_UPDATE)
13412 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13413 AC_SUBST(UPDATE_CONFIG)
13416 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13417 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13418 if test "x$with_privacy_policy_url" = "xundefined"; then
13419 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13422 AC_SUBST(PRIVACY_POLICY_URL)
13423 dnl ===================================================================
13424 dnl Test whether we need bzip2
13425 dnl ===================================================================
13427 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13428 AC_MSG_CHECKING([whether to use system bzip2])
13429 if test "$with_system_bzip2" = yes; then
13431 AC_MSG_RESULT([yes])
13432 PKG_CHECK_MODULES(BZIP2, bzip2)
13433 FilterLibs "${BZIP2_LIBS}"
13434 BZIP2_LIBS="${filteredlibs}"
13436 AC_MSG_RESULT([no])
13437 BUILD_TYPE="$BUILD_TYPE BZIP2"
13440 AC_SUBST(SYSTEM_BZIP2)
13441 AC_SUBST(BZIP2_CFLAGS)
13442 AC_SUBST(BZIP2_LIBS)
13444 dnl ===================================================================
13445 dnl Test whether to enable extension update
13446 dnl ===================================================================
13447 AC_MSG_CHECKING([whether to enable extension update])
13448 ENABLE_EXTENSION_UPDATE=
13449 if test "x$enable_extension_update" = "xno"; then
13450 AC_MSG_RESULT([no])
13452 AC_MSG_RESULT([yes])
13453 ENABLE_EXTENSION_UPDATE="TRUE"
13454 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13455 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13457 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13460 dnl ===================================================================
13461 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13462 dnl ===================================================================
13463 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13464 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13465 AC_MSG_RESULT([no])
13468 AC_MSG_RESULT([yes])
13469 ENABLE_SILENT_MSI=TRUE
13470 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13472 AC_SUBST(ENABLE_SILENT_MSI)
13474 AC_MSG_CHECKING([whether and how to use Xinerama])
13475 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13476 if test "$x_libraries" = "default_x_libraries"; then
13477 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13478 if test "x$XINERAMALIB" = x; then
13479 XINERAMALIB="/usr/lib"
13482 XINERAMALIB="$x_libraries"
13484 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13485 # we have both versions, let the user decide but use the dynamic one
13488 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13489 XINERAMA_LINK=dynamic
13491 XINERAMA_LINK=static
13493 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13494 # we have only the dynamic version
13496 XINERAMA_LINK=dynamic
13497 elif test -e "$XINERAMALIB/libXinerama.a"; then
13499 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13501 XINERAMA_LINK=static
13511 if test "$USE_XINERAMA" = "TRUE"; then
13512 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13513 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13514 [AC_MSG_ERROR(Xinerama header not found.)], [])
13515 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13516 if test "x$XEXTLIB" = x; then
13517 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13519 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13520 if test "$_os" = "FreeBSD"; then
13521 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13523 if test "$_os" = "Linux"; then
13524 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13526 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13527 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13529 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13534 AC_MSG_RESULT([no])
13536 AC_SUBST(USE_XINERAMA)
13537 AC_SUBST(XINERAMA_LINK)
13539 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13540 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13541 enable_cairo_rgba=yes
13543 if test "$enable_cairo_rgba" = yes; then
13544 AC_DEFINE(ENABLE_CAIRO_RGBA)
13545 ENABLE_CAIRO_RGBA=TRUE
13546 AC_MSG_RESULT([yes])
13549 AC_MSG_RESULT([no])
13551 AC_SUBST(ENABLE_CAIRO_RGBA)
13553 dnl ===================================================================
13554 dnl Test whether to build cairo or rely on the system version
13555 dnl ===================================================================
13557 if test "$test_cairo" = "yes"; then
13558 AC_MSG_CHECKING([whether to use the system cairo])
13560 : ${with_system_cairo:=$with_system_libs}
13561 if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13563 AC_MSG_RESULT([yes])
13565 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13566 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13567 FilterLibs "${CAIRO_LIBS}"
13568 CAIRO_LIBS="${filteredlibs}"
13570 if test "$test_xrender" = "yes"; then
13571 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13573 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13574 #ifdef PictStandardA8
13578 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13583 AC_MSG_RESULT([no])
13584 BUILD_TYPE="$BUILD_TYPE CAIRO"
13587 if test "$enable_cairo_canvas" != no; then
13588 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13589 ENABLE_CAIRO_CANVAS=TRUE
13593 AC_SUBST(CAIRO_CFLAGS)
13594 AC_SUBST(CAIRO_LIBS)
13595 AC_SUBST(ENABLE_CAIRO_CANVAS)
13596 AC_SUBST(SYSTEM_CAIRO)
13598 dnl ===================================================================
13599 dnl Test whether to use avahi
13600 dnl ===================================================================
13601 if test "$_os" = "WINNT"; then
13602 # Windows uses bundled mDNSResponder
13603 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13604 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13605 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13606 [ENABLE_AVAHI="TRUE"])
13607 AC_DEFINE(HAVE_FEATURE_AVAHI)
13608 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13609 FilterLibs "${AVAHI_LIBS}"
13610 AVAHI_LIBS="${filteredlibs}"
13613 AC_SUBST(ENABLE_AVAHI)
13614 AC_SUBST(AVAHI_CFLAGS)
13615 AC_SUBST(AVAHI_LIBS)
13617 dnl ===================================================================
13618 dnl Test whether to use liblangtag
13619 dnl ===================================================================
13621 AC_MSG_CHECKING([whether to use system liblangtag])
13622 if test "$with_system_liblangtag" = yes; then
13623 SYSTEM_LIBLANGTAG=TRUE
13624 AC_MSG_RESULT([yes])
13625 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13626 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13627 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13628 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13629 FilterLibs "${LIBLANGTAG_LIBS}"
13630 LIBLANGTAG_LIBS="${filteredlibs}"
13633 AC_MSG_RESULT([no])
13634 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13635 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13636 if test "$COM" = "MSC"; then
13637 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13639 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13642 AC_SUBST(SYSTEM_LIBLANGTAG)
13643 AC_SUBST(LIBLANGTAG_CFLAGS)
13644 AC_SUBST(LIBLANGTAG_LIBS)
13646 dnl ===================================================================
13647 dnl Test whether to build libpng or rely on the system version
13648 dnl ===================================================================
13650 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13651 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13652 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13654 dnl ===================================================================
13655 dnl Test whether to build libtiff or rely on the system version
13656 dnl ===================================================================
13658 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13660 dnl ===================================================================
13661 dnl Test whether to build libwebp or rely on the system version
13662 dnl ===================================================================
13664 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13666 dnl ===================================================================
13667 dnl Check for runtime JVM search path
13668 dnl ===================================================================
13669 if test "$ENABLE_JAVA" != ""; then
13670 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13671 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13672 AC_MSG_RESULT([yes])
13673 if ! test -d "$with_jvm_path"; then
13674 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13676 if ! test -d "$with_jvm_path"jvm; then
13677 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13679 JVM_ONE_PATH_CHECK="$with_jvm_path"
13680 AC_SUBST(JVM_ONE_PATH_CHECK)
13682 AC_MSG_RESULT([no])
13686 dnl ===================================================================
13687 dnl Test for the presence of Ant and that it works
13688 dnl ===================================================================
13690 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13691 ANT_HOME=; export ANT_HOME
13692 WITH_ANT_HOME=; export WITH_ANT_HOME
13693 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13694 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13695 if test "$_os" = "WINNT"; then
13696 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13698 with_ant_home="$LODE_HOME/opt/ant"
13700 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13701 with_ant_home="$LODE_HOME/opt/ant"
13704 if test -z "$with_ant_home"; then
13705 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13707 if test "$_os" = "WINNT"; then
13708 # AC_PATH_PROGS needs unix path
13709 with_ant_home=`cygpath -u "$with_ant_home"`
13711 AbsolutePath "$with_ant_home"
13712 with_ant_home=$absolute_path
13713 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13714 WITH_ANT_HOME=$with_ant_home
13715 ANT_HOME=$with_ant_home
13718 if test -z "$ANT"; then
13719 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13721 # resolve relative or absolute symlink
13722 while test -h "$ANT"; do
13724 a_basename=`basename "$ANT"`
13725 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13726 cd "`dirname "$ANT"`"
13727 cd "`dirname "$a_script"`"
13728 ANT="`pwd`"/"`basename "$a_script"`"
13732 AC_MSG_CHECKING([if $ANT works])
13733 mkdir -p conftest.dir
13736 cat > conftest.java << EOF
13737 public class conftest {
13738 int testmethod(int a, int b) {
13744 cat > conftest.xml << EOF
13745 <project name="conftest" default="conftest">
13746 <target name="conftest">
13747 <javac srcdir="." includes="conftest.java">
13753 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13754 if test $? = 0 -a -f ./conftest.class; then
13755 AC_MSG_RESULT([Ant works])
13756 if test -z "$WITH_ANT_HOME"; then
13757 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13758 if test -z "$ANT_HOME"; then
13759 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13762 ANT_HOME="$WITH_ANT_HOME"
13765 echo "configure: Ant test failed" >&5
13766 cat conftest.java >&5
13767 cat conftest.xml >&5
13768 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13771 rm -fr conftest.dir
13773 if test -z "$ANT_HOME"; then
13774 ANT_HOME="NO_ANT_HOME"
13776 PathFormat "$ANT_HOME"
13777 ANT_HOME="$formatted_path"
13779 ANT="$formatted_path"
13782 dnl Checking for ant.jar
13783 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13784 AC_MSG_CHECKING([Ant lib directory])
13785 if test -f $ANT_HOME/lib/ant.jar; then
13786 ANT_LIB="$ANT_HOME/lib"
13788 if test -f $ANT_HOME/ant.jar; then
13789 ANT_LIB="$ANT_HOME"
13791 if test -f /usr/share/java/ant.jar; then
13792 ANT_LIB=/usr/share/java
13794 if test -f /usr/share/ant-core/lib/ant.jar; then
13795 ANT_LIB=/usr/share/ant-core/lib
13797 if test -f $ANT_HOME/lib/ant/ant.jar; then
13798 ANT_LIB="$ANT_HOME/lib/ant"
13800 if test -f /usr/share/lib/ant/ant.jar; then
13801 ANT_LIB=/usr/share/lib/ant
13803 AC_MSG_ERROR([Ant libraries not found!])
13810 PathFormat "$ANT_LIB"
13811 ANT_LIB="$formatted_path"
13812 AC_MSG_RESULT([Ant lib directory found.])
13816 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13818 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13819 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13820 ant_version_major=`echo $ant_version | cut -d. -f1`
13821 ant_version_minor=`echo $ant_version | cut -d. -f2`
13822 echo "configure: ant_version $ant_version " >&5
13823 echo "configure: ant_version_major $ant_version_major " >&5
13824 echo "configure: ant_version_minor $ant_version_minor " >&5
13825 if test "$ant_version_major" -ge "2"; then
13826 AC_MSG_RESULT([yes, $ant_version])
13827 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13828 AC_MSG_RESULT([yes, $ant_version])
13830 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13833 rm -f conftest* core core.* *.core
13841 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13842 AC_MSG_CHECKING([for JUnit 4])
13843 if test "$with_junit" = "yes"; then
13844 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13845 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13846 elif test -e /usr/share/java/junit4.jar; then
13847 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13849 if test -e /usr/share/lib/java/junit.jar; then
13850 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13852 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13856 OOO_JUNIT_JAR=$with_junit
13858 if test "$_os" = "WINNT"; then
13859 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13861 printf 'import org.junit.Before;' > conftest.java
13862 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13863 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13866 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13867 specify its pathname via --with-junit=..., or disable it via --without-junit])
13869 rm -f conftest.class conftest.java
13870 if test $OOO_JUNIT_JAR != ""; then
13871 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13874 AC_MSG_CHECKING([for included Hamcrest])
13875 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13876 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13877 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13879 AC_MSG_RESULT([Not included])
13880 AC_MSG_CHECKING([for standalone hamcrest jar.])
13881 if test "$with_hamcrest" = "yes"; then
13882 if test -e /usr/share/lib/java/hamcrest.jar; then
13883 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13884 elif test -e /usr/share/java/hamcrest/core.jar; then
13885 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13886 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13887 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13889 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13892 HAMCREST_JAR=$with_hamcrest
13894 if test "$_os" = "WINNT"; then
13895 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13897 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13898 AC_MSG_RESULT([$HAMCREST_JAR])
13900 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),
13901 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13904 rm -f conftest.class conftest.java
13906 AC_SUBST(OOO_JUNIT_JAR)
13907 AC_SUBST(HAMCREST_JAR)
13913 # check for wget and curl
13918 if test "$enable_fetch_external" != "no"; then
13920 CURL=`which curl 2>/dev/null`
13922 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13924 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13925 if test $? -eq 0; then
13931 if test -z "$WGET" -a -z "$CURL"; then
13932 AC_MSG_ERROR([neither wget nor curl found!])
13941 # check for sha256sum
13945 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13946 eval "$i -a 256 --version" > /dev/null 2>&1
13948 if test $ret -eq 0; then
13949 SHA256SUM="$i -a 256"
13954 if test -z "$SHA256SUM"; then
13955 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13956 eval "$i --version" > /dev/null 2>&1
13958 if test $ret -eq 0; then
13965 if test -z "$SHA256SUM"; then
13966 AC_MSG_ERROR([no sha256sum found!])
13969 AC_SUBST(SHA256SUM)
13971 dnl ===================================================================
13972 dnl Dealing with l10n options
13973 dnl ===================================================================
13974 AC_MSG_CHECKING([which languages to be built])
13975 # get list of all languages
13976 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13977 # the sed command does the following:
13978 # + if a line ends with a backslash, append the next line to it
13979 # + adds " on the beginning of the value (after =)
13980 # + adds " at the end of the value
13981 # + removes en-US; we want to put it on the beginning
13982 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13983 [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)]
13984 ALL_LANGS="en-US $completelangiso"
13985 # check the configured localizations
13986 WITH_LANG="$with_lang"
13988 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13989 # (Norwegian is "nb" and "nn".)
13990 if test "$WITH_LANG" = "no"; then
13994 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13995 AC_MSG_RESULT([en-US])
13997 AC_MSG_RESULT([$WITH_LANG])
13998 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13999 if test -z "$MSGFMT"; then
14000 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14001 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14002 elif test -x "/opt/lo/bin/msgfmt"; then
14003 MSGFMT="/opt/lo/bin/msgfmt"
14005 AC_CHECK_PROGS(MSGFMT, [msgfmt])
14006 if test -z "$MSGFMT"; then
14007 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14011 if test -z "$MSGUNIQ"; then
14012 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14013 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14014 elif test -x "/opt/lo/bin/msguniq"; then
14015 MSGUNIQ="/opt/lo/bin/msguniq"
14017 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14018 if test -z "$MSGUNIQ"; then
14019 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14026 # check that the list is valid
14027 for lang in $WITH_LANG; do
14028 test "$lang" = "ALL" && continue
14029 # need to check for the exact string, so add space before and after the list of all languages
14030 for vl in $ALL_LANGS; do
14031 if test "$vl" = "$lang"; then
14035 if test "$vl" != "$lang"; then
14036 # if you're reading this - you prolly quoted your languages remove the quotes ...
14037 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14040 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14041 echo $WITH_LANG | grep -q en-US
14042 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14044 # list with substituted ALL
14045 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14046 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14047 test "$WITH_LANG" = "en-US" && WITH_LANG=
14048 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14049 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14050 ALL_LANGS=`echo $ALL_LANGS qtz`
14052 AC_SUBST(ALL_LANGS)
14053 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14054 AC_SUBST(WITH_LANG)
14055 AC_SUBST(WITH_LANG_LIST)
14056 AC_SUBST(GIT_NEEDED_SUBMODULES)
14058 WITH_POOR_HELP_LOCALIZATIONS=
14059 if test -d "$SRC_ROOT/translations/source"; then
14060 for l in `ls -1 $SRC_ROOT/translations/source`; do
14061 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14062 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14066 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14068 if test -n "$with_locales" -a "$with_locales" != ALL; then
14069 WITH_LOCALES="$with_locales"
14071 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14072 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14073 # config_host/config_locales.h.in
14074 for locale in $WITH_LOCALES; do
14077 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14081 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14084 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14089 AC_DEFINE(WITH_LOCALE_ALL)
14091 AC_SUBST(WITH_LOCALES)
14093 dnl git submodule update --reference
14094 dnl ===================================================================
14095 if test -n "${GIT_REFERENCE_SRC}"; then
14096 for repo in ${GIT_NEEDED_SUBMODULES}; do
14097 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14098 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14102 AC_SUBST(GIT_REFERENCE_SRC)
14104 dnl git submodules linked dirs
14105 dnl ===================================================================
14106 if test -n "${GIT_LINK_SRC}"; then
14107 for repo in ${GIT_NEEDED_SUBMODULES}; do
14108 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14109 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14113 AC_SUBST(GIT_LINK_SRC)
14116 dnl ===================================================================
14117 AC_MSG_CHECKING([for alternative branding images directory])
14118 # initialize mapped arrays
14119 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14120 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14122 if test -z "$with_branding" -o "$with_branding" = "no"; then
14123 AC_MSG_RESULT([none])
14124 DEFAULT_BRAND_IMAGES="$brand_files"
14126 if ! test -d $with_branding ; then
14127 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14129 AC_MSG_RESULT([$with_branding])
14130 CUSTOM_BRAND_DIR="$with_branding"
14131 for lfile in $brand_files
14133 if ! test -f $with_branding/$lfile ; then
14134 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14135 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14137 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14140 check_for_progress="yes"
14143 AC_SUBST([BRAND_INTRO_IMAGES])
14144 AC_SUBST([CUSTOM_BRAND_DIR])
14145 AC_SUBST([CUSTOM_BRAND_IMAGES])
14146 AC_SUBST([DEFAULT_BRAND_IMAGES])
14149 AC_MSG_CHECKING([for 'intro' progress settings])
14153 PROGRESSFRAMECOLOR=
14155 PROGRESSTEXTBASELINE=
14157 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14158 source "$with_branding/progress.conf"
14159 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14161 AC_MSG_RESULT([none])
14164 AC_SUBST(PROGRESSBARCOLOR)
14165 AC_SUBST(PROGRESSSIZE)
14166 AC_SUBST(PROGRESSPOSITION)
14167 AC_SUBST(PROGRESSFRAMECOLOR)
14168 AC_SUBST(PROGRESSTEXTCOLOR)
14169 AC_SUBST(PROGRESSTEXTBASELINE)
14172 dnl ===================================================================
14173 dnl Custom build version
14174 dnl ===================================================================
14175 AC_MSG_CHECKING([for extra build ID])
14176 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14177 EXTRA_BUILDID="$with_extra_buildid"
14179 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14180 if test -n "$EXTRA_BUILDID" ; then
14181 AC_MSG_RESULT([$EXTRA_BUILDID])
14183 AC_MSG_RESULT([not set])
14185 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14188 AC_MSG_CHECKING([for vendor])
14189 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14190 OOO_VENDOR="$USERNAME"
14192 if test -z "$OOO_VENDOR"; then
14196 if test -z "$OOO_VENDOR"; then
14197 OOO_VENDOR="`id -u -n`"
14200 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14202 OOO_VENDOR="$with_vendor"
14203 AC_MSG_RESULT([$OOO_VENDOR])
14205 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14206 AC_SUBST(OOO_VENDOR)
14208 if test "$_os" = "Android" ; then
14209 ANDROID_PACKAGE_NAME=
14210 AC_MSG_CHECKING([for Android package name])
14211 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14212 if test -n "$ENABLE_DEBUG"; then
14213 # Default to the package name that makes ndk-gdb happy.
14214 ANDROID_PACKAGE_NAME="org.libreoffice"
14216 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14219 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14221 ANDROID_PACKAGE_NAME="$with_android_package_name"
14222 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14224 AC_SUBST(ANDROID_PACKAGE_NAME)
14227 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14228 if test "$with_compat_oowrappers" = "yes"; then
14229 WITH_COMPAT_OOWRAPPERS=TRUE
14232 WITH_COMPAT_OOWRAPPERS=
14235 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14237 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14238 AC_MSG_CHECKING([for install dirname])
14239 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14240 INSTALLDIRNAME="$with_install_dirname"
14242 AC_MSG_RESULT([$INSTALLDIRNAME])
14243 AC_SUBST(INSTALLDIRNAME)
14245 AC_MSG_CHECKING([for prefix])
14246 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14247 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14248 PREFIXDIR="$prefix"
14249 AC_MSG_RESULT([$PREFIXDIR])
14250 AC_SUBST(PREFIXDIR)
14252 LIBDIR=[$(eval echo $(eval echo $libdir))]
14255 DATADIR=[$(eval echo $(eval echo $datadir))]
14258 MANDIR=[$(eval echo $(eval echo $mandir))]
14261 DOCDIR=[$(eval echo $(eval echo $docdir))]
14264 BINDIR=[$(eval echo $(eval echo $bindir))]
14267 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14268 AC_SUBST(INSTALLDIR)
14270 TESTINSTALLDIR="${BUILDDIR}/test-install"
14271 AC_SUBST(TESTINSTALLDIR)
14274 # ===================================================================
14275 # OAuth2 id and secrets
14276 # ===================================================================
14278 AC_MSG_CHECKING([for Google Drive client id and secret])
14279 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14280 AC_MSG_RESULT([not set])
14281 GDRIVE_CLIENT_ID="\"\""
14282 GDRIVE_CLIENT_SECRET="\"\""
14284 AC_MSG_RESULT([set])
14285 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14286 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14288 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14289 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14291 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14292 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14293 AC_MSG_RESULT([not set])
14294 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14295 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14297 AC_MSG_RESULT([set])
14298 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14299 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14301 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14302 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14304 AC_MSG_CHECKING([for OneDrive client id and secret])
14305 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14306 AC_MSG_RESULT([not set])
14307 ONEDRIVE_CLIENT_ID="\"\""
14308 ONEDRIVE_CLIENT_SECRET="\"\""
14310 AC_MSG_RESULT([set])
14311 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14312 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14314 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14315 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14318 dnl ===================================================================
14319 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14320 dnl --enable-dependency-tracking configure option
14321 dnl ===================================================================
14322 AC_MSG_CHECKING([whether to enable dependency tracking])
14323 if test "$enable_dependency_tracking" = "no"; then
14325 AC_MSG_RESULT([no])
14327 AC_MSG_RESULT([yes])
14331 dnl ===================================================================
14332 dnl Number of CPUs to use during the build
14333 dnl ===================================================================
14334 AC_MSG_CHECKING([for number of processors to use])
14335 # plain --with-parallelism is just the default
14336 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14337 if test "$with_parallelism" = "no"; then
14340 PARALLELISM=$with_parallelism
14343 if test "$enable_icecream" = "yes"; then
14348 Darwin|FreeBSD|NetBSD|OpenBSD)
14349 PARALLELISM=`sysctl -n hw.ncpu`
14353 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14355 # what else than above does profit here *and* has /proc?
14357 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14361 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14362 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14366 if test $PARALLELISM -eq 0; then
14367 AC_MSG_RESULT([explicit make -j option needed])
14369 AC_MSG_RESULT([$PARALLELISM])
14371 AC_SUBST(PARALLELISM)
14374 # Set up ILIB for MSVC build
14377 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14379 if test -n "$JAVA_HOME"; then
14380 ILIB="$ILIB;$JAVA_HOME/lib"
14383 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14384 ILIB="$ILIB;$formatted_path"
14385 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14386 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14387 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14388 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14389 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14390 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14392 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14393 ucrtlibpath_formatted=$formatted_path
14394 ILIB="$ILIB;$ucrtlibpath_formatted"
14395 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14396 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14397 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14398 ILIB="$ILIB;$formatted_path"
14400 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14401 ILIB="$ILIB;$formatted_path"
14404 if test "$cross_compiling" != "yes"; then
14405 ILIB_FOR_BUILD="$ILIB"
14409 AC_SUBST(ILIB_FOR_BUILD)
14411 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14412 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14413 dnl from consteval constructor initializing const variable",
14414 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14415 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14416 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14417 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14418 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14419 dnl constructor in ternary expression (/std:c++latest)", or
14420 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14421 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14422 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14423 dnl && "Ptr must be a pointer to Val type!"' failed.":
14424 AC_LANG_PUSH([C++])
14426 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14427 CXX="env LIB=$ILIB $CXX"
14429 save_CXXFLAGS=$CXXFLAGS
14430 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14431 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14433 consteval S() { i = 1; }
14438 struct S1 { consteval S1(int) {} };
14453 struct S4 { consteval S4() = default; };
14454 void f4(bool b) { b ? S4() : S4(); }
14457 consteval S5() { c = 0; }
14458 char * f() { return &c; }
14464 auto s5 = S5().f();
14466 return (s.i == 1) ? 0 : 1;
14468 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14469 AC_MSG_RESULT([yes])
14470 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14472 CXXFLAGS=$save_CXXFLAGS
14475 # ===================================================================
14476 # Creating bigger shared library to link against
14477 # ===================================================================
14478 AC_MSG_CHECKING([whether to create huge library])
14481 if test $_os = iOS -o $_os = Android; then
14482 # Never any point in mergelibs for these as we build just static
14483 # libraries anyway...
14484 enable_mergelibs=no
14487 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14488 if test $_os != Linux -a $_os != WINNT; then
14489 add_warning "--enable-mergelibs is not tested for this platform"
14492 AC_MSG_RESULT([yes])
14493 AC_DEFINE(ENABLE_MERGELIBS)
14495 AC_MSG_RESULT([no])
14497 AC_SUBST([MERGELIBS])
14499 dnl ===================================================================
14500 dnl icerun is a wrapper that stops us spawning tens of processes
14501 dnl locally - for tools that can't be executed on the compile cluster
14502 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14503 dnl ===================================================================
14504 AC_MSG_CHECKING([whether to use icerun wrapper])
14506 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14507 ICECREAM_RUN=icerun
14508 AC_MSG_RESULT([yes])
14510 AC_MSG_RESULT([no])
14512 AC_SUBST(ICECREAM_RUN)
14514 dnl ===================================================================
14515 dnl Setup the ICECC_VERSION for the build the same way it was set for
14516 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14517 dnl ===================================================================
14518 x_ICECC_VERSION=[\#]
14519 if test -n "$ICECC_VERSION" ; then
14522 AC_SUBST(x_ICECC_VERSION)
14523 AC_SUBST(ICECC_VERSION)
14525 dnl ===================================================================
14527 AC_MSG_CHECKING([MPL subset])
14531 if test "$enable_mpl_subset" = "yes"; then
14533 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14535 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14538 if test "$warn_report" = "true"; then
14539 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14541 if test "x$enable_postgresql_sdbc" != "xno"; then
14542 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14544 if test "$enable_lotuswordpro" = "yes"; then
14545 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14547 if test -n "$ENABLE_POPPLER"; then
14548 if test "x$SYSTEM_POPPLER" = "x"; then
14549 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14552 # cf. m4/libo_check_extension.m4
14553 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14554 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14556 for theme in $WITH_THEMES; do
14558 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14559 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14564 ENABLE_OPENGL_TRANSITIONS=
14566 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14567 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14572 AC_DEFINE(MPL_HAVE_SUBSET)
14573 AC_MSG_RESULT([only])
14575 AC_MSG_RESULT([no restrictions])
14577 AC_SUBST(MPL_SUBSET)
14580 dnl ===================================================================
14582 AC_MSG_CHECKING([formula logger])
14583 ENABLE_FORMULA_LOGGER=
14585 if test "x$enable_formula_logger" = "xyes"; then
14586 AC_MSG_RESULT([yes])
14587 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14588 ENABLE_FORMULA_LOGGER=TRUE
14589 elif test -n "$ENABLE_DBGUTIL" ; then
14590 AC_MSG_RESULT([yes])
14591 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14592 ENABLE_FORMULA_LOGGER=TRUE
14594 AC_MSG_RESULT([no])
14597 AC_SUBST(ENABLE_FORMULA_LOGGER)
14599 dnl ===================================================================
14600 dnl Checking for active Antivirus software.
14601 dnl ===================================================================
14603 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14604 AC_MSG_CHECKING([for active Antivirus software])
14605 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14606 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14607 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14608 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14609 AC_MSG_RESULT([found])
14610 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14611 echo $EICAR_STRING > $SRC_ROOT/eicar
14612 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14614 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14615 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14617 echo $EICAR_STRING > $BUILDDIR/eicar
14618 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14620 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14621 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14623 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"
14625 AC_MSG_RESULT([not found])
14628 AC_MSG_RESULT([n/a])
14632 dnl ===================================================================
14633 dnl Setting up the environment.
14634 dnl ===================================================================
14635 AC_MSG_NOTICE([setting up the build environment variables...])
14639 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14640 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14641 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14642 ATL_INCLUDE="$COMPATH/atlmfc/include"
14643 elif test -d "$COMPATH/atlmfc/lib"; then
14644 ATL_LIB="$COMPATH/atlmfc/lib"
14645 ATL_INCLUDE="$COMPATH/atlmfc/include"
14647 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14648 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14650 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14651 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14652 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14655 if test "$build_os" = "cygwin"; then
14656 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14657 PathFormat "/usr/bin/find.exe"
14658 FIND="$formatted_path"
14659 PathFormat "/usr/bin/sort.exe"
14660 SORT="$formatted_path"
14661 PathFormat "/usr/bin/grep.exe"
14662 WIN_GREP="$formatted_path"
14663 PathFormat "/usr/bin/ls.exe"
14664 WIN_LS="$formatted_path"
14665 PathFormat "/usr/bin/touch.exe"
14666 WIN_TOUCH="$formatted_path"
14672 AC_SUBST(ATL_INCLUDE)
14678 AC_SUBST(WIN_TOUCH)
14680 AC_SUBST(BUILD_TYPE)
14685 PERL="$formatted_path"
14688 if test -n "$TMPDIR"; then
14689 TEMP_DIRECTORY="$TMPDIR"
14691 TEMP_DIRECTORY="/tmp"
14693 if test "$build_os" = "cygwin"; then
14694 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14696 AC_SUBST(TEMP_DIRECTORY)
14698 # setup the PATH for the environment
14699 if test -n "$LO_PATH_FOR_BUILD"; then
14700 LO_PATH="$LO_PATH_FOR_BUILD"
14703 pathmunge "$MSVC_HOST_PATH" "before"
14711 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14712 if test "$ENABLE_JAVA" != ""; then
14713 pathmunge "$JAVA_HOME/bin" "after"
14718 # Win32 make needs native paths
14719 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14720 LO_PATH=`cygpath -p -m "$PATH"`
14722 if test "$WIN_BUILD_ARCH" = "x64"; then
14723 # needed for msi packaging
14724 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14726 # .NET 4.6 and higher don't have bin directory
14727 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14728 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14730 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14731 pathmunge "$CSC_PATH" "before"
14732 pathmunge "$MIDL_PATH" "before"
14733 pathmunge "$AL_PATH" "before"
14734 pathmunge "$MSVC_MULTI_PATH" "before"
14735 pathmunge "$MSVC_BUILD_PATH" "before"
14736 if test -n "$MSBUILD_PATH" ; then
14737 pathmunge "$MSBUILD_PATH" "before"
14739 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14740 if test "$ENABLE_JAVA" != ""; then
14741 if test -d "$JAVA_HOME/jre/bin/client"; then
14742 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14744 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14745 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14747 pathmunge "$JAVA_HOME/bin" "before"
14749 pathmunge "$MSVC_HOST_PATH" "before"
14753 pathmunge "/usr/css/bin" "before"
14754 if test "$ENABLE_JAVA" != ""; then
14755 pathmunge "$JAVA_HOME/bin" "after"
14763 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14764 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14765 x_LO_ELFCHECK_ALLOWLIST=
14767 x_LO_ELFCHECK_ALLOWLIST=[\#]
14769 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14770 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14774 # Generate a configuration sha256 we can use for deps
14775 if test -f config_host.mk; then
14776 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14778 if test -f config_host_lang.mk; then
14779 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14782 CFLAGS=$my_original_CFLAGS
14783 CXXFLAGS=$my_original_CXXFLAGS
14784 CPPFLAGS=$my_original_CPPFLAGS
14786 AC_CONFIG_LINKS([include:include])
14788 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14789 # BUILD platform configuration] - otherwise breaks cross building
14790 AC_CONFIG_FILES([config_host.mk
14791 config_host_lang.mk
14794 bin/bffvalidator.sh
14795 bin/odfvalidator.sh
14797 hardened_runtime.xcent
14798 instsetoo_native/util/openoffice.lst
14799 sysui/desktop/macosx/Info.plist
14800 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14802 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14803 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14804 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14805 AC_CONFIG_HEADERS([config_host/config_clang.h])
14806 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14807 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14808 AC_CONFIG_HEADERS([config_host/config_eot.h])
14809 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14810 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14811 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
14812 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14813 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14814 AC_CONFIG_HEADERS([config_host/config_features.h])
14815 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14816 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14817 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14818 AC_CONFIG_HEADERS([config_host/config_folders.h])
14819 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14820 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14821 AC_CONFIG_HEADERS([config_host/config_gio.h])
14822 AC_CONFIG_HEADERS([config_host/config_global.h])
14823 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14824 AC_CONFIG_HEADERS([config_host/config_java.h])
14825 AC_CONFIG_HEADERS([config_host/config_langs.h])
14826 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14827 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14828 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14829 AC_CONFIG_HEADERS([config_host/config_locales.h])
14830 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14831 AC_CONFIG_HEADERS([config_host/config_oox.h])
14832 AC_CONFIG_HEADERS([config_host/config_options.h])
14833 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14834 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14835 AC_CONFIG_HEADERS([config_host/config_skia.h])
14836 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14837 AC_CONFIG_HEADERS([config_host/config_validation.h])
14838 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14839 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14840 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14841 AC_CONFIG_HEADERS([config_host/config_version.h])
14842 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14843 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14844 AC_CONFIG_HEADERS([config_host/config_python.h])
14845 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14846 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14847 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14850 if test "$CROSS_COMPILING" = TRUE; then
14851 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14854 # touch the config timestamp file
14855 if test ! -f config_host.mk.stamp; then
14856 echo > config_host.mk.stamp
14857 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14858 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14860 echo > config_host.mk.stamp
14863 # touch the config lang timestamp file
14864 if test ! -f config_host_lang.mk.stamp; then
14865 echo > config_host_lang.mk.stamp
14866 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14867 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14869 echo > config_host_lang.mk.stamp
14873 if test \( "$STALE_MAKE" = "TRUE" \) \
14874 -a "$build_os" = "cygwin"; then
14877 ****************************************************************************
14879 Your make version is known to be horribly slow, and hard to debug
14880 problems with. To get a reasonably functional make please do:
14882 to install a pre-compiled binary make for Win32
14884 mkdir -p /opt/lo/bin
14886 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14887 cp make-4.2.1-msvc.exe make
14890 to install from source:
14891 place yourself in a working directory of you choice.
14893 git clone git://git.savannah.gnu.org/make.git
14895 [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"]
14896 set PATH=%PATH%;C:\Cygwin\bin
14897 [or Cygwin64, if that is what you have]
14898 cd path-to-make-repo-you-cloned-above
14899 build_w32.bat --without-guile
14901 should result in a WinRel/gnumake.exe.
14902 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14904 Then re-run autogen.sh
14906 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14907 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14914 ****************************************************************************
14916 To show information on various make targets and make flags, run:
14919 To just build, run:
14924 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14926 After the build has finished successfully, you can immediately run what you built using the command:
14929 if test $_os = Darwin; then
14930 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14932 echo instdir/program/soffice
14936 If you want to run the unit tests, run:
14942 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14943 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14944 cat "$WARNINGS_FILE_FOR_BUILD"
14948 if test -s "$WARNINGS_FILE"; then
14949 echo "HOST config ($WARNINGS_FILE)"
14950 cat "$WARNINGS_FILE"
14953 # Remove unneeded emconfigure artifacts
14954 rm -f a.out a.wasm a.out.js a.out.wasm
14956 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: